{"version":3,"sources":["../node_modules/three/build/three.module.js","../node_modules/node-ar.js/node_modules/three/build/three.module.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/process/browser.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/path-browserify/index.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/base64-js/index.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/ieee754/index.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/isarray/index.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/buffer/index.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/safe-buffer/index.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/randombytes/browser.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/inherits/inherits_browser.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/events/events.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/process-nextick-args/index.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/readable-stream/lib/internal/streams/stream-browser.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/core-util-is/lib/util.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/readable-stream/lib/internal/streams/BufferList.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/readable-stream/lib/internal/streams/destroy.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/util-deprecate/browser.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/readable-stream/lib/_stream_writable.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/readable-stream/lib/_stream_duplex.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/string_decoder/lib/string_decoder.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/readable-stream/lib/_stream_readable.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/readable-stream/lib/_stream_transform.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/readable-stream/lib/_stream_passthrough.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/readable-stream/readable-browser.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/readable-stream/writable-browser.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/readable-stream/duplex-browser.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/readable-stream/transform.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/readable-stream/passthrough.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/stream-browserify/index.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/hash-base/index.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/md5.js/index.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/ripemd160/index.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/sha.js/hash.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/sha.js/sha.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/sha.js/sha1.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/sha.js/sha256.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/sha.js/sha224.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/sha.js/sha512.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/sha.js/sha384.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/sha.js/index.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/cipher-base/index.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/create-hash/browser.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/create-hmac/legacy.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/create-hash/md5.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/create-hmac/browser.js","0","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/browserify-sign/algos.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/pbkdf2/lib/precondition.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/pbkdf2/lib/default-encoding.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/pbkdf2/lib/sync-browser.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/pbkdf2/lib/async.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/pbkdf2/browser.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/des.js/lib/des/utils.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/minimalistic-assert/index.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/des.js/lib/des/cipher.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/des.js/lib/des/des.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/des.js/lib/des/cbc.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/des.js/lib/des/ede.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/des.js/lib/des.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/browserify-des/index.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/browserify-aes/modes/ecb.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/buffer-xor/index.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/browserify-aes/modes/cbc.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/browserify-aes/modes/cfb.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/browserify-aes/modes/cfb8.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/browserify-aes/modes/cfb1.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/browserify-aes/modes/ofb.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/browserify-aes/incr32.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/browserify-aes/modes/ctr.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/browserify-aes/modes/index.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/browserify-aes/aes.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/browserify-aes/ghash.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/browserify-aes/authCipher.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/browserify-aes/streamCipher.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/evp_bytestokey/index.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/browserify-aes/encrypter.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/browserify-aes/decrypter.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/browserify-aes/browser.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/browserify-des/modes.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/browserify-cipher/browser.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/bn.js/lib/bn.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/brorand/index.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/miller-rabin/lib/mr.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/diffie-hellman/lib/generatePrime.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/diffie-hellman/lib/dh.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/diffie-hellman/browser.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/browserify-rsa/index.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/minimalistic-crypto-utils/lib/utils.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/elliptic/lib/elliptic/utils.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/elliptic/lib/elliptic/curve/base.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/elliptic/lib/elliptic/curve/short.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/elliptic/lib/elliptic/curve/mont.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/elliptic/lib/elliptic/curve/edwards.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/elliptic/lib/elliptic/curve/index.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/hash.js/lib/hash/utils.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/hash.js/lib/hash/common.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/hash.js/lib/hash/sha/common.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/hash.js/lib/hash/sha/1.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/hash.js/lib/hash/sha/256.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/hash.js/lib/hash/sha/224.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/hash.js/lib/hash/sha/512.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/hash.js/lib/hash/sha/384.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/hash.js/lib/hash/sha.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/hash.js/lib/hash/ripemd.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/hash.js/lib/hash/hmac.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/hash.js/lib/hash.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/elliptic/lib/elliptic/curves.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/hmac-drbg/lib/hmac-drbg.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/elliptic/lib/elliptic/ec/key.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/elliptic/lib/elliptic/ec/signature.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/elliptic/lib/elliptic/ec/index.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/elliptic/lib/elliptic/eddsa/key.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/elliptic/lib/elliptic/eddsa/signature.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/elliptic/lib/elliptic/eddsa/index.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/elliptic/lib/elliptic.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/indexof/index.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/vm-browserify/index.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/asn1.js/lib/asn1/api.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/asn1.js/lib/asn1/base/reporter.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/asn1.js/lib/asn1/base/buffer.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/asn1.js/lib/asn1/base/node.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/asn1.js/lib/asn1/base/index.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/asn1.js/lib/asn1/constants/der.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/asn1.js/lib/asn1/constants/index.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/asn1.js/lib/asn1/decoders/der.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/asn1.js/lib/asn1/decoders/pem.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/asn1.js/lib/asn1/decoders/index.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/asn1.js/lib/asn1/encoders/der.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/asn1.js/lib/asn1/encoders/pem.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/asn1.js/lib/asn1/encoders/index.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/asn1.js/lib/asn1.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/parse-asn1/certificate.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/parse-asn1/asn1.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/parse-asn1/fixProc.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/parse-asn1/index.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/browserify-sign/browser/sign.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/browserify-sign/browser/verify.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/browserify-sign/browser/index.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/create-ecdh/browser.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/public-encrypt/mgf.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/public-encrypt/xor.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/public-encrypt/withPublic.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/public-encrypt/publicEncrypt.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/public-encrypt/privateDecrypt.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/public-encrypt/browser.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/randomfill/browser.js","../../../../.nvm/versions/node/v10.7.0/lib/node_modules/parcel-bundler/node_modules/crypto-browserify/index.js","../node_modules/jsartoolkit5/build/artoolkit.debug.js","../node_modules/jsartoolkit5/js/artoolkit.api.js","../node_modules/jsartoolkit5/js/artoolkit.three.js","../node_modules/jsartoolkit5/js/index.js","../node_modules/node-ar.js/three.js/build/ar.cjs.js","../node_modules/three-gltf-loader/index.js","../node_modules/three-orbit-controls/index.js","script.js"],"names":["LensFlare","EventDispatcher","undefined","Number","EPSILON","Math","pow","isInteger","value","isFinite","floor","sign","x","Function","prototype","defineProperty","toString","match","Object","assign","target","TypeError","output","index","arguments","length","source","nextKey","hasOwnProperty","call","type","listener","_listeners","listeners","indexOf","push","listenerArray","splice","event","array","slice","i","l","REVISION","MOUSE","LEFT","MIDDLE","RIGHT","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","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","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","_Math","PI","lut","d0","random","d1","d2","d3","uuid","toUpperCase","min","max","n","m","a1","a2","b1","b2","y","t","low","high","range","degrees","DEG2RAD","radians","RAD2DEG","ceil","log","LN2","Vector2","Matrix4","elements","error","Quaternion","z","w","_x","_y","_z","_w","Vector3","Matrix3","defineProperties","scalar","Error","constructor","v","warn","addVectors","s","a","b","subVectors","multiplyScalar","e","minVal","maxVal","set","clamp","divideScalar","round","sqrt","abs","angle","atan2","distanceToSquared","dx","dy","normalize","alpha","v1","v2","add","offset","attribute","getX","getY","center","c","cos","sin","n11","n12","n13","n14","n21","n22","n23","n24","n31","n32","n33","n34","n41","n42","n43","n44","te","fromArray","me","xAxis","yAxis","zAxis","setFromMatrixColumn","scaleX","scaleY","scaleZ","euler","isEuler","d","f","order","ae","af","be","bf","ce","cf","de","df","ac","ad","bc","bd","zero","one","q","compose","eye","up","lengthSq","crossVectors","multiplyMatrices","a11","a12","a13","a14","a21","a22","a23","a24","a31","a32","a33","a34","a41","a42","a43","a44","b11","b12","b13","b14","b21","b22","b23","b24","b31","b32","b33","b34","b41","b42","b43","b44","count","getZ","applyMatrix4","setXYZ","tmp","throwOnDegenerate","t11","t12","t13","t14","det","msg","identity","detInv","scaleXSq","scaleYSq","scaleZSq","theta","axis","tx","ty","position","quaternion","scale","x2","y2","z2","xx","xy","xz","yy","yz","zz","wx","wy","wz","sx","sy","sz","vector","matrix","determinant","copy","invSX","invSY","invSZ","setFromRotationMatrix","left","right","top","bottom","near","far","h","p","qa","qb","qm","slerp","dst","dstOffset","src0","srcOffset0","src1","srcOffset1","x0","y0","z0","w0","x1","y1","z1","w1","dir","sqrSin","len","tDir","onChangeCallback","update","c1","c2","c3","s1","s2","s3","halfAngle","m11","m12","m13","m21","m22","m23","m31","m32","m33","trace","r","vFrom","vTo","dot","conjugate","multiplyQuaternions","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","cosHalfTheta","sqrSinHalfTheta","sinHalfTheta","halfTheta","ratioA","ratioB","callback","multiplyVectors","applyQuaternion","setFromEuler","setFromAxisAngle","qx","qy","qz","qw","ix","iy","iz","iw","camera","projectionMatrix","getInverse","matrixWorld","ax","ay","az","bx","by","bz","planeNormal","projectOnVector","sub","normal","acos","dz","sinPhiRadius","phi","radius","applyMatrix3","g","isMatrix4","matrix4","setFromMatrix4","transpose","rotation","cx","cy","textureId","Texture","image","mapping","wrapS","wrapT","magFilter","minFilter","format","anisotropy","encoding","generateUUID","name","DEFAULT_IMAGE","mipmaps","DEFAULT_MAPPING","repeat","matrixAutoUpdate","generateMipmaps","premultiplyAlpha","flipY","unpackAlignment","version","onUpdate","Vector4","WebGLRenderTarget","width","height","options","scissor","scissorTest","viewport","texture","depthBuffer","stencilBuffer","depthTexture","WebGLRenderTargetCube","activeCubeFace","activeMipMapLevel","DataTexture","data","Box3","Infinity","Sphere","Plane","constant","Frustum","p0","p1","p2","p3","p4","p5","planes","create","setUvTransform","meta","isRootObject","textures","getDataURL","canvas","HTMLCanvasElement","document","createElementNS","context","getContext","ImageData","putImageData","drawImage","toDataURL","images","url","Array","isArray","dispatchEvent","uv","getW","dispose","clone","isWebGLRenderTargetCube","isDataTexture","minX","minY","minZ","maxX","maxY","maxZ","points","makeEmpty","il","expandByPoint","size","halfSize","object","expandByObject","box","isEmpty","point","addScalar","scope","traverse","node","geometry","isGeometry","vertices","isBufferGeometry","attributes","fromBufferAttribute","updateMatrixWorld","closestPoint","sphere","clampPoint","plane","v0","f0","f1","f2","testAxis","extents","triangleNormal","satForAxes","axes","j","triangle","getCenter","clampedPoint","getSize","xax","xay","xaz","xbx","xby","xbz","yax","yay","yaz","ybx","yby","ybz","zax","zay","zaz","zbx","zby","zbz","equals","optionalCenter","setFromPoints","maxRadiusSq","distanceTo","radiusSum","intersectsSphere","distanceToPoint","deltaLengthSq","expandByScalar","getMaxScaleOnAxis","cross","setFromNormalAndCoplanarPoint","inverseNormalLength","negate","line","direction","delta","denominator","start","startSign","endSign","end","intersectsPlane","m1","optionalNormalMatrix","normalMatrix","getNormalMatrix","referencePoint","coplanarPoint","frustum","me0","me1","me2","me3","me4","me5","me6","me7","me8","me9","me10","me11","me12","me13","me14","me15","setComponents","boundingSphere","computeBoundingSphere","sprite","negRadius","distance","alphamap_fragment","alphamap_pars_fragment","alphatest_fragment","aomap_fragment","aomap_pars_fragment","begin_vertex","beginnormal_vertex","bsdfs","bumpmap_pars_fragment","clipping_planes_fragment","clipping_planes_pars_fragment","clipping_planes_pars_vertex","clipping_planes_vertex","color_fragment","color_pars_fragment","color_pars_vertex","color_vertex","common","cube_uv_reflection_fragment","defaultnormal_vertex","displacementmap_pars_vertex","displacementmap_vertex","emissivemap_fragment","emissivemap_pars_fragment","encodings_fragment","encodings_pars_fragment","envmap_fragment","envmap_pars_fragment","envmap_pars_vertex","envmap_vertex","fog_vertex","fog_pars_vertex","fog_fragment","fog_pars_fragment","gradientmap_pars_fragment","lightmap_fragment","lightmap_pars_fragment","lights_lambert_vertex","lights_pars_begin","lights_pars_maps","lights_phong_fragment","lights_phong_pars_fragment","lights_physical_fragment","lights_physical_pars_fragment","lights_fragment_begin","lights_fragment_maps","lights_fragment_end","logdepthbuf_fragment","logdepthbuf_pars_fragment","logdepthbuf_pars_vertex","logdepthbuf_vertex","map_fragment","map_pars_fragment","map_particle_fragment","map_particle_pars_fragment","metalnessmap_fragment","metalnessmap_pars_fragment","morphnormal_vertex","morphtarget_pars_vertex","morphtarget_vertex","normal_fragment_begin","normal_fragment_maps","normalmap_pars_fragment","packing","premultiplied_alpha_fragment","project_vertex","dithering_fragment","dithering_pars_fragment","roughnessmap_fragment","roughnessmap_pars_fragment","shadowmap_pars_fragment","shadowmap_pars_vertex","shadowmap_vertex","shadowmask_pars_fragment","skinbase_vertex","skinning_pars_vertex","skinning_vertex","skinnormal_vertex","specularmap_fragment","specularmap_pars_fragment","tonemapping_fragment","tonemapping_pars_fragment","uv_pars_fragment","uv_pars_vertex","uv_vertex","uv2_pars_fragment","uv2_pars_vertex","uv2_vertex","worldpos_vertex","cube_frag","cube_vert","depth_frag","depth_vert","distanceRGBA_frag","distanceRGBA_vert","equirect_frag","equirect_vert","linedashed_frag","linedashed_vert","meshbasic_frag","meshbasic_vert","meshlambert_frag","meshlambert_vert","meshphong_frag","meshphong_vert","meshphysical_frag","meshphysical_vert","normal_frag","normal_vert","points_frag","points_vert","shadow_frag","shadow_vert","ShaderChunk","UniformsUtils","uniforms","merged","u","uniforms_src","uniforms_dst","parameter_src","isColor","isMatrix3","isVector2","isVector3","isVector4","isTexture","ColorKeywords","Color","setRGB","setHex","setStyle","hex","hue2rgb","euclideanModulo","style","handleAlpha","string","parseFloat","exec","color","components","parseInt","setHSL","charAt","gammaFactor","safeInverse","copyGammaToLinear","copyLinearToGamma","SRGBToLinear","LinearToSRGB","copySRGBToLinear","copyLinearToSRGB","getHex","hue","saturation","lightness","hsl","getHSL","color1","color2","UniformsLib","properties","ShaderLib","merge","specularmap","envmap","aomap","lightmap","fog","emissivemap","lights","bumpmap","normalmap","displacementmap","gradientmap","roughnessmap","metalnessmap","WebGLAnimation","isAnimating","animationLoop","onAnimationFrame","time","frame","requestAnimationFrame","WebGLAttributes","gl","buffers","WeakMap","get","isInterleavedBufferAttribute","remove","deleteBuffer","buffer","delete","bufferType","createBuffer","usage","dynamic","DYNAMIC_DRAW","STATIC_DRAW","bindBuffer","bufferData","onUploadCallback","FLOAT","Float32Array","Float64Array","Uint16Array","UNSIGNED_SHORT","Int16Array","SHORT","Uint32Array","UNSIGNED_INT","Int32Array","INT","Int8Array","BYTE","Uint8Array","UNSIGNED_BYTE","BYTES_PER_ELEMENT","updateBuffer","updateRange","bufferSubData","subarray","Euler","_order","DefaultOrder","Layers","mask","physical","standard","RotationOrders","asin","makeRotationFromQuaternion","newOrder","setFromQuaternion","optionalResult","channel","layers","object3DId","Object3D","parent","children","DefaultUp","onChange","onRotationChange","onQuaternionChange","DefaultMatrixAutoUpdate","matrixWorldNeedsUpdate","visible","castShadow","receiveShadow","frustumCulled","renderOrder","userData","Camera","matrixWorldInverse","OrthographicCamera","zoom","view","updateProjectionMatrix","Face3","materialIndex","vertexNormals","vertexColors","decompose","premultiply","q1","multiply","rotateOnAxis","translateOnAxis","isCamera","lookAt","isObject3D","id","getObjectByProperty","child","setFromMatrixPosition","getWorldQuaternion","traverseVisible","traverseAncestors","force","updateMatrix","metadata","serialize","library","element","toJSON","JSON","stringify","toArray","geometries","parameters","shapes","shape","material","uuids","materials","extractFromCache","cache","values","key","recursive","parse","fullWidth","fullHeight","enabled","offsetX","offsetY","zoomW","zoomH","scaleW","scaleH","makeOrthographic","geometryId","Geometry","colors","faces","faceVertexUvs","morphTargets","morphNormals","skinWeights","skinIndices","lineDistances","boundingBox","elementsNeedUpdate","verticesNeedUpdate","uvsNeedUpdate","normalsNeedUpdate","colorsNeedUpdate","lineDistancesNeedUpdate","groupsNeedUpdate","BufferAttribute","itemSize","normalized","Int8BufferAttribute","Uint8BufferAttribute","Uint8ClampedBufferAttribute","Uint8ClampedArray","Int16BufferAttribute","Uint16BufferAttribute","Int32BufferAttribute","Uint32BufferAttribute","Float32BufferAttribute","Float64BufferAttribute","DirectGeometry","normals","uvs","uvs2","groups","arrayMax","face","jl","computeBoundingBox","makeRotationX","applyMatrix","makeRotationY","makeRotationZ","makeTranslation","makeScale","obj","indices","positions","uv2","tempNormals","tempUVs","tempUVs2","addFace","group","computeFaceNormals","translate","cb","ab","fl","vA","vB","vC","areaWeighted","vl","__originalFaceNormal","__originalVertexNormals","tmpGeo","faceNormals","dstNormalsFace","dstNormalsVertex","faceNormal","computeVertexNormals","materialIndexOffset","vertexOffset","vertices1","vertices2","faces1","faces2","uvs1","colors1","colors2","vertex","vertexCopy","faceCopy","faceVertexNormals","faceVertexColors","uvCopy","mesh","isMesh","verticesMap","unique","changes","precision","faceIndicesToRemove","idx","diff","_id","sort","materialIndexSort","newUvs1","newUvs2","normalsHash","colorsHash","uvsHash","hasFaceVertexUv","hasFaceNormal","hasFaceVertexNormal","hasFaceColor","hasFaceVertexColor","faceType","setBit","getUvIndex","getNormalIndex","getColorIndex","hash","k","kl","uvsCopy","morphTarget","morphNormal","srcVertexNormal","destVertexNormal","index1","index2","vectors","morphTargetsPosition","hasFaceVertexUv2","morphTargetsLength","morphTargetsNormal","morphNormalsLength","hasSkinIndices","hasSkinWeights","vertexUvs","computeGroups","bufferGeometryId","BufferGeometry","morphAttributes","drawRange","BoxGeometry","depth","widthSegments","heightSegments","depthSegments","fromBufferGeometry","BoxBufferGeometry","mergeVertices","numberOfVertices","groupStart","buildPlane","udir","vdir","gridX","gridY","segmentWidth","segmentHeight","widthHalf","heightHalf","depthHalf","gridX1","gridY1","vertexCounter","groupCount","addGroup","setIndex","addAttribute","PlaneGeometry","PlaneBufferGeometry","width_half","height_half","segment_width","segment_height","isBufferAttribute","applyToBufferAttribute","needsUpdate","isPoints","isLine","copyVector3sArray","copyColorsArray","copyArray","fromGeometry","direct","__directGeometry","copyVector2sArray","lineDistance","fromDirectGeometry","copyVector4sArray","setFromBufferAttribute","isNaN","pA","pB","pC","normalizeNormals","attribute1","attributeArray1","attribute2","attributeArray2","geometry2","array2","keys","morphAttribute","materialId","Material","blending","side","flatShading","opacity","transparent","blendSrc","blendDst","blendEquation","blendSrcAlpha","blendDstAlpha","blendEquationAlpha","depthFunc","depthTest","depthWrite","clippingPlanes","clipIntersection","clipShadows","shadowSide","colorWrite","polygonOffset","polygonOffsetFactor","polygonOffsetUnits","dithering","alphaTest","premultipliedAlpha","overdraw","MeshBasicMaterial","map","lightMap","lightMapIntensity","aoMap","aoMapIntensity","specularMap","alphaMap","envMap","combine","reflectivity","refractionRatio","wireframe","wireframeLinewidth","wireframeLinecap","wireframeLinejoin","skinning","setValues","ShaderMaterial","defines","vertexShader","fragmentShader","linewidth","clipping","extensions","defaultAttributeValues","index0AttributeName","uniformsNeedUpdate","Ray","origin","Line3","Triangle","Mesh","drawMode","updateMorphTargets","WebGLBackground","renderer","state","objects","clearColor","planeCamera","planeMesh","boxMesh","clearAlpha","setClear","render","renderList","scene","forceClear","background","autoClear","clear","autoClearColor","autoClearDepth","autoClearStencil","isCubeTexture","cube","removeAttribute","onBeforeRender","copyPosition","tCube","renderBufferDirect","WebGLBufferRenderer","info","mode","setMode","drawArrays","renderInstances","extension","drawArraysInstancedANGLE","maxInstancedCount","WebGLCapabilities","maxAnisotropy","getMaxPrecision","getShaderPrecisionFormat","VERTEX_SHADER","HIGH_FLOAT","FRAGMENT_SHADER","MEDIUM_FLOAT","maxPrecision","logarithmicDepthBuffer","maxTextures","getParameter","MAX_TEXTURE_IMAGE_UNITS","maxVertexTextures","MAX_VERTEX_TEXTURE_IMAGE_UNITS","maxTextureSize","MAX_TEXTURE_SIZE","maxCubemapSize","MAX_CUBE_MAP_TEXTURE_SIZE","maxAttributes","MAX_VERTEX_ATTRIBS","maxVertexUniforms","MAX_VERTEX_UNIFORM_VECTORS","maxVaryings","MAX_VARYING_VECTORS","maxFragmentUniforms","MAX_FRAGMENT_UNIFORM_VECTORS","vertexTextures","floatFragmentTextures","getMaxAnisotropy","MAX_TEXTURE_MAX_ANISOTROPY_EXT","floatVertexTextures","WebGLClipping","globalState","numGlobalPlanes","localClippingEnabled","renderingShadows","viewNormalMatrix","uniform","resetGlobalState","numPlanes","numIntersection","projectPlanes","skipTransform","nPlanes","dstArray","flatSize","viewMatrix","i4","init","enableLocalClipping","beginShadows","endShadows","setState","fromCache","nGlobal","lGlobal","clippingState","WebGLExtensions","getExtension","WebGLGeometries","wireframeAttributes","onGeometryDispose","buffergeometry","removeEventListener","memory","addEventListener","_bufferGeometry","setFromObject","geometryAttributes","ELEMENT_ARRAY_BUFFER","ARRAY_BUFFER","getWireframeAttribute","geometryIndex","WebGLIndexedBufferRenderer","bytesPerElement","drawElements","drawElementsInstancedANGLE","WebGLInfo","reset","calls","triangles","lines","instanceCount","TRIANGLES","TRIANGLE_STRIP","TRIANGLE_FAN","LINES","LINE_STRIP","LINE_LOOP","POINTS","absNumericalSort","WebGLMorphtargets","influencesList","morphInfluences","program","objectInfluences","morphTargetInfluences","influences","influence","getUniforms","setValue","WebGLObjects","updateList","updateFromObject","CubeTexture","newValue","currentValue","isRoot","roughness","metalness","emissive","emissiveIntensity","specular","shininess","clearCoat","clearCoatRoughness","bumpMap","bumpScale","normalMap","normalMapType","normalScale","displacementMap","displacementScale","displacementBias","roughnessMap","metalnessMap","emissiveMap","gradientMap","sizeAttenuation","dashSize","gapSize","srcPlanes","dstPlanes","isMeshBasicMaterial","isShaderMaterial","ray","at","directionDistance","distanceSqToPoint","segCenter","segDir","optionalPointOnRay","optionalPointOnSegment","segExtent","s0","sqrDist","extDet","a01","b0","invDet","tca","radius2","thc","t0","t1","distanceToPlane","distToPoint","tmin","tmax","tymin","tymax","tzmin","tzmax","invdirx","invdiry","invdirz","intersectBox","edge1","edge2","backfaceCulling","DdN","DdQxE2","DdE1xQ","QdN","transformDirection","startP","startEnd","clampToLine","startEnd2","closestPointToPointParameter","targetLengthSq","dot00","dot01","dot02","dot11","dot12","denom","invDenom","getBarycoord","i0","i1","i2","getNormal","setFromCoplanarPoints","containsPoint","intersectsTriangle","edgeList","projectedPoint","minDistance","projectPoint","closestPointToPoint","morphTargetDictionary","ml","String","inverseMatrix","tempA","tempB","tempC","uvA","uvB","uvC","barycoord","intersectionPoint","intersectionPointWorld","uvIntersection","uv1","uv3","checkIntersection","raycaster","intersect","intersectTriangle","checkBufferGeometryIntersection","intersection","intersects","intersectsBox","groupMaterial","faceIndex","fvA","fvB","fvC","isMultiMaterial","faceMaterial","tl","targets","addScaledVector","uvs_f","emptyTexture","emptyCubeTexture","UniformContainer","seq","arrayCacheF32","arrayCacheI32","mat4array","mat3array","mat2array","flatten","nBlocks","blockSize","firstElem","arraysEqual","allocTexUnits","allocTextureUnit","setValue1f","uniform1f","addr","setValue1i","uniform1i","setValue2fv","uniform2f","uniform2fv","setValue3fv","uniform3f","uniform3fv","setValue4fv","uniform4f","uniform4fv","setValue2fm","uniformMatrix2fv","setValue3fm","uniformMatrix3fv","setValue4fm","uniformMatrix4fv","setValueT1","unit","setTexture2D","setValueT6","setTextureCube","setValue2iv","uniform2iv","setValue3iv","uniform3iv","setValue4iv","uniform4iv","getSingularSetter","setValue1fv","uniform1fv","setValue1iv","uniform1iv","setValueV2a","updateCache","setValueV3a","setValueV4a","setValueM2a","setValueM3a","setValueM4a","setValueT1a","units","setValueT6a","getPureArraySetter","SingleUniform","activeInfo","PureArrayUniform","StructuredUniform","RePathPart","addUniform","container","uniformObject","parseUniform","path","pathLength","lastIndex","matchEnd","idIsIndex","subscript","next","WebGLUniforms","getProgramParameter","ACTIVE_UNIFORMS","getActiveUniform","getUniformLocation","addLineNumbers","split","join","WebGLShader","shader","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","setOptional","upload","seqWithValue","programIdCount","getEncodingComponents","getTexelDecodingFunction","functionName","getTexelEncodingFunction","getToneMappingFunction","toneMapping","toneMappingName","generateExtensions","rendererExtensions","chunks","derivatives","envMapCubeUV","objectSpaceNormalMap","fragDepth","drawBuffers","shaderTextureLOD","filter","filterEmptyLine","generateDefines","fetchAttributeLocations","ACTIVE_ATTRIBUTES","getActiveAttrib","getAttribLocation","replaceLightNums","replace","numDirLights","numSpotLights","numRectAreaLights","numPointLights","numHemiLights","replaceClippingPlaneNums","numClippingPlanes","numClipIntersection","parseIncludes","include","unrollLoops","snippet","unroll","WebGLProgram","code","shadowMapTypeDefine","shadowMapType","envMapTypeDefine","envMapModeDefine","envMapBlendingDefine","gammaFactorDefine","prefixVertex","prefixFragment","customExtensions","customDefines","createProgram","isRawShaderMaterial","supportsVertexTextures","maxBones","useFog","fogExp","useVertexTexture","doubleSided","flipSided","shadowMapEnabled","physicallyCorrectLights","outputEncoding","mapEncoding","envMapEncoding","emissiveMapEncoding","depthPacking","vertexGlsl","fragmentGlsl","glVertexShader","glFragmentShader","attachShader","bindAttribLocation","linkProgram","programLog","cachedUniforms","cachedAttributes","getProgramInfoLog","trim","vertexLog","fragmentLog","runnable","haveDiagnostics","LINK_STATUS","getError","VALIDATE_STATUS","diagnostics","deleteShader","getAttributes","destroy","deleteProgram","usedTimes","WebGLPrograms","capabilities","programs","shaderIDs","parameterNames","getTextureEncodingFromMap","gammaOverrideLinear","isWebGLRenderTarget","getParameters","shadows","nClipPlanes","nClipIntersection","shaderID","isSkinnedMesh","allocateBones","skeleton","bones","nVertexUniforms","nVertexMatrices","currentRenderTarget","getRenderTarget","gammaOutput","gammaInput","isFogExp2","maxMorphTargets","maxMorphNormals","directional","spot","rectArea","hemi","shadowMap","getProgramCode","onBeforeCompile","acquireProgram","pl","programInfo","releaseProgram","pop","WebGLProperties","painterSortStable","reversePainterSortStable","WebGLRenderList","renderItems","renderItemsIndex","opaque","renderItem","WebGLRenderLists","lists","list","UniformsCache","light","WebGLLights","vector3","matrix42","setup","directionalLength","pointLength","spotLength","rectAreaLength","hemiLength","intensity","shadow","isAmbientLight","isDirectionalLight","shadowBias","bias","shadowRadius","shadowMapSize","mapSize","directionalShadowMap","directionalShadowMatrix","isSpotLight","coneCos","penumbraCos","penumbra","decay","spotShadowMap","spotShadowMatrix","isRectAreaLight","extractRotation","halfWidth","halfHeight","isPointLight","shadowCameraNear","shadowCameraFar","pointShadowMap","pointShadowMatrix","isHemisphereLight","skyColor","groundColor","ambient","WebGLRenderState","lightsArray","shadowsArray","spritesArray","setupLights","pushLight","pushShadow","shadowLight","pushSprite","WebGLRenderStates","renderStates","renderState","MeshDepthMaterial","MeshDistanceMaterial","referencePosition","nearDistance","farDistance","WebGLShadowMap","_renderer","_objects","_frustum","_projScreenMatrix","_shadowMapSize","_maxShadowMapSize","_lookTarget","_lightPositionWorld","_MorphingFlag","_SkinningFlag","_NumberOfMaterialVariants","_depthMaterials","_distanceMaterials","_materialCache","cubeDirections","cubeUps","cube2DViewPorts","useMorphing","useSkinning","depthMaterial","distanceMaterial","getDepthMaterial","lightPositionWorld","result","materialVariants","customMaterial","customDepthMaterial","customDistanceMaterial","variantIndex","keyA","keyB","materialsForVariant","cachedMaterial","isMeshDistanceMaterial","renderObject","shadowCamera","test","intersectsObject","modelViewMatrix","autoUpdate","_gl","faceCount","_state","disable","BLEND","setTest","setScissorTest","vpWidth","vpHeight","pars","isSpotLightShadow","shadowMatrix","setRenderTarget","vpDimensions","setFromMatrix","CanvasTexture","WebGLSpriteRenderer","vertexBuffer","elementBuffer","spritePosition","spriteRotation","spriteScale","fillStyle","fillRect","sprites","useProgram","initAttributes","enableAttribute","disableUnusedAttributes","CULL_FACE","enable","vertexAttribPointer","activeTexture","TEXTURE0","oldFogType","sceneFogType","fogColor","isFog","fogNear","fogFar","fogType","fogDensity","density","uvOffset","uvScale","setBlending","setMask","onAfterRender","WebGLState","utils","colorBuffer","ColorBuffer","locked","currentColorMask","currentColorClear","colorMask","lock","DepthBuffer","currentDepthMask","currentDepthFunc","currentDepthClear","DEPTH_TEST","depthMask","NEVER","ALWAYS","LESS","LEQUAL","EQUAL","GEQUAL","GREATER","NOTEQUAL","clearDepth","StencilBuffer","currentStencilMask","currentStencilFunc","currentStencilRef","currentStencilFuncMask","currentStencilFail","currentStencilZFail","currentStencilZPass","currentStencilClear","stencilTest","STENCIL_TEST","stencilMask","stencilFunc","stencilRef","stencilFail","stencilZFail","stencilZPass","stencilOp","stencil","clearStencil","maxVertexAttributes","newAttributes","enabledAttributes","attributeDivisors","compressedTextureFormats","currentProgram","currentBlending","currentBlendEquation","currentBlendSrc","currentBlendDst","currentBlendEquationAlpha","currentBlendSrcAlpha","currentBlendDstAlpha","currentPremultipledAlpha","currentFlipSided","currentCullFace","currentLineWidth","currentPolygonOffsetFactor","currentPolygonOffsetUnits","MAX_COMBINED_TEXTURE_IMAGE_UNITS","lineWidthAvailable","glVersion","VERSION","currentTextureSlot","currentBoundTextures","currentScissor","currentViewport","createTexture","bindTexture","texParameteri","TEXTURE_MIN_FILTER","NEAREST","TEXTURE_MAG_FILTER","texImage2D","RGBA","emptyTextures","enableAttributeAndDivisor","meshPerAttribute","enableVertexAttribArray","vertexAttribDivisorANGLE","blendEquationSeparate","FUNC_ADD","blendFuncSeparate","ONE","blendFunc","SRC_ALPHA","ZERO","ONE_MINUS_SRC_COLOR","ONE_MINUS_SRC_ALPHA","SRC_COLOR","convert","setFlipSided","frontFace","CW","CCW","setCullFace","cullFace","BACK","FRONT","FRONT_AND_BACK","setPolygonOffset","factor","POLYGON_OFFSET_FILL","webglSlot","TEXTURE_2D","TEXTURE_CUBE_MAP","TEXTURE_CUBE_MAP_POSITIVE_X","setFunc","disableVertexAttribArray","getCompressedTextureFormats","formats","COMPRESSED_TEXTURE_FORMATS","setMaterial","frontFaceCW","setLineWidth","lineWidth","SCISSOR_TEST","webglType","webglTexture","boundTexture","compressedTexImage2D","apply","WebGLTextures","_isWebGL2","_canvas","WebGL2RenderingContext","_videoTextures","clampToMaxSize","maxSize","isPowerOfTwo","textureNeedsGenerateMipmaps","generateMipmap","__maxMipLevel","LOG2E","filterFallback","LINEAR","onTextureDispose","deallocateTexture","textureProperties","__image__webglTextureCube","deleteTexture","__webglInit","__webglTexture","isVideoTexture","onRenderTargetDispose","renderTarget","deallocateRenderTarget","renderTargetProperties","deleteFramebuffer","__webglFramebuffer","__webglDepthbuffer","deleteRenderbuffer","slot","updateVideoTexture","__version","complete","uploadTexture","pixelStorei","UNPACK_FLIP_Y_WEBGL","UNPACK_PREMULTIPLY_ALPHA_WEBGL","UNPACK_ALIGNMENT","textureNeedsPowerOfTwo","makePowerOfTwo","HTMLImageElement","ImageBitmap","floorPowerOfTwo","isPowerOfTwoImage","glFormat","glType","mipmap","isDepthTexture","internalFormat","DEPTH_COMPONENT","DEPTH_COMPONENT32F","DEPTH_COMPONENT16","DEPTH_STENCIL","isCompressedTexture","setTextureParameters","textureType","TEXTURE_WRAP_S","TEXTURE_WRAP_T","CLAMP_TO_EDGE","__currentAnisotropy","texParameterf","TEXTURE_MAX_ANISOTROPY_EXT","setupFrameBufferTexture","framebuffer","attachment","textureTarget","bindFramebuffer","FRAMEBUFFER","framebufferTexture2D","setupRenderBufferStorage","renderbuffer","bindRenderbuffer","RENDERBUFFER","renderbufferStorage","framebufferRenderbuffer","DEPTH_ATTACHMENT","DEPTH_STENCIL_ATTACHMENT","RGBA4","setupDepthRenderbuffer","isCube","setupDepthTexture","webglDepthTexture","createRenderbuffer","isCompressed","cubeImage","setTextureCubeDynamic","setupRenderTarget","isTargetPowerOfTwo","createFramebuffer","COLOR_ATTACHMENT0","updateRenderTargetMipmap","WebGLUtils","REPEAT","MIRRORED_REPEAT","NEAREST_MIPMAP_NEAREST","NEAREST_MIPMAP_LINEAR","LINEAR_MIPMAP_NEAREST","LINEAR_MIPMAP_LINEAR","UNSIGNED_SHORT_4_4_4_4","UNSIGNED_SHORT_5_5_5_1","UNSIGNED_SHORT_5_6_5","HALF_FLOAT_OES","ALPHA","RGB","LUMINANCE","LUMINANCE_ALPHA","FUNC_SUBTRACT","FUNC_REVERSE_SUBTRACT","DST_ALPHA","ONE_MINUS_DST_ALPHA","DST_COLOR","ONE_MINUS_DST_COLOR","SRC_ALPHA_SATURATE","COMPRESSED_RGB_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT3_EXT","COMPRESSED_RGBA_S3TC_DXT5_EXT","COMPRESSED_RGB_PVRTC_4BPPV1_IMG","COMPRESSED_RGB_PVRTC_2BPPV1_IMG","COMPRESSED_RGBA_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_PVRTC_2BPPV1_IMG","COMPRESSED_RGB_ETC1_WEBGL","MIN_EXT","MAX_EXT","UNSIGNED_INT_24_8_WEBGL","Group","PerspectiveCamera","fov","aspect","focus","filmGauge","filmOffset","ArrayCamera","cameras","WebVRManager","device","frameData","poseTarget","controllers","standingMatrix","standingMatrixInverse","window","VRFrameData","onVRDisplayPresentChange","tempQuaternion","tempPosition","cameraL","bounds","cameraR","cameraVR","currentSize","currentPixelRatio","isPresenting","eyeParameters","getEyeParameters","renderWidth","renderHeight","getPixelRatio","setDrawingBufferSize","stop","isTriggerPressed","findGamepad","gamepads","navigator","getGamepads","gamepad","startsWith","userHeight","getController","controller","getDevice","setDevice","setContext","setPoseTarget","getCamera","depthNear","depthFar","getFrameData","stageParameters","sittingToStandingTransform","pose","poseObject","orientation","leftViewMatrix","rightViewMatrix","leftProjectionMatrix","rightProjectionMatrix","getLayers","layer","leftBounds","rightBounds","updateControllers","hasPosition","buttonId","buttons","pressed","getStandingMatrix","animation","setAnimationLoop","submitFrame","WebXRManager","session","frameOfRef","inputSources","onSessionEvent","inputSource","onSessionEnd","setFramebuffer","updateCamera","setCompatibleXRDevice","setSession","baseLayer","XRWebGLLayer","requestFrameOfReference","frameOfReferenceType","then","getInputSources","onAnimationFrameCallback","getDevicePose","views","getViewport","getViewMatrix","inputPose","getInputPose","pointerMatrix","THREE","WebGLRenderer","_context","_alpha","_depth","_stencil","_antialias","antialias","_premultipliedAlpha","_preserveDrawingBuffer","preserveDrawingBuffer","_powerPreference","powerPreference","currentRenderList","currentRenderState","domElement","sortObjects","toneMappingExposure","toneMappingWhitePoint","_this","programCache","renderLists","morphtargets","bufferRenderer","indexedBufferRenderer","spriteRenderer","_isContextLost","_currentRenderTarget","_currentFramebuffer","_currentMaterialId","_currentGeometryProgram","_currentCamera","_currentArrayCamera","_currentViewport","_currentScissor","_currentScissorTest","_height","_pixelRatio","_viewport","_width","_scissor","_scissorTest","_clippingEnabled","_localClippingEnabled","_vector3","getTargetPixelRatio","contextAttributes","onContextLost","onContextRestore","message","initGLContext","vr","preventDefault","onMaterialDispose","deallocateMaterial","releaseMaterialProgramReference","getContextAttributes","forceContextLoss","loseContext","forceContextRestore","restoreContext","setPixelRatio","setSize","updateStyle","setViewport","getDrawingBufferSize","pixelRatio","getCurrentViewport","setScissor","boolean","getClearColor","setClearColor","getClearAlpha","setClearAlpha","bits","COLOR_BUFFER_BIT","DEPTH_BUFFER_BIT","STENCIL_BUFFER_BIT","clearTarget","renderBufferImmediate","hasPositions","hasNormals","hasUvs","hasColors","programAttributes","positionArray","isMeshPhongMaterial","isMeshStandardMaterial","isMeshNormalMaterial","normalArray","nx","ny","nz","uvArray","colorArray","setProgram","geometryProgram","updateBuffers","rangeFactor","setupVertexAttributes","isInstancedBufferGeometry","materialDefaultAttributeValues","programAttribute","geometryAttribute","stride","isInstancedInterleavedBuffer","isInstancedBufferAttribute","vertexAttrib2fv","vertexAttrib3fv","vertexAttrib4fv","vertexAttrib1fv","dataCount","rangeStart","rangeCount","drawStart","drawEnd","drawCount","isLineSegments","isLineLoop","compile","isLight","warned","renderObjects","overrideMaterial","isArrayCamera","camera2","isImmediateRenderObject","renderObjectImmediate","initMaterial","materialProperties","_clipping","programChange","lightsHash","numSupportedMorphTargets","numSupportedMorphNormals","ambientLightColor","directionalLights","spotLights","rectAreaLights","pointLights","hemisphereLights","progUniforms","uniformsList","useCache","refreshProgram","refreshMaterial","refreshLights","p_uniforms","m_uniforms","uCamPos","cameraPosition","isMeshLambertMaterial","boneTexture","ceilPowerOfTwo","boneMatrices","boneTextureSize","refreshUniformsFog","refreshUniformsLambert","isMeshToonMaterial","refreshUniformsToon","isMeshPhysicalMaterial","refreshUniformsPhysical","isMeshDepthMaterial","refreshUniformsDepth","refreshUniformsDistance","refreshUniformsNormal","isLineBasicMaterial","refreshUniformsLine","diffuse","isLineDashedMaterial","refreshUniformsDash","totalSize","isPointsMaterial","refreshUniformsPoints","uvTransform","isShadowMaterial","ltc_1","LTC_1","ltc_2","LTC_2","refreshUniformsCommon","uvScaleMap","flipEnvMap","maxMipLevel","refreshUniformsPhong","refreshUniformsStandard","envMapIntensity","projectObject","isSprite","intersectsSprite","autoReset","opaqueObjects","transparentObjects","textureUnit","_usedTextureUnits","setTexture","_framebuffer","readRenderTargetPixels","restore","textureFormat","IMPLEMENTATION_COLOR_READ_FORMAT","IMPLEMENTATION_COLOR_READ_TYPE","checkFramebufferStatus","FRAMEBUFFER_COMPLETE","readPixels","copyFramebufferToTexture","level","copyTexImage2D","copyTextureToTexture","srcTexture","dstTexture","texSubImage2D","FogExp2","Fog","Scene","SpriteMaterial","Sprite","LOD","Skeleton","boneInverses","calculateInverses","Bone","SkinnedMesh","bindMode","bindMatrix","bindMatrixInverse","initBones","bind","normalizeSkinWeights","LineBasicMaterial","linecap","linejoin","Line","LineSegments","LineLoop","PointsMaterial","Points","VideoTexture","video","CompressedTexture","DepthTexture","WireframeGeometry","o","ol","edge","edges","ParametricGeometry","func","slices","stacks","ParametricBufferGeometry","pu","pv","sliceCount","PolyhedronGeometry","detail","PolyhedronBufferGeometry","uvBuffer","subdivideFace","cols","aj","lerp","bj","rows","pushVertex","getVertexByIndex","correctUV","azimuth","subdivide","appplyRadius","generateUVs","inclination","correctUVs","centroid","azi","correctSeam","TetrahedronGeometry","TetrahedronBufferGeometry","OctahedronGeometry","OctahedronBufferGeometry","IcosahedronGeometry","IcosahedronBufferGeometry","DodecahedronGeometry","DodecahedronBufferGeometry","TubeGeometry","tubularSegments","radialSegments","closed","taper","console","bufferGeometry","TubeBufferGeometry","tangents","binormals","frames","computeFrenetFrames","P","generateSegment","getPointAt","N","B","generateBufferData","generateIndices","TorusKnotGeometry","tube","heightScale","TorusKnotBufferGeometry","P1","P2","T","calculatePositionOnCurve","cu","su","quOverP","cs","TorusGeometry","arc","TorusBufferGeometry","isCanvasTexture","focalLength","vExtentSlope","getFilmHeight","atan","tan","skew","getFilmWidth","makePerspective","isSpriteMaterial","intersectPoint","worldScale","mvPosition","alignedPosition","rotatedPosition","viewWorldMatrix","transformVertex","vertexPosition","setFromMatrixScale","levels","addLevel","matrixPosition","getObjectForDistance","raycast","inverse","bone","isBone","offsetMatrix","identityMatrix","gbone","pos","rotq","scl","sw","manhattanLength","vec","skinWeight","setXYZW","positionAttribute","linePrecision","precisionSq","vStart","vEnd","interSegment","interRay","step","distSq","distanceSqToSegment","nbVertices","threshold","params","localThreshold","localThresholdSq","testPoint","rayPointDistanceSq","readyState","HAVE_CURRENT_DATA","Earcut","holeIndices","dim","hasHoles","invSize","outerLen","outerNode","linkedList","eliminateHoles","clockwise","last","signedArea","insertNode","filterPoints","again","steiner","area","prev","earcutLinked","ear","pass","indexCurve","isEarHashed","isEar","cureLocalIntersections","pointInTriangle","minTX","minTY","maxTX","maxTY","zOrder","nextZ","prevZ","locallyInside","splitEarcut","isValidDiagonal","splitPolygon","queue","getLeftmost","compareX","eliminateHole","hole","findHoleBridge","hx","hy","mx","my","tanMin","sortLinked","tail","numMerges","pSize","qSize","inSize","leftmost","px","py","intersectsPolygon","middleInside","q2","inside","Node","an","bp","removeNode","sum","ShapeUtils","contour","pts","holes","holeIndex","forEach","removeDupEndPts","triangulate","addContour","ExtrudeGeometry","ExtrudeBufferGeometry","verticesArray","addShape","placeholder","curveSegments","steps","bevelEnabled","bevelThickness","bevelSize","bevelSegments","extrudePath","uvgen","UVGenerator","WorldUVGenerator","amount","extrudePts","splineTube","binormal","position2","ahole","hl","extrudeByPath","getSpacedPoints","shapePoints","extractPoints","reverse","isClockWise","triangulateShape","concat","scalePt2","pt","bs","vert","vlen","flen","getBevelVec","inPt","inPrev","inNext","v_trans_x","v_trans_y","shrink_by","v_prev_x","v_prev_y","v_next_x","v_next_y","v_prev_lensq","collinear0","v_prev_len","v_next_len","ptPrevShift_x","ptPrevShift_y","sf","v_trans_lensq","direction_eq","contourMovements","holesMovements","oneHoleMovements","verticesMovements","sidewalls","layeroffset","sl","slen1","slen2","f3","nextIndex","generateTopUV","f4","generateSideWallUV","addVertex","addUV","vector2","buildLidFaces","buildSideFaces","indexA","indexB","indexC","a_x","a_y","b_x","b_y","c_x","c_y","indexD","a_z","b_z","c_z","d_x","d_y","d_z","TextGeometry","text","TextBufferGeometry","font","isFont","generateShapes","SphereGeometry","phiStart","phiLength","thetaStart","thetaLength","SphereBufferGeometry","thetaEnd","grid","verticesRow","RingGeometry","innerRadius","outerRadius","thetaSegments","phiSegments","RingBufferGeometry","segment","radiusStep","thetaSegmentLevel","LatheGeometry","segments","LatheBufferGeometry","base","inverseSegments","n1","n2","ShapeGeometry","ShapeBufferGeometry","shapeHole","indexOffset","shapeVertices","shapeHoles","toJSON$1","EdgesGeometry","thresholdAngle","thresholdDot","sourceVertices","face1","face2","CylinderGeometry","radiusTop","radiusBottom","openEnded","CylinderBufferGeometry","indexArray","generateCap","centerIndexStart","centerIndexEnd","cosTheta","sinTheta","generateTorso","slope","indexRow","ConeGeometry","ConeBufferGeometry","CircleGeometry","CircleBufferGeometry","Geometries","freeze","ShadowMaterial","RawShaderMaterial","MeshStandardMaterial","MeshPhysicalMaterial","MeshPhongMaterial","MeshToonMaterial","MeshNormalMaterial","MeshLambertMaterial","LineDashedMaterial","Materials","Cache","file","files","LoadingManager","onLoad","onProgress","onError","isLoading","itemsLoaded","itemsTotal","urlModifier","onStart","itemStart","itemEnd","itemError","resolveURL","setURLModifier","transform","DefaultLoadingManager","loading","FileLoader","manager","CompressedTextureLoader","_parser","DataTextureLoader","ImageLoader","CubeTextureLoader","TextureLoader","Curve","arcLengthDivisions","EllipseCurve","aX","aY","xRadius","yRadius","aStartAngle","aEndAngle","aClockwise","aRotation","ArcCurve","aRadius","CubicPoly","c0","x3","tension","dt0","dt1","dt2","t2","cached","dataUriRegex","dataUriRegexResult","mimeType","isBase64","decodeURIComponent","atob","response","responseType","toLowerCase","charCodeAt","Blob","parser","DOMParser","parseFromString","setTimeout","request","XMLHttpRequest","header","open","callbacks","status","withCredentials","overrideMimeType","requestHeader","setRequestHeader","send","loader","loadTexture","load","texDatas","mipmapCount","setPath","setResponseType","loaded","isCubemap","texData","onImageLoad","onImageError","substr","crossOrigin","src","urls","setCrossOrigin","isJPEG","search","optionalTarget","getUtoTmapping","getPoint","divisions","lengths","getLengths","cacheArcLengths","current","arcLengths","targetArcLength","comparison","lengthBefore","pt1","getTangent","mat","getTangentAt","MAX_VALUE","tz","makeRotationAxis","json","isEllipseCurve","deltaAngle","twoPi","samePoints","fromJSON","isArcCurve","pz","CatmullRomCurve3","curveType","CatmullRom","QuadraticBezierP0","QuadraticBezierP1","QuadraticBezierP2","QuadraticBezier","CubicBezierP0","CubicBezierP1","CubicBezierP2","CubicBezierP3","CubicBezier","CubicBezierCurve","v3","CubicBezierCurve3","LineCurve","LineCurve3","QuadraticBezierCurve","QuadraticBezierCurve3","SplineCurve","isCatmullRomCurve3","intPoint","weight","initNonuniformCatmullRom","initCatmullRom","calc","isCubicBezierCurve","isCubicBezierCurve3","isLineCurve","tangent","isLineCurve3","isQuadraticBezierCurve","isQuadraticBezierCurve3","isSplineCurve","Curves","CurvePath","curves","autoClose","Path","currentPoint","Shape","Light","HemisphereLight","LightShadow","SpotLightShadow","SpotLight","power","PointLight","DirectionalLightShadow","DirectionalLight","AmbientLight","RectAreaLight","StringKeyframeTrack","times","interpolation","BooleanKeyframeTrack","Interpolant","parameterPositions","sampleValues","sampleSize","resultBuffer","_cachedIndex","valueSize","QuaternionLinearInterpolant","QuaternionKeyframeTrack","ColorKeyframeTrack","NumberKeyframeTrack","CubicInterpolant","_weightPrev","_offsetPrev","_weightNext","_offsetNext","LinearInterpolant","DiscreteInterpolant","curve","startPoint","endPoint","getLength","curveLengths","getCurveLengths","segmentLength","lens","cacheLengths","sums","resolution","getPoints","moveTo","lineTo","aCPx","aCPy","aCP1x","aCP1y","aCP2x","aCP2y","npts","absarc","absellipse","firstPoint","lastPoint","holesPts","getPointsHoles","KeyframeTrack","pp","giveUpAt","forward_scan","afterEnd_","seek","linear_scan","validate_interval","t1global","beforeStart_","mid","intervalChanged_","interpolate_","settings","DefaultSettings_","copySampleValue_","slerpFlat","getValueSize","iPrev","iNext","tPrev","tNext","getSettings_","endingStart","endingEnd","halfDt","o1","o0","oP","oN","wP","wN","ppp","sP","sN","offset1","offset0","weight1","weight0","AnimationUtils","from","to","isTypedArray","forceClone","ArrayBuffer","isView","DataView","compareTime","nValues","srcOffset","jsonKeys","valuePropertyName","convertArray","TimeBufferType","ValueBufferType","setInterpolation","DefaultInterpolation","validate","optimize","VectorKeyframeTrack","AnimationClip","duration","tracks","resetDuration","MaterialLoader","BufferGeometryLoader","trackType","_getTrackTypeForValueTypeName","flattenJSON","track","getInterpolation","ValueTypeName","typeName","factoryMethod","InterpolantFactoryMethodDiscrete","InterpolantFactoryMethodLinear","InterpolantFactoryMethodSmooth","createInterpolant","timeOffset","timeScale","startTime","endTime","nKeys","arraySlice","valid","prevTime","currTime","smoothInterpolation","writeIndex","keep","offsetP","offsetN","readOffset","writeOffset","jsonTracks","frameTime","fps","clip","clipTracks","morphTargetSequence","noLoop","numMorphTargets","getKeyframeOrder","sortedArray","objectOrClipArray","clipArray","animations","animationToMorphTargets","pattern","parts","animationMorphTargets","clips","CreateFromMorphTargetSequence","addNonemptyTrack","trackName","animationKeys","propertyName","destTracks","clipName","hierarchyTracks","hierarchy","morphTargetNames","morphTargetName","animationKey","boneName","getTexture","shading","typedArray","TYPED_ARRAYS","drawcalls","offsets","Loader","Handlers","regex","handlers","texturePath","createMaterial","BlendingMode","textureLoader","materialLoader","wrap","fullPath","mapDiffuseRepeat","mapDiffuseOffset","mapDiffuseWrap","mapDiffuseAnisotropy","mapEmissiveRepeat","mapEmissiveOffset","mapEmissiveWrap","mapEmissiveAnisotropy","mapLightRepeat","mapLightOffset","mapLightWrap","mapLightAnisotropy","mapAORepeat","mapAOOffset","mapAOWrap","mapAOAnisotropy","mapBumpRepeat","mapBumpOffset","mapBumpWrap","mapBumpAnisotropy","mapNormalRepeat","mapNormalOffset","mapNormalWrap","mapNormalAnisotropy","mapSpecularRepeat","mapSpecularOffset","mapSpecularWrap","mapSpecularAnisotropy","mapMetalnessRepeat","mapMetalnessOffset","mapMetalnessWrap","mapMetalnessAnisotropy","mapRoughnessRepeat","mapRoughnessOffset","mapRoughnessWrap","mapRoughnessAnisotropy","mapAlphaRepeat","mapAlphaOffset","mapAlphaWrap","mapAlphaAnisotropy","setTextures","LoaderUtils","TextDecoder","decode","fromCharCode","escape","lastIndexOf","JSONLoader","ObjectLoader","extractUrlBase","setWithCredentials","parseModel","isBitSet","fi","zLength","colorIndex","normalIndex","uvIndex","isQuad","hasMaterial","faceA","faceB","uvLayer","nUvLayers","parseSkin","influencesPerVertex","parseMorphing","dstVertices","srcVertices","morphColors","parseAnimations","outputAnimations","parseAnimation","morphAnimationClips","CreateClipsFromMorphTargetSequences","initMaterials","substring","parseShape","parseGeometries","parseImages","parseTextures","parseMaterials","parseObject","geometryLoader","bufferGeometryLoader","details","geometryShapes","loadImage","currentUrl","parseConstant","TEXTURE_MAPPING","TEXTURE_WRAPPING","TEXTURE_FILTER","getGeometry","getMaterial","ImageBitmapLoader","createImageBitmap","fetch","ShapePath","subPaths","currentPath","Font","createPaths","chars","line_height","yMax","yMin","underlineThickness","paths","char","ret","createPath","glyph","glyphs","cpx","cpy","cpx1","cpy1","cpx2","cpy2","outline","_cachedOutline","action","quadraticCurveTo","bezierCurveTo","ha","FontLoader","res","blob","imageBitmap","catch","splineThru","isCCW","noHoles","toShapesNoHoles","inSubpaths","tmpPath","tmpShape","isPointInsidePolygon","inPolygon","polyLen","edgeLowPt","edgeHighPt","edgeDx","edgeDy","perpEdge","solid","holesFirst","betterShapeHoles","tmpPoints","tmpHoles","newShapes","newShapeHoles","mainIdx","ambiguous","toChange","sIdx","sLen","sho","hIdx","ho","hole_unassigned","s2Idx","froms","tos","toShapes","AudioContext","webkitAudioContext","AudioLoader","StereoCamera","eyeSep","CubeCamera","cubeResolution","cameraPX","cameraNX","cameraPY","cameraNY","cameraPZ","cameraNZ","AudioListener","gain","createGain","connect","destination","Audio","getInput","autoplay","loop","playbackRate","isPlaying","hasPlaybackControl","sourceType","filters","PositionalAudio","panner","createPanner","AudioAnalyser","audio","fftSize","analyser","createAnalyser","frequencyBinCount","getOutput","PropertyMixer","binding","mixFunction","_slerp","_select","_lerp","_mixBufferRegion","cumulativeWeight","useCount","referenceCount","bufferCopy","decodeAudioData","audioBuffer","instance","eyeRight","eyeLeft","xmin","xmax","eyeSepOnProjection","ymax","disconnect","setTargetAtTime","currentTime","positionX","setValueAtTime","positionY","positionZ","forwardX","forwardY","forwardZ","upX","upY","upZ","setPosition","setOrientation","audioNode","mediaElement","createMediaElementSource","play","createBufferSource","onended","onEnded","getFilters","setFilters","refDistance","rolloffFactor","distanceModel","maxDistance","coneInnerAngle","coneOuterAngle","coneOuterGain","getByteFrequencyData","getFrequencyData","accuIndex","currentWeight","mix","originalValueOffset","getValue","lineGeometry","coneGeometry","RESERVED_CHARS_RE","Composite","targetGroup","optionalParsedPath","parsedPath","PropertyBinding","parseTrackName","_targetGroup","_bindings","subscribe_","rootNode","findNode","nodeName","AnimationObjectGroup","nCachedObjects_","_indicesByUUID","_paths","_parsedPaths","_bindingsIndicesByPath","stats","total","inUse","bindingsPerObject","AnimationAction","mixer","localRoot","_mixer","_clip","_localRoot","nTracks","interpolants","interpolantSettings","interpolant","_interpolantSettings","_interpolants","_propertyBindings","_cacheIndex","_byClipCacheIndex","_timeScaleInterpolant","_weightInterpolant","_loopCount","_startTime","_effectiveTimeScale","_effectiveWeight","repetitions","paused","clampWhenFinished","zeroSlopeAtStart","zeroSlopeAtEnd","AnimationMixer","root","_root","_initMemoryManager","_accuIndex","Uniform","InstancedBufferGeometry","InterleavedBufferAttribute","interleavedBuffer","InterleavedBuffer","InstancedInterleavedBuffer","InstancedBufferAttribute","Raycaster","ascSort","intersectObject","Clock","autoStart","oldTime","elapsedTime","running","Spherical","Cylindrical","Box2","ImmediateRenderObject","VertexNormalsHelper","nNormals","objGeometry","SpotLightHelper","cone","getBoneList","boneList","SkeletonHelper","PointLightHelper","sphereSize","RectAreaLightHelper","HemisphereLightHelper","rotateY","getAttribute","GridHelper","PolarGridHelper","radials","circles","FaceNormalsHelper","DirectionalLightHelper","lightPlane","targetLine","CameraHelper","pointMap","colorFrustum","colorCone","colorUp","colorTarget","colorCross","addLine","addPoint","BoxHelper","Box3Helper","PlaneHelper","positions2","ArrowHelper","headLength","headWidth","setDirection","setLength","AxesHelper","Face4","firstValidIndex","bindings","unbind","isAnimationObjectGroup","reservedRe","RegExp","wordChar","wordCharOrDot","directoryRe","nodeRe","objectRe","propertyRe","trackRe","supportedObjectNames","matches","results","lastDot","objectName","getBoneByName","searchNodeSubtree","childNode","subTreeNode","resolvedProperty","propertyIndex","setValue_direct","targetObject","setValue_array","dest","setValue_arrayElement","setValue_fromArray","targetArray","sourceArray","_getValue_unavailable","_setValue_unavailable","objectIndex","nodeProperty","versioning","Versioning","None","NeedsUpdate","MatrixWorldNeedsUpdate","bindingType","BindingType","Direct","ArrayElement","HasFromToArray","EntireArray","GetterByBindingType","SetterByBindingTypeAndVersioning","_getValue_unbound","_setValue_unbound","nObjects","nCachedObjects","indicesByUUID","parsedPaths","nBindings","knownObject","firstActiveIndex","lastCachedObject","bindingsForPath","lastCached","lastCachedIndex","firstActiveObject","firstActive","lastObject","indicesByPath","lastBindingsIndex","lastBindings","lastBindingsPath","_activateAction","_deactivateAction","stopFading","stopWarping","_isActiveAction","_scheduleFading","fadeOutAction","warp","fadeOut","fadeIn","fadeInDuration","fadeOutDuration","startEndRatio","endStartRatio","fadeInAction","crossFadeFrom","weightInterpolant","_takeBackControlInterpolant","startTimeScale","endTimeScale","now","_lendControlInterpolant","timeScaleInterpolant","deltaTime","timeDirection","timeRunning","_updateTimeScale","clipTime","_updateTime","_updateWeight","propertyMixers","evaluate","accumulate","interpolantValue","loopCount","_setEndings","handle_stop","pingPong","loopDelta","pending","atStart","atEnd","weightNow","weightThen","prototypeAction","rootUuid","bindingsByRoot","_bindingsByRootAndName","bindingsByName","_addInactiveBinding","clipUuid","actionsForClip","_actionsByClip","_bindAction","knownActions","_addInactiveAction","_lendBinding","saveOriginalState","_lendAction","restoreOriginalState","_takeBackBinding","_takeBackAction","_actions","_nActiveActions","_nActiveBindings","_controlInterpolants","_nActiveControlInterpolants","actions","actionsByClip","actionByRoot","lastInactiveAction","cacheIndex","knownActionsForClip","lastKnownAction","byClipCacheIndex","_removeInactiveBindingsForAction","_removeInactiveBinding","prevIndex","lastActiveIndex","firstInactiveAction","firstInactiveIndex","lastActiveAction","bindingByName","propBinding","lastInactiveBinding","_","remove_empty_map","firstInactiveBinding","lastActiveBinding","_controlInterpolantsResultBuffer","__cacheIndex","lastActiveInterpolant","optionalRoot","clipObject","findByName","existingAction","newAction","nActions","_update","actionsToRemove","_removeInactiveAction","coords","isPerspectiveCamera","unproject","isOrthographicCamera","performance","Date","getElapsedTime","getDelta","newTime","other","vec3","objPos","objNorm","coneLength","coneWidth","boneMatrix","matrixWorldInv","setPoint","setColor","LineStrip","LinePieces","MeshFaceMaterial","MultiMaterial","PointCloud","Particle","ParticleSystem","PointCloudMaterial","ParticleBasicMaterial","ParticleSystemMaterial","Vertex","DynamicBufferAttribute","setDynamic","Int8Attribute","Uint8Attribute","Uint8ClampedAttribute","Int16Attribute","Uint16Attribute","Int32Attribute","Uint32Attribute","Float32Attribute","Float64Attribute","ClosedSplineCurve3","SplineCurve3","Spline","AxisHelper","BoundingBoxHelper","EdgesHelper","WireframeHelper","XHRLoader","BinaryTextureLoader","construct","createGeometry","setColors","isIntersectionLine","intersectsLine","multiplyVector3","getArea","getMidpoint","getPlane","manhattanDistanceTo","getObjectByName","setLens","setFocalLength","clearGroups","setBuffer","getData","updateCubeMap","GeometryUtils","geometry1","ImageUtils","Projector","projectVector","project","unprojectVector","pickingRay","CanvasRenderer","SceneUtils","CubeGeometry","angleTo","OffscreenCanvas","envmap_physical_pars_fragment","sprite_frag","sprite_vert","isWebGL2","vab","vac","vbc","vap","vbp","vcp","d4","vc","d5","d6","vb","va","isGLSL3ShaderMaterial","versionRegex","stateID","shadowsLength","enabledCapabilities","getInternalFormat","RGB32F","HALF_FLOAT","RGB16F","RGB8","RGBA32F","RGBA16F","RGBA8","glInternalFormat","MIN","MAX","UNSIGNED_INT_24_8","triggers","XRDevice","lightsStateHash","refreshUniformsSprites","float32Array","getTrackTypeForValueTypeName","parseKeyframeTrack","loadTextureCube","loadCompressedTexture","loadCompressedTextureCube","cachedSetTimeout","cachedClearTimeout","process","module","exports","defaultSetTimout","defaultClearTimeout","runTimeout","fun","runClearTimeout","marker","clearTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","Item","noop","nextTick","args","title","browser","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","cwd","chdir","umask","EventEmitter","_events","_maxListeners","isFunction","arg","isNumber","isObject","isUndefined","defaultMaxListeners","setMaxListeners","er","handler","err","newListener","fired","listenerCount","evlistener","emitter","Buffer","require","Transform","inherits","throwIfNotStringOrBuffer","val","prefix","isBuffer","HashBase","_block","allocUnsafe","_blockSize","_blockOffset","_length","_finalized","_transform","chunk","_flush","digest","block","carry","_digest","fill","sha224WithRSAEncryption","RSA-SHA224","sha256WithRSAEncryption","RSA-SHA256","sha384WithRSAEncryption","RSA-SHA384","sha512WithRSAEncryption","RSA-SHA512","RSA-SHA1","ecdsa-with-SHA1","sha256","sha224","sha384","sha512","DSA-SHA","DSA-SHA1","DSA","DSA-WITH-SHA224","DSA-SHA224","DSA-WITH-SHA256","DSA-SHA256","DSA-WITH-SHA384","DSA-SHA384","DSA-WITH-SHA512","DSA-SHA512","DSA-RIPEMD160","ripemd160WithRSA","RSA-RIPEMD160","md5WithRSAEncryption","RSA-MD5","MAX_ALLOC","checkBuffer","buf","password","salt","iterations","keylen","defaultEncoding","pVersionMajor","md5","rmd160","sha","checkParameters","ZEROS","alloc","sizes","Hmac","alg","saltLen","getDigest","blocksize","ipad","opad","ipad1","ipad2","shaFunc","pbkdf2","hmac","DK","block1","destPos","hLen","writeUInt32BE","U","ZERO_BUF","sync","subtle","global","crypto","toBrowser","checks","checkNative","algo","Promise","resolve","importKey","deriveBits","prom","browserPbkdf2","resolvePromise","promise","out","resp","pbkdf2Sync","aes-128-ecb","cipher","iv","aes-192-ecb","aes-256-ecb","aes-128-cbc","aes-192-cbc","aes-256-cbc","aes128","aes192","aes256","aes-128-cfb","aes-192-cfb","aes-256-cfb","aes-128-cfb8","aes-192-cfb8","aes-256-cfb8","aes-128-cfb1","aes-192-cfb1","aes-256-cfb1","aes-128-ofb","aes-192-ofb","aes-256-ofb","aes-128-ctr","aes-192-ctr","aes-256-ctr","aes-128-gcm","aes-192-gcm","aes-256-gcm","modp1","gen","prime","modp2","modp5","modp14","modp15","modp16","modp17","modp18","_from","_inBundle","_integrity","_location","_phantomChildren","_requested","registry","raw","escapedName","rawSpec","saveSpec","fetchSpec","_requiredBy","_resolved","_shasum","_spec","_where","author","email","bugs","bundleDependencies","dependencies","bn.js","brorand","hash.js","hmac-drbg","minimalistic-assert","minimalistic-crypto-utils","deprecated","description","devDependencies","brfs","coveralls","grunt","grunt-browserify","grunt-cli","grunt-contrib-connect","grunt-contrib-copy","grunt-contrib-uglify","grunt-mocha-istanbul","grunt-saucelabs","istanbul","jscs","jshint","mocha","homepage","keywords","license","main","repository","scripts","lint","2.16.840.1.101.3.4.1.1","2.16.840.1.101.3.4.1.2","2.16.840.1.101.3.4.1.3","2.16.840.1.101.3.4.1.4","2.16.840.1.101.3.4.1.21","2.16.840.1.101.3.4.1.22","2.16.840.1.101.3.4.1.23","2.16.840.1.101.3.4.1.24","2.16.840.1.101.3.4.1.41","2.16.840.1.101.3.4.1.42","2.16.840.1.101.3.4.1.43","2.16.840.1.101.3.4.1.44","1.3.132.0.10","1.3.132.0.33","1.2.840.10045.3.1.1","1.2.840.10045.3.1.7","1.3.132.0.34","1.3.132.0.35","ready","clock","innerWidth","innerHeight","windowWidth","windowHeight","body","appendChild","hemlight","spotlight","_orbitControls","arToolkitSource","onResize","arToolkitContext","ArToolkitContext","cameraParam","onResizeElement","copyElementSizeTo","arController","getProjectionMatrix","markerRoot","ArMarkerControls","markerPattern","GLTFLoader","sceneGLTF","gltf","rotateX","gltfAnimation","clipAction"],"mappings":"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A,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,EACA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,GAAA,EAEA,GAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GACA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EACA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EACA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,EAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAEA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,EACA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAEA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,GAAA,GAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EACA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,EAAA,EAAA,EAAA,GACA,GAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAEA,GAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EACA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GAAA,GAAA,EAAA,GACA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAEA,EAAA,GAAA,GAAA,EAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,GACA,EAAA,GAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAEA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,EAAA,EACA,GAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,EACA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,GACA,EAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAGA,QAAA,WAAA,SAAA,EAAA,GAEA,IADA,IAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,IAAA,CAIA,IAAA,EACA,GAHA,EAAA,GAAA,GADA,IAAA,GAAA,EAAA,EAAA,KAMA,IAAA,EAAA,EAAA,EAAA,EAAA,IAAA,CAIA,IAAA,EACA,GAHA,EAAA,IAAA,GAAA,GADA,IAAA,GAAA,EAAA,EAAA,KAMA,OAAA,IAAA,GAGA,IAAA,EAAA,CACA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,GAAA,GAAA,EAAA,GACA,GAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAGA,QAAA,QAAA,SAAA,GAEA,IADA,IAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,IAAA,EACA,GAAA,IAAA,EAAA,GAAA,EAEA,OAAA,IAAA,GAGA,QAAA,SAAA,SAAA,EAAA,EAAA,GAEA,IADA,IAAA,EAAA,EAAA,SAAA,GACA,EAAA,OAAA,GACA,EAAA,IAAA,EAGA,IADA,IAAA,EAAA,GACA,EAAA,EAAA,EAAA,EAAA,GAAA,EACA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,IACA,OAAA,EAAA,KAAA;;AC5PA,SAAA,EAAA,EAAA,GACA,IAAA,EACA,MAAA,IAAA,MAAA,GAAA,oBAJA,OAAA,QAAA,EAOA,EAAA,MAAA,SAAA,EAAA,EAAA,GACA,GAAA,GAAA,EACA,MAAA,IAAA,MAAA,GAAA,qBAAA,EAAA,OAAA;;ACTA,aAEA,IAAA,EAAA,QAAA,uBAEA,SAAA,EAAA,GACA,KAAA,QAAA,EAEA,KAAA,KAAA,KAAA,QAAA,KACA,KAAA,UAAA,EACA,KAAA,QAEA,KAAA,OAAA,IAAA,MAAA,KAAA,WACA,KAAA,UAAA,EAEA,OAAA,QAAA,EAEA,EAAA,UAAA,MAAA,aAIA,EAAA,UAAA,OAAA,SAAA,GACA,OAAA,IAAA,EAAA,OACA,GAEA,YAAA,KAAA,KACA,KAAA,eAAA,GAEA,KAAA,eAAA,IAGA,EAAA,UAAA,QAAA,SAAA,EAAA,GAGA,IADA,IAAA,EAAA,KAAA,IAAA,KAAA,OAAA,OAAA,KAAA,UAAA,EAAA,OAAA,GACA,EAAA,EAAA,EAAA,EAAA,IACA,KAAA,OAAA,KAAA,UAAA,GAAA,EAAA,EAAA,GAIA,OAHA,KAAA,WAAA,EAGA,GAGA,EAAA,UAAA,aAAA,SAAA,EAAA,GAGA,OAFA,KAAA,QAAA,KAAA,OAAA,EAAA,EAAA,GACA,KAAA,UAAA,EACA,KAAA,WAGA,EAAA,UAAA,eAAA,SAAA,GACA,IAAA,EAAA,EACA,EAAA,EAEA,GAAA,KAAA,UAAA,EAAA,QAAA,KAAA,UAAA,EACA,EAAA,IAAA,MAAA,EAAA,KAAA,WAEA,IAAA,KAAA,YACA,GAAA,KAAA,QAAA,EAAA,GAEA,KAAA,YAAA,KAAA,OAAA,SACA,GAAA,KAAA,aAAA,EAAA,KAKA,IADA,IAAA,EAAA,EAAA,QAAA,EAAA,OAAA,GAAA,KAAA,UACA,EAAA,EAAA,GAAA,KAAA,UACA,KAAA,QAAA,EAAA,EAAA,EAAA,GACA,GAAA,KAAA,UAIA,KAAA,EAAA,EAAA,OAAA,IAAA,KAAA,YACA,KAAA,OAAA,KAAA,WAAA,EAAA,GAEA,OAAA,GAGA,EAAA,UAAA,eAAA,SAAA,GAQA,IAPA,IAAA,EAAA,EACA,EAAA,EAEA,EAAA,KAAA,MAAA,KAAA,UAAA,EAAA,QAAA,KAAA,WAAA,EACA,EAAA,IAAA,MAAA,EAAA,KAAA,WAGA,EAAA,EAAA,IACA,GAAA,KAAA,QAAA,EAAA,GACA,GAAA,KAAA,aAAA,EAAA,GAMA,OAFA,GAAA,KAAA,QAAA,EAAA,GAEA,GAGA,EAAA,UAAA,MAAA,SAAA,GACA,IAAA,EAIA,EAMA,OATA,IACA,EAAA,KAAA,OAAA,IAIA,EADA,YAAA,KAAA,KACA,KAAA,gBAEA,KAAA,gBAEA,EACA,EAAA,OAAA,GAEA,GAGA,EAAA,UAAA,KAAA,SAAA,EAAA,GACA,GAAA,IAAA,EACA,OAAA,EAEA,KAAA,EAAA,EAAA,QACA,EAAA,KAAA,EAEA,OAAA,GAGA,EAAA,UAAA,cAAA,WACA,IAAA,KAAA,KAAA,KAAA,OAAA,KAAA,WACA,MAAA,GAEA,IAAA,EAAA,IAAA,MAAA,KAAA,WAEA,OADA,KAAA,QAAA,KAAA,OAAA,EAAA,EAAA,GACA,GAGA,EAAA,UAAA,OAAA,SAAA,GACA,OAAA,GAGA,EAAA,UAAA,cAAA,WACA,EAAA,MAAA,KAAA,UAAA,KAAA,UAAA,8BACA,IAAA,EAAA,IAAA,MAAA,KAAA,WAGA,OAFA,KAAA,aAAA,EAAA,GAEA,KAAA,OAAA;;AC3IA,aAEA,IAAA,EAAA,QAAA,uBACA,EAAA,QAAA,YAEA,EAAA,QAAA,UACA,EAAA,EAAA,MACA,EAAA,EAAA,OAEA,SAAA,IACA,KAAA,IAAA,IAAA,MAAA,GACA,KAAA,KAAA,KAGA,SAAA,EAAA,GACA,EAAA,KAAA,KAAA,GAEA,IAAA,EAAA,IAAA,EACA,KAAA,UAAA,EAEA,KAAA,WAAA,EAAA,EAAA,KAEA,EAAA,EAAA,GACA,OAAA,QAAA,EAEA,EAAA,OAAA,SAAA,GACA,OAAA,IAAA,EAAA,IAGA,IAAA,EAAA,CACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAGA,EAAA,UAAA,WAAA,SAAA,EAAA,GACA,EAAA,KAAA,IAAA,MAAA,IAEA,EAAA,MAAA,EAAA,OAAA,KAAA,UAAA,sBAEA,IAAA,EAAA,EAAA,aAAA,EAAA,GACA,EAAA,EAAA,aAAA,EAAA,GAEA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,GACA,EAAA,EAAA,IAAA,GACA,EAAA,EAAA,IAAA,GACA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,KAAA,OAAA,GAAA,EAAA,CACA,IAAA,EAAA,EAAA,IAAA,GACA,EAAA,EAAA,OAAA,EAAA,GACA,EAAA,EAAA,OAAA,EAAA,GACA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,KAIA,EAAA,UAAA,QAAA,SAAA,EAAA,EAAA,EAAA,GACA,IAAA,EAAA,KAAA,UAEA,EAAA,EAAA,aAAA,EAAA,GACA,EAAA,EAAA,aAAA,EAAA,EAAA,GAGA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,GACA,EAAA,EAAA,IAAA,GACA,EAAA,EAAA,IAAA,GAEA,YAAA,KAAA,KACA,KAAA,SAAA,EAAA,EAAA,EAAA,EAAA,IAAA,GAEA,KAAA,SAAA,EAAA,EAAA,EAAA,EAAA,IAAA,GAEA,EAAA,EAAA,IAAA,GACA,EAAA,EAAA,IAAA,GAEA,EAAA,cAAA,EAAA,EAAA,GACA,EAAA,cAAA,EAAA,EAAA,EAAA,IAGA,EAAA,UAAA,KAAA,SAAA,EAAA,GAEA,IADA,IAAA,EAAA,EAAA,OAAA,EACA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,EAAA,GAAA,EAEA,OAAA,GAGA,EAAA,UAAA,OAAA,SAAA,GAEA,IADA,IAAA,EAAA,EAAA,EAAA,OAAA,GACA,EAAA,EAAA,OAAA,EAAA,EAAA,EAAA,OAAA,IACA,EAAA,MAAA,EAAA,GAAA,GAEA,OAAA,EAAA,MAAA,EAAA,EAAA,OAAA,IAGA,EAAA,UAAA,SAAA,SAAA,EAAA,EAAA,EAAA,EAAA,GAKA,IAJA,IAAA,EAAA,EACA,EAAA,EAGA,EAAA,EAAA,EAAA,EAAA,KAAA,OAAA,GAAA,EAAA,CACA,IAAA,EAAA,EAAA,KAAA,GACA,EAAA,EAAA,KAAA,EAAA,GAGA,EAAA,OAAA,EAAA,EAAA,IAAA,GAEA,GAAA,EAAA,IAAA,GACA,GAAA,EAAA,IAAA,GACA,IAAA,EAAA,EAAA,WAAA,EAAA,GAGA,EAAA,EACA,GAAA,EAHA,EAAA,QAAA,MAGA,EACA,EAAA,EAIA,EAAA,IAAA,EAAA,EAAA,EAAA,IAGA,EAAA,UAAA,SAAA,SAAA,EAAA,EAAA,EAAA,EAAA,GAKA,IAJA,IAAA,EAAA,EACA,EAAA,EAGA,EAAA,EAAA,KAAA,OAAA,EAAA,GAAA,EAAA,GAAA,EAAA,CACA,IAAA,EAAA,EAAA,KAAA,GACA,EAAA,EAAA,KAAA,EAAA,GAGA,EAAA,OAAA,EAAA,EAAA,IAAA,GAEA,GAAA,EAAA,IAAA,GACA,GAAA,EAAA,IAAA,GACA,IAAA,EAAA,EAAA,WAAA,EAAA,GAGA,EAAA,EACA,GAAA,EAHA,EAAA,QAAA,MAGA,EACA,EAAA,EAIA,EAAA,IAAA,EAAA,EAAA,EAAA;;AC7IA,aAEA,IAAA,EAAA,QAAA,uBACA,EAAA,QAAA,YAEA,EAAA,GAEA,SAAA,EAAA,GACA,EAAA,MAAA,EAAA,OAAA,EAAA,qBAEA,KAAA,GAAA,IAAA,MAAA,GACA,IAAA,IAAA,EAAA,EAAA,EAAA,KAAA,GAAA,OAAA,IACA,KAAA,GAAA,GAAA,EAAA,GAGA,SAAA,EAAA,GACA,SAAA,EAAA,GACA,EAAA,KAAA,KAAA,GACA,KAAA,WAEA,EAAA,EAAA,GAGA,IADA,IAAA,EAAA,OAAA,KAAA,GACA,EAAA,EAAA,EAAA,EAAA,OAAA,IAAA,CACA,IAAA,EAAA,EAAA,GACA,EAAA,UAAA,GAAA,EAAA,GAOA,OAJA,EAAA,OAAA,SAAA,GACA,OAAA,IAAA,EAAA,IAGA,EAGA,QAAA,YAAA,EAEA,EAAA,SAAA,WACA,IAAA,EAAA,IAAA,EAAA,KAAA,QAAA,IACA,KAAA,UAAA,GAGA,EAAA,QAAA,SAAA,EAAA,EAAA,EAAA,GACA,IAAA,EAAA,KAAA,UACA,EAAA,KAAA,YAAA,OAAA,UAEA,EAAA,EAAA,GACA,GAAA,YAAA,KAAA,KAAA,CACA,IAAA,IAAA,EAAA,EAAA,EAAA,KAAA,UAAA,IACA,EAAA,IAAA,EAAA,EAAA,GAEA,EAAA,QAAA,KAAA,KAAA,EAAA,EAAA,EAAA,GAEA,IAAA,EAAA,EAAA,EAAA,KAAA,UAAA,IACA,EAAA,GAAA,EAAA,EAAA,OACA,CACA,EAAA,QAAA,KAAA,KAAA,EAAA,EAAA,EAAA,GAEA,IAAA,EAAA,EAAA,EAAA,KAAA,UAAA,IACA,EAAA,EAAA,IAAA,EAAA,GAEA,IAAA,EAAA,EAAA,EAAA,KAAA,UAAA,IACA,EAAA,GAAA,EAAA,EAAA;;AC9DA,aAEA,IAAA,EAAA,QAAA,uBACA,EAAA,QAAA,YAEA,EAAA,QAAA,UACA,EAAA,EAAA,OACA,EAAA,EAAA,IAEA,SAAA,EAAA,EAAA,GACA,EAAA,MAAA,EAAA,OAAA,GAAA,sBAEA,IAAA,EAAA,EAAA,MAAA,EAAA,GACA,EAAA,EAAA,MAAA,EAAA,IACA,EAAA,EAAA,MAAA,GAAA,IAGA,KAAA,QADA,YAAA,EACA,CACA,EAAA,OAAA,CAAA,KAAA,UAAA,IAAA,IACA,EAAA,OAAA,CAAA,KAAA,UAAA,IAAA,IACA,EAAA,OAAA,CAAA,KAAA,UAAA,IAAA,KAGA,CACA,EAAA,OAAA,CAAA,KAAA,UAAA,IAAA,IACA,EAAA,OAAA,CAAA,KAAA,UAAA,IAAA,IACA,EAAA,OAAA,CAAA,KAAA,UAAA,IAAA,KAKA,SAAA,EAAA,GACA,EAAA,KAAA,KAAA,GAEA,IAAA,EAAA,IAAA,EAAA,KAAA,KAAA,KAAA,QAAA,KACA,KAAA,UAAA,EAEA,EAAA,EAAA,GAEA,OAAA,QAAA,EAEA,EAAA,OAAA,SAAA,GACA,OAAA,IAAA,EAAA,IAGA,EAAA,UAAA,QAAA,SAAA,EAAA,EAAA,EAAA,GACA,IAAA,EAAA,KAAA,UAEA,EAAA,QAAA,GAAA,QAAA,EAAA,EAAA,EAAA,GACA,EAAA,QAAA,GAAA,QAAA,EAAA,EAAA,EAAA,GACA,EAAA,QAAA,GAAA,QAAA,EAAA,EAAA,EAAA,IAGA,EAAA,UAAA,KAAA,EAAA,UAAA,KACA,EAAA,UAAA,OAAA,EAAA,UAAA;;ACtDA,aAEA,QAAA,MAAA,QAAA,eACA,QAAA,OAAA,QAAA,gBACA,QAAA,IAAA,QAAA,aACA,QAAA,IAAA,QAAA,aACA,QAAA,IAAA,QAAA;;;ACNA,IAAA,EAAA,QAAA,eACA,EAAA,QAAA,UACA,EAAA,QAAA,YACA,EAAA,QAAA,eAAA,OAEA,EAAA,CACA,eAAA,EAAA,IAAA,YAAA,EAAA,KACA,WAAA,EAAA,IACA,cAAA,EAAA,IAAA,YAAA,EAAA,KACA,UAAA,EAAA,IACA,UAAA,EAAA,IAAA,YAAA,EAAA,KACA,UAAA,EAAA,KAMA,SAAA,EAAA,GACA,EAAA,KAAA,MACA,IAEA,EAFA,EAAA,EAAA,KAAA,cACA,EAAA,EAAA,GAGA,EADA,EAAA,QACA,UAEA,UAEA,IAAA,EAAA,EAAA,IACA,EAAA,SAAA,KACA,EAAA,EAAA,KAAA,IAEA,YAAA,GAAA,gBAAA,IACA,EAAA,EAAA,OAAA,CAAA,EAAA,EAAA,MAAA,EAAA,MAEA,IAAA,EAAA,EAAA,GACA,EAAA,SAAA,KACA,EAAA,EAAA,KAAA,IAEA,KAAA,KAAA,EAAA,OAAA,CACA,IAAA,EACA,GAAA,EACA,KAAA,IA5BA,EAAA,IAAA,EAAA,WACA,EAAA,KAAA,EAAA,gBACA,OAAA,QAAA,EACA,EAAA,EAAA,GA4BA,EAAA,UAAA,QAAA,SAAA,GACA,OAAA,EAAA,KAAA,KAAA,KAAA,OAAA,KAEA,EAAA,UAAA,OAAA,WACA,OAAA,EAAA,KAAA,KAAA,KAAA;;AChDA,QAAA,QAAA,SAAA,EAAA,GACA,OAAA,EAAA,QAAA,aAAA,IAGA,QAAA,QAAA,SAAA,EAAA,GACA,OAAA,EAAA,QAAA,aAAA;;;ACKA,IAAA,EAAA,QAAA,UAAA,OAVA,OAAA,QAAA,SAAA,EAAA,GAIA,IAHA,IAAA,EAAA,KAAA,IAAA,EAAA,OAAA,EAAA,QACA,EAAA,IAAA,EAAA,GAEA,EAAA,EAAA,EAAA,IAAA,EACA,EAAA,GAAA,EAAA,GAAA,EAAA,GAGA,OAAA;;ACRA,IAAA,EAAA,QAAA,cAEA,QAAA,QAAA,SAAA,EAAA,GACA,IAAA,EAAA,EAAA,EAAA,EAAA,OAGA,OADA,EAAA,MAAA,EAAA,QAAA,aAAA,GACA,EAAA,OAGA,QAAA,QAAA,SAAA,EAAA,GACA,IAAA,EAAA,EAAA,MAEA,EAAA,MAAA,EACA,IAAA,EAAA,EAAA,QAAA,aAAA,GAEA,OAAA,EAAA,EAAA;;;ACfA,IAAA,EAAA,QAAA,eAAA,OACA,EAAA,QAAA,cAEA,SAAA,EAAA,EAAA,EAAA,GACA,IAAA,EAAA,EAAA,OACA,EAAA,EAAA,EAAA,EAAA,QAGA,OAFA,EAAA,OAAA,EAAA,OAAA,MAAA,GACA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,EAAA,IACA,EAGA,QAAA,QAAA,SAAA,EAAA,EAAA,GAIA,IAHA,IACA,EADA,EAAA,EAAA,YAAA,GAGA,EAAA,QAAA,CAMA,GALA,IAAA,EAAA,OAAA,SACA,EAAA,OAAA,EAAA,QAAA,aAAA,EAAA,OACA,EAAA,MAAA,EAAA,YAAA,MAGA,EAAA,OAAA,QAAA,EAAA,QAIA,CACA,EAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,EAAA,KACA,MALA,EAAA,EAAA,OAAA,OACA,EAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,EAAA,MAAA,EAAA,GAAA,KACA,EAAA,EAAA,MAAA,GAOA,OAAA;;;AC/BA,IAAA,EAAA,QAAA,eAAA,OAEA,SAAA,EAAA,EAAA,EAAA,GACA,IACA,EADA,EAAA,QAAA,aAAA,EAAA,OACA,GAAA,EAOA,OALA,EAAA,MAAA,EAAA,OAAA,CACA,EAAA,MAAA,MAAA,GACA,EAAA,KAAA,CAAA,EAAA,EAAA,MAGA,EAGA,QAAA,QAAA,SAAA,EAAA,EAAA,GAKA,IAJA,IAAA,EAAA,EAAA,OACA,EAAA,EAAA,YAAA,GACA,GAAA,IAEA,EAAA,GACA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,GAGA,OAAA;;;ACvBA,IAAA,EAAA,QAAA,eAAA,OAEA,SAAA,EAAA,EAAA,EAAA,GAMA,IALA,IAIA,EAAA,EAHA,GAAA,EAEA,EAAA,IAEA,EAHA,GAKA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAEA,IAAA,KADA,EAFA,EAAA,QAAA,aAAA,EAAA,OAEA,GAAA,KACA,EAAA,EACA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,GAEA,OAAA,EAGA,SAAA,EAAA,EAAA,GACA,IAAA,EAAA,EAAA,OACA,GAAA,EACA,EAAA,EAAA,YAAA,EAAA,QAGA,IAFA,EAAA,EAAA,OAAA,CAAA,EAAA,EAAA,KAAA,CAAA,QAEA,EAAA,GACA,EAAA,GAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAGA,OAAA,EAGA,QAAA,QAAA,SAAA,EAAA,EAAA,GAKA,IAJA,IAAA,EAAA,EAAA,OACA,EAAA,EAAA,YAAA,GACA,GAAA,IAEA,EAAA,GACA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,GAGA,OAAA;;;ACxBA,IAAA,EAAA,QAAA,UAAA,OAhBA,EAAA,QAAA,cAEA,SAAA,EAAA,GAEA,OADA,EAAA,MAAA,EAAA,QAAA,aAAA,EAAA,OACA,EAAA,MAGA,QAAA,QAAA,SAAA,EAAA,GACA,KAAA,EAAA,OAAA,OAAA,EAAA,QACA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,KAGA,IAAA,EAAA,EAAA,OAAA,MAAA,EAAA,EAAA,QAEA,OADA,EAAA,OAAA,EAAA,OAAA,MAAA,EAAA,QACA,EAAA,EAAA;;ACdA,SAAA,EAAA,GAGA,IAFA,IACA,EADA,EAAA,EAAA,OAEA,KAAA,CAEA,GAAA,OADA,EAAA,EAAA,UAAA,IAGA,CACA,IACA,EAAA,WAAA,EAAA,GACA,MAJA,EAAA,WAAA,EAAA,IAQA,OAAA,QAAA;;;ACdA,IAAA,EAAA,QAAA,cACA,EAAA,QAAA,eAAA,OACA,EAAA,QAAA,aAEA,SAAA,EAAA,GACA,IAAA,EAAA,EAAA,QAAA,gBAAA,EAAA,OAEA,OADA,EAAA,EAAA,OACA,EAGA,IAAA,EAAA,GACA,QAAA,QAAA,SAAA,EAAA,GACA,IAAA,EAAA,KAAA,KAAA,EAAA,OAAA,GACA,EAAA,EAAA,OAAA,OACA,EAAA,OAAA,EAAA,OAAA,CACA,EAAA,OACA,EAAA,YAAA,EAAA,KAEA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,IAAA,CACA,IAAA,EAAA,EAAA,GACA,EAAA,EAAA,EAAA,EACA,EAAA,OAAA,cAAA,EAAA,GAAA,EAAA,GACA,EAAA,OAAA,cAAA,EAAA,GAAA,EAAA,GACA,EAAA,OAAA,cAAA,EAAA,GAAA,EAAA,GACA,EAAA,OAAA,cAAA,EAAA,GAAA,EAAA,IAEA,IAAA,EAAA,EAAA,OAAA,MAAA,EAAA,EAAA,QAEA,OADA,EAAA,OAAA,EAAA,OAAA,MAAA,EAAA,QACA,EAAA,EAAA;;AvB5BAxD,OAAOC,QAAQ,CAACiK,cAAc,CAACC,OAAO,MAAMliG,IAAI,IAAImiG,GAAG,EAAEjvF,KAAK,MAAMrwC,KAAK,SAASu/H,cAAc,CAACF,OAAO,MAAMliG,IAAI,IAAImiG,GAAG,EAAEjvF,KAAK,MAAMrwC,KAAK,SAASw/H,cAAc,CAACH,OAAO,MAAMliG,IAAI,IAAImiG,GAAG,EAAEjvF,KAAK,MAAMrwC,KAAK,SAASy/H,cAAc,CAACJ,OAAO,MAAMliG,IAAI,IAAImiG,GAAG,GAAGjvF,KAAK,MAAMrwC,KAAK,SAAS0/H,cAAc,CAACL,OAAO,MAAMliG,IAAI,IAAImiG,GAAG,GAAGjvF,KAAK,MAAMrwC,KAAK,SAAS2/H,cAAc,CAACN,OAAO,MAAMliG,IAAI,IAAImiG,GAAG,GAAGjvF,KAAK,MAAMrwC,KAAK,SAAS4/H,OAAO,CAACP,OAAO,MAAMliG,IAAI,IAAImiG,GAAG,GAAGjvF,KAAK,MAAMrwC,KAAK,SAAS6/H,OAAO,CAACR,OAAO,MAAMliG,IAAI,IAAImiG,GAAG,GAAGjvF,KAAK,MAAMrwC,KAAK,SAAS8/H,OAAO,CAACT,OAAO,MAAMliG,IAAI,IAAImiG,GAAG,GAAGjvF,KAAK,MAAMrwC,KAAK,SAAS+/H,cAAc,CAACV,OAAO,MAAMliG,IAAI,IAAImiG,GAAG,GAAGjvF,KAAK,MAAMrwC,KAAK,UAAUggI,cAAc,CAACX,OAAO,MAAMliG,IAAI,IAAImiG,GAAG,GAAGjvF,KAAK,MAAMrwC,KAAK,UAAUigI,cAAc,CAACZ,OAAO,MAAMliG,IAAI,IAAImiG,GAAG,GAAGjvF,KAAK,MAAMrwC,KAAK,UAAUkgI,eAAe,CAACb,OAAO,MAAMliG,IAAI,IAAImiG,GAAG,GAAGjvF,KAAK,OAAOrwC,KAAK,UAAUmgI,eAAe,CAACd,OAAO,MAAMliG,IAAI,IAAImiG,GAAG,GAAGjvF,KAAK,OAAOrwC,KAAK,UAAUogI,eAAe,CAACf,OAAO,MAAMliG,IAAI,IAAImiG,GAAG,GAAGjvF,KAAK,OAAOrwC,KAAK,UAAUqgI,eAAe,CAAChB,OAAO,MAAMliG,IAAI,IAAImiG,GAAG,GAAGjvF,KAAK,OAAOrwC,KAAK,UAAUsgI,eAAe,CAACjB,OAAO,MAAMliG,IAAI,IAAImiG,GAAG,GAAGjvF,KAAK,OAAOrwC,KAAK,UAAUugI,eAAe,CAAClB,OAAO,MAAMliG,IAAI,IAAImiG,GAAG,GAAGjvF,KAAK,OAAOrwC,KAAK,UAAUwgI,cAAc,CAACnB,OAAO,MAAMliG,IAAI,IAAImiG,GAAG,GAAGjvF,KAAK,MAAMrwC,KAAK,UAAUygI,cAAc,CAACpB,OAAO,MAAMliG,IAAI,IAAImiG,GAAG,GAAGjvF,KAAK,MAAMrwC,KAAK,UAAU0gI,cAAc,CAACrB,OAAO,MAAMliG,IAAI,IAAImiG,GAAG,GAAGjvF,KAAK,MAAMrwC,KAAK,UAAU2gI,cAAc,CAACtB,OAAO,MAAMliG,IAAI,IAAImiG,GAAG,GAAGjvF,KAAK,MAAMrwC,KAAK,UAAU4gI,cAAc,CAACvB,OAAO,MAAMliG,IAAI,IAAImiG,GAAG,GAAGjvF,KAAK,MAAMrwC,KAAK,UAAU6gI,cAAc,CAACxB,OAAO,MAAMliG,IAAI,IAAImiG,GAAG,GAAGjvF,KAAK,MAAMrwC,KAAK,UAAU8gI,cAAc,CAACzB,OAAO,MAAMliG,IAAI,IAAImiG,GAAG,GAAGjvF,KAAK,MAAMrwC,KAAK,QAAQ+gI,cAAc,CAAC1B,OAAO,MAAMliG,IAAI,IAAImiG,GAAG,GAAGjvF,KAAK,MAAMrwC,KAAK,QAAQghI,cAAc,CAAC3B,OAAO,MAAMliG,IAAI,IAAImiG,GAAG,GAAGjvF,KAAK,MAAMrwC,KAAK;;AwBAzxD,IAAA,EAAA,CACA,IAAA,QAAA,SACA,IAAA,QAAA,SACA,IAAA,QAAA,SACA,KAAA,QAAA,UACA,KAAA,QAAA,UACA,IAAA,QAAA,SACA,IAAA,QAAA,SACA,IAAA,QAAA,UAGA,EAAA,QAAA,eAEA,IAAA,IAAA,KAAA,EACA,EAAA,GAAA,OAAA,EAAA,EAAA,GAAA,MAGA,OAAA,QAAA;;;ACZA,IAAA,EAAA,QAAA,eAAA,OAEA,SAAA,EAAA,GACA,EAAA,SAAA,KAAA,EAAA,EAAA,KAAA,IAKA,IAHA,IAAA,EAAA,EAAA,OAAA,EAAA,EACA,EAAA,IAAA,MAAA,GAEA,EAAA,EAAA,EAAA,EAAA,IACA,EAAA,GAAA,EAAA,aAAA,EAAA,GAGA,OAAA,EAGA,SAAA,EAAA,GACA,KAAA,EAAA,EAAA,OAAA,IACA,EADA,GACA,EAIA,SAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAaA,IAZA,IASA,EAAA,EAAA,EAAA,EATA,EAAA,EAAA,GACA,EAAA,EAAA,GACA,EAAA,EAAA,GACA,EAAA,EAAA,GAEA,EAAA,EAAA,GAAA,EAAA,GACA,EAAA,EAAA,GAAA,EAAA,GACA,EAAA,EAAA,GAAA,EAAA,GACA,EAAA,EAAA,GAAA,EAAA,GAEA,EAAA,EAEA,EAAA,EAAA,EAAA,EAAA,IACA,EAAA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,KAAA,EAAA,IAAA,EAAA,KAAA,EAAA,IAAA,GAAA,EAAA,KACA,EAAA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,KAAA,EAAA,IAAA,EAAA,KAAA,EAAA,IAAA,GAAA,EAAA,KACA,EAAA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,KAAA,EAAA,IAAA,EAAA,KAAA,EAAA,IAAA,GAAA,EAAA,KACA,EAAA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,KAAA,EAAA,IAAA,EAAA,KAAA,EAAA,IAAA,GAAA,EAAA,KACA,EAAA,EACA,EAAA,EACA,EAAA,EACA,EAAA,EAYA,OATA,GAAA,EAAA,IAAA,KAAA,GAAA,EAAA,IAAA,GAAA,MAAA,GAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,IAAA,EAAA,KACA,GAAA,EAAA,IAAA,KAAA,GAAA,EAAA,IAAA,GAAA,MAAA,GAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,IAAA,EAAA,KACA,GAAA,EAAA,IAAA,KAAA,GAAA,EAAA,IAAA,GAAA,MAAA,GAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,IAAA,EAAA,KACA,GAAA,EAAA,IAAA,KAAA,GAAA,EAAA,IAAA,GAAA,MAAA,GAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,IAAA,EAAA,KAMA,CALA,KAAA,EACA,KAAA,EACA,KAAA,EACA,KAAA,GAMA,IAAA,EAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IACA,EAAA,WAGA,IADA,IAAA,EAAA,IAAA,MAAA,KACA,EAAA,EAAA,EAAA,IAAA,IAEA,EAAA,GADA,EAAA,IACA,GAAA,EAEA,GAAA,EAAA,IAYA,IARA,IAAA,EAAA,GACA,EAAA,GACA,EAAA,CAAA,GAAA,GAAA,GAAA,IACA,EAAA,CAAA,GAAA,GAAA,GAAA,IAGA,EAAA,EACA,EAAA,EACA,EAAA,EAAA,EAAA,MAAA,EAAA,CAEA,IAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,EAAA,IAAA,EAAA,IAAA,EAAA,GACA,EAAA,GAAA,EACA,EAAA,GAAA,EAGA,IAAA,EAAA,EAAA,GACA,EAAA,EAAA,GACA,EAAA,EAAA,GAGA,EAAA,IAAA,EAAA,GAAA,SAAA,EACA,EAAA,GAAA,GAAA,GAAA,GAAA,IAAA,EACA,EAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GACA,EAAA,GAAA,GAAA,GAAA,EAAA,IAAA,GACA,EAAA,GAAA,GAAA,EAGA,EAAA,SAAA,EAAA,MAAA,EAAA,IAAA,EAAA,SAAA,EACA,EAAA,GAAA,GAAA,GAAA,GAAA,IAAA,EACA,EAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GACA,EAAA,GAAA,GAAA,GAAA,EAAA,IAAA,GACA,EAAA,GAAA,GAAA,EAEA,IAAA,EACA,EAAA,EAAA,GAEA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,KACA,GAAA,EAAA,EAAA,KAIA,MAAA,CACA,KAAA,EACA,SAAA,EACA,QAAA,EACA,YAAA,GAzDA,GA6DA,SAAA,EAAA,GACA,KAAA,KAAA,EAAA,GACA,KAAA,SAGA,EAAA,UAAA,GACA,EAAA,QAAA,GACA,EAAA,UAAA,UAAA,EAAA,UACA,EAAA,UAAA,QAAA,EAAA,QACA,EAAA,UAAA,OAAA,WAOA,IANA,IAAA,EAAA,KAAA,KACA,EAAA,EAAA,OACA,EAAA,EAAA,EACA,EAAA,GAAA,EAAA,GAEA,EAAA,GACA,EAAA,EAAA,EAAA,EAAA,IACA,EAAA,GAAA,EAAA,GAGA,IAAA,EAAA,EAAA,EAAA,EAAA,IAAA,CACA,IAAA,EAAA,EAAA,EAAA,GAEA,EAAA,GAAA,GACA,EAAA,GAAA,EAAA,IAAA,GACA,EACA,EAAA,KAAA,IAAA,KAAA,GACA,EAAA,KAAA,IAAA,GAAA,MAAA,GACA,EAAA,KAAA,IAAA,EAAA,MAAA,EACA,EAAA,KAAA,IAAA,GAEA,GAAA,EAAA,EAAA,EAAA,IAAA,IACA,EAAA,GAAA,EAAA,GAAA,IACA,EACA,EAAA,KAAA,IAAA,KAAA,GACA,EAAA,KAAA,IAAA,GAAA,MAAA,GACA,EAAA,KAAA,IAAA,EAAA,MAAA,EACA,EAAA,KAAA,IAAA,IAGA,EAAA,GAAA,EAAA,EAAA,GAAA,EAIA,IADA,IAAA,EAAA,GACA,EAAA,EAAA,EAAA,EAAA,IAAA,CACA,IAAA,EAAA,EAAA,EACA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAGA,EAAA,GADA,EAAA,GAAA,GAAA,EACA,EAGA,EAAA,YAAA,GAAA,EAAA,KAAA,IAAA,KACA,EAAA,YAAA,GAAA,EAAA,KAAA,IAAA,GAAA,MACA,EAAA,YAAA,GAAA,EAAA,KAAA,IAAA,EAAA,MACA,EAAA,YAAA,GAAA,EAAA,KAAA,IAAA,IAIA,KAAA,SAAA,EACA,KAAA,aAAA,EACA,KAAA,gBAAA,GAGA,EAAA,UAAA,gBAAA,SAAA,GAEA,OAAA,EADA,EAAA,EAAA,GACA,KAAA,aAAA,EAAA,QAAA,EAAA,KAAA,KAAA,WAGA,EAAA,UAAA,aAAA,SAAA,GACA,IAAA,EAAA,KAAA,gBAAA,GACA,EAAA,EAAA,YAAA,IAKA,OAJA,EAAA,cAAA,EAAA,GAAA,GACA,EAAA,cAAA,EAAA,GAAA,GACA,EAAA,cAAA,EAAA,GAAA,GACA,EAAA,cAAA,EAAA,GAAA,IACA,GAGA,EAAA,UAAA,aAAA,SAAA,GAIA,IAAA,GAHA,EAAA,EAAA,IAGA,GACA,EAAA,GAAA,EAAA,GACA,EAAA,GAAA,EAEA,IAAA,EAAA,EAAA,EAAA,KAAA,gBAAA,EAAA,YAAA,EAAA,SAAA,KAAA,UACA,EAAA,EAAA,YAAA,IAKA,OAJA,EAAA,cAAA,EAAA,GAAA,GACA,EAAA,cAAA,EAAA,GAAA,GACA,EAAA,cAAA,EAAA,GAAA,GACA,EAAA,cAAA,EAAA,GAAA,IACA,GAGA,EAAA,UAAA,MAAA,WACA,EAAA,KAAA,cACA,EAAA,KAAA,iBACA,EAAA,KAAA,OAGA,OAAA,QAAA,IAAA;;;ACnOA,IAAA,EAAA,QAAA,eAAA,OACA,EAAA,EAAA,MAAA,GAAA,GAEA,SAAA,EAAA,GACA,MAAA,CACA,EAAA,aAAA,GACA,EAAA,aAAA,GACA,EAAA,aAAA,GACA,EAAA,aAAA,KAIA,SAAA,EAAA,GACA,IAAA,EAAA,EAAA,YAAA,IAKA,OAJA,EAAA,cAAA,EAAA,KAAA,EAAA,GACA,EAAA,cAAA,EAAA,KAAA,EAAA,GACA,EAAA,cAAA,EAAA,KAAA,EAAA,GACA,EAAA,cAAA,EAAA,KAAA,EAAA,IACA,EAGA,SAAA,EAAA,GACA,KAAA,EAAA,EACA,KAAA,MAAA,EAAA,MAAA,GAAA,GACA,KAAA,MAAA,EAAA,YAAA,GAKA,EAAA,UAAA,MAAA,SAAA,GAEA,IADA,IAAA,GAAA,IACA,EAAA,EAAA,QACA,KAAA,MAAA,IAAA,EAAA,GAEA,KAAA,aAGA,EAAA,UAAA,UAAA,WAKA,IAJA,IAEA,EAAA,EAFA,EAAA,EAAA,KAAA,GACA,EAAA,CAAA,EAAA,EAAA,EAAA,GAEA,GAAA,IACA,EAAA,KAAA,CAcA,IAbA,IAAA,KAAA,SAAA,EAAA,IAAA,GAAA,EAAA,EAAA,KAGA,EAAA,IAAA,EAAA,GACA,EAAA,IAAA,EAAA,GACA,EAAA,IAAA,EAAA,GACA,EAAA,IAAA,EAAA,IAIA,EAAA,IAAA,EAAA,EAAA,IAGA,EAAA,EAAA,EAAA,EAAA,IACA,EAAA,GAAA,EAAA,KAAA,GAAA,EAAA,EAAA,EAAA,KAAA,GAEA,EAAA,GAAA,EAAA,KAAA,EAGA,IACA,EAAA,GAAA,EAAA,GAAA,KAAA,IAGA,KAAA,MAAA,EAAA,IAGA,EAAA,UAAA,OAAA,SAAA,GAEA,IAAA,EACA,IAFA,KAAA,MAAA,EAAA,OAAA,CAAA,KAAA,MAAA,IAEA,KAAA,MAAA,QAAA,IACA,EAAA,KAAA,MAAA,MAAA,EAAA,IACA,KAAA,MAAA,KAAA,MAAA,MAAA,IACA,KAAA,MAAA,IAIA,EAAA,UAAA,MAAA,SAAA,EAAA,GAMA,OALA,KAAA,MAAA,QACA,KAAA,MAAA,EAAA,OAAA,CAAA,KAAA,MAAA,GAAA,KAGA,KAAA,MAAA,EAAA,CAAA,EAAA,EAAA,EAAA,KACA,KAAA,OAGA,OAAA,QAAA;;;ACxFA,IAAA,EAAA,QAAA,SACA,EAAA,QAAA,eAAA,OACA,EAAA,QAAA,eACA,EAAA,QAAA,YACA,EAAA,QAAA,WACA,EAAA,QAAA,cACA,EAAA,QAAA,YAEA,SAAA,EAAA,EAAA,GACA,IAAA,EAAA,EACA,EAAA,SAAA,EAAA,QAAA,IAGA,IADA,IAAA,EAAA,KAAA,IAAA,EAAA,OAAA,EAAA,QACA,EAAA,EAAA,EAAA,IAAA,EACA,GAAA,EAAA,GAAA,EAAA,GAGA,OAAA,EAGA,SAAA,EAAA,EAAA,EAAA,GACA,GAAA,KAAA,EAAA,OAEA,OADA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,MACA,EAAA,OAAA,CAAA,EAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,MAEA,IAAA,EAAA,IAAA,EAAA,GACA,EAAA,EAAA,OACA,EAAA,EAAA,GACA,EAAA,OAAA,GACA,IACA,EAAA,GAAA,EACA,EAAA,OAAA,EAAA,MAAA,EAAA,KAEA,EAAA,OAAA,EAAA,MAAA,EAAA,IACA,IAAA,EAAA,EAAA,EACA,EAAA,EAAA,MAAA,GACA,EAAA,YAAA,EAAA,EAAA,GACA,EAAA,OAAA,GACA,EAAA,OAAA,EAAA,MACA,IAAA,EAAA,EAAA,KAAA,EAAA,QAEA,OADA,EAAA,GACA,EAEA,SAAA,EAAA,EAAA,EAAA,EAAA,GACA,EAAA,KAAA,MAEA,IAAA,EAAA,EAAA,MAAA,EAAA,GAEA,KAAA,QAAA,IAAA,EAAA,IAAA,GACA,IAAA,EAAA,KAAA,QAAA,aAAA,GACA,KAAA,OAAA,IAAA,EAAA,GACA,EAAA,EAAA,KAAA,EAAA,GAEA,KAAA,MAAA,EAAA,KAAA,GACA,KAAA,OAAA,EAAA,YAAA,GACA,KAAA,UAAA,EAAA,YAAA,GACA,KAAA,SAAA,EACA,KAAA,MAAA,EACA,KAAA,KAAA,EACA,KAAA,MAAA,EAEA,KAAA,SAAA,KACA,KAAA,SAAA,EAGA,EAAA,EAAA,GAEA,EAAA,UAAA,QAAA,SAAA,GACA,IAAA,KAAA,SAAA,KAAA,MAAA,CACA,IAAA,EAAA,GAAA,KAAA,MAAA,GACA,EAAA,KACA,EAAA,EAAA,MAAA,EAAA,GACA,KAAA,OAAA,OAAA,IAIA,KAAA,SAAA,EACA,IAAA,EAAA,KAAA,MAAA,QAAA,KAAA,GAOA,OANA,KAAA,SACA,KAAA,OAAA,OAAA,GAEA,KAAA,OAAA,OAAA,GAEA,KAAA,MAAA,EAAA,OACA,GAGA,EAAA,UAAA,OAAA,WACA,GAAA,KAAA,WAAA,KAAA,SAAA,MAAA,IAAA,MAAA,oDAEA,IAAA,EAAA,EAAA,KAAA,OAAA,MAAA,EAAA,KAAA,MAAA,EAAA,KAAA,MAAA,KAAA,QAAA,aAAA,KAAA,SACA,GAAA,KAAA,UAAA,EAAA,EAAA,KAAA,UAAA,MAAA,IAAA,MAAA,oDAEA,KAAA,SAAA,EACA,KAAA,QAAA,SAGA,EAAA,UAAA,WAAA,WACA,GAAA,KAAA,WAAA,EAAA,SAAA,KAAA,UAAA,MAAA,IAAA,MAAA,mDAEA,OAAA,KAAA,UAGA,EAAA,UAAA,WAAA,SAAA,GACA,IAAA,KAAA,SAAA,MAAA,IAAA,MAAA,mDAEA,KAAA,SAAA,GAGA,EAAA,UAAA,OAAA,SAAA,GACA,GAAA,KAAA,QAAA,MAAA,IAAA,MAAA,8CAEA,KAAA,OAAA,OAAA,GACA,KAAA,OAAA,EAAA,QAGA,OAAA,QAAA;;;ACpHA,IAAA,EAAA,QAAA,SACA,EAAA,QAAA,eAAA,OACA,EAAA,QAAA,eACA,EAAA,QAAA,YAEA,SAAA,EAAA,EAAA,EAAA,EAAA,GACA,EAAA,KAAA,MAEA,KAAA,QAAA,IAAA,EAAA,IAAA,GACA,KAAA,MAAA,EAAA,KAAA,GACA,KAAA,OAAA,EAAA,YAAA,GACA,KAAA,UAAA,EAAA,YAAA,GACA,KAAA,SAAA,EACA,KAAA,MAAA,EAGA,EAAA,EAAA,GAEA,EAAA,UAAA,QAAA,SAAA,GACA,OAAA,KAAA,MAAA,QAAA,KAAA,EAAA,KAAA,WAGA,EAAA,UAAA,OAAA,WACA,KAAA,QAAA,SAGA,OAAA,QAAA;;;AC1BA,IAAA,EAAA,QAAA,eAAA,OACA,EAAA,QAAA,UAGA,SAAA,EAAA,EAAA,EAAA,EAAA,GAEA,GADA,EAAA,SAAA,KAAA,EAAA,EAAA,KAAA,EAAA,WACA,IACA,EAAA,SAAA,KAAA,EAAA,EAAA,KAAA,EAAA,WACA,IAAA,EAAA,QAAA,MAAA,IAAA,WAAA,4CAQA,IALA,IAAA,EAAA,EAAA,EACA,EAAA,EAAA,MAAA,GACA,EAAA,EAAA,MAAA,GAAA,GACA,EAAA,EAAA,MAAA,GAEA,EAAA,GAAA,EAAA,GAAA,CACA,IAAA,EAAA,IAAA,EACA,EAAA,OAAA,GACA,EAAA,OAAA,GACA,GAAA,EAAA,OAAA,GACA,EAAA,EAAA,SAEA,IAAA,EAAA,EAEA,GAAA,EAAA,EAAA,CACA,IAAA,EAAA,EAAA,OAAA,EACA,EAAA,KAAA,IAAA,EAAA,EAAA,QACA,EAAA,KAAA,EAAA,EAAA,EAAA,GACA,GAAA,EAGA,GAAA,EAAA,EAAA,QAAA,EAAA,EAAA,CACA,IAAA,EAAA,EAAA,OAAA,EACA,EAAA,KAAA,IAAA,EAAA,EAAA,OAAA,GACA,EAAA,KAAA,EAAA,EAAA,EAAA,EAAA,GACA,GAAA,GAKA,OADA,EAAA,KAAA,GACA,CAAA,IAAA,EAAA,GAAA,GAGA,OAAA,QAAA;;;AC5CA,IAAA,EAAA,QAAA,WACA,EAAA,QAAA,gBACA,EAAA,QAAA,eAAA,OACA,EAAA,QAAA,kBACA,EAAA,QAAA,eACA,EAAA,QAAA,SACA,EAAA,QAAA,kBACA,EAAA,QAAA,YAEA,SAAA,EAAA,EAAA,EAAA,GACA,EAAA,KAAA,MAEA,KAAA,OAAA,IAAA,EACA,KAAA,QAAA,IAAA,EAAA,IAAA,GACA,KAAA,MAAA,EAAA,KAAA,GACA,KAAA,MAAA,EACA,KAAA,cAAA,EAGA,EAAA,EAAA,GAEA,EAAA,UAAA,QAAA,SAAA,GAEA,IAAA,EACA,EAFA,KAAA,OAAA,IAAA,GAKA,IAFA,IAAA,EAAA,GAEA,EAAA,KAAA,OAAA,OACA,EAAA,KAAA,MAAA,QAAA,KAAA,GACA,EAAA,KAAA,GAGA,OAAA,EAAA,OAAA,IAGA,IAAA,EAAA,EAAA,MAAA,GAAA,IAqBA,SAAA,IACA,KAAA,MAAA,EAAA,YAAA,GA4BA,SAAA,EAAA,EAAA,EAAA,GACA,IAAA,EAAA,EAAA,EAAA,eACA,IAAA,EAAA,MAAA,IAAA,UAAA,sBAGA,GADA,iBAAA,IAAA,EAAA,EAAA,KAAA,IACA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,IAAA,UAAA,sBAAA,EAAA,QAGA,GADA,iBAAA,IAAA,EAAA,EAAA,KAAA,IACA,QAAA,EAAA,MAAA,EAAA,SAAA,EAAA,GAAA,MAAA,IAAA,UAAA,qBAAA,EAAA,QAEA,MAAA,WAAA,EAAA,KACA,IAAA,EAAA,EAAA,OAAA,EAAA,GACA,SAAA,EAAA,KACA,IAAA,EAAA,EAAA,OAAA,EAAA,GAGA,IAAA,EAAA,EAAA,OAAA,EAAA,GAGA,SAAA,EAAA,EAAA,GACA,IAAA,EAAA,EAAA,EAAA,eACA,IAAA,EAAA,MAAA,IAAA,UAAA,sBAEA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,IACA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,IAxEA,EAAA,UAAA,OAAA,WACA,IAAA,EAAA,KAAA,OAAA,QACA,GAAA,KAAA,aAGA,OAFA,EAAA,KAAA,MAAA,QAAA,KAAA,GACA,KAAA,QAAA,QACA,EAGA,IAAA,EAAA,OAAA,GAEA,MADA,KAAA,QAAA,QACA,IAAA,MAAA,sCAIA,EAAA,UAAA,eAAA,SAAA,GAEA,OADA,KAAA,eAAA,EACA,MAOA,EAAA,UAAA,IAAA,SAAA,GACA,KAAA,MAAA,EAAA,OAAA,CAAA,KAAA,MAAA,KAGA,EAAA,UAAA,IAAA,WACA,GAAA,KAAA,MAAA,OAAA,GAAA,CACA,IAAA,EAAA,KAAA,MAAA,MAAA,EAAA,IAEA,OADA,KAAA,MAAA,KAAA,MAAA,MAAA,IACA,EAEA,OAAA,MAGA,EAAA,UAAA,MAAA,WAKA,IAJA,IAAA,EAAA,GAAA,KAAA,MAAA,OACA,EAAA,EAAA,YAAA,GAEA,GAAA,IACA,EAAA,GACA,EAAA,WAAA,EAAA,GAGA,OAAA,EAAA,OAAA,CAAA,KAAA,MAAA,KA8BA,QAAA,eAAA,EACA,QAAA,aAAA;;;ACjHA,IAAA,EAAA,QAAA,gBACA,EAAA,QAAA,eAAA,OACA,EAAA,QAAA,WACA,EAAA,QAAA,kBACA,EAAA,QAAA,eACA,EAAA,QAAA,SACA,EAAA,QAAA,kBACA,EAAA,QAAA,YAEA,SAAA,EAAA,EAAA,EAAA,GACA,EAAA,KAAA,MAEA,KAAA,OAAA,IAAA,EACA,KAAA,WAAA,EACA,KAAA,QAAA,IAAA,EAAA,IAAA,GACA,KAAA,MAAA,EAAA,KAAA,GACA,KAAA,MAAA,EACA,KAAA,cAAA,EA+BA,SAAA,IACA,KAAA,MAAA,EAAA,YAAA,GA8BA,SAAA,EAAA,GACA,IAAA,EAAA,EAAA,IACA,GAAA,EAAA,GAAA,EAAA,GACA,MAAA,IAAA,MAAA,0BAGA,IADA,IAAA,GAAA,IACA,EAAA,GACA,GAAA,EAAA,GAAA,GAAA,MAAA,EACA,MAAA,IAAA,MAAA,0BAGA,GAAA,KAAA,EAEA,OAAA,EAAA,MAAA,EAAA,GAAA,GAGA,SAAA,EAAA,EAAA,EAAA,GACA,IAAA,EAAA,EAAA,EAAA,eACA,IAAA,EAAA,MAAA,IAAA,UAAA,sBAGA,GADA,iBAAA,IAAA,EAAA,EAAA,KAAA,IACA,QAAA,EAAA,MAAA,EAAA,SAAA,EAAA,GAAA,MAAA,IAAA,UAAA,qBAAA,EAAA,QAGA,GADA,iBAAA,IAAA,EAAA,EAAA,KAAA,IACA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,IAAA,UAAA,sBAAA,EAAA,QAEA,MAAA,WAAA,EAAA,KACA,IAAA,EAAA,EAAA,OAAA,EAAA,GAAA,GACA,SAAA,EAAA,KACA,IAAA,EAAA,EAAA,OAAA,EAAA,GAAA,GAGA,IAAA,EAAA,EAAA,OAAA,EAAA,GAGA,SAAA,EAAA,EAAA,GACA,IAAA,EAAA,EAAA,EAAA,eACA,IAAA,EAAA,MAAA,IAAA,UAAA,sBAEA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,IACA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,IAnGA,EAAA,EAAA,GAEA,EAAA,UAAA,QAAA,SAAA,GAEA,IAAA,EACA,EAFA,KAAA,OAAA,IAAA,GAIA,IADA,IAAA,EAAA,GACA,EAAA,KAAA,OAAA,IAAA,KAAA,eACA,EAAA,KAAA,MAAA,QAAA,KAAA,GACA,EAAA,KAAA,GAEA,OAAA,EAAA,OAAA,IAGA,EAAA,UAAA,OAAA,WACA,IAAA,EAAA,KAAA,OAAA,QACA,GAAA,KAAA,aACA,OAAA,EAAA,KAAA,MAAA,QAAA,KAAA,IACA,GAAA,EACA,MAAA,IAAA,MAAA,sCAIA,EAAA,UAAA,eAAA,SAAA,GAEA,OADA,KAAA,eAAA,EACA,MAOA,EAAA,UAAA,IAAA,SAAA,GACA,KAAA,MAAA,EAAA,OAAA,CAAA,KAAA,MAAA,KAGA,EAAA,UAAA,IAAA,SAAA,GACA,IAAA,EACA,GAAA,GACA,GAAA,KAAA,MAAA,OAAA,GAGA,OAFA,EAAA,KAAA,MAAA,MAAA,EAAA,IACA,KAAA,MAAA,KAAA,MAAA,MAAA,IACA,OAGA,GAAA,KAAA,MAAA,QAAA,GAGA,OAFA,EAAA,KAAA,MAAA,MAAA,EAAA,IACA,KAAA,MAAA,KAAA,MAAA,MAAA,IACA,EAIA,OAAA,MAGA,EAAA,UAAA,MAAA,WACA,GAAA,KAAA,MAAA,OAAA,OAAA,KAAA,OA8CA,QAAA,eAAA,EACA,QAAA,iBAAA;;AC3HA,IAAA,EAAA,QAAA,eACA,EAAA,QAAA,eACA,EAAA,QAAA,qBAEA,SAAA,IACA,OAAA,OAAA,KAAA,GAGA,QAAA,aAAA,QAAA,OAAA,EAAA,aACA,QAAA,eAAA,QAAA,SAAA,EAAA,eACA,QAAA,eAAA,QAAA,SAAA,EAAA,eACA,QAAA,iBAAA,QAAA,WAAA,EAAA,iBACA,QAAA,YAAA,QAAA,WAAA;;ACZA,QAAA,WAAA,CACA,IAAA,EACA,GAAA,GAEA,QAAA,WAAA,QAAA,IAAA,CACA,IAAA,EACA,GAAA,GAEA,QAAA,gBAAA,QAAA,KAAA,CACA,IAAA,GACA,GAAA,GAEA,QAAA,YAAA,CACA,IAAA,GACA,GAAA,GAEA,QAAA,eAAA,CACA,IAAA,GACA,GAAA,GAEA,QAAA,WAAA,CACA,IAAA,GACA,GAAA;;ACtBA,IAAA,EAAA,QAAA,kBACA,EAAA,QAAA,0BACA,EAAA,QAAA,wBACA,EAAA,QAAA,wBACA,EAAA,QAAA,kBAEA,SAAA,EAAA,EAAA,GAGA,IAAA,EAAA,EACA,GAHA,EAAA,EAAA,cAGA,EAAA,GACA,EAAA,EAAA,GAAA,IACA,EAAA,EAAA,GAAA,OACA,CAAA,IAAA,EAAA,GAIA,MAAA,IAAA,UAAA,sBAHA,EAAA,EAAA,EAAA,GAAA,IACA,EAAA,EAAA,GAAA,GAKA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GACA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,IAGA,SAAA,EAAA,EAAA,GAGA,IAAA,EAAA,EACA,GAHA,EAAA,EAAA,cAGA,EAAA,GACA,EAAA,EAAA,GAAA,IACA,EAAA,EAAA,GAAA,OACA,CAAA,IAAA,EAAA,GAIA,MAAA,IAAA,UAAA,sBAHA,EAAA,EAAA,EAAA,GAAA,IACA,EAAA,EAAA,GAAA,GAKA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GACA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,IAGA,SAAA,EAAA,EAAA,EAAA,GAEA,GADA,EAAA,EAAA,cACA,EAAA,GAAA,OAAA,EAAA,eAAA,EAAA,EAAA,GACA,GAAA,EAAA,GAAA,OAAA,IAAA,EAAA,CAAA,IAAA,EAAA,GAAA,EAAA,KAAA,IAEA,MAAA,IAAA,UAAA,sBAGA,SAAA,EAAA,EAAA,EAAA,GAEA,GADA,EAAA,EAAA,cACA,EAAA,GAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,GACA,GAAA,EAAA,GAAA,OAAA,IAAA,EAAA,CAAA,IAAA,EAAA,GAAA,EAAA,KAAA,EAAA,SAAA,IAEA,MAAA,IAAA,UAAA,sBAGA,SAAA,IACA,OAAA,OAAA,KAAA,GAAA,OAAA,EAAA,cAGA,QAAA,aAAA,QAAA,OAAA,EACA,QAAA,eAAA,QAAA,SAAA,EACA,QAAA,eAAA,QAAA,SAAA,EACA,QAAA,iBAAA,QAAA,WAAA,EACA,QAAA,YAAA,QAAA,WAAA;;;ACiyGA,IAAA,EAAA,QAAA,UAAA,QAn2GA,SAAA,EAAA,GACA,aAGA,SAAA,EAAA,EAAA,GACA,IAAA,EAAA,MAAA,IAAA,MAAA,GAAA,oBAKA,SAAA,EAAA,EAAA,GACA,EAAA,OAAA,EACA,IAAA,EAAA,aACA,EAAA,UAAA,EAAA,UACA,EAAA,UAAA,IAAA,EACA,EAAA,UAAA,YAAA,EAKA,SAAA,EAAA,EAAA,EAAA,GACA,GAAA,EAAA,KAAA,GACA,OAAA,EAGA,KAAA,SAAA,EACA,KAAA,MAAA,KACA,KAAA,OAAA,EAGA,KAAA,IAAA,KAEA,OAAA,IACA,OAAA,GAAA,OAAA,IACA,EAAA,EACA,EAAA,IAGA,KAAA,MAAA,GAAA,EAAA,GAAA,GAAA,GAAA,OAYA,IAAA,EATA,iBAAA,EACA,EAAA,QAAA,EAEA,EAAA,GAAA,EAGA,EAAA,GAAA,EACA,EAAA,SAAA,GAGA,IACA,EAAA,QAAA,UAAA,OACA,MAAA,IAoIA,SAAA,EAAA,EAAA,EAAA,GAGA,IAFA,IAAA,EAAA,EACA,EAAA,KAAA,IAAA,EAAA,OAAA,GACA,EAAA,EAAA,EAAA,EAAA,IAAA,CACA,IAAA,EAAA,EAAA,WAAA,GAAA,GAEA,IAAA,EAIA,GADA,GAAA,IAAA,GAAA,GACA,EAAA,GAAA,GAGA,GAAA,IAAA,GAAA,GACA,EAAA,GAAA,GAIA,GAAA,EAGA,OAAA,EAiCA,SAAA,EAAA,EAAA,EAAA,EAAA,GAGA,IAFA,IAAA,EAAA,EACA,EAAA,KAAA,IAAA,EAAA,OAAA,GACA,EAAA,EAAA,EAAA,EAAA,IAAA,CACA,IAAA,EAAA,EAAA,WAAA,GAAA,GAEA,GAAA,EAIA,GADA,GAAA,GACA,EAAA,GAAA,GAGA,GAAA,GACA,EAAA,GAAA,GAIA,EAGA,OAAA,EA5MA,EAAA,KAAA,SAAA,GACA,OAAA,aAAA,GAIA,OAAA,GAAA,iBAAA,GACA,EAAA,YAAA,WAAA,EAAA,UAAA,MAAA,QAAA,EAAA,QAGA,EAAA,IAAA,SAAA,EAAA,GACA,OAAA,EAAA,IAAA,GAAA,EAAA,EACA,GAGA,EAAA,IAAA,SAAA,EAAA,GACA,OAAA,EAAA,IAAA,GAAA,EAAA,EACA,GAGA,EAAA,UAAA,MAAA,SAAA,EAAA,EAAA,GACA,GAAA,iBAAA,EACA,OAAA,KAAA,YAAA,EAAA,EAAA,GAGA,GAAA,iBAAA,EACA,OAAA,KAAA,WAAA,EAAA,EAAA,GAGA,QAAA,IACA,EAAA,IAEA,EAAA,KAAA,EAAA,IAAA,GAAA,GAAA,GAAA,IAGA,IAAA,EAAA,EACA,OAFA,EAAA,EAAA,WAAA,QAAA,OAAA,KAEA,IACA,IAGA,KAAA,EACA,KAAA,UAAA,EAAA,GAEA,KAAA,WAAA,EAAA,EAAA,GAGA,MAAA,EAAA,KACA,KAAA,SAAA,GAGA,KAAA,QAEA,OAAA,GAEA,KAAA,WAAA,KAAA,UAAA,EAAA,IAGA,EAAA,UAAA,YAAA,SAAA,EAAA,EAAA,GACA,EAAA,IACA,KAAA,SAAA,EACA,GAAA,GAEA,EAAA,UACA,KAAA,MAAA,CAAA,SAAA,GACA,KAAA,OAAA,GACA,EAAA,kBACA,KAAA,MAAA,CACA,SAAA,EACA,EAAA,SAAA,UAEA,KAAA,OAAA,IAEA,EAAA,EAAA,kBACA,KAAA,MAAA,CACA,SAAA,EACA,EAAA,SAAA,SACA,GAEA,KAAA,OAAA,GAGA,OAAA,GAGA,KAAA,WAAA,KAAA,UAAA,EAAA,IAGA,EAAA,UAAA,WAAA,SAAA,EAAA,EAAA,GAGA,GADA,EAAA,iBAAA,EAAA,QACA,EAAA,QAAA,EAGA,OAFA,KAAA,MAAA,CAAA,GACA,KAAA,OAAA,EACA,KAGA,KAAA,OAAA,KAAA,KAAA,EAAA,OAAA,GACA,KAAA,MAAA,IAAA,MAAA,KAAA,QACA,IAAA,IAAA,EAAA,EAAA,EAAA,KAAA,OAAA,IACA,KAAA,MAAA,GAAA,EAGA,IAAA,EAAA,EACA,EAAA,EACA,GAAA,OAAA,EACA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EACA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,GACA,KAAA,MAAA,IAAA,GAAA,EAAA,SACA,KAAA,MAAA,EAAA,GAAA,IAAA,GAAA,EAAA,UACA,GAAA,KACA,KACA,GAAA,GACA,UAGA,GAAA,OAAA,EACA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,OAAA,GAAA,EACA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,GACA,KAAA,MAAA,IAAA,GAAA,EAAA,SACA,KAAA,MAAA,EAAA,GAAA,IAAA,GAAA,EAAA,UACA,GAAA,KACA,KACA,GAAA,GACA,KAIA,OAAA,KAAA,SA2BA,EAAA,UAAA,UAAA,SAAA,EAAA,GAEA,KAAA,OAAA,KAAA,MAAA,EAAA,OAAA,GAAA,GACA,KAAA,MAAA,IAAA,MAAA,KAAA,QACA,IAAA,IAAA,EAAA,EAAA,EAAA,KAAA,OAAA,IACA,KAAA,MAAA,GAAA,EAGA,IAAA,EAAA,EAEA,EAAA,EACA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,GACA,KAAA,MAAA,IAAA,GAAA,EAAA,SAEA,KAAA,MAAA,EAAA,IAAA,IAAA,GAAA,EAAA,SACA,GAAA,KACA,KACA,GAAA,GACA,KAGA,EAAA,IAAA,IACA,EAAA,EAAA,EAAA,EAAA,EAAA,GACA,KAAA,MAAA,IAAA,GAAA,EAAA,SACA,KAAA,MAAA,EAAA,IAAA,IAAA,GAAA,EAAA,SAEA,KAAA,SA2BA,EAAA,UAAA,WAAA,SAAA,EAAA,EAAA,GAEA,KAAA,MAAA,CAAA,GACA,KAAA,OAAA,EAGA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,GAAA,SAAA,GAAA,EACA,IAEA,IACA,EAAA,EAAA,EAAA,EAOA,IALA,IAAA,EAAA,EAAA,OAAA,EACA,EAAA,EAAA,EACA,EAAA,KAAA,IAAA,EAAA,EAAA,GAAA,EAEA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,GAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAEA,KAAA,MAAA,GACA,KAAA,MAAA,GAAA,EAAA,SACA,KAAA,MAAA,IAAA,EAEA,KAAA,OAAA,GAIA,GAAA,IAAA,EAAA,CACA,IAAA,EAAA,EAGA,IAFA,EAAA,EAAA,EAAA,EAAA,EAAA,OAAA,GAEA,EAAA,EAAA,EAAA,EAAA,IACA,GAAA,EAGA,KAAA,MAAA,GACA,KAAA,MAAA,GAAA,EAAA,SACA,KAAA,MAAA,IAAA,EAEA,KAAA,OAAA,KAKA,EAAA,UAAA,KAAA,SAAA,GACA,EAAA,MAAA,IAAA,MAAA,KAAA,QACA,IAAA,IAAA,EAAA,EAAA,EAAA,KAAA,OAAA,IACA,EAAA,MAAA,GAAA,KAAA,MAAA,GAEA,EAAA,OAAA,KAAA,OACA,EAAA,SAAA,KAAA,SACA,EAAA,IAAA,KAAA,KAGA,EAAA,UAAA,MAAA,WACA,IAAA,EAAA,IAAA,EAAA,MAEA,OADA,KAAA,KAAA,GACA,GAGA,EAAA,UAAA,QAAA,SAAA,GACA,KAAA,KAAA,OAAA,GACA,KAAA,MAAA,KAAA,UAAA,EAEA,OAAA,MAIA,EAAA,UAAA,MAAA,WACA,KAAA,KAAA,OAAA,GAAA,IAAA,KAAA,MAAA,KAAA,OAAA,IACA,KAAA,SAEA,OAAA,KAAA,aAGA,EAAA,UAAA,UAAA,WAKA,OAHA,IAAA,KAAA,QAAA,IAAA,KAAA,MAAA,KACA,KAAA,SAAA,GAEA,MAGA,EAAA,UAAA,QAAA,WACA,OAAA,KAAA,IAAA,UAAA,SAAA,KAAA,SAAA,IAAA,KAiCA,IAAA,EAAA,CACA,GACA,IACA,KACA,MACA,OACA,QACA,SACA,UACA,WACA,YACA,aACA,cACA,eACA,gBACA,iBACA,kBACA,mBACA,oBACA,qBACA,sBACA,uBACA,wBACA,yBACA,0BACA,2BACA,6BAGA,EAAA,CACA,EAAA,EACA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAGA,EAAA,CACA,EAAA,EACA,SAAA,SAAA,SAAA,SAAA,SAAA,SAAA,SACA,SAAA,IAAA,SAAA,SAAA,SAAA,QAAA,SACA,SAAA,SAAA,SAAA,SAAA,KAAA,QAAA,QACA,QAAA,QAAA,QAAA,SAAA,SAAA,SAAA,SACA,MAAA,SAAA,SAAA,SAAA,SAAA,SAAA,UAsjBA,SAAA,EAAA,EAAA,EAAA,GACA,EAAA,SAAA,EAAA,SAAA,EAAA,SACA,IAAA,EAAA,EAAA,OAAA,EAAA,OAAA,EACA,EAAA,OAAA,EACA,EAAA,EAAA,EAAA,EAGA,IAAA,EAAA,EAAA,EAAA,MAAA,GACA,EAAA,EAAA,EAAA,MAAA,GACA,EAAA,EAAA,EAEA,EAAA,SAAA,EACA,EAAA,EAAA,SAAA,EACA,EAAA,MAAA,GAAA,EAEA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,IAAA,CAMA,IAHA,IAAA,EAAA,IAAA,GACA,EAAA,SAAA,EACA,EAAA,KAAA,IAAA,EAAA,EAAA,OAAA,GACA,EAAA,KAAA,IAAA,EAAA,EAAA,EAAA,OAAA,GAAA,GAAA,EAAA,IAAA,CACA,IAAA,EAAA,EAAA,EAAA,EAIA,IADA,GAFA,EAAA,EAAA,EAAA,MAAA,KACA,EAAA,EAAA,EAAA,MAAA,IACA,GACA,SAAA,EACA,EAAA,SAAA,EAEA,EAAA,MAAA,GAAA,EAAA,EACA,EAAA,EAAA,EAQA,OANA,IAAA,EACA,EAAA,MAAA,GAAA,EAAA,EAEA,EAAA,SAGA,EAAA,QAzlBA,EAAA,UAAA,SAAA,SAAA,EAAA,GAIA,IAAA,EACA,GAHA,EAAA,EAAA,GAAA,EAGA,MAJA,EAAA,GAAA,KAIA,QAAA,EAAA,CACA,EAAA,GAGA,IAFA,IAAA,EAAA,EACA,EAAA,EACA,EAAA,EAAA,EAAA,KAAA,OAAA,IAAA,CACA,IAAA,EAAA,KAAA,MAAA,GACA,GAAA,UAAA,GAAA,EAAA,IAAA,SAAA,IAGA,EADA,KADA,EAAA,IAAA,GAAA,EAAA,WACA,IAAA,KAAA,OAAA,EACA,EAAA,EAAA,EAAA,QAAA,EAAA,EAEA,EAAA,GAEA,GAAA,IACA,KACA,GAAA,GACA,KAMA,IAHA,IAAA,IACA,EAAA,EAAA,SAAA,IAAA,GAEA,EAAA,OAAA,GAAA,GACA,EAAA,IAAA,EAKA,OAHA,IAAA,KAAA,WACA,EAAA,IAAA,GAEA,EAGA,GAAA,KAAA,EAAA,IAAA,GAAA,GAAA,GAAA,GAAA,CAEA,IAAA,EAAA,EAAA,GAEA,EAAA,EAAA,GACA,EAAA,GACA,IAAA,EAAA,KAAA,QAEA,IADA,EAAA,SAAA,GACA,EAAA,UAAA,CACA,IAAA,EAAA,EAAA,KAAA,GAAA,SAAA,GAMA,GALA,EAAA,EAAA,MAAA,IAEA,SAGA,EAAA,EAFA,EAAA,EAAA,EAAA,QAAA,EAAA,EAQA,IAHA,KAAA,WACA,EAAA,IAAA,GAEA,EAAA,OAAA,GAAA,GACA,EAAA,IAAA,EAKA,OAHA,IAAA,KAAA,WACA,EAAA,IAAA,GAEA,EAGA,GAAA,EAAA,oCAGA,EAAA,UAAA,SAAA,WACA,IAAA,EAAA,KAAA,MAAA,GASA,OARA,IAAA,KAAA,OACA,GAAA,SAAA,KAAA,MAAA,GACA,IAAA,KAAA,QAAA,IAAA,KAAA,MAAA,GAEA,GAAA,iBAAA,SAAA,KAAA,MAAA,GACA,KAAA,OAAA,GACA,GAAA,EAAA,8CAEA,IAAA,KAAA,UAAA,EAAA,GAGA,EAAA,UAAA,OAAA,WACA,OAAA,KAAA,SAAA,KAGA,EAAA,UAAA,SAAA,SAAA,EAAA,GAEA,OADA,OAAA,IAAA,GACA,KAAA,YAAA,EAAA,EAAA,IAGA,EAAA,UAAA,QAAA,SAAA,EAAA,GACA,OAAA,KAAA,YAAA,MAAA,EAAA,IAGA,EAAA,UAAA,YAAA,SAAA,EAAA,EAAA,GACA,IAAA,EAAA,KAAA,aACA,EAAA,GAAA,KAAA,IAAA,EAAA,GACA,EAAA,GAAA,EAAA,yCACA,EAAA,EAAA,EAAA,+BAEA,KAAA,QACA,IAGA,EAAA,EAHA,EAAA,OAAA,EACA,EAAA,IAAA,EAAA,GAGA,EAAA,KAAA,QACA,GAAA,EAYA,CACA,IAAA,EAAA,GAAA,EAAA,SAAA,IACA,EAAA,EAAA,MAAA,KACA,EAAA,OAAA,GAEA,EAAA,GAAA,EAGA,KAAA,EAAA,EAAA,IACA,EAAA,GAAA,MArBA,CAEA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IACA,EAAA,GAAA,EAGA,IAAA,EAAA,GAAA,EAAA,SAAA,IACA,EAAA,EAAA,MAAA,KACA,EAAA,OAAA,GAEA,EAAA,EAAA,EAAA,GAAA,EAeA,OAAA,GAGA,KAAA,MACA,EAAA,UAAA,WAAA,SAAA,GACA,OAAA,GAAA,KAAA,MAAA,IAGA,EAAA,UAAA,WAAA,SAAA,GACA,IAAA,EAAA,EACA,EAAA,EAiBA,OAhBA,GAAA,OACA,GAAA,GACA,KAAA,IAEA,GAAA,KACA,GAAA,EACA,KAAA,GAEA,GAAA,IACA,GAAA,EACA,KAAA,GAEA,GAAA,IACA,GAAA,EACA,KAAA,GAEA,EAAA,GAIA,EAAA,UAAA,UAAA,SAAA,GAEA,GAAA,IAAA,EAAA,OAAA,GAEA,IAAA,EAAA,EACA,EAAA,EAoBA,OAnBA,IAAA,KAAA,KACA,GAAA,GACA,KAAA,IAEA,IAAA,IAAA,KACA,GAAA,EACA,KAAA,GAEA,IAAA,GAAA,KACA,GAAA,EACA,KAAA,GAEA,IAAA,EAAA,KACA,GAAA,EACA,KAAA,GAEA,IAAA,EAAA,IACA,IAEA,GAIA,EAAA,UAAA,UAAA,WACA,IAAA,EAAA,KAAA,MAAA,KAAA,OAAA,GACA,EAAA,KAAA,WAAA,GACA,OAAA,IAAA,KAAA,OAAA,GAAA,GAiBA,EAAA,UAAA,SAAA,WACA,GAAA,KAAA,SAAA,OAAA,EAGA,IADA,IAAA,EAAA,EACA,EAAA,EAAA,EAAA,KAAA,OAAA,IAAA,CACA,IAAA,EAAA,KAAA,UAAA,KAAA,MAAA,IAEA,GADA,GAAA,EACA,KAAA,EAAA,MAEA,OAAA,GAGA,EAAA,UAAA,WAAA,WACA,OAAA,KAAA,KAAA,KAAA,YAAA,IAGA,EAAA,UAAA,OAAA,SAAA,GACA,OAAA,IAAA,KAAA,SACA,KAAA,MAAA,MAAA,GAAA,MAAA,GAEA,KAAA,SAGA,EAAA,UAAA,SAAA,SAAA,GACA,OAAA,KAAA,MAAA,EAAA,GACA,KAAA,KAAA,GAAA,MAAA,GAAA,OAEA,KAAA,SAGA,EAAA,UAAA,MAAA,WACA,OAAA,IAAA,KAAA,UAIA,EAAA,UAAA,IAAA,WACA,OAAA,KAAA,QAAA,QAGA,EAAA,UAAA,KAAA,WAKA,OAJA,KAAA,WACA,KAAA,UAAA,GAGA,MAIA,EAAA,UAAA,KAAA,SAAA,GACA,KAAA,KAAA,OAAA,EAAA,QACA,KAAA,MAAA,KAAA,UAAA,EAGA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,KAAA,MAAA,GAAA,KAAA,MAAA,GAAA,EAAA,MAAA,GAGA,OAAA,KAAA,SAGA,EAAA,UAAA,IAAA,SAAA,GAEA,OADA,EAAA,IAAA,KAAA,SAAA,EAAA,WACA,KAAA,KAAA,IAIA,EAAA,UAAA,GAAA,SAAA,GACA,OAAA,KAAA,OAAA,EAAA,OAAA,KAAA,QAAA,IAAA,GACA,EAAA,QAAA,IAAA,OAGA,EAAA,UAAA,IAAA,SAAA,GACA,OAAA,KAAA,OAAA,EAAA,OAAA,KAAA,QAAA,KAAA,GACA,EAAA,QAAA,KAAA,OAIA,EAAA,UAAA,MAAA,SAAA,GAEA,IAAA,EAEA,EADA,KAAA,OAAA,EAAA,OACA,EAEA,KAGA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,KAAA,MAAA,GAAA,KAAA,MAAA,GAAA,EAAA,MAAA,GAKA,OAFA,KAAA,OAAA,EAAA,OAEA,KAAA,SAGA,EAAA,UAAA,KAAA,SAAA,GAEA,OADA,EAAA,IAAA,KAAA,SAAA,EAAA,WACA,KAAA,MAAA,IAIA,EAAA,UAAA,IAAA,SAAA,GACA,OAAA,KAAA,OAAA,EAAA,OAAA,KAAA,QAAA,KAAA,GACA,EAAA,QAAA,KAAA,OAGA,EAAA,UAAA,KAAA,SAAA,GACA,OAAA,KAAA,OAAA,EAAA,OAAA,KAAA,QAAA,MAAA,GACA,EAAA,QAAA,MAAA,OAIA,EAAA,UAAA,MAAA,SAAA,GAEA,IAAA,EACA,EACA,KAAA,OAAA,EAAA,QACA,EAAA,KACA,EAAA,IAEA,EAAA,EACA,EAAA,MAGA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,KAAA,MAAA,GAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GAGA,GAAA,OAAA,EACA,KAAA,EAAA,EAAA,OAAA,IACA,KAAA,MAAA,GAAA,EAAA,MAAA,GAMA,OAFA,KAAA,OAAA,EAAA,OAEA,KAAA,SAGA,EAAA,UAAA,KAAA,SAAA,GAEA,OADA,EAAA,IAAA,KAAA,SAAA,EAAA,WACA,KAAA,MAAA,IAIA,EAAA,UAAA,IAAA,SAAA,GACA,OAAA,KAAA,OAAA,EAAA,OAAA,KAAA,QAAA,KAAA,GACA,EAAA,QAAA,KAAA,OAGA,EAAA,UAAA,KAAA,SAAA,GACA,OAAA,KAAA,OAAA,EAAA,OAAA,KAAA,QAAA,MAAA,GACA,EAAA,QAAA,MAAA,OAIA,EAAA,UAAA,MAAA,SAAA,GACA,EAAA,iBAAA,GAAA,GAAA,GAEA,IAAA,EAAA,EAAA,KAAA,KAAA,EAAA,IACA,EAAA,EAAA,GAGA,KAAA,QAAA,GAEA,EAAA,GACA,IAIA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,IACA,KAAA,MAAA,GAAA,UAAA,KAAA,MAAA,GASA,OALA,EAAA,IACA,KAAA,MAAA,IAAA,KAAA,MAAA,GAAA,UAAA,GAAA,GAIA,KAAA,SAGA,EAAA,UAAA,KAAA,SAAA,GACA,OAAA,KAAA,QAAA,MAAA,IAIA,EAAA,UAAA,KAAA,SAAA,EAAA,GACA,EAAA,iBAAA,GAAA,GAAA,GAEA,IAAA,EAAA,EAAA,GAAA,EACA,EAAA,EAAA,GAUA,OARA,KAAA,QAAA,EAAA,GAGA,KAAA,MAAA,GADA,EACA,KAAA,MAAA,GAAA,GAAA,EAEA,KAAA,MAAA,KAAA,GAAA,GAGA,KAAA,SAIA,EAAA,UAAA,KAAA,SAAA,GACA,IAAA,EAkBA,EAAA,EAfA,GAAA,IAAA,KAAA,UAAA,IAAA,EAAA,SAIA,OAHA,KAAA,SAAA,EACA,EAAA,KAAA,KAAA,GACA,KAAA,UAAA,EACA,KAAA,YAGA,GAAA,IAAA,KAAA,UAAA,IAAA,EAAA,SAIA,OAHA,EAAA,SAAA,EACA,EAAA,KAAA,KAAA,GACA,EAAA,SAAA,EACA,EAAA,YAKA,KAAA,OAAA,EAAA,QACA,EAAA,KACA,EAAA,IAEA,EAAA,EACA,EAAA,MAIA,IADA,IAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,GAAA,EAAA,EAAA,MAAA,KAAA,EAAA,EAAA,MAAA,IAAA,EACA,KAAA,MAAA,GAAA,SAAA,EACA,EAAA,IAAA,GAEA,KAAA,IAAA,GAAA,EAAA,EAAA,OAAA,IACA,GAAA,EAAA,EAAA,MAAA,IAAA,EACA,KAAA,MAAA,GAAA,SAAA,EACA,EAAA,IAAA,GAIA,GADA,KAAA,OAAA,EAAA,OACA,IAAA,EACA,KAAA,MAAA,KAAA,QAAA,EACA,KAAA,cAEA,GAAA,IAAA,KACA,KAAA,EAAA,EAAA,OAAA,IACA,KAAA,MAAA,GAAA,EAAA,MAAA,GAIA,OAAA,MAIA,EAAA,UAAA,IAAA,SAAA,GACA,IAAA,EACA,OAAA,IAAA,EAAA,UAAA,IAAA,KAAA,UACA,EAAA,SAAA,EACA,EAAA,KAAA,IAAA,GACA,EAAA,UAAA,EACA,GACA,IAAA,EAAA,UAAA,IAAA,KAAA,UACA,KAAA,SAAA,EACA,EAAA,EAAA,IAAA,MACA,KAAA,SAAA,EACA,GAGA,KAAA,OAAA,EAAA,OAAA,KAAA,QAAA,KAAA,GAEA,EAAA,QAAA,KAAA,OAIA,EAAA,UAAA,KAAA,SAAA,GAEA,GAAA,IAAA,EAAA,SAAA,CACA,EAAA,SAAA,EACA,IAAA,EAAA,KAAA,KAAA,GAEA,OADA,EAAA,SAAA,EACA,EAAA,YAGA,GAAA,IAAA,KAAA,SAIA,OAHA,KAAA,SAAA,EACA,KAAA,KAAA,GACA,KAAA,SAAA,EACA,KAAA,YAIA,IAWA,EAAA,EAXA,EAAA,KAAA,IAAA,GAGA,GAAA,IAAA,EAIA,OAHA,KAAA,SAAA,EACA,KAAA,OAAA,EACA,KAAA,MAAA,GAAA,EACA,KAKA,EAAA,GACA,EAAA,KACA,EAAA,IAEA,EAAA,EACA,EAAA,MAIA,IADA,IAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,OAAA,IAEA,GADA,GAAA,EAAA,EAAA,MAAA,KAAA,EAAA,EAAA,MAAA,IAAA,IACA,GACA,KAAA,MAAA,GAAA,SAAA,EAEA,KAAA,IAAA,GAAA,EAAA,EAAA,OAAA,IAEA,GADA,GAAA,EAAA,EAAA,MAAA,IAAA,IACA,GACA,KAAA,MAAA,GAAA,SAAA,EAIA,GAAA,IAAA,GAAA,EAAA,EAAA,QAAA,IAAA,KACA,KAAA,EAAA,EAAA,OAAA,IACA,KAAA,MAAA,GAAA,EAAA,MAAA,GAUA,OANA,KAAA,OAAA,KAAA,IAAA,KAAA,OAAA,GAEA,IAAA,OACA,KAAA,SAAA,GAGA,KAAA,SAIA,EAAA,UAAA,IAAA,SAAA,GACA,OAAA,KAAA,QAAA,KAAA,IA+CA,IAAA,EAAA,SAAA,EAAA,EAAA,GACA,IAIA,EACA,EACA,EANA,EAAA,EAAA,MACA,EAAA,EAAA,MACA,EAAA,EAAA,MACA,EAAA,EAIA,EAAA,EAAA,EAAA,GACA,EAAA,KAAA,EACA,EAAA,IAAA,GACA,EAAA,EAAA,EAAA,GACA,EAAA,KAAA,EACA,EAAA,IAAA,GACA,EAAA,EAAA,EAAA,GACA,EAAA,KAAA,EACA,EAAA,IAAA,GACA,EAAA,EAAA,EAAA,GACA,EAAA,KAAA,EACA,EAAA,IAAA,GACA,EAAA,EAAA,EAAA,GACA,EAAA,KAAA,EACA,EAAA,IAAA,GACA,EAAA,EAAA,EAAA,GACA,EAAA,KAAA,EACA,EAAA,IAAA,GACA,EAAA,EAAA,EAAA,GACA,EAAA,KAAA,EACA,EAAA,IAAA,GACA,EAAA,EAAA,EAAA,GACA,EAAA,KAAA,EACA,EAAA,IAAA,GACA,EAAA,EAAA,EAAA,GACA,EAAA,KAAA,EACA,EAAA,IAAA,GACA,EAAA,EAAA,EAAA,GACA,EAAA,KAAA,EACA,EAAA,IAAA,GACA,EAAA,EAAA,EAAA,GACA,EAAA,KAAA,EACA,EAAA,IAAA,GACA,EAAA,EAAA,EAAA,GACA,EAAA,KAAA,EACA,EAAA,IAAA,GACA,EAAA,EAAA,EAAA,GACA,EAAA,KAAA,EACA,EAAA,IAAA,GACA,EAAA,EAAA,EAAA,GACA,EAAA,KAAA,EACA,EAAA,IAAA,GACA,EAAA,EAAA,EAAA,GACA,EAAA,KAAA,EACA,GAAA,IAAA,GACA,GAAA,EAAA,EAAA,GACA,GAAA,KAAA,GACA,GAAA,KAAA,GACA,GAAA,EAAA,EAAA,GACA,GAAA,KAAA,GACA,GAAA,KAAA,GACA,GAAA,EAAA,EAAA,GACA,GAAA,KAAA,GACA,GAAA,KAAA,GACA,GAAA,EAAA,EAAA,GACA,GAAA,KAAA,GACA,GAAA,KAAA,GACA,GAAA,EAAA,EAAA,GACA,GAAA,KAAA,GACA,GAAA,KAAA,GAEA,EAAA,SAAA,EAAA,SAAA,EAAA,SACA,EAAA,OAAA,GAMA,IAAA,IAAA,GAJA,EAAA,KAAA,KAAA,EAAA,IAIA,KAAA,MAFA,GADA,EAAA,KAAA,KAAA,EAAA,IACA,KAAA,KAAA,EAAA,GAAA,KAEA,IAAA,EACA,IAFA,EAAA,KAAA,KAAA,EAAA,KAEA,IAAA,IAAA,IAAA,KAAA,IAAA,EACA,IAAA,SAEA,EAAA,KAAA,KAAA,EAAA,GAEA,GADA,EAAA,KAAA,KAAA,EAAA,IACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,KAAA,KAAA,EAAA,GAKA,IAAA,IAAA,GAJA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,GAIA,KAAA,MAFA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,GACA,KAAA,KAAA,EAAA,GAAA,KAEA,IAAA,EACA,IAFA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,IAEA,IAAA,IAAA,IAAA,KAAA,IAAA,EACA,IAAA,SAEA,EAAA,KAAA,KAAA,EAAA,GAEA,GADA,EAAA,KAAA,KAAA,EAAA,IACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,KAAA,KAAA,EAAA,GACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,GACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EAKA,IAAA,IAAA,GAJA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,GAIA,KAAA,MAFA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,GACA,KAAA,KAAA,EAAA,GAAA,KAEA,IAAA,EACA,IAFA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,IAEA,IAAA,IAAA,IAAA,KAAA,IAAA,EACA,IAAA,SAEA,EAAA,KAAA,KAAA,EAAA,GAEA,GADA,EAAA,KAAA,KAAA,EAAA,IACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,KAAA,KAAA,EAAA,GACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,GACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,GACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EAKA,IAAA,IAAA,GAJA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,GAIA,KAAA,MAFA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,GACA,KAAA,KAAA,EAAA,GAAA,KAEA,IAAA,EACA,IAFA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,IAEA,IAAA,IAAA,IAAA,KAAA,IAAA,EACA,IAAA,SAEA,EAAA,KAAA,KAAA,EAAA,GAEA,GADA,EAAA,KAAA,KAAA,EAAA,IACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,KAAA,KAAA,EAAA,GACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,GACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,GACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,GACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EAKA,IAAA,IAAA,GAJA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,GAIA,KAAA,MAFA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,GAAA,KAEA,IAAA,EACA,IAFA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,IAEA,IAAA,IAAA,IAAA,KAAA,IAAA,EACA,IAAA,SAEA,EAAA,KAAA,KAAA,EAAA,GAEA,GADA,EAAA,KAAA,KAAA,EAAA,IACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,KAAA,KAAA,EAAA,GACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,GACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,GACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,GACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAKA,IAAA,IAAA,GAJA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GAIA,KAAA,MAFA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,KAEA,IAAA,EACA,IAFA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,IAEA,IAAA,IAAA,IAAA,KAAA,IAAA,EACA,IAAA,SAEA,EAAA,KAAA,KAAA,EAAA,GAEA,GADA,EAAA,KAAA,KAAA,EAAA,IACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,KAAA,KAAA,EAAA,GACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,GACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,GACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,GACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAKA,IAAA,IAAA,GAJA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GAIA,KAAA,MAFA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,KAEA,IAAA,EACA,IAFA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,IAEA,IAAA,IAAA,IAAA,KAAA,IAAA,EACA,IAAA,SAEA,EAAA,KAAA,KAAA,EAAA,GAEA,GADA,EAAA,KAAA,KAAA,EAAA,IACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,KAAA,KAAA,EAAA,GACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,GACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,GACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,GACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAKA,IAAA,IAAA,GAJA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GAIA,KAAA,MAFA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,KAEA,IAAA,EACA,IAFA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,IAEA,IAAA,IAAA,IAAA,KAAA,IAAA,EACA,IAAA,SAEA,EAAA,KAAA,KAAA,EAAA,GAEA,GADA,EAAA,KAAA,KAAA,EAAA,IACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,KAAA,KAAA,EAAA,GACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,GACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,GACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,GACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAKA,IAAA,IAAA,GAJA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GAIA,KAAA,MAFA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,KAEA,IAAA,EACA,IAFA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,IAEA,IAAA,IAAA,IAAA,KAAA,IAAA,EACA,IAAA,SAEA,EAAA,KAAA,KAAA,EAAA,GAEA,GADA,EAAA,KAAA,KAAA,EAAA,IACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,KAAA,KAAA,EAAA,GACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,GACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,GACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,GACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAKA,IAAA,IAAA,GAJA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GAIA,KAAA,MAFA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,KAEA,IAAA,EACA,IAFA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,IAEA,IAAA,IAAA,IAAA,KAAA,IAAA,EACA,IAAA,SAEA,EAAA,KAAA,KAAA,EAAA,GAEA,GADA,EAAA,KAAA,KAAA,EAAA,IACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,KAAA,KAAA,EAAA,GACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,GACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,GACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAKA,IAAA,IAAA,GAJA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GAIA,KAAA,MAFA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,KAEA,IAAA,EACA,IAFA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,IAEA,IAAA,IAAA,IAAA,KAAA,IAAA,EACA,IAAA,SAEA,EAAA,KAAA,KAAA,EAAA,GAEA,GADA,EAAA,KAAA,KAAA,EAAA,IACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,KAAA,KAAA,EAAA,GACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,GACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAKA,IAAA,IAAA,GAJA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GAIA,KAAA,MAFA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,KAEA,IAAA,EACA,IAFA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,IAEA,IAAA,IAAA,IAAA,KAAA,IAAA,EACA,IAAA,SAEA,EAAA,KAAA,KAAA,EAAA,GAEA,GADA,EAAA,KAAA,KAAA,EAAA,IACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,KAAA,KAAA,EAAA,GACA,EAAA,EAAA,KAAA,KAAA,EAAA,GAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAKA,IAAA,IAAA,GAJA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GAIA,KAAA,MAFA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,KAEA,IAAA,EACA,IAFA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,IAEA,IAAA,IAAA,IAAA,KAAA,IAAA,EACA,IAAA,SAEA,EAAA,KAAA,KAAA,EAAA,GAEA,GADA,EAAA,KAAA,KAAA,EAAA,KACA,KAAA,KAAA,EAAA,GAAA,EACA,EAAA,KAAA,KAAA,EAAA,IACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAKA,IAAA,IAAA,GAJA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GAIA,KAAA,MAFA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,KAEA,IAAA,EACA,IAFA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,IAEA,IAAA,IAAA,IAAA,KAAA,IAAA,EACA,IAAA,SAEA,EAAA,KAAA,KAAA,EAAA,IAEA,GADA,EAAA,KAAA,KAAA,EAAA,KACA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,KAAA,KAAA,EAAA,IACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAKA,IAAA,IAAA,GAJA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GAIA,KAAA,MAFA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,KAEA,IAAA,EACA,IAFA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,IAEA,IAAA,IAAA,IAAA,KAAA,IAAA,EACA,IAAA,SAEA,EAAA,KAAA,KAAA,EAAA,IAEA,GADA,EAAA,KAAA,KAAA,EAAA,KACA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,KAAA,KAAA,EAAA,IACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAKA,IAAA,IAAA,GAJA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GAIA,KAAA,MAFA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,KAEA,IAAA,EACA,IAFA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,IAEA,IAAA,IAAA,IAAA,KAAA,IAAA,EACA,IAAA,SAEA,EAAA,KAAA,KAAA,EAAA,IAEA,GADA,EAAA,KAAA,KAAA,EAAA,KACA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,KAAA,KAAA,EAAA,IACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAEA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAKA,IAAA,IAAA,GAJA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GAIA,KAAA,MAFA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,KAEA,IAAA,EACA,IAFA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,IAEA,IAAA,IAAA,IAAA,KAAA,IAAA,EACA,IAAA,SAEA,EAAA,KAAA,KAAA,EAAA,IAEA,GADA,EAAA,KAAA,KAAA,EAAA,KACA,KAAA,KAAA,EAAA,IAAA,EACA,EAAA,KAAA,KAAA,EAAA,IAKA,IAAA,IAAA,GAJA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GAIA,KAAA,MAFA,GADA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,GACA,KAAA,KAAA,EAAA,IAAA,KAEA,IAAA,EACA,IAFA,EAAA,EAAA,KAAA,KAAA,EAAA,IAAA,IAEA,IAAA,IAAA,IAAA,KAAA,IAAA,EACA,IAAA,SAMA,IAAA,IAAA,GAJA,EAAA,KAAA,KAAA,EAAA,KAIA,KAAA,MAFA,GADA,EAAA,KAAA,KAAA,EAAA,KACA,KAAA,KAAA,EAAA,IAAA,KAEA,IAAA,EA0BA,OAzBA,IAFA,EAAA,KAAA,KAAA,EAAA,MAEA,IAAA,IAAA,IAAA,KAAA,IAAA,EACA,IAAA,SACA,EAAA,GAAA,GACA,EAAA,GAAA,GACA,EAAA,GAAA,GACA,EAAA,GAAA,GACA,EAAA,GAAA,GACA,EAAA,GAAA,GACA,EAAA,GAAA,GACA,EAAA,GAAA,GACA,EAAA,GAAA,GACA,EAAA,GAAA,GACA,EAAA,IAAA,GACA,EAAA,IAAA,GACA,EAAA,IAAA,GACA,EAAA,IAAA,GACA,EAAA,IAAA,GACA,EAAA,IAAA,GACA,EAAA,IAAA,GACA,EAAA,IAAA,GACA,EAAA,IAAA,GACA,IAAA,IACA,EAAA,IAAA,EACA,EAAA,UAEA,GAiDA,SAAA,EAAA,EAAA,EAAA,GAEA,OADA,IAAA,GACA,KAAA,EAAA,EAAA,GAsBA,SAAA,EAAA,EAAA,GACA,KAAA,EAAA,EACA,KAAA,EAAA,EAvEA,KAAA,OACA,EAAA,GAiDA,EAAA,UAAA,MAAA,SAAA,EAAA,GACA,IACA,EAAA,KAAA,OAAA,EAAA,OAWA,OAVA,KAAA,KAAA,QAAA,KAAA,EAAA,OACA,EAAA,KAAA,EAAA,GACA,EAAA,GACA,EAAA,KAAA,EAAA,GACA,EAAA,KArDA,SAAA,EAAA,EAAA,GACA,EAAA,SAAA,EAAA,SAAA,EAAA,SACA,EAAA,OAAA,EAAA,OAAA,EAAA,OAIA,IAFA,IAAA,EAAA,EACA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,OAAA,EAAA,IAAA,CAGA,IAAA,EAAA,EACA,EAAA,EAGA,IAFA,IAAA,EAAA,SAAA,EACA,EAAA,KAAA,IAAA,EAAA,EAAA,OAAA,GACA,EAAA,KAAA,IAAA,EAAA,EAAA,EAAA,OAAA,GAAA,GAAA,EAAA,IAAA,CACA,IAAA,EAAA,EAAA,EAGA,GAFA,EAAA,EAAA,MAAA,KACA,EAAA,EAAA,MAAA,IAGA,EAAA,SAAA,EAGA,EAAA,UADA,EAAA,EAAA,EAAA,GAIA,IAFA,GAHA,EAAA,GAAA,EAAA,SAAA,GAAA,IAGA,IAAA,IAAA,KAEA,GACA,GAAA,SAEA,EAAA,MAAA,GAAA,EACA,EAAA,EACA,EAAA,EAQA,OANA,IAAA,EACA,EAAA,MAAA,GAAA,EAEA,EAAA,SAGA,EAAA,QAgBA,CAAA,KAAA,EAAA,GAEA,EAAA,KAAA,EAAA,IAcA,EAAA,UAAA,QAAA,SAAA,GAGA,IAFA,IAAA,EAAA,IAAA,MAAA,GACA,EAAA,EAAA,UAAA,WAAA,GAAA,EACA,EAAA,EAAA,EAAA,EAAA,IACA,EAAA,GAAA,KAAA,OAAA,EAAA,EAAA,GAGA,OAAA,GAIA,EAAA,UAAA,OAAA,SAAA,EAAA,EAAA,GACA,GAAA,IAAA,GAAA,IAAA,EAAA,EAAA,OAAA,EAGA,IADA,IAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,IACA,IAAA,EAAA,IAAA,EAAA,EAAA,EACA,IAAA,EAGA,OAAA,GAKA,EAAA,UAAA,QAAA,SAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,IACA,EAAA,GAAA,EAAA,EAAA,IACA,EAAA,GAAA,EAAA,EAAA,KAIA,EAAA,UAAA,UAAA,SAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACA,KAAA,QAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAEA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAMA,IALA,IAAA,EAAA,GAAA,EAEA,EAAA,KAAA,IAAA,EAAA,KAAA,GAAA,GACA,EAAA,KAAA,IAAA,EAAA,KAAA,GAAA,GAEA,EAAA,EAAA,EAAA,EAAA,GAAA,EAIA,IAHA,IAAA,EAAA,EACA,EAAA,EAEA,EAAA,EAAA,EAAA,EAAA,IAAA,CACA,IAAA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EAAA,GAEA,EAAA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EAAA,EAAA,GAEA,EAAA,EAAA,EAAA,EAAA,EAEA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAEA,EAAA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,GAAA,EAAA,EAEA,EAAA,EAAA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,EAAA,GAAA,EAAA,EAGA,IAAA,IACA,EAAA,EAAA,EAAA,EAAA,EAEA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,KAOA,EAAA,UAAA,YAAA,SAAA,EAAA,GACA,IAAA,EAAA,EAAA,KAAA,IAAA,EAAA,GACA,EAAA,EAAA,EACA,EAAA,EACA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,KAAA,EACA,IAGA,OAAA,GAAA,EAAA,EAAA,GAGA,EAAA,UAAA,UAAA,SAAA,EAAA,EAAA,GACA,KAAA,GAAA,GAEA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,CACA,IAAA,EAAA,EAAA,GAEA,EAAA,GAAA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EAAA,GAAA,EAEA,EAAA,EAAA,GAEA,EAAA,IAAA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EAAA,IAAA,IAIA,EAAA,UAAA,aAAA,SAAA,EAAA,GAEA,IADA,IAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,CACA,IAAA,EAAA,KAAA,KAAA,MAAA,EAAA,EAAA,EAAA,GAAA,GACA,KAAA,MAAA,EAAA,EAAA,GAAA,GACA,EAEA,EAAA,GAAA,SAAA,EAGA,EADA,EAAA,SACA,EAEA,EAAA,SAAA,EAIA,OAAA,GAGA,EAAA,UAAA,WAAA,SAAA,EAAA,EAAA,EAAA,GAEA,IADA,IAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,IACA,GAAA,EAAA,EAAA,GAEA,EAAA,EAAA,GAAA,KAAA,EAAA,KAAA,GACA,EAAA,EAAA,EAAA,GAAA,KAAA,EAAA,KAAA,GAIA,IAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EACA,EAAA,GAAA,EAGA,EAAA,IAAA,GACA,EAAA,KAAA,KAAA,KAGA,EAAA,UAAA,KAAA,SAAA,GAEA,IADA,IAAA,EAAA,IAAA,MAAA,GACA,EAAA,EAAA,EAAA,EAAA,IACA,EAAA,GAAA,EAGA,OAAA,GAGA,EAAA,UAAA,KAAA,SAAA,EAAA,EAAA,GACA,IAAA,EAAA,EAAA,KAAA,YAAA,EAAA,OAAA,EAAA,QAEA,EAAA,KAAA,QAAA,GAEA,EAAA,KAAA,KAAA,GAEA,EAAA,IAAA,MAAA,GACA,EAAA,IAAA,MAAA,GACA,EAAA,IAAA,MAAA,GAEA,EAAA,IAAA,MAAA,GACA,EAAA,IAAA,MAAA,GACA,EAAA,IAAA,MAAA,GAEA,EAAA,EAAA,MACA,EAAA,OAAA,EAEA,KAAA,WAAA,EAAA,MAAA,EAAA,OAAA,EAAA,GACA,KAAA,WAAA,EAAA,MAAA,EAAA,OAAA,EAAA,GAEA,KAAA,UAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACA,KAAA,UAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAEA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,IAAA,CACA,IAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GACA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GACA,EAAA,GAAA,EAUA,OAPA,KAAA,UAAA,EAAA,EAAA,GACA,KAAA,UAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACA,KAAA,UAAA,EAAA,EAAA,GACA,KAAA,aAAA,EAAA,GAEA,EAAA,SAAA,EAAA,SAAA,EAAA,SACA,EAAA,OAAA,EAAA,OAAA,EAAA,OACA,EAAA,SAIA,EAAA,UAAA,IAAA,SAAA,GACA,IAAA,EAAA,IAAA,EAAA,MAEA,OADA,EAAA,MAAA,IAAA,MAAA,KAAA,OAAA,EAAA,QACA,KAAA,MAAA,EAAA,IAIA,EAAA,UAAA,KAAA,SAAA,GACA,IAAA,EAAA,IAAA,EAAA,MAEA,OADA,EAAA,MAAA,IAAA,MAAA,KAAA,OAAA,EAAA,QACA,EAAA,KAAA,EAAA,IAIA,EAAA,UAAA,KAAA,SAAA,GACA,OAAA,KAAA,QAAA,MAAA,EAAA,OAGA,EAAA,UAAA,MAAA,SAAA,GACA,EAAA,iBAAA,GACA,EAAA,EAAA,UAIA,IADA,IAAA,EAAA,EACA,EAAA,EAAA,EAAA,KAAA,OAAA,IAAA,CACA,IAAA,GAAA,EAAA,KAAA,MAAA,IAAA,EACA,GAAA,SAAA,IAAA,SAAA,GACA,IAAA,GACA,GAAA,EAAA,SAAA,EAEA,GAAA,IAAA,GACA,KAAA,MAAA,GAAA,SAAA,EAQA,OALA,IAAA,IACA,KAAA,MAAA,GAAA,EACA,KAAA,UAGA,MAGA,EAAA,UAAA,KAAA,SAAA,GACA,OAAA,KAAA,QAAA,MAAA,IAIA,EAAA,UAAA,IAAA,WACA,OAAA,KAAA,IAAA,OAIA,EAAA,UAAA,KAAA,WACA,OAAA,KAAA,KAAA,KAAA,UAIA,EAAA,UAAA,IAAA,SAAA,GACA,IAAA,EAxxCA,SAAA,GAGA,IAFA,IAAA,EAAA,IAAA,MAAA,EAAA,aAEA,EAAA,EAAA,EAAA,EAAA,OAAA,IAAA,CACA,IAAA,EAAA,EAAA,GAAA,EACA,EAAA,EAAA,GAEA,EAAA,IAAA,EAAA,MAAA,GAAA,GAAA,KAAA,EAGA,OAAA,EA8wCA,CAAA,GACA,GAAA,IAAA,EAAA,OAAA,OAAA,IAAA,EAAA,GAIA,IADA,IAAA,EAAA,KACA,EAAA,EAAA,EAAA,EAAA,QACA,IAAA,EAAA,GADA,IAAA,EAAA,EAAA,OAIA,KAAA,EAAA,EAAA,OACA,IAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,OAAA,IAAA,EAAA,EAAA,MACA,IAAA,EAAA,KAEA,EAAA,EAAA,IAAA,IAIA,OAAA,GAIA,EAAA,UAAA,OAAA,SAAA,GACA,EAAA,iBAAA,GAAA,GAAA,GACA,IAGA,EAHA,EAAA,EAAA,GACA,GAAA,EAAA,GAAA,GACA,EAAA,WAAA,GAAA,GAAA,GAAA,EAGA,GAAA,IAAA,EAAA,CACA,IAAA,EAAA,EAEA,IAAA,EAAA,EAAA,EAAA,KAAA,OAAA,IAAA,CACA,IAAA,EAAA,KAAA,MAAA,GAAA,EACA,GAAA,EAAA,KAAA,MAAA,IAAA,GAAA,EACA,KAAA,MAAA,GAAA,EAAA,EACA,EAAA,IAAA,GAAA,EAGA,IACA,KAAA,MAAA,GAAA,EACA,KAAA,UAIA,GAAA,IAAA,EAAA,CACA,IAAA,EAAA,KAAA,OAAA,EAAA,GAAA,EAAA,IACA,KAAA,MAAA,EAAA,GAAA,KAAA,MAAA,GAGA,IAAA,EAAA,EAAA,EAAA,EAAA,IACA,KAAA,MAAA,GAAA,EAGA,KAAA,QAAA,EAGA,OAAA,KAAA,SAGA,EAAA,UAAA,MAAA,SAAA,GAGA,OADA,EAAA,IAAA,KAAA,UACA,KAAA,OAAA,IAMA,EAAA,UAAA,OAAA,SAAA,EAAA,EAAA,GAEA,IAAA,EADA,EAAA,iBAAA,GAAA,GAAA,GAGA,EADA,GACA,EAAA,EAAA,IAAA,GAEA,EAGA,IAAA,EAAA,EAAA,GACA,EAAA,KAAA,KAAA,EAAA,GAAA,GAAA,KAAA,QACA,EAAA,SAAA,WAAA,GAAA,EACA,EAAA,EAMA,GAJA,GAAA,EACA,EAAA,KAAA,IAAA,EAAA,GAGA,EAAA,CACA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,IACA,EAAA,MAAA,GAAA,KAAA,MAAA,GAEA,EAAA,OAAA,EAGA,GAAA,IAAA,QAEA,GAAA,KAAA,OAAA,EAEA,IADA,KAAA,QAAA,EACA,EAAA,EAAA,EAAA,KAAA,OAAA,IACA,KAAA,MAAA,GAAA,KAAA,MAAA,EAAA,QAGA,KAAA,MAAA,GAAA,EACA,KAAA,OAAA,EAGA,IAAA,EAAA,EACA,IAAA,EAAA,KAAA,OAAA,EAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,CACA,IAAA,EAAA,EAAA,KAAA,MAAA,GACA,KAAA,MAAA,GAAA,GAAA,GAAA,EAAA,IAAA,EACA,EAAA,EAAA,EAaA,OATA,GAAA,IAAA,IACA,EAAA,MAAA,EAAA,UAAA,GAGA,IAAA,KAAA,SACA,KAAA,MAAA,GAAA,EACA,KAAA,OAAA,GAGA,KAAA,SAGA,EAAA,UAAA,MAAA,SAAA,EAAA,EAAA,GAGA,OADA,EAAA,IAAA,KAAA,UACA,KAAA,OAAA,EAAA,EAAA,IAIA,EAAA,UAAA,KAAA,SAAA,GACA,OAAA,KAAA,QAAA,MAAA,IAGA,EAAA,UAAA,MAAA,SAAA,GACA,OAAA,KAAA,QAAA,OAAA,IAIA,EAAA,UAAA,KAAA,SAAA,GACA,OAAA,KAAA,QAAA,MAAA,IAGA,EAAA,UAAA,MAAA,SAAA,GACA,OAAA,KAAA,QAAA,OAAA,IAIA,EAAA,UAAA,MAAA,SAAA,GACA,EAAA,iBAAA,GAAA,GAAA,GACA,IAAA,EAAA,EAAA,GACA,GAAA,EAAA,GAAA,GACA,EAAA,GAAA,EAGA,QAAA,KAAA,QAAA,OAGA,KAAA,MAAA,GAEA,IAIA,EAAA,UAAA,OAAA,SAAA,GACA,EAAA,iBAAA,GAAA,GAAA,GACA,IAAA,EAAA,EAAA,GACA,GAAA,EAAA,GAAA,GAIA,GAFA,EAAA,IAAA,KAAA,SAAA,2CAEA,KAAA,QAAA,EACA,OAAA,KAQA,GALA,IAAA,GACA,IAEA,KAAA,OAAA,KAAA,IAAA,EAAA,KAAA,QAEA,IAAA,EAAA,CACA,IAAA,EAAA,SAAA,WAAA,GAAA,EACA,KAAA,MAAA,KAAA,OAAA,IAAA,EAGA,OAAA,KAAA,SAIA,EAAA,UAAA,MAAA,SAAA,GACA,OAAA,KAAA,QAAA,OAAA,IAIA,EAAA,UAAA,MAAA,SAAA,GAGA,OAFA,EAAA,iBAAA,GACA,EAAA,EAAA,UACA,EAAA,EAAA,KAAA,OAAA,GAGA,IAAA,KAAA,SACA,IAAA,KAAA,SAAA,EAAA,KAAA,MAAA,IAAA,GACA,KAAA,MAAA,GAAA,GAAA,EAAA,KAAA,MAAA,IACA,KAAA,SAAA,EACA,OAGA,KAAA,SAAA,EACA,KAAA,MAAA,GACA,KAAA,SAAA,EACA,MAIA,KAAA,OAAA,IAGA,EAAA,UAAA,OAAA,SAAA,GACA,KAAA,MAAA,IAAA,EAGA,IAAA,IAAA,EAAA,EAAA,EAAA,KAAA,QAAA,KAAA,MAAA,IAAA,SAAA,IACA,KAAA,MAAA,IAAA,SACA,IAAA,KAAA,OAAA,EACA,KAAA,MAAA,EAAA,GAAA,EAEA,KAAA,MAAA,EAAA,KAKA,OAFA,KAAA,OAAA,KAAA,IAAA,KAAA,OAAA,EAAA,GAEA,MAIA,EAAA,UAAA,MAAA,SAAA,GAGA,GAFA,EAAA,iBAAA,GACA,EAAA,EAAA,UACA,EAAA,EAAA,OAAA,KAAA,OAAA,GAEA,GAAA,IAAA,KAAA,SAIA,OAHA,KAAA,SAAA,EACA,KAAA,MAAA,GACA,KAAA,SAAA,EACA,KAKA,GAFA,KAAA,MAAA,IAAA,EAEA,IAAA,KAAA,QAAA,KAAA,MAAA,GAAA,EACA,KAAA,MAAA,IAAA,KAAA,MAAA,GACA,KAAA,SAAA,OAGA,IAAA,IAAA,EAAA,EAAA,EAAA,KAAA,QAAA,KAAA,MAAA,GAAA,EAAA,IACA,KAAA,MAAA,IAAA,SACA,KAAA,MAAA,EAAA,IAAA,EAIA,OAAA,KAAA,SAGA,EAAA,UAAA,KAAA,SAAA,GACA,OAAA,KAAA,QAAA,MAAA,IAGA,EAAA,UAAA,KAAA,SAAA,GACA,OAAA,KAAA,QAAA,MAAA,IAGA,EAAA,UAAA,KAAA,WAGA,OAFA,KAAA,SAAA,EAEA,MAGA,EAAA,UAAA,IAAA,WACA,OAAA,KAAA,QAAA,QAGA,EAAA,UAAA,aAAA,SAAA,EAAA,EAAA,GACA,IACA,EAIA,EALA,EAAA,EAAA,OAAA,EAGA,KAAA,QAAA,GAGA,IAAA,EAAA,EACA,IAAA,EAAA,EAAA,EAAA,EAAA,OAAA,IAAA,CACA,GAAA,EAAA,KAAA,MAAA,EAAA,IAAA,EACA,IAAA,GAAA,EAAA,EAAA,MAAA,IAAA,EAEA,IADA,GAAA,SAAA,IACA,KAAA,EAAA,SAAA,GACA,KAAA,MAAA,EAAA,GAAA,SAAA,EAEA,KAAA,EAAA,KAAA,OAAA,EAAA,IAEA,GADA,GAAA,EAAA,KAAA,MAAA,EAAA,IAAA,IACA,GACA,KAAA,MAAA,EAAA,GAAA,SAAA,EAGA,GAAA,IAAA,EAAA,OAAA,KAAA,QAKA,IAFA,GAAA,IAAA,GACA,EAAA,EACA,EAAA,EAAA,EAAA,KAAA,OAAA,IAEA,GADA,IAAA,EAAA,KAAA,MAAA,IAAA,IACA,GACA,KAAA,MAAA,GAAA,SAAA,EAIA,OAFA,KAAA,SAAA,EAEA,KAAA,SAGA,EAAA,UAAA,SAAA,SAAA,EAAA,GACA,IAAA,GAAA,KAAA,OAAA,EAAA,QAEA,EAAA,KAAA,QACA,EAAA,EAGA,EAAA,EAAA,EAAA,MAAA,EAAA,OAAA,GAGA,KADA,EAAA,GADA,KAAA,WAAA,MAGA,EAAA,EAAA,MAAA,GACA,EAAA,OAAA,GACA,EAAA,EAAA,EAAA,MAAA,EAAA,OAAA,IAIA,IACA,EADA,EAAA,EAAA,OAAA,EAAA,OAGA,GAAA,QAAA,EAAA,EACA,EAAA,IAAA,EAAA,OACA,OAAA,EAAA,EACA,EAAA,MAAA,IAAA,MAAA,EAAA,QACA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,EAAA,MAAA,GAAA,EAIA,IAAA,EAAA,EAAA,QAAA,aAAA,EAAA,EAAA,GACA,IAAA,EAAA,WACA,EAAA,EACA,IACA,EAAA,MAAA,GAAA,IAIA,IAAA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,IAAA,CACA,IAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,OAAA,KACA,EAAA,EAAA,MAAA,EAAA,OAAA,EAAA,IAOA,IAHA,EAAA,KAAA,IAAA,EAAA,EAAA,EAAA,UAEA,EAAA,aAAA,EAAA,EAAA,GACA,IAAA,EAAA,UACA,IACA,EAAA,SAAA,EACA,EAAA,aAAA,EAAA,EAAA,GACA,EAAA,WACA,EAAA,UAAA,GAGA,IACA,EAAA,MAAA,GAAA,GAaA,OAVA,GACA,EAAA,QAEA,EAAA,QAGA,QAAA,GAAA,IAAA,GACA,EAAA,OAAA,GAGA,CACA,IAAA,GAAA,KACA,IAAA,IAQA,EAAA,UAAA,OAAA,SAAA,EAAA,EAAA,GAGA,OAFA,GAAA,EAAA,UAEA,KAAA,SACA,CACA,IAAA,IAAA,EAAA,GACA,IAAA,IAAA,EAAA,IAKA,IAAA,KAAA,UAAA,IAAA,EAAA,UACA,EAAA,KAAA,MAAA,OAAA,EAAA,GAEA,QAAA,IACA,EAAA,EAAA,IAAA,OAGA,QAAA,IACA,EAAA,EAAA,IAAA,MACA,GAAA,IAAA,EAAA,UACA,EAAA,KAAA,IAIA,CACA,IAAA,EACA,IAAA,IAIA,IAAA,KAAA,UAAA,IAAA,EAAA,UACA,EAAA,KAAA,OAAA,EAAA,MAAA,GAEA,QAAA,IACA,EAAA,EAAA,IAAA,OAGA,CACA,IAAA,EACA,IAAA,EAAA,MAIA,IAAA,KAAA,SAAA,EAAA,WACA,EAAA,KAAA,MAAA,OAAA,EAAA,MAAA,GAEA,QAAA,IACA,EAAA,EAAA,IAAA,MACA,GAAA,IAAA,EAAA,UACA,EAAA,KAAA,IAIA,CACA,IAAA,EAAA,IACA,IAAA,IAOA,EAAA,OAAA,KAAA,QAAA,KAAA,IAAA,GAAA,EACA,CACA,IAAA,IAAA,EAAA,GACA,IAAA,MAKA,IAAA,EAAA,OACA,QAAA,EACA,CACA,IAAA,KAAA,KAAA,EAAA,MAAA,IACA,IAAA,MAIA,QAAA,EACA,CACA,IAAA,KACA,IAAA,IAAA,EAAA,KAAA,KAAA,EAAA,MAAA,MAIA,CACA,IAAA,KAAA,KAAA,EAAA,MAAA,IACA,IAAA,IAAA,EAAA,KAAA,KAAA,EAAA,MAAA,MAIA,KAAA,SAAA,EAAA,GAlFA,IAAA,EAAA,EAAA,GAsFA,EAAA,UAAA,IAAA,SAAA,GACA,OAAA,KAAA,OAAA,EAAA,OAAA,GAAA,KAIA,EAAA,UAAA,IAAA,SAAA,GACA,OAAA,KAAA,OAAA,EAAA,OAAA,GAAA,KAGA,EAAA,UAAA,KAAA,SAAA,GACA,OAAA,KAAA,OAAA,EAAA,OAAA,GAAA,KAIA,EAAA,UAAA,SAAA,SAAA,GACA,IAAA,EAAA,KAAA,OAAA,GAGA,GAAA,EAAA,IAAA,SAAA,OAAA,EAAA,IAEA,IAAA,EAAA,IAAA,EAAA,IAAA,SAAA,EAAA,IAAA,KAAA,GAAA,EAAA,IAEA,EAAA,EAAA,MAAA,GACA,EAAA,EAAA,MAAA,GACA,EAAA,EAAA,IAAA,GAGA,OAAA,EAAA,GAAA,IAAA,GAAA,IAAA,EAAA,EAAA,IAGA,IAAA,EAAA,IAAA,SAAA,EAAA,IAAA,MAAA,GAAA,EAAA,IAAA,MAAA,IAGA,EAAA,UAAA,KAAA,SAAA,GACA,EAAA,GAAA,UAIA,IAHA,IAAA,GAAA,GAAA,IAAA,EAEA,EAAA,EACA,EAAA,KAAA,OAAA,EAAA,GAAA,EAAA,IACA,GAAA,EAAA,GAAA,EAAA,KAAA,MAAA,KAAA,EAGA,OAAA,GAIA,EAAA,UAAA,MAAA,SAAA,GACA,EAAA,GAAA,UAGA,IADA,IAAA,EAAA,EACA,EAAA,KAAA,OAAA,EAAA,GAAA,EAAA,IAAA,CACA,IAAA,GAAA,EAAA,KAAA,MAAA,IAAA,SAAA,EACA,KAAA,MAAA,GAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAGA,OAAA,KAAA,SAGA,EAAA,UAAA,KAAA,SAAA,GACA,OAAA,KAAA,QAAA,MAAA,IAGA,EAAA,UAAA,KAAA,SAAA,GACA,EAAA,IAAA,EAAA,UACA,GAAA,EAAA,UAEA,IAAA,EAAA,KACA,EAAA,EAAA,QAGA,EADA,IAAA,EAAA,SACA,EAAA,KAAA,GAEA,EAAA,QAaA,IATA,IAAA,EAAA,IAAA,EAAA,GACA,EAAA,IAAA,EAAA,GAGA,EAAA,IAAA,EAAA,GACA,EAAA,IAAA,EAAA,GAEA,EAAA,EAEA,EAAA,UAAA,EAAA,UACA,EAAA,OAAA,GACA,EAAA,OAAA,KACA,EAMA,IAHA,IAAA,EAAA,EAAA,QACA,EAAA,EAAA,SAEA,EAAA,UAAA,CACA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,GAAA,IAAA,EAAA,KAAA,EAAA,IAAA,GACA,GAAA,EAAA,EAEA,IADA,EAAA,OAAA,GACA,KAAA,IACA,EAAA,SAAA,EAAA,WACA,EAAA,KAAA,GACA,EAAA,KAAA,IAGA,EAAA,OAAA,GACA,EAAA,OAAA,GAIA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,GAAA,IAAA,EAAA,KAAA,EAAA,IAAA,GACA,GAAA,EAAA,EAEA,IADA,EAAA,OAAA,GACA,KAAA,IACA,EAAA,SAAA,EAAA,WACA,EAAA,KAAA,GACA,EAAA,KAAA,IAGA,EAAA,OAAA,GACA,EAAA,OAAA,GAIA,EAAA,IAAA,IAAA,GACA,EAAA,KAAA,GACA,EAAA,KAAA,GACA,EAAA,KAAA,KAEA,EAAA,KAAA,GACA,EAAA,KAAA,GACA,EAAA,KAAA,IAIA,MAAA,CACA,EAAA,EACA,EAAA,EACA,IAAA,EAAA,OAAA,KAOA,EAAA,UAAA,OAAA,SAAA,GACA,EAAA,IAAA,EAAA,UACA,GAAA,EAAA,UAEA,IAAA,EAAA,KACA,EAAA,EAAA,QAGA,EADA,IAAA,EAAA,SACA,EAAA,KAAA,GAEA,EAAA,QAQA,IALA,IAuCA,EAvCA,EAAA,IAAA,EAAA,GACA,EAAA,IAAA,EAAA,GAEA,EAAA,EAAA,QAEA,EAAA,KAAA,GAAA,GAAA,EAAA,KAAA,GAAA,GAAA,CACA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,GAAA,IAAA,EAAA,KAAA,EAAA,IAAA,GACA,GAAA,EAAA,EAEA,IADA,EAAA,OAAA,GACA,KAAA,GACA,EAAA,SACA,EAAA,KAAA,GAGA,EAAA,OAAA,GAIA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,GAAA,IAAA,EAAA,KAAA,EAAA,IAAA,GACA,GAAA,EAAA,EAEA,IADA,EAAA,OAAA,GACA,KAAA,GACA,EAAA,SACA,EAAA,KAAA,GAGA,EAAA,OAAA,GAIA,EAAA,IAAA,IAAA,GACA,EAAA,KAAA,GACA,EAAA,KAAA,KAEA,EAAA,KAAA,GACA,EAAA,KAAA,IAeA,OATA,EADA,IAAA,EAAA,KAAA,GACA,EAEA,GAGA,KAAA,GAAA,GACA,EAAA,KAAA,GAGA,GAGA,EAAA,UAAA,IAAA,SAAA,GACA,GAAA,KAAA,SAAA,OAAA,EAAA,MACA,GAAA,EAAA,SAAA,OAAA,KAAA,MAEA,IAAA,EAAA,KAAA,QACA,EAAA,EAAA,QACA,EAAA,SAAA,EACA,EAAA,SAAA,EAGA,IAAA,IAAA,EAAA,EAAA,EAAA,UAAA,EAAA,SAAA,IACA,EAAA,OAAA,GACA,EAAA,OAAA,GAGA,OAAA,CACA,KAAA,EAAA,UACA,EAAA,OAAA,GAEA,KAAA,EAAA,UACA,EAAA,OAAA,GAGA,IAAA,EAAA,EAAA,IAAA,GACA,GAAA,EAAA,EAAA,CAEA,IAAA,EAAA,EACA,EAAA,EACA,EAAA,OACA,GAAA,IAAA,GAAA,IAAA,EAAA,KAAA,GACA,MAGA,EAAA,KAAA,GAGA,OAAA,EAAA,OAAA,IAIA,EAAA,UAAA,KAAA,SAAA,GACA,OAAA,KAAA,KAAA,GAAA,EAAA,KAAA,IAGA,EAAA,UAAA,OAAA,WACA,OAAA,IAAA,EAAA,KAAA,MAAA,KAGA,EAAA,UAAA,MAAA,WACA,OAAA,IAAA,EAAA,KAAA,MAAA,KAIA,EAAA,UAAA,MAAA,SAAA,GACA,OAAA,KAAA,MAAA,GAAA,GAIA,EAAA,UAAA,MAAA,SAAA,GACA,EAAA,iBAAA,GACA,IAAA,EAAA,EAAA,GACA,GAAA,EAAA,GAAA,GACA,EAAA,GAAA,EAGA,GAAA,KAAA,QAAA,EAGA,OAFA,KAAA,QAAA,EAAA,GACA,KAAA,MAAA,IAAA,EACA,KAKA,IADA,IAAA,EAAA,EACA,EAAA,EAAA,IAAA,GAAA,EAAA,KAAA,OAAA,IAAA,CACA,IAAA,EAAA,EAAA,KAAA,MAAA,GAEA,GADA,GAAA,KACA,GACA,GAAA,SACA,KAAA,MAAA,GAAA,EAMA,OAJA,IAAA,IACA,KAAA,MAAA,GAAA,EACA,KAAA,UAEA,MAGA,EAAA,UAAA,OAAA,WACA,OAAA,IAAA,KAAA,QAAA,IAAA,KAAA,MAAA,IAGA,EAAA,UAAA,KAAA,SAAA,GACA,IAOA,EAPA,EAAA,EAAA,EAEA,GAAA,IAAA,KAAA,WAAA,EAAA,OAAA,EACA,GAAA,IAAA,KAAA,UAAA,EAAA,OAAA,EAKA,GAHA,KAAA,QAGA,KAAA,OAAA,EACA,EAAA,MACA,CACA,IACA,GAAA,GAGA,EAAA,GAAA,SAAA,qBAEA,IAAA,EAAA,EAAA,KAAA,MAAA,GACA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAEA,OAAA,IAAA,KAAA,SAAA,GAAA,EACA,GAOA,EAAA,UAAA,IAAA,SAAA,GACA,GAAA,IAAA,KAAA,UAAA,IAAA,EAAA,SAAA,OAAA,EACA,GAAA,IAAA,KAAA,UAAA,IAAA,EAAA,SAAA,OAAA,EAEA,IAAA,EAAA,KAAA,KAAA,GACA,OAAA,IAAA,KAAA,SAAA,GAAA,EACA,GAIA,EAAA,UAAA,KAAA,SAAA,GAEA,GAAA,KAAA,OAAA,EAAA,OAAA,OAAA,EACA,GAAA,KAAA,OAAA,EAAA,OAAA,OAAA,EAGA,IADA,IAAA,EAAA,EACA,EAAA,KAAA,OAAA,EAAA,GAAA,EAAA,IAAA,CACA,IAAA,EAAA,EAAA,KAAA,MAAA,GACA,EAAA,EAAA,EAAA,MAAA,GAEA,GAAA,IAAA,EAAA,CACA,EAAA,EACA,GAAA,EACA,EAAA,IACA,EAAA,GAEA,OAEA,OAAA,GAGA,EAAA,UAAA,IAAA,SAAA,GACA,OAAA,IAAA,KAAA,KAAA,IAGA,EAAA,UAAA,GAAA,SAAA,GACA,OAAA,IAAA,KAAA,IAAA,IAGA,EAAA,UAAA,KAAA,SAAA,GACA,OAAA,KAAA,KAAA,IAAA,GAGA,EAAA,UAAA,IAAA,SAAA,GACA,OAAA,KAAA,IAAA,IAAA,GAGA,EAAA,UAAA,IAAA,SAAA,GACA,OAAA,IAAA,KAAA,KAAA,IAGA,EAAA,UAAA,GAAA,SAAA,GACA,OAAA,IAAA,KAAA,IAAA,IAGA,EAAA,UAAA,KAAA,SAAA,GACA,OAAA,KAAA,KAAA,IAAA,GAGA,EAAA,UAAA,IAAA,SAAA,GACA,OAAA,KAAA,IAAA,IAAA,GAGA,EAAA,UAAA,IAAA,SAAA,GACA,OAAA,IAAA,KAAA,KAAA,IAGA,EAAA,UAAA,GAAA,SAAA,GACA,OAAA,IAAA,KAAA,IAAA,IAOA,EAAA,IAAA,SAAA,GACA,OAAA,IAAA,EAAA,IAGA,EAAA,UAAA,MAAA,SAAA,GAGA,OAFA,GAAA,KAAA,IAAA,yCACA,EAAA,IAAA,KAAA,SAAA,iCACA,EAAA,UAAA,MAAA,UAAA,IAGA,EAAA,UAAA,QAAA,WAEA,OADA,EAAA,KAAA,IAAA,wDACA,KAAA,IAAA,YAAA,OAGA,EAAA,UAAA,UAAA,SAAA,GAEA,OADA,KAAA,IAAA,EACA,MAGA,EAAA,UAAA,SAAA,SAAA,GAEA,OADA,GAAA,KAAA,IAAA,yCACA,KAAA,UAAA,IAGA,EAAA,UAAA,OAAA,SAAA,GAEA,OADA,EAAA,KAAA,IAAA,sCACA,KAAA,IAAA,IAAA,KAAA,IAGA,EAAA,UAAA,QAAA,SAAA,GAEA,OADA,EAAA,KAAA,IAAA,uCACA,KAAA,IAAA,KAAA,KAAA,IAGA,EAAA,UAAA,OAAA,SAAA,GAEA,OADA,EAAA,KAAA,IAAA,sCACA,KAAA,IAAA,IAAA,KAAA,IAGA,EAAA,UAAA,QAAA,SAAA,GAEA,OADA,EAAA,KAAA,IAAA,uCACA,KAAA,IAAA,KAAA,KAAA,IAGA,EAAA,UAAA,OAAA,SAAA,GAEA,OADA,EAAA,KAAA,IAAA,sCACA,KAAA,IAAA,IAAA,KAAA,IAGA,EAAA,UAAA,OAAA,SAAA,GAGA,OAFA,EAAA,KAAA,IAAA,sCACA,KAAA,IAAA,SAAA,KAAA,GACA,KAAA,IAAA,IAAA,KAAA,IAGA,EAAA,UAAA,QAAA,SAAA,GAGA,OAFA,EAAA,KAAA,IAAA,sCACA,KAAA,IAAA,SAAA,KAAA,GACA,KAAA,IAAA,KAAA,KAAA,IAGA,EAAA,UAAA,OAAA,WAGA,OAFA,EAAA,KAAA,IAAA,sCACA,KAAA,IAAA,SAAA,MACA,KAAA,IAAA,IAAA,OAGA,EAAA,UAAA,QAAA,WAGA,OAFA,EAAA,KAAA,IAAA,uCACA,KAAA,IAAA,SAAA,MACA,KAAA,IAAA,KAAA,OAIA,EAAA,UAAA,QAAA,WAGA,OAFA,EAAA,KAAA,IAAA,uCACA,KAAA,IAAA,SAAA,MACA,KAAA,IAAA,KAAA,OAGA,EAAA,UAAA,QAAA,WAGA,OAFA,EAAA,KAAA,IAAA,uCACA,KAAA,IAAA,SAAA,MACA,KAAA,IAAA,KAAA,OAIA,EAAA,UAAA,OAAA,WAGA,OAFA,EAAA,KAAA,IAAA,sCACA,KAAA,IAAA,SAAA,MACA,KAAA,IAAA,IAAA,OAGA,EAAA,UAAA,OAAA,SAAA,GAGA,OAFA,EAAA,KAAA,MAAA,EAAA,IAAA,qBACA,KAAA,IAAA,SAAA,MACA,KAAA,IAAA,IAAA,KAAA,IAIA,IAAA,EAAA,CACA,KAAA,KACA,KAAA,KACA,KAAA,KACA,OAAA,MAIA,SAAA,EAAA,EAAA,GAEA,KAAA,KAAA,EACA,KAAA,EAAA,IAAA,EAAA,EAAA,IACA,KAAA,EAAA,KAAA,EAAA,YACA,KAAA,EAAA,IAAA,EAAA,GAAA,OAAA,KAAA,GAAA,KAAA,KAAA,GAEA,KAAA,IAAA,KAAA,OA2CA,SAAA,IACA,EAAA,KACA,KACA,OACA,2EA+DA,SAAA,IACA,EAAA,KACA,KACA,OACA,kEAIA,SAAA,IACA,EAAA,KACA,KACA,OACA,yDAIA,SAAA,IAEA,EAAA,KACA,KACA,QACA,uEA8CA,SAAA,EAAA,GACA,GAAA,iBAAA,EAAA,CACA,IAAA,EAAA,EAAA,OAAA,GACA,KAAA,EAAA,EAAA,EACA,KAAA,MAAA,OAEA,EAAA,EAAA,IAAA,GAAA,kCACA,KAAA,EAAA,EACA,KAAA,MAAA,KAkOA,SAAA,EAAA,GACA,EAAA,KAAA,KAAA,GAEA,KAAA,MAAA,KAAA,EAAA,YACA,KAAA,MAAA,IAAA,IACA,KAAA,OAAA,GAAA,KAAA,MAAA,IAGA,KAAA,EAAA,IAAA,EAAA,GAAA,OAAA,KAAA,OACA,KAAA,GAAA,KAAA,KAAA,KAAA,EAAA,OACA,KAAA,KAAA,KAAA,EAAA,OAAA,KAAA,GAEA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,GAAA,MAAA,GAAA,IAAA,KAAA,GACA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,GACA,KAAA,KAAA,KAAA,EAAA,IAAA,KAAA,MAtaA,EAAA,UAAA,KAAA,WACA,IAAA,EAAA,IAAA,EAAA,MAEA,OADA,EAAA,MAAA,IAAA,MAAA,KAAA,KAAA,KAAA,EAAA,KACA,GAGA,EAAA,UAAA,QAAA,SAAA,GAGA,IACA,EADA,EAAA,EAGA,GACA,KAAA,MAAA,EAAA,KAAA,KAGA,GADA,GADA,EAAA,KAAA,MAAA,IACA,KAAA,KAAA,MACA,kBACA,EAAA,KAAA,GAEA,IAAA,EAAA,EAAA,KAAA,GAAA,EAAA,EAAA,KAAA,KAAA,GAUA,OATA,IAAA,GACA,EAAA,MAAA,GAAA,EACA,EAAA,OAAA,GACA,EAAA,EACA,EAAA,KAAA,KAAA,GAEA,EAAA,QAGA,GAGA,EAAA,UAAA,MAAA,SAAA,EAAA,GACA,EAAA,OAAA,KAAA,EAAA,EAAA,IAGA,EAAA,UAAA,MAAA,SAAA,GACA,OAAA,EAAA,KAAA,KAAA,IASA,EAAA,EAAA,GAEA,EAAA,UAAA,MAAA,SAAA,EAAA,GAKA,IAHA,IAEA,EAAA,KAAA,IAAA,EAAA,OAAA,GACA,EAAA,EAAA,EAAA,EAAA,IACA,EAAA,MAAA,GAAA,EAAA,MAAA,GAIA,GAFA,EAAA,OAAA,EAEA,EAAA,QAAA,EAGA,OAFA,EAAA,MAAA,GAAA,OACA,EAAA,OAAA,GAKA,IAAA,EAAA,EAAA,MAAA,GAGA,IAFA,EAAA,MAAA,EAAA,UAhBA,QAgBA,EAEA,EAAA,GAAA,EAAA,EAAA,OAAA,IAAA,CACA,IAAA,EAAA,EAAA,EAAA,MAAA,GACA,EAAA,MAAA,EAAA,KApBA,QAoBA,IAAA,EAAA,IAAA,GACA,EAAA,EAEA,KAAA,GACA,EAAA,MAAA,EAAA,IAAA,EACA,IAAA,GAAA,EAAA,OAAA,GACA,EAAA,QAAA,GAEA,EAAA,QAAA,GAIA,EAAA,UAAA,MAAA,SAAA,GAEA,EAAA,MAAA,EAAA,QAAA,EACA,EAAA,MAAA,EAAA,OAAA,GAAA,EACA,EAAA,QAAA,EAIA,IADA,IAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,OAAA,IAAA,CACA,IAAA,EAAA,EAAA,EAAA,MAAA,GACA,GAAA,IAAA,EACA,EAAA,MAAA,GAAA,SAAA,EACA,EAAA,GAAA,GAAA,EAAA,SAAA,GAUA,OANA,IAAA,EAAA,MAAA,EAAA,OAAA,KACA,EAAA,SACA,IAAA,EAAA,MAAA,EAAA,OAAA,IACA,EAAA,UAGA,GASA,EAAA,EAAA,GAQA,EAAA,EAAA,GASA,EAAA,EAAA,GAEA,EAAA,UAAA,MAAA,SAAA,GAGA,IADA,IAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,OAAA,IAAA,CACA,IAAA,EAAA,IAAA,EAAA,EAAA,MAAA,IAAA,EACA,EAAA,SAAA,EACA,KAAA,GAEA,EAAA,MAAA,GAAA,EACA,EAAA,EAKA,OAHA,IAAA,IACA,EAAA,MAAA,EAAA,UAAA,GAEA,GAIA,EAAA,OAAA,SAAA,GAEA,GAAA,EAAA,GAAA,OAAA,EAAA,GAEA,IAAA,EACA,GAAA,SAAA,EACA,EAAA,IAAA,OACA,GAAA,SAAA,EACA,EAAA,IAAA,OACA,GAAA,SAAA,EACA,EAAA,IAAA,MACA,CAAA,GAAA,WAAA,EAGA,MAAA,IAAA,MAAA,iBAAA,GAFA,EAAA,IAAA,EAMA,OAFA,EAAA,GAAA,EAEA,GAkBA,EAAA,UAAA,SAAA,SAAA,GACA,EAAA,IAAA,EAAA,SAAA,iCACA,EAAA,EAAA,IAAA,oCAGA,EAAA,UAAA,SAAA,SAAA,EAAA,GACA,EAAA,IAAA,EAAA,SAAA,EAAA,UAAA,iCACA,EAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IACA,oCAGA,EAAA,UAAA,KAAA,SAAA,GACA,OAAA,KAAA,MAAA,KAAA,MAAA,QAAA,GAAA,UAAA,MACA,EAAA,KAAA,KAAA,GAAA,UAAA,OAGA,EAAA,UAAA,IAAA,SAAA,GACA,OAAA,EAAA,SACA,EAAA,QAGA,KAAA,EAAA,IAAA,GAAA,UAAA,OAGA,EAAA,UAAA,IAAA,SAAA,EAAA,GACA,KAAA,SAAA,EAAA,GAEA,IAAA,EAAA,EAAA,IAAA,GAIA,OAHA,EAAA,IAAA,KAAA,IAAA,GACA,EAAA,KAAA,KAAA,GAEA,EAAA,UAAA,OAGA,EAAA,UAAA,KAAA,SAAA,EAAA,GACA,KAAA,SAAA,EAAA,GAEA,IAAA,EAAA,EAAA,KAAA,GAIA,OAHA,EAAA,IAAA,KAAA,IAAA,GACA,EAAA,KAAA,KAAA,GAEA,GAGA,EAAA,UAAA,IAAA,SAAA,EAAA,GACA,KAAA,SAAA,EAAA,GAEA,IAAA,EAAA,EAAA,IAAA,GAIA,OAHA,EAAA,KAAA,GAAA,GACA,EAAA,KAAA,KAAA,GAEA,EAAA,UAAA,OAGA,EAAA,UAAA,KAAA,SAAA,EAAA,GACA,KAAA,SAAA,EAAA,GAEA,IAAA,EAAA,EAAA,KAAA,GAIA,OAHA,EAAA,KAAA,GAAA,GACA,EAAA,KAAA,KAAA,GAEA,GAGA,EAAA,UAAA,IAAA,SAAA,EAAA,GAEA,OADA,KAAA,SAAA,GACA,KAAA,KAAA,EAAA,MAAA,KAGA,EAAA,UAAA,KAAA,SAAA,EAAA,GAEA,OADA,KAAA,SAAA,EAAA,GACA,KAAA,KAAA,EAAA,KAAA,KAGA,EAAA,UAAA,IAAA,SAAA,EAAA,GAEA,OADA,KAAA,SAAA,EAAA,GACA,KAAA,KAAA,EAAA,IAAA,KAGA,EAAA,UAAA,KAAA,SAAA,GACA,OAAA,KAAA,KAAA,EAAA,EAAA,UAGA,EAAA,UAAA,IAAA,SAAA,GACA,OAAA,KAAA,IAAA,EAAA,IAGA,EAAA,UAAA,KAAA,SAAA,GACA,GAAA,EAAA,SAAA,OAAA,EAAA,QAEA,IAAA,EAAA,KAAA,EAAA,MAAA,GAIA,GAHA,EAAA,EAAA,GAAA,GAGA,IAAA,EAAA,CACA,IAAA,EAAA,KAAA,EAAA,IAAA,IAAA,EAAA,IAAA,OAAA,GACA,OAAA,KAAA,IAAA,EAAA,GAQA,IAFA,IAAA,EAAA,KAAA,EAAA,KAAA,GACA,EAAA,GACA,EAAA,UAAA,IAAA,EAAA,MAAA,IACA,IACA,EAAA,OAAA,GAEA,GAAA,EAAA,UAEA,IAAA,EAAA,IAAA,EAAA,GAAA,MAAA,MACA,EAAA,EAAA,SAIA,EAAA,KAAA,EAAA,KAAA,GAAA,OAAA,GACA,EAAA,KAAA,EAAA,YAGA,IAFA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,MAAA,MAEA,IAAA,KAAA,IAAA,EAAA,GAAA,IAAA,IACA,EAAA,QAAA,GAOA,IAJA,IAAA,EAAA,KAAA,IAAA,EAAA,GACA,EAAA,KAAA,IAAA,EAAA,EAAA,KAAA,GAAA,OAAA,IACA,EAAA,KAAA,IAAA,EAAA,GACA,EAAA,EACA,IAAA,EAAA,IAAA,IAAA,CAEA,IADA,IAAA,EAAA,EACA,EAAA,EAAA,IAAA,EAAA,IAAA,GAAA,IACA,EAAA,EAAA,SAEA,EAAA,EAAA,GACA,IAAA,EAAA,KAAA,IAAA,EAAA,IAAA,EAAA,GAAA,OAAA,EAAA,EAAA,IAEA,EAAA,EAAA,OAAA,GACA,EAAA,EAAA,SACA,EAAA,EAAA,OAAA,GACA,EAAA,EAGA,OAAA,GAGA,EAAA,UAAA,KAAA,SAAA,GACA,IAAA,EAAA,EAAA,OAAA,KAAA,GACA,OAAA,IAAA,EAAA,UACA,EAAA,SAAA,EACA,KAAA,KAAA,GAAA,UAEA,KAAA,KAAA,IAIA,EAAA,UAAA,IAAA,SAAA,EAAA,GACA,GAAA,EAAA,SAAA,OAAA,IAAA,EAAA,GAAA,MAAA,MACA,GAAA,IAAA,EAAA,KAAA,GAAA,OAAA,EAAA,QAEA,IACA,EAAA,IAAA,MAAA,IACA,EAAA,GAAA,IAAA,EAAA,GAAA,MAAA,MACA,EAAA,GAAA,EACA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,EAAA,GAAA,KAAA,IAAA,EAAA,EAAA,GAAA,GAGA,IAAA,EAAA,EAAA,GACA,EAAA,EACA,EAAA,EACA,EAAA,EAAA,YAAA,GAKA,IAJA,IAAA,IACA,EAAA,IAGA,EAAA,EAAA,OAAA,EAAA,GAAA,EAAA,IAAA,CAEA,IADA,IAAA,EAAA,EAAA,MAAA,GACA,EAAA,EAAA,EAAA,GAAA,EAAA,IAAA,CACA,IAAA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,KACA,EAAA,KAAA,IAAA,IAGA,IAAA,GAAA,IAAA,GAKA,IAAA,EACA,GAAA,GA9BA,MA+BA,GACA,IAAA,GAAA,IAAA,KAEA,EAAA,KAAA,IAAA,EAAA,EAAA,IACA,EAAA,EACA,EAAA,IAXA,EAAA,EAaA,EAAA,GAGA,OAAA,GAGA,EAAA,UAAA,UAAA,SAAA,GACA,IAAA,EAAA,EAAA,KAAA,KAAA,GAEA,OAAA,IAAA,EAAA,EAAA,QAAA,GAGA,EAAA,UAAA,YAAA,SAAA,GACA,IAAA,EAAA,EAAA,QAEA,OADA,EAAA,IAAA,KACA,GAOA,EAAA,KAAA,SAAA,GACA,OAAA,IAAA,EAAA,IAmBA,EAAA,EAAA,GAEA,EAAA,UAAA,UAAA,SAAA,GACA,OAAA,KAAA,KAAA,EAAA,MAAA,KAAA,SAGA,EAAA,UAAA,YAAA,SAAA,GACA,IAAA,EAAA,KAAA,KAAA,EAAA,IAAA,KAAA,OAEA,OADA,EAAA,IAAA,KACA,GAGA,EAAA,UAAA,KAAA,SAAA,EAAA,GACA,GAAA,EAAA,UAAA,EAAA,SAGA,OAFA,EAAA,MAAA,GAAA,EACA,EAAA,OAAA,EACA,EAGA,IAAA,EAAA,EAAA,KAAA,GACA,EAAA,EAAA,MAAA,KAAA,OAAA,IAAA,KAAA,MAAA,OAAA,KAAA,OAAA,IAAA,KAAA,GACA,EAAA,EAAA,KAAA,GAAA,OAAA,KAAA,OACA,EAAA,EAQA,OANA,EAAA,IAAA,KAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,GACA,EAAA,KAAA,GAAA,IACA,EAAA,EAAA,KAAA,KAAA,IAGA,EAAA,UAAA,OAGA,EAAA,UAAA,IAAA,SAAA,EAAA,GACA,GAAA,EAAA,UAAA,EAAA,SAAA,OAAA,IAAA,EAAA,GAAA,UAAA,MAEA,IAAA,EAAA,EAAA,IAAA,GACA,EAAA,EAAA,MAAA,KAAA,OAAA,IAAA,KAAA,MAAA,OAAA,KAAA,OAAA,IAAA,KAAA,GACA,EAAA,EAAA,KAAA,GAAA,OAAA,KAAA,OACA,EAAA,EAOA,OANA,EAAA,IAAA,KAAA,IAAA,EACA,EAAA,EAAA,KAAA,KAAA,GACA,EAAA,KAAA,GAAA,IACA,EAAA,EAAA,KAAA,KAAA,IAGA,EAAA,UAAA,OAGA,EAAA,UAAA,KAAA,SAAA,GAGA,OADA,KAAA,KAAA,EAAA,OAAA,KAAA,GAAA,IAAA,KAAA,KACA,UAAA,OAh2GA,CAk2GA,oBAAA,QAAA,OAAA;;ACl2GA,IAAA,EASA,SAAA,EAAA,GACA,KAAA,KAAA,EAmBA,GA3BA,OAAA,QAAA,SAAA,GAIA,OAHA,IACA,EAAA,IAAA,EAAA,OAEA,EAAA,SAAA,IAMA,OAAA,QAAA,KAAA,EAEA,EAAA,UAAA,SAAA,SAAA,GACA,OAAA,KAAA,MAAA,IAIA,EAAA,UAAA,MAAA,SAAA,GACA,GAAA,KAAA,KAAA,SACA,OAAA,KAAA,KAAA,SAAA,GAGA,IADA,IAAA,EAAA,IAAA,WAAA,GACA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,EAAA,GAAA,KAAA,KAAA,UACA,OAAA,GAGA,iBAAA,KACA,KAAA,QAAA,KAAA,OAAA,gBAEA,EAAA,UAAA,MAAA,SAAA,GACA,IAAA,EAAA,IAAA,WAAA,GAEA,OADA,KAAA,OAAA,gBAAA,GACA,GAEA,KAAA,UAAA,KAAA,SAAA,gBAEA,EAAA,UAAA,MAAA,SAAA,GACA,IAAA,EAAA,IAAA,WAAA,GAEA,OADA,KAAA,SAAA,gBAAA,GACA,GAIA,iBAAA,SAEA,EAAA,UAAA,MAAA,WACA,MAAA,IAAA,MAAA,8BAKA,IACA,IAAA,EAAA,QAAA,UACA,GAAA,mBAAA,EAAA,YACA,MAAA,IAAA,MAAA,iBAEA,EAAA,UAAA,MAAA,SAAA,GACA,OAAA,EAAA,YAAA,IAEA,MAAA;;AC9DA,IAAA,EAAA,QAAA,SACA,EAAA,QAAA,WAEA,SAAA,EAAA,GACA,KAAA,KAAA,GAAA,IAAA,EAAA,KAEA,OAAA,QAAA,EAEA,EAAA,OAAA,SAAA,GACA,OAAA,IAAA,EAAA,IAGA,EAAA,UAAA,WAAA,SAAA,GACA,IAAA,EAAA,EAAA,YACA,EAAA,KAAA,KAAA,EAAA,GAIA,GACA,IAAA,EAAA,IAAA,EAAA,KAAA,KAAA,SAAA,UACA,EAAA,IAAA,IAAA,GAEA,OAAA,GAGA,EAAA,UAAA,WAAA,SAAA,EAAA,GAEA,IAAA,EAAA,EAAA,IAAA,GACA,OAAA,EAAA,IAAA,KAAA,WAAA,KAGA,EAAA,UAAA,KAAA,SAAA,EAAA,EAAA,GACA,IAAA,EAAA,EAAA,YACA,EAAA,EAAA,KAAA,GACA,EAAA,IAAA,EAAA,GAAA,MAAA,GAEA,IACA,EAAA,KAAA,IAAA,EAAA,EAAA,GAAA,IAIA,IADA,IAAA,EAAA,EAAA,KAAA,GACA,EAAA,GAAA,EAAA,MAAA,GAAA,KAMA,IALA,IAAA,EAAA,EAAA,KAAA,GAEA,EAAA,EAAA,MAAA,GAGA,EAAA,EAAA,IAAA,CACA,IAAA,EAAA,KAAA,WAAA,IAAA,EAAA,GAAA,GACA,GACA,EAAA,GAEA,IAAA,EAAA,EAAA,MAAA,GAAA,OAAA,GACA,GAAA,IAAA,EAAA,IAAA,IAAA,IAAA,EAAA,IAAA,GAAA,CAGA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,IAAA,CAGA,GAAA,KAFA,EAAA,EAAA,UAEA,IAAA,GACA,OAAA,EACA,GAAA,IAAA,EAAA,IAAA,GACA,MAGA,GAAA,IAAA,EACA,OAAA,GAGA,OAvBA,GA0BA,EAAA,UAAA,WAAA,SAAA,EAAA,GACA,IAAA,EAAA,EAAA,YACA,EAAA,EAAA,KAAA,GACA,EAAA,IAAA,EAAA,GAAA,MAAA,GAEA,IACA,EAAA,KAAA,IAAA,EAAA,EAAA,GAAA,IAIA,IADA,IAAA,EAAA,EAAA,KAAA,GACA,EAAA,GAAA,EAAA,MAAA,GAAA,KAKA,IAJA,IAAA,EAAA,EAAA,KAAA,GAEA,EAAA,EAAA,MAAA,GAEA,EAAA,EAAA,IAAA,CACA,IAAA,EAAA,KAAA,WAAA,IAAA,EAAA,GAAA,GAEA,EAAA,EAAA,IAAA,GACA,GAAA,IAAA,EAAA,KAAA,GACA,OAAA,EAEA,IAAA,EAAA,EAAA,MAAA,GAAA,OAAA,GACA,GAAA,IAAA,EAAA,IAAA,IAAA,IAAA,EAAA,IAAA,GAAA,CAGA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,IAAA,CAGA,GAAA,KAFA,EAAA,EAAA,UAEA,IAAA,GACA,OAAA,EAAA,UAAA,KAAA,GAAA,IAAA,GACA,GAAA,IAAA,EAAA,IAAA,GACA,MAGA,GAAA,IAAA,EAEA,OADA,EAAA,EAAA,UACA,UAAA,KAAA,GAAA,IAAA,IAIA,OAAA;;ACjHA,IAAA,EAAA,QAAA,eACA,OAAA,QAAA,EACA,EAAA,YAAA,EACA,EAAA,WAAA,EACA,IAAA,EAAA,QAAA,SACA,EAAA,IAAA,EAAA,IACA,EAAA,QAAA,gBACA,EAAA,IAAA,EACA,EAAA,IAAA,EAAA,GACA,EAAA,IAAA,EAAA,GACA,EAAA,IAAA,EAAA,GACA,EAAA,IAAA,EAAA,IACA,EAAA,IAAA,EAAA,GACA,EAAA,IAAA,EAAA,IACA,EAAA,IAAA,EAAA,GACA,EAAA,IAAA,EAAA,GACA,EAAA,IAAA,EAAA,IACA,EAAA,IAAA,EAAA,GACA,EAAA,IAAA,EAAA,IACA,EAAA,KAEA,SAAA,IACA,GAAA,OAAA,EACA,OAAA,EAEA,IACA,EAAA,GACA,EAAA,GAAA,EACA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAHA,QAGA,GAAA,EAAA,CAEA,IADA,IAAA,EAAA,KAAA,KAAA,KAAA,KAAA,IACA,EAAA,EAAA,EAAA,GAAA,EAAA,IAAA,GACA,EAAA,EAAA,IAAA,EADA,KAIA,IAAA,GAAA,EAAA,IAAA,IAGA,EAAA,KAAA,GAGA,OADA,EAAA,EACA,EAGA,SAAA,EAAA,GAGA,IAFA,IAAA,EAAA,IAEA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,GAAA,IAAA,EAAA,KAAA,EAAA,IACA,OAAA,IAAA,EAAA,KAAA,EAAA,IAOA,OAAA,EAGA,SAAA,EAAA,GACA,IAAA,EAAA,EAAA,KAAA,GACA,OAAA,IAAA,EAAA,MAAA,GAAA,OAAA,EAAA,KAAA,IAAA,UAAA,KAAA,GAGA,SAAA,EAAA,EAAA,GACA,GAAA,EAAA,GAEA,OACA,IAAA,EADA,IAAA,GAAA,IAAA,EACA,CAAA,IAAA,KAEA,CAAA,IAAA,KAKA,IAAA,EAAA,EAEA,IAJA,EAAA,IAAA,EAAA,KAIA,CAEA,IADA,EAAA,IAAA,EAAA,EAAA,KAAA,KAAA,EAAA,KACA,EAAA,YAAA,GACA,EAAA,MAAA,GAQA,GANA,EAAA,UACA,EAAA,KAAA,GAEA,EAAA,MAAA,IACA,EAAA,KAAA,GAEA,EAAA,IAAA,IAIA,IAAA,EAAA,IAAA,GACA,KAAA,EAAA,IAAA,GAAA,IAAA,IACA,EAAA,KAAA,QALA,KAAA,EAAA,IAAA,GAAA,IAAA,IACA,EAAA,KAAA,GAQA,GAAA,EADA,EAAA,EAAA,KAAA,KACA,EAAA,IACA,EAAA,IAAA,EAAA,IACA,EAAA,KAAA,IAAA,EAAA,KAAA,GACA,OAAA;;AtCpGAk1H,OAAOC,QAAQ,CAAC8L,MAAM,CAACC,IAAI,KAAKC,MAAM,oMAAoMC,MAAM,CAACF,IAAI,KAAKC,MAAM,oQAAoQE,MAAM,CAACH,IAAI,KAAKC,MAAM,oYAAoYG,OAAO,CAACJ,IAAI,KAAKC,MAAM,ogBAAogBI,OAAO,CAACL,IAAI,KAAKC,MAAM,owBAAowBK,OAAO,CAACN,IAAI,KAAKC,MAAM,ogCAAogCM,OAAO,CAACP,IAAI,KAAKC,MAAM,ogDAAogDO,OAAO,CAACR,IAAI,KAAKC,MAAM;;;AuCoKjyJ,IAAA,EAAA,QAAA,UAAA,OApKA,EAAA,QAAA,SACA,EAAA,QAAA,gBACA,EAAA,IAAA,EACA,EAAA,IAAA,EAAA,IACA,EAAA,IAAA,EAAA,IACA,EAAA,IAAA,EAAA,IACA,EAAA,IAAA,EAAA,GACA,EAAA,IAAA,EAAA,GACA,EAAA,QAAA,mBACA,EAAA,QAAA,eAGA,SAAA,EAAA,EAAA,GAMA,OALA,EAAA,GAAA,OACA,EAAA,SAAA,KACA,EAAA,IAAA,EAAA,EAAA,IAEA,KAAA,KAAA,IAAA,EAAA,GACA,KAGA,SAAA,EAAA,EAAA,GAMA,OALA,EAAA,GAAA,OACA,EAAA,SAAA,KACA,EAAA,IAAA,EAAA,EAAA,IAEA,KAAA,MAAA,IAAA,EAAA,GACA,KAjBA,OAAA,QAAA,EAoBA,IAAA,EAAA,GACA,SAAA,EAAA,EAAA,GACA,IAAA,EAAA,EAAA,SAAA,OACA,EAAA,CAAA,EAAA,EAAA,SAAA,KAAA,KAAA,KACA,GAAA,KAAA,EACA,OAAA,EAAA,GAEA,IAyBA,EAzBA,EAAA,EAEA,GAAA,EAAA,WACA,EAAA,cACA,EAAA,WAAA,KACA,EAAA,KAAA,GAcA,OAZA,GAAA,EAKA,GAHA,OAAA,GAAA,OAAA,EAGA,EAIA,EAEA,EAAA,GAAA,EACA,EAOA,OALA,EAAA,KAAA,EAAA,KAAA,MAEA,GAAA,GAGA,GACA,IAAA,KACA,EAAA,IAAA,GAAA,IAAA,KAEA,GAAA,GAEA,MACA,IAAA,MACA,EAAA,EAAA,IAAA,IACA,IAAA,IAAA,EAAA,IAAA,KAEA,GAAA,GAEA,MACA,QACA,GAAA,EAGA,OADA,EAAA,GAAA,EACA,EAGA,SAAA,EAAA,EAAA,EAAA,GACA,KAAA,aAAA,GACA,KAAA,QAAA,IAAA,EAAA,GACA,KAAA,OAAA,EAAA,KAAA,KAAA,SACA,KAAA,UAAA,EAAA,OACA,KAAA,UAAA,EACA,KAAA,WAAA,EACA,KAAA,gBAAA,EACA,GACA,KAAA,aAAA,EACA,KAAA,cAAA,GAEA,KAAA,WAAA,EA4DA,SAAA,EAAA,EAAA,GACA,IAAA,EAAA,IAAA,EAAA,EAAA,WACA,OAAA,EAGA,EAAA,SAAA,GAFA,EA5DA,OAAA,eAAA,EAAA,UAAA,cAAA,CACA,YAAA,EACA,IAAA,WAIA,MAHA,iBAAA,KAAA,aACA,KAAA,WAAA,EAAA,KAAA,QAAA,KAAA,QAEA,KAAA,cAGA,EAAA,UAAA,aAAA,WAKA,OAJA,KAAA,QACA,KAAA,MAAA,IAAA,EAAA,EAAA,KAAA,aAEA,KAAA,KAAA,KAAA,KAAA,MAAA,KAAA,QAAA,OAAA,KAAA,OAAA,UACA,KAAA,gBAGA,EAAA,UAAA,cAAA,SAAA,GAGA,IAAA,GADA,GADA,EAAA,IAAA,EAAA,IACA,MAAA,KAAA,SACA,OAAA,KAAA,OAAA,UACA,EAAA,IAAA,EAAA,EAAA,WACA,EAAA,KAAA,WACA,GAAA,EAAA,OAAA,EAAA,OAAA,CACA,IAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,QACA,EAAA,KAAA,GACA,EAAA,EAAA,OAAA,CAAA,EAAA,IAEA,OAAA,GAGA,EAAA,UAAA,aAAA,SAAA,GACA,OAAA,EAAA,KAAA,KAAA,IAGA,EAAA,UAAA,cAAA,SAAA,GACA,OAAA,EAAA,KAAA,MAAA,IAGA,EAAA,UAAA,SAAA,SAAA,GACA,OAAA,EAAA,KAAA,QAAA,IAGA,EAAA,UAAA,aAAA,SAAA,GACA,OAAA,EAAA,KAAA,KAAA,IAGA,EAAA,UAAA,aAAA,SAAA,EAAA,GAOA,OANA,EAAA,GAAA,OACA,EAAA,SAAA,KACA,EAAA,IAAA,EAAA,EAAA,IAEA,KAAA,MAAA,EACA,KAAA,KAAA,IAAA,EAAA,GACA;;;AC/GA,IAAA,EAAA,QAAA,UAAA,OA1CA,EAAA,QAAA,uBACA,EAAA,QAAA,qBAEA,EAAA,QAAA,YAEA,SAAA,EAAA,GACA,IAAA,EAAA,IAAA,EAAA,EAAA,GAAA,MAAA,OACA,EAAA,IAAA,EAAA,EAAA,GAAA,IAAA,OAEA,OAAA,IAAA,EAAA,EAAA,GAGA,IAAA,EAAA,CACA,QAAA,EAAA,KAAA,EAAA,QAAA,GAGA,SAAA,EAAA,EAAA,EAAA,EAAA,GACA,OAAA,EAAA,SAAA,SAAA,IAAA,EAAA,GACA,EAAA,EAAA,SAAA,EAAA,IAGA,EAAA,GAAA,SACA,EAAA,GAAA,SACA,EAAA,GAAA,IAAA,EAAA,CAAA,IAEA,EAAA,SAAA,KACA,EAAA,IAAA,EAAA,EAAA,IAGA,iBAAA,EACA,IAAA,EAAA,EAAA,EAAA,GAAA,GAAA,IAGA,EAAA,SAAA,KACA,EAAA,IAAA,EAAA,EAAA,IAGA,IAAA,EAAA,EAAA,GAAA,KAGA,QAAA,mBAAA,QAAA,yBAAA,QAAA,iBAAA,EACA,QAAA,oBAAA,QAAA,cAAA;;;ACDA,IAAA,EAAA,QAAA,UAAA,OAxCA,EAAA,QAAA,SACA,EAAA,QAAA,eAEA,SAAA,EAAA,GACA,IAAA,EAAA,EAAA,GAGA,MAAA,CACA,QAHA,EAAA,MAAA,EAAA,KAAA,EAAA,UACA,OAAA,IAAA,EAAA,EAAA,iBAAA,UAGA,UAAA,EAAA,KAAA,EAAA,UAGA,SAAA,EAAA,EAAA,GACA,IAAA,EAAA,EAAA,GACA,EAAA,EAAA,QAAA,aAEA,GADA,EAAA,KAAA,EAAA,SACA,IAAA,EAAA,GAAA,IAAA,EAAA,SAAA,KAAA,EAAA,UACA,EAAA,EAAA,MAAA,EAAA,KAAA,EAAA,SACA,EAAA,EAAA,MAAA,EAAA,KAAA,EAAA,SACA,EAAA,EAAA,YACA,EAAA,EAAA,OACA,EAAA,EAAA,OACA,EAAA,EAAA,OAAA,EAAA,WACA,EAAA,EAAA,OAAA,EAAA,WACA,EAAA,EAAA,UACA,EAAA,EAAA,UACA,IAAA,EAAA,EAAA,KAAA,GAAA,KAAA,GAAA,KAAA,GAGA,OAFA,EAAA,KAAA,GACA,EAAA,KAAA,GACA,IAAA,EAAA,EAAA,KAAA,EAAA,WAAA,KAAA,EAAA,SAAA,SAAA,EAAA,IAGA,SAAA,EAAA,GAGA,IAFA,IAAA,EAAA,EAAA,QAAA,aACA,EAAA,IAAA,EAAA,EAAA,IACA,EAAA,IAAA,EAAA,UAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,SACA,EAAA,IAAA,EAAA,EAAA,IAEA,OAAA,EApCA,OAAA,QAAA,EA6BA,EAAA,KAAA;;AzC/BAjM,OAAOC,QAAQ,CAACwM,MAAM,kBAAkB19F,IAAI,iBAAiB29F,WAAU,EAAGC,WAAW,kGAAkGC,UAAU,2BAA2BC,iBAAiB,GAAGC,WAAW,CAAChiI,KAAK,QAAQiiI,UAAS,EAAGC,IAAI,kBAAkBtjH,KAAK,WAAWujH,YAAY,WAAWC,QAAQ,SAASC,SAAS,KAAKC,UAAU,UAAUC,YAAY,CAAC,kCAAkC,+BAA+BC,UAAU,2DAA2DC,QAAQ,2CAA2CC,MAAM,kBAAkBC,OAAO,4GAA4GC,OAAO,CAAChkH,KAAK,gBAAgBikH,MAAM,qBAAqBC,KAAK,CAACvgH,IAAI,8CAA8CwgH,oBAAmB,EAAGC,aAAa,CAACC,QAAQ,SAASC,QAAQ,SAASC,UAAU,SAASC,YAAY,SAASxK,SAAS,SAASyK,sBAAsB,SAASC,4BAA4B,UAAUC,YAAW,EAAGC,YAAY,kBAAkBC,gBAAgB,CAACC,KAAK,SAASC,UAAU,UAAUC,MAAM,SAASC,mBAAmB,SAASC,YAAY,SAASC,wBAAwB,SAASC,qBAAqB,SAASC,uBAAuB,SAASC,uBAAuB,SAASC,kBAAkB,SAASC,SAAS,SAASC,KAAK,SAASC,OAAO,SAASC,MAAM,UAAUlwC,MAAM,CAAC,OAAOmwC,SAAS,sCAAsCC,SAAS,CAAC,KAAK,WAAW,QAAQ,gBAAgBC,QAAQ,MAAMC,KAAK,kBAAkB/lH,KAAK,WAAWgmH,WAAW,CAAC5kI,KAAK,MAAMuiB,IAAI,iDAAiDsiH,QAAQ,CAACR,KAAK,yEAAyEC,OAAO,yEAAyEQ,KAAK,iCAAiCtwE,KAAK,+BAA+B1S,KAAK,qDAAqDxiC,QAAQ,+BAA+BA,QAAQ;;A0CA98D,aAEA,IAAA,EAAA,QAEA,SAAA,EAAA,EAAA,GACA,GAAA,MAAA,QAAA,GACA,OAAA,EAAA,QACA,IAAA,EACA,MAAA,GACA,IAAA,EAAA,GACA,GAAA,iBAAA,EAAA,CACA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,EAAA,GAAA,EAAA,EAAA,GACA,OAAA,EAEA,GAAA,QAAA,EAAA,EACA,EAAA,EAAA,QAAA,eAAA,KACA,OAAA,GAAA,IACA,EAAA,IAAA,GACA,IAAA,EAAA,EAAA,EAAA,EAAA,OAAA,GAAA,EACA,EAAA,KAAA,SAAA,EAAA,GAAA,EAAA,EAAA,GAAA,UAEA,IAAA,EAAA,EAAA,EAAA,EAAA,OAAA,IAAA,CACA,IAAA,EAAA,EAAA,WAAA,GACA,EAAA,GAAA,EACA,EAAA,IAAA,EACA,EACA,EAAA,KAAA,EAAA,GAEA,EAAA,KAAA,GAGA,OAAA,EAIA,SAAA,EAAA,GACA,OAAA,IAAA,EAAA,OACA,IAAA,EAEA,EAIA,SAAA,EAAA,GAEA,IADA,IAAA,EAAA,GACA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,GAAA,EAAA,EAAA,GAAA,SAAA,KACA,OAAA,EAdA,EAAA,QAAA,EAQA,EAAA,MAAA,EAQA,EAAA,MAAA,EAEA,EAAA,OAAA,SAAA,EAAA,GACA,MAAA,QAAA,EACA,EAAA,GAEA;;ACxDA,aAEA,IAAA,EAAA,QACA,EAAA,QAAA,SACA,EAAA,QAAA,uBACA,EAAA,QAAA,6BASA,SAAA,EAAA,EAAA,GAIA,IAHA,IAAA,EAAA,GACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,QACA,EAAA,KAAA,IAAA,GAAA,CACA,IAAA,EACA,GAAA,EAAA,QAAA,CACA,IAAA,EAAA,EAAA,MAAA,EAAA,GAEA,EADA,GAAA,GAAA,GAAA,GACA,GAAA,GAAA,EAEA,EACA,EAAA,MAAA,QAEA,EAAA,EAEA,EAAA,KAAA,GAIA,IADA,IAAA,EAAA,IAAA,EAAA,KAAA,IAAA,IAAA,EAAA,MAAA,EAAA,GAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,IACA,EAAA,KAAA,GACA,EAAA,OAAA,GAGA,OAAA,EAKA,SAAA,EAAA,EAAA,GACA,IAAA,EAAA,CACA,GACA,IAGA,EAAA,EAAA,QACA,EAAA,EAAA,QAGA,IAFA,IAAA,EAAA,EACA,EAAA,EACA,EAAA,MAAA,GAAA,GAAA,EAAA,MAAA,GAAA,GAAA,CAGA,IAMA,EAYA,EAIA,EAtBA,EAAA,EAAA,MAAA,GAAA,EAAA,EACA,EAAA,EAAA,MAAA,GAAA,EAAA,EAMA,GALA,IAAA,IACA,GAAA,GACA,IAAA,IACA,GAAA,GAEA,IAAA,EAAA,GACA,EAAA,OAMA,EAHA,KADA,EAAA,EAAA,MAAA,GAAA,EAAA,IACA,IAAA,GAAA,IAAA,EAGA,GAFA,EAOA,GAHA,EAAA,GAAA,KAAA,GAGA,IAAA,EAAA,GACA,EAAA,OAMA,EAHA,KADA,EAAA,EAAA,MAAA,GAAA,EAAA,IACA,IAAA,GAAA,IAAA,EAGA,GAFA,EAIA,EAAA,GAAA,KAAA,GAGA,EAAA,IAAA,EAAA,IACA,EAAA,EAAA,GACA,EAAA,IAAA,EAAA,IACA,EAAA,EAAA,GACA,EAAA,OAAA,GACA,EAAA,OAAA,GAGA,OAAA,EAIA,SAAA,EAAA,EAAA,EAAA,GACA,IAAA,EAAA,IAAA,EACA,EAAA,UAAA,GAAA,WACA,YAAA,IAAA,KAAA,GAAA,KAAA,GACA,KAAA,GAAA,EAAA,KAAA,OAKA,SAAA,EAAA,GACA,MAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,OACA,EAIA,SAAA,EAAA,GACA,OAAA,IAAA,EAAA,EAAA,MAAA,MA7GA,EAAA,OAAA,EACA,EAAA,QAAA,EAAA,QACA,EAAA,MAAA,EAAA,MACA,EAAA,MAAA,EAAA,MACA,EAAA,OAAA,EAAA,OA8BA,EAAA,OAAA,EAyDA,EAAA,OAAA,EASA,EAAA,eAAA,EAMA,EAAA,WAAA,EAKA,EAAA,UAAA;;ACtHA,aAEA,IAAA,EAAA,QAAA,SACA,EAAA,QAAA,kBACA,EAAA,EAAA,MACA,EAAA,EAAA,OACA,EAAA,EAAA,OACA,EAAA,EAAA,OAEA,SAAA,EAAA,EAAA,GACA,KAAA,KAAA,EACA,KAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAGA,KAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,OAAA,EAAA,KAAA,KAAA,GAGA,KAAA,KAAA,IAAA,EAAA,GAAA,MAAA,KAAA,KACA,KAAA,IAAA,IAAA,EAAA,GAAA,MAAA,KAAA,KACA,KAAA,IAAA,IAAA,EAAA,GAAA,MAAA,KAAA,KAGA,KAAA,EAAA,EAAA,GAAA,IAAA,EAAA,EAAA,EAAA,IACA,KAAA,EAAA,EAAA,GAAA,KAAA,cAAA,EAAA,EAAA,EAAA,MAGA,KAAA,QAAA,IAAA,MAAA,GACA,KAAA,QAAA,IAAA,MAAA,GACA,KAAA,QAAA,IAAA,MAAA,GACA,KAAA,QAAA,IAAA,MAAA,GAGA,IAAA,EAAA,KAAA,GAAA,KAAA,EAAA,IAAA,KAAA,IACA,GAAA,EAAA,KAAA,KAAA,EACA,KAAA,KAAA,MAEA,KAAA,eAAA,EACA,KAAA,KAAA,KAAA,EAAA,MAAA,KAAA,MAmNA,SAAA,EAAA,EAAA,GACA,KAAA,MAAA,EACA,KAAA,KAAA,EACA,KAAA,YAAA,KAnNA,OAAA,QAAA,EAEA,EAAA,UAAA,MAAA,WACA,MAAA,IAAA,MAAA,oBAGA,EAAA,UAAA,SAAA,WACA,MAAA,IAAA,MAAA,oBAGA,EAAA,UAAA,aAAA,SAAA,EAAA,GACA,EAAA,EAAA,aACA,IAAA,EAAA,EAAA,cAEA,EAAA,EAAA,EAAA,GACA,GAAA,GAAA,EAAA,KAAA,IAAA,EAAA,KAAA,GAAA,EAAA,EAAA,GACA,GAAA,EAIA,IADA,IAAA,EAAA,GACA,EAAA,EAAA,EAAA,EAAA,OAAA,GAAA,EAAA,KAAA,CACA,IAAA,EAAA,EACA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,GAAA,EAAA,IACA,GAAA,GAAA,GAAA,EAAA,GACA,EAAA,KAAA,GAKA,IAFA,IAAA,EAAA,KAAA,OAAA,KAAA,KAAA,MACA,EAAA,KAAA,OAAA,KAAA,KAAA,MACA,EAAA,EAAA,EAAA,EAAA,IAAA,CACA,IAAA,EAAA,EAAA,EAAA,EAAA,OAAA,IAAA,EACA,EAAA,EAAA,MACA,EACA,EAAA,EAAA,SAAA,EAAA,OAAA,IACA,KAAA,IACA,EAAA,EAAA,SAAA,EAAA,OAAA,GAAA,QAEA,EAAA,EAAA,IAAA,GAEA,OAAA,EAAA,OAGA,EAAA,UAAA,SAAA,SAAA,EAAA,GACA,IAAA,EAAA,EAGA,EAAA,EAAA,cAAA,GACA,EAAA,EAAA,IAQA,IAPA,IAAA,EAAA,EAAA,OAGA,EAAA,EAAA,EAAA,GAGA,EAAA,KAAA,OAAA,KAAA,KAAA,MACA,EAAA,EAAA,OAAA,EAAA,GAAA,EAAA,IAAA,CAEA,IAAA,EAAA,EAAA,GAAA,GAAA,IAAA,EAAA,GAAA,IACA,IAKA,GAJA,GAAA,GACA,IACA,EAAA,EAAA,KAAA,GAEA,EAAA,EACA,MACA,IAAA,EAAA,EAAA,GACA,EAAA,IAAA,GAIA,EAHA,WAAA,EAAA,KAEA,EAAA,EACA,EAAA,SAAA,EAAA,EAAA,GAAA,IAEA,EAAA,SAAA,GAAA,EAAA,GAAA,GAAA,OAGA,EAAA,EACA,EAAA,IAAA,EAAA,EAAA,GAAA,IAEA,EAAA,IAAA,GAAA,EAAA,GAAA,GAAA,OAGA,MAAA,WAAA,EAAA,KAAA,EAAA,MAAA,GAGA,EAAA,UAAA,YAAA,SAAA,EACA,EACA,EACA,EACA,GAOA,IANA,IAAA,EAAA,KAAA,QACA,EAAA,KAAA,QACA,EAAA,KAAA,QAGA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,IAAA,CACA,IACA,GADA,EAAA,EAAA,IACA,cAAA,GACA,EAAA,GAAA,EAAA,IACA,EAAA,GAAA,EAAA,OAIA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,CACA,IAAA,EAAA,EAAA,EACA,EAAA,EACA,GAAA,IAAA,EAAA,IAAA,IAAA,EAAA,GAAA,CAQA,IAAA,EAAA,CACA,EAAA,GACA,KACA,KACA,EAAA,IAIA,IAAA,EAAA,GAAA,EAAA,IAAA,EAAA,GAAA,IACA,EAAA,GAAA,EAAA,GAAA,IAAA,EAAA,IACA,EAAA,GAAA,EAAA,GAAA,MAAA,SAAA,EAAA,GAAA,QACA,IAAA,EAAA,GAAA,EAAA,IAAA,EAAA,GAAA,EAAA,WACA,EAAA,GAAA,EAAA,GAAA,MAAA,SAAA,EAAA,IACA,EAAA,GAAA,EAAA,GAAA,IAAA,EAAA,GAAA,SAEA,EAAA,GAAA,EAAA,GAAA,MAAA,SAAA,EAAA,IACA,EAAA,GAAA,EAAA,GAAA,MAAA,SAAA,EAAA,GAAA,QAGA,IAAA,EAAA,EACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,GAGA,EAAA,EAAA,EAAA,GAAA,EAAA,IACA,EAAA,KAAA,IAAA,EAAA,GAAA,OAAA,GACA,EAAA,GAAA,IAAA,MAAA,GACA,EAAA,GAAA,IAAA,MAAA,GACA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,IAAA,CACA,IAAA,EAAA,EAAA,EAAA,GAAA,GACA,EAAA,EAAA,EAAA,GAAA,GAEA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,IAAA,EAAA,IACA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,QAhDA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,IACA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,IACA,EAAA,KAAA,IAAA,EAAA,GAAA,OAAA,GACA,EAAA,KAAA,IAAA,EAAA,GAAA,OAAA,GAiDA,IAAA,EAAA,KAAA,OAAA,KAAA,KAAA,MACA,EAAA,KAAA,QACA,IAAA,EAAA,EAAA,GAAA,EAAA,IAAA,CAGA,IAFA,IAAA,EAAA,EAEA,GAAA,GAAA,CACA,IAAA,GAAA,EACA,IAAA,EAAA,EAAA,EAAA,EAAA,IACA,EAAA,GAAA,EAAA,EAAA,GAAA,GACA,IAAA,EAAA,KACA,GAAA,GAEA,IAAA,EACA,MACA,IACA,IAKA,GAHA,GAAA,GACA,IACA,EAAA,EAAA,KAAA,GACA,EAAA,EACA,MAEA,IAAA,EAAA,EAAA,EAAA,EAAA,IAAA,CACA,IACA,EADA,EAAA,EAAA,GAEA,IAAA,IAEA,EAAA,EACA,EAAA,EAAA,GAAA,EAAA,GAAA,GACA,EAAA,IACA,EAAA,EAAA,IAAA,EAAA,GAAA,GAAA,OAGA,EADA,WAAA,EAAA,KACA,EAAA,SAAA,GAEA,EAAA,IAAA,KAIA,IAAA,EAAA,EAAA,EAAA,EAAA,IACA,EAAA,GAAA,KAEA,OAAA,EACA,EAEA,EAAA,OAQA,EAAA,UAAA,EAEA,EAAA,UAAA,GAAA,WACA,MAAA,IAAA,MAAA,oBAGA,EAAA,UAAA,SAAA,WACA,OAAA,KAAA,MAAA,SAAA,OAGA,EAAA,UAAA,YAAA,SAAA,EAAA,GACA,EAAA,EAAA,QAAA,EAAA,GAEA,IAAA,EAAA,KAAA,EAAA,aAGA,IAAA,IAAA,EAAA,IAAA,IAAA,EAAA,IAAA,IAAA,EAAA,KACA,EAAA,OAAA,GAAA,EAAA,EASA,OARA,IAAA,EAAA,GACA,EAAA,EAAA,EAAA,OAAA,GAAA,GAAA,GACA,IAAA,EAAA,IACA,EAAA,EAAA,EAAA,OAAA,GAAA,GAAA,GAEA,KAAA,MAAA,EAAA,MAAA,EAAA,EAAA,GACA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,IAGA,IAAA,IAAA,EAAA,IAAA,IAAA,EAAA,KACA,EAAA,OAAA,IAAA,EACA,OAAA,KAAA,WAAA,EAAA,MAAA,EAAA,EAAA,GAAA,IAAA,EAAA,IAEA,MAAA,IAAA,MAAA,yBAGA,EAAA,UAAA,iBAAA,SAAA,GACA,OAAA,KAAA,OAAA,GAAA,IAGA,EAAA,UAAA,QAAA,SAAA,GACA,IAAA,EAAA,KAAA,MAAA,EAAA,aACA,EAAA,KAAA,OAAA,QAAA,KAAA,GAEA,OAAA,EACA,CAAA,KAAA,OAAA,SAAA,EAAA,GAAA,OAAA,GAEA,CAAA,GAAA,OAAA,EAAA,KAAA,OAAA,QAAA,KAAA,KAGA,EAAA,UAAA,OAAA,SAAA,EAAA,GACA,OAAA,EAAA,OAAA,KAAA,QAAA,GAAA,IAGA,EAAA,UAAA,WAAA,SAAA,GACA,GAAA,KAAA,YACA,OAAA,KAEA,IAAA,EAAA,CACA,QAAA,KACA,IAAA,KACA,KAAA,MAOA,OALA,EAAA,IAAA,KAAA,cAAA,GACA,EAAA,QAAA,KAAA,YAAA,EAAA,GACA,EAAA,KAAA,KAAA,WACA,KAAA,YAAA,EAEA,MAGA,EAAA,UAAA,YAAA,SAAA,GACA,IAAA,KAAA,YACA,OAAA,EAEA,IAAA,EAAA,KAAA,YAAA,QACA,QAAA,GAGA,EAAA,OAAA,QAAA,KAAA,MAAA,EAAA,YAAA,GAAA,EAAA,OAGA,EAAA,UAAA,YAAA,SAAA,EAAA,GACA,GAAA,KAAA,aAAA,KAAA,YAAA,QACA,OAAA,KAAA,YAAA,QAIA,IAFA,IAAA,EAAA,CAAA,MACA,EAAA,KACA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,CACA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,IACA,EAAA,EAAA,MACA,EAAA,KAAA,GAEA,MAAA,CACA,KAAA,EACA,OAAA,IAIA,EAAA,UAAA,cAAA,SAAA,GACA,GAAA,KAAA,aAAA,KAAA,YAAA,IACA,OAAA,KAAA,YAAA,IAKA,IAHA,IAAA,EAAA,CAAA,MACA,GAAA,GAAA,GAAA,EACA,EAAA,IAAA,EAAA,KAAA,KAAA,MACA,EAAA,EAAA,EAAA,EAAA,IACA,EAAA,GAAA,EAAA,EAAA,GAAA,IAAA,GACA,MAAA,CACA,IAAA,EACA,OAAA,IAIA,EAAA,UAAA,SAAA,WACA,OAAA,MAGA,EAAA,UAAA,KAAA,SAAA,GAEA,IADA,IAAA,EAAA,KACA,EAAA,EAAA,EAAA,EAAA,IACA,EAAA,EAAA,MACA,OAAA;;ACrXA,aAEA,IAAA,EAAA,QAAA,YACA,EAAA,QAAA,kBACA,EAAA,QAAA,SACA,EAAA,QAAA,YACA,EAAA,EAAA,KAEA,EAAA,EAAA,MAAA,OAEA,SAAA,EAAA,GACA,EAAA,KAAA,KAAA,QAAA,GAEA,KAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,MAAA,KAAA,KACA,KAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,MAAA,KAAA,KACA,KAAA,KAAA,KAAA,IAAA,UAEA,KAAA,MAAA,IAAA,KAAA,EAAA,UAAA,KAAA,GACA,KAAA,OAAA,IAAA,KAAA,EAAA,UAAA,IAAA,KAAA,GAAA,MAAA,GAGA,KAAA,KAAA,KAAA,iBAAA,GACA,KAAA,YAAA,IAAA,MAAA,GACA,KAAA,YAAA,IAAA,MAAA,GAoOA,SAAA,EAAA,EAAA,EAAA,EAAA,GACA,EAAA,UAAA,KAAA,KAAA,EAAA,UACA,OAAA,GAAA,OAAA,GACA,KAAA,EAAA,KACA,KAAA,EAAA,KACA,KAAA,KAAA,IAEA,KAAA,EAAA,IAAA,EAAA,EAAA,IACA,KAAA,EAAA,IAAA,EAAA,EAAA,IAEA,IACA,KAAA,EAAA,SAAA,KAAA,MAAA,KACA,KAAA,EAAA,SAAA,KAAA,MAAA,MAEA,KAAA,EAAA,MACA,KAAA,EAAA,KAAA,EAAA,MAAA,KAAA,MAAA,MACA,KAAA,EAAA,MACA,KAAA,EAAA,KAAA,EAAA,MAAA,KAAA,MAAA,MACA,KAAA,KAAA,GA4NA,SAAA,EAAA,EAAA,EAAA,EAAA,GACA,EAAA,UAAA,KAAA,KAAA,EAAA,YACA,OAAA,GAAA,OAAA,GAAA,OAAA,GACA,KAAA,EAAA,KAAA,MAAA,IACA,KAAA,EAAA,KAAA,MAAA,IACA,KAAA,EAAA,IAAA,EAAA,KAEA,KAAA,EAAA,IAAA,EAAA,EAAA,IACA,KAAA,EAAA,IAAA,EAAA,EAAA,IACA,KAAA,EAAA,IAAA,EAAA,EAAA,KAEA,KAAA,EAAA,MACA,KAAA,EAAA,KAAA,EAAA,MAAA,KAAA,MAAA,MACA,KAAA,EAAA,MACA,KAAA,EAAA,KAAA,EAAA,MAAA,KAAA,MAAA,MACA,KAAA,EAAA,MACA,KAAA,EAAA,KAAA,EAAA,MAAA,KAAA,MAAA,MAEA,KAAA,KAAA,KAAA,IAAA,KAAA,MAAA,IAleA,EAAA,EAAA,GACA,OAAA,QAAA,EAEA,EAAA,UAAA,iBAAA,SAAA,GAEA,GAAA,KAAA,OAAA,KAAA,GAAA,KAAA,GAAA,IAAA,KAAA,EAAA,KAAA,GAAA,CAIA,IAAA,EACA,EACA,GAAA,EAAA,KACA,EAAA,IAAA,EAAA,EAAA,KAAA,IAAA,MAAA,KAAA,SACA,CACA,IAAA,EAAA,KAAA,cAAA,KAAA,GAGA,GADA,EAAA,EAAA,GAAA,IAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,IACA,MAAA,KAAA,KAEA,GAAA,EAAA,OACA,EAAA,IAAA,EAAA,EAAA,OAAA,QACA,CAEA,IAAA,EAAA,KAAA,cAAA,KAAA,GACA,IAAA,KAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,KAAA,EAAA,EAAA,OAAA,IACA,EAAA,EAAA,IAEA,EAAA,EAAA,GACA,EAAA,IAAA,KAAA,EAAA,IAAA,GAAA,EAAA,IAAA,KAAA,EAAA,EAAA,OAAA,MAiBA,MAAA,CACA,KAAA,EACA,OAAA,EACA,MAdA,EAAA,MACA,EAAA,MAAA,IAAA,SAAA,GACA,MAAA,CACA,EAAA,IAAA,EAAA,EAAA,EAAA,IACA,EAAA,IAAA,EAAA,EAAA,EAAA,OAIA,KAAA,cAAA,MAUA,EAAA,UAAA,cAAA,SAAA,GAIA,IAAA,EAAA,IAAA,KAAA,EAAA,KAAA,IAAA,EAAA,KAAA,GACA,EAAA,IAAA,EAAA,GAAA,MAAA,GAAA,UACA,EAAA,EAAA,SAEA,EAAA,IAAA,EAAA,GAAA,MAAA,GAAA,SAAA,UAAA,OAAA,GAIA,MAAA,CAFA,EAAA,OAAA,GAAA,UACA,EAAA,OAAA,GAAA,YAIA,EAAA,UAAA,cAAA,SAAA,GA2BA,IAzBA,IAYA,EACA,EAEA,EACA,EAEA,EACA,EAEA,EAEA,EACA,EAxBA,EAAA,KAAA,EAAA,MAAA,KAAA,MAAA,KAAA,EAAA,YAAA,IAIA,EAAA,EACA,EAAA,KAAA,EAAA,QACA,EAAA,IAAA,EAAA,GACA,EAAA,IAAA,EAAA,GACA,EAAA,IAAA,EAAA,GACA,EAAA,IAAA,EAAA,GAaA,EAAA,EAGA,IAAA,EAAA,KAAA,IAAA,CACA,IAAA,EAAA,EAAA,IAAA,GACA,EAAA,EAAA,IAAA,EAAA,IAAA,IACA,EAAA,EAAA,IAAA,EAAA,IAAA,IACA,IAAA,EAAA,EAAA,IAAA,EAAA,IAAA,IAEA,IAAA,GAAA,EAAA,IAAA,GAAA,EACA,EAAA,EAAA,MACA,EAAA,EACA,EAAA,EAAA,MACA,EAAA,OACA,GAAA,GAAA,KAAA,EACA,MAEA,EAAA,EAEA,EAAA,EACA,EAAA,EACA,EAAA,EACA,EAAA,EACA,EAAA,EACA,EAAA,EAEA,EAAA,EAAA,MACA,EAAA,EAEA,IAAA,EAAA,EAAA,MAAA,IAAA,EAAA,OAiBA,OAhBA,EAAA,MAAA,IAAA,EAAA,OACA,IAAA,IAAA,IACA,EAAA,EACA,EAAA,GAIA,EAAA,WACA,EAAA,EAAA,MACA,EAAA,EAAA,OAEA,EAAA,WACA,EAAA,EAAA,MACA,EAAA,EAAA,OAGA,CACA,CAAA,EAAA,EAAA,EAAA,GACA,CAAA,EAAA,EAAA,EAAA,KAIA,EAAA,UAAA,WAAA,SAAA,GACA,IAAA,EAAA,KAAA,KAAA,MACA,EAAA,EAAA,GACA,EAAA,EAAA,GAEA,EAAA,EAAA,EAAA,IAAA,GAAA,SAAA,KAAA,GACA,EAAA,EAAA,EAAA,MAAA,IAAA,GAAA,SAAA,KAAA,GAEA,EAAA,EAAA,IAAA,EAAA,GACA,EAAA,EAAA,IAAA,EAAA,GACA,EAAA,EAAA,IAAA,EAAA,GACA,EAAA,EAAA,IAAA,EAAA,GAKA,MAAA,CAAA,GAFA,EAAA,IAAA,GAAA,IAAA,GAEA,GADA,EAAA,IAAA,GAAA,QAIA,EAAA,UAAA,WAAA,SAAA,EAAA,IACA,EAAA,IAAA,EAAA,EAAA,KACA,MACA,EAAA,EAAA,MAAA,KAAA,MAEA,IAAA,EAAA,EAAA,SAAA,OAAA,GAAA,QAAA,EAAA,OAAA,KAAA,IAAA,QAAA,KAAA,GACA,EAAA,EAAA,UACA,GAAA,IAAA,EAAA,SAAA,OAAA,GAAA,IAAA,KAAA,MACA,MAAA,IAAA,MAAA,iBAIA,IAAA,EAAA,EAAA,UAAA,QAIA,OAHA,IAAA,IAAA,GAAA,KACA,EAAA,EAAA,UAEA,KAAA,MAAA,EAAA,IAGA,EAAA,UAAA,SAAA,SAAA,GACA,GAAA,EAAA,IACA,OAAA,EAEA,IAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAEA,EAAA,KAAA,EAAA,OAAA,GACA,EAAA,EAAA,SAAA,OAAA,GAAA,QAAA,GAAA,QAAA,KAAA,GACA,OAAA,IAAA,EAAA,SAAA,QAAA,GAAA,KAAA,IAGA,EAAA,UAAA,gBACA,SAAA,EAAA,EAAA,GAGA,IAFA,IAAA,EAAA,KAAA,YACA,EAAA,KAAA,YACA,EAAA,EAAA,EAAA,EAAA,OAAA,IAAA,CACA,IAAA,EAAA,KAAA,WAAA,EAAA,IACA,EAAA,EAAA,GACA,EAAA,EAAA,WAEA,EAAA,GAAA,WACA,EAAA,GAAA,OACA,EAAA,EAAA,KAAA,IAEA,EAAA,GAAA,WACA,EAAA,GAAA,OACA,EAAA,EAAA,KAAA,IAGA,EAAA,EAAA,GAAA,EACA,EAAA,EAAA,EAAA,GAAA,EACA,EAAA,EAAA,GAAA,EAAA,GACA,EAAA,EAAA,EAAA,GAAA,EAAA,GAKA,IAHA,IAAA,EAAA,KAAA,YAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAGA,EAAA,EAAA,EAAA,EAAA,EAAA,IACA,EAAA,GAAA,KACA,EAAA,GAAA,KAEA,OAAA,GAwBA,EAAA,EAAA,EAAA,WAEA,EAAA,UAAA,MAAA,SAAA,EAAA,EAAA,GACA,OAAA,IAAA,EAAA,KAAA,EAAA,EAAA,IAGA,EAAA,UAAA,cAAA,SAAA,EAAA,GACA,OAAA,EAAA,SAAA,KAAA,EAAA,IAGA,EAAA,UAAA,SAAA,WACA,GAAA,KAAA,MAAA,KAAA,CAGA,IAAA,EAAA,KAAA,YACA,GAAA,GAAA,EAAA,KACA,OAAA,EAAA,KAEA,IAAA,EAAA,KAAA,MAAA,MAAA,KAAA,EAAA,OAAA,KAAA,MAAA,KAAA,MAAA,KAAA,GACA,GAAA,EAAA,CACA,IAAA,EAAA,KAAA,MACA,EAAA,SAAA,GACA,OAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,KAAA,MAAA,EAAA,IAEA,EAAA,KAAA,EACA,EAAA,YAAA,CACA,KAAA,KACA,IAAA,EAAA,KAAA,CACA,IAAA,EAAA,IAAA,IACA,OAAA,EAAA,IAAA,OAAA,IAAA,IAEA,QAAA,EAAA,SAAA,CACA,KAAA,EAAA,QAAA,KACA,OAAA,EAAA,QAAA,OAAA,IAAA,KAIA,OAAA,IAGA,EAAA,UAAA,OAAA,WACA,OAAA,KAAA,YAGA,CAAA,KAAA,EAAA,KAAA,EAAA,KAAA,aAAA,CACA,QAAA,KAAA,YAAA,SAAA,CACA,KAAA,KAAA,YAAA,QAAA,KACA,OAAA,KAAA,YAAA,QAAA,OAAA,MAAA,IAEA,IAAA,KAAA,YAAA,KAAA,CACA,IAAA,KAAA,YAAA,IAAA,IACA,OAAA,KAAA,YAAA,IAAA,OAAA,MAAA,MATA,CAAA,KAAA,EAAA,KAAA,IAcA,EAAA,SAAA,SAAA,EAAA,EAAA,GACA,iBAAA,IACA,EAAA,KAAA,MAAA,IACA,IAAA,EAAA,EAAA,MAAA,EAAA,GAAA,EAAA,GAAA,GACA,IAAA,EAAA,GACA,OAAA,EAEA,SAAA,EAAA,GACA,OAAA,EAAA,MAAA,EAAA,GAAA,EAAA,GAAA,GAGA,IAAA,EAAA,EAAA,GAYA,OAXA,EAAA,YAAA,CACA,KAAA,KACA,QAAA,EAAA,SAAA,CACA,KAAA,EAAA,QAAA,KACA,OAAA,CAAA,GAAA,OAAA,EAAA,QAAA,OAAA,IAAA,KAEA,IAAA,EAAA,KAAA,CACA,IAAA,EAAA,IAAA,IACA,OAAA,CAAA,GAAA,OAAA,EAAA,IAAA,OAAA,IAAA,MAGA,GAGA,EAAA,UAAA,QAAA,WACA,OAAA,KAAA,aACA,sBACA,gBAAA,KAAA,EAAA,UAAA,SAAA,GAAA,GACA,OAAA,KAAA,EAAA,UAAA,SAAA,GAAA,GAAA,KAGA,EAAA,UAAA,WAAA,WACA,OAAA,KAAA,KAGA,EAAA,UAAA,IAAA,SAAA,GAEA,GAAA,KAAA,IACA,OAAA,EAGA,GAAA,EAAA,IACA,OAAA,KAGA,GAAA,KAAA,GAAA,GACA,OAAA,KAAA,MAGA,GAAA,KAAA,MAAA,GAAA,GACA,OAAA,KAAA,MAAA,MAAA,KAAA,MAGA,GAAA,IAAA,KAAA,EAAA,IAAA,EAAA,GACA,OAAA,KAAA,MAAA,MAAA,KAAA,MAEA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,GACA,IAAA,EAAA,KAAA,KACA,EAAA,EAAA,OAAA,KAAA,EAAA,OAAA,EAAA,GAAA,YACA,IAAA,EAAA,EAAA,SAAA,QAAA,KAAA,GAAA,QAAA,EAAA,GACA,EAAA,EAAA,OAAA,KAAA,EAAA,OAAA,IAAA,QAAA,KAAA,GACA,OAAA,KAAA,MAAA,MAAA,EAAA,IAGA,EAAA,UAAA,IAAA,WACA,GAAA,KAAA,IACA,OAAA,KAGA,IAAA,EAAA,KAAA,EAAA,OAAA,KAAA,GACA,GAAA,IAAA,EAAA,KAAA,GACA,OAAA,KAAA,MAAA,MAAA,KAAA,MAEA,IAAA,EAAA,KAAA,MAAA,EAEA,EAAA,KAAA,EAAA,SACA,EAAA,EAAA,UACA,EAAA,EAAA,OAAA,GAAA,QAAA,GAAA,QAAA,GAAA,OAAA,GAEA,EAAA,EAAA,SAAA,QAAA,KAAA,EAAA,OAAA,KAAA,IACA,EAAA,EAAA,OAAA,KAAA,EAAA,OAAA,IAAA,QAAA,KAAA,GACA,OAAA,KAAA,MAAA,MAAA,EAAA,IAGA,EAAA,UAAA,KAAA,WACA,OAAA,KAAA,EAAA,WAGA,EAAA,UAAA,KAAA,WACA,OAAA,KAAA,EAAA,WAGA,EAAA,UAAA,IAAA,SAAA,GAGA,OAFA,EAAA,IAAA,EAAA,EAAA,IAEA,KAAA,YAAA,GACA,KAAA,MAAA,aAAA,KAAA,GACA,KAAA,MAAA,KACA,KAAA,MAAA,gBAAA,CAAA,MAAA,CAAA,IAEA,KAAA,MAAA,SAAA,KAAA,IAGA,EAAA,UAAA,OAAA,SAAA,EAAA,EAAA,GACA,IAAA,EAAA,CAAA,KAAA,GACA,EAAA,CAAA,EAAA,GACA,OAAA,KAAA,MAAA,KACA,KAAA,MAAA,gBAAA,EAAA,GAEA,KAAA,MAAA,YAAA,EAAA,EAAA,EAAA,IAGA,EAAA,UAAA,QAAA,SAAA,EAAA,EAAA,GACA,IAAA,EAAA,CAAA,KAAA,GACA,EAAA,CAAA,EAAA,GACA,OAAA,KAAA,MAAA,KACA,KAAA,MAAA,gBAAA,EAAA,GAAA,GAEA,KAAA,MAAA,YAAA,EAAA,EAAA,EAAA,GAAA,IAGA,EAAA,UAAA,GAAA,SAAA,GACA,OAAA,OAAA,GACA,KAAA,MAAA,EAAA,MACA,KAAA,KAAA,IAAA,KAAA,EAAA,IAAA,EAAA,IAAA,IAAA,KAAA,EAAA,IAAA,EAAA,KAGA,EAAA,UAAA,IAAA,SAAA,GACA,GAAA,KAAA,IACA,OAAA,KAEA,IAAA,EAAA,KAAA,MAAA,MAAA,KAAA,EAAA,KAAA,EAAA,UACA,GAAA,GAAA,KAAA,YAAA,CACA,IAAA,EAAA,KAAA,YACA,EAAA,SAAA,GACA,OAAA,EAAA,OAEA,EAAA,YAAA,CACA,IAAA,EAAA,KAAA,CACA,IAAA,EAAA,IAAA,IACA,OAAA,EAAA,IAAA,OAAA,IAAA,IAEA,QAAA,EAAA,SAAA,CACA,KAAA,EAAA,QAAA,KACA,OAAA,EAAA,QAAA,OAAA,IAAA,KAIA,OAAA,GAGA,EAAA,UAAA,IAAA,WACA,OAAA,KAAA,IACA,KAAA,MAAA,OAAA,KAAA,KAAA,MAEA,KAAA,MAAA,OAAA,KAAA,EAAA,KAAA,EAAA,KAAA,MAAA,MAwBA,EAAA,EAAA,EAAA,WAEA,EAAA,UAAA,OAAA,SAAA,EAAA,EAAA,GACA,OAAA,IAAA,EAAA,KAAA,EAAA,EAAA,IAGA,EAAA,UAAA,IAAA,WACA,GAAA,KAAA,aACA,OAAA,KAAA,MAAA,MAAA,KAAA,MAEA,IAAA,EAAA,KAAA,EAAA,UACA,EAAA,EAAA,SACA,EAAA,KAAA,EAAA,OAAA,GACA,EAAA,KAAA,EAAA,OAAA,GAAA,OAAA,GAEA,OAAA,KAAA,MAAA,MAAA,EAAA,IAGA,EAAA,UAAA,IAAA,WACA,OAAA,KAAA,MAAA,OAAA,KAAA,EAAA,KAAA,EAAA,SAAA,KAAA,IAGA,EAAA,UAAA,IAAA,SAAA,GAEA,GAAA,KAAA,aACA,OAAA,EAGA,GAAA,EAAA,aACA,OAAA,KAGA,IAAA,EAAA,EAAA,EAAA,SACA,EAAA,KAAA,EAAA,SACA,EAAA,KAAA,EAAA,OAAA,GACA,EAAA,EAAA,EAAA,OAAA,GACA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,IACA,EAAA,EAAA,EAAA,OAAA,EAAA,OAAA,KAAA,IAEA,EAAA,EAAA,OAAA,GACA,EAAA,EAAA,OAAA,GACA,GAAA,IAAA,EAAA,KAAA,GACA,OAAA,IAAA,EAAA,KAAA,GACA,KAAA,MAAA,OAAA,KAAA,KAAA,MAEA,KAAA,MAGA,IAAA,EAAA,EAAA,SACA,EAAA,EAAA,OAAA,GACA,EAAA,EAAA,OAAA,GAEA,EAAA,EAAA,SAAA,QAAA,GAAA,QAAA,GAAA,QAAA,GACA,EAAA,EAAA,OAAA,EAAA,QAAA,IAAA,QAAA,EAAA,OAAA,IACA,EAAA,KAAA,EAAA,OAAA,EAAA,GAAA,OAAA,GAEA,OAAA,KAAA,MAAA,OAAA,EAAA,EAAA,IAGA,EAAA,UAAA,SAAA,SAAA,GAEA,GAAA,KAAA,aACA,OAAA,EAAA,MAGA,GAAA,EAAA,aACA,OAAA,KAGA,IAAA,EAAA,KAAA,EAAA,SACA,EAAA,KAAA,EACA,EAAA,EAAA,EAAA,OAAA,GACA,EAAA,KAAA,EACA,EAAA,EAAA,EAAA,OAAA,GAAA,OAAA,KAAA,GAEA,EAAA,EAAA,OAAA,GACA,EAAA,EAAA,OAAA,GACA,GAAA,IAAA,EAAA,KAAA,GACA,OAAA,IAAA,EAAA,KAAA,GACA,KAAA,MAAA,OAAA,KAAA,KAAA,MAEA,KAAA,MAGA,IAAA,EAAA,EAAA,SACA,EAAA,EAAA,OAAA,GACA,EAAA,EAAA,OAAA,GAEA,EAAA,EAAA,SAAA,QAAA,GAAA,QAAA,GAAA,QAAA,GACA,EAAA,EAAA,OAAA,EAAA,QAAA,IAAA,QAAA,EAAA,OAAA,IACA,EAAA,KAAA,EAAA,OAAA,GAEA,OAAA,KAAA,MAAA,OAAA,EAAA,EAAA,IAGA,EAAA,UAAA,KAAA,SAAA,GACA,GAAA,IAAA,EACA,OAAA,KACA,GAAA,KAAA,aACA,OAAA,KACA,IAAA,EACA,OAAA,KAAA,MAEA,GAAA,KAAA,MAAA,OAAA,KAAA,MAAA,OAAA,CAEA,IADA,IAAA,EAAA,KACA,EAAA,EAAA,EAAA,EAAA,IACA,EAAA,EAAA,MACA,OAAA,EAKA,IAAA,EAAA,KAAA,MAAA,EACA,EAAA,KAAA,MAAA,KAEA,EAAA,KAAA,EACA,EAAA,KAAA,EACA,EAAA,KAAA,EACA,EAAA,EAAA,SAAA,SAGA,EAAA,EAAA,OAAA,GACA,IAAA,EAAA,EAAA,EAAA,EAAA,IAAA,CACA,IAAA,EAAA,EAAA,SACA,EAAA,EAAA,SACA,EAAA,EAAA,SACA,EAAA,EAAA,OAAA,GAAA,QAAA,GAAA,QAAA,EAAA,OAAA,IAEA,EAAA,EAAA,OAAA,GACA,EAAA,EAAA,SAAA,QAAA,EAAA,OAAA,IACA,EAAA,EAAA,QAAA,GACA,EAAA,EAAA,OAAA,GACA,EAAA,EAAA,QAAA,GAAA,QAAA,GACA,IAAA,EAAA,EAAA,OAAA,GACA,EAAA,EAAA,IACA,EAAA,EAAA,OAAA,IAEA,EAAA,EACA,EAAA,EACA,EAAA,EAGA,OAAA,KAAA,MAAA,OAAA,EAAA,EAAA,OAAA,GAAA,IAGA,EAAA,UAAA,IAAA,WACA,OAAA,KAAA,aACA,KAEA,KAAA,MAAA,MACA,KAAA,WACA,KAAA,MAAA,OACA,KAAA,YAEA,KAAA,QAGA,EAAA,UAAA,SAAA,WACA,IAAA,EACA,EACA,EAEA,GAAA,KAAA,KAAA,CAMA,IAAA,EAAA,KAAA,EAAA,SAEA,EAAA,KAAA,EAAA,SAEA,EAAA,EAAA,SAEA,EAAA,KAAA,EAAA,OAAA,GAAA,SAAA,QAAA,GAAA,QAAA,GACA,EAAA,EAAA,QAAA,GAEA,IAAA,EAAA,EAAA,OAAA,GAAA,QAAA,GAEA,EAAA,EAAA,SAAA,QAAA,GAAA,QAAA,GAGA,EAAA,EAAA,QAAA,GAEA,GADA,EAAA,EAAA,QAAA,IACA,QAAA,GAGA,EAAA,EAEA,EAAA,EAAA,OAAA,EAAA,QAAA,IAAA,QAAA,GAEA,EAAA,KAAA,EAAA,OAAA,KAAA,OACA,CAMA,IAAA,EAAA,KAAA,EAAA,SAEA,EAAA,KAAA,EAAA,SAEA,EAAA,EAAA,SAEA,EAAA,KAAA,EAAA,OAAA,GAAA,SAAA,QAAA,GAAA,QAAA,GACA,EAAA,EAAA,QAAA,GAEA,IAAA,EAAA,EAAA,OAAA,GAAA,QAAA,GAEA,EAAA,EAAA,SAGA,EAAA,EAAA,QAAA,GAEA,GADA,EAAA,EAAA,QAAA,IACA,QAAA,GAGA,EAAA,EAAA,QAAA,GAAA,QAAA,GAEA,EAAA,EAAA,OAAA,EAAA,QAAA,IAAA,QAAA,GAGA,GADA,EAAA,KAAA,EAAA,OAAA,KAAA,IACA,QAAA,GAGA,OAAA,KAAA,MAAA,OAAA,EAAA,EAAA,IAGA,EAAA,UAAA,UAAA,WACA,IAAA,EACA,EACA,EAEA,GAAA,KAAA,KAAA,CAMA,IAAA,EAAA,KAAA,EAAA,SAEA,EAAA,KAAA,EAAA,SAEA,EAAA,EAAA,SAEA,EAAA,KAAA,EAAA,OAAA,GAAA,SAAA,QAAA,GAAA,QAAA,GACA,EAAA,EAAA,QAAA,GAEA,IAAA,EAAA,EAAA,OAAA,GAAA,QAAA,GAAA,QAAA,KAAA,MAAA,GAEA,EAAA,EAAA,SAAA,QAAA,GAAA,QAAA,GAEA,EAAA,EAEA,IAAA,EAAA,EAAA,QAAA,GAEA,GADA,EAAA,EAAA,QAAA,IACA,QAAA,GACA,EAAA,EAAA,OAAA,EAAA,QAAA,IAAA,QAAA,GAEA,EAAA,KAAA,EAAA,OAAA,KAAA,OACA,CAKA,IAAA,EAAA,KAAA,EAAA,SAEA,EAAA,KAAA,EAAA,SAEA,EAAA,KAAA,EAAA,OAAA,GAEA,EAAA,KAAA,EAAA,OAAA,GAAA,OAAA,KAAA,EAAA,OAAA,IACA,EAAA,EAAA,OAAA,GAAA,QAAA,GAEA,IAAA,EAAA,EAAA,QAAA,GAEA,GADA,EAAA,EAAA,QAAA,IACA,OAAA,GACA,EAAA,EAAA,SAAA,QAAA,GAEA,EAAA,KAAA,EAAA,OAAA,KAAA,GAAA,SAAA,QAAA,GAAA,QAAA,GAEA,IAAA,EAAA,EAAA,SAGA,GADA,GADA,EAAA,EAAA,QAAA,IACA,QAAA,IACA,QAAA,GACA,EAAA,EAAA,OAAA,EAAA,QAAA,IAAA,QAAA,GAGA,OAAA,KAAA,MAAA,OAAA,EAAA,EAAA,IAGA,EAAA,UAAA,KAAA,WACA,IAAA,EAAA,KAAA,MAAA,EAGA,EAAA,KAAA,EACA,EAAA,KAAA,EACA,EAAA,KAAA,EACA,EAAA,EAAA,SAAA,SAEA,EAAA,EAAA,SACA,EAAA,EAAA,SAEA,EAAA,EAAA,OAAA,GAAA,QAAA,GAAA,QAAA,EAAA,OAAA,IAEA,EAAA,EAAA,OAAA,GAEA,GADA,EAAA,EAAA,QAAA,IACA,OAAA,GACA,EAAA,EAAA,SAAA,QAAA,EAAA,OAAA,IACA,EAAA,EAAA,QAAA,GAEA,EAAA,EAAA,SAGA,GADA,GADA,EAAA,EAAA,QAAA,IACA,QAAA,IACA,QAAA,GACA,IAAA,EAAA,EAAA,OAAA,GAAA,QAAA,GACA,EAAA,EAAA,OAAA,GAAA,OAAA,GAEA,OAAA,KAAA,MAAA,OAAA,EAAA,EAAA,IAGA,EAAA,UAAA,KAAA,WACA,IAAA,KAAA,MAAA,MACA,OAAA,KAAA,MAAA,IAAA,MAMA,IAAA,EAAA,KAAA,EAAA,SAEA,EAAA,KAAA,EAAA,SAEA,EAAA,KAAA,EAAA,SAEA,EAAA,EAAA,SAEA,EAAA,EAAA,OAAA,GAAA,QAAA,GAEA,EAAA,EAAA,SAEA,EAAA,KAAA,EAAA,OAAA,GAAA,SAAA,QAAA,GAAA,QAAA,GAKA,GAFA,GADA,GADA,EAAA,EAAA,QAAA,IACA,OAAA,GAAA,QAAA,IACA,QAAA,IAEA,SAEA,EAAA,EAAA,QAAA,GAGA,GADA,GADA,EAAA,EAAA,QAAA,IACA,QAAA,IACA,QAAA,GAEA,IAAA,EAAA,EAAA,QAAA,GAAA,SAAA,QAAA,GAAA,QAAA,GAAA,QAAA,GAEA,EAAA,EAAA,OAAA,GAEA,GADA,EAAA,EAAA,QAAA,IACA,QAAA,GACA,IAAA,EAAA,KAAA,EAAA,OAAA,GAAA,QAAA,GAEA,GADA,EAAA,EAAA,QAAA,IACA,QAAA,GAEA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,QAAA,IAAA,QAAA,EAAA,OAAA,KAGA,GADA,GADA,EAAA,EAAA,QAAA,IACA,QAAA,IACA,QAAA,GAEA,IAAA,EAAA,KAAA,EAAA,OAAA,GAAA,SAAA,QAAA,GAAA,QAAA,GAEA,OAAA,KAAA,MAAA,OAAA,EAAA,EAAA,IAGA,EAAA,UAAA,IAAA,SAAA,EAAA,GAGA,OAFA,EAAA,IAAA,EAAA,EAAA,GAEA,KAAA,MAAA,SAAA,KAAA,IAGA,EAAA,UAAA,GAAA,SAAA,GACA,GAAA,WAAA,EAAA,KACA,OAAA,KAAA,GAAA,EAAA,OAEA,GAAA,OAAA,EACA,OAAA,EAGA,IAAA,EAAA,KAAA,EAAA,SACA,EAAA,EAAA,EAAA,SACA,GAAA,IAAA,KAAA,EAAA,OAAA,GAAA,QAAA,EAAA,EAAA,OAAA,IAAA,KAAA,GACA,OAAA,EAGA,IAAA,EAAA,EAAA,OAAA,KAAA,GACA,EAAA,EAAA,OAAA,EAAA,GACA,OAAA,IAAA,KAAA,EAAA,OAAA,GAAA,QAAA,EAAA,EAAA,OAAA,IAAA,KAAA,IAGA,EAAA,UAAA,OAAA,SAAA,GACA,IAAA,EAAA,KAAA,EAAA,SACA,EAAA,EAAA,MAAA,KAAA,MAAA,KAAA,OAAA,GACA,GAAA,IAAA,KAAA,EAAA,IAAA,GACA,OAAA,EAIA,IAFA,IAAA,EAAA,EAAA,QACA,EAAA,KAAA,MAAA,KAAA,OAAA,KACA,CAEA,GADA,EAAA,KAAA,KAAA,MAAA,GACA,EAAA,IAAA,KAAA,MAAA,IAAA,EACA,OAAA,EAGA,GADA,EAAA,QAAA,GACA,IAAA,KAAA,EAAA,IAAA,GACA,OAAA,IAIA,EAAA,UAAA,QAAA,WACA,OAAA,KAAA,aACA,uBACA,iBAAA,KAAA,EAAA,SAAA,GAAA,GACA,OAAA,KAAA,EAAA,SAAA,GAAA,GACA,OAAA,KAAA,EAAA,SAAA,GAAA,GAAA,KAGA,EAAA,UAAA,WAAA,WAEA,OAAA,IAAA,KAAA,EAAA,KAAA;;ACv6BA,aAEA,IAAA,EAAA,QAAA,YACA,EAAA,QAAA,SACA,EAAA,QAAA,YACA,EAAA,EAAA,KAEA,EAAA,QAAA,kBACA,EAAA,EAAA,MAEA,SAAA,EAAA,GACA,EAAA,KAAA,KAAA,OAAA,GAEA,KAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,MAAA,KAAA,KACA,KAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,MAAA,KAAA,KACA,KAAA,GAAA,IAAA,EAAA,GAAA,MAAA,KAAA,KAAA,UACA,KAAA,IAAA,IAAA,EAAA,GAAA,MAAA,KAAA,KACA,KAAA,IAAA,KAAA,GAAA,OAAA,KAAA,EAAA,OAAA,KAAA,MAcA,SAAA,EAAA,EAAA,EAAA,GACA,EAAA,UAAA,KAAA,KAAA,EAAA,cACA,OAAA,GAAA,OAAA,GACA,KAAA,EAAA,KAAA,MAAA,IACA,KAAA,EAAA,KAAA,MAAA,OAEA,KAAA,EAAA,IAAA,EAAA,EAAA,IACA,KAAA,EAAA,IAAA,EAAA,EAAA,IACA,KAAA,EAAA,MACA,KAAA,EAAA,KAAA,EAAA,MAAA,KAAA,MAAA,MACA,KAAA,EAAA,MACA,KAAA,EAAA,KAAA,EAAA,MAAA,KAAA,MAAA,OAvBA,EAAA,EAAA,GACA,OAAA,QAAA,EAEA,EAAA,UAAA,SAAA,SAAA,GACA,IAAA,EAAA,EAAA,YAAA,EACA,EAAA,EAAA,SACA,EAAA,EAAA,OAAA,GAAA,OAAA,EAAA,OAAA,KAAA,IAAA,OAAA,GAGA,OAAA,IAFA,EAAA,UAEA,SAAA,IAAA,IAiBA,EAAA,EAAA,EAAA,WAEA,EAAA,UAAA,YAAA,SAAA,EAAA,GACA,OAAA,KAAA,MAAA,EAAA,QAAA,EAAA,GAAA,IAGA,EAAA,UAAA,MAAA,SAAA,EAAA,GACA,OAAA,IAAA,EAAA,KAAA,EAAA,IAGA,EAAA,UAAA,cAAA,SAAA,GACA,OAAA,EAAA,SAAA,KAAA,IAGA,EAAA,UAAA,WAAA,aAIA,EAAA,UAAA,QAAA,WACA,OAAA,KAAA,OAAA,QAAA,KAAA,KAAA,MAAA,EAAA,eAGA,EAAA,SAAA,SAAA,EAAA,GACA,OAAA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,IAAA,EAAA,MAGA,EAAA,UAAA,QAAA,WACA,OAAA,KAAA,aACA,sBACA,gBAAA,KAAA,EAAA,UAAA,SAAA,GAAA,GACA,OAAA,KAAA,EAAA,UAAA,SAAA,GAAA,GAAA,KAGA,EAAA,UAAA,WAAA,WAEA,OAAA,IAAA,KAAA,EAAA,KAAA,IAGA,EAAA,UAAA,IAAA,WAKA,IAEA,EAFA,KAAA,EAAA,OAAA,KAAA,GAEA,SAIA,EAFA,KAAA,EAAA,OAAA,KAAA,GAEA,SAEA,EAAA,EAAA,OAAA,GAEA,EAAA,EAAA,OAAA,GAEA,EAAA,EAAA,OAAA,EAAA,OAAA,KAAA,MAAA,IAAA,OAAA,KACA,OAAA,KAAA,MAAA,MAAA,EAAA,IAGA,EAAA,UAAA,IAAA,WACA,MAAA,IAAA,MAAA,sCAGA,EAAA,UAAA,QAAA,SAAA,EAAA,GAKA,IAAA,EAAA,KAAA,EAAA,OAAA,KAAA,GAEA,EAAA,KAAA,EAAA,OAAA,KAAA,GAEA,EAAA,EAAA,EAAA,OAAA,EAAA,GAIA,EAFA,EAAA,EAAA,OAAA,EAAA,GAEA,OAAA,GAEA,EAAA,EAAA,OAAA,GAEA,EAAA,EAAA,EAAA,OAAA,EAAA,OAAA,GAAA,UAEA,EAAA,EAAA,EAAA,OAAA,EAAA,QAAA,GAAA,UACA,OAAA,KAAA,MAAA,MAAA,EAAA,IAGA,EAAA,UAAA,IAAA,SAAA,GAMA,IALA,IAAA,EAAA,EAAA,QACA,EAAA,KACA,EAAA,KAAA,MAAA,MAAA,KAAA,MAGA,EAAA,GAAA,IAAA,EAAA,KAAA,GAAA,EAAA,OAAA,GACA,EAAA,KAAA,EAAA,MAAA,IAEA,IAAA,IAAA,EAAA,EAAA,OAAA,EAAA,GAAA,EAAA,IACA,IAAA,EAAA,IAEA,EAAA,EAAA,QAAA,EARA,MAUA,EAAA,EAAA,QAGA,EAAA,EAAA,QAAA,EAbA,MAeA,EAAA,EAAA,OAGA,OAAA,GAGA,EAAA,UAAA,OAAA,WACA,MAAA,IAAA,MAAA,sCAGA,EAAA,UAAA,QAAA,WACA,MAAA,IAAA,MAAA,sCAGA,EAAA,UAAA,GAAA,SAAA,GACA,OAAA,IAAA,KAAA,OAAA,IAAA,EAAA,SAGA,EAAA,UAAA,UAAA,WAGA,OAFA,KAAA,EAAA,KAAA,EAAA,OAAA,KAAA,EAAA,WACA,KAAA,EAAA,KAAA,MAAA,IACA,MAGA,EAAA,UAAA,KAAA,WAIA,OAFA,KAAA,YAEA,KAAA,EAAA;;AClLA,aAEA,IAAA,EAAA,QAAA,YACA,EAAA,QAAA,kBACA,EAAA,QAAA,SACA,EAAA,QAAA,YACA,EAAA,EAAA,KAEA,EAAA,EAAA,MAAA,OAEA,SAAA,EAAA,GAEA,KAAA,QAAA,IAAA,EAAA,EAAA,GACA,KAAA,MAAA,KAAA,UAAA,IAAA,EAAA,EAAA,GACA,KAAA,SAAA,KAAA,MAEA,EAAA,KAAA,KAAA,UAAA,GAEA,KAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,KAAA,KAAA,IAAA,GACA,KAAA,EAAA,KAAA,EAAA,MAAA,KAAA,KACA,KAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,MAAA,KAAA,KACA,KAAA,GAAA,KAAA,EAAA,SACA,KAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,MAAA,KAAA,KACA,KAAA,GAAA,KAAA,EAAA,OAAA,KAAA,GAEA,GAAA,KAAA,SAAA,IAAA,KAAA,EAAA,UAAA,KAAA,IACA,KAAA,KAAA,IAAA,EAAA,EAAA,GAwFA,SAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACA,EAAA,UAAA,KAAA,KAAA,EAAA,cACA,OAAA,GAAA,OAAA,GAAA,OAAA,GACA,KAAA,EAAA,KAAA,MAAA,KACA,KAAA,EAAA,KAAA,MAAA,IACA,KAAA,EAAA,KAAA,MAAA,IACA,KAAA,EAAA,KAAA,MAAA,KACA,KAAA,MAAA,IAEA,KAAA,EAAA,IAAA,EAAA,EAAA,IACA,KAAA,EAAA,IAAA,EAAA,EAAA,IACA,KAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,KAAA,MAAA,IACA,KAAA,EAAA,GAAA,IAAA,EAAA,EAAA,IACA,KAAA,EAAA,MACA,KAAA,EAAA,KAAA,EAAA,MAAA,KAAA,MAAA,MACA,KAAA,EAAA,MACA,KAAA,EAAA,KAAA,EAAA,MAAA,KAAA,MAAA,MACA,KAAA,EAAA,MACA,KAAA,EAAA,KAAA,EAAA,MAAA,KAAA,MAAA,MACA,KAAA,IAAA,KAAA,EAAA,MACA,KAAA,EAAA,KAAA,EAAA,MAAA,KAAA,MAAA,MACA,KAAA,KAAA,KAAA,IAAA,KAAA,MAAA,IAGA,KAAA,MAAA,WAAA,KAAA,IACA,KAAA,EAAA,KAAA,EAAA,OAAA,KAAA,GACA,KAAA,OACA,KAAA,EAAA,KAAA,EAAA,OAAA,KAAA,EAAA,cAjHA,EAAA,EAAA,GACA,OAAA,QAAA,EAEA,EAAA,UAAA,MAAA,SAAA,GACA,OAAA,KAAA,MACA,EAAA,SAEA,KAAA,EAAA,OAAA,IAGA,EAAA,UAAA,MAAA,SAAA,GACA,OAAA,KAAA,KACA,EAEA,KAAA,EAAA,OAAA,IAIA,EAAA,UAAA,OAAA,SAAA,EAAA,EAAA,EAAA,GACA,OAAA,KAAA,MAAA,EAAA,EAAA,EAAA,IAGA,EAAA,UAAA,WAAA,SAAA,EAAA,IACA,EAAA,IAAA,EAAA,EAAA,KACA,MACA,EAAA,EAAA,MAAA,KAAA,MAEA,IAAA,EAAA,EAAA,SACA,EAAA,KAAA,GAAA,OAAA,KAAA,EAAA,OAAA,IACA,EAAA,KAAA,IAAA,OAAA,KAAA,GAAA,OAAA,KAAA,GAAA,OAAA,IAEA,EAAA,EAAA,OAAA,EAAA,WACA,EAAA,EAAA,UACA,GAAA,IAAA,EAAA,SAAA,OAAA,GAAA,IAAA,KAAA,MACA,MAAA,IAAA,MAAA,iBAEA,IAAA,EAAA,EAAA,UAAA,QAIA,OAHA,IAAA,IAAA,GAAA,KACA,EAAA,EAAA,UAEA,KAAA,MAAA,EAAA,IAGA,EAAA,UAAA,WAAA,SAAA,EAAA,IACA,EAAA,IAAA,EAAA,EAAA,KACA,MACA,EAAA,EAAA,MAAA,KAAA,MAGA,IAAA,EAAA,EAAA,SACA,EAAA,EAAA,OAAA,KAAA,IACA,EAAA,EAAA,OAAA,KAAA,GAAA,OAAA,KAAA,IAAA,OAAA,KAAA,GACA,EAAA,EAAA,OAAA,EAAA,WAEA,GAAA,IAAA,EAAA,IAAA,KAAA,MAAA,CACA,GAAA,EACA,MAAA,IAAA,MAAA,iBAEA,OAAA,KAAA,MAAA,KAAA,KAAA,GAGA,IAAA,EAAA,EAAA,UACA,GAAA,IAAA,EAAA,SAAA,OAAA,GAAA,IAAA,KAAA,MACA,MAAA,IAAA,MAAA,iBAKA,OAHA,EAAA,UAAA,UAAA,IACA,EAAA,EAAA,UAEA,KAAA,MAAA,EAAA,IAGA,EAAA,UAAA,SAAA,SAAA,GACA,GAAA,EAAA,aACA,OAAA,EAGA,EAAA,YAEA,IAAA,EAAA,EAAA,EAAA,SACA,EAAA,EAAA,EAAA,SACA,EAAA,EAAA,OAAA,KAAA,GAAA,OAAA,GACA,EAAA,KAAA,GAAA,OAAA,KAAA,IAAA,OAAA,KAAA,EAAA,OAAA,GAAA,OAAA,KAEA,OAAA,IAAA,EAAA,IAAA,IAkCA,EAAA,EAAA,EAAA,WAEA,EAAA,UAAA,cAAA,SAAA,GACA,OAAA,EAAA,SAAA,KAAA,IAGA,EAAA,UAAA,MAAA,SAAA,EAAA,EAAA,EAAA,GACA,OAAA,IAAA,EAAA,KAAA,EAAA,EAAA,EAAA,IAGA,EAAA,SAAA,SAAA,EAAA,GACA,OAAA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,KAGA,EAAA,UAAA,QAAA,WACA,OAAA,KAAA,aACA,sBACA,gBAAA,KAAA,EAAA,UAAA,SAAA,GAAA,GACA,OAAA,KAAA,EAAA,UAAA,SAAA,GAAA,GACA,OAAA,KAAA,EAAA,UAAA,SAAA,GAAA,GAAA,KAGA,EAAA,UAAA,WAAA,WAEA,OAAA,IAAA,KAAA,EAAA,KAAA,KACA,IAAA,KAAA,EAAA,IAAA,KAAA,IACA,KAAA,MAAA,IAAA,KAAA,EAAA,IAAA,KAAA,MAAA,KAGA,EAAA,UAAA,QAAA,WAMA,IAAA,EAAA,KAAA,EAAA,SAEA,EAAA,KAAA,EAAA,SAEA,EAAA,KAAA,EAAA,SACA,EAAA,EAAA,QAAA,GAEA,IAAA,EAAA,KAAA,MAAA,MAAA,GAEA,EAAA,KAAA,EAAA,OAAA,KAAA,GAAA,SAAA,QAAA,GAAA,QAAA,GAEA,EAAA,EAAA,OAAA,GAEA,EAAA,EAAA,OAAA,GAEA,EAAA,EAAA,OAAA,GAEA,EAAA,EAAA,OAAA,GAEA,EAAA,EAAA,OAAA,GAEA,EAAA,EAAA,OAAA,GAEA,EAAA,EAAA,OAAA,GACA,OAAA,KAAA,MAAA,MAAA,EAAA,EAAA,EAAA,IAGA,EAAA,UAAA,SAAA,WAQA,IAMA,EACA,EACA,EARA,EAAA,KAAA,EAAA,OAAA,KAAA,GAAA,SAEA,EAAA,KAAA,EAAA,SAEA,EAAA,KAAA,EAAA,SAKA,GAAA,KAAA,MAAA,QAAA,CAEA,IAEA,GAFA,EAAA,KAAA,MAAA,MAAA,IAEA,OAAA,GACA,GAAA,KAAA,KAEA,EAAA,EAAA,OAAA,GAAA,OAAA,GAAA,OAAA,EAAA,OAAA,KAAA,MAAA,MAEA,EAAA,EAAA,OAAA,EAAA,OAAA,IAEA,EAAA,EAAA,SAAA,OAAA,GAAA,OAAA,OACA,CAEA,IAAA,EAAA,KAAA,EAAA,SAEA,EAAA,EAAA,OAAA,GAAA,QAAA,GAEA,EAAA,EAAA,OAAA,GAAA,QAAA,GAAA,OAAA,GAEA,EAAA,EAAA,OAAA,EAAA,OAAA,IAEA,EAAA,EAAA,OAAA,QAEA,CAEA,IAAA,EAAA,EAAA,OAAA,GAEA,EAAA,KAAA,MAAA,MAAA,KAAA,GAAA,SAEA,EAAA,EAAA,OAAA,GAAA,OAAA,GAEA,EAAA,KAAA,MAAA,MAAA,EAAA,QAAA,IAAA,OAAA,GAEA,EAAA,KAAA,MAAA,MAAA,GAAA,OAAA,EAAA,QAAA,IAEA,EAAA,EAAA,OAAA,GAEA,OAAA,KAAA,MAAA,MAAA,EAAA,EAAA,IAGA,EAAA,UAAA,IAAA,WACA,OAAA,KAAA,aACA,KAGA,KAAA,MAAA,SACA,KAAA,UAEA,KAAA,YAGA,EAAA,UAAA,QAAA,SAAA,GAMA,IAAA,EAAA,KAAA,EAAA,OAAA,KAAA,GAAA,OAAA,EAAA,EAAA,OAAA,EAAA,IAEA,EAAA,KAAA,EAAA,OAAA,KAAA,GAAA,OAAA,EAAA,EAAA,OAAA,EAAA,IAEA,EAAA,KAAA,EAAA,OAAA,KAAA,MAAA,IAAA,OAAA,EAAA,GAEA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,IAEA,EAAA,EAAA,OAAA,GAEA,EAAA,EAAA,OAAA,GAEA,EAAA,EAAA,OAAA,GAEA,EAAA,EAAA,OAAA,GAEA,EAAA,EAAA,OAAA,GAEA,EAAA,EAAA,OAAA,GAEA,EAAA,EAAA,OAAA,GAEA,EAAA,EAAA,OAAA,GACA,OAAA,KAAA,MAAA,MAAA,EAAA,EAAA,EAAA,IAGA,EAAA,UAAA,SAAA,SAAA,GAOA,IAgBA,EACA,EAjBA,EAAA,KAAA,EAAA,OAAA,EAAA,GAEA,EAAA,EAAA,SAEA,EAAA,KAAA,EAAA,OAAA,EAAA,GAEA,EAAA,KAAA,EAAA,OAAA,EAAA,GAEA,EAAA,KAAA,MAAA,EAAA,OAAA,GAAA,OAAA,GAEA,EAAA,EAAA,OAAA,GAEA,EAAA,EAAA,OAAA,GAEA,EAAA,KAAA,EAAA,OAAA,KAAA,GAAA,OAAA,EAAA,EAAA,OAAA,EAAA,IAAA,QAAA,GAAA,QAAA,GACA,EAAA,EAAA,OAAA,GAAA,OAAA,GAcA,OAXA,KAAA,MAAA,SAEA,EAAA,EAAA,OAAA,GAAA,OAAA,EAAA,OAAA,KAAA,MAAA,MAAA,KAEA,EAAA,EAAA,OAAA,KAGA,EAAA,EAAA,OAAA,GAAA,OAAA,EAAA,OAAA,IAEA,EAAA,KAAA,MAAA,MAAA,GAAA,OAAA,IAEA,KAAA,MAAA,MAAA,EAAA,EAAA,IAGA,EAAA,UAAA,IAAA,SAAA,GACA,OAAA,KAAA,aACA,EACA,EAAA,aACA,KAEA,KAAA,MAAA,SACA,KAAA,QAAA,GAEA,KAAA,SAAA,IAGA,EAAA,UAAA,IAAA,SAAA,GACA,OAAA,KAAA,YAAA,GACA,KAAA,MAAA,aAAA,KAAA,GAEA,KAAA,MAAA,SAAA,KAAA,IAGA,EAAA,UAAA,OAAA,SAAA,EAAA,EAAA,GACA,OAAA,KAAA,MAAA,YAAA,EAAA,CAAA,KAAA,GAAA,CAAA,EAAA,GAAA,GAAA,IAGA,EAAA,UAAA,QAAA,SAAA,EAAA,EAAA,GACA,OAAA,KAAA,MAAA,YAAA,EAAA,CAAA,KAAA,GAAA,CAAA,EAAA,GAAA,GAAA,IAGA,EAAA,UAAA,UAAA,WACA,GAAA,KAAA,KACA,OAAA,KAGA,IAAA,EAAA,KAAA,EAAA,UAOA,OANA,KAAA,EAAA,KAAA,EAAA,OAAA,GACA,KAAA,EAAA,KAAA,EAAA,OAAA,GACA,KAAA,IACA,KAAA,EAAA,KAAA,EAAA,OAAA,IACA,KAAA,EAAA,KAAA,MAAA,IACA,KAAA,MAAA,EACA,MAGA,EAAA,UAAA,IAAA,WACA,OAAA,KAAA,MAAA,MAAA,KAAA,EAAA,SACA,KAAA,EACA,KAAA,EACA,KAAA,GAAA,KAAA,EAAA,WAGA,EAAA,UAAA,KAAA,WAEA,OADA,KAAA,YACA,KAAA,EAAA,WAGA,EAAA,UAAA,KAAA,WAEA,OADA,KAAA,YACA,KAAA,EAAA,WAGA,EAAA,UAAA,GAAA,SAAA,GACA,OAAA,OAAA,GACA,IAAA,KAAA,OAAA,IAAA,EAAA,SACA,IAAA,KAAA,OAAA,IAAA,EAAA,SAGA,EAAA,UAAA,OAAA,SAAA,GACA,IAAA,EAAA,EAAA,MAAA,KAAA,MAAA,KAAA,OAAA,KAAA,GACA,GAAA,IAAA,KAAA,EAAA,IAAA,GACA,OAAA,EAIA,IAFA,IAAA,EAAA,EAAA,QACA,EAAA,KAAA,MAAA,KAAA,OAAA,KAAA,KACA,CAEA,GADA,EAAA,KAAA,KAAA,MAAA,GACA,EAAA,IAAA,KAAA,MAAA,IAAA,EACA,OAAA,EAGA,GADA,EAAA,QAAA,GACA,IAAA,KAAA,EAAA,IAAA,GACA,OAAA,IAKA,EAAA,UAAA,IAAA,EAAA,UAAA,UACA,EAAA,UAAA,SAAA,EAAA,UAAA;;AChbA,aAEA,IAAA,EAAA,QAEA,EAAA,KAAA,QAAA,UACA,EAAA,MAAA,QAAA,WACA,EAAA,KAAA,QAAA,UACA,EAAA,QAAA,QAAA;;ACPA,aAEA,IAAA,EAAA,QAAA,uBACA,EAAA,QAAA,YAIA,SAAA,EAAA,EAAA,GACA,GAAA,MAAA,QAAA,GACA,OAAA,EAAA,QACA,IAAA,EACA,MAAA,GACA,IAAA,EAAA,GACA,GAAA,iBAAA,EACA,GAAA,GAUA,GAAA,QAAA,EAIA,KAHA,EAAA,EAAA,QAAA,eAAA,KACA,OAAA,GAAA,IACA,EAAA,IAAA,GACA,EAAA,EAAA,EAAA,EAAA,OAAA,GAAA,EACA,EAAA,KAAA,SAAA,EAAA,GAAA,EAAA,EAAA,GAAA,UAdA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,OAAA,IAAA,CACA,IAAA,EAAA,EAAA,WAAA,GACA,EAAA,GAAA,EACA,EAAA,IAAA,EACA,EACA,EAAA,KAAA,EAAA,GAEA,EAAA,KAAA,QAUA,IAAA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,EAAA,GAAA,EAAA,EAAA,GAEA,OAAA,EAIA,SAAA,EAAA,GAEA,IADA,IAAA,EAAA,GACA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,GAAA,EAAA,EAAA,GAAA,SAAA,KACA,OAAA,EAIA,SAAA,EAAA,GAKA,OAJA,IAAA,GACA,IAAA,EAAA,MACA,GAAA,EAAA,UACA,IAAA,IAAA,MACA,EAIA,SAAA,EAAA,EAAA,GAEA,IADA,IAAA,EAAA,GACA,EAAA,EAAA,EAAA,EAAA,OAAA,IAAA,CACA,IAAA,EAAA,EAAA,GACA,WAAA,IACA,EAAA,EAAA,IACA,GAAA,EAAA,EAAA,SAAA,KAEA,OAAA,EAIA,SAAA,EAAA,GACA,OAAA,IAAA,EAAA,OACA,IAAA,EAEA,EAIA,SAAA,EAAA,GACA,OAAA,IAAA,EAAA,OACA,IAAA,EACA,IAAA,EAAA,OACA,KAAA,EACA,IAAA,EAAA,OACA,MAAA,EACA,IAAA,EAAA,OACA,OAAA,EACA,IAAA,EAAA,OACA,QAAA,EACA,IAAA,EAAA,OACA,SAAA,EACA,IAAA,EAAA,OACA,UAAA,EAEA,EAIA,SAAA,EAAA,EAAA,EAAA,EAAA,GACA,IAAA,EAAA,EAAA,EACA,EAAA,EAAA,GAAA,GAEA,IADA,IAAA,EAAA,IAAA,MAAA,EAAA,GACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,OAAA,IAAA,GAAA,EAAA,CACA,IAAA,EAEA,EADA,QAAA,EACA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAEA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,GACA,EAAA,GAAA,IAAA,EAEA,OAAA,EAIA,SAAA,EAAA,EAAA,GAEA,IADA,IAAA,EAAA,IAAA,MAAA,EAAA,EAAA,QACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,OAAA,IAAA,GAAA,EAAA,CACA,IAAA,EAAA,EAAA,GACA,QAAA,GACA,EAAA,GAAA,IAAA,GACA,EAAA,EAAA,GAAA,IAAA,GAAA,IACA,EAAA,EAAA,GAAA,IAAA,EAAA,IACA,EAAA,EAAA,GAAA,IAAA,IAEA,EAAA,EAAA,GAAA,IAAA,GACA,EAAA,EAAA,GAAA,IAAA,GAAA,IACA,EAAA,EAAA,GAAA,IAAA,EAAA,IACA,EAAA,GAAA,IAAA,GAGA,OAAA,EAIA,SAAA,EAAA,EAAA,GACA,OAAA,IAAA,EAAA,GAAA,GAAA,EAIA,SAAA,EAAA,EAAA,GACA,OAAA,GAAA,EAAA,IAAA,GAAA,EAIA,SAAA,EAAA,EAAA,GACA,OAAA,EAAA,IAAA,EAIA,SAAA,EAAA,EAAA,EAAA,GACA,OAAA,EAAA,EAAA,IAAA,EAIA,SAAA,EAAA,EAAA,EAAA,EAAA,GACA,OAAA,EAAA,EAAA,EAAA,IAAA,EAIA,SAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACA,OAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAIA,SAAA,EAAA,EAAA,EAAA,EAAA,GACA,IAAA,EAAA,EAAA,GAGA,EAAA,EAFA,EAAA,EAAA,KAEA,EACA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EACA,EAAA,GAAA,IAAA,EACA,EAAA,EAAA,GAAA,EAIA,SAAA,EAAA,EAAA,EAAA,EAAA,GAGA,OAFA,EAAA,IAAA,EACA,EAAA,EAAA,GAAA,EAAA,IACA,EAIA,SAAA,EAAA,EAAA,EAAA,EAAA,GAEA,OADA,EAAA,IACA,EAIA,SAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACA,IAAA,EAAA,EACA,EAAA,EASA,OAPA,IADA,EAAA,EAAA,IAAA,GACA,EAAA,EAAA,EAEA,IADA,EAAA,EAAA,IAAA,GACA,EAAA,EAAA,EAIA,EAAA,EAAA,EAAA,GAFA,IADA,EAAA,EAAA,IAAA,GACA,EAAA,EAAA,KAGA,EAIA,SAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAEA,OADA,EAAA,EAAA,EAAA,IACA,EAIA,SAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACA,IAAA,EAAA,EACA,EAAA,EAWA,OATA,IADA,EAAA,EAAA,IAAA,GACA,EAAA,EAAA,EAEA,IADA,EAAA,EAAA,IAAA,GACA,EAAA,EAAA,EAEA,IADA,EAAA,EAAA,IAAA,GACA,EAAA,EAAA,EAIA,EAAA,EAAA,EAAA,EAAA,GAFA,IADA,EAAA,EAAA,IAAA,GACA,EAAA,EAAA,KAGA,EAIA,SAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAGA,OAFA,EAAA,EAAA,EAAA,EAAA,IAEA,EAIA,SAAA,EAAA,EAAA,EAAA,GAEA,OADA,GAAA,GAAA,EAAA,IAAA,KACA,EAIA,SAAA,EAAA,EAAA,EAAA,GAEA,OADA,GAAA,GAAA,EAAA,IAAA,KACA,EAIA,SAAA,EAAA,EAAA,EAAA,GACA,OAAA,IAAA,EAIA,SAAA,EAAA,EAAA,EAAA,GAEA,OADA,GAAA,GAAA,EAAA,IAAA,KACA,EArPA,QAAA,SAAA,EAgCA,QAAA,QAAA,EAQA,QAAA,MAAA,EASA,QAAA,MAAA,EAYA,QAAA,QAAA,EAQA,QAAA,MAAA,EAoBA,QAAA,MAAA,EAgBA,QAAA,OAAA,EAoBA,QAAA,QAAA,EAKA,QAAA,OAAA,EAKA,QAAA,OAAA,EAKA,QAAA,MAAA,EAKA,QAAA,QAAA,EAKA,QAAA,QAAA,EAKA,QAAA,QAAA,EAWA,QAAA,MAAA,EAOA,QAAA,SAAA,EAMA,QAAA,SAAA,EAeA,QAAA,WAAA,EAMA,QAAA,WAAA,EAiBA,QAAA,WAAA,EAOA,QAAA,WAAA,EAMA,QAAA,UAAA,EAMA,QAAA,UAAA,EAKA,QAAA,SAAA,EAMA,QAAA,SAAA;;AC5PA,aAEA,IAAA,EAAA,QAAA,WACA,EAAA,QAAA,uBAEA,SAAA,IACA,KAAA,QAAA,KACA,KAAA,aAAA,EACA,KAAA,UAAA,KAAA,YAAA,UACA,KAAA,QAAA,KAAA,YAAA,QACA,KAAA,aAAA,KAAA,YAAA,aACA,KAAA,UAAA,KAAA,YAAA,UAAA,EACA,KAAA,OAAA,MAEA,KAAA,QAAA,KAAA,UAAA,EACA,KAAA,SAAA,KAAA,UAAA,GAEA,QAAA,UAAA,EAEA,EAAA,UAAA,OAAA,SAAA,EAAA,GAUA,GARA,EAAA,EAAA,QAAA,EAAA,GACA,KAAA,QAGA,KAAA,QAAA,KAAA,QAAA,OAAA,GAFA,KAAA,QAAA,EAGA,KAAA,cAAA,EAAA,OAGA,KAAA,QAAA,QAAA,KAAA,QAAA,CAIA,IAAA,GAHA,EAAA,KAAA,SAGA,OAAA,KAAA,QACA,KAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,EAAA,QACA,IAAA,KAAA,QAAA,SACA,KAAA,QAAA,MAEA,EAAA,EAAA,OAAA,EAAA,EAAA,EAAA,OAAA,EAAA,KAAA,QACA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,OAAA,GAAA,KAAA,SACA,KAAA,QAAA,EAAA,EAAA,EAAA,KAAA,UAGA,OAAA,MAGA,EAAA,UAAA,OAAA,SAAA,GAIA,OAHA,KAAA,OAAA,KAAA,QACA,EAAA,OAAA,KAAA,SAEA,KAAA,QAAA,IAGA,EAAA,UAAA,KAAA,WACA,IAAA,EAAA,KAAA,aACA,EAAA,KAAA,QACA,EAAA,GAAA,EAAA,KAAA,WAAA,EACA,EAAA,IAAA,MAAA,EAAA,KAAA,WACA,EAAA,GAAA,IACA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,IACA,EAAA,GAAA,EAIA,GADA,IAAA,EACA,QAAA,KAAA,OAAA,CACA,IAAA,IAAA,EAAA,EAAA,EAAA,KAAA,UAAA,IACA,EAAA,KAAA,EAEA,EAAA,KAAA,EACA,EAAA,KAAA,EACA,EAAA,KAAA,EACA,EAAA,KAAA,EACA,EAAA,KAAA,IAAA,GAAA,IACA,EAAA,KAAA,IAAA,GAAA,IACA,EAAA,KAAA,IAAA,EAAA,IACA,EAAA,KAAA,IAAA,OAWA,IATA,EAAA,KAAA,IAAA,EACA,EAAA,KAAA,IAAA,EAAA,IACA,EAAA,KAAA,IAAA,GAAA,IACA,EAAA,KAAA,IAAA,GAAA,IACA,EAAA,KAAA,EACA,EAAA,KAAA,EACA,EAAA,KAAA,EACA,EAAA,KAAA,EAEA,EAAA,EAAA,EAAA,KAAA,UAAA,IACA,EAAA,KAAA,EAGA,OAAA;;AC1FA,aAEA,IAAA,EAAA,QAAA,YACA,EAAA,EAAA,OAEA,SAAA,EAAA,EAAA,EAAA,EAAA,GACA,OAAA,IAAA,EACA,EAAA,EAAA,EAAA,GACA,IAAA,GAAA,IAAA,EACA,EAAA,EAAA,EAAA,GACA,IAAA,EACA,EAAA,EAAA,EAAA,QADA,EAKA,SAAA,EAAA,EAAA,EAAA,GACA,OAAA,EAAA,GAAA,EAAA,EAIA,SAAA,EAAA,EAAA,EAAA,GACA,OAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAIA,SAAA,EAAA,EAAA,EAAA,GACA,OAAA,EAAA,EAAA,EAIA,SAAA,EAAA,GACA,OAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAIA,SAAA,EAAA,GACA,OAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAIA,SAAA,EAAA,GACA,OAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,IAAA,EAIA,SAAA,EAAA,GACA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,IAAA,GAjCA,QAAA,KAAA,EAKA,QAAA,KAAA,EAKA,QAAA,MAAA,EAKA,QAAA,IAAA,EAKA,QAAA,OAAA,EAKA,QAAA,OAAA,EAKA,QAAA,OAAA,EAKA,QAAA,OAAA;;AChDA,aAEA,IAAA,EAAA,QAAA,YACA,EAAA,QAAA,aACA,EAAA,QAAA,YAEA,EAAA,EAAA,OACA,EAAA,EAAA,MACA,EAAA,EAAA,QACA,EAAA,EAAA,KACA,EAAA,EAAA,UAEA,EAAA,CACA,WAAA,WACA,WAAA,YAGA,SAAA,IACA,KAAA,gBAAA,GACA,OAAA,IAAA,EAEA,EAAA,KAAA,MACA,KAAA,EAAA,CACA,WAAA,WAAA,WACA,UAAA,YACA,KAAA,EAAA,IAAA,MAAA,IAGA,EAAA,SAAA,EAAA,GACA,OAAA,QAAA,EAEA,EAAA,UAAA,IACA,EAAA,QAAA,IACA,EAAA,aAAA,GACA,EAAA,UAAA,GAEA,EAAA,UAAA,QAAA,SAAA,EAAA,GAGA,IAFA,IAAA,EAAA,KAAA,EAEA,EAAA,EAAA,EAAA,GAAA,IACA,EAAA,GAAA,EAAA,EAAA,GAEA,KAAA,EAAA,EAAA,OAAA,IACA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,GAEA,IAAA,EAAA,KAAA,EAAA,GACA,EAAA,KAAA,EAAA,GACA,EAAA,KAAA,EAAA,GACA,EAAA,KAAA,EAAA,GACA,EAAA,KAAA,EAAA,GAEA,IAAA,EAAA,EAAA,EAAA,EAAA,OAAA,IAAA,CACA,IAAA,KAAA,EAAA,IACA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,IACA,EAAA,EACA,EAAA,EACA,EAAA,EAAA,EAAA,IACA,EAAA,EACA,EAAA,EAGA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,GACA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,GACA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,GACA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,GACA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,IAGA,EAAA,UAAA,QAAA,SAAA,GACA,MAAA,QAAA,EACA,EAAA,QAAA,KAAA,EAAA,OAEA,EAAA,QAAA,KAAA,EAAA;;ACxEA,aAEA,IAAA,EAAA,QAAA,YACA,EAAA,QAAA,aACA,EAAA,QAAA,YACA,EAAA,QAAA,uBAEA,EAAA,EAAA,MACA,EAAA,EAAA,QACA,EAAA,EAAA,QACA,EAAA,EAAA,KACA,EAAA,EAAA,MACA,EAAA,EAAA,OACA,EAAA,EAAA,OACA,EAAA,EAAA,OACA,EAAA,EAAA,OAEA,EAAA,EAAA,UAEA,EAAA,CACA,WAAA,WAAA,WAAA,WACA,UAAA,WAAA,WAAA,WACA,WAAA,UAAA,UAAA,WACA,WAAA,WAAA,WAAA,WACA,WAAA,WAAA,UAAA,UACA,UAAA,WAAA,WAAA,WACA,WAAA,WAAA,WAAA,WACA,WAAA,WAAA,UAAA,UACA,UAAA,UAAA,WAAA,WACA,WAAA,WAAA,WAAA,WACA,WAAA,WAAA,WAAA,WACA,WAAA,WAAA,WAAA,UACA,UAAA,UAAA,UAAA,UACA,UAAA,WAAA,WAAA,WACA,WAAA,WAAA,WAAA,WACA,WAAA,WAAA,WAAA,YAGA,SAAA,IACA,KAAA,gBAAA,GACA,OAAA,IAAA,EAEA,EAAA,KAAA,MACA,KAAA,EAAA,CACA,WAAA,WAAA,WAAA,WACA,WAAA,WAAA,UAAA,YAEA,KAAA,EAAA,EACA,KAAA,EAAA,IAAA,MAAA,IAEA,EAAA,SAAA,EAAA,GACA,OAAA,QAAA,EAEA,EAAA,UAAA,IACA,EAAA,QAAA,IACA,EAAA,aAAA,IACA,EAAA,UAAA,GAEA,EAAA,UAAA,QAAA,SAAA,EAAA,GAGA,IAFA,IAAA,EAAA,KAAA,EAEA,EAAA,EAAA,EAAA,GAAA,IACA,EAAA,GAAA,EAAA,EAAA,GACA,KAAA,EAAA,EAAA,OAAA,IACA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,KAEA,IAAA,EAAA,KAAA,EAAA,GACA,EAAA,KAAA,EAAA,GACA,EAAA,KAAA,EAAA,GACA,EAAA,KAAA,EAAA,GACA,EAAA,KAAA,EAAA,GACA,EAAA,KAAA,EAAA,GACA,EAAA,KAAA,EAAA,GACA,EAAA,KAAA,EAAA,GAGA,IADA,EAAA,KAAA,EAAA,SAAA,EAAA,QACA,EAAA,EAAA,EAAA,EAAA,OAAA,IAAA,CACA,IAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,KAAA,EAAA,GAAA,EAAA,IACA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IACA,EAAA,EACA,EAAA,EACA,EAAA,EACA,EAAA,EAAA,EAAA,GACA,EAAA,EACA,EAAA,EACA,EAAA,EACA,EAAA,EAAA,EAAA,GAGA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,GACA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,GACA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,GACA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,GACA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,GACA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,GACA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,GACA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,IAGA,EAAA,UAAA,QAAA,SAAA,GACA,MAAA,QAAA,EACA,EAAA,QAAA,KAAA,EAAA,OAEA,EAAA,QAAA,KAAA,EAAA;;ACvGA,aAEA,IAAA,EAAA,QAAA,YACA,EAAA,QAAA,SAEA,SAAA,IACA,KAAA,gBAAA,GACA,OAAA,IAAA,EAEA,EAAA,KAAA,MACA,KAAA,EAAA,CACA,WAAA,UAAA,UAAA,WACA,WAAA,WAAA,WAAA,YAEA,EAAA,SAAA,EAAA,GACA,OAAA,QAAA,EAEA,EAAA,UAAA,IACA,EAAA,QAAA,IACA,EAAA,aAAA,IACA,EAAA,UAAA,GAEA,EAAA,UAAA,QAAA,SAAA,GAEA,MAAA,QAAA,EACA,EAAA,QAAA,KAAA,EAAA,MAAA,EAAA,GAAA,OAEA,EAAA,QAAA,KAAA,EAAA,MAAA,EAAA,GAAA;;AC3BA,aAEA,IAAA,EAAA,QAAA,YACA,EAAA,QAAA,aACA,EAAA,QAAA,uBAEA,EAAA,EAAA,UACA,EAAA,EAAA,UACA,EAAA,EAAA,SACA,EAAA,EAAA,SACA,EAAA,EAAA,MACA,EAAA,EAAA,SACA,EAAA,EAAA,SACA,EAAA,EAAA,WACA,EAAA,EAAA,WACA,EAAA,EAAA,WACA,EAAA,EAAA,WAEA,EAAA,EAAA,UAEA,EAAA,CACA,WAAA,WAAA,WAAA,UACA,WAAA,WAAA,WAAA,WACA,UAAA,WAAA,WAAA,WACA,WAAA,WAAA,WAAA,WACA,WAAA,WAAA,UAAA,WACA,UAAA,WAAA,WAAA,WACA,WAAA,WAAA,WAAA,UACA,WAAA,UAAA,WAAA,WACA,WAAA,WAAA,WAAA,UACA,UAAA,WAAA,UAAA,WACA,UAAA,WAAA,WAAA,WACA,WAAA,WAAA,WAAA,WACA,WAAA,WAAA,WAAA,UACA,WAAA,WAAA,WAAA,WACA,WAAA,WAAA,WAAA,WACA,UAAA,WAAA,UAAA,UACA,UAAA,WAAA,UAAA,WACA,WAAA,WAAA,WAAA,WACA,WAAA,WAAA,WAAA,WACA,WAAA,WAAA,WAAA,UACA,WAAA,WAAA,WAAA,WACA,WAAA,WAAA,WAAA,UACA,WAAA,WAAA,WAAA,WACA,WAAA,WAAA,UAAA,UACA,UAAA,WAAA,UAAA,WACA,UAAA,WAAA,UAAA,WACA,UAAA,WAAA,WAAA,WACA,WAAA,WAAA,WAAA,WACA,WAAA,WAAA,WAAA,WACA,WAAA,WAAA,WAAA,UACA,WAAA,UAAA,WAAA,WACA,WAAA,WAAA,WAAA,WACA,WAAA,WAAA,WAAA,UACA,WAAA,WAAA,WAAA,WACA,UAAA,WAAA,UAAA,WACA,UAAA,WAAA,UAAA,UACA,UAAA,UAAA,UAAA,WACA,WAAA,UAAA,WAAA,WACA,WAAA,WAAA,WAAA,WACA,WAAA,UAAA,WAAA,YAGA,SAAA,IACA,KAAA,gBAAA,GACA,OAAA,IAAA,EAEA,EAAA,KAAA,MACA,KAAA,EAAA,CACA,WAAA,WACA,WAAA,WACA,WAAA,WACA,WAAA,WACA,WAAA,WACA,WAAA,UACA,UAAA,WACA,WAAA,WACA,KAAA,EAAA,EACA,KAAA,EAAA,IAAA,MAAA,KAyIA,SAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACA,IAAA,EAAA,EAAA,GAAA,EAAA,EAGA,OAFA,EAAA,IACA,GAAA,YACA,EAGA,SAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACA,IAAA,EAAA,EAAA,GAAA,EAAA,EAGA,OAFA,EAAA,IACA,GAAA,YACA,EAGA,SAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAGA,OAFA,EAAA,IACA,GAAA,YACA,EAGA,SAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAGA,OAFA,EAAA,IACA,GAAA,YACA,EAGA,SAAA,EAAA,EAAA,GACA,IAIA,EAJA,EAAA,EAAA,EAAA,IACA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EAAA,GAKA,OAFA,EAAA,IACA,GAAA,YACA,EAGA,SAAA,EAAA,EAAA,GACA,IAIA,EAJA,EAAA,EAAA,EAAA,IACA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EAAA,GAKA,OAFA,EAAA,IACA,GAAA,YACA,EAGA,SAAA,EAAA,EAAA,GACA,IAIA,EAJA,EAAA,EAAA,EAAA,IACA,EAAA,EAAA,EAAA,IACA,EAAA,EAAA,EAAA,GAKA,OAFA,EAAA,IACA,GAAA,YACA,EAGA,SAAA,EAAA,EAAA,GACA,IAIA,EAJA,EAAA,EAAA,EAAA,IACA,EAAA,EAAA,EAAA,IACA,EAAA,EAAA,EAAA,GAKA,OAFA,EAAA,IACA,GAAA,YACA,EAGA,SAAA,EAAA,EAAA,GACA,IAIA,EAJA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EAAA,GAKA,OAFA,EAAA,IACA,GAAA,YACA,EAGA,SAAA,EAAA,EAAA,GACA,IAIA,EAJA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EAAA,GAKA,OAFA,EAAA,IACA,GAAA,YACA,EAGA,SAAA,EAAA,EAAA,GACA,IAIA,EAJA,EAAA,EAAA,EAAA,IACA,EAAA,EAAA,EAAA,IACA,EAAA,EAAA,EAAA,GAKA,OAFA,EAAA,IACA,GAAA,YACA,EAGA,SAAA,EAAA,EAAA,GACA,IAIA,EAJA,EAAA,EAAA,EAAA,IACA,EAAA,EAAA,EAAA,IACA,EAAA,EAAA,EAAA,GAKA,OAFA,EAAA,IACA,GAAA,YACA,EAxPA,EAAA,SAAA,EAAA,GACA,OAAA,QAAA,EAEA,EAAA,UAAA,KACA,EAAA,QAAA,IACA,EAAA,aAAA,IACA,EAAA,UAAA,IAEA,EAAA,UAAA,cAAA,SAAA,EAAA,GAIA,IAHA,IAAA,EAAA,KAAA,EAGA,EAAA,EAAA,EAAA,GAAA,IACA,EAAA,GAAA,EAAA,EAAA,GACA,KAAA,EAAA,EAAA,OAAA,GAAA,EAAA,CACA,IAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IACA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IACA,EAAA,EAAA,EAAA,IACA,EAAA,EAAA,EAAA,IACA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,KACA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,KACA,EAAA,EAAA,EAAA,IACA,EAAA,EAAA,EAAA,IAEA,EAAA,GAAA,EACA,EAAA,EACA,EAAA,EACA,EAAA,EACA,EAAA,GACA,EAAA,EAAA,GAAA,EACA,EAAA,EACA,EAAA,EACA,EAAA,EACA,EAAA,KAIA,EAAA,UAAA,QAAA,SAAA,EAAA,GACA,KAAA,cAAA,EAAA,GAEA,IAAA,EAAA,KAAA,EAEA,EAAA,KAAA,EAAA,GACA,EAAA,KAAA,EAAA,GACA,EAAA,KAAA,EAAA,GACA,EAAA,KAAA,EAAA,GACA,EAAA,KAAA,EAAA,GACA,EAAA,KAAA,EAAA,GACA,EAAA,KAAA,EAAA,GACA,EAAA,KAAA,EAAA,GACA,EAAA,KAAA,EAAA,GACA,EAAA,KAAA,EAAA,GACA,EAAA,KAAA,EAAA,IACA,EAAA,KAAA,EAAA,IACA,EAAA,KAAA,EAAA,IACA,EAAA,KAAA,EAAA,IACA,EAAA,KAAA,EAAA,IACA,EAAA,KAAA,EAAA,IAEA,EAAA,KAAA,EAAA,SAAA,EAAA,QACA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,OAAA,GAAA,EAAA,CACA,IAAA,EAAA,EACA,EAAA,EACA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACA,EAAA,KAAA,EAAA,GACA,EAAA,KAAA,EAAA,EAAA,GACA,EAAA,EAAA,GACA,EAAA,EAAA,EAAA,GAEA,EAAA,EACA,EAAA,EACA,EAAA,EACA,EAAA,EACA,EAAA,EACA,EAAA,GACA,EAAA,EACA,EAAA,EACA,EAAA,EACA,EAAA,EACA,EAAA,EACA,EAAA,GAEA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAEA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EAAA,EAAA,EAAA,GAEA,EAAA,EACA,EAAA,EAEA,EAAA,EACA,EAAA,EAEA,EAAA,EACA,EAAA,EAEA,EAAA,EAAA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EAAA,EAAA,EAAA,GAEA,EAAA,EACA,EAAA,EAEA,EAAA,EACA,EAAA,EAEA,EAAA,EACA,EAAA,EAEA,EAAA,EAAA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EAAA,EAAA,EAAA,GAGA,EAAA,KAAA,EAAA,EAAA,EAAA,GACA,EAAA,KAAA,EAAA,EAAA,EAAA,GACA,EAAA,KAAA,EAAA,EAAA,EAAA,GACA,EAAA,KAAA,EAAA,EAAA,EAAA,GACA,EAAA,KAAA,EAAA,EAAA,EAAA,GACA,EAAA,KAAA,EAAA,GAAA,EAAA,GACA,EAAA,KAAA,EAAA,GAAA,EAAA,GACA,EAAA,KAAA,EAAA,GAAA,EAAA,IAGA,EAAA,UAAA,QAAA,SAAA,GACA,MAAA,QAAA,EACA,EAAA,QAAA,KAAA,EAAA,OAEA,EAAA,QAAA,KAAA,EAAA;;ACpNA,aAEA,IAAA,EAAA,QAAA,YAEA,EAAA,QAAA,SAEA,SAAA,IACA,KAAA,gBAAA,GACA,OAAA,IAAA,EAEA,EAAA,KAAA,MACA,KAAA,EAAA,CACA,WAAA,WACA,WAAA,UACA,WAAA,UACA,UAAA,WACA,WAAA,WACA,WAAA,WACA,WAAA,WACA,WAAA,YAEA,EAAA,SAAA,EAAA,GACA,OAAA,QAAA,EAEA,EAAA,UAAA,KACA,EAAA,QAAA,IACA,EAAA,aAAA,IACA,EAAA,UAAA,IAEA,EAAA,UAAA,QAAA,SAAA,GACA,MAAA,QAAA,EACA,EAAA,QAAA,KAAA,EAAA,MAAA,EAAA,IAAA,OAEA,EAAA,QAAA,KAAA,EAAA,MAAA,EAAA,IAAA;;ACjCA,aAEA,QAAA,KAAA,QAAA,WACA,QAAA,OAAA,QAAA,aACA,QAAA,OAAA,QAAA,aACA,QAAA,OAAA,QAAA,aACA,QAAA,OAAA,QAAA;;ACNA,aAEA,IAAA,EAAA,QAAA,WACA,EAAA,QAAA,YAEA,EAAA,EAAA,OACA,EAAA,EAAA,MACA,EAAA,EAAA,QACA,EAAA,EAAA,QACA,EAAA,EAAA,UAEA,SAAA,IACA,KAAA,gBAAA,GACA,OAAA,IAAA,EAEA,EAAA,KAAA,MAEA,KAAA,EAAA,CAAA,WAAA,WAAA,WAAA,UAAA,YACA,KAAA,OAAA,SA0DA,SAAA,EAAA,EAAA,EAAA,EAAA,GACA,OAAA,GAAA,GACA,EAAA,EAAA,EACA,GAAA,GACA,EAAA,GAAA,EAAA,EACA,GAAA,IACA,GAAA,GAAA,EACA,GAAA,GACA,EAAA,EAAA,GAAA,EAEA,GAAA,GAAA,GAGA,SAAA,EAAA,GACA,OAAA,GAAA,GACA,EACA,GAAA,GACA,WACA,GAAA,GACA,WACA,GAAA,GACA,WAEA,WAGA,SAAA,EAAA,GACA,OAAA,GAAA,GACA,WACA,GAAA,GACA,WACA,GAAA,GACA,WACA,GAAA,GACA,WAEA,EA5FA,EAAA,SAAA,EAAA,GACA,QAAA,UAAA,EAEA,EAAA,UAAA,IACA,EAAA,QAAA,IACA,EAAA,aAAA,IACA,EAAA,UAAA,GAEA,EAAA,UAAA,QAAA,SAAA,EAAA,GAWA,IAVA,IAAA,EAAA,KAAA,EAAA,GACA,EAAA,KAAA,EAAA,GACA,EAAA,KAAA,EAAA,GACA,EAAA,KAAA,EAAA,GACA,EAAA,KAAA,EAAA,GACA,EAAA,EACA,EAAA,EACA,EAAA,EACA,EAAA,EACA,EAAA,EACA,EAAA,EAAA,EAAA,GAAA,IAAA,CACA,IAAA,EAAA,EACA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,GAAA,EAAA,IACA,EAAA,IACA,GACA,EAAA,EACA,EAAA,EACA,EAAA,EAAA,EAAA,IACA,EAAA,EACA,EAAA,EACA,EAAA,EACA,EACA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,GAAA,EAAA,IACA,EAAA,IACA,GACA,EAAA,EACA,EAAA,EACA,EAAA,EAAA,EAAA,IACA,EAAA,EACA,EAAA,EAEA,EAAA,EAAA,KAAA,EAAA,GAAA,EAAA,GACA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,GACA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,GACA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,GACA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,GACA,KAAA,EAAA,GAAA,GAGA,EAAA,UAAA,QAAA,SAAA,GACA,MAAA,QAAA,EACA,EAAA,QAAA,KAAA,EAAA,UAEA,EAAA,QAAA,KAAA,EAAA,WA0CA,IAAA,EAAA,CACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,GAAA,EAAA,GACA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAGA,EAAA,CACA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GACA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EACA,GAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GACA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,GACA,GAAA,GAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,EAAA,IAGA,EAAA,CACA,GAAA,GAAA,GAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GAAA,GAAA,GAAA,GAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GACA,GAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EACA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,EAAA,EAAA,GAGA,EAAA,CACA,EAAA,EAAA,EAAA,GAAA,GAAA,GAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,GAAA,GACA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,EACA,GAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,GAAA,GAAA;;AChJA,aAEA,IAAA,EAAA,QAAA,WACA,EAAA,QAAA,uBAEA,SAAA,EAAA,EAAA,EAAA,GACA,KAAA,gBAAA,GACA,OAAA,IAAA,EAAA,EAAA,EAAA,GACA,KAAA,KAAA,EACA,KAAA,UAAA,EAAA,UAAA,EACA,KAAA,QAAA,EAAA,QAAA,EACA,KAAA,MAAA,KACA,KAAA,MAAA,KAEA,KAAA,MAAA,EAAA,QAAA,EAAA,IAEA,OAAA,QAAA,EAEA,EAAA,UAAA,MAAA,SAAA,GAEA,EAAA,OAAA,KAAA,YACA,GAAA,IAAA,KAAA,MAAA,OAAA,GAAA,UACA,EAAA,EAAA,QAAA,KAAA,WAGA,IAAA,IAAA,EAAA,EAAA,OAAA,EAAA,KAAA,UAAA,IACA,EAAA,KAAA,GAEA,IAAA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,EAAA,IAAA,GAIA,IAHA,KAAA,OAAA,IAAA,KAAA,MAAA,OAAA,GAGA,EAAA,EAAA,EAAA,EAAA,OAAA,IACA,EAAA,IAAA,IACA,KAAA,OAAA,IAAA,KAAA,MAAA,OAAA,IAGA,EAAA,UAAA,OAAA,SAAA,EAAA,GAEA,OADA,KAAA,MAAA,OAAA,EAAA,GACA,MAGA,EAAA,UAAA,OAAA,SAAA,GAEA,OADA,KAAA,MAAA,OAAA,KAAA,MAAA,UACA,KAAA,MAAA,OAAA;;AC7CA,IAAA,EAAA,QAEA,EAAA,MAAA,QAAA,gBACA,EAAA,OAAA,QAAA,iBACA,EAAA,IAAA,QAAA,cACA,EAAA,OAAA,QAAA,iBACA,EAAA,KAAA,QAAA,eAGA,EAAA,KAAA,EAAA,IAAA,KACA,EAAA,OAAA,EAAA,IAAA,OACA,EAAA,OAAA,EAAA,IAAA,OACA,EAAA,OAAA,EAAA,IAAA,OACA,EAAA,OAAA,EAAA,IAAA,OACA,EAAA,UAAA,EAAA,OAAA;;ACdA,OAAA,QAAA,CACA,QAAA,CACA,KAAA,EACA,OAAA,CACA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,mEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,kEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,kEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,mEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,mEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,kEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,kEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,mEAEA,CACA,mEACA,oEAEA,CACA,kEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,sEAIA,IAAA,CACA,IAAA,EACA,OAAA,CACA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,mEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,mEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,mEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,mEAEA,CACA,mEACA,oEAEA,CACA,kEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,mEAEA,CACA,mEACA,mEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,mEAEA,CACA,mEACA,oEAEA,CACA,mEACA,mEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,kEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,mEAEA,CACA,mEACA,mEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,kEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,mEAEA,CACA,mEACA,oEAEA,CACA,mEACA,mEAEA,CACA,mEACA,oEAEA,CACA,kEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,iEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,kEACA,oEAEA,CACA,mEACA,mEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,mEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,mEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,mEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,mEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA,oEAEA,CACA,mEACA;;ACvwBA,aAEA,IAqKA,EArKA,EAAA,QAEA,EAAA,QAAA,WACA,EAAA,QAAA,eAEA,EAAA,EAAA,MAAA,OAEA,SAAA,EAAA,GACA,UAAA,EAAA,KACA,KAAA,MAAA,IAAA,EAAA,MAAA,MAAA,GACA,YAAA,EAAA,KACA,KAAA,MAAA,IAAA,EAAA,MAAA,QAAA,GAEA,KAAA,MAAA,IAAA,EAAA,MAAA,KAAA,GACA,KAAA,EAAA,KAAA,MAAA,EACA,KAAA,EAAA,KAAA,MAAA,EACA,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AAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,IAAA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,IAAA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,IAAA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,GAAA,IAAA,EAAA,EAAA,GAAA,IAAA,EAAA,EAAA,GAAA,IAAA,EAAA,EAAA,GAAA,IAAA,EAAA,EAAA,GAAA,IAAA,IAAA,GAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,IAAA,IAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,IAAA,IAAA,IAAA,EAAA,EAAA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,IAAA,EAAA,IAAA,EAAA,EAAA,IAAA,IAAA,EAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,EAAA,EAAA,IAAA,EAAA,IAAA,IAAA,EAAA,EAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,EAAA,IAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,EAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,EAAA,GAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,EAAA,GAAA,IAAA,GAAA,GAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,EAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,EAAA,IAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,EAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,EAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,EAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,EAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,KAAA,WAAA,QAAA,aACA,SAAA,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,EAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,EAAA,GAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,EAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,EAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,IAAA,IAAA,EAAA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,EAAA,IAAA,IAAA,IAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,EAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,EAAA,GAAA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,EAAA,IAAA,GAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,GAAA,IAAA,EAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,EAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,EAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,IAAA,EAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,EAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,IAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,IAAA,IAAA,EAAA,IAAA,EAAA,IAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,EAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,EAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,EAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,EAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,EAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,IAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,EAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,EAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,EAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,EAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,EAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,EAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,EAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,EAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,EAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,EAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,EAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,EAAA,EAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,IAAA,IAAA,KAAA,WAAA,QAAA,YAAA,OACA,SAAA,CAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,EAAA,GAAA,IAAA,I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AA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,IAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GA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AA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,KAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,EAAA,GAAA,KAAA,EACA,EAAA,GAAA,KAAA,EACA,GAAA,GAAA,KAAA,EACA,GAAA,GAAA,KAAA,EACA,GAAA,GAAA,KAAA,EACA,GAAA,GAAA,KAAA,EACA,GAAA,GAAA,KAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,EAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,KAAA,EACA,GAAA,GAAA,KAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,GA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AA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,KAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GAAA,KAAA,EACA,GAAA,GAAA,KAAA,EACA,GAAA,GAAA,KAAA,EACA,GAAA,GAAA,KAAA,EACA,GAAA,GAAA,KAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EA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AA,QAAA,GACA,EAAA,GACA,OAAA,EAAA,EAEA,SAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,GAAA,EACA,EAAA,EAAA,EACA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,IAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,GAAA,EACA,GAAA,GACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,EAAA,IAAA,GAAA,MACA,EAAA,GAAA,GAAA,GAAA,MACA,EAAA,GAAA,IAAA,GAAA,MACA,EAAA,GAAA,IAAA,GAAA,MACA,EAAA,GAAA,IAAA,GAAA,MACA,EAAA,GAAA,IAAA,GAAA,MACA,EAAA,GAAA,IAAA,GAAA,MACA,EAAA,GAAA,IAAA,GAAA,MA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EA,EAAA,GACA,OAAA,EAAA,EAGA,SAAA,GAAA,EAAA,EAAA,GACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,IAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GAAA,IAAA,EACA,EAAA,GAAA,IAAA,EACA,EAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,EAAA,GAAA,IAAA,EACA,EAAA,GAAA,IAAA,EACA,EAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,GAAA,GACA,EAAA,GAAA,IAAA,EAAA,KAAA,EAAA,GAAA,EAAA,OAAA,GAAA,OAAA,EAAA,GAAA,GAAA,GACA,KAAA,IACA,CACA,GAAA,EAAA,OACA,GAAA,EAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,KAAA,EAAA,CACA,GAAA,GAAA,GACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,OACA,CACA,GAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,IAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,IAAA,GAAA,GAAA,GACA,IAAA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,WAAA,CACA,GAAA,IAAA,EACA,EAAA,KAAA,EAAA,KAAA,EAAA,GAAA,QACA,EAAA,WACA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GACA,GAAA,GAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,GACA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,IACA,GAAA,IAEA,GAAA,GACA,EAAA,EAAA,EAAA,EACA,MAAA,EACA,MAEA,KAAA,IACA,CACA,EAAA,GAAA,GAAA,GACA,GAAA,EAAA,EAAA,EACA,EAAA,IAAA,GAAA,EAAA,OAAA,EACA,EAAA,GAAA,GAAA,GAAA,EAAA,OAAA,EACA,EAAA,GAAA,GAAA,GAAA,EAAA,OAAA,EACA,EAAA,GAAA,GAAA,GAAA,EAAA,OAAA,EACA,EAAA,GAAA,GAAA,GAAA,EAAA,OAAA,EACA,EAAA,GAAA,GAAA,GAAA,EAAA,OAAA,EACA,EAAA,GAAA,GAAA,GAAA,EAAA,OAAA,EACA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,EAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,GAAA,GAAA,EACA,GAAA,EAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,KAAA,EAAA,CACA,GAAA,GAAA,GACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,OACA,CACA,GAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,IAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,IAAA,GAAA,GAAA,GACA,IAAA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,WAAA,CACA,GAAA,IAAA,EACA,EAAA,KAAA,EAAA,KAAA,EAAA,GAAA,QACA,EAAA,WACA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GACA,GAAA,GAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,GACA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,IACA,GAAA,IAEA,GAAA,GACA,EAAA,EAAA,EAAA,EACA,MAAA,EACA,MAEA,KAAA,GACA,CACA,GAAA,GAAA,OACA,GAAA,EAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,KAAA,EAAA,CACA,GAAA,GAAA,IACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,OACA,CACA,GAAA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,GAAA,EACA,GAAA,EAAA,GAAA,GAAA,EACA,EAAA,EAAA,EAAA,EACA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,IAAA,EAAA,WAAA,CACA,EAAA,GAAA,EACA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,OACA,EAAA,WACA,GAAA,GAAA,EAAA,EAAA,EAAA,GAAA,GACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,EAAA,IACA,EAAA,GAAA,GAAA,EAAA,GACA,GAAA,EAAA,IACA,GAAA,IAEA,GAAA,IACA,EAAA,EAAA,EAAA,EACA,MAAA,EACA,MAEA,KAAA,GACA,CACA,GAAA,GAAA,OACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,GAAA,GAAA,EACA,EAAA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,IAAA,EAAA,IAAA,EAAA,CACA,GAAA,EAAA,IACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,OACA,CACA,EAAA,EAAA,GAAA,GAAA,EACA,EAAA,EAAA,EAAA,EACA,IAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,IAAA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,WAAA,CACA,GAAA,IAAA,EACA,EAAA,KAAA,EAAA,KAAA,EAAA,GAAA,QACA,EAAA,WACA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GACA,GAAA,GAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IACA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,IACA,GAAA,IAEA,GAAA,IACA,EAAA,EAAA,EAAA,EACA,MAAA,EACA,MAEA,KAAA,GACA,CACA,GAAA,GAAA,OACA,GAAA,EAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,KAAA,EAAA,CACA,GAAA,GAAA,IACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,OACA,CACA,GAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,IAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,IAAA,GAAA,GAAA,GACA,IAAA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,WAAA,CACA,GAAA,IAAA,EACA,EAAA,KAAA,EAAA,KAAA,EAAA,GAAA,QACA,EAAA,WACA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GACA,GAAA,GAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IACA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,IACA,GAAA,IAEA,GAAA,IACA,EAAA,EAAA,EAAA,EACA,MAAA,EACA,MAEA,KAAA,IACA,CACA,GAAA,GAAA,OACA,GAAA,EAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,KAAA,EAAA,CACA,GAAA,GAAA,IACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,OACA,CACA,GAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,IAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,IAAA,GAAA,GAAA,GACA,IAAA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,WAAA,CACA,GAAA,IAAA,EACA,EAAA,KAAA,EAAA,KAAA,EAAA,GAAA,QACA,EAAA,WACA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GACA,GAAA,GAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IACA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,IACA,GAAA,IAEA,GAAA,IACA,EAAA,EAAA,EAAA,EACA,MAAA,EACA,MAEA,KAAA,IACA,CACA,GAAA,GAAA,OACA,GAAA,EAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,KAAA,EAAA,CACA,GAAA,GAAA,IACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,OACA,CACA,GAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,IAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,IAAA,GAAA,GAAA,GACA,IAAA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,WAAA,CACA,GAAA,IAAA,EACA,EAAA,KAAA,EAAA,KAAA,EAAA,GAAA,QACA,EAAA,WACA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GACA,GAAA,GAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IACA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,IACA,GAAA,IAEA,GAAA,IACA,EAAA,EAAA,EAAA,EACA,MAAA,EACA,MAEA,KAAA,IACA,CACA,GAAA,GAAA,OACA,GAAA,EAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,KAAA,EAAA,CACA,GAAA,GAAA,IACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,OACA,CACA,GAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,IAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,IAAA,GAAA,GAAA,GACA,IAAA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,WAAA,CACA,GAAA,IAAA,EACA,EAAA,KAAA,EAAA,KAAA,EAAA,GAAA,QACA,EAAA,WACA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GACA,GAAA,GAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IACA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,IACA,GAAA,IAEA,GAAA,IACA,EAAA,EAAA,EAAA,EACA,MAAA,EACA,MAEA,KAAA,IACA,CACA,GAAA,GAAA,OACA,GAAA,EAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,KAAA,EAAA,CACA,GAAA,GAAA,IACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,OACA,CACA,GAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,IAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,IAAA,GAAA,GAAA,GACA,IAAA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,WAAA,CACA,GAAA,IAAA,EACA,EAAA,KAAA,EAAA,KAAA,EAAA,GAAA,QACA,EAAA,WACA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GACA,GAAA,GAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IACA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,IACA,GAAA,IAEA,GAAA,IACA,EAAA,EAAA,EAAA,EACA,MAAA,EACA,MAEA,KAAA,IACA,CACA,GAAA,GAAA,OACA,GAAA,EAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,KAAA,EAAA,CACA,GAAA,GAAA,IACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,OACA,CACA,GAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,IAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,IAAA,GAAA,GAAA,GACA,IAAA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,WAAA,CACA,GAAA,IAAA,EACA,EAAA,KAAA,EAAA,KAAA,EAAA,GAAA,QACA,EAAA,WACA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GACA,GAAA,GAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IACA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,IACA,GAAA,IAEA,GAAA,IACA,EAAA,EAAA,EAAA,EACA,MAAA,EACA,MAEA,KAAA,IACA,CACA,GAAA,EAAA,OACA,GAAA,EAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,KAAA,EAAA,CACA,GAAA,GAAA,GACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,OACA,CACA,GAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,IAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,IAAA,GAAA,GAAA,GACA,IAAA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,WAAA,CACA,GAAA,IAAA,EACA,EAAA,KAAA,EAAA,KAAA,EAAA,GAAA,QACA,EAAA,WACA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GACA,GAAA,GAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,GACA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,IACA,GAAA,IAEA,GAAA,GACA,EAAA,EAAA,EAAA,EACA,MAAA,EACA,MAEA,KAAA,IACA,CACA,GAAA,EAAA,OACA,GAAA,EAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,KAAA,EAAA,CACA,GAAA,GAAA,GACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,OACA,CACA,GAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,IAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,IAAA,GAAA,GAAA,GACA,IAAA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,WAAA,CACA,GAAA,IAAA,EACA,EAAA,KAAA,EAAA,KAAA,EAAA,GAAA,QACA,EAAA,WACA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GACA,GAAA,GAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,GACA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,IACA,GAAA,IAEA,GAAA,GACA,EAAA,EAAA,EAAA,EACA,MAAA,EACA,MAEA,KAAA,IACA,CACA,GAAA,EAAA,OACA,GAAA,EAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,KAAA,EAAA,CACA,GAAA,GAAA,GACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,OACA,CACA,GAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,IAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,IAAA,GAAA,GAAA,GACA,IAAA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,WAAA,CACA,GAAA,IAAA,EACA,EAAA,KAAA,EAAA,KAAA,EAAA,GAAA,QACA,EAAA,WACA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GACA,GAAA,GAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,GACA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,IACA,GAAA,IAEA,GAAA,GACA,EAAA,EAAA,EAAA,EACA,MAAA,EACA,MAEA,KAAA,IACA,CACA,GAAA,GAAA,IAAA,EACA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,IAAA,GAAA,GACA,EAAA,GAAA,GAAA,GAAA,GACA,GAAA,GACA,GAAA,MACA,GAAA,GAAA,GAAA,EACA,EAAA,CACA,EAAA,IAAA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,GAAA,GAAA,EAAA,SACA,GAAA,IAAA,GAAA,IACA,EAAA,GAAA,IAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,GAAA,GAAA,EACA,GAAA,EAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,KAAA,EAAA,CACA,GAAA,GAAA,IACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,OACA,CACA,GAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,IAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,IAAA,GAAA,GAAA,GACA,IAAA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,WAAA,CACA,GAAA,IAAA,EACA,EAAA,KAAA,EAAA,KAAA,EAAA,GAAA,QACA,EAAA,WACA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GACA,GAAA,GAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IACA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,IACA,GAAA,IAEA,GAAA,IACA,EAAA,EAAA,EAAA,EACA,MAAA,EACA,MAEA,KAAA,IACA,CACA,GAAA,GAAA,OACA,GAAA,EAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,KAAA,EAAA,CACA,GAAA,GAAA,IACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,OACA,CACA,GAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,IAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,IAAA,GAAA,GAAA,GACA,IAAA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,WAAA,CACA,GAAA,IAAA,EACA,EAAA,KAAA,EAAA,KAAA,EAAA,GAAA,QACA,EAAA,WACA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GACA,GAAA,GAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IACA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,IACA,GAAA,IAEA,GAAA,IACA,EAAA,EAAA,EAAA,EACA,MAAA,EACA,MAEA,KAAA,IACA,CACA,GAAA,GAAA,OACA,GAAA,EAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,KAAA,EAAA,CACA,GAAA,GAAA,IACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,OACA,CACA,GAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,IAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,IAAA,GAAA,GAAA,GACA,IAAA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,WAAA,CACA,GAAA,IAAA,EACA,EAAA,KAAA,EAAA,KAAA,EAAA,GAAA,QACA,EAAA,WACA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GACA,GAAA,GAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IACA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,IACA,GAAA,IAEA,GAAA,IACA,EAAA,EAAA,EAAA,EACA,MAAA,EACA,MAEA,KAAA,IACA,CACA,GAAA,GAAA,OACA,GAAA,EAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,KAAA,EAAA,CACA,GAAA,GAAA,IACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,OACA,CACA,GAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,IAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,IAAA,GAAA,GAAA,GACA,IAAA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,WAAA,CACA,GAAA,IAAA,EACA,EAAA,KAAA,EAAA,KAAA,EAAA,GAAA,QACA,EAAA,WACA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GACA,GAAA,GAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IACA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,IACA,GAAA,IAEA,GAAA,IACA,EAAA,EAAA,EAAA,EACA,MAAA,EACA,MAEA,KAAA,IACA,CACA,EAAA,IAAA,GAAA,GACA,GAAA,GAAA,EAAA,EACA,EAAA,IAAA,GAAA,EAAA,OAAA,EACA,EAAA,GAAA,GAAA,GAAA,EAAA,OAAA,EACA,EAAA,GAAA,GAAA,GAAA,EAAA,OAAA,EACA,EAAA,GAAA,GAAA,GAAA,EAAA,OAAA,EACA,EAAA,GAAA,GAAA,GAAA,EAAA,OAAA,EACA,EAAA,GAAA,GAAA,GAAA,EAAA,OAAA,EACA,EAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,GAAA,GAAA,EACA,GAAA,EAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,KAAA,EAAA,CACA,GAAA,GAAA,IACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,OACA,CACA,GAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,IAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,IAAA,GAAA,GAAA,GACA,IAAA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,WAAA,CACA,GAAA,IAAA,EACA,EAAA,KAAA,EAAA,KAAA,EAAA,GAAA,QACA,EAAA,WACA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GACA,GAAA,GAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IACA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,IACA,GAAA,IAEA,GAAA,IACA,EAAA,EAAA,EAAA,EACA,MAAA,EACA,MAEA,KAAA,IACA,CACA,GAAA,GAAA,OACA,GAAA,EAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,KAAA,EAAA,CACA,GAAA,GAAA,IACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,OACA,CACA,GAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,IAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,IAAA,GAAA,GAAA,GACA,IAAA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,WAAA,CACA,GAAA,IAAA,EACA,EAAA,KAAA,EAAA,KAAA,EAAA,GAAA,QACA,EAAA,WACA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GACA,GAAA,GAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IACA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,IACA,GAAA,IAEA,GAAA,IACA,EAAA,EAAA,EAAA,EACA,MAAA,EACA,MAEA,KAAA,IACA,CACA,GAAA,GAAA,OACA,GAAA,EAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,KAAA,EAAA,CACA,GAAA,GAAA,IACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,OACA,CACA,GAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,IAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,IAAA,GAAA,GAAA,GACA,IAAA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,WAAA,CACA,GAAA,IAAA,EACA,EAAA,KAAA,EAAA,KAAA,EAAA,GAAA,QACA,EAAA,WACA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GACA,GAAA,GAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IACA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,IACA,GAAA,IAEA,GAAA,IACA,EAAA,EAAA,EAAA,EACA,MAAA,EACA,MAEA,KAAA,IACA,CACA,GAAA,GAAA,OACA,GAAA,EAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,KAAA,EAAA,CACA,GAAA,GAAA,IACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,OACA,CACA,GAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,IAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,IAAA,GAAA,GAAA,GACA,IAAA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,WAAA,CACA,GAAA,IAAA,EACA,EAAA,KAAA,EAAA,KAAA,EAAA,GAAA,QACA,EAAA,WACA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GACA,GAAA,GAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IACA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,IACA,GAAA,IAEA,GAAA,IACA,EAAA,EAAA,EAAA,EACA,MAAA,EACA,MAEA,KAAA,IACA,CACA,GAAA,EAAA,EAAA,EACA,GAAA,GAAA,GAAA,EAAA,GAAA,EACA,EAAA,GACA,QAAA,GAAA,KAAA,GAAA,GAAA,EAAA,IAAA,EAEA,KAAA,GACA,CACA,GAAA,EAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,CACA,EAAA,EACA,MAAA,EAEA,OAAA,EAAA,IAAA,GAAA,GACA,KAAA,IACA,CACA,GAAA,GAAA,OACA,GAAA,EAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,KAAA,EAAA,CACA,GAAA,GAAA,IACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,OACA,CACA,GAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,IAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,IAAA,GAAA,GAAA,GACA,IAAA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,WAAA,CACA,GAAA,IAAA,EACA,EAAA,KAAA,EAAA,KAAA,EAAA,GAAA,QACA,EAAA,WACA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GACA,GAAA,GAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IACA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,IACA,GAAA,IAEA,GAAA,IACA,EAAA,EAAA,EAAA,EACA,MAAA,EACA,MAEA,KAAA,IACA,CACA,GAAA,GAAA,OACA,GAAA,EAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,KAAA,EAAA,CACA,GAAA,GAAA,IACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,OACA,CACA,GAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,IAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,IAAA,GAAA,GAAA,GACA,IAAA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,WAAA,CACA,GAAA,IAAA,EACA,EAAA,KAAA,EAAA,KAAA,EAAA,GAAA,QACA,EAAA,WACA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GACA,GAAA,GAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IACA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,IACA,GAAA,IAEA,GAAA,IACA,EAAA,EAAA,EAAA,EACA,MAAA,EACA,MAEA,KAAA,IACA,CACA,GAAA,GAAA,OACA,GAAA,EAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,KAAA,EAAA,CACA,GAAA,GAAA,IACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,OACA,CACA,GAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,IAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,IAAA,GAAA,GAAA,GACA,IAAA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,WAAA,CACA,GAAA,IAAA,EACA,EAAA,KAAA,EAAA,KAAA,EAAA,GAAA,QACA,EAAA,WACA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GACA,GAAA,GAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IACA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,IACA,GAAA,IAEA,GAAA,IACA,EAAA,EAAA,EAAA,EACA,MAAA,EACA,MAEA,KAAA,IACA,CACA,GAAA,GAAA,OACA,GAAA,EAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,KAAA,EAAA,CACA,GAAA,GAAA,IACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,OACA,CACA,GAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,IAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,IAAA,GAAA,GAAA,GACA,IAAA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,WAAA,CACA,GAAA,IAAA,EACA,EAAA,KAAA,EAAA,KAAA,EAAA,GAAA,QACA,EAAA,WACA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GACA,GAAA,GAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IACA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,IACA,GAAA,IAEA,GAAA,IACA,EAAA,EAAA,EAAA,EACA,MAAA,EACA,MAEA,KAAA,IACA,CACA,GAAA,GAAA,OACA,GAAA,EAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,KAAA,EAAA,CACA,GAAA,GAAA,IACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,OACA,CACA,GAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,IAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,IAAA,GAAA,GAAA,GACA,IAAA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,WAAA,CACA,GAAA,IAAA,EACA,EAAA,KAAA,EAAA,KAAA,EAAA,GAAA,QACA,EAAA,WACA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GACA,GAAA,GAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IACA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,IACA,GAAA,IAEA,GAAA,IACA,EAAA,EAAA,EAAA,EACA,MAAA,EACA,MAEA,KAAA,IACA,CACA,GAAA,GAAA,OACA,GAAA,EAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,KAAA,EAAA,CACA,GAAA,GAAA,IACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,OACA,CACA,GAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,IAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,IAAA,GAAA,GAAA,GACA,IAAA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,WAAA,CACA,GAAA,IAAA,EACA,EAAA,KAAA,EAAA,KAAA,EAAA,GAAA,QACA,EAAA,WACA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GACA,GAAA,GAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IACA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,IACA,GAAA,IAEA,GAAA,IACA,EAAA,EAAA,EAAA,EACA,MAAA,EACA,MAEA,KAAA,GACA,CACA,GAAA,GAAA,OACA,GAAA,EAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,KAAA,EAAA,CACA,GAAA,GAAA,IACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,OACA,CACA,GAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,IAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,IAAA,GAAA,GAAA,GACA,IAAA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,WAAA,CACA,GAAA,IAAA,EACA,EAAA,KAAA,EAAA,KAAA,EAAA,GAAA,QACA,EAAA,WACA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GACA,GAAA,GAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IACA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,IACA,GAAA,IAEA,GAAA,IACA,EAAA,EAAA,EAAA,EACA,MAAA,EACA,MAEA,KAAA,IACA,CACA,GAAA,GAAA,OACA,GAAA,EAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,KAAA,EAAA,CACA,GAAA,GAAA,IACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,OACA,CACA,GAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,IAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,IAAA,GAAA,GAAA,GACA,IAAA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,WAAA,CACA,GAAA,IAAA,EACA,EAAA,KAAA,EAAA,KAAA,EAAA,GAAA,QACA,EAAA,WACA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GACA,GAAA,GAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IACA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,IACA,GAAA,IAEA,GAAA,IACA,EAAA,EAAA,EAAA,EACA,MAAA,EACA,MAEA,QACA,CACA,EAAA,EACA,MAAA,GAGA,MAEA,QACA,CACA,EAAA,EACA,MAAA,UAEA,SAAA,GACA,EAAA,GACA,OAAA,EAAA,EAGA,SAAA,GAAA,GACA,EAAA,EAAA,EACA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,GAAA,IAAA,EAAA,IAAA,CACA,GAAA,IAAA,EAAA,GAAA,GAAA,EAAA,IAAA,EACA,GAAA,KAAA,EACA,GAAA,EAAA,KAAA,EACA,GAAA,KAAA,GACA,GAAA,GAAA,EAAA,CACA,GAAA,GAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,EACA,GAAA,MAAA,IAAA,GAAA,EACA,GAAA,MAAA,GAAA,GAAA,GAAA,EACA,GAAA,EAAA,IAAA,GAAA,EA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AA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GA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A,GAAA,EAAA,EAAA,GACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,IAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,EAAA,GAAA,IAAA,EACA,EAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,EAAA,EACA,EAAA,GACA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,GAAA,EACA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,CACA,GAAA,EAAA,GAAA,GAAA,IAAA,GAAA,EAAA,EAAA,EAAA,EACA,GAAA,EAAA,GAAA,GAAA,EACA,OAAA,IAAA,IAAA,GAAA,GACA,KAAA,GACA,CACA,EAAA,GAAA,IAAA,EAAA,KAAA,EAAA,GAAA,EAAA,OAAA,GAAA,IAAA,IAAA,IAAA,GAAA,CACA,GAAA,GAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,EAAA,MAAA,CACA,GAAA,EAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,OAAA,EAAA,IAAA,GAAA,GACA,KAAA,GACA,CACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,MAEA,KAAA,GACA,CACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,MAEA,QACA,GAAA,GAEA,GAAA,EAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,KAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,GAAA,EACA,EAAA,GAAA,IAAA,GAAA,EACA,EAAA,GAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,OACA,CACA,GAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,IAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,IAAA,GAAA,GAAA,GACA,IAAA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,KAAA,EAAA,WAAA,CACA,GAAA,IAAA,EACA,EAAA,KAAA,EAAA,KAAA,EAAA,GAAA,QACA,EAAA,WACA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GACA,GAAA,GAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,GAAA,EACA,EAAA,GAAA,IAAA,GAAA,EACA,EAAA,GAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,IACA,GAAA,IAEA,IAAA,GAAA,GAAA,GAAA,EAAA,IAAA,EAAA,IAAA,GAAA,IAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,IAAA,IAAA,CACA,IAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EAAA,MAAA,GACA,GAAA,GAAA,EAAA,OACA,GAAA,QAAA,GAAA,QAAA,GAAA,GACA,IAAA,GAAA,KAAA,EAAA,GAAA,CACA,EAAA,EAAA,IAAA,GAAA,EACA,EAAA,GAAA,GAAA,EACA,EAAA,EACA,MAAA,EAAA,CACA,EAAA,GAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GACA,EAAA,EAAA,IAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,CACA,EAAA,EACA,MAAA,IAIA,GAAA,GAAA,EAAA,EACA,GAAA,GAAA,EAAA,EACA,GAAA,GAAA,EAAA,EACA,GAAA,EAAA,GAAA,EACA,GAAA,EAAA,GAAA,EACA,GAAA,EAAA,GAAA,EACA,GAAA,EAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,GAAA,GAAA,EAAA,EACA,GAAA,EAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,GAAA,EAAA,GAAA,EACA,GAAA,EAAA,EAAA,EACA,GAAA,EAAA,EAAA,EACA,GAAA,GAAA,EAAA,EACA,GAAA,EAAA,EAAA,EACA,GAAA,EAAA,EAAA,EACA,GAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,GAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,IAAA,GAAA,EACA,EAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,CACA,GAAA,EACA,GAAA,OACA,CACA,GAAA,EACA,GAAA,EACA,GAAA,GACA,EAAA,MAAA,EAAA,CACA,EAAA,GACA,GAAA,GACA,EAAA,MAAA,EAAA,CACA,OAAA,GAAA,IAAA,GAAA,GACA,KAAA,GACA,CACA,GAAA,GACA,GAAA,GACA,MAAA,EACA,MAEA,KAAA,GACA,CACA,GAAA,GACA,GAAA,GACA,MAAA,EACA,MAEA,KAAA,GACA,CACA,GAAA,GACA,GAAA,GACA,MAAA,EACA,MAEA,KAAA,GACA,CACA,GAAA,GAAA,GAAA,EAAA,GAAA,EACA,IAAA,GAAA,KAAA,GAAA,IAAA,GAAA,KAAA,EAAA,GAAA,CACA,EAAA,EACA,MAAA,EAEA,GAAA,IAAA,EAAA,IAAA,GAAA,IAAA,GAAA,GACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,IAAA,GAAA,EACA,GAAA,GACA,EAAA,CACA,GAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,GACA,GAAA,IACA,GAAA,EAAA,IAAA,GAAA,SACA,GAAA,KAAA,GAAA,IACA,GAAA,EAAA,IAAA,GAAA,EACA,IAAA,GAAA,IAAA,EACA,GAAA,IAAA,GAAA,EAAA,GAAA,GAAA,EAAA,IAAA,GAAA,EAAA,IAAA,GAAA,OAAA,EAAA,EAAA,IAAA,GAAA,GAAA,EACA,IAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,EAAA,GAAA,GAAA,EAAA,IAAA,GACA,GAAA,GAAA,GAAA,GACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,KAAA,EAAA,KAAA,EAAA,CACA,EAAA,GAAA,IAAA,GAAA,EAAA,IAAA,GACA,EAAA,IAAA,GAAA,EAAA,IAAA,GACA,EAAA,GAAA,GAAA,GAAA,EAAA,IAAA,GACA,EAAA,GAAA,GAAA,GAAA,EAAA,IAAA,GACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,OACA,CACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,GAAA,IAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,IAAA,GAAA,CACA,GAAA,GACA,MAAA,EAEA,GAAA,GAAA,GAAA,EACA,GAAA,IAAA,IAAA,EAAA,WAAA,CACA,GAAA,IAAA,EACA,EAAA,KAAA,EAAA,KAAA,EAAA,GAAA,QACA,EAAA,WACA,GAAA,GAAA,EAAA,GAAA,IACA,GAAA,EAAA,IAAA,GAAA,EACA,EAAA,GAAA,IAAA,GAAA,EAAA,IAAA,GACA,EAAA,IAAA,GAAA,EAAA,IAAA,GACA,EAAA,GAAA,GAAA,GAAA,EAAA,IAAA,GACA,EAAA,GAAA,GAAA,GAAA,EAAA,IAAA,GACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,GAAA,IACA,GAAA,IAEA,GAAA,IACA,GAAA,IACA,GAAA,GACA,MAEA,KAAA,GACA,CACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,CACA,EAAA,EACA,MAAA,OACA,GAAA,GACA,MAEA,QACA,CACA,GAAA,GACA,GAAA,GACA,MAAA,GAGA,EAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IAAA,IAAA,GAAA,CACA,GAAA,GACA,GAAA,GACA,MAAA,OACA,GAAA,GAEA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,CACA,GAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,IAAA,IAAA,CACA,GAAA,GACA,GAAA,GACA,MAEA,EAAA,GAAA,GAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,GAAA,IAAA,EAAA,KAAA,EAAA,GAAA,CACA,EAAA,EACA,MAAA,EAEA,GAAA,IAAA,EAAA,IAAA,GAAA,IAAA,GAAA,GACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,IAAA,GAAA,EACA,GAAA,GACA,EAAA,CACA,GAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,GACA,GAAA,IACA,GAAA,EAAA,IAAA,GAAA,SACA,GAAA,KAAA,GAAA,IACA,GAAA,IAAA,GAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,KAAA,GAAA,GAAA,IAAA,GAAA,OAAA,OAAA,GAAA,EAAA,IAAA,IAAA,GAAA,EACA,IAAA,GAAA,GAAA,GAAA,QAAA,CACA,GAAA,EAAA,MAAA,IACA,GAAA,EAAA,GAAA,GAAA,EACA,IAAA,GAAA,IAAA,EACA,GAAA,GAAA,GAAA,EAAA,EAAA,GAAA,GAAA,EAAA,IAAA,GAAA,OAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EACA,GAAA,GACA,IAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EAAA,IAAA,GACA,GAAA,EAAA,GAAA,IACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,KAAA,EAAA,KAAA,EAAA,CACA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,GACA,EAAA,IAAA,GAAA,EAAA,GAAA,GACA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GACA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GACA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,OACA,CACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,GAAA,IAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,IAAA,GAAA,CACA,GAAA,GACA,MAAA,EAEA,GAAA,GAAA,GAAA,EACA,GAAA,IAAA,IAAA,EAAA,WAAA,CACA,GAAA,IAAA,EACA,EAAA,KAAA,EAAA,KAAA,EAAA,GAAA,QACA,EAAA,WACA,GAAA,GAAA,EAAA,GAAA,IACA,GAAA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,GACA,EAAA,IAAA,GAAA,EAAA,GAAA,GACA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GACA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GACA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,GAAA,GAAA,GACA,GAAA,GAAA,IACA,GAAA,IAEA,GAAA,GAEA,GAAA,IACA,GAAA,OACA,IAAA,GAAA,IAAA,GAAA,CACA,GAAA,EACA,GAAA,GAAA,GAAA,EAAA,GAAA,EACA,IAAA,GAAA,KAAA,GAAA,IAAA,GAAA,KAAA,EAAA,GAAA,CACA,EAAA,EACA,MAAA,EAEA,GAAA,IAAA,EAAA,IAAA,GAAA,IAAA,GAAA,GACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,IAAA,GAAA,EACA,GAAA,GACA,EAAA,CACA,GAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,GACA,GAAA,IACA,GAAA,EAAA,IAAA,GAAA,SACA,GAAA,KAAA,GAAA,IACA,GAAA,IAAA,GAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,KAAA,GAAA,GAAA,IAAA,GAAA,OAAA,OAAA,GAAA,EAAA,IAAA,IAAA,GAAA,EACA,IAAA,GAAA,GAAA,GAAA,QAAA,CACA,GAAA,GAAA,MAAA,IACA,GAAA,EAAA,IAAA,GAAA,EACA,IAAA,GAAA,IAAA,EACA,GAAA,GAAA,GAAA,EAAA,EAAA,GAAA,GAAA,EAAA,IAAA,GAAA,OAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EACA,GAAA,IAEA,IAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EAAA,IAAA,GACA,GAAA,GAAA,GAAA,IACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,KAAA,EAAA,KAAA,EAAA,CACA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,GACA,EAAA,IAAA,GAAA,EAAA,IAAA,GACA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GACA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GACA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,OACA,CACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,GAAA,IAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,IAAA,GAAA,CACA,GAAA,GACA,MAAA,EAEA,GAAA,GAAA,GAAA,EACA,GAAA,IAAA,IAAA,EAAA,WAAA,CACA,GAAA,IAAA,EACA,EAAA,KAAA,EAAA,KAAA,EAAA,GAAA,QACA,EAAA,WACA,GAAA,GAAA,EAAA,GAAA,IACA,GAAA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,GACA,EAAA,IAAA,GAAA,EAAA,IAAA,GACA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GACA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GACA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,EAAA,GAAA,GAAA,GAAA,GACA,GAAA,GAAA,IACA,GAAA,IAEA,GAAA,IACA,GAAA,IACA,GAAA,QACA,IAAA,GAAA,IAAA,GAAA,CACA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,OAAA,EAAA,IAAA,GAAA,GACA,KAAA,GACA,KAAA,IACA,MACA,QACA,CACA,GAAA,GACA,GAAA,GACA,MAAA,GAGA,GAAA,GAAA,GAAA,EAAA,GAAA,EACA,IAAA,GAAA,KAAA,GAAA,IAAA,GAAA,KAAA,EAAA,GAAA,CACA,EAAA,EACA,MAAA,EAEA,GAAA,IAAA,EAAA,IAAA,GAAA,IAAA,GAAA,GACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,IAAA,GAAA,EACA,GAAA,GACA,EAAA,CACA,GAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,GACA,GAAA,IACA,GAAA,EAAA,IAAA,GAAA,SACA,GAAA,KAAA,GAAA,IACA,GAAA,IAAA,GAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,KAAA,GAAA,GAAA,IAAA,GAAA,OAAA,OAAA,GAAA,EAAA,IAAA,IAAA,GAAA,EACA,IAAA,GAAA,GAAA,GAAA,QAAA,CACA,GAAA,GAAA,MAAA,IACA,GAAA,EAAA,IAAA,GAAA,EACA,IAAA,GAAA,IAAA,EACA,GAAA,GAAA,GAAA,EAAA,EAAA,GAAA,GAAA,EAAA,IAAA,GAAA,OAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EACA,GAAA,IAEA,IAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EAAA,IAAA,GACA,GAAA,GAAA,GAAA,IACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,KAAA,EAAA,KAAA,EAAA,CACA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,GACA,EAAA,IAAA,GAAA,EAAA,IAAA,GACA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GACA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GACA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,OACA,CACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,GAAA,IAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,IAAA,GAAA,CACA,GAAA,GACA,MAAA,EAEA,GAAA,GAAA,GAAA,EACA,GAAA,IAAA,IAAA,EAAA,WAAA,CACA,GAAA,IAAA,EACA,EAAA,KAAA,EAAA,KAAA,EAAA,GAAA,QACA,EAAA,WACA,GAAA,GAAA,EAAA,GAAA,IACA,GAAA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,GACA,EAAA,IAAA,GAAA,EAAA,IAAA,GACA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GACA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GACA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,EAAA,GAAA,GAAA,GAAA,GACA,GAAA,GAAA,IACA,GAAA,IAEA,GAAA,IACA,GAAA,IACA,GAAA,UACA,GACA,IAAA,GAAA,IAAA,GAAA,CACA,GAAA,EACA,GAAA,GAAA,GAAA,EAAA,GAAA,EACA,IAAA,GAAA,KAAA,GAAA,IAAA,GAAA,KAAA,EAAA,GAAA,CACA,EAAA,EACA,MAAA,EAEA,GAAA,IAAA,EAAA,IAAA,GAAA,IAAA,GAAA,GACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,IAAA,GAAA,EACA,GAAA,GACA,EAAA,CACA,GAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,GACA,GAAA,IACA,GAAA,EAAA,IAAA,GAAA,SACA,GAAA,KAAA,GAAA,IACA,GAAA,IAAA,GAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,KAAA,GAAA,GAAA,IAAA,GAAA,OAAA,OAAA,GAAA,EAAA,IAAA,IAAA,GAAA,EACA,IAAA,GAAA,GAAA,GAAA,QAAA,CACA,GAAA,EAAA,MAAA,IACA,GAAA,EAAA,GAAA,GAAA,EACA,IAAA,GAAA,IAAA,EACA,GAAA,GAAA,GAAA,GAAA,EAAA,IAAA,GAAA,EAAA,IAAA,GAAA,OAAA,EAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,GAEA,IAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,EAAA,GAAA,GAAA,EAAA,IAAA,GACA,GAAA,EAAA,GAAA,GACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,KAAA,EAAA,KAAA,EAAA,CACA,EAAA,GAAA,IAAA,GAAA,EAAA,IAAA,GACA,EAAA,IAAA,GAAA,EAAA,GAAA,GACA,EAAA,GAAA,GAAA,GAAA,EAAA,IAAA,GACA,EAAA,GAAA,GAAA,GAAA,EAAA,IAAA,GACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,EAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,OACA,CACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,GAAA,IAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,IAAA,GAAA,CACA,GAAA,IACA,MAEA,GAAA,GAAA,GAAA,EACA,GAAA,IAAA,IAAA,EAAA,WAAA,CACA,GAAA,IAAA,EACA,EAAA,KAAA,EAAA,KAAA,EAAA,GAAA,QACA,EAAA,WACA,GAAA,GAAA,EAAA,GAAA,IACA,GAAA,EAAA,IAAA,GAAA,EACA,EAAA,GAAA,IAAA,GAAA,EAAA,IAAA,GACA,EAAA,IAAA,GAAA,EAAA,GAAA,GACA,EAAA,GAAA,GAAA,GAAA,EAAA,IAAA,GACA,EAAA,GAAA,GAAA,GAAA,EAAA,IAAA,GACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,EAAA,GAAA,GAAA,EACA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,GAAA,IACA,GAAA,IAEA,GAAA,GACA,GAAA,IACA,GAAA,GAEA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,IAAA,GAAA,CACA,GAAA,EACA,GAAA,GACA,MAAA,MACA,CACA,GAAA,EACA,GAAA,IAGA,IAAA,GAAA,IAAA,GAAA,GAAA,SAAA,IAAA,GAAA,IAAA,GAAA,GAAA,SAAA,IAAA,GAAA,IAAA,GAAA,GAAA,SAAA,IAAA,GAAA,IAAA,GAAA,GAAA,SAAA,IAAA,GAAA,IAAA,IAAA,GAAA,WACA,GACA,GAAA,GAAA,EAAA,EACA,EAAA,EAAA,IAAA,GAAA,EAAA,IAAA,GACA,GAAA,GAAA,CACA,GAAA,EAAA,IAAA,GAAA,EACA,IAAA,EAAA,EAAA,IAAA,GAAA,KAAA,GAAA,GAAA,EAAA,OAAA,CACA,GAAA,IAAA,GAAA,EACA,GAAA,GACA,EAAA,CACA,GAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,GACA,GAAA,IACA,GAAA,EAAA,IAAA,GAAA,SACA,GAAA,KAAA,GAAA,IACA,EAAA,SAEA,EAAA,SAEA,EAAA,QAAA,GACA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,EACA,MAAA,EACA,MAEA,KAAA,GACA,CACA,EAAA,GAAA,IAAA,EAAA,KAAA,EAAA,GAAA,EAAA,OAAA,GAAA,IAAA,IAAA,IAAA,GAAA,CACA,GAAA,EAAA,EAAA,EACA,GAAA,GAAA,GAAA,EAAA,GAAA,EACA,IAAA,GAAA,KAAA,GAAA,IAAA,GAAA,KAAA,EAAA,GAAA,EAAA,OAAA,IAAA,EAAA,IAAA,GAAA,IAAA,GAAA,CACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,EAAA,OAAA,OAAA,EAAA,IAAA,GAAA,GACA,KAAA,IACA,CACA,GAAA,GAAA,GAAA,EAAA,EAAA,GAAA,EACA,GAAA,EAAA,EAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,KAAA,GAAA,GAAA,CACA,EAAA,GACA,MAAA,EAEA,GAAA,IAAA,GAAA,EAAA,OAAA,EACA,EAAA,GACA,MAAA,EACA,MAEA,KAAA,IACA,CACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,CACA,EAAA,EACA,MAAA,EAEA,GAAA,GAAA,GAAA,GAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,CACA,EAAA,EACA,MAAA,EAEA,IAAA,EAAA,IAAA,GAAA,IAAA,GAAA,CACA,EAAA,EACA,MAAA,EAEA,GAAA,GAAA,EAAA,EACA,GAAA,GAAA,GAAA,EAAA,GAAA,EACA,GAAA,EAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,IAAA,GAAA,KAAA,GAAA,GAAA,CACA,GAAA,IAAA,GAAA,EACA,GAAA,GACA,MAAA,EAAA,CACA,GAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,GACA,GAAA,IACA,GAAA,EAAA,IAAA,GAAA,EACA,IAAA,GAAA,KAAA,GAAA,GAAA,CACA,EAAA,EACA,MAAA,IAIA,KAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,EAAA,EAAA,CACA,EAAA,EACA,MAAA,EAEA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,IAAA,GAAA,EACA,GAAA,GACA,EAAA,CACA,GAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,GACA,GAAA,IACA,GAAA,EAAA,IAAA,GAAA,SACA,GAAA,KAAA,GAAA,IACA,GAAA,IAAA,GAAA,EAAA,OAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,IAAA,GAAA,IAAA,EACA,IAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,GAAA,EAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,IAAA,GAAA,OAAA,EAAA,EAAA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,IACA,EAAA,GACA,MAAA,EACA,MAEA,QACA,CACA,GAAA,GAAA,GAAA,EAAA,GAAA,EACA,IAAA,GAAA,KAAA,GAAA,GAAA,CACA,GAAA,EAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,IAAA,GAAA,EACA,GAAA,GACA,MAAA,EAAA,CACA,GAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,GACA,GAAA,IACA,GAAA,EAAA,IAAA,GAAA,EACA,IAAA,GAAA,KAAA,GAAA,GAAA,CACA,EAAA,EACA,MAAA,IAIA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,EAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,KAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,EAAA,EAAA,CACA,EAAA,GACA,MAAA,EAEA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,IAAA,GAAA,EACA,GAAA,GACA,EAAA,CACA,GAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,GACA,GAAA,IACA,GAAA,EAAA,IAAA,GAAA,SACA,GAAA,KAAA,GAAA,IACA,GAAA,IAAA,GAAA,EAAA,OAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,IAAA,GAAA,IAAA,EACA,IAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,GAAA,EAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,IAAA,GAAA,OAAA,EAAA,EAAA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,IACA,EAAA,GACA,MAAA,SAGA,EAAA,OACA,EAAA,QAAA,GACA,EAAA,GACA,QAAA,EAAA,KAAA,EAAA,GAAA,EAAA,GAAA,EAEA,QACA,CACA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,CACA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,EAAA,EAAA,GAAA,GAAA,IAAA,IAAA,CACA,GAAA,EAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,CACA,GAAA,EACA,GAAA,MACA,CACA,GAAA,EACA,IAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EAAA,EAAA,EAAA,QAEA,CACA,GAAA,EACA,GAAA,MACA,CACA,GAAA,EACA,GAAA,EAEA,GAAA,GAAA,GAAA,EAAA,GAAA,EACA,IAAA,GAAA,KAAA,GAAA,GACA,GAAA,GAAA,GAAA,EAAA,GAAA,EAAA,OAAA,CACA,GAAA,EAAA,EAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,KAAA,GAAA,GAAA,MACA,GAAA,IAAA,GAAA,EAAA,EAAA,OAAA,EACA,EAAA,GAEA,IAAA,EAAA,KAAA,EAAA,GAAA,CACA,IAAA,EAAA,KAAA,EAAA,GAAA,CACA,EAAA,EACA,MAAA,EAEA,IAAA,EAAA,GAAA,GAAA,IAAA,GAAA,CACA,EAAA,EACA,MAAA,EAEA,GAAA,EAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,KAAA,GAAA,GAAA,CACA,EAAA,EACA,MAAA,EAEA,GAAA,EAAA,GAAA,EACA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,GACA,GAAA,GAAA,IAAA,GAAA,EAAA,IACA,GAAA,EAAA,GAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,IAAA,GAAA,EACA,GAAA,KAAA,EAAA,KAAA,EAAA,CACA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GACA,EAAA,IAAA,GAAA,EAAA,IAAA,GACA,GAAA,GAAA,EAAA,EACA,EAAA,GAAA,GAAA,GAAA,EAAA,IAAA,GACA,GAAA,GAAA,EAAA,EACA,EAAA,GAAA,GAAA,GAAA,EAAA,IAAA,GACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,OACA,CACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,GAAA,IAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,IAAA,GAAA,GAAA,IACA,GAAA,GAAA,GAAA,EACA,GAAA,IAAA,IAAA,EAAA,WAAA,CACA,GAAA,IAAA,EACA,EAAA,KAAA,EAAA,KAAA,EAAA,GAAA,QACA,EAAA,WACA,GAAA,GAAA,EAAA,GAAA,EAAA,GAAA,GACA,GAAA,GAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GACA,EAAA,IAAA,GAAA,EAAA,IAAA,GACA,GAAA,GAAA,EAAA,EACA,EAAA,GAAA,GAAA,GAAA,EAAA,IAAA,GACA,GAAA,GAAA,EAAA,EACA,EAAA,GAAA,GAAA,GAAA,EAAA,IAAA,GACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,GAAA,IACA,GAAA,IAEA,GAAA,IACA,GAAA,GAAA,EAAA,EAAA,GAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,CACA,EAAA,EACA,MAAA,EAEA,GAAA,EAAA,IAAA,GAAA,EACA,KAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,EAAA,EAAA,CACA,EAAA,EACA,MAAA,EAEA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,IAAA,GAAA,EACA,GAAA,GACA,EAAA,CACA,GAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,GACA,GAAA,IACA,GAAA,EAAA,IAAA,GAAA,SACA,GAAA,KAAA,GAAA,IACA,GAAA,EAAA,IAAA,GAAA,EACA,IAAA,GAAA,IAAA,EACA,GAAA,IAAA,GAAA,EAAA,GAAA,GAAA,EAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,IAAA,GAAA,OAAA,EAAA,EAAA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,IACA,EAAA,GACA,MAAA,UAEA,GACA,GAAA,GAAA,EAAA,EAAA,GAAA,EACA,IAAA,GAAA,KAAA,EAAA,IAAA,GAAA,KAAA,EAAA,GAAA,CACA,EAAA,EACA,MAAA,EAEA,IAAA,EAAA,IAAA,GAAA,IAAA,GAAA,CACA,EAAA,EACA,MAAA,EAEA,GAAA,GAAA,GAAA,EAAA,GAAA,EACA,IAAA,GAAA,KAAA,GAAA,GAAA,CACA,EAAA,EACA,MAAA,EAEA,GAAA,EAAA,EAAA,EACA,GAAA,EAAA,IAAA,GAAA,EACA,KAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GAAA,GAAA,KAAA,EAAA,EAAA,CACA,EAAA,EACA,MAAA,EAEA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,IAAA,GAAA,EACA,GAAA,GACA,EAAA,CACA,GAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,GACA,GAAA,IACA,GAAA,EAAA,IAAA,GAAA,SACA,GAAA,KAAA,GAAA,IACA,GAAA,EAAA,IAAA,GAAA,EACA,IAAA,GAAA,IAAA,EACA,GAAA,IAAA,GAAA,EAAA,GAAA,GAAA,EAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,IAAA,GAAA,OAAA,EAAA,EAAA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,IACA,EAAA,GACA,MAAA,SAGA,EAAA,QAAA,GACA,EAAA,GACA,OAAA,EAAA,EAGA,SAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAA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AAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,G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AAA,MAAA,GACA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,EACA,GAAA,IACA,GAAA,GAAA,KAAA,GAAA,GAAA,EAAA,GACA,MAAA,EACA,MAEA,KAAA,GACA,CACA,GAAA,EAAA,EAAA,EACA,GAAA,GAAA,MAAA,IACA,GAAA,GAAA,GAAA,EAAA,GAAA,GAAA,EACA,GAAA,IACA,GAAA,GAAA,KAAA,GAAA,GAAA,EAAA,GACA,MAAA,EACA,MAEA,KAAA,IACA,CACA,EAAA,EAAA,EAAA,EACA,GAAA,GAAA,MAAA,IACA,EAAA,GAAA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,IACA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,EACA,MAAA,EACA,MAEA,KAAA,IACA,CACA,EAAA,EAAA,EAAA,EACA,GAAA,GAAA,MAAA,GACA,EAAA,GAAA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,IACA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,EACA,MAAA,EACA,MAEA,KAAA,IACA,CACA,EAAA,EAAA,EAAA,EACA,GAAA,EAAA,MAAA,IACA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EACA,GAAA,GACA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,EACA,MAAA,EACA,MAEA,KAAA,IACA,CACA,EAAA,EAAA,EAAA,EACA,GAAA,EAAA,MAAA,GACA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EACA,GAAA,GACA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,EACA,MAAA,EACA,MAEA,KAAA,IACA,CACA,EAAA,EAAA,EAAA,EACA,GAAA,EAAA,MAAA,GACA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,EACA,GAAA,GACA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,EACA,MAAA,EACA,MAEA,KAAA,IACA,CACA,EAAA,EAAA,EAAA,EACA,GAAA,GAAA,MAAA,GACA,EAAA,GAAA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,IACA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,EACA,MAAA,EACA,MAEA,KAAA,IACA,CACA,EAAA,EAAA,EAAA,EACA,GAAA,G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AAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,E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AAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,G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AAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,I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OAAA,EAAA,EAGA,SAAA,GAAA,EAAA,EAAA,GACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,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EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,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EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,EAAA,GAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,EAAA,GACA,EAAA,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EAAA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GACA,EAAA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,GAAA,EAAA,EACA,GAAA,GAAA,EAAA,IAIA,GAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,GAAA,IAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,IAAA,GAAA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,IAIA,EAAA,EAAA,QAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,EAAA,CACA,IAAA,GAAA,GAAA,EACA,IAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,EACA,GAAA,EACA,GAAA,EAAA,EAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,EAAA,EAAA,EACA,GAAA,EACA,EAAA,MAAA,EAAA,CACA,GAAA,GAAA,CACA,GAAA,GACA,GAAA,EACA,GAAA,GACA,GAAA,GACA,GAAA,GACA,GAAA,GACA,MAAA,EAAA,CACA,GAAA,IAAA,EAAA,IAAA,GAAA,IAAA,EAAA,IAAA,GAAA,GAAA,CACA,EAAA,IAAA,IAAA,EACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,GACA,IAAA,IAAA,IAAA,IAAA,EAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,IAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,IAAA,EAAA,CACA,GAAA,GAAA,CACA,EAAA,IAAA,GAAA,GACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,EAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,GAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IAAA,IAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,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EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GACA,EAAA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,GAAA,EAAA,EACA,GAAA,GAAA,EAAA,IAIA,GAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,GAAA,IAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,IAAA,GAAA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,IAIA,EAAA,EAAA,QAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,EAAA,CACA,IAAA,GAAA,GAAA,EACA,IAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,EACA,GAAA,EACA,GAAA,EAAA,EAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,EAAA,EAAA,EACA,GAAA,EACA,EAAA,MAAA,EAAA,CACA,GAAA,GAAA,CACA,GAAA,GACA,GAAA,EACA,GAAA,GACA,GAAA,GACA,GAAA,GACA,GAAA,GACA,MAAA,EAAA,CACA,GAAA,IAAA,EAAA,IAAA,GAAA,IAAA,EAAA,IAAA,GAAA,GAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,OACA,CACA,EAAA,IAAA,IAAA,EACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,GACA,IAAA,IAAA,IAAA,IAAA,EAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,IAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,IAAA,EAAA,CACA,GAAA,GAAA,CACA,EAAA,IAAA,GAAA,GACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,EAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,GAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IAAA,IAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,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EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GACA,GAAA,EAAA,GAAA,EAAA,EACA,GAAA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,GAAA,EAAA,EACA,GAAA,GAAA,EAAA,IAIA,EAAA,EAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,IAAA,GAAA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,IAIA,EAAA,EAAA,QAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,GAAA,EACA,GAAA,GAAA,GAAA,EAAA,EACA,EAAA,GAAA,IAAA,GAAA,GAAA,EAAA,CACA,IAAA,EAAA,GAAA,EACA,IAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,EACA,EAAA,MAAA,EAAA,CACA,GAAA,GAAA,CACA,GAAA,GACA,GAAA,EACA,GAAA,GACA,GAAA,GACA,GAAA,GACA,MAAA,EAAA,CACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,GAAA,GAAA,GAAA,EACA,GAAA,KAAA,GAAA,KAAA,IAAA,IAAA,EAAA,MAAA,KAAA,EAAA,KAAA,IAAA,EAAA,KAAA,IAAA,EAAA,GAAA,CACA,EAAA,IAAA,IAAA,EACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,GACA,IAAA,IAAA,IAAA,IAAA,EAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,IAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,IAAA,EAAA,CACA,GAAA,GAAA,CACA,EAAA,IAAA,GAAA,GACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,EAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,GAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IAAA,IAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,KAAA,GAAA,GAAA,CACA,GAAA,GACA,MAEA,EAAA,GAAA,GAAA,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EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GACA,GAAA,EAAA,GAAA,EAAA,EACA,GAAA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,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EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GACA,GAAA,EAAA,GAAA,EAAA,EACA,GAAA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,GAAA,EAAA,EACA,GAAA,GAAA,EAAA,IAIA,EAAA,EAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,IAAA,GAAA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,IAIA,EAAA,EAAA,QAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,GAAA,EACA,GAAA,EAAA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,GAAA,GAAA,EAAA,CACA,IAAA,EAAA,GAAA,EACA,IAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,EACA,GAAA,EACA,GAAA,IAAA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,EACA,EAAA,MAAA,EAAA,CACA,GAAA,GAAA,CACA,GAAA,GACA,GAAA,EACA,GAAA,GACA,GAAA,GACA,GAAA,GACA,MAAA,EAAA,CACA,GAAA,KAAA,EAAA,GAAA,GAAA,GAAA,IAAA,EAAA,IAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GAAA,IAAA,EAAA,GAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,OACA,CACA,EAAA,IAAA,IAAA,EACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,GACA,IAAA,IAAA,IAAA,IAAA,EAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,IAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,IAAA,EAAA,CACA,GAAA,GAAA,CACA,EAAA,IAAA,GAAA,GACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,EAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,GAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,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EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GACA,GAAA,EAAA,GAAA,EAAA,EACA,GAAA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,GAAA,EAAA,EACA,GAAA,GAAA,EAAA,IAIA,EAAA,EAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,IAAA,GAAA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,IAIA,EAAA,EAAA,QAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,GAAA,GAAA,EAAA,CACA,IAAA,EAAA,GAAA,EACA,IAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,EACA,EAAA,MAAA,EAAA,CACA,GAAA,GAAA,CACA,GAAA,GACA,GAAA,EACA,GAAA,GACA,GAAA,GACA,GAAA,GACA,MAAA,EAAA,CACA,GAAA,KAAA,EAAA,GAAA,GAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GAAA,IAAA,EAAA,GAAA,CACA,EAAA,IAAA,IAAA,EACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,GACA,IAAA,IAAA,IAAA,IAAA,EAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,IAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,IAAA,EAAA,CACA,GAAA,GAAA,CACA,EAAA,IAAA,GAAA,GACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,EAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,GAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IAAA,IAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,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EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GACA,GAAA,EAAA,GAAA,EAAA,EACA,GAAA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,GAAA,EAAA,EACA,GAAA,GAAA,EAAA,IAIA,EAAA,EAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,IAAA,GAAA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,IAIA,EAAA,EAAA,QAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,GAAA,GAAA,EAAA,CACA,IAAA,EAAA,GAAA,EACA,IAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,EACA,EAAA,MAAA,EAAA,CACA,GAAA,GAAA,CACA,GAAA,GACA,GAAA,EACA,GAAA,GACA,GAAA,GACA,GAAA,GACA,MAAA,EAAA,CACA,GAAA,KAAA,EAAA,GAAA,GAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GAAA,IAAA,EAAA,GAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,OACA,CACA,EAAA,IAAA,IAAA,EACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,GACA,IAAA,IAAA,IAAA,IAAA,EAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,IAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,IAAA,EAAA,CACA,GAAA,GAAA,CACA,EAAA,IAAA,GAAA,GACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,EAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,GAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IAAA,IAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,KAAA,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EAAA,EACA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GACA,EAAA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,GAAA,EAAA,EACA,GAAA,GAAA,EAAA,IAIA,GAAA,EAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,IAAA,GAAA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,IAIA,EAAA,EAAA,QAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,EAAA,CACA,IAAA,EAAA,GAAA,EACA,IAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,EACA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,EACA,EAAA,MAAA,EAAA,CACA,GAAA,GAAA,CACA,GAAA,GACA,GAAA,EACA,GAAA,GACA,GAAA,GACA,GAAA,GACA,MAAA,EAAA,CACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,GAAA,GAAA,GAAA,EACA,GAAA,KAAA,GAAA,KAAA,IAAA,IAAA,EAAA,MAAA,KAAA,EAAA,KAAA,IAAA,EAAA,KAAA,IAAA,GAAA,GAAA,CACA,EAAA,IAAA,IAAA,EACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,GACA,IAAA,IAAA,IAAA,IAAA,EAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,IAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,IAAA,EAAA,CACA,GAAA,GAAA,CACA,EAAA,IAAA,GAAA,GACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,EAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,GAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IAAA,IAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,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EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GACA,EAAA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,GAAA,EAAA,EACA,GAAA,GAAA,EAAA,IAIA,GAAA,EAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,IAAA,GAAA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,IAIA,EAAA,EAAA,QAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,EAAA,CACA,IAAA,EAAA,GAAA,EACA,IAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,EACA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,EACA,EAAA,MAAA,EAAA,CACA,GAAA,GAAA,CACA,GAAA,GACA,GAAA,EACA,GAAA,GACA,GAAA,GACA,GAAA,GACA,MAAA,EAAA,CACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,GAAA,GAAA,GAAA,EACA,GAAA,KAAA,GAAA,KAAA,IAAA,IAAA,EAAA,MAAA,KAAA,EAAA,KAAA,IAAA,EAAA,KAAA,IAAA,GAAA,GAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,OACA,CACA,EAAA,IAAA,IAAA,EACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,GACA,IAAA,IAAA,IAAA,IAAA,EAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,IAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,IAAA,EAAA,CACA,GAAA,GAAA,CACA,EAAA,IAAA,GAAA,GACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,EAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,GAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IAAA,IAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,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EAGA,SAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GACA,EAAA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,GAAA,EAAA,EACA,GAAA,GAAA,EAAA,IAIA,GAAA,EAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,IAAA,GAAA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,IAIA,EAAA,EAAA,QAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,EAAA,CACA,IAAA,EAAA,GAAA,EACA,IAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,EACA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,EACA,EAAA,MAAA,EAAA,CACA,GAAA,GAAA,CACA,GAAA,GACA,GAAA,EACA,GAAA,GACA,GAAA,GACA,GAAA,GACA,MAAA,EAAA,CACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,KAAA,GAAA,KAAA,IAAA,IAAA,EAAA,OAAA,EAAA,GAAA,GAAA,GAAA,GAAA,KAAA,IAAA,GAAA,GAAA,CACA,EAAA,IAAA,IAAA,EACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,GACA,IAAA,IAAA,IAAA,IAAA,EAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,IAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,IAAA,EAAA,CACA,GAAA,GAAA,CACA,EAAA,IAAA,GAAA,GACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,EAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,GAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IAAA,IAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,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EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GACA,EAAA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,GAAA,EAAA,EACA,GAAA,GAAA,EAAA,IAIA,GAAA,EAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,IAAA,GAAA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,IAIA,EAAA,EAAA,QAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,EAAA,CACA,IAAA,EAAA,GAAA,EACA,IAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,EACA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,EACA,EAAA,MAAA,EAAA,CACA,GAAA,GAAA,CACA,GAAA,GACA,GAAA,EACA,GAAA,GACA,GAAA,GACA,GAAA,GACA,MAAA,EAAA,CACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,KAAA,GAAA,KAAA,IAAA,IAAA,EAAA,OAAA,EAAA,GAAA,GAAA,GAAA,GAAA,KAAA,IAAA,GAAA,GAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,OACA,CACA,EAAA,IAAA,IAAA,EACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,GACA,IAAA,IAAA,IAAA,IAAA,EAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,IAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,IAAA,EAAA,CACA,GAAA,GAAA,CACA,EAAA,IAAA,GAAA,GACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,EAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,GAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IAAA,IAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,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EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GACA,EAAA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,GAAA,EAAA,EACA,GAAA,GAAA,EAAA,IAIA,GAAA,EAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,IAAA,GAAA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,IAIA,EAAA,EAAA,QAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,EAAA,CACA,IAAA,EAAA,GAAA,EACA,IAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,EACA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,EACA,EAAA,MAAA,EAAA,CACA,GAAA,GAAA,CACA,GAAA,GACA,GAAA,EACA,GAAA,GACA,GAAA,GACA,GAAA,GACA,MAAA,EAAA,CACA,GAAA,KAAA,EAAA,GAAA,GAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,OACA,CACA,EAAA,IAAA,IAAA,EACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,GACA,IAAA,IAAA,IAAA,IAAA,EAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,IAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,IAAA,EAAA,CACA,GAAA,GAAA,CACA,EAAA,IAAA,GAAA,GACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,EAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,GAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IAAA,IAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,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EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GACA,EAAA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,GAAA,EAAA,EACA,GAAA,GAAA,EAAA,IAIA,GAAA,EAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,IAAA,GAAA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,IAIA,EAAA,EAAA,QAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,EAAA,CACA,IAAA,EAAA,GAAA,EACA,IAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,EACA,GAAA,EACA,GAAA,GAAA,EAAA,EAAA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,EACA,EAAA,MAAA,EAAA,CACA,GAAA,GAAA,CACA,GAAA,GACA,GAAA,EACA,GAAA,GACA,GAAA,GACA,GAAA,GACA,MAAA,EAAA,CACA,GAAA,KAAA,EAAA,GAAA,GAAA,GAAA,IAAA,EAAA,IAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,CACA,EAAA,IAAA,IAAA,EACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,GACA,IAAA,IAAA,IAAA,IAAA,EAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,IAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,IAAA,EAAA,CACA,GAAA,GAAA,CACA,EAAA,IAAA,GAAA,GACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,EAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,GAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IAAA,IAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,KAAA,GAAA,GAAA,CACA,GAAA,GACA,MAEA,EAAA,GAAA,GAAA,GACA,GAAA,GACA,UACA,CACA,EAAA,GAAA,EAAA,EACA,IAAA,GAAA,GAAA,MAAA,MAAA,EACA,EAAA,IAAA,GAAA,EACA,EAAA,EAAA,SAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,IAAA,GAAA,EACA,EAAA,EAAA,SAAA,EAAA,GAAA,IAAA,GAAA,GACA,EAAA,EAAA,SAAA,EAAA,GAAA,IAAA,GAAA,GACA,EAAA,EAAA,SAAA,EAAA,GAAA,IAAA,GAAA,GACA,EAAA,EAAA,SAAA,EAAA,GAAA,IAAA,GAAA,GACA,EAAA,EAAA,SAAA,EAAA,GAAA,IAAA,GAAA,GACA,EAAA,EAAA,SAAA,EAAA,GAAA,IAAA,GAAA,GACA,GAAA,EACA,OAGA,GAAA,GAAA,CACA,GAAA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,EACA,IAAA,GAAA,IAAA,GAAA,GAAA,CACA,EAAA,IAAA,GAAA,GACA,IAAA,GAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,MAAA,EAAA,CACA,IAAA,EAAA,IAAA,GAAA,KAAA,GAAA,GAAA,EAAA,IAAA,GAAA,GACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,GAAA,GAAA,CACA,GAAA,GACA,WACA,GAAA,GAAA,EAAA,QAEA,GAAA,OACA,CACA,EAAA,IAAA,GAAA,GACA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,MAAA,EAAA,CACA,IAAA,EAAA,IAAA,GAAA,KAAA,GAAA,GAAA,EAAA,IAAA,GAAA,GACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,GAAA,GAAA,CACA,GAAA,GACA,WACA,GAAA,GAAA,EAAA,QAEA,GAAA,GAEA,IAAA,IAAA,IAAA,IAAA,EAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,EAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,GAAA,IAAA,IAAA,EAAA,CACA,EAAA,IAAA,GAAA,GACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,EAAA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,EACA,EAAA,EAAA,EAAA,UAAA,GAAA,IAAA,KAAA,GAAA,IAAA,GAAA,EACA,IAAA,EAAA,IAAA,EAAA,GAAA,CACA,EAAA,IAAA,GAAA,EACA,IAAA,GAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,MAAA,EAAA,CACA,IAAA,EAAA,IAAA,GAAA,KAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,GAAA,GAAA,CACA,EAAA,EACA,WACA,GAAA,GAAA,EAAA,QAEA,EAAA,MACA,CACA,EAAA,IAAA,GAAA,EACA,IAAA,EAAA,IAAA,EAAA,IAAA,GAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,MAAA,EAAA,CACA,IAAA,EAAA,IAAA,GAAA,KAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,GAAA,GAAA,CACA,EAAA,EACA,WACA,GAAA,GAAA,EAAA,QAEA,EAAA,EAEA,GAAA,GAAA,IAAA,IAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,GAAA,OACA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,UACA,GACA,GAAA,GAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,GACA,UACA,CACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,SAGA,CACA,GAAA,GACA,GAAA,GACA,GAAA,GACA,GAAA,GAEA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,CACA,GAAA,GACA,GAAA,GACA,MAAA,MACA,CACA,GAAA,GAAA,EAAA,EACA,GAAA,GAAA,EAAA,EACA,GAAA,GAAA,EAAA,EACA,GAAA,IAGA,GAAA,EAAA,KAAA,IACA,GAAA,MACA,CACA,GAAA,EACA,GAAA,UACA,GACA,IAAA,GAAA,IAAA,GAAA,CACA,EAAA,EAAA,GAAA,EACA,IAAA,GAAA,GAAA,EAAA,GAAA,MAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,EAAA,IAAA,GAAA,EACA,IAAA,EAAA,KAAA,GAAA,GAAA,CACA,EAAA,GACA,GAAA,GAAA,EAAA,MACA,CACA,EAAA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,EACA,GAAA,GAEA,EAAA,IAAA,GAAA,EACA,IAAA,GAAA,IAAA,GAAA,GAAA,CACA,GAAA,GAAA,EAAA,EACA,GAAA,GACA,GAAA,GAAA,EAAA,MACA,CACA,GAAA,GACA,QAIA,GAAA,EAAA,EAAA,EACA,GAAA,IAAA,EAAA,EACA,EAAA,IAAA,GAAA,GACA,IAAA,GAAA,EAAA,MAAA,CACA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,GAAA,EACA,GAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,GAAA,EACA,IAAA,GAAA,GAAA,EAAA,CACA,GAAA,EACA,EAAA,CACA,GAAA,IAAA,EACA,EAAA,EAAA,QAAA,IAAA,IAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,IAAA,IAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,IAAA,IAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,IAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,SACA,GAAA,IAAA,EAAA,IAAA,GAAA,IAEA,IAAA,GAAA,GAAA,EAAA,CACA,GAAA,EACA,EAAA,CACA,IAAA,EAAA,EAAA,SAAA,IAAA,IAAA,GAAA,IAAA,EAAA,EACA,GAAA,GAAA,EAAA,EACA,GAAA,EAAA,IAAA,IAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,IAAA,EAAA,EAAA,SAAA,IAAA,IAAA,GAAA,GACA,GAAA,IAAA,EACA,GAAA,EAAA,QAAA,IAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,MAAA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,EAAA,SAAA,GAAA,IAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,MAAA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,IAAA,EACA,GAAA,EAAA,QAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,EACA,IAAA,EAAA,IAAA,GAAA,IAAA,GAAA,GAAA,EAAA,IAAA,GAAA,GACA,GAAA,EAAA,SAAA,GAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,EACA,IAAA,EAAA,IAAA,GAAA,IAAA,GAAA,GAAA,EAAA,IAAA,GAAA,GACA,GAAA,EAAA,SAAA,GAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,EACA,IAAA,EAAA,IAAA,GAAA,IAAA,GAAA,GAAA,EAAA,IAAA,GAAA,GACA,GAAA,EAAA,SAAA,GAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,EACA,IAAA,EAAA,IAAA,GAAA,IAAA,GAAA,GAAA,EAAA,IAAA,GAAA,GACA,GAAA,GAAA,EAAA,SACA,GAAA,IAAA,GAAA,IAEA,IAAA,EAAA,IAAA,GAAA,GAAA,EAAA,CACA,GAAA,EACA,EAAA,CACA,GAAA,EAAA,IAAA,IAAA,GAAA,EACA,GAAA,IAAA,EACA,GAAA,EAAA,QAAA,IAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,KAAA,EAAA,IAAA,GAAA,GACA,GAAA,EAAA,SAAA,GAAA,IAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,KAAA,EAAA,IAAA,GAAA,GACA,GAAA,GAAA,EAAA,SACA,GAAA,IAAA,EAAA,IAAA,GAAA,IACA,EAAA,OACA,EAAA,GAGA,EAAA,GACA,OAAA,EAAA,EAGA,SAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GACA,EAAA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,GAAA,EAAA,EACA,GAAA,GAAA,EAAA,IAIA,GAAA,EAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,IAAA,GAAA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,IAIA,EAAA,EAAA,QAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,EAAA,CACA,IAAA,EAAA,GAAA,EACA,IAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,EACA,GAAA,EACA,GAAA,GAAA,EAAA,EAAA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,EACA,EAAA,MAAA,EAAA,CACA,GAAA,GAAA,CACA,GAAA,GACA,GAAA,EACA,GAAA,GACA,GAAA,GACA,GAAA,GACA,MAAA,EAAA,CACA,GAAA,KAAA,EAAA,GAAA,GAAA,GAAA,IAAA,EAAA,IAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,OACA,CACA,EAAA,IAAA,IAAA,EACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,GACA,IAAA,IAAA,IAAA,IAAA,EAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,IAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,IAAA,EAAA,CACA,GAAA,GAAA,CACA,EAAA,IAAA,GAAA,GACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,EAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,GAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IAAA,IAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,KAAA,GAAA,GAAA,CACA,GAAA,GACA,MAEA,EAAA,GAAA,GAAA,GACA,GAAA,GACA,UACA,CACA,EAAA,GAAA,EAAA,EACA,IAAA,GAAA,GAAA,MAAA,MAAA,EACA,EAAA,IAAA,GAAA,EACA,EAAA,EAAA,SAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,IAAA,GAAA,EACA,EAAA,EAAA,SAAA,EAAA,GAAA,IAAA,GAAA,GACA,EAAA,EAAA,SAAA,EAAA,GAAA,IAAA,GAAA,GACA,EAAA,EAAA,SAAA,EAAA,GAAA,IAAA,GAAA,GACA,EAAA,EAAA,SAAA,EAAA,GAAA,IAAA,GAAA,GACA,EAAA,EAAA,SAAA,EAAA,GAAA,IAAA,GAAA,GACA,EAAA,EAAA,SAAA,EAAA,GAAA,IAAA,GAAA,GACA,GAAA,EACA,OAGA,GAAA,GAAA,CACA,GAAA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,EACA,IAAA,GAAA,IAAA,GAAA,GAAA,CACA,EAAA,IAAA,GAAA,GACA,IAAA,GAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,MAAA,EAAA,CACA,IAAA,EAAA,IAAA,GAAA,KAAA,GAAA,GAAA,EAAA,IAAA,GAAA,GACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,GAAA,GAAA,CACA,GAAA,GACA,WACA,GAAA,GAAA,EAAA,QAEA,GAAA,OACA,CACA,EAAA,IAAA,GAAA,GACA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,MAAA,EAAA,CACA,IAAA,EAAA,IAAA,GAAA,KAAA,GAAA,GAAA,EAAA,IAAA,GAAA,GACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,GAAA,GAAA,CACA,GAAA,GACA,WACA,GAAA,GAAA,EAAA,QAEA,GAAA,GAEA,IAAA,IAAA,IAAA,IAAA,EAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,EAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,GAAA,IAAA,IAAA,EAAA,CACA,EAAA,IAAA,GAAA,GACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,EAAA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,EACA,EAAA,EAAA,EAAA,UAAA,GAAA,IAAA,KAAA,GAAA,IAAA,GAAA,EACA,IAAA,EAAA,IAAA,EAAA,GAAA,CACA,EAAA,IAAA,GAAA,EACA,IAAA,GAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,MAAA,EAAA,CACA,IAAA,EAAA,IAAA,GAAA,KAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,GAAA,GAAA,CACA,EAAA,EACA,WACA,GAAA,GAAA,EAAA,QAEA,EAAA,MACA,CACA,EAAA,IAAA,GAAA,EACA,IAAA,EAAA,IAAA,EAAA,IAAA,GAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,MAAA,EAAA,CACA,IAAA,EAAA,IAAA,GAAA,KAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,GAAA,GAAA,CACA,EAAA,EACA,WACA,GAAA,GAAA,EAAA,QAEA,EAAA,EAEA,GAAA,GAAA,IAAA,IAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,GAAA,UACA,GACA,GAAA,GAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,GACA,UACA,CACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,SAGA,CACA,GAAA,GACA,GAAA,GACA,GAAA,GACA,GAAA,GAEA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,CACA,GAAA,GACA,GAAA,GACA,MAAA,MACA,CACA,GAAA,GAAA,EAAA,EACA,GAAA,GAAA,EAAA,EACA,GAAA,GAAA,EAAA,EACA,GAAA,IAGA,GAAA,EAAA,KAAA,IACA,GAAA,MACA,CACA,GAAA,EACA,GAAA,UACA,GACA,IAAA,GAAA,IAAA,GAAA,CACA,EAAA,EAAA,GAAA,EACA,IAAA,GAAA,GAAA,EAAA,GAAA,MAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,EAAA,IAAA,GAAA,EACA,IAAA,EAAA,KAAA,GAAA,GAAA,CACA,EAAA,GACA,GAAA,GAAA,EAAA,MACA,CACA,EAAA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,EACA,GAAA,GAEA,EAAA,IAAA,GAAA,EACA,IAAA,GAAA,IAAA,GAAA,GAAA,CACA,GAAA,GAAA,EAAA,EACA,GAAA,GACA,GAAA,GAAA,EAAA,MACA,CACA,GAAA,GACA,QAIA,GAAA,EAAA,EAAA,EACA,GAAA,IAAA,EAAA,EACA,EAAA,IAAA,GAAA,GACA,IAAA,GAAA,EAAA,MAAA,CACA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,GAAA,EACA,GAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,GAAA,EACA,IAAA,GAAA,GAAA,EAAA,CACA,GAAA,EACA,EAAA,CACA,GAAA,IAAA,EACA,EAAA,EAAA,QAAA,IAAA,IAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,IAAA,IAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,IAAA,IAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,IAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,SACA,GAAA,IAAA,EAAA,IAAA,GAAA,IAEA,IAAA,GAAA,GAAA,EAAA,CACA,GAAA,EACA,EAAA,CACA,IAAA,EAAA,EAAA,SAAA,IAAA,IAAA,GAAA,IAAA,EAAA,EACA,GAAA,GAAA,EAAA,EACA,GAAA,EAAA,IAAA,IAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,IAAA,EAAA,EAAA,SAAA,IAAA,IAAA,GAAA,GACA,GAAA,IAAA,EACA,GAAA,EAAA,QAAA,IAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,MAAA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,EAAA,SAAA,GAAA,IAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,MAAA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,IAAA,EACA,GAAA,EAAA,QAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,EACA,IAAA,EAAA,IAAA,GAAA,IAAA,GAAA,GAAA,EAAA,IAAA,GAAA,GACA,GAAA,EAAA,SAAA,GAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,EACA,IAAA,EAAA,IAAA,GAAA,IAAA,GAAA,GAAA,EAAA,IAAA,GAAA,GACA,GAAA,EAAA,SAAA,GAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,EACA,IAAA,EAAA,IAAA,GAAA,IAAA,GAAA,GAAA,EAAA,IAAA,GAAA,GACA,GAAA,EAAA,SAAA,GAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,EACA,IAAA,EAAA,IAAA,GAAA,IAAA,GAAA,GAAA,EAAA,IAAA,GAAA,GACA,GAAA,GAAA,EAAA,SACA,GAAA,IAAA,GAAA,IAEA,IAAA,EAAA,IAAA,GAAA,GAAA,EAAA,CACA,GAAA,EACA,EAAA,CACA,GAAA,EAAA,IAAA,IAAA,GAAA,EACA,GAAA,IAAA,EACA,GAAA,EAAA,QAAA,IAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,KAAA,EAAA,IAAA,GAAA,GACA,GAAA,EAAA,SAAA,GAAA,IAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,KAAA,EAAA,IAAA,GAAA,GACA,GAAA,GAAA,EAAA,SACA,GAAA,IAAA,EAAA,IAAA,GAAA,IACA,EAAA,OACA,EAAA,GAGA,EAAA,GACA,OAAA,EAAA,EAGA,SAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GACA,EAAA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,GAAA,EAAA,EACA,GAAA,GAAA,EAAA,IAIA,GAAA,EAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,IAAA,GAAA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,IAIA,EAAA,EAAA,QAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,EAAA,CACA,IAAA,EAAA,GAAA,EACA,IAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,EACA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,EACA,EAAA,MAAA,EAAA,CACA,GAAA,GAAA,CACA,GAAA,GACA,GAAA,EACA,GAAA,GACA,GAAA,GACA,GAAA,GACA,MAAA,EAAA,CACA,GAAA,KAAA,EAAA,GAAA,GAAA,GAAA,IAAA,EAAA,IAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,CACA,EAAA,IAAA,IAAA,EACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,GACA,IAAA,IAAA,IAAA,IAAA,EAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,IAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,IAAA,EAAA,CACA,GAAA,GAAA,CACA,EAAA,IAAA,GAAA,GACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,EAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,GAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IAAA,IAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,KAAA,GAAA,GAAA,CACA,GAAA,GACA,MAEA,EAAA,GAAA,GAAA,GACA,GAAA,GACA,UACA,CACA,EAAA,GAAA,EAAA,EACA,IAAA,GAAA,GAAA,MAAA,MAAA,EACA,EAAA,IAAA,GAAA,EACA,EAAA,EAAA,SAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,IAAA,GAAA,EACA,EAAA,EAAA,SAAA,EAAA,GAAA,IAAA,GAAA,GACA,EAAA,EAAA,SAAA,EAAA,GAAA,IAAA,GAAA,GACA,EAAA,EAAA,SAAA,EAAA,GAAA,IAAA,GAAA,GACA,EAAA,EAAA,SAAA,EAAA,GAAA,IAAA,GAAA,GACA,EAAA,EAAA,SAAA,EAAA,GAAA,IAAA,GAAA,GACA,EAAA,EAAA,SAAA,EAAA,GAAA,IAAA,GAAA,GACA,GAAA,EACA,OAGA,GAAA,GAAA,CACA,GAAA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,EACA,IAAA,GAAA,IAAA,GAAA,GAAA,CACA,EAAA,IAAA,GAAA,GACA,IAAA,GAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,MAAA,EAAA,CACA,IAAA,EAAA,IAAA,GAAA,KAAA,GAAA,GAAA,EAAA,IAAA,GAAA,GACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,GAAA,GAAA,CACA,GAAA,GACA,WACA,GAAA,GAAA,EAAA,QAEA,GAAA,OACA,CACA,EAAA,IAAA,GAAA,GACA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,MAAA,EAAA,CACA,IAAA,EAAA,IAAA,GAAA,KAAA,GAAA,GAAA,EAAA,IAAA,GAAA,GACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,GAAA,GAAA,CACA,GAAA,GACA,WACA,GAAA,GAAA,EAAA,QAEA,GAAA,GAEA,IAAA,IAAA,IAAA,IAAA,EAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,EAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,GAAA,IAAA,IAAA,EAAA,CACA,EAAA,IAAA,GAAA,GACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,EAAA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,EACA,EAAA,EAAA,EAAA,UAAA,GAAA,IAAA,KAAA,GAAA,IAAA,GAAA,EACA,IAAA,EAAA,IAAA,EAAA,GAAA,CACA,EAAA,IAAA,GAAA,EACA,IAAA,GAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,MAAA,EAAA,CACA,IAAA,EAAA,IAAA,GAAA,KAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,GAAA,GAAA,CACA,EAAA,EACA,WACA,GAAA,GAAA,EAAA,QAEA,EAAA,MACA,CACA,EAAA,IAAA,GAAA,EACA,IAAA,EAAA,IAAA,EAAA,IAAA,GAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,MAAA,EAAA,CACA,IAAA,EAAA,IAAA,GAAA,KAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,GAAA,GAAA,CACA,EAAA,EACA,WACA,GAAA,GAAA,EAAA,QAEA,EAAA,EAEA,GAAA,GAAA,IAAA,IAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,GAAA,OACA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,UACA,GACA,GAAA,GAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,GACA,UACA,CACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,SAGA,CACA,GAAA,GACA,GAAA,GACA,GAAA,GACA,GAAA,GAEA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,CACA,GAAA,GACA,GAAA,GACA,MAAA,MACA,CACA,GAAA,GAAA,EAAA,EACA,GAAA,GAAA,EAAA,EACA,GAAA,GAAA,EAAA,EACA,GAAA,IAGA,GAAA,EAAA,KAAA,IACA,GAAA,MACA,CACA,GAAA,EACA,GAAA,UACA,GACA,IAAA,GAAA,IAAA,GAAA,CACA,EAAA,EAAA,GAAA,EACA,IAAA,GAAA,GAAA,EAAA,GAAA,MAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,EAAA,IAAA,GAAA,EACA,IAAA,EAAA,KAAA,GAAA,GAAA,CACA,EAAA,GACA,GAAA,GAAA,EAAA,MACA,CACA,EAAA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,EACA,GAAA,GAEA,EAAA,IAAA,GAAA,EACA,IAAA,GAAA,IAAA,GAAA,GAAA,CACA,GAAA,GAAA,EAAA,EACA,GAAA,GACA,GAAA,GAAA,EAAA,MACA,CACA,GAAA,GACA,QAIA,GAAA,EAAA,EAAA,EACA,GAAA,IAAA,EAAA,EACA,EAAA,IAAA,GAAA,GACA,IAAA,GAAA,EAAA,MAAA,CACA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,GAAA,EACA,GAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,GAAA,EACA,IAAA,GAAA,GAAA,EAAA,CACA,GAAA,EACA,EAAA,CACA,GAAA,IAAA,EACA,EAAA,EAAA,QAAA,IAAA,IAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,IAAA,IAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,IAAA,IAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,IAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,SACA,GAAA,IAAA,EAAA,IAAA,GAAA,IAEA,IAAA,GAAA,GAAA,EAAA,CACA,GAAA,EACA,EAAA,CACA,IAAA,EAAA,EAAA,SAAA,IAAA,IAAA,GAAA,IAAA,EAAA,EACA,GAAA,GAAA,EAAA,EACA,GAAA,EAAA,IAAA,IAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,IAAA,EAAA,EAAA,SAAA,IAAA,IAAA,GAAA,GACA,GAAA,IAAA,EACA,GAAA,EAAA,QAAA,IAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,MAAA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,EAAA,SAAA,GAAA,IAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,MAAA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,IAAA,EACA,GAAA,EAAA,QAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,EACA,IAAA,EAAA,IAAA,GAAA,IAAA,GAAA,GAAA,EAAA,IAAA,GAAA,GACA,GAAA,EAAA,SAAA,GAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,EACA,IAAA,EAAA,IAAA,GAAA,IAAA,GAAA,GAAA,EAAA,IAAA,GAAA,GACA,GAAA,EAAA,SAAA,GAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,EACA,IAAA,EAAA,IAAA,GAAA,IAAA,GAAA,GAAA,EAAA,IAAA,GAAA,GACA,GAAA,EAAA,SAAA,GAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,EACA,IAAA,EAAA,IAAA,GAAA,IAAA,GAAA,GAAA,EAAA,IAAA,GAAA,GACA,GAAA,GAAA,EAAA,SACA,GAAA,IAAA,GAAA,IAEA,IAAA,EAAA,IAAA,GAAA,GAAA,EAAA,CACA,GAAA,EACA,EAAA,CACA,GAAA,EAAA,IAAA,IAAA,GAAA,EACA,GAAA,IAAA,EACA,GAAA,EAAA,QAAA,IAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,KAAA,EAAA,IAAA,GAAA,GACA,GAAA,EAAA,SAAA,GAAA,IAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,KAAA,EAAA,IAAA,GAAA,GACA,GAAA,GAAA,EAAA,SACA,GAAA,IAAA,EAAA,IAAA,GAAA,IACA,EAAA,OACA,EAAA,GAGA,EAAA,GACA,OAAA,EAAA,EAGA,SAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GACA,EAAA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,GAAA,EAAA,EACA,GAAA,GAAA,EAAA,IAIA,GAAA,EAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,IAAA,GAAA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,IAIA,EAAA,EAAA,QAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,EAAA,CACA,IAAA,EAAA,GAAA,EACA,IAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,EACA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,EACA,EAAA,MAAA,EAAA,CACA,GAAA,GAAA,CACA,GAAA,GACA,GAAA,EACA,GAAA,GACA,GAAA,GACA,GAAA,GACA,MAAA,EAAA,CACA,GAAA,KAAA,EAAA,GAAA,GAAA,GAAA,IAAA,EAAA,IAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,OACA,CACA,EAAA,IAAA,IAAA,EACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,GACA,IAAA,IAAA,IAAA,IAAA,EAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,IAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,IAAA,EAAA,CACA,GAAA,GAAA,CACA,EAAA,IAAA,GAAA,GACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,EAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,GAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IAAA,IAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,KAAA,GAAA,GAAA,CACA,GAAA,GACA,MAEA,EAAA,GAAA,GAAA,GACA,GAAA,GACA,UACA,CACA,EAAA,GAAA,EAAA,EACA,IAAA,GAAA,GAAA,MAAA,MAAA,EACA,EAAA,IAAA,GAAA,EACA,EAAA,EAAA,SAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,IAAA,GAAA,EACA,EAAA,EAAA,SAAA,EAAA,GAAA,IAAA,GAAA,GACA,EAAA,EAAA,SAAA,EAAA,GAAA,IAAA,GAAA,GACA,EAAA,EAAA,SAAA,EAAA,GAAA,IAAA,GAAA,GACA,EAAA,EAAA,SAAA,EAAA,GAAA,IAAA,GAAA,GACA,EAAA,EAAA,SAAA,EAAA,GAAA,IAAA,GAAA,GACA,EAAA,EAAA,SAAA,EAAA,GAAA,IAAA,GAAA,GACA,GAAA,EACA,OAGA,GAAA,GAAA,CACA,GAAA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,EACA,IAAA,GAAA,IAAA,GAAA,GAAA,CACA,EAAA,IAAA,GAAA,GACA,IAAA,GAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,MAAA,EAAA,CACA,IAAA,EAAA,IAAA,GAAA,KAAA,GAAA,GAAA,EAAA,IAAA,GAAA,GACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,GAAA,GAAA,CACA,GAAA,GACA,WACA,GAAA,GAAA,EAAA,QAEA,GAAA,OACA,CACA,EAAA,IAAA,GAAA,GACA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,MAAA,EAAA,CACA,IAAA,EAAA,IAAA,GAAA,KAAA,GAAA,GAAA,EAAA,IAAA,GAAA,GACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,GAAA,GAAA,CACA,GAAA,GACA,WACA,GAAA,GAAA,EAAA,QAEA,GAAA,GAEA,IAAA,IAAA,IAAA,IAAA,EAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,EAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,GAAA,IAAA,IAAA,EAAA,CACA,EAAA,IAAA,GAAA,GACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,EAAA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,EACA,EAAA,EAAA,EAAA,UAAA,GAAA,IAAA,KAAA,GAAA,IAAA,GAAA,EACA,IAAA,EAAA,IAAA,EAAA,GAAA,CACA,EAAA,IAAA,GAAA,EACA,IAAA,GAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,MAAA,EAAA,CACA,IAAA,EAAA,IAAA,GAAA,KAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,GAAA,GAAA,CACA,EAAA,EACA,WACA,GAAA,GAAA,EAAA,QAEA,EAAA,MACA,CACA,EAAA,IAAA,GAAA,EACA,IAAA,EAAA,IAAA,EAAA,IAAA,GAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,MAAA,EAAA,CACA,IAAA,EAAA,IAAA,GAAA,KAAA,EAAA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,GAAA,GAAA,CACA,EAAA,EACA,WACA,GAAA,GAAA,EAAA,QAEA,EAAA,EAEA,GAAA,GAAA,IAAA,IAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,GAAA,UACA,GACA,GAAA,GAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,GACA,UACA,CACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,SAGA,CACA,GAAA,GACA,GAAA,GACA,GAAA,GACA,GAAA,GAEA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,CACA,GAAA,GACA,GAAA,GACA,MAAA,MACA,CACA,GAAA,GAAA,EAAA,EACA,GAAA,GAAA,EAAA,EACA,GAAA,GAAA,EAAA,EACA,GAAA,IAGA,GAAA,EAAA,KAAA,IACA,GAAA,MACA,CACA,GAAA,EACA,GAAA,UACA,GACA,IAAA,GAAA,IAAA,GAAA,CACA,EAAA,EAAA,GAAA,EACA,IAAA,GAAA,GAAA,EAAA,GAAA,MAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,EAAA,IAAA,GAAA,EACA,IAAA,EAAA,KAAA,GAAA,GAAA,CACA,EAAA,GACA,GAAA,GAAA,EAAA,MACA,CACA,EAAA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,EACA,GAAA,GAEA,EAAA,IAAA,GAAA,EACA,IAAA,GAAA,IAAA,GAAA,GAAA,CACA,GAAA,GAAA,EAAA,EACA,GAAA,GACA,GAAA,GAAA,EAAA,MACA,CACA,GAAA,GACA,QAIA,GAAA,EAAA,EAAA,EACA,GAAA,IAAA,EAAA,EACA,EAAA,IAAA,GAAA,GACA,IAAA,GAAA,EAAA,MAAA,CACA,GAAA,EAAA,EAAA,EAAA,IAAA,EAAA,GAAA,EACA,GAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,GAAA,EACA,IAAA,GAAA,GAAA,EAAA,CACA,GAAA,EACA,EAAA,CACA,GAAA,IAAA,EACA,EAAA,EAAA,QAAA,IAAA,IAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,IAAA,IAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,IAAA,IAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,IAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,SACA,GAAA,IAAA,EAAA,IAAA,GAAA,IAEA,IAAA,GAAA,GAAA,EAAA,CACA,GAAA,EACA,EAAA,CACA,IAAA,EAAA,EAAA,SAAA,IAAA,IAAA,GAAA,IAAA,EAAA,EACA,GAAA,GAAA,EAAA,EACA,GAAA,EAAA,IAAA,IAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,IAAA,EAAA,EAAA,SAAA,IAAA,IAAA,GAAA,GACA,GAAA,IAAA,EACA,GAAA,EAAA,QAAA,IAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,MAAA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,EAAA,SAAA,GAAA,IAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,MAAA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,IAAA,EACA,GAAA,EAAA,QAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,EACA,IAAA,EAAA,IAAA,GAAA,IAAA,GAAA,GAAA,EAAA,IAAA,GAAA,GACA,GAAA,EAAA,SAAA,GAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,EACA,IAAA,EAAA,IAAA,GAAA,IAAA,GAAA,GAAA,EAAA,IAAA,GAAA,GACA,GAAA,EAAA,SAAA,GAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,EACA,IAAA,EAAA,IAAA,GAAA,IAAA,GAAA,GAAA,EAAA,IAAA,GAAA,GACA,GAAA,EAAA,SAAA,GAAA,IAAA,GAAA,EACA,GAAA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,EACA,IAAA,EAAA,IAAA,GAAA,IAAA,GAAA,GAAA,EAAA,IAAA,GAAA,GACA,GAAA,GAAA,EAAA,SACA,GAAA,IAAA,GAAA,IAEA,IAAA,EAAA,IAAA,GAAA,GAAA,EAAA,CACA,GAAA,EACA,EAAA,CACA,GAAA,EAAA,IAAA,IAAA,GAAA,EACA,GAAA,IAAA,EACA,GAAA,EAAA,QAAA,IAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,KAAA,EAAA,IAAA,GAAA,GACA,GAAA,EAAA,SAAA,GAAA,IAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,KAAA,EAAA,IAAA,GAAA,GACA,GAAA,GAAA,EAAA,SACA,GAAA,IAAA,EAAA,IAAA,GAAA,IACA,EAAA,OACA,EAAA,GAGA,EAAA,GACA,OAAA,EAAA,EAGA,SAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GACA,GAAA,EAAA,GAAA,EAAA,EACA,GAAA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,GAAA,EAAA,EACA,GAAA,GAAA,EAAA,IAIA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,IAAA,GAAA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,IAIA,EAAA,EAAA,QAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,GAAA,EACA,GAAA,GAAA,GAAA,EAAA,EACA,EAAA,GAAA,IAAA,GAAA,GAAA,EAAA,CACA,IAAA,EAAA,GAAA,EACA,IAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,EACA,EAAA,MAAA,EAAA,CACA,GAAA,GAAA,CACA,GAAA,GACA,GAAA,EACA,GAAA,GACA,GAAA,GACA,GAAA,GACA,MAAA,EAAA,CACA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EAAA,IAAA,EAAA,GAAA,CACA,EAAA,IAAA,IAAA,EACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,GACA,IAAA,IAAA,IAAA,IAAA,EAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,IAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,IAAA,EAAA,CACA,GAAA,GAAA,CACA,EAAA,IAAA,GAAA,GACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,EAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,GAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IAAA,IAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,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EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GACA,GAAA,EAAA,GAAA,EAAA,EACA,GAAA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,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EACA,EAAA,GAAA,IAAA,GAAA,GAAA,EAAA,CACA,IAAA,EAAA,GAAA,EACA,IAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,EACA,EAAA,MAAA,EAAA,CACA,GAAA,GAAA,CACA,GAAA,GACA,GAAA,EACA,GAAA,GACA,GAAA,GACA,GAAA,GACA,MAAA,EAAA,CACA,GAAA,IAAA,EAAA,IAAA,GAAA,EAAA,IAAA,EAAA,GAAA,CACA,EAAA,IAAA,IAAA,EACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,GACA,IAAA,IAAA,IAAA,IAAA,EAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,IAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,IAAA,EAAA,CACA,GAAA,GAAA,CACA,EAAA,IAAA,GAAA,GACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,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GAGA,EAAA,GACA,OAAA,EAAA,EAGA,SAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GACA,GAAA,EAAA,GAAA,EAAA,EACA,GAAA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,GAAA,EAAA,EACA,GAAA,GAAA,EAAA,IAIA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,IAAA,GAAA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,IAIA,EAAA,EAAA,QAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,GAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,GAAA,IAAA,GAAA,GAAA,EAAA,CACA,IAAA,EAAA,GAAA,EACA,IAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,EACA,EAAA,MAAA,EAAA,CACA,GAAA,GAAA,CACA,GAAA,GACA,GAAA,EACA,GAAA,GACA,GAAA,GACA,GAAA,GACA,MAAA,EAAA,CACA,GAAA,IAAA,EAAA,IAAA,GAAA,EAAA,IAAA,EAAA,GAAA,CACA,EAAA,IAAA,IAAA,EACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,GACA,IAAA,IAAA,IAAA,IAAA,EAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,IAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,IAAA,EAAA,CACA,GAAA,GAAA,CACA,EAAA,IAAA,GAAA,GACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,EAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,GAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IAAA,IAAA,EAAA,EACA,EAAA,EAAA,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EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GACA,GAAA,EAAA,GAAA,EAAA,EACA,GAAA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,GAAA,EAAA,EACA,GAAA,GAAA,EAAA,IAIA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,IAAA,GAAA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,IAIA,EAAA,EAAA,QAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,GAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,GAAA,IAAA,GAAA,GAAA,EAAA,CACA,IAAA,EAAA,GAAA,EACA,IAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,EACA,EAAA,MAAA,EAAA,CACA,GAAA,GAAA,CACA,GAAA,GACA,GAAA,EACA,GAAA,GACA,GAAA,GACA,GAAA,GACA,MAAA,EAAA,CACA,GAAA,IAAA,EAAA,IAAA,GAAA,EAAA,IAAA,EAAA,GAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,OACA,CACA,EAAA,IAAA,IAAA,EACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,GACA,IAAA,IAAA,IAAA,IAAA,EAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,IAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,IAAA,EAAA,CACA,GAAA,GAAA,CACA,EAAA,IAAA,GAAA,GACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,EAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,GAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IAAA,IAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,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GAGA,EAAA,GACA,OAAA,EAAA,EAGA,SAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GACA,EAAA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,GAAA,EAAA,EACA,GAAA,GAAA,EAAA,IAIA,GAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,GAAA,IAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,IAAA,GAAA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,IAIA,EAAA,EAAA,QAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,EAAA,CACA,IAAA,GAAA,GAAA,EACA,IAAA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,EACA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,EACA,EAAA,MAAA,EAAA,CACA,GAAA,GAAA,CACA,GAAA,GACA,GAAA,EACA,GAAA,GACA,GAAA,GACA,GAAA,GACA,MAAA,EAAA,CACA,GAAA,IAAA,EAAA,IAAA,GAAA,EAAA,IAAA,EAAA,GAAA,CACA,EAAA,IAAA,IAAA,EACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,GACA,IAAA,IAAA,IAAA,IAAA,EAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,IAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,IAAA,EAAA,CACA,GAAA,GAAA,CACA,EAAA,IAAA,GAAA,GACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,EAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,GAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IAAA,IAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,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EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GACA,EAAA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,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EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,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EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GACA,GAAA,EAAA,GAAA,EAAA,EACA,GAAA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,GAAA,EAAA,EACA,GAAA,GAAA,EAAA,IAIA,EAAA,EAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,IAAA,GAAA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,IAIA,EAAA,EAAA,QAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,GAAA,EACA,GAAA,GAAA,GAAA,EAAA,EACA,EAAA,GAAA,IAAA,GAAA,GAAA,EAAA,CACA,IAAA,EAAA,GAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,GAAA,GAAA,EACA,GAAA,EACA,EAAA,MAAA,EAAA,CACA,GAAA,GAAA,CACA,GAAA,EACA,GAAA,GACA,GAAA,GACA,GAAA,GACA,MAAA,EAAA,CACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,EAAA,GAAA,GAAA,GAAA,EACA,GAAA,KAAA,GAAA,KAAA,IAAA,IAAA,EAAA,MAAA,KAAA,EAAA,KAAA,IAAA,EAAA,KAAA,IAAA,EAAA,GAAA,CACA,EAAA,IAAA,GAAA,EACA,GAAA,OACA,CACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,GACA,IAAA,IAAA,IAAA,IAAA,EAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,IAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,IAAA,EAAA,CACA,GAAA,GAAA,CACA,EAAA,IAAA,GAAA,GACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,EAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,GAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IAAA,IAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,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EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GACA,GAAA,EAAA,GAAA,EAAA,EACA,GAAA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,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EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GACA,GAAA,EAAA,GAAA,EAAA,EACA,GAAA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,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EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GACA,EAAA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,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EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GACA,GAAA,EAAA,GAAA,EAAA,EACA,GAAA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,GAAA,EAAA,EACA,GAAA,GAAA,EAAA,IAIA,EAAA,EAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,IAAA,GAAA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,IAIA,EAAA,EAAA,QAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,GAAA,EACA,GAAA,EAAA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,GAAA,GAAA,EAAA,CACA,IAAA,EAAA,GAAA,EACA,GAAA,EACA,GAAA,IAAA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,GAAA,GAAA,EACA,GAAA,EACA,EAAA,MAAA,EAAA,CACA,GAAA,GAAA,CACA,GAAA,EACA,GAAA,GACA,GAAA,GACA,GAAA,GACA,MAAA,EAAA,CACA,GAAA,KAAA,EAAA,GAAA,GAAA,GAAA,IAAA,EAAA,IAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GAAA,IAAA,EAAA,GAAA,CACA,EAAA,IAAA,GAAA,EACA,GAAA,OACA,CACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,GACA,IAAA,IAAA,IAAA,IAAA,EAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,IAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,IAAA,EAAA,CACA,GAAA,GAAA,CACA,EAAA,IAAA,GAAA,GACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,EAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,GAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IAAA,IAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,KAAA,GAAA,GAAA,CACA,GAAA,GACA,MAEA,EAAA,GAAA,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EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GACA,GAAA,EAAA,GAAA,EAAA,EACA,GAAA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,GAAA,EAAA,EACA,GAAA,GAAA,EAAA,IAIA,EAAA,EAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,IAAA,GAAA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,IAIA,EAAA,EAAA,QAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,GAAA,GAAA,EAAA,CACA,IAAA,EAAA,GAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,GAAA,GAAA,EACA,GAAA,EACA,EAAA,MAAA,EAAA,CACA,GAAA,GAAA,CACA,GAAA,EACA,GAAA,GACA,GAAA,GACA,GAAA,GACA,MAAA,EAAA,CACA,GAAA,KAAA,EAAA,GAAA,GAAA,GAAA,IAAA,EAAA,IAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GAAA,IAAA,EAAA,GAAA,CACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,GACA,IAAA,IAAA,IAAA,IAAA,EAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,IAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,IAAA,EAAA,CACA,GAAA,GAAA,CACA,EAAA,IAAA,GAAA,GACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,EAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,GAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IAAA,IAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,KAAA,GAAA,GAAA,CACA,GAAA,GACA,MAEA,EAAA,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EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GACA,EAAA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,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GACA,OAAA,EAAA,EAGA,SAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GACA,EAAA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,GAAA,EAAA,EACA,GAAA,GAAA,EAAA,IAIA,GAAA,EAAA,EAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,IAAA,GAAA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,IAIA,EAAA,EAAA,QAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,GAAA,EACA,EAAA,MAAA,EAAA,CACA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,GACA,GAAA,GACA,GAAA,GACA,MAAA,EAAA,CACA,GAAA,KAAA,EAAA,GAAA,GAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,CACA,EAAA,IAAA,GAAA,EACA,GAAA,OACA,CACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,GACA,IAAA,IAAA,IAAA,IAAA,EAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,IAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,IAAA,EAAA,CACA,GAAA,GAAA,CACA,EAAA,IAAA,GAAA,GACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,EAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,GAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IAAA,IAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,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EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GACA,EAAA,EAAA,GAAA,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GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,GACA,IAAA,IAAA,IAAA,IAAA,EAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,IAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,IAAA,EAAA,CACA,GAAA,GAAA,CACA,EAAA,IAAA,GAAA,GACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,EAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,GAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IAAA,IAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,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EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GACA,GAAA,EAAA,GAAA,EAAA,EACA,GAAA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,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IAAA,GAAA,GAAA,EAAA,CACA,IAAA,EAAA,GAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,GAAA,GAAA,EACA,GAAA,EACA,EAAA,MAAA,EAAA,CACA,GAAA,GAAA,CACA,GAAA,EACA,GAAA,GACA,GAAA,GACA,GAAA,GACA,MAAA,EAAA,CACA,GAAA,IAAA,EAAA,IAAA,GAAA,EAAA,IAAA,EAAA,GAAA,CACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,GACA,IAAA,IAAA,IAAA,IAAA,EAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,IAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,IAAA,EAAA,CACA,GAAA,GAAA,CACA,EAAA,IAAA,GAAA,GACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GACA,EAAA,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EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GACA,GAAA,EAAA,GAAA,EAAA,EACA,GAAA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,GAAA,EAAA,EACA,GAAA,GAAA,EAAA,IAIA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,GAAA,GAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,EACA,IAAA,GAAA,KAAA,EAAA,GAAA,UAAA,CACA,GAAA,IAAA,GAAA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,IAIA,EAAA,EAAA,QAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EACA,GAAA,EACA,GAAA,GAAA,GAAA,EAAA,EACA,EAAA,GAAA,IAAA,GAAA,GAAA,EAAA,CACA,IAAA,EAAA,GAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,EAAA,GAAA,GAAA,EACA,GAAA,EACA,EAAA,MAAA,EAAA,CACA,GAAA,GAAA,CACA,GAAA,EACA,GAAA,GACA,GAAA,GACA,GAAA,GACA,MAAA,EAAA,CACA,GAAA,IAAA,EAAA,IAAA,GAAA,EAAA,IAAA,EAAA,GAAA,CACA,EAAA,IAAA,GAAA,EACA,GAAA,OACA,CACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,GACA,IAAA,IAAA,IAAA,IAAA,EAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,IAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,IAAA,EAAA,CACA,GAAA,GAAA,CACA,EAAA,IAAA,GAAA,GACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,EAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,GAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IAAA,IAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,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IAAA,EAAA,IAAA,GAAA,EAAA,IAAA,EAAA,GAAA,CACA,EAAA,IAAA,GAAA,EACA,GAAA,OACA,CACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,GACA,IAAA,IAAA,IAAA,IAAA,EAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,GAAA,EAAA,SAAA,IAAA,GAAA,GAAA,EACA,EAAA,IAAA,IAAA,EAAA,IAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,IAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,EAAA,IAAA,GAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,GACA,GAAA,IAAA,IAAA,GAAA,EACA,GAAA,IAAA,IAAA,IAAA,EAAA,CACA,GAAA,GAAA,CACA,EAAA,IAAA,GAAA,GACA,EAAA,GAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,GAAA,EACA,IAAA,EAAA,GAAA,GAAA,IAAA,GAAA,GAAA,EAAA,GAAA,GAAA,GACA,EAAA,EAAA,SAAA,GAAA,GAAA,IAAA,GAAA,GACA,GAAA,GACA,MAEA,EAAA,EAAA,IAAA,GAAA,GAAA,EACA,GAAA,GAAA,IAAA,GAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,IAAA,IAAA,EAAA,EACA,EAAA,EAAA,SAAA,GAAA,GAAA,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EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GACA,EAAA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,EACA,MAAA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,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EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GACA,EAAA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,EAAA,EACA,IAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,GAAA,EACA,GAAA,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EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GACA,EAAA,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EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,GAAA,EACA,EAAA,GACA,EAAA,GAAA,IAAA,EAAA,EAAA,GAAA,EAAA,IAAA,EAAA,GAAA,GAAA,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EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,EAAA,GAAA,GAAA,IAAA,EAAA,GAAA,CACA,GAAA,KAAA,EACA,EAAA,IAAA,GAAA,GACA,GAAA,EACA,GAAA,MACA,CACA,GAAA,EAAA,EAAA,EACA,GAAA,EAAA,IAAA,EACA,EAAA,CACA,GAAA,EAAA,IAAA,GAAA,EACA,GAAA,KAAA,GAAA,EAAA,IAAA,GAAA,KAAA,EAAA,CACA,EAAA,IAAA,GAAA,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EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,EAAA,EAAA,EACA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EACA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,IAAA,EAAA,KAAA,EAAA,GAAA,KACA,GAAA,GAAA,GAAA,EACA,GAAA,GAAA,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GACA,GAAA,EAAA,GAAA,GACA,GAAA,EAAA,GAAA,GACA,EAAA,EAAA,EACA,IAAA,EAAA,EAAA,GAAA,GACA,GAAA,EAAA,EAAA,EACA,IAAA,EAAA,IAAA,GACA,GAAA,GAAA,GACA,IAAA,EAAA,EAAA,IAAA,GACA,GAAA,EAAA,EAAA,IAAA,GACA,EAAA,GAAA,EACA,GAAA,EAAA,EAAA,IAAA,GACA,GAAA,EAAA,EAAA,IAAA,GACA,GAAA,EAAA,EAAA,IAAA,GACA,EAAA,GAAA,EACA,GAAA,EAAA,EAAA,IAAA,GACA,EAAA,EAAA,EACA,GAAA,EAAA,EAAA,IAAA,GACA,GAAA,EAAA,EAAA,IAAA,GACA,GAAA,EAAA,EAAA,IAAA,GACA,GAAA,GAAA,EACA,IAAA,EAAA,EAAA,IAAA,GACA,GAAA,EAAA,GACA,IAAA,EAAA,EAAA,IAAA,GACA,EAAA,IAAA,GAAA,EACA,EAAA,GAAA,GAAA,GAAA,EAAA,GACA,EAAA,GAAA,IAAA,GAAA,EAAA,EACA,EAAA,GAAA,IAAA,GAAA,EAAA,GACA,EAAA,GAAA,IAAA,GAAA,GACA,EAAA,GAAA,IAAA,GAAA,EAAA,GACA,EAAA,GAAA,IAAA,GAAA,EAAA,GACA,EAAA,GAAA,IAAA,GAAA,GAAA,GACA,EAAA,GAAA,IAAA,GAAA,EACA,EAAA,GAAA,IAAA,GAAA,EACA,EAAA,GAAA,IAAA,GAAA,GACA,EAAA,GAAA,IAAA,GAAA,GACA,GAAA,EAAA,EACA,EAAA,GAAA,IAAA,GAAA,GACA,EAAA,GAAA,KAAA,GAAA,GAAA,EACA,EAAA,GAAA,KAAA,GAAA,EAAA,EACA,EAAA,GAAA,KAAA,GAAA,EAAA,EACA,EAAA,GAAA,KAAA,GAAA,EACA,EAAA,GAAA,KAAA,GAAA,EAAA,EACA,EAAA,GAAA,KAAA,GAAA,EAAA,EACA,EAAA,GAAA,KAAA,GAAA,GAAA,EACA,EAAA,GAAA,KAAA,GAAA,EACA,EAAA,GAAA,KAAA,GAAA,EACA,EAAA,GAAA,KAAA,GAAA,EACA,EAAA,GAAA,KAAA,GAAA,EACA,GAAA,EAAA,EACA,EAAA,GAAA,KAAA,GAAA,GACA,EAAA,GAAA,KAAA,GAAA,GAAA,EACA,EAAA,GAAA,KAAA,GAAA,EAAA,EACA,EAAA,GAAA,KAAA,GAAA,EAAA,EACA,IAAA,EAAA,IAAA,GACA,EAAA,GAAA,KAAA,GAAA,EAAA,GACA,EAAA,GAAA,KAAA,GAAA,EAAA,EACA,EAAA,GAAA,KAAA,GAAA,EAAA,GACA,EAAA,GAAA,KAAA,GAAA,GAAA,GACA,EAAA,GAAA,KAAA,GAAA,GACA,EAAA,GAAA,KAAA,GAAA,EACA,EAAA,GAAA,KAAA,GAAA,EACA,EAAA,GAAA,KAAA,GAAA,GACA,GAAA,GAAA,GAAA,EACA,GAAA,GACA,GAAA,GAAA,GAAA,EACA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,SACA,GAAA,IAAA,GAAA,IACA,EAAA,IAAA,IAAA,IACA,GAAA,GAAA,GAAA,EACA,EAAA,IAAA,GAAA,EACA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,GAAA,GAAA,EACA,EAAA,GAAA,IAAA,GAAA,EACA,EAAA,GAAA,IAAA,GAAA,EACA,EAAA,GAAA,IAAA,GAAA,EACA,EAAA,GAAA,IAAA,GAAA,EACA,EAAA,GAAA,IAAA,GAAA,EACA,EAAA,GAAA,KAAA,GAAA,IACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,GAAA,EACA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,SACA,GAAA,IAAA,GAAA,IACA,EAAA,IAAA,GAAA,IACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,GAAA,EACA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,SACA,GAAA,IAAA,GAAA,IACA,EAAA,IAAA,IAAA,IACA,EAAA,GAAA,IAAA,EACA,GAAA,GAAA,IAAA,EACA,GAAA,GAAA,GAAA,EACA,EAAA,CACA,EAAA,IAAA,GAAA,EACA,GAAA,GAAA,EAAA,SACA,GAAA,IAAA,GAAA,IACA,EAAA,GAAA,IAAA,IACA,EAAA,GAAA,IAAA,EACA,EAAA,GAAA,GAAA,EACA,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,GAAA,GAAA,EACA,EAAA,GAAA,EAAA,GAAA,GACA,EAAA,EAAA,GAAA,EACA,EAAA,GAAA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,EAAA,GAAA,IAAA,EAAA,EAAA,IAAA,IAAA,EAAA,GAAA,GACA,GAAA,EAAA,EAAA,IAAA,GACA,GAAA,EAAA,EAAA,IAAA,GACA,GAAA,EAAA,EAAA,IAAA,GACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,GAAA,EACA,EAAA,GAAA,GAAA,EACA,EAAA,EAAA,GAAA,EAAA,GAAA,GACA,EAAA,EAAA,GAAA,EAAA,GAAA,GACA,EAAA,EAAA,GAAA,EAAA,GAAA,GACA,GAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IACA,EAAA,EAAA,GAAA,EACA,EAAA,GAAA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,EAAA,GAAA,GAAA,EAAA,EACA,EAAA,EAAA,GAAA,EACA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GACA,EAAA,EAAA,GAAA,EACA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GACA,GAAA,EAAA,GAAA,GACA,GAAA,EAAA,EAAA,GAAA,GACA,GAAA,EAAA,EAAA,IAAA,GACA,GAAA,EAAA,GAAA,GAAA,IAAA,EAAA,GAAA,GAAA,IAAA,EAAA,GAAA,GAAA,EACA,EAAA,EAAA,GAAA,EACA,EAAA,GAAA,GAAA,EACA,GAAA,EAAA,GAAA,GAAA,IAAA,EAAA,GAAA,GAAA,IAAA,EAAA,GAAA,GAAA,EACA,EAAA,EAAA,EAAA,EACA,EAAA,GAAA,GAAA,EACA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GACA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GACA,EAAA,EAAA,GAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GACA,GAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IACA,EAAA,GAAA,GAAA,EACA,EAAA,GAAA,GAAA,EAAA,EACA,EAAA,EAAA,GAAA,GAAA,GAAA,EAAA,GAAA,GACA,EAAA,EAAA,IAAA,GAAA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","file":"script.map","sourceRoot":"../src","sourcesContent":["// Polyfills\n\nif ( Number.EPSILON === undefined ) {\n\n\tNumber.EPSILON = Math.pow( 2, - 52 );\n\n}\n\nif ( Number.isInteger === undefined ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger\n\n\tNumber.isInteger = function ( value ) {\n\n\t\treturn typeof value === 'number' && isFinite( value ) && Math.floor( value ) === value;\n\n\t};\n\n}\n\n//\n\nif ( Math.sign === undefined ) {\n\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign\n\n\tMath.sign = function ( x ) {\n\n\t\treturn ( x < 0 ) ? - 1 : ( x > 0 ) ? 1 : + x;\n\n\t};\n\n}\n\nif ( 'name' in Function.prototype === false ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name\n\n\tObject.defineProperty( Function.prototype, 'name', {\n\n\t\tget: function () {\n\n\t\t\treturn this.toString().match( /^\\s*function\\s*([^\\(\\s]*)/ )[ 1 ];\n\n\t\t}\n\n\t} );\n\n}\n\nif ( Object.assign === undefined ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n\n\t( function () {\n\n\t\tObject.assign = function ( target ) {\n\n\t\t\tif ( target === undefined || target === null ) {\n\n\t\t\t\tthrow new TypeError( 'Cannot convert undefined or null to object' );\n\n\t\t\t}\n\n\t\t\tvar output = Object( target );\n\n\t\t\tfor ( var index = 1; index < arguments.length; index ++ ) {\n\n\t\t\t\tvar source = arguments[ index ];\n\n\t\t\t\tif ( source !== undefined && source !== null ) {\n\n\t\t\t\t\tfor ( var nextKey in source ) {\n\n\t\t\t\t\t\tif ( Object.prototype.hasOwnProperty.call( source, nextKey ) ) {\n\n\t\t\t\t\t\t\toutput[ nextKey ] = source[ nextKey ];\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn output;\n\n\t\t};\n\n\t} )();\n\n}\n\n/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nfunction EventDispatcher() {}\n\nObject.assign( EventDispatcher.prototype, {\n\n\taddEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\tvar listeners = this._listeners;\n\n\t\tif ( listeners[ type ] === undefined ) {\n\n\t\t\tlisteners[ type ] = [];\n\n\t\t}\n\n\t\tif ( listeners[ type ].indexOf( listener ) === - 1 ) {\n\n\t\t\tlisteners[ type ].push( listener );\n\n\t\t}\n\n\t},\n\n\thasEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return false;\n\n\t\tvar listeners = this._listeners;\n\n\t\treturn listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;\n\n\t},\n\n\tremoveEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tvar listeners = this._listeners;\n\t\tvar listenerArray = listeners[ type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tvar index = listenerArray.indexOf( listener );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\tlistenerArray.splice( index, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tdispatchEvent: function ( event ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tvar listeners = this._listeners;\n\t\tvar listenerArray = listeners[ event.type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tevent.target = this;\n\n\t\t\tvar array = listenerArray.slice( 0 );\n\n\t\t\tfor ( var i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\nvar REVISION = '94';\nvar MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2 };\nvar CullFaceNone = 0;\nvar CullFaceBack = 1;\nvar CullFaceFront = 2;\nvar CullFaceFrontBack = 3;\nvar FrontFaceDirectionCW = 0;\nvar FrontFaceDirectionCCW = 1;\nvar BasicShadowMap = 0;\nvar PCFShadowMap = 1;\nvar PCFSoftShadowMap = 2;\nvar FrontSide = 0;\nvar BackSide = 1;\nvar DoubleSide = 2;\nvar FlatShading = 1;\nvar SmoothShading = 2;\nvar NoColors = 0;\nvar FaceColors = 1;\nvar VertexColors = 2;\nvar NoBlending = 0;\nvar NormalBlending = 1;\nvar AdditiveBlending = 2;\nvar SubtractiveBlending = 3;\nvar MultiplyBlending = 4;\nvar CustomBlending = 5;\nvar AddEquation = 100;\nvar SubtractEquation = 101;\nvar ReverseSubtractEquation = 102;\nvar MinEquation = 103;\nvar MaxEquation = 104;\nvar ZeroFactor = 200;\nvar OneFactor = 201;\nvar SrcColorFactor = 202;\nvar OneMinusSrcColorFactor = 203;\nvar SrcAlphaFactor = 204;\nvar OneMinusSrcAlphaFactor = 205;\nvar DstAlphaFactor = 206;\nvar OneMinusDstAlphaFactor = 207;\nvar DstColorFactor = 208;\nvar OneMinusDstColorFactor = 209;\nvar SrcAlphaSaturateFactor = 210;\nvar NeverDepth = 0;\nvar AlwaysDepth = 1;\nvar LessDepth = 2;\nvar LessEqualDepth = 3;\nvar EqualDepth = 4;\nvar GreaterEqualDepth = 5;\nvar GreaterDepth = 6;\nvar NotEqualDepth = 7;\nvar MultiplyOperation = 0;\nvar MixOperation = 1;\nvar AddOperation = 2;\nvar NoToneMapping = 0;\nvar LinearToneMapping = 1;\nvar ReinhardToneMapping = 2;\nvar Uncharted2ToneMapping = 3;\nvar CineonToneMapping = 4;\nvar UVMapping = 300;\nvar CubeReflectionMapping = 301;\nvar CubeRefractionMapping = 302;\nvar EquirectangularReflectionMapping = 303;\nvar EquirectangularRefractionMapping = 304;\nvar SphericalReflectionMapping = 305;\nvar CubeUVReflectionMapping = 306;\nvar CubeUVRefractionMapping = 307;\nvar RepeatWrapping = 1000;\nvar ClampToEdgeWrapping = 1001;\nvar MirroredRepeatWrapping = 1002;\nvar NearestFilter = 1003;\nvar NearestMipMapNearestFilter = 1004;\nvar NearestMipMapLinearFilter = 1005;\nvar LinearFilter = 1006;\nvar LinearMipMapNearestFilter = 1007;\nvar LinearMipMapLinearFilter = 1008;\nvar UnsignedByteType = 1009;\nvar ByteType = 1010;\nvar ShortType = 1011;\nvar UnsignedShortType = 1012;\nvar IntType = 1013;\nvar UnsignedIntType = 1014;\nvar FloatType = 1015;\nvar HalfFloatType = 1016;\nvar UnsignedShort4444Type = 1017;\nvar UnsignedShort5551Type = 1018;\nvar UnsignedShort565Type = 1019;\nvar UnsignedInt248Type = 1020;\nvar AlphaFormat = 1021;\nvar RGBFormat = 1022;\nvar RGBAFormat = 1023;\nvar LuminanceFormat = 1024;\nvar LuminanceAlphaFormat = 1025;\nvar RGBEFormat = RGBAFormat;\nvar DepthFormat = 1026;\nvar DepthStencilFormat = 1027;\nvar RGB_S3TC_DXT1_Format = 33776;\nvar RGBA_S3TC_DXT1_Format = 33777;\nvar RGBA_S3TC_DXT3_Format = 33778;\nvar RGBA_S3TC_DXT5_Format = 33779;\nvar RGB_PVRTC_4BPPV1_Format = 35840;\nvar RGB_PVRTC_2BPPV1_Format = 35841;\nvar RGBA_PVRTC_4BPPV1_Format = 35842;\nvar RGBA_PVRTC_2BPPV1_Format = 35843;\nvar RGB_ETC1_Format = 36196;\nvar RGBA_ASTC_4x4_Format = 37808;\nvar RGBA_ASTC_5x4_Format = 37809;\nvar RGBA_ASTC_5x5_Format = 37810;\nvar RGBA_ASTC_6x5_Format = 37811;\nvar RGBA_ASTC_6x6_Format = 37812;\nvar RGBA_ASTC_8x5_Format = 37813;\nvar RGBA_ASTC_8x6_Format = 37814;\nvar RGBA_ASTC_8x8_Format = 37815;\nvar RGBA_ASTC_10x5_Format = 37816;\nvar RGBA_ASTC_10x6_Format = 37817;\nvar RGBA_ASTC_10x8_Format = 37818;\nvar RGBA_ASTC_10x10_Format = 37819;\nvar RGBA_ASTC_12x10_Format = 37820;\nvar RGBA_ASTC_12x12_Format = 37821;\nvar LoopOnce = 2200;\nvar LoopRepeat = 2201;\nvar LoopPingPong = 2202;\nvar InterpolateDiscrete = 2300;\nvar InterpolateLinear = 2301;\nvar InterpolateSmooth = 2302;\nvar ZeroCurvatureEnding = 2400;\nvar ZeroSlopeEnding = 2401;\nvar WrapAroundEnding = 2402;\nvar TrianglesDrawMode = 0;\nvar TriangleStripDrawMode = 1;\nvar TriangleFanDrawMode = 2;\nvar LinearEncoding = 3000;\nvar sRGBEncoding = 3001;\nvar GammaEncoding = 3007;\nvar RGBEEncoding = 3002;\nvar LogLuvEncoding = 3003;\nvar RGBM7Encoding = 3004;\nvar RGBM16Encoding = 3005;\nvar RGBDEncoding = 3006;\nvar BasicDepthPacking = 3200;\nvar RGBADepthPacking = 3201;\nvar TangentSpaceNormalMap = 0;\nvar ObjectSpaceNormalMap = 1;\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar _Math = {\n\n\tDEG2RAD: Math.PI / 180,\n\tRAD2DEG: 180 / Math.PI,\n\n\tgenerateUUID: ( function () {\n\n\t\t// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\n\n\t\tvar lut = [];\n\n\t\tfor ( var i = 0; i < 256; i ++ ) {\n\n\t\t\tlut[ i ] = ( i < 16 ? '0' : '' ) + ( i ).toString( 16 );\n\n\t\t}\n\n\t\treturn function generateUUID() {\n\n\t\t\tvar d0 = Math.random() * 0xffffffff | 0;\n\t\t\tvar d1 = Math.random() * 0xffffffff | 0;\n\t\t\tvar d2 = Math.random() * 0xffffffff | 0;\n\t\t\tvar d3 = Math.random() * 0xffffffff | 0;\n\t\t\tvar uuid = lut[ d0 & 0xff ] + lut[ d0 >> 8 & 0xff ] + lut[ d0 >> 16 & 0xff ] + lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t\tlut[ d1 & 0xff ] + lut[ d1 >> 8 & 0xff ] + '-' + lut[ d1 >> 16 & 0x0f | 0x40 ] + lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t\tlut[ d2 & 0x3f | 0x80 ] + lut[ d2 >> 8 & 0xff ] + '-' + lut[ d2 >> 16 & 0xff ] + lut[ d2 >> 24 & 0xff ] +\n\t\t\t\tlut[ d3 & 0xff ] + lut[ d3 >> 8 & 0xff ] + lut[ d3 >> 16 & 0xff ] + lut[ d3 >> 24 & 0xff ];\n\n\t\t\t// .toUpperCase() here flattens concatenated strings to save heap memory space.\n\t\t\treturn uuid.toUpperCase();\n\n\t\t};\n\n\t} )(),\n\n\tclamp: function ( value, min, max ) {\n\n\t\treturn Math.max( min, Math.min( max, value ) );\n\n\t},\n\n\t// compute euclidian modulo of m % n\n\t// https://en.wikipedia.org/wiki/Modulo_operation\n\n\teuclideanModulo: function ( n, m ) {\n\n\t\treturn ( ( n % m ) + m ) % m;\n\n\t},\n\n\t// Linear mapping from range <a1, a2> to range <b1, b2>\n\n\tmapLinear: function ( x, a1, a2, b1, b2 ) {\n\n\t\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n\t},\n\n\t// https://en.wikipedia.org/wiki/Linear_interpolation\n\n\tlerp: function ( x, y, t ) {\n\n\t\treturn ( 1 - t ) * x + t * y;\n\n\t},\n\n\t// http://en.wikipedia.org/wiki/Smoothstep\n\n\tsmoothstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * ( 3 - 2 * x );\n\n\t},\n\n\tsmootherstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n\t},\n\n\t// Random integer from <low, high> interval\n\n\trandInt: function ( low, high ) {\n\n\t\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n\t},\n\n\t// Random float from <low, high> interval\n\n\trandFloat: function ( low, high ) {\n\n\t\treturn low + Math.random() * ( high - low );\n\n\t},\n\n\t// Random float from <-range/2, range/2> interval\n\n\trandFloatSpread: function ( range ) {\n\n\t\treturn range * ( 0.5 - Math.random() );\n\n\t},\n\n\tdegToRad: function ( degrees ) {\n\n\t\treturn degrees * _Math.DEG2RAD;\n\n\t},\n\n\tradToDeg: function ( radians ) {\n\n\t\treturn radians * _Math.RAD2DEG;\n\n\t},\n\n\tisPowerOfTwo: function ( value ) {\n\n\t\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n\t},\n\n\tceilPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n\t},\n\n\tfloorPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author philogb / http://blog.thejit.org/\n * @author egraether / http://egraether.com/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n */\n\nfunction Vector2( x, y ) {\n\n\tthis.x = x || 0;\n\tthis.y = y || 0;\n\n}\n\nObject.defineProperties( Vector2.prototype, {\n\n\t\"width\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.x = value;\n\n\t\t}\n\n\t},\n\n\t\"height\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.y = value;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Vector2.prototype, {\n\n\tisVector2: true,\n\n\tset: function ( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tdivide: function ( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tvar x = this.x, y = this.y;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\n\n\t\treturn this;\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function () {\n\n\t\tvar min = new Vector2();\n\t\tvar max = new Vector2();\n\n\t\treturn function clampScalar( minVal, maxVal ) {\n\n\t\t\tmin.set( minVal, minVal );\n\t\t\tmax.set( maxVal, maxVal );\n\n\t\t\treturn this.clamp( min, max );\n\n\t\t};\n\n\t}(),\n\n\tclampLength: function ( min, max ) {\n\n\t\tvar length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tangle: function () {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tvar angle = Math.atan2( this.y, this.x );\n\n\t\tif ( angle < 0 ) angle += 2 * Math.PI;\n\n\t\treturn angle;\n\n\t},\n\n\tdistanceTo: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( v ) {\n\n\t\tvar dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t},\n\n\tmanhattanDistanceTo: function ( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\n\t\treturn this;\n\n\t},\n\n\trotateAround: function ( center, angle ) {\n\n\t\tvar c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tvar x = this.x - center.x;\n\t\tvar y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author philogb / http://blog.thejit.org/\n * @author jordi_ros / http://plattsoft.com\n * @author D1plo1d / http://github.com/D1plo1d\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author timknip / http://www.floorplanner.com/\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Matrix4() {\n\n\tthis.elements = [\n\n\t\t1, 0, 0, 0,\n\t\t0, 1, 0, 0,\n\t\t0, 0, 1, 0,\n\t\t0, 0, 0, 1\n\n\t];\n\n\tif ( arguments.length > 0 ) {\n\n\t\tconsole.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' );\n\n\t}\n\n}\n\nObject.assign( Matrix4.prototype, {\n\n\tisMatrix4: true,\n\n\tset: function ( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t},\n\n\tcopy: function ( m ) {\n\n\t\tvar te = this.elements;\n\t\tvar me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\n\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\n\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\n\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\n\n\t\treturn this;\n\n\t},\n\n\tcopyPosition: function ( m ) {\n\n\t\tvar te = this.elements, me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\textractBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t},\n\n\tmakeBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\textractRotation: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function extractRotation( m ) {\n\n\t\t\t// this method does not support reflection matrices\n\n\t\t\tvar te = this.elements;\n\t\t\tvar me = m.elements;\n\n\t\t\tvar scaleX = 1 / v1.setFromMatrixColumn( m, 0 ).length();\n\t\t\tvar scaleY = 1 / v1.setFromMatrixColumn( m, 1 ).length();\n\t\t\tvar scaleZ = 1 / v1.setFromMatrixColumn( m, 2 ).length();\n\n\t\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\t\t\tte[ 3 ] = 0;\n\n\t\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\t\t\tte[ 7 ] = 0;\n\n\t\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\t\t\tte[ 11 ] = 0;\n\n\t\t\tte[ 12 ] = 0;\n\t\t\tte[ 13 ] = 0;\n\t\t\tte[ 14 ] = 0;\n\t\t\tte[ 15 ] = 1;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tmakeRotationFromEuler: function ( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tvar te = this.elements;\n\n\t\tvar x = euler.x, y = euler.y, z = euler.z;\n\t\tvar a = Math.cos( x ), b = Math.sin( x );\n\t\tvar c = Math.cos( y ), d = Math.sin( y );\n\t\tvar e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tvar ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tvar ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tvar ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tvar ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tvar ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tvar ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// bottom row\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// last column\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationFromQuaternion: function () {\n\n\t\tvar zero = new Vector3( 0, 0, 0 );\n\t\tvar one = new Vector3( 1, 1, 1 );\n\n\t\treturn function makeRotationFromQuaternion( q ) {\n\n\t\t\treturn this.compose( zero, q, one );\n\n\t\t};\n\n\t}(),\n\n\tlookAt: function () {\n\n\t\tvar x = new Vector3();\n\t\tvar y = new Vector3();\n\t\tvar z = new Vector3();\n\n\t\treturn function lookAt( eye, target, up ) {\n\n\t\t\tvar te = this.elements;\n\n\t\t\tz.subVectors( eye, target );\n\n\t\t\tif ( z.lengthSq() === 0 ) {\n\n\t\t\t\t// eye and target are in the same position\n\n\t\t\t\tz.z = 1;\n\n\t\t\t}\n\n\t\t\tz.normalize();\n\t\t\tx.crossVectors( up, z );\n\n\t\t\tif ( x.lengthSq() === 0 ) {\n\n\t\t\t\t// up and z are parallel\n\n\t\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t\tz.x += 0.0001;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz.z += 0.0001;\n\n\t\t\t\t}\n\n\t\t\t\tz.normalize();\n\t\t\t\tx.crossVectors( up, z );\n\n\t\t\t}\n\n\t\t\tx.normalize();\n\t\t\ty.crossVectors( z, x );\n\n\t\t\tte[ 0 ] = x.x; te[ 4 ] = y.x; te[ 8 ] = z.x;\n\t\t\tte[ 1 ] = x.y; te[ 5 ] = y.y; te[ 9 ] = z.y;\n\t\t\tte[ 2 ] = x.z; te[ 6 ] = y.z; te[ 10 ] = z.z;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tmultiply: function ( m, n ) {\n\n\t\tif ( n !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' );\n\t\t\treturn this.multiplyMatrices( m, n );\n\n\t\t}\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t},\n\n\tpremultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t},\n\n\tmultiplyMatrices: function ( a, b ) {\n\n\t\tvar ae = a.elements;\n\t\tvar be = b.elements;\n\t\tvar te = this.elements;\n\n\t\tvar a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tvar a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tvar a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tvar a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tvar b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tvar b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tvar b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tvar b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t},\n\n\tapplyToBufferAttribute: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function applyToBufferAttribute( attribute ) {\n\n\t\t\tfor ( var i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\t\tv1.x = attribute.getX( i );\n\t\t\t\tv1.y = attribute.getY( i );\n\t\t\t\tv1.z = attribute.getZ( i );\n\n\t\t\t\tv1.applyMatrix4( this );\n\n\t\t\t\tattribute.setXYZ( i, v1.x, v1.y, v1.z );\n\n\t\t\t}\n\n\t\t\treturn attribute;\n\n\t\t};\n\n\t}(),\n\n\tdeterminant: function () {\n\n\t\tvar te = this.elements;\n\n\t\tvar n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tvar n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tvar n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tvar n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t},\n\n\ttranspose: function () {\n\n\t\tvar te = this.elements;\n\t\tvar tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t},\n\n\tsetPosition: function ( v ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 12 ] = v.x;\n\t\tte[ 13 ] = v.y;\n\t\tte[ 14 ] = v.z;\n\n\t\treturn this;\n\n\t},\n\n\tgetInverse: function ( m, throwOnDegenerate ) {\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tvar te = this.elements,\n\t\t\tme = m.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ], n41 = me[ 3 ],\n\t\t\tn12 = me[ 4 ], n22 = me[ 5 ], n32 = me[ 6 ], n42 = me[ 7 ],\n\t\t\tn13 = me[ 8 ], n23 = me[ 9 ], n33 = me[ 10 ], n43 = me[ 11 ],\n\t\t\tn14 = me[ 12 ], n24 = me[ 13 ], n34 = me[ 14 ], n44 = me[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tvar det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) {\n\n\t\t\tvar msg = \"THREE.Matrix4: .getInverse() can't invert matrix, determinant is 0\";\n\n\t\t\tif ( throwOnDegenerate === true ) {\n\n\t\t\t\tthrow new Error( msg );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( msg );\n\n\t\t\t}\n\n\t\t\treturn this.identity();\n\n\t\t}\n\n\t\tvar detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( v ) {\n\n\t\tvar te = this.elements;\n\t\tvar x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t},\n\n\tgetMaxScaleOnAxis: function () {\n\n\t\tvar te = this.elements;\n\n\t\tvar scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tvar scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tvar scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t},\n\n\tmakeTranslation: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, x,\n\t\t\t0, 1, 0, y,\n\t\t\t0, 0, 1, z,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationX: function ( theta ) {\n\n\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationY: function ( theta ) {\n\n\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationZ: function ( theta ) {\n\n\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationAxis: function ( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tvar c = Math.cos( angle );\n\t\tvar s = Math.sin( angle );\n\t\tvar t = 1 - c;\n\t\tvar x = axis.x, y = axis.y, z = axis.z;\n\t\tvar tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\t return this;\n\n\t},\n\n\tmakeScale: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeShear: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, y, z, 0,\n\t\t\tx, 1, z, 0,\n\t\t\tx, y, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tcompose: function ( position, quaternion, scale ) {\n\n\t\tvar te = this.elements;\n\n\t\tvar x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n\t\tvar x2 = x + x,\ty2 = y + y, z2 = z + z;\n\t\tvar xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tvar yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tvar wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tvar sx = scale.x, sy = scale.y, sz = scale.z;\n\n\t        te[ 0 ] = ( 1 - ( yy + zz ) ) * sx;\n\t        te[ 1 ] = ( xy + wz ) * sx;\n\t        te[ 2 ] = ( xz - wy ) * sx;\n\t        te[ 3 ] = 0;\n\n\t        te[ 4 ] = ( xy - wz ) * sy;\n\t        te[ 5 ] = ( 1 - ( xx + zz ) ) * sy;\n\t        te[ 6 ] = ( yz + wx ) * sy;\n\t        te[ 7 ] = 0;\n\n\t        te[ 8 ] = ( xz + wy ) * sz;\n\t        te[ 9 ] = ( yz - wx ) * sz;\n\t        te[ 10 ] = ( 1 - ( xx + yy ) ) * sz;\n\t        te[ 11 ] = 0;\n\n\t        te[ 12 ] = position.x;\n\t        te[ 13 ] = position.y;\n\t        te[ 14 ] = position.z;\n\t        te[ 15 ] = 1;\n\n\t        return this;\n\n\t},\n\n\tdecompose: function () {\n\n\t\tvar vector = new Vector3();\n\t\tvar matrix = new Matrix4();\n\n\t\treturn function decompose( position, quaternion, scale ) {\n\n\t\t\tvar te = this.elements;\n\n\t\t\tvar sx = vector.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\t\tvar sy = vector.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\t\tvar sz = vector.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t\t// if determine is negative, we need to invert one scale\n\t\t\tvar det = this.determinant();\n\t\t\tif ( det < 0 ) sx = - sx;\n\n\t\t\tposition.x = te[ 12 ];\n\t\t\tposition.y = te[ 13 ];\n\t\t\tposition.z = te[ 14 ];\n\n\t\t\t// scale the rotation part\n\t\t\tmatrix.copy( this );\n\n\t\t\tvar invSX = 1 / sx;\n\t\t\tvar invSY = 1 / sy;\n\t\t\tvar invSZ = 1 / sz;\n\n\t\t\tmatrix.elements[ 0 ] *= invSX;\n\t\t\tmatrix.elements[ 1 ] *= invSX;\n\t\t\tmatrix.elements[ 2 ] *= invSX;\n\n\t\t\tmatrix.elements[ 4 ] *= invSY;\n\t\t\tmatrix.elements[ 5 ] *= invSY;\n\t\t\tmatrix.elements[ 6 ] *= invSY;\n\n\t\t\tmatrix.elements[ 8 ] *= invSZ;\n\t\t\tmatrix.elements[ 9 ] *= invSZ;\n\t\t\tmatrix.elements[ 10 ] *= invSZ;\n\n\t\t\tquaternion.setFromRotationMatrix( matrix );\n\n\t\t\tscale.x = sx;\n\t\t\tscale.y = sy;\n\t\t\tscale.z = sz;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tmakePerspective: function ( left, right, top, bottom, near, far ) {\n\n\t\tif ( far === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.' );\n\n\t\t}\n\n\t\tvar te = this.elements;\n\t\tvar x = 2 * near / ( right - left );\n\t\tvar y = 2 * near / ( top - bottom );\n\n\t\tvar a = ( right + left ) / ( right - left );\n\t\tvar b = ( top + bottom ) / ( top - bottom );\n\t\tvar c = - ( far + near ) / ( far - near );\n\t\tvar d = - 2 * far * near / ( far - near );\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a;\tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b;\tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c;\tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t},\n\n\tmakeOrthographic: function ( left, right, top, bottom, near, far ) {\n\n\t\tvar te = this.elements;\n\t\tvar w = 1.0 / ( right - left );\n\t\tvar h = 1.0 / ( top - bottom );\n\t\tvar p = 1.0 / ( far - near );\n\n\t\tvar x = ( right + left ) * w;\n\t\tvar y = ( top + bottom ) * h;\n\t\tvar z = ( far + near ) * p;\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\tte[ 8 ] = 0;\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0;\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = - 2 * p;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = 0;\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( matrix ) {\n\n\t\tvar te = this.elements;\n\t\tvar me = matrix.elements;\n\n\t\tfor ( var i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tfor ( var i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tvar te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n */\n\nfunction Quaternion( x, y, z, w ) {\n\n\tthis._x = x || 0;\n\tthis._y = y || 0;\n\tthis._z = z || 0;\n\tthis._w = ( w !== undefined ) ? w : 1;\n\n}\n\nObject.assign( Quaternion, {\n\n\tslerp: function ( qa, qb, qm, t ) {\n\n\t\treturn qm.copy( qa ).slerp( qb, t );\n\n\t},\n\n\tslerpFlat: function ( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tvar x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ],\n\n\t\t\tx1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tvar s = 1 - t,\n\n\t\t\t\tcos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tvar sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tvar tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tvar f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t}\n\n} );\n\nObject.defineProperties( Quaternion.prototype, {\n\n\tx: {\n\n\t\tget: function () {\n\n\t\t\treturn this._x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._x = value;\n\t\t\tthis.onChangeCallback();\n\n\t\t}\n\n\t},\n\n\ty: {\n\n\t\tget: function () {\n\n\t\t\treturn this._y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._y = value;\n\t\t\tthis.onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tz: {\n\n\t\tget: function () {\n\n\t\t\treturn this._z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._z = value;\n\t\t\tthis.onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tw: {\n\n\t\tget: function () {\n\n\t\t\treturn this._w;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._w = value;\n\t\t\tthis.onChangeCallback();\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Quaternion.prototype, {\n\n\tset: function ( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t},\n\n\tcopy: function ( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromEuler: function ( euler, update ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tthrow new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tvar x = euler._x, y = euler._y, z = euler._z, order = euler.order;\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tvar cos = Math.cos;\n\t\tvar sin = Math.sin;\n\n\t\tvar c1 = cos( x / 2 );\n\t\tvar c2 = cos( y / 2 );\n\t\tvar c3 = cos( z / 2 );\n\n\t\tvar s1 = sin( x / 2 );\n\t\tvar s2 = sin( y / 2 );\n\t\tvar s3 = sin( z / 2 );\n\n\t\tif ( order === 'XYZ' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\n\t\t} else if ( order === 'YXZ' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\n\t\t} else if ( order === 'ZXY' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\n\t\t} else if ( order === 'ZYX' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\n\t\t} else if ( order === 'YZX' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\n\t\t} else if ( order === 'XZY' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\n\t\t}\n\n\t\tif ( update !== false ) this.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromAxisAngle: function ( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\n\n\t\tvar halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromRotationMatrix: function ( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tvar te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33,\n\t\t\ts;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\ts = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\ts = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\ts = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\ts = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromUnitVectors: function () {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tvar v1 = new Vector3();\n\t\tvar r;\n\n\t\tvar EPS = 0.000001;\n\n\t\treturn function setFromUnitVectors( vFrom, vTo ) {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\n\t\t\tr = vFrom.dot( vTo ) + 1;\n\n\t\t\tif ( r < EPS ) {\n\n\t\t\t\tr = 0;\n\n\t\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\t\tv1.set( - vFrom.y, vFrom.x, 0 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tv1.set( 0, - vFrom.z, vFrom.y );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tv1.crossVectors( vFrom, vTo );\n\n\t\t\t}\n\n\t\t\tthis._x = v1.x;\n\t\t\tthis._y = v1.y;\n\t\t\tthis._z = v1.z;\n\t\t\tthis._w = r;\n\n\t\t\treturn this.normalize();\n\n\t\t};\n\n\t}(),\n\n\tinverse: function () {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t},\n\n\tconjugate: function () {\n\n\t\tthis._x *= - 1;\n\t\tthis._y *= - 1;\n\t\tthis._z *= - 1;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t},\n\n\tnormalize: function () {\n\n\t\tvar l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( q, p ) {\n\n\t\tif ( p !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' );\n\t\t\treturn this.multiplyQuaternions( q, p );\n\n\t\t}\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t},\n\n\tpremultiply: function ( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t},\n\n\tmultiplyQuaternions: function ( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tvar qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tvar qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tslerp: function ( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tvar x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tvar cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvar sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\n\n\t\t\tvar s = 1 - t;\n\t\t\tthis._w = s * w + t * this._w;\n\t\t\tthis._x = s * x + t * this._x;\n\t\t\tthis._y = s * y + t * this._y;\n\t\t\tthis._z = s * z + t * this._z;\n\n\t\t\treturn this.normalize();\n\n\t\t}\n\n\t\tvar sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\n\t\tvar halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tvar ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t},\n\n\tonChange: function ( callback ) {\n\n\t\tthis.onChangeCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\tonChangeCallback: function () {}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author kile / http://kile.stravaganza.org/\n * @author philogb / http://blog.thejit.org/\n * @author mikael emtinger / http://gomo.se/\n * @author egraether / http://egraether.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Vector3( x, y, z ) {\n\n\tthis.x = x || 0;\n\tthis.y = y || 0;\n\tthis.z = z || 0;\n\n}\n\nObject.assign( Vector3.prototype, {\n\n\tisVector3: true,\n\n\tset: function ( x, y, z ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' );\n\t\t\treturn this.multiplyVectors( v, w );\n\n\t\t}\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyVectors: function ( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t},\n\n\tapplyEuler: function () {\n\n\t\tvar quaternion = new Quaternion();\n\n\t\treturn function applyEuler( euler ) {\n\n\t\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\t\tconsole.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t\t}\n\n\t\t\treturn this.applyQuaternion( quaternion.setFromEuler( euler ) );\n\n\t\t};\n\n\t}(),\n\n\tapplyAxisAngle: function () {\n\n\t\tvar quaternion = new Quaternion();\n\n\t\treturn function applyAxisAngle( axis, angle ) {\n\n\t\t\treturn this.applyQuaternion( quaternion.setFromAxisAngle( axis, angle ) );\n\n\t\t};\n\n\t}(),\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\n\t\tvar w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\n\n\t\treturn this;\n\n\t},\n\n\tapplyQuaternion: function ( q ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// calculate quat * vector\n\n\t\tvar ix = qw * x + qy * z - qz * y;\n\t\tvar iy = qw * y + qz * x - qx * z;\n\t\tvar iz = qw * z + qx * y - qy * x;\n\t\tvar iw = - qx * x - qy * y - qz * z;\n\n\t\t// calculate result * inverse quat\n\n\t\tthis.x = ix * qw + iw * - qx + iy * - qz - iz * - qy;\n\t\tthis.y = iy * qw + iw * - qy + iz * - qx - ix * - qz;\n\t\tthis.z = iz * qw + iw * - qz + ix * - qy - iy * - qx;\n\n\t\treturn this;\n\n\t},\n\n\tproject: function () {\n\n\t\tvar matrix = new Matrix4();\n\n\t\treturn function project( camera ) {\n\n\t\t\tmatrix.multiplyMatrices( camera.projectionMatrix, matrix.getInverse( camera.matrixWorld ) );\n\t\t\treturn this.applyMatrix4( matrix );\n\n\t\t};\n\n\t}(),\n\n\tunproject: function () {\n\n\t\tvar matrix = new Matrix4();\n\n\t\treturn function unproject( camera ) {\n\n\t\t\tmatrix.multiplyMatrices( camera.matrixWorld, matrix.getInverse( camera.projectionMatrix ) );\n\t\t\treturn this.applyMatrix4( matrix );\n\n\t\t};\n\n\t}(),\n\n\ttransformDirection: function ( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t},\n\n\tdivide: function ( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function () {\n\n\t\tvar min = new Vector3();\n\t\tvar max = new Vector3();\n\n\t\treturn function clampScalar( minVal, maxVal ) {\n\n\t\t\tmin.set( minVal, minVal, minVal );\n\t\t\tmax.set( maxVal, maxVal, maxVal );\n\n\t\t\treturn this.clamp( min, max );\n\n\t\t};\n\n\t}(),\n\n\tclampLength: function ( min, max ) {\n\n\t\tvar length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t},\n\n\t// TODO lengthSquared?\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t},\n\n\tcross: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' );\n\t\t\treturn this.crossVectors( v, w );\n\n\t\t}\n\n\t\treturn this.crossVectors( this, v );\n\n\t},\n\n\tcrossVectors: function ( a, b ) {\n\n\t\tvar ax = a.x, ay = a.y, az = a.z;\n\t\tvar bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t},\n\n\tprojectOnVector: function ( vector ) {\n\n\t\tvar scalar = vector.dot( this ) / vector.lengthSq();\n\n\t\treturn this.copy( vector ).multiplyScalar( scalar );\n\n\t},\n\n\tprojectOnPlane: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function projectOnPlane( planeNormal ) {\n\n\t\t\tv1.copy( this ).projectOnVector( planeNormal );\n\n\t\t\treturn this.sub( v1 );\n\n\t\t};\n\n\t}(),\n\n\treflect: function () {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function reflect( normal ) {\n\n\t\t\treturn this.sub( v1.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t\t};\n\n\t}(),\n\n\tangleTo: function ( v ) {\n\n\t\tvar theta = this.dot( v ) / ( Math.sqrt( this.lengthSq() * v.lengthSq() ) );\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( _Math.clamp( theta, - 1, 1 ) );\n\n\t},\n\n\tdistanceTo: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( v ) {\n\n\t\tvar dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t},\n\n\tmanhattanDistanceTo: function ( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t},\n\n\tsetFromSpherical: function ( s ) {\n\n\t\tvar sinPhiRadius = Math.sin( s.phi ) * s.radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( s.theta );\n\t\tthis.y = Math.cos( s.phi ) * s.radius;\n\t\tthis.z = sinPhiRadius * Math.cos( s.theta );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCylindrical: function ( c ) {\n\n\t\tthis.x = c.radius * Math.sin( c.theta );\n\t\tthis.y = c.y;\n\t\tthis.z = c.radius * Math.cos( c.theta );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixPosition: function ( m ) {\n\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixScale: function ( m ) {\n\n\t\tvar sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tvar sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tvar sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixColumn: function ( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n * @author tschw\n */\n\nfunction Matrix3() {\n\n\tthis.elements = [\n\n\t\t1, 0, 0,\n\t\t0, 1, 0,\n\t\t0, 0, 1\n\n\t];\n\n\tif ( arguments.length > 0 ) {\n\n\t\tconsole.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' );\n\n\t}\n\n}\n\nObject.assign( Matrix3.prototype, {\n\n\tisMatrix3: true,\n\n\tset: function ( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t},\n\n\tcopy: function ( m ) {\n\n\t\tvar te = this.elements;\n\t\tvar me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\n\t\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\n\t\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrix4: function ( m ) {\n\n\t\tvar me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tapplyToBufferAttribute: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function applyToBufferAttribute( attribute ) {\n\n\t\t\tfor ( var i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\t\tv1.x = attribute.getX( i );\n\t\t\t\tv1.y = attribute.getY( i );\n\t\t\t\tv1.z = attribute.getZ( i );\n\n\t\t\t\tv1.applyMatrix3( this );\n\n\t\t\t\tattribute.setXYZ( i, v1.x, v1.y, v1.z );\n\n\t\t\t}\n\n\t\t\treturn attribute;\n\n\t\t};\n\n\t}(),\n\n\tmultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t},\n\n\tpremultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t},\n\n\tmultiplyMatrices: function ( a, b ) {\n\n\t\tvar ae = a.elements;\n\t\tvar be = b.elements;\n\t\tvar te = this.elements;\n\n\t\tvar a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\n\t\tvar a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\n\t\tvar a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\n\n\t\tvar b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\n\t\tvar b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\n\t\tvar b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\n\t\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\n\t\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\n\t\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\n\t\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\n\t\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\n\t\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t},\n\n\tdeterminant: function () {\n\n\t\tvar te = this.elements;\n\n\t\tvar a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t},\n\n\tgetInverse: function ( matrix, throwOnDegenerate ) {\n\n\t\tif ( matrix && matrix.isMatrix4 ) {\n\n\t\t\tconsole.error( \"THREE.Matrix3: .getInverse() no longer takes a Matrix4 argument.\" );\n\n\t\t}\n\n\t\tvar me = matrix.elements,\n\t\t\tte = this.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ],\n\t\t\tn12 = me[ 3 ], n22 = me[ 4 ], n32 = me[ 5 ],\n\t\t\tn13 = me[ 6 ], n23 = me[ 7 ], n33 = me[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) {\n\n\t\t\tvar msg = \"THREE.Matrix3: .getInverse() can't invert matrix, determinant is 0\";\n\n\t\t\tif ( throwOnDegenerate === true ) {\n\n\t\t\t\tthrow new Error( msg );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( msg );\n\n\t\t\t}\n\n\t\t\treturn this.identity();\n\n\t\t}\n\n\t\tvar detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t},\n\n\ttranspose: function () {\n\n\t\tvar tmp, m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t},\n\n\tgetNormalMatrix: function ( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).getInverse( this ).transpose();\n\n\t},\n\n\ttransposeIntoArray: function ( r ) {\n\n\t\tvar m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\tsetUvTransform: function ( tx, ty, sx, sy, rotation, cx, cy ) {\n\n\t\tvar c = Math.cos( rotation );\n\t\tvar s = Math.sin( rotation );\n\n\t\tthis.set(\n\t\t\tsx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx,\n\t\t\t- sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty,\n\t\t\t0, 0, 1\n\t\t);\n\n\t},\n\n\tscale: function ( sx, sy ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] *= sx; te[ 3 ] *= sx; te[ 6 ] *= sx;\n\t\tte[ 1 ] *= sy; te[ 4 ] *= sy; te[ 7 ] *= sy;\n\n\t\treturn this;\n\n\t},\n\n\trotate: function ( theta ) {\n\n\t\tvar c = Math.cos( theta );\n\t\tvar s = Math.sin( theta );\n\n\t\tvar te = this.elements;\n\n\t\tvar a11 = te[ 0 ], a12 = te[ 3 ], a13 = te[ 6 ];\n\t\tvar a21 = te[ 1 ], a22 = te[ 4 ], a23 = te[ 7 ];\n\n\t\tte[ 0 ] = c * a11 + s * a21;\n\t\tte[ 3 ] = c * a12 + s * a22;\n\t\tte[ 6 ] = c * a13 + s * a23;\n\n\t\tte[ 1 ] = - s * a11 + c * a21;\n\t\tte[ 4 ] = - s * a12 + c * a22;\n\t\tte[ 7 ] = - s * a13 + c * a23;\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( tx, ty ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] += tx * te[ 2 ]; te[ 3 ] += tx * te[ 5 ]; te[ 6 ] += tx * te[ 8 ];\n\t\tte[ 1 ] += ty * te[ 2 ]; te[ 4 ] += ty * te[ 5 ]; te[ 7 ] += ty * te[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( matrix ) {\n\n\t\tvar te = this.elements;\n\t\tvar me = matrix.elements;\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tvar te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n */\n\nvar textureId = 0;\n\nfunction Texture( image, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\tObject.defineProperty( this, 'id', { value: textureId ++ } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\n\tthis.image = image !== undefined ? image : Texture.DEFAULT_IMAGE;\n\tthis.mipmaps = [];\n\n\tthis.mapping = mapping !== undefined ? mapping : Texture.DEFAULT_MAPPING;\n\n\tthis.wrapS = wrapS !== undefined ? wrapS : ClampToEdgeWrapping;\n\tthis.wrapT = wrapT !== undefined ? wrapT : ClampToEdgeWrapping;\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : LinearMipMapLinearFilter;\n\n\tthis.anisotropy = anisotropy !== undefined ? anisotropy : 1;\n\n\tthis.format = format !== undefined ? format : RGBAFormat;\n\tthis.type = type !== undefined ? type : UnsignedByteType;\n\n\tthis.offset = new Vector2( 0, 0 );\n\tthis.repeat = new Vector2( 1, 1 );\n\tthis.center = new Vector2( 0, 0 );\n\tthis.rotation = 0;\n\n\tthis.matrixAutoUpdate = true;\n\tthis.matrix = new Matrix3();\n\n\tthis.generateMipmaps = true;\n\tthis.premultiplyAlpha = false;\n\tthis.flipY = true;\n\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n\t// Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap.\n\t//\n\t// Also changing the encoding after already used by a Material will not automatically make the Material\n\t// update.  You need to explicitly call Material.needsUpdate to trigger it to recompile.\n\tthis.encoding = encoding !== undefined ? encoding : LinearEncoding;\n\n\tthis.version = 0;\n\tthis.onUpdate = null;\n\n}\n\nTexture.DEFAULT_IMAGE = undefined;\nTexture.DEFAULT_MAPPING = UVMapping;\n\nTexture.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Texture,\n\n\tisTexture: true,\n\n\tupdateMatrix: function () {\n\n\t\tthis.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.image = source.image;\n\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\tthis.mapping = source.mapping;\n\n\t\tthis.wrapS = source.wrapS;\n\t\tthis.wrapT = source.wrapT;\n\n\t\tthis.magFilter = source.magFilter;\n\t\tthis.minFilter = source.minFilter;\n\n\t\tthis.anisotropy = source.anisotropy;\n\n\t\tthis.format = source.format;\n\t\tthis.type = source.type;\n\n\t\tthis.offset.copy( source.offset );\n\t\tthis.repeat.copy( source.repeat );\n\t\tthis.center.copy( source.center );\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrix.copy( source.matrix );\n\n\t\tthis.generateMipmaps = source.generateMipmaps;\n\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\n\t\tthis.flipY = source.flipY;\n\t\tthis.unpackAlignment = source.unpackAlignment;\n\t\tthis.encoding = source.encoding;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.textures[ this.uuid ];\n\n\t\t}\n\n\t\tfunction getDataURL( image ) {\n\n\t\t\tvar canvas;\n\n\t\t\tif ( image instanceof HTMLCanvasElement ) {\n\n\t\t\t\tcanvas = image;\n\n\t\t\t} else {\n\n\t\t\t\tcanvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\t\t\t\tcanvas.width = image.width;\n\t\t\t\tcanvas.height = image.height;\n\n\t\t\t\tvar context = canvas.getContext( '2d' );\n\n\t\t\t\tif ( image instanceof ImageData ) {\n\n\t\t\t\t\tcontext.putImageData( image, 0, 0 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\n\n\t\t\t\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\n\n\t\t\t} else {\n\n\t\t\t\treturn canvas.toDataURL( 'image/png' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar output = {\n\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Texture',\n\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t},\n\n\t\t\tuuid: this.uuid,\n\t\t\tname: this.name,\n\n\t\t\tmapping: this.mapping,\n\n\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\n\t\t\toffset: [ this.offset.x, this.offset.y ],\n\t\t\tcenter: [ this.center.x, this.center.y ],\n\t\t\trotation: this.rotation,\n\n\t\t\twrap: [ this.wrapS, this.wrapT ],\n\n\t\t\tformat: this.format,\n\t\t\tminFilter: this.minFilter,\n\t\t\tmagFilter: this.magFilter,\n\t\t\tanisotropy: this.anisotropy,\n\n\t\t\tflipY: this.flipY\n\n\t\t};\n\n\t\tif ( this.image !== undefined ) {\n\n\t\t\t// TODO: Move to THREE.Image\n\n\t\t\tvar image = this.image;\n\n\t\t\tif ( image.uuid === undefined ) {\n\n\t\t\t\timage.uuid = _Math.generateUUID(); // UGH\n\n\t\t\t}\n\n\t\t\tif ( ! isRootObject && meta.images[ image.uuid ] === undefined ) {\n\n\t\t\t\tvar url;\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\t// process array of images e.g. CubeTexture\n\n\t\t\t\t\turl = [];\n\n\t\t\t\t\tfor ( var i = 0, l = image.length; i < l; i ++ ) {\n\n\t\t\t\t\t\turl.push( getDataURL( image[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// process single image\n\n\t\t\t\t\turl = getDataURL( image );\n\n\t\t\t\t}\n\n\t\t\t\tmeta.images[ image.uuid ] = {\n\t\t\t\t\tuuid: image.uuid,\n\t\t\t\t\turl: url\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\toutput.image = image.uuid;\n\n\t\t}\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.textures[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t},\n\n\ttransformUv: function ( uv ) {\n\n\t\tif ( this.mapping !== UVMapping ) return;\n\n\t\tuv.applyMatrix3( this.matrix );\n\n\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.flipY ) {\n\n\t\t\tuv.y = 1 - uv.y;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.defineProperty( Texture.prototype, \"needsUpdate\", {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\n/**\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author philogb / http://blog.thejit.org/\n * @author mikael emtinger / http://gomo.se/\n * @author egraether / http://egraether.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Vector4( x, y, z, w ) {\n\n\tthis.x = x || 0;\n\tthis.y = y || 0;\n\tthis.z = z || 0;\n\tthis.w = ( w !== undefined ) ? w : 1;\n\n}\n\nObject.assign( Vector4.prototype, {\n\n\tisVector4: true,\n\n\tset: function ( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetW: function ( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\t\tthis.w *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tsetAxisAngleFromQuaternion: function ( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tvar s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\tthis.x = 1;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t} else {\n\n\t\t\tthis.x = q.x / s;\n\t\t\tthis.y = q.y / s;\n\t\t\tthis.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetAxisAngleFromRotationMatrix: function ( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tvar angle, x, y, z,\t\t// variables for result\n\t\t\tepsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t     ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t     ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t     ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t     ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t     ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tvar xx = ( m11 + 1 ) / 2;\n\t\t\tvar yy = ( m22 + 1 ) / 2;\n\t\t\tvar zz = ( m33 + 1 ) / 2;\n\t\t\tvar xy = ( m12 + m21 ) / 4;\n\t\t\tvar xz = ( m13 + m31 ) / 4;\n\t\t\tvar yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tvar s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t                   ( m13 - m31 ) * ( m13 - m31 ) +\n\t\t                   ( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function () {\n\n\t\tvar min, max;\n\n\t\treturn function clampScalar( minVal, maxVal ) {\n\n\t\t\tif ( min === undefined ) {\n\n\t\t\t\tmin = new Vector4();\n\t\t\t\tmax = new Vector4();\n\n\t\t\t}\n\n\t\t\tmin.set( minVal, minVal, minVal, minVal );\n\t\t\tmax.set( maxVal, maxVal, maxVal, maxVal );\n\n\t\t\treturn this.clamp( min, max );\n\n\t\t};\n\n\t}(),\n\n\tclampLength: function ( min, max ) {\n\n\t\tvar length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\t\tthis.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\t\tthis.w = attribute.getW( index );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author szimek / https://github.com/szimek/\n * @author alteredq / http://alteredqualia.com/\n * @author Marius Kintel / https://github.com/kintel\n */\n\n/*\n In options, we can specify:\n * Texture parameters for an auto-generated target texture\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n*/\nfunction WebGLRenderTarget( width, height, options ) {\n\n\tthis.width = width;\n\tthis.height = height;\n\n\tthis.scissor = new Vector4( 0, 0, width, height );\n\tthis.scissorTest = false;\n\n\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\toptions = options || {};\n\n\tif ( options.minFilter === undefined ) options.minFilter = LinearFilter;\n\n\tthis.texture = new Texture( undefined, undefined, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\n\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : true;\n\n\tthis.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\n\tthis.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : true;\n\tthis.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;\n\n}\n\nWebGLRenderTarget.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: WebGLRenderTarget,\n\n\tisWebGLRenderTarget: true,\n\n\tsetSize: function ( width, height ) {\n\n\t\tif ( this.width !== width || this.height !== height ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.texture = source.texture.clone();\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\t\tthis.depthTexture = source.depthTexture;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com\n */\n\nfunction WebGLRenderTargetCube( width, height, options ) {\n\n\tWebGLRenderTarget.call( this, width, height, options );\n\n\tthis.activeCubeFace = 0; // PX 0, NX 1, PY 2, NY 3, PZ 4, NZ 5\n\tthis.activeMipMapLevel = 0;\n\n}\n\nWebGLRenderTargetCube.prototype = Object.create( WebGLRenderTarget.prototype );\nWebGLRenderTargetCube.prototype.constructor = WebGLRenderTargetCube;\n\nWebGLRenderTargetCube.prototype.isWebGLRenderTargetCube = true;\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction DataTexture( data, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { data: data, width: width, height: height };\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\tthis.unpackAlignment = 1;\n\n}\n\nDataTexture.prototype = Object.create( Texture.prototype );\nDataTexture.prototype.constructor = DataTexture;\n\nDataTexture.prototype.isDataTexture = true;\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Box3( min, max ) {\n\n\tthis.min = ( min !== undefined ) ? min : new Vector3( + Infinity, + Infinity, + Infinity );\n\tthis.max = ( max !== undefined ) ? max : new Vector3( - Infinity, - Infinity, - Infinity );\n\n}\n\nObject.assign( Box3.prototype, {\n\n\tisBox3: true,\n\n\tset: function ( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromArray: function ( array ) {\n\n\t\tvar minX = + Infinity;\n\t\tvar minY = + Infinity;\n\t\tvar minZ = + Infinity;\n\n\t\tvar maxX = - Infinity;\n\t\tvar maxY = - Infinity;\n\t\tvar maxZ = - Infinity;\n\n\t\tfor ( var i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\tvar x = array[ i ];\n\t\t\tvar y = array[ i + 1 ];\n\t\t\tvar z = array[ i + 2 ];\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromBufferAttribute: function ( attribute ) {\n\n\t\tvar minX = + Infinity;\n\t\tvar minY = + Infinity;\n\t\tvar minZ = + Infinity;\n\n\t\tvar maxX = - Infinity;\n\t\tvar maxY = - Infinity;\n\t\tvar maxZ = - Infinity;\n\n\t\tfor ( var i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\tvar x = attribute.getX( i );\n\t\t\tvar y = attribute.getY( i );\n\t\t\tvar z = attribute.getZ( i );\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCenterAndSize: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function setFromCenterAndSize( center, size ) {\n\n\t\t\tvar halfSize = v1.copy( size ).multiplyScalar( 0.5 );\n\n\t\t\tthis.min.copy( center ).sub( halfSize );\n\t\t\tthis.max.copy( center ).add( halfSize );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tsetFromObject: function ( object ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getCenter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t},\n\n\tgetSize: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getSize() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t},\n\n\texpandByPoint: function ( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t},\n\n\texpandByVector: function ( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t},\n\n\texpandByScalar: function ( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t},\n\n\texpandByObject: function () {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tvar scope, i, l;\n\n\t\tvar v1 = new Vector3();\n\n\t\tfunction traverse( node ) {\n\n\t\t\tvar geometry = node.geometry;\n\n\t\t\tif ( geometry !== undefined ) {\n\n\t\t\t\tif ( geometry.isGeometry ) {\n\n\t\t\t\t\tvar vertices = geometry.vertices;\n\n\t\t\t\t\tfor ( i = 0, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tv1.copy( vertices[ i ] );\n\t\t\t\t\t\tv1.applyMatrix4( node.matrixWorld );\n\n\t\t\t\t\t\tscope.expandByPoint( v1 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( geometry.isBufferGeometry ) {\n\n\t\t\t\t\tvar attribute = geometry.attributes.position;\n\n\t\t\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\t\t\tfor ( i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\t\t\t\t\tv1.fromBufferAttribute( attribute, i ).applyMatrix4( node.matrixWorld );\n\n\t\t\t\t\t\t\tscope.expandByPoint( v1 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn function expandByObject( object ) {\n\n\t\t\tscope = this;\n\n\t\t\tobject.updateMatrixWorld( true );\n\n\t\t\tobject.traverse( traverse );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ||\n\t\t\tpoint.z < this.min.z || point.z > this.max.z ? false : true;\n\n\t},\n\n\tcontainsBox: function ( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\n\t\t\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\n\n\t},\n\n\tgetParameter: function ( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getParameter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ||\n\t\t\tbox.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n\n\t},\n\n\tintersectsSphere: ( function () {\n\n\t\tvar closestPoint = new Vector3();\n\n\t\treturn function intersectsSphere( sphere ) {\n\n\t\t\t// Find the point on the AABB closest to the sphere center.\n\t\t\tthis.clampPoint( sphere.center, closestPoint );\n\n\t\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\t\treturn closestPoint.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t\t};\n\n\t} )(),\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tvar min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= plane.constant && max >= plane.constant );\n\n\t},\n\n\tintersectsTriangle: ( function () {\n\n\t\t// triangle centered vertices\n\t\tvar v0 = new Vector3();\n\t\tvar v1 = new Vector3();\n\t\tvar v2 = new Vector3();\n\n\t\t// triangle edge vectors\n\t\tvar f0 = new Vector3();\n\t\tvar f1 = new Vector3();\n\t\tvar f2 = new Vector3();\n\n\t\tvar testAxis = new Vector3();\n\n\t\tvar center = new Vector3();\n\t\tvar extents = new Vector3();\n\n\t\tvar triangleNormal = new Vector3();\n\n\t\tfunction satForAxes( axes ) {\n\n\t\t\tvar i, j;\n\n\t\t\tfor ( i = 0, j = axes.length - 3; i <= j; i += 3 ) {\n\n\t\t\t\ttestAxis.fromArray( axes, i );\n\t\t\t\t// project the aabb onto the seperating axis\n\t\t\t\tvar r = extents.x * Math.abs( testAxis.x ) + extents.y * Math.abs( testAxis.y ) + extents.z * Math.abs( testAxis.z );\n\t\t\t\t// project all 3 vertices of the triangle onto the seperating axis\n\t\t\t\tvar p0 = v0.dot( testAxis );\n\t\t\t\tvar p1 = v1.dot( testAxis );\n\t\t\t\tvar p2 = v2.dot( testAxis );\n\t\t\t\t// actual test, basically see if either of the most extreme of the triangle points intersects r\n\t\t\t\tif ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) {\n\n\t\t\t\t\t// points of the projected triangle are outside the projected half-length of the aabb\n\t\t\t\t\t// the axis is seperating and we can exit\n\t\t\t\t\treturn false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn function intersectsTriangle( triangle ) {\n\n\t\t\tif ( this.isEmpty() ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t\t// compute box center and extents\n\t\t\tthis.getCenter( center );\n\t\t\textents.subVectors( this.max, center );\n\n\t\t\t// translate triangle to aabb origin\n\t\t\tv0.subVectors( triangle.a, center );\n\t\t\tv1.subVectors( triangle.b, center );\n\t\t\tv2.subVectors( triangle.c, center );\n\n\t\t\t// compute edge vectors for triangle\n\t\t\tf0.subVectors( v1, v0 );\n\t\t\tf1.subVectors( v2, v1 );\n\t\t\tf2.subVectors( v0, v2 );\n\n\t\t\t// test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb\n\t\t\t// make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation\n\t\t\t// axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned)\n\t\t\tvar axes = [\n\t\t\t\t0, - f0.z, f0.y, 0, - f1.z, f1.y, 0, - f2.z, f2.y,\n\t\t\t\tf0.z, 0, - f0.x, f1.z, 0, - f1.x, f2.z, 0, - f2.x,\n\t\t\t\t- f0.y, f0.x, 0, - f1.y, f1.x, 0, - f2.y, f2.x, 0\n\t\t\t];\n\t\t\tif ( ! satForAxes( axes ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t\t// test 3 face normals from the aabb\n\t\t\taxes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n\t\t\tif ( ! satForAxes( axes ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t\t// finally testing the face normal of the triangle\n\t\t\t// use already existing triangle edge vectors here\n\t\t\ttriangleNormal.crossVectors( f0, f1 );\n\t\t\taxes = [ triangleNormal.x, triangleNormal.y, triangleNormal.z ];\n\t\t\treturn satForAxes( axes );\n\n\t\t};\n\n\t} )(),\n\n\tclampPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t},\n\n\tdistanceToPoint: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function distanceToPoint( point ) {\n\n\t\t\tvar clampedPoint = v1.copy( point ).clamp( this.min, this.max );\n\t\t\treturn clampedPoint.sub( point ).length();\n\n\t\t};\n\n\t}(),\n\n\tgetBoundingSphere: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function getBoundingSphere( target ) {\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Box3: .getBoundingSphere() target is now required' );\n\t\t\t\ttarget = new Sphere();\n\n\t\t\t}\n\n\t\t\tthis.getCenter( target.center );\n\n\t\t\ttarget.radius = this.getSize( v1 ).length() * 0.5;\n\n\t\t\treturn target;\n\n\t\t};\n\n\t}(),\n\n\tintersect: function ( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\t// ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t},\n\n\tunion: function ( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\t// transform of empty box is an empty box.\n\t\tif ( this.isEmpty( ) ) return this;\n\n\t\tvar m = matrix.elements;\n\n\t\tvar xax = m[ 0 ] * this.min.x, xay = m[ 1 ] * this.min.x, xaz = m[ 2 ] * this.min.x;\n\t\tvar xbx = m[ 0 ] * this.max.x, xby = m[ 1 ] * this.max.x, xbz = m[ 2 ] * this.max.x;\n\t\tvar yax = m[ 4 ] * this.min.y, yay = m[ 5 ] * this.min.y, yaz = m[ 6 ] * this.min.y;\n\t\tvar ybx = m[ 4 ] * this.max.y, yby = m[ 5 ] * this.max.y, ybz = m[ 6 ] * this.max.y;\n\t\tvar zax = m[ 8 ] * this.min.z, zay = m[ 9 ] * this.min.z, zaz = m[ 10 ] * this.min.z;\n\t\tvar zbx = m[ 8 ] * this.max.z, zby = m[ 9 ] * this.max.z, zbz = m[ 10 ] * this.max.z;\n\n\t\tthis.min.x = Math.min( xax, xbx ) + Math.min( yax, ybx ) + Math.min( zax, zbx ) + m[ 12 ];\n\t\tthis.min.y = Math.min( xay, xby ) + Math.min( yay, yby ) + Math.min( zay, zby ) + m[ 13 ];\n\t\tthis.min.z = Math.min( xaz, xbz ) + Math.min( yaz, ybz ) + Math.min( zaz, zbz ) + m[ 14 ];\n\t\tthis.max.x = Math.max( xax, xbx ) + Math.max( yax, ybx ) + Math.max( zax, zbx ) + m[ 12 ];\n\t\tthis.max.y = Math.max( xay, xby ) + Math.max( yay, yby ) + Math.max( zay, zby ) + m[ 13 ];\n\t\tthis.max.z = Math.max( xaz, xbz ) + Math.max( yaz, ybz ) + Math.max( zaz, zbz ) + m[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Sphere( center, radius ) {\n\n\tthis.center = ( center !== undefined ) ? center : new Vector3();\n\tthis.radius = ( radius !== undefined ) ? radius : 0;\n\n}\n\nObject.assign( Sphere.prototype, {\n\n\tset: function ( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function () {\n\n\t\tvar box = new Box3();\n\n\t\treturn function setFromPoints( points, optionalCenter ) {\n\n\t\t\tvar center = this.center;\n\n\t\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\t\tcenter.copy( optionalCenter );\n\n\t\t\t} else {\n\n\t\t\t\tbox.setFromPoints( points ).getCenter( center );\n\n\t\t\t}\n\n\t\t\tvar maxRadiusSq = 0;\n\n\t\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t\t}\n\n\t\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t},\n\n\tempty: function () {\n\n\t\treturn ( this.radius <= 0 );\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\tvar radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tvar deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Sphere: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\ttarget.sub( this.center ).normalize();\n\t\t\ttarget.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn target;\n\n\t},\n\n\tgetBoundingBox: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Sphere: .getBoundingBox() target is now required' );\n\t\t\ttarget = new Box3();\n\n\t\t}\n\n\t\ttarget.set( this.center, this.center );\n\t\ttarget.expandByScalar( this.radius );\n\n\t\treturn target;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Plane( normal, constant ) {\n\n\t// normal is assumed to be normalized\n\n\tthis.normal = ( normal !== undefined ) ? normal : new Vector3( 1, 0, 0 );\n\tthis.constant = ( constant !== undefined ) ? constant : 0;\n\n}\n\nObject.assign( Plane.prototype, {\n\n\tset: function ( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponents: function ( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromNormalAndCoplanarPoint: function ( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCoplanarPoints: function () {\n\n\t\tvar v1 = new Vector3();\n\t\tvar v2 = new Vector3();\n\n\t\treturn function setFromCoplanarPoints( a, b, c ) {\n\n\t\t\tvar normal = v1.subVectors( c, b ).cross( v2.subVectors( a, b ) ).normalize();\n\n\t\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t},\n\n\tnormalize: function () {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tvar inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t},\n\n\tdistanceToSphere: function ( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t},\n\n\tprojectPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .projectPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.distanceToPoint( point ) ).add( point );\n\n\t},\n\n\tintersectLine: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function intersectLine( line, target ) {\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Plane: .intersectLine() target is now required' );\n\t\t\t\ttarget = new Vector3();\n\n\t\t\t}\n\n\t\t\tvar direction = line.delta( v1 );\n\n\t\t\tvar denominator = this.normal.dot( direction );\n\n\t\t\tif ( denominator === 0 ) {\n\n\t\t\t\t// line is coplanar, return origin\n\t\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\t\treturn target.copy( line.start );\n\n\t\t\t\t}\n\n\t\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\t\treturn undefined;\n\n\t\t\t}\n\n\t\t\tvar t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\t\treturn undefined;\n\n\t\t\t}\n\n\t\t\treturn target.copy( direction ).multiplyScalar( t ).add( line.start );\n\n\t\t};\n\n\t}(),\n\n\tintersectsLine: function ( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tvar startSign = this.distanceToPoint( line.start );\n\t\tvar endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t},\n\n\tcoplanarPoint: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .coplanarPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t},\n\n\tapplyMatrix4: function () {\n\n\t\tvar v1 = new Vector3();\n\t\tvar m1 = new Matrix3();\n\n\t\treturn function applyMatrix4( matrix, optionalNormalMatrix ) {\n\n\t\t\tvar normalMatrix = optionalNormalMatrix || m1.getNormalMatrix( matrix );\n\n\t\t\tvar referencePoint = this.coplanarPoint( v1 ).applyMatrix4( matrix );\n\n\t\t\tvar normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author bhouston / http://clara.io\n */\n\nfunction Frustum( p0, p1, p2, p3, p4, p5 ) {\n\n\tthis.planes = [\n\n\t\t( p0 !== undefined ) ? p0 : new Plane(),\n\t\t( p1 !== undefined ) ? p1 : new Plane(),\n\t\t( p2 !== undefined ) ? p2 : new Plane(),\n\t\t( p3 !== undefined ) ? p3 : new Plane(),\n\t\t( p4 !== undefined ) ? p4 : new Plane(),\n\t\t( p5 !== undefined ) ? p5 : new Plane()\n\n\t];\n\n}\n\nObject.assign( Frustum.prototype, {\n\n\tset: function ( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tvar planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( frustum ) {\n\n\t\tvar planes = this.planes;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrix: function ( m ) {\n\n\t\tvar planes = this.planes;\n\t\tvar me = m.elements;\n\t\tvar me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tvar me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tvar me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tvar me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\treturn this;\n\n\t},\n\n\tintersectsObject: function () {\n\n\t\tvar sphere = new Sphere();\n\n\t\treturn function intersectsObject( object ) {\n\n\t\t\tvar geometry = object.geometry;\n\n\t\t\tif ( geometry.boundingSphere === null )\n\t\t\t\tgeometry.computeBoundingSphere();\n\n\t\t\tsphere.copy( geometry.boundingSphere )\n\t\t\t\t.applyMatrix4( object.matrixWorld );\n\n\t\t\treturn this.intersectsSphere( sphere );\n\n\t\t};\n\n\t}(),\n\n\tintersectsSprite: function () {\n\n\t\tvar sphere = new Sphere();\n\n\t\treturn function intersectsSprite( sprite ) {\n\n\t\t\tsphere.center.set( 0, 0, 0 );\n\t\t\tsphere.radius = 0.7071067811865476;\n\t\t\tsphere.applyMatrix4( sprite.matrixWorld );\n\n\t\t\treturn this.intersectsSphere( sphere );\n\n\t\t};\n\n\t}(),\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\tvar planes = this.planes;\n\t\tvar center = sphere.center;\n\t\tvar negRadius = - sphere.radius;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\tvar distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tintersectsBox: function () {\n\n\t\tvar p1 = new Vector3(),\n\t\t\tp2 = new Vector3();\n\n\t\treturn function intersectsBox( box ) {\n\n\t\t\tvar planes = this.planes;\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\tvar plane = planes[ i ];\n\n\t\t\t\tp1.x = plane.normal.x > 0 ? box.min.x : box.max.x;\n\t\t\t\tp2.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t\tp1.y = plane.normal.y > 0 ? box.min.y : box.max.y;\n\t\t\t\tp2.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t\tp1.z = plane.normal.z > 0 ? box.min.z : box.max.z;\n\t\t\t\tp2.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\t\tvar d1 = plane.distanceToPoint( p1 );\n\t\t\t\tvar d2 = plane.distanceToPoint( p2 );\n\n\t\t\t\t// if both outside plane, no intersection\n\n\t\t\t\tif ( d1 < 0 && d2 < 0 ) {\n\n\t\t\t\t\treturn false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t};\n\n\t}(),\n\n\tcontainsPoint: function ( point ) {\n\n\t\tvar planes = this.planes;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n} );\n\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\\n#endif\\n\";\n\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\\n\";\n\nvar alphatest_fragment = \"#ifdef ALPHATEST\\n\\tif ( diffuseColor.a < ALPHATEST ) discard;\\n#endif\\n\";\n\nvar aomap_fragment = \"#ifdef USE_AOMAP\\n\\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\\n\\treflectedLight.indirectDiffuse *= ambientOcclusion;\\n\\t#if defined( USE_ENVMAP ) && defined( PHYSICAL )\\n\\t\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\t\\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.specularRoughness );\\n\\t#endif\\n#endif\\n\";\n\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\\tuniform sampler2D aoMap;\\n\\tuniform float aoMapIntensity;\\n#endif\";\n\nvar begin_vertex = \"\\nvec3 transformed = vec3( position );\\n\";\n\nvar beginnormal_vertex = \"\\nvec3 objectNormal = vec3( normal );\\n\";\n\nvar bsdfs = \"float punctualLightIntensityToIrradianceFactor( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n\\tif( decayExponent > 0.0 ) {\\n#if defined ( PHYSICALLY_CORRECT_LIGHTS )\\n\\t\\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\\t\\tfloat maxDistanceCutoffFactor = pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\\t\\treturn distanceFalloff * maxDistanceCutoffFactor;\\n#else\\n\\t\\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\\n#endif\\n\\t}\\n\\treturn 1.0;\\n}\\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\\n\\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\\n\\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\\n\\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\\n}\\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\treturn 1.0 / ( gl * gv );\\n}\\nfloat G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\treturn 0.5 / max( gv + gl, EPSILON );\\n}\\nfloat D_GGX( const in float alpha, const in float dotNH ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\\n\\treturn RECIPROCAL_PI * a2 / pow2( denom );\\n}\\nvec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\\n\\tfloat dotNL = saturate( dot( geometry.normal, incidentLight.direction ) );\\n\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\\n\\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, dotLH );\\n\\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\tfloat D = D_GGX( alpha, dotNH );\\n\\treturn F * ( G * D );\\n}\\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\\n\\tconst float LUT_SIZE  = 64.0;\\n\\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\\n\\tconst float LUT_BIAS  = 0.5 / LUT_SIZE;\\n\\tfloat dotNV = saturate( dot( N, V ) );\\n\\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\\n\\tuv = uv * LUT_SCALE + LUT_BIAS;\\n\\treturn uv;\\n}\\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\\n\\tfloat l = length( f );\\n\\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\\n}\\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\\n\\tfloat x = dot( v1, v2 );\\n\\tfloat y = abs( x );\\n\\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\\n\\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\\n\\tfloat v = a / b;\\n\\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\\n\\treturn cross( v1, v2 ) * theta_sintheta;\\n}\\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\\n\\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\\n\\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\\n\\tvec3 lightNormal = cross( v1, v2 );\\n\\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\\n\\tvec3 T1, T2;\\n\\tT1 = normalize( V - N * dot( V, N ) );\\n\\tT2 = - cross( N, T1 );\\n\\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\\n\\tvec3 coords[ 4 ];\\n\\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\\n\\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\\n\\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\\n\\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\\n\\tcoords[ 0 ] = normalize( coords[ 0 ] );\\n\\tcoords[ 1 ] = normalize( coords[ 1 ] );\\n\\tcoords[ 2 ] = normalize( coords[ 2 ] );\\n\\tcoords[ 3 ] = normalize( coords[ 3 ] );\\n\\tvec3 vectorFormFactor = vec3( 0.0 );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\\n\\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\\n\\treturn vec3( result );\\n}\\nvec3 BRDF_Specular_GGX_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\\n\\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\\n\\tvec4 r = roughness * c0 + c1;\\n\\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\\n\\tvec2 AB = vec2( -1.04, 1.04 ) * a004 + r.zw;\\n\\treturn specularColor * AB.x + AB.y;\\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\";\n\nvar 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\\n\";\n\nvar clipping_planes_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvec4 plane;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\tplane = clippingPlanes[ i ];\\n\\t\\tif ( dot( vViewPosition, plane.xyz ) > plane.w ) discard;\\n\\t}\\n\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\tbool clipped = true;\\n\\t\\t#pragma unroll_loop\\n\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tclipped = ( dot( vViewPosition, plane.xyz ) > plane.w ) && clipped;\\n\\t\\t}\\n\\t\\tif ( clipped ) discard;\\n\\t#endif\\n#endif\\n\";\n\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\t#if ! defined( PHYSICAL ) && ! defined( PHONG )\\n\\t\\tvarying vec3 vViewPosition;\\n\\t#endif\\n\\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\\n\";\n\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n\";\n\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\\n\";\n\nvar color_fragment = \"#ifdef USE_COLOR\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\";\n\nvar color_pars_fragment = \"#ifdef USE_COLOR\\n\\tvarying vec3 vColor;\\n#endif\\n\";\n\nvar color_pars_vertex = \"#ifdef USE_COLOR\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_vertex = \"#ifdef USE_COLOR\\n\\tvColor.xyz = color.xyz;\\n#endif\";\n\nvar common = \"#define PI 3.14159265359\\n#define PI2 6.28318530718\\n#define PI_HALF 1.5707963267949\\n#define RECIPROCAL_PI 0.31830988618\\n#define RECIPROCAL_PI2 0.15915494\\n#define LOG2 1.442695\\n#define EPSILON 1e-6\\n#define saturate(a) clamp( a, 0.0, 1.0 )\\n#define whiteCompliment(a) ( 1.0 - saturate( a ) )\\nfloat pow2( const in float x ) { return x*x; }\\nfloat pow3( const in float x ) { return x*x*x; }\\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\\nhighp float rand( const in vec2 uv ) {\\n\\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\\n\\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\\n\\treturn fract(sin(sn) * c);\\n}\\nstruct IncidentLight {\\n\\tvec3 color;\\n\\tvec3 direction;\\n\\tbool visible;\\n};\\nstruct ReflectedLight {\\n\\tvec3 directDiffuse;\\n\\tvec3 directSpecular;\\n\\tvec3 indirectDiffuse;\\n\\tvec3 indirectSpecular;\\n};\\nstruct GeometricContext {\\n\\tvec3 position;\\n\\tvec3 normal;\\n\\tvec3 viewDir;\\n};\\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\\n}\\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\\n}\\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\tfloat distance = dot( planeNormal, point - pointOnPlane );\\n\\treturn - distance * planeNormal + point;\\n}\\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\treturn sign( dot( point - pointOnPlane, planeNormal ) );\\n}\\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\\n}\\nmat3 transposeMat3( const in mat3 m ) {\\n\\tmat3 tmp;\\n\\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\\n\\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\\n\\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\\n\\treturn tmp;\\n}\\nfloat linearToRelativeLuminance( const in vec3 color ) {\\n\\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\\n\\treturn dot( weights, color.rgb );\\n}\\n\";\n\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n#define cubeUV_textureSize (1024.0)\\nint getFaceFromDirection(vec3 direction) {\\n\\tvec3 absDirection = abs(direction);\\n\\tint face = -1;\\n\\tif( absDirection.x > absDirection.z ) {\\n\\t\\tif(absDirection.x > absDirection.y )\\n\\t\\t\\tface = direction.x > 0.0 ? 0 : 3;\\n\\t\\telse\\n\\t\\t\\tface = direction.y > 0.0 ? 1 : 4;\\n\\t}\\n\\telse {\\n\\t\\tif(absDirection.z > absDirection.y )\\n\\t\\t\\tface = direction.z > 0.0 ? 2 : 5;\\n\\t\\telse\\n\\t\\t\\tface = direction.y > 0.0 ? 1 : 4;\\n\\t}\\n\\treturn face;\\n}\\n#define cubeUV_maxLods1  (log2(cubeUV_textureSize*0.25) - 1.0)\\n#define cubeUV_rangeClamp (exp2((6.0 - 1.0) * 2.0))\\nvec2 MipLevelInfo( vec3 vec, float roughnessLevel, float roughness ) {\\n\\tfloat scale = exp2(cubeUV_maxLods1 - roughnessLevel);\\n\\tfloat dxRoughness = dFdx(roughness);\\n\\tfloat dyRoughness = dFdy(roughness);\\n\\tvec3 dx = dFdx( vec * scale * dxRoughness );\\n\\tvec3 dy = dFdy( vec * scale * dyRoughness );\\n\\tfloat d = max( dot( dx, dx ), dot( dy, dy ) );\\n\\td = clamp(d, 1.0, cubeUV_rangeClamp);\\n\\tfloat mipLevel = 0.5 * log2(d);\\n\\treturn vec2(floor(mipLevel), fract(mipLevel));\\n}\\n#define cubeUV_maxLods2 (log2(cubeUV_textureSize*0.25) - 2.0)\\n#define cubeUV_rcpTextureSize (1.0 / cubeUV_textureSize)\\nvec2 getCubeUV(vec3 direction, float roughnessLevel, float mipLevel) {\\n\\tmipLevel = roughnessLevel > cubeUV_maxLods2 - 3.0 ? 0.0 : mipLevel;\\n\\tfloat a = 16.0 * cubeUV_rcpTextureSize;\\n\\tvec2 exp2_packed = exp2( vec2( roughnessLevel, mipLevel ) );\\n\\tvec2 rcp_exp2_packed = vec2( 1.0 ) / exp2_packed;\\n\\tfloat powScale = exp2_packed.x * exp2_packed.y;\\n\\tfloat scale = rcp_exp2_packed.x * rcp_exp2_packed.y * 0.25;\\n\\tfloat mipOffset = 0.75*(1.0 - rcp_exp2_packed.y) * rcp_exp2_packed.x;\\n\\tbool bRes = mipLevel == 0.0;\\n\\tscale =  bRes && (scale < a) ? a : scale;\\n\\tvec3 r;\\n\\tvec2 offset;\\n\\tint face = getFaceFromDirection(direction);\\n\\tfloat rcpPowScale = 1.0 / powScale;\\n\\tif( face == 0) {\\n\\t\\tr = vec3(direction.x, -direction.z, direction.y);\\n\\t\\toffset = vec2(0.0+mipOffset,0.75 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\\n\\t}\\n\\telse if( face == 1) {\\n\\t\\tr = vec3(direction.y, direction.x, direction.z);\\n\\t\\toffset = vec2(scale+mipOffset, 0.75 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\\n\\t}\\n\\telse if( face == 2) {\\n\\t\\tr = vec3(direction.z, direction.x, direction.y);\\n\\t\\toffset = vec2(2.0*scale+mipOffset, 0.75 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\\n\\t}\\n\\telse if( face == 3) {\\n\\t\\tr = vec3(direction.x, direction.z, direction.y);\\n\\t\\toffset = vec2(0.0+mipOffset,0.5 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\\n\\t}\\n\\telse if( face == 4) {\\n\\t\\tr = vec3(direction.y, direction.x, -direction.z);\\n\\t\\toffset = vec2(scale+mipOffset, 0.5 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\\n\\t}\\n\\telse {\\n\\t\\tr = vec3(direction.z, -direction.x, direction.y);\\n\\t\\toffset = vec2(2.0*scale+mipOffset, 0.5 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\\n\\t}\\n\\tr = normalize(r);\\n\\tfloat texelOffset = 0.5 * cubeUV_rcpTextureSize;\\n\\tvec2 s = ( r.yz / abs( r.x ) + vec2( 1.0 ) ) * 0.5;\\n\\tvec2 base = offset + vec2( texelOffset );\\n\\treturn base + s * ( scale - 2.0 * texelOffset );\\n}\\n#define cubeUV_maxLods3 (log2(cubeUV_textureSize*0.25) - 3.0)\\nvec4 textureCubeUV(vec3 reflectedDirection, float roughness ) {\\n\\tfloat roughnessVal = roughness* cubeUV_maxLods3;\\n\\tfloat r1 = floor(roughnessVal);\\n\\tfloat r2 = r1 + 1.0;\\n\\tfloat t = fract(roughnessVal);\\n\\tvec2 mipInfo = MipLevelInfo(reflectedDirection, r1, roughness);\\n\\tfloat s = mipInfo.y;\\n\\tfloat level0 = mipInfo.x;\\n\\tfloat level1 = level0 + 1.0;\\n\\tlevel1 = level1 > 5.0 ? 5.0 : level1;\\n\\tlevel0 += min( floor( s + 0.5 ), 5.0 );\\n\\tvec2 uv_10 = getCubeUV(reflectedDirection, r1, level0);\\n\\tvec4 color10 = envMapTexelToLinear(texture2D(envMap, uv_10));\\n\\tvec2 uv_20 = getCubeUV(reflectedDirection, r2, level0);\\n\\tvec4 color20 = envMapTexelToLinear(texture2D(envMap, uv_20));\\n\\tvec4 result = mix(color10, color20, t);\\n\\treturn vec4(result.rgb, 1.0);\\n}\\n#endif\\n\";\n\nvar defaultnormal_vertex = \"vec3 transformedNormal = normalMatrix * objectNormal;\\n#ifdef FLIP_SIDED\\n\\ttransformedNormal = - transformedNormal;\\n#endif\\n\";\n\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\tuniform sampler2D displacementMap;\\n\\tuniform float displacementScale;\\n\\tuniform float displacementBias;\\n#endif\\n\";\n\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, uv ).x * displacementScale + displacementBias );\\n#endif\\n\";\n\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\\n\\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\\n\";\n\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\\n\";\n\nvar encodings_fragment = \"  gl_FragColor = linearToOutputTexel( gl_FragColor );\\n\";\n\nvar 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.xyz, vec3( gammaFactor ) ), value.w );\\n}\\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\\n\\treturn vec4( pow( value.xyz, vec3( 1.0 / gammaFactor ) ), value.w );\\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.w );\\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.w );\\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.xyz * value.w * maxRange, 1.0 );\\n}\\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\\n\\tfloat maxRGB = max( value.x, 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.x, max( value.g, value.b ) );\\n\\tfloat D      = max( maxRange / maxRGB, 1.0 );\\n\\tD            = min( floor( D ) / 255.0, 1.0 );\\n\\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\\n}\\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\\nvec4 LinearToLogLuv( in vec4 value )  {\\n\\tvec3 Xp_Y_XYZp = value.rgb * cLogLuvM;\\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 = Xp_Y_XYZp.rgb * cLogLuvInverseM;\\n\\treturn vec4( max(vRGB, 0.0), 1.0 );\\n}\\n\";\n\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\n\\t\\tvec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\\n\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( cameraToVertex, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( cameraToVertex, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#else\\n\\t\\tvec3 reflectVec = vReflect;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\n\\t#elif defined( ENVMAP_TYPE_EQUIREC )\\n\\t\\tvec2 sampleUV;\\n\\t\\treflectVec = normalize( reflectVec );\\n\\t\\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\t\\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\\n\\t\\tvec4 envColor = texture2D( envMap, sampleUV );\\n\\t#elif defined( ENVMAP_TYPE_SPHERE )\\n\\t\\treflectVec = normalize( reflectVec );\\n\\t\\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) );\\n\\t\\tvec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 );\\n\\t#else\\n\\t\\tvec4 envColor = vec4( 0.0 );\\n\\t#endif\\n\\tenvColor = envMapTexelToLinear( envColor );\\n\\t#ifdef ENVMAP_BLENDING_MULTIPLY\\n\\t\\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_MIX )\\n\\t\\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_ADD )\\n\\t\\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\\n\\t#endif\\n#endif\\n\";\n\nvar envmap_pars_fragment = \"#if defined( USE_ENVMAP ) || defined( PHYSICAL )\\n\\tuniform float reflectivity;\\n\\tuniform float envMapIntensity;\\n#endif\\n#ifdef USE_ENVMAP\\n\\t#if ! defined( PHYSICAL ) && ( defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) )\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tuniform samplerCube envMap;\\n\\t#else\\n\\t\\tuniform sampler2D envMap;\\n\\t#endif\\n\\tuniform float flipEnvMap;\\n\\tuniform int maxMipLevel;\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( PHYSICAL )\\n\\t\\tuniform float refractionRatio;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t#endif\\n#endif\\n\";\n\nvar envmap_pars_vertex = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n#endif\\n\";\n\nvar envmap_vertex = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\n\\t\\tvWorldPosition = worldPosition.xyz;\\n\\t#else\\n\\t\\tvec3 cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\\n\\t\\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvReflect = reflect( cameraToVertex, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#endif\\n#endif\\n\";\n\nvar fog_vertex = \"\\n#ifdef USE_FOG\\nfogDepth = -mvPosition.z;\\n#endif\";\n\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n  varying float fogDepth;\\n#endif\\n\";\n\nvar fog_fragment = \"#ifdef USE_FOG\\n\\t#ifdef FOG_EXP2\\n\\t\\tfloat fogFactor = whiteCompliment( exp2( - fogDensity * fogDensity * fogDepth * fogDepth * LOG2 ) );\\n\\t#else\\n\\t\\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\\n\\t#endif\\n\\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\n#endif\\n\";\n\nvar 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\\n\";\n\nvar gradientmap_pars_fragment = \"#ifdef TOON\\n\\tuniform sampler2D gradientMap;\\n\\tvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\\n\\t\\tfloat dotNL = dot( normal, lightDirection );\\n\\t\\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\\n\\t\\t#ifdef USE_GRADIENTMAP\\n\\t\\t\\treturn texture2D( gradientMap, coord ).rgb;\\n\\t\\t#else\\n\\t\\t\\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\\n\\t\\t#endif\\n\\t}\\n#endif\\n\";\n\nvar lightmap_fragment = \"#ifdef USE_LIGHTMAP\\n\\treflectedLight.indirectDiffuse += PI * texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\\n#endif\\n\";\n\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\";\n\nvar lights_lambert_vertex = \"vec3 diffuse = vec3( 1.0 );\\nGeometricContext geometry;\\ngeometry.position = mvPosition.xyz;\\ngeometry.normal = normalize( transformedNormal );\\ngeometry.viewDir = normalize( -mvPosition.xyz );\\nGeometricContext backGeometry;\\nbackGeometry.position = geometry.position;\\nbackGeometry.normal = -geometry.normal;\\nbackGeometry.viewDir = geometry.viewDir;\\nvLightFront = vec3( 0.0 );\\n#ifdef DOUBLE_SIDED\\n\\tvLightBack = vec3( 0.0 );\\n#endif\\nIncidentLight directLight;\\nfloat dotNL;\\nvec3 directLightColor_Diffuse;\\n#if NUM_POINT_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n#endif\\n#if NUM_DIR_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\tvLightFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\\n\\t\\t#endif\\n\\t}\\n#endif\\n\";\n\nvar lights_pars_begin = \"uniform vec3 ambientLightColor;\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\\tvec3 irradiance = ambientLightColor;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\treturn irradiance;\\n}\\n#if NUM_DIR_LIGHTS > 0\\n\\tstruct DirectionalLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tint shadow;\\n\\t\\tfloat shadowBias;\\n\\t\\tfloat shadowRadius;\\n\\t\\tvec2 shadowMapSize;\\n\\t};\\n\\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\\n\\tvoid getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tdirectLight.color = directionalLight.color;\\n\\t\\tdirectLight.direction = directionalLight.direction;\\n\\t\\tdirectLight.visible = true;\\n\\t}\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\tstruct PointLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tint shadow;\\n\\t\\tfloat shadowBias;\\n\\t\\tfloat shadowRadius;\\n\\t\\tvec2 shadowMapSize;\\n\\t\\tfloat shadowCameraNear;\\n\\t\\tfloat shadowCameraFar;\\n\\t};\\n\\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\\n\\tvoid getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tvec3 lVector = pointLight.position - geometry.position;\\n\\t\\tdirectLight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tdirectLight.color = pointLight.color;\\n\\t\\tdirectLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );\\n\\t\\tdirectLight.visible = ( directLight.color != vec3( 0.0 ) );\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\tstruct SpotLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tfloat coneCos;\\n\\t\\tfloat penumbraCos;\\n\\t\\tint shadow;\\n\\t\\tfloat shadowBias;\\n\\t\\tfloat shadowRadius;\\n\\t\\tvec2 shadowMapSize;\\n\\t};\\n\\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\\n\\tvoid getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight  ) {\\n\\t\\tvec3 lVector = spotLight.position - geometry.position;\\n\\t\\tdirectLight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tfloat angleCos = dot( directLight.direction, spotLight.direction );\\n\\t\\tif ( angleCos > spotLight.coneCos ) {\\n\\t\\t\\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\\t\\t\\tdirectLight.color = spotLight.color;\\n\\t\\t\\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\\n\\t\\t\\tdirectLight.visible = true;\\n\\t\\t} else {\\n\\t\\t\\tdirectLight.color = vec3( 0.0 );\\n\\t\\t\\tdirectLight.visible = false;\\n\\t\\t}\\n\\t}\\n#endif\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tstruct RectAreaLight {\\n\\t\\tvec3 color;\\n\\t\\tvec3 position;\\n\\t\\tvec3 halfWidth;\\n\\t\\tvec3 halfHeight;\\n\\t};\\n\\tuniform sampler2D ltc_1;\\tuniform sampler2D ltc_2;\\n\\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\tstruct HemisphereLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 skyColor;\\n\\t\\tvec3 groundColor;\\n\\t};\\n\\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\\n\\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\\n\\t\\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\\n\\t\\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\\t\\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\\t\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\t\\tirradiance *= PI;\\n\\t\\t#endif\\n\\t\\treturn irradiance;\\n\\t}\\n#endif\\n\";\n\nvar lights_pars_maps = \"#if defined( USE_ENVMAP ) && defined( PHYSICAL )\\n\\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\\n\\t\\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\t\\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( queryVec, 1.0 );\\n\\t\\t#else\\n\\t\\t\\tvec4 envMapColor = vec4( 0.0 );\\n\\t\\t#endif\\n\\t\\treturn PI * envMapColor.rgb * envMapIntensity;\\n\\t}\\n\\tfloat getSpecularMIPLevel( const in float blinnShininessExponent, const in int maxMIPLevel ) {\\n\\t\\tfloat maxMIPLevelScalar = float( maxMIPLevel );\\n\\t\\tfloat desiredMIPLevel = maxMIPLevelScalar + 0.79248 - 0.5 * log2( pow2( blinnShininessExponent ) + 1.0 );\\n\\t\\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\\n\\t}\\n\\tvec3 getLightProbeIndirectRadiance( const in GeometricContext geometry, const in float blinnShininessExponent, const in int maxMIPLevel ) {\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( -geometry.viewDir, geometry.normal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( -geometry.viewDir, geometry.normal, refractionRatio );\\n\\t\\t#endif\\n\\t\\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\\t\\tfloat specularMIPLevel = getSpecularMIPLevel( blinnShininessExponent, maxMIPLevel );\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\t\\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV(queryReflectVec, BlinnExponentToGGXRoughness(blinnShininessExponent));\\n\\t\\t#elif defined( ENVMAP_TYPE_EQUIREC )\\n\\t\\t\\tvec2 sampleUV;\\n\\t\\t\\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\t\\t\\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#elif defined( ENVMAP_TYPE_SPHERE )\\n\\t\\t\\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0,0.0,1.0 ) );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = texture2DLodEXT( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#endif\\n\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t}\\n#endif\\n\";\n\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\\n\";\n\nvar lights_phong_pars_fragment = \"varying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\nstruct BlinnPhongMaterial {\\n\\tvec3\\tdiffuseColor;\\n\\tvec3\\tspecularColor;\\n\\tfloat\\tspecularShininess;\\n\\tfloat\\tspecularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t#ifdef TOON\\n\\t\\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\\n\\t#else\\n\\t\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\t\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#endif\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n\\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_BlinnPhong\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_BlinnPhong\\n#define Material_LightProbeLOD( material )\\t(0)\\n\";\n\nvar lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nmaterial.specularRoughness = clamp( roughnessFactor, 0.04, 1.0 );\\n#ifdef STANDARD\\n\\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\\n#else\\n\\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\\n\\tmaterial.clearCoat = saturate( clearCoat );\\tmaterial.clearCoatRoughness = clamp( clearCoatRoughness, 0.04, 1.0 );\\n#endif\\n\";\n\nvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\\tvec3\\tdiffuseColor;\\n\\tfloat\\tspecularRoughness;\\n\\tvec3\\tspecularColor;\\n\\t#ifndef STANDARD\\n\\t\\tfloat clearCoat;\\n\\t\\tfloat clearCoatRoughness;\\n\\t#endif\\n};\\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\\nfloat clearCoatDHRApprox( const in float roughness, const in float dotNL ) {\\n\\treturn DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );\\n}\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t\\tvec3 normal = geometry.normal;\\n\\t\\tvec3 viewDir = geometry.viewDir;\\n\\t\\tvec3 position = geometry.position;\\n\\t\\tvec3 lightPos = rectAreaLight.position;\\n\\t\\tvec3 halfWidth = rectAreaLight.halfWidth;\\n\\t\\tvec3 halfHeight = rectAreaLight.halfHeight;\\n\\t\\tvec3 lightColor = rectAreaLight.color;\\n\\t\\tfloat roughness = material.specularRoughness;\\n\\t\\tvec3 rectCoords[ 4 ];\\n\\t\\trectCoords[ 0 ] = lightPos - halfWidth - halfHeight;\\t\\trectCoords[ 1 ] = lightPos + halfWidth - halfHeight;\\n\\t\\trectCoords[ 2 ] = lightPos + halfWidth + halfHeight;\\n\\t\\trectCoords[ 3 ] = lightPos - halfWidth + halfHeight;\\n\\t\\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\\n\\t\\tvec4 t1 = texture2D( ltc_1, uv );\\n\\t\\tvec4 t2 = texture2D( ltc_2, uv );\\n\\t\\tmat3 mInv = mat3(\\n\\t\\t\\tvec3( t1.x, 0, t1.y ),\\n\\t\\t\\tvec3(    0, 1,    0 ),\\n\\t\\t\\tvec3( t1.z, 0, t1.w )\\n\\t\\t);\\n\\t\\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\\n\\t\\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\\n\\t\\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\\n\\t}\\n#endif\\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\t#ifndef STANDARD\\n\\t\\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\\n\\t#else\\n\\t\\tfloat clearCoatDHR = 0.0;\\n\\t#endif\\n\\treflectedLight.directSpecular += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry, material.specularColor, material.specularRoughness );\\n\\treflectedLight.directDiffuse += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n\\t#ifndef STANDARD\\n\\t\\treflectedLight.directSpecular += irradiance * material.clearCoat * BRDF_Specular_GGX( directLight, geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\\n\\t#endif\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 clearCoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t#ifndef STANDARD\\n\\t\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\t\\tfloat dotNL = dotNV;\\n\\t\\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\\n\\t#else\\n\\t\\tfloat clearCoatDHR = 0.0;\\n\\t#endif\\n\\treflectedLight.indirectSpecular += ( 1.0 - clearCoatDHR ) * radiance * BRDF_Specular_GGX_Environment( geometry, material.specularColor, material.specularRoughness );\\n\\t#ifndef STANDARD\\n\\t\\treflectedLight.indirectSpecular += clearCoatRadiance * material.clearCoat * BRDF_Specular_GGX_Environment( geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\\n\\t#endif\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Physical\\n#define RE_Direct_RectArea\\t\\tRE_Direct_RectArea_Physical\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Physical\\n#define RE_IndirectSpecular\\t\\tRE_IndirectSpecular_Physical\\n#define Material_BlinnShininessExponent( material )   GGXRoughnessToBlinnExponent( material.specularRoughness )\\n#define Material_ClearCoat_BlinnShininessExponent( material )   GGXRoughnessToBlinnExponent( material.clearCoatRoughness )\\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\\n\\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\\n}\\n\";\n\nvar lights_fragment_begin = \"\\nGeometricContext geometry;\\ngeometry.position = - vViewPosition;\\ngeometry.normal = normal;\\ngeometry.viewDir = normalize( vViewPosition );\\nIncidentLight directLight;\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tPointLight pointLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\\n\\t\\t#ifdef USE_SHADOWMAP\\n\\t\\tdirectLight.color *= all( bvec2( pointLight.shadow, directLight.visible ) ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tSpotLight spotLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\\n\\t\\t#ifdef USE_SHADOWMAP\\n\\t\\tdirectLight.color *= all( bvec2( spotLight.shadow, directLight.visible ) ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n#endif\\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tDirectionalLight directionalLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLights[ i ];\\n\\t\\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\\n\\t\\t#ifdef USE_SHADOWMAP\\n\\t\\tdirectLight.color *= all( bvec2( directionalLight.shadow, directLight.visible ) ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n#endif\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\n\\tRectAreaLight rectAreaLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\\n\\t\\trectAreaLight = rectAreaLights[ i ];\\n\\t\\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\\n\\t}\\n#endif\\n#if defined( RE_IndirectDiffuse )\\n\\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\n\\t#if ( NUM_HEMI_LIGHTS > 0 )\\n\\t\\t#pragma unroll_loop\\n\\t\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\t\\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\\n\\t\\t}\\n\\t#endif\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tvec3 radiance = vec3( 0.0 );\\n\\tvec3 clearCoatRadiance = vec3( 0.0 );\\n#endif\\n\";\n\nvar lights_fragment_maps = \"#if defined( RE_IndirectDiffuse )\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec3 lightMapIrradiance = texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\\n\\t\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\t\\tlightMapIrradiance *= PI;\\n\\t\\t#endif\\n\\t\\tirradiance += lightMapIrradiance;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( PHYSICAL ) && defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tirradiance += getLightProbeIndirectIrradiance( geometry, maxMipLevel );\\n\\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\\tradiance += getLightProbeIndirectRadiance( geometry, Material_BlinnShininessExponent( material ), maxMipLevel );\\n\\t#ifndef STANDARD\\n\\t\\tclearCoatRadiance += getLightProbeIndirectRadiance( geometry, Material_ClearCoat_BlinnShininessExponent( material ), maxMipLevel );\\n\\t#endif\\n#endif\\n\";\n\nvar 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, clearCoatRadiance, geometry, material, reflectedLight );\\n#endif\\n\";\n\nvar logdepthbuf_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tgl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\\n#endif\";\n\nvar logdepthbuf_pars_fragment = \"#ifdef USE_LOGDEPTHBUF\\n\\tuniform float logDepthBufFC;\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvarying float vFragDepth;\\n\\t#endif\\n#endif\\n\";\n\nvar logdepthbuf_pars_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvarying float vFragDepth;\\n\\t#endif\\n\\tuniform float logDepthBufFC;\\n#endif\";\n\nvar logdepthbuf_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvFragDepth = 1.0 + gl_Position.w;\\n\\t#else\\n\\t\\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\\n\\t\\tgl_Position.z *= gl_Position.w;\\n\\t#endif\\n#endif\\n\";\n\nvar map_fragment = \"#ifdef USE_MAP\\n\\tvec4 texelColor = texture2D( map, vUv );\\n\\ttexelColor = mapTexelToLinear( texelColor );\\n\\tdiffuseColor *= texelColor;\\n#endif\\n\";\n\nvar map_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\\n\";\n\nvar map_particle_fragment = \"#ifdef USE_MAP\\n\\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\\n\\tvec4 mapTexel = texture2D( map, uv );\\n\\tdiffuseColor *= mapTexelToLinear( mapTexel );\\n#endif\\n\";\n\nvar map_particle_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform mat3 uvTransform;\\n\\tuniform sampler2D map;\\n#endif\\n\";\n\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\\n\\tmetalnessFactor *= texelMetalness.b;\\n#endif\\n\";\n\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\\tuniform sampler2D metalnessMap;\\n#endif\";\n\nvar morphnormal_vertex = \"#ifdef USE_MORPHNORMALS\\n\\tobjectNormal += ( morphNormal0 - normal ) * morphTargetInfluences[ 0 ];\\n\\tobjectNormal += ( morphNormal1 - normal ) * morphTargetInfluences[ 1 ];\\n\\tobjectNormal += ( morphNormal2 - normal ) * morphTargetInfluences[ 2 ];\\n\\tobjectNormal += ( morphNormal3 - normal ) * morphTargetInfluences[ 3 ];\\n#endif\\n\";\n\nvar morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\\t#ifndef USE_MORPHNORMALS\\n\\tuniform float morphTargetInfluences[ 8 ];\\n\\t#else\\n\\tuniform float morphTargetInfluences[ 4 ];\\n\\t#endif\\n#endif\";\n\nvar morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\\ttransformed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ];\\n\\ttransformed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ];\\n\\ttransformed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ];\\n\\ttransformed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ];\\n\\t#ifndef USE_MORPHNORMALS\\n\\ttransformed += ( morphTarget4 - position ) * morphTargetInfluences[ 4 ];\\n\\ttransformed += ( morphTarget5 - position ) * morphTargetInfluences[ 5 ];\\n\\ttransformed += ( morphTarget6 - position ) * morphTargetInfluences[ 6 ];\\n\\ttransformed += ( morphTarget7 - position ) * morphTargetInfluences[ 7 ];\\n\\t#endif\\n#endif\\n\";\n\nvar 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#endif\\n\";\n\nvar normal_fragment_maps = \"#ifdef USE_NORMALMAP\\n\\t#ifdef OBJECTSPACE_NORMALMAP\\n\\t\\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\t\\t#ifdef FLIP_SIDED\\n\\t\\t\\tnormal = - normal;\\n\\t\\t#endif\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\t#endif\\n\\t\\tnormal = normalize( normalMatrix * normal );\\n\\t#else\\n\\t\\tnormal = perturbNormal2Arb( -vViewPosition, normal );\\n\\t#endif\\n#elif defined( USE_BUMPMAP )\\n\\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\\n#endif\\n\";\n\nvar normalmap_pars_fragment = \"#ifdef USE_NORMALMAP\\n\\tuniform sampler2D normalMap;\\n\\tuniform vec2 normalScale;\\n\\t#ifdef OBJECTSPACE_NORMALMAP\\n\\t\\tuniform mat3 normalMatrix;\\n\\t#else\\n\\t\\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm ) {\\n\\t\\t\\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\\n\\t\\t\\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\\n\\t\\t\\tvec2 st0 = dFdx( vUv.st );\\n\\t\\t\\tvec2 st1 = dFdy( vUv.st );\\n\\t\\t\\tfloat scale = sign( st1.t * st0.s - st0.t * st1.s );\\n\\t\\t\\tvec3 S = normalize( ( q0 * st1.t - q1 * st0.t ) * scale );\\n\\t\\t\\tvec3 T = normalize( ( - q0 * st1.s + q1 * st0.s ) * scale );\\n\\t\\t\\tvec3 N = normalize( surf_norm );\\n\\t\\t\\tmat3 tsn = mat3( S, T, N );\\n\\t\\t\\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\t\\t\\tmapN.xy *= normalScale;\\n\\t\\t\\tmapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\t\\treturn normalize( tsn * mapN );\\n\\t\\t}\\n\\t#endif\\n#endif\\n\";\n\nvar packing = \"vec3 packNormalToRGB( const in vec3 normal ) {\\n\\treturn normalize( normal ) * 0.5 + 0.5;\\n}\\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\\n\\treturn 2.0 * rgb.xyz - 1.0;\\n}\\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256.,  256. );\\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\\nconst float ShiftRight8 = 1. / 256.;\\nvec4 packDepthToRGBA( const in float v ) {\\n\\tvec4 r = vec4( fract( v * PackFactors ), v );\\n\\tr.yzw -= r.xyz * ShiftRight8;\\treturn r * PackUpscale;\\n}\\nfloat unpackRGBAToDepth( const in vec4 v ) {\\n\\treturn dot( v, UnpackFactors );\\n}\\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( viewZ + near ) / ( near - far );\\n}\\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\\n\\treturn linearClipZ * ( near - far ) - near;\\n}\\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn (( near + viewZ ) * far ) / (( far - near ) * viewZ );\\n}\\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\\n\\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\\n}\\n\";\n\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\\n\";\n\nvar project_vertex = \"vec4 mvPosition = modelViewMatrix * vec4( transformed, 1.0 );\\ngl_Position = projectionMatrix * mvPosition;\\n\";\n\nvar dithering_fragment = \"#if defined( DITHERING )\\n  gl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\\n\";\n\nvar dithering_pars_fragment = \"#if defined( DITHERING )\\n\\tvec3 dithering( vec3 color ) {\\n\\t\\tfloat grid_position = rand( gl_FragCoord.xy );\\n\\t\\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\\n\\t\\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\\n\\t\\treturn color + dither_shift_RGB;\\n\\t}\\n#endif\\n\";\n\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\\n\\troughnessFactor *= texelRoughness.g;\\n#endif\\n\";\n\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\\tuniform sampler2D roughnessMap;\\n#endif\";\n\nvar shadowmap_pars_fragment = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHTS > 0\\n\\t\\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHTS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHTS > 0\\n\\t\\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHTS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHTS > 0\\n\\t\\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHTS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\\n\\t#endif\\n\\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\\n\\t\\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\\n\\t}\\n\\tfloat texture2DShadowLerp( sampler2D depths, vec2 size, vec2 uv, float compare ) {\\n\\t\\tconst vec2 offset = vec2( 0.0, 1.0 );\\n\\t\\tvec2 texelSize = vec2( 1.0 ) / size;\\n\\t\\tvec2 centroidUV = floor( uv * size + 0.5 ) / size;\\n\\t\\tfloat lb = texture2DCompare( depths, centroidUV + texelSize * offset.xx, compare );\\n\\t\\tfloat lt = texture2DCompare( depths, centroidUV + texelSize * offset.xy, compare );\\n\\t\\tfloat rb = texture2DCompare( depths, centroidUV + texelSize * offset.yx, compare );\\n\\t\\tfloat rt = texture2DCompare( depths, centroidUV + texelSize * offset.yy, compare );\\n\\t\\tvec2 f = fract( uv * size + 0.5 );\\n\\t\\tfloat a = mix( lb, lt, f.y );\\n\\t\\tfloat b = mix( rb, rt, f.y );\\n\\t\\tfloat c = mix( a, b, f.x );\\n\\t\\treturn c;\\n\\t}\\n\\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\\n\\t\\tfloat shadow = 1.0;\\n\\t\\tshadowCoord.xyz /= shadowCoord.w;\\n\\t\\tshadowCoord.z += shadowBias;\\n\\t\\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\\n\\t\\tbool inFrustum = all( inFrustumVec );\\n\\t\\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\\n\\t\\tbool frustumTest = all( frustumTestVec );\\n\\t\\tif ( frustumTest ) {\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx0 = - texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy0 = - texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx1 = + texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy1 = + texelSize.y * shadowRadius;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx0 = - texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy0 = - texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx1 = + texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy1 = + texelSize.y * shadowRadius;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#else\\n\\t\\t\\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#endif\\n\\t\\t}\\n\\t\\treturn shadow;\\n\\t}\\n\\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\\n\\t\\tvec3 absV = abs( v );\\n\\t\\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\\n\\t\\tabsV *= scaleToCube;\\n\\t\\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\\n\\t\\tvec2 planar = v.xy;\\n\\t\\tfloat almostATexel = 1.5 * texelSizeY;\\n\\t\\tfloat almostOne = 1.0 - almostATexel;\\n\\t\\tif ( absV.z >= almostOne ) {\\n\\t\\t\\tif ( v.z > 0.0 )\\n\\t\\t\\t\\tplanar.x = 4.0 - v.x;\\n\\t\\t} else if ( absV.x >= almostOne ) {\\n\\t\\t\\tfloat signX = sign( v.x );\\n\\t\\t\\tplanar.x = v.z * signX + 2.0 * signX;\\n\\t\\t} else if ( absV.y >= almostOne ) {\\n\\t\\t\\tfloat signY = sign( v.y );\\n\\t\\t\\tplanar.x = v.x + 2.0 * signY + 2.0;\\n\\t\\t\\tplanar.y = v.z * signY - 2.0;\\n\\t\\t}\\n\\t\\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\\n\\t}\\n\\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\\n\\t\\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\\n\\t\\tvec3 lightToPosition = shadowCoord.xyz;\\n\\t\\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\\t\\tdp += shadowBias;\\n\\t\\tvec3 bd3D = normalize( lightToPosition );\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\\t\\t\\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\\n\\t\\t\\treturn (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#else\\n\\t\\t\\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\\n\\t\\t#endif\\n\\t}\\n#endif\\n\";\n\nvar shadowmap_pars_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHTS > 0\\n\\t\\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHTS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHTS > 0\\n\\t\\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHTS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHTS > 0\\n\\t\\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHTS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\\n\\t#endif\\n#endif\\n\";\n\nvar shadowmap_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * worldPosition;\\n\\t}\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * worldPosition;\\n\\t}\\n\\t#endif\\n\\t#if NUM_POINT_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * worldPosition;\\n\\t}\\n\\t#endif\\n#endif\\n\";\n\nvar shadowmask_pars_fragment = \"float getShadowMask() {\\n\\tfloat shadow = 1.0;\\n\\t#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHTS > 0\\n\\tDirectionalLight directionalLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLights[ i ];\\n\\t\\tshadow *= bool( directionalLight.shadow ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHTS > 0\\n\\tSpotLight spotLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tshadow *= bool( spotLight.shadow ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#endif\\n\\t#if NUM_POINT_LIGHTS > 0\\n\\tPointLight pointLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tshadow *= bool( pointLight.shadow ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t}\\n\\t#endif\\n\\t#endif\\n\\treturn shadow;\\n}\\n\";\n\nvar 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\";\n\nvar skinning_pars_vertex = \"#ifdef USE_SKINNING\\n\\tuniform mat4 bindMatrix;\\n\\tuniform mat4 bindMatrixInverse;\\n\\t#ifdef BONE_TEXTURE\\n\\t\\tuniform sampler2D boneTexture;\\n\\t\\tuniform int boneTextureSize;\\n\\t\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\t\\tfloat j = i * 4.0;\\n\\t\\t\\tfloat x = mod( j, float( boneTextureSize ) );\\n\\t\\t\\tfloat y = floor( j / float( boneTextureSize ) );\\n\\t\\t\\tfloat dx = 1.0 / float( boneTextureSize );\\n\\t\\t\\tfloat dy = 1.0 / float( boneTextureSize );\\n\\t\\t\\ty = dy * ( y + 0.5 );\\n\\t\\t\\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\\n\\t\\t\\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\\n\\t\\t\\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\\n\\t\\t\\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\\n\\t\\t\\tmat4 bone = mat4( v1, v2, v3, v4 );\\n\\t\\t\\treturn bone;\\n\\t\\t}\\n\\t#else\\n\\t\\tuniform mat4 boneMatrices[ MAX_BONES ];\\n\\t\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\t\\tmat4 bone = boneMatrices[ int(i) ];\\n\\t\\t\\treturn bone;\\n\\t\\t}\\n\\t#endif\\n#endif\\n\";\n\nvar 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\\n\";\n\nvar 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#endif\\n\";\n\nvar 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\";\n\nvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\\tuniform sampler2D specularMap;\\n#endif\";\n\nvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n  gl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\\n\";\n\nvar tonemapping_pars_fragment = \"#ifndef saturate\\n\\t#define saturate(a) clamp( a, 0.0, 1.0 )\\n#endif\\nuniform float toneMappingExposure;\\nuniform float toneMappingWhitePoint;\\nvec3 LinearToneMapping( vec3 color ) {\\n\\treturn toneMappingExposure * color;\\n}\\nvec3 ReinhardToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( color / ( vec3( 1.0 ) + color ) );\\n}\\n#define Uncharted2Helper( x ) max( ( ( x * ( 0.15 * x + 0.10 * 0.50 ) + 0.20 * 0.02 ) / ( x * ( 0.15 * x + 0.50 ) + 0.20 * 0.30 ) ) - 0.02 / 0.30, vec3( 0.0 ) )\\nvec3 Uncharted2ToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( Uncharted2Helper( color ) / Uncharted2Helper( vec3( toneMappingWhitePoint ) ) );\\n}\\nvec3 OptimizedCineonToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = max( vec3( 0.0 ), color - 0.004 );\\n\\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\\n}\\n\";\n\nvar uv_pars_fragment = \"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\\n\\tvarying vec2 vUv;\\n#endif\";\n\nvar uv_pars_vertex = \"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\\n\\tvarying vec2 vUv;\\n\\tuniform mat3 uvTransform;\\n#endif\\n\";\n\nvar uv_vertex = \"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n#endif\";\n\nvar uv2_pars_fragment = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvarying vec2 vUv2;\\n#endif\";\n\nvar uv2_pars_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tattribute vec2 uv2;\\n\\tvarying vec2 vUv2;\\n#endif\";\n\nvar uv2_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvUv2 = uv2;\\n#endif\";\n\nvar worldpos_vertex = \"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\\n\\tvec4 worldPosition = modelMatrix * vec4( transformed, 1.0 );\\n#endif\\n\";\n\nvar cube_frag = \"uniform samplerCube tCube;\\nuniform float tFlip;\\nuniform float opacity;\\nvarying vec3 vWorldPosition;\\nvoid main() {\\n\\tgl_FragColor = textureCube( tCube, vec3( tFlip * vWorldPosition.x, vWorldPosition.yz ) );\\n\\tgl_FragColor.a *= opacity;\\n}\\n\";\n\nvar cube_vert = \"varying vec3 vWorldPosition;\\n#include <common>\\nvoid main() {\\n\\tvWorldPosition = transformDirection( position, modelMatrix );\\n\\t#include <begin_vertex>\\n\\t#include <project_vertex>\\n\\tgl_Position.z = gl_Position.w;\\n}\\n\";\n\nvar depth_frag = \"#if DEPTH_PACKING == 3200\\n\\tuniform float opacity;\\n#endif\\n#include <common>\\n#include <packing>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tdiffuseColor.a = opacity;\\n\\t#endif\\n\\t#include <map_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <logdepthbuf_fragment>\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tgl_FragColor = vec4( vec3( 1.0 - gl_FragCoord.z ), opacity );\\n\\t#elif DEPTH_PACKING == 3201\\n\\t\\tgl_FragColor = packDepthToRGBA( gl_FragCoord.z );\\n\\t#endif\\n}\\n\";\n\nvar depth_vert = \"#include <common>\\n#include <uv_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include <beginnormal_vertex>\\n\\t\\t#include <morphnormal_vertex>\\n\\t\\t#include <skinnormal_vertex>\\n\\t#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n}\\n\";\n\nvar distanceRGBA_frag = \"#define DISTANCE\\nuniform vec3 referencePosition;\\nuniform float nearDistance;\\nuniform float farDistance;\\nvarying vec3 vWorldPosition;\\n#include <common>\\n#include <packing>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main () {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include <map_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\tfloat dist = length( vWorldPosition - referencePosition );\\n\\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\\n\\tdist = saturate( dist );\\n\\tgl_FragColor = packDepthToRGBA( dist );\\n}\\n\";\n\nvar distanceRGBA_vert = \"#define DISTANCE\\nvarying vec3 vWorldPosition;\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include <beginnormal_vertex>\\n\\t\\t#include <morphnormal_vertex>\\n\\t\\t#include <skinnormal_vertex>\\n\\t#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\tvWorldPosition = worldPosition.xyz;\\n}\\n\";\n\nvar equirect_frag = \"uniform sampler2D tEquirect;\\nvarying vec3 vWorldPosition;\\n#include <common>\\nvoid main() {\\n\\tvec3 direction = normalize( vWorldPosition );\\n\\tvec2 sampleUV;\\n\\tsampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\\n\\tgl_FragColor = texture2D( tEquirect, sampleUV );\\n}\\n\";\n\nvar equirect_vert = \"varying vec3 vWorldPosition;\\n#include <common>\\nvoid main() {\\n\\tvWorldPosition = transformDirection( position, modelMatrix );\\n\\t#include <begin_vertex>\\n\\t#include <project_vertex>\\n}\\n\";\n\nvar linedashed_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\nuniform float dashSize;\\nuniform float totalSize;\\nvarying float vLineDistance;\\n#include <common>\\n#include <color_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\\n\\t\\tdiscard;\\n\\t}\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <color_fragment>\\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n}\\n\";\n\nvar linedashed_vert = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include <common>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <color_vertex>\\n\\tvLineDistance = scale * lineDistance;\\n\\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\\n\\tgl_Position = projectionMatrix * mvPosition;\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <fog_vertex>\\n}\\n\";\n\nvar meshbasic_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include <common>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <specularmap_fragment>\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\treflectedLight.indirectDiffuse += texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vec3( 1.0 );\\n\\t#endif\\n\\t#include <aomap_fragment>\\n\\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\\n\\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\\n\\t#include <envmap_fragment>\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n}\\n\";\n\nvar meshbasic_vert = \"#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <envmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <uv2_vertex>\\n\\t#include <color_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#ifdef USE_ENVMAP\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n\\t#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <envmap_vertex>\\n\\t#include <fog_vertex>\\n}\\n\";\n\nvar meshlambert_frag = \"uniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\nvarying vec3 vLightFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n#endif\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <fog_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <shadowmask_pars_fragment>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <specularmap_fragment>\\n\\t#include <emissivemap_fragment>\\n\\treflectedLight.indirectDiffuse = getAmbientLightIrradiance( ambientLightColor );\\n\\t#include <lightmap_fragment>\\n\\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\\n\\t#else\\n\\t\\treflectedLight.directDiffuse = vLightFront;\\n\\t#endif\\n\\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\\n\\t#include <aomap_fragment>\\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include <envmap_fragment>\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\\n\";\n\nvar meshlambert_vert = \"#define LAMBERT\\nvarying vec3 vLightFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <envmap_pars_vertex>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <uv2_vertex>\\n\\t#include <color_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <envmap_vertex>\\n\\t#include <lights_lambert_vertex>\\n\\t#include <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n}\\n\";\n\nvar meshphong_frag = \"#define PHONG\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform vec3 specular;\\nuniform float shininess;\\nuniform float opacity;\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <gradientmap_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <lights_phong_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <specularmap_fragment>\\n\\t#include <normal_fragment_begin>\\n\\t#include <normal_fragment_maps>\\n\\t#include <emissivemap_fragment>\\n\\t#include <lights_phong_fragment>\\n\\t#include <lights_fragment_begin>\\n\\t#include <lights_fragment_maps>\\n\\t#include <lights_fragment_end>\\n\\t#include <aomap_fragment>\\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\t#include <envmap_fragment>\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\\n\";\n\nvar meshphong_vert = \"#define PHONG\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <envmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <uv2_vertex>\\n\\t#include <color_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include <worldpos_vertex>\\n\\t#include <envmap_vertex>\\n\\t#include <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n}\\n\";\n\nvar meshphysical_frag = \"#define PHYSICAL\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifndef STANDARD\\n\\tuniform float clearCoat;\\n\\tuniform float clearCoatRoughness;\\n#endif\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <bsdfs>\\n#include <cube_uv_reflection_fragment>\\n#include <lights_pars_begin>\\n#include <lights_pars_maps>\\n#include <lights_physical_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <roughnessmap_pars_fragment>\\n#include <metalnessmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <roughnessmap_fragment>\\n\\t#include <metalnessmap_fragment>\\n\\t#include <normal_fragment_begin>\\n\\t#include <normal_fragment_maps>\\n\\t#include <emissivemap_fragment>\\n\\t#include <lights_physical_fragment>\\n\\t#include <lights_fragment_begin>\\n\\t#include <lights_fragment_maps>\\n\\t#include <lights_fragment_end>\\n\\t#include <aomap_fragment>\\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\\n\";\n\nvar meshphysical_vert = \"#define PHYSICAL\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <uv2_vertex>\\n\\t#include <color_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include <worldpos_vertex>\\n\\t#include <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n}\\n\";\n\nvar normal_frag = \"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include <packing>\\n#include <uv_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\nvoid main() {\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <normal_fragment_begin>\\n\\t#include <normal_fragment_maps>\\n\\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\\n}\\n\";\n\nvar normal_vert = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include <uv_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\\n\";\n\nvar points_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include <common>\\n#include <packing>\\n#include <color_pars_fragment>\\n#include <map_particle_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_particle_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphatest_fragment>\\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n}\\n\";\n\nvar points_vert = \"uniform float size;\\nuniform float scale;\\n#include <common>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <color_vertex>\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <project_vertex>\\n\\t#ifdef USE_SIZEATTENUATION\\n\\t\\tgl_PointSize = size * ( scale / - mvPosition.z );\\n\\t#else\\n\\t\\tgl_PointSize = size;\\n\\t#endif\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <fog_vertex>\\n}\\n\";\n\nvar shadow_frag = \"uniform vec3 color;\\nuniform float opacity;\\n#include <common>\\n#include <packing>\\n#include <fog_pars_fragment>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <shadowmap_pars_fragment>\\n#include <shadowmask_pars_fragment>\\nvoid main() {\\n\\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\\n\\t#include <fog_fragment>\\n}\\n\";\n\nvar shadow_vert = \"#include <fog_pars_vertex>\\n#include <shadowmap_pars_vertex>\\nvoid main() {\\n\\t#include <begin_vertex>\\n\\t#include <project_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n}\\n\";\n\nvar ShaderChunk = {\n\talphamap_fragment: alphamap_fragment,\n\talphamap_pars_fragment: alphamap_pars_fragment,\n\talphatest_fragment: alphatest_fragment,\n\taomap_fragment: aomap_fragment,\n\taomap_pars_fragment: aomap_pars_fragment,\n\tbegin_vertex: begin_vertex,\n\tbeginnormal_vertex: beginnormal_vertex,\n\tbsdfs: bsdfs,\n\tbumpmap_pars_fragment: bumpmap_pars_fragment,\n\tclipping_planes_fragment: clipping_planes_fragment,\n\tclipping_planes_pars_fragment: clipping_planes_pars_fragment,\n\tclipping_planes_pars_vertex: clipping_planes_pars_vertex,\n\tclipping_planes_vertex: clipping_planes_vertex,\n\tcolor_fragment: color_fragment,\n\tcolor_pars_fragment: color_pars_fragment,\n\tcolor_pars_vertex: color_pars_vertex,\n\tcolor_vertex: color_vertex,\n\tcommon: common,\n\tcube_uv_reflection_fragment: cube_uv_reflection_fragment,\n\tdefaultnormal_vertex: defaultnormal_vertex,\n\tdisplacementmap_pars_vertex: displacementmap_pars_vertex,\n\tdisplacementmap_vertex: displacementmap_vertex,\n\temissivemap_fragment: emissivemap_fragment,\n\temissivemap_pars_fragment: emissivemap_pars_fragment,\n\tencodings_fragment: encodings_fragment,\n\tencodings_pars_fragment: encodings_pars_fragment,\n\tenvmap_fragment: envmap_fragment,\n\tenvmap_pars_fragment: envmap_pars_fragment,\n\tenvmap_pars_vertex: envmap_pars_vertex,\n\tenvmap_vertex: envmap_vertex,\n\tfog_vertex: fog_vertex,\n\tfog_pars_vertex: fog_pars_vertex,\n\tfog_fragment: fog_fragment,\n\tfog_pars_fragment: fog_pars_fragment,\n\tgradientmap_pars_fragment: gradientmap_pars_fragment,\n\tlightmap_fragment: lightmap_fragment,\n\tlightmap_pars_fragment: lightmap_pars_fragment,\n\tlights_lambert_vertex: lights_lambert_vertex,\n\tlights_pars_begin: lights_pars_begin,\n\tlights_pars_maps: lights_pars_maps,\n\tlights_phong_fragment: lights_phong_fragment,\n\tlights_phong_pars_fragment: lights_phong_pars_fragment,\n\tlights_physical_fragment: lights_physical_fragment,\n\tlights_physical_pars_fragment: lights_physical_pars_fragment,\n\tlights_fragment_begin: lights_fragment_begin,\n\tlights_fragment_maps: lights_fragment_maps,\n\tlights_fragment_end: lights_fragment_end,\n\tlogdepthbuf_fragment: logdepthbuf_fragment,\n\tlogdepthbuf_pars_fragment: logdepthbuf_pars_fragment,\n\tlogdepthbuf_pars_vertex: logdepthbuf_pars_vertex,\n\tlogdepthbuf_vertex: logdepthbuf_vertex,\n\tmap_fragment: map_fragment,\n\tmap_pars_fragment: map_pars_fragment,\n\tmap_particle_fragment: map_particle_fragment,\n\tmap_particle_pars_fragment: map_particle_pars_fragment,\n\tmetalnessmap_fragment: metalnessmap_fragment,\n\tmetalnessmap_pars_fragment: metalnessmap_pars_fragment,\n\tmorphnormal_vertex: morphnormal_vertex,\n\tmorphtarget_pars_vertex: morphtarget_pars_vertex,\n\tmorphtarget_vertex: morphtarget_vertex,\n\tnormal_fragment_begin: normal_fragment_begin,\n\tnormal_fragment_maps: normal_fragment_maps,\n\tnormalmap_pars_fragment: normalmap_pars_fragment,\n\tpacking: packing,\n\tpremultiplied_alpha_fragment: premultiplied_alpha_fragment,\n\tproject_vertex: project_vertex,\n\tdithering_fragment: dithering_fragment,\n\tdithering_pars_fragment: dithering_pars_fragment,\n\troughnessmap_fragment: roughnessmap_fragment,\n\troughnessmap_pars_fragment: roughnessmap_pars_fragment,\n\tshadowmap_pars_fragment: shadowmap_pars_fragment,\n\tshadowmap_pars_vertex: shadowmap_pars_vertex,\n\tshadowmap_vertex: shadowmap_vertex,\n\tshadowmask_pars_fragment: shadowmask_pars_fragment,\n\tskinbase_vertex: skinbase_vertex,\n\tskinning_pars_vertex: skinning_pars_vertex,\n\tskinning_vertex: skinning_vertex,\n\tskinnormal_vertex: skinnormal_vertex,\n\tspecularmap_fragment: specularmap_fragment,\n\tspecularmap_pars_fragment: specularmap_pars_fragment,\n\ttonemapping_fragment: tonemapping_fragment,\n\ttonemapping_pars_fragment: tonemapping_pars_fragment,\n\tuv_pars_fragment: uv_pars_fragment,\n\tuv_pars_vertex: uv_pars_vertex,\n\tuv_vertex: uv_vertex,\n\tuv2_pars_fragment: uv2_pars_fragment,\n\tuv2_pars_vertex: uv2_pars_vertex,\n\tuv2_vertex: uv2_vertex,\n\tworldpos_vertex: worldpos_vertex,\n\n\tcube_frag: cube_frag,\n\tcube_vert: cube_vert,\n\tdepth_frag: depth_frag,\n\tdepth_vert: depth_vert,\n\tdistanceRGBA_frag: distanceRGBA_frag,\n\tdistanceRGBA_vert: distanceRGBA_vert,\n\tequirect_frag: equirect_frag,\n\tequirect_vert: equirect_vert,\n\tlinedashed_frag: linedashed_frag,\n\tlinedashed_vert: linedashed_vert,\n\tmeshbasic_frag: meshbasic_frag,\n\tmeshbasic_vert: meshbasic_vert,\n\tmeshlambert_frag: meshlambert_frag,\n\tmeshlambert_vert: meshlambert_vert,\n\tmeshphong_frag: meshphong_frag,\n\tmeshphong_vert: meshphong_vert,\n\tmeshphysical_frag: meshphysical_frag,\n\tmeshphysical_vert: meshphysical_vert,\n\tnormal_frag: normal_frag,\n\tnormal_vert: normal_vert,\n\tpoints_frag: points_frag,\n\tpoints_vert: points_vert,\n\tshadow_frag: shadow_frag,\n\tshadow_vert: shadow_vert\n};\n\n/**\n * Uniform Utilities\n */\n\nvar UniformsUtils = {\n\n\tmerge: function ( uniforms ) {\n\n\t\tvar merged = {};\n\n\t\tfor ( var u = 0; u < uniforms.length; u ++ ) {\n\n\t\t\tvar tmp = this.clone( uniforms[ u ] );\n\n\t\t\tfor ( var p in tmp ) {\n\n\t\t\t\tmerged[ p ] = tmp[ p ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn merged;\n\n\t},\n\n\tclone: function ( uniforms_src ) {\n\n\t\tvar uniforms_dst = {};\n\n\t\tfor ( var u in uniforms_src ) {\n\n\t\t\tuniforms_dst[ u ] = {};\n\n\t\t\tfor ( var p in uniforms_src[ u ] ) {\n\n\t\t\t\tvar parameter_src = uniforms_src[ u ][ p ];\n\n\t\t\t\tif ( parameter_src && ( parameter_src.isColor ||\n\t\t\t\t\tparameter_src.isMatrix3 || parameter_src.isMatrix4 ||\n\t\t\t\t\tparameter_src.isVector2 || parameter_src.isVector3 || parameter_src.isVector4 ||\n\t\t\t\t\tparameter_src.isTexture ) ) {\n\n\t\t\t\t\tuniforms_dst[ u ][ p ] = parameter_src.clone();\n\n\t\t\t\t} else if ( Array.isArray( parameter_src ) ) {\n\n\t\t\t\t\tuniforms_dst[ u ][ p ] = parameter_src.slice();\n\n\t\t\t\t} else {\n\n\t\t\t\t\tuniforms_dst[ u ][ p ] = parameter_src;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn uniforms_dst;\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar ColorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\nfunction Color( r, g, b ) {\n\n\tif ( g === undefined && b === undefined ) {\n\n\t\t// r is THREE.Color, hex or string\n\t\treturn this.set( r );\n\n\t}\n\n\treturn this.setRGB( r, g, b );\n\n}\n\nObject.assign( Color.prototype, {\n\n\tisColor: true,\n\n\tr: 1, g: 1, b: 1,\n\n\tset: function ( value ) {\n\n\t\tif ( value && value.isColor ) {\n\n\t\t\tthis.copy( value );\n\n\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\tthis.setHex( value );\n\n\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\tthis.setStyle( value );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetHex: function ( hex ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\treturn this;\n\n\t},\n\n\tsetRGB: function ( r, g, b ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\treturn this;\n\n\t},\n\n\tsetHSL: function () {\n\n\t\tfunction hue2rgb( p, q, t ) {\n\n\t\t\tif ( t < 0 ) t += 1;\n\t\t\tif ( t > 1 ) t -= 1;\n\t\t\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\t\t\tif ( t < 1 / 2 ) return q;\n\t\t\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\t\t\treturn p;\n\n\t\t}\n\n\t\treturn function setHSL( h, s, l ) {\n\n\t\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\t\th = _Math.euclideanModulo( h, 1 );\n\t\t\ts = _Math.clamp( s, 0, 1 );\n\t\t\tl = _Math.clamp( l, 0, 1 );\n\n\t\t\tif ( s === 0 ) {\n\n\t\t\t\tthis.r = this.g = this.b = l;\n\n\t\t\t} else {\n\n\t\t\t\tvar p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\t\tvar q = ( 2 * l ) - p;\n\n\t\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tsetStyle: function ( style ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tvar m;\n\n\t\tif ( m = /^((?:rgb|hsl)a?)\\(\\s*([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tvar color;\n\t\t\tvar name = m[ 1 ];\n\t\t\tvar components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^([0-9]*\\.?[0-9]+)\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\t\t\t\t\t\tvar h = parseFloat( color[ 1 ] ) / 360;\n\t\t\t\t\t\tvar s = parseInt( color[ 2 ], 10 ) / 100;\n\t\t\t\t\t\tvar l = parseInt( color[ 3 ], 10 ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this.setHSL( h, s, l );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f0-9]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tvar hex = m[ 1 ];\n\t\t\tvar size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( style && style.length > 0 ) {\n\n\t\t\t// color keywords\n\t\t\tvar hex = ColorKeywords[ style ];\n\n\t\t\tif ( hex !== undefined ) {\n\n\t\t\t\t// red\n\t\t\t\tthis.setHex( hex );\n\n\t\t\t} else {\n\n\t\t\t\t// unknown color\n\t\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t},\n\n\tcopy: function ( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t},\n\n\tcopyGammaToLinear: function ( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tthis.r = Math.pow( color.r, gammaFactor );\n\t\tthis.g = Math.pow( color.g, gammaFactor );\n\t\tthis.b = Math.pow( color.b, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tcopyLinearToGamma: function ( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tvar safeInverse = ( gammaFactor > 0 ) ? ( 1.0 / gammaFactor ) : 1.0;\n\n\t\tthis.r = Math.pow( color.r, safeInverse );\n\t\tthis.g = Math.pow( color.g, safeInverse );\n\t\tthis.b = Math.pow( color.b, safeInverse );\n\n\t\treturn this;\n\n\t},\n\n\tconvertGammaToLinear: function ( gammaFactor ) {\n\n\t\tthis.copyGammaToLinear( this, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tconvertLinearToGamma: function ( gammaFactor ) {\n\n\t\tthis.copyLinearToGamma( this, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tcopySRGBToLinear: function () {\n\n\t\tfunction SRGBToLinear( c ) {\n\n\t\t\treturn ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );\n\n\t\t}\n\n\t\treturn function copySRGBToLinear( color ) {\n\n\t\t\tthis.r = SRGBToLinear( color.r );\n\t\t\tthis.g = SRGBToLinear( color.g );\n\t\t\tthis.b = SRGBToLinear( color.b );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tcopyLinearToSRGB: function () {\n\n\t\tfunction LinearToSRGB( c ) {\n\n\t\t\treturn ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;\n\n\t\t}\n\n\t\treturn function copyLinearToSRGB( color ) {\n\n\t\t\tthis.r = LinearToSRGB( color.r );\n\t\t\tthis.g = LinearToSRGB( color.g );\n\t\t\tthis.b = LinearToSRGB( color.b );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tconvertSRGBToLinear: function () {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t},\n\n\tconvertLinearToSRGB: function () {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t},\n\n\tgetHex: function () {\n\n\t\treturn ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;\n\n\t},\n\n\tgetHexString: function () {\n\n\t\treturn ( '000000' + this.getHex().toString( 16 ) ).slice( - 6 );\n\n\t},\n\n\tgetHSL: function ( target ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Color: .getHSL() target is now required' );\n\t\t\ttarget = { h: 0, s: 0, l: 0 };\n\n\t\t}\n\n\t\tvar r = this.r, g = this.g, b = this.b;\n\n\t\tvar max = Math.max( r, g, b );\n\t\tvar min = Math.min( r, g, b );\n\n\t\tvar hue, saturation;\n\t\tvar lightness = ( min + max ) / 2.0;\n\n\t\tif ( min === max ) {\n\n\t\t\thue = 0;\n\t\t\tsaturation = 0;\n\n\t\t} else {\n\n\t\t\tvar delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\ttarget.h = hue;\n\t\ttarget.s = saturation;\n\t\ttarget.l = lightness;\n\n\t\treturn target;\n\n\t},\n\n\tgetStyle: function () {\n\n\t\treturn 'rgb(' + ( ( this.r * 255 ) | 0 ) + ',' + ( ( this.g * 255 ) | 0 ) + ',' + ( ( this.b * 255 ) | 0 ) + ')';\n\n\t},\n\n\toffsetHSL: function () {\n\n\t\tvar hsl = {};\n\n\t\treturn function ( h, s, l ) {\n\n\t\t\tthis.getHSL( hsl );\n\n\t\t\thsl.h += h; hsl.s += s; hsl.l += l;\n\n\t\t\tthis.setHSL( hsl.h, hsl.s, hsl.l );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tadd: function ( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t},\n\n\taddColors: function ( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t},\n\n\tlerp: function ( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\treturn this.getHex();\n\n\t}\n\n} );\n\n/**\n * Uniforms library for shared webgl shaders\n */\n\nvar UniformsLib = {\n\n\tcommon: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\n\t\tmap: { value: null },\n\t\tuvTransform: { value: new Matrix3() },\n\n\t\talphaMap: { value: null },\n\n\t},\n\n\tspecularmap: {\n\n\t\tspecularMap: { value: null },\n\n\t},\n\n\tenvmap: {\n\n\t\tenvMap: { value: null },\n\t\tflipEnvMap: { value: - 1 },\n\t\treflectivity: { value: 1.0 },\n\t\trefractionRatio: { value: 0.98 },\n\t\tmaxMipLevel: { value: 0 }\n\n\t},\n\n\taomap: {\n\n\t\taoMap: { value: null },\n\t\taoMapIntensity: { value: 1 }\n\n\t},\n\n\tlightmap: {\n\n\t\tlightMap: { value: null },\n\t\tlightMapIntensity: { value: 1 }\n\n\t},\n\n\temissivemap: {\n\n\t\temissiveMap: { value: null }\n\n\t},\n\n\tbumpmap: {\n\n\t\tbumpMap: { value: null },\n\t\tbumpScale: { value: 1 }\n\n\t},\n\n\tnormalmap: {\n\n\t\tnormalMap: { value: null },\n\t\tnormalScale: { value: new Vector2( 1, 1 ) }\n\n\t},\n\n\tdisplacementmap: {\n\n\t\tdisplacementMap: { value: null },\n\t\tdisplacementScale: { value: 1 },\n\t\tdisplacementBias: { value: 0 }\n\n\t},\n\n\troughnessmap: {\n\n\t\troughnessMap: { value: null }\n\n\t},\n\n\tmetalnessmap: {\n\n\t\tmetalnessMap: { value: null }\n\n\t},\n\n\tgradientmap: {\n\n\t\tgradientMap: { value: null }\n\n\t},\n\n\tfog: {\n\n\t\tfogDensity: { value: 0.00025 },\n\t\tfogNear: { value: 1 },\n\t\tfogFar: { value: 2000 },\n\t\tfogColor: { value: new Color( 0xffffff ) }\n\n\t},\n\n\tlights: {\n\n\t\tambientLightColor: { value: [] },\n\n\t\tdirectionalLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tcolor: {},\n\n\t\t\tshadow: {},\n\t\t\tshadowBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tdirectionalShadowMap: { value: [] },\n\t\tdirectionalShadowMatrix: { value: [] },\n\n\t\tspotLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdirection: {},\n\t\t\tdistance: {},\n\t\t\tconeCos: {},\n\t\t\tpenumbraCos: {},\n\t\t\tdecay: {},\n\n\t\t\tshadow: {},\n\t\t\tshadowBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tspotShadowMap: { value: [] },\n\t\tspotShadowMatrix: { value: [] },\n\n\t\tpointLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdecay: {},\n\t\t\tdistance: {},\n\n\t\t\tshadow: {},\n\t\t\tshadowBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {},\n\t\t\tshadowCameraNear: {},\n\t\t\tshadowCameraFar: {}\n\t\t} },\n\n\t\tpointShadowMap: { value: [] },\n\t\tpointShadowMatrix: { value: [] },\n\n\t\themisphereLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tskyColor: {},\n\t\t\tgroundColor: {}\n\t\t} },\n\n\t\t// TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\n\t\trectAreaLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\twidth: {},\n\t\t\theight: {}\n\t\t} }\n\n\t},\n\n\tpoints: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\t\tsize: { value: 1.0 },\n\t\tscale: { value: 1.0 },\n\t\tmap: { value: null },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t}\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n */\n\nvar ShaderLib = {\n\n\tbasic: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshbasic_vert,\n\t\tfragmentShader: ShaderChunk.meshbasic_frag\n\n\t},\n\n\tlambert: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshlambert_vert,\n\t\tfragmentShader: ShaderChunk.meshlambert_frag\n\n\t},\n\n\tphong: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.gradientmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\tspecular: { value: new Color( 0x111111 ) },\n\t\t\t\tshininess: { value: 30 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphong_vert,\n\t\tfragmentShader: ShaderChunk.meshphong_frag\n\n\t},\n\n\tstandard: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.roughnessmap,\n\t\t\tUniformsLib.metalnessmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\troughness: { value: 0.5 },\n\t\t\t\tmetalness: { value: 0.5 },\n\t\t\t\tenvMapIntensity: { value: 1 } // temporary\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphysical_vert,\n\t\tfragmentShader: ShaderChunk.meshphysical_frag\n\n\t},\n\n\tpoints: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\t\t\tUniformsLib.points,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.points_vert,\n\t\tfragmentShader: ShaderChunk.points_frag\n\n\t},\n\n\tdashed: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tscale: { value: 1 },\n\t\t\t\tdashSize: { value: 1 },\n\t\t\t\ttotalSize: { value: 2 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.linedashed_vert,\n\t\tfragmentShader: ShaderChunk.linedashed_frag\n\n\t},\n\n\tdepth: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.depth_vert,\n\t\tfragmentShader: ShaderChunk.depth_frag\n\n\t},\n\n\tnormal: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.normal_vert,\n\t\tfragmentShader: ShaderChunk.normal_frag\n\n\t},\n\n\t/* -------------------------------------------------------------------------\n\t//\tCube map shader\n\t ------------------------------------------------------------------------- */\n\n\tcube: {\n\n\t\tuniforms: {\n\t\t\ttCube: { value: null },\n\t\t\ttFlip: { value: - 1 },\n\t\t\topacity: { value: 1.0 }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.cube_vert,\n\t\tfragmentShader: ShaderChunk.cube_frag\n\n\t},\n\n\tequirect: {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.equirect_vert,\n\t\tfragmentShader: ShaderChunk.equirect_frag\n\n\t},\n\n\tdistanceRGBA: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\treferencePosition: { value: new Vector3() },\n\t\t\t\tnearDistance: { value: 1 },\n\t\t\t\tfarDistance: { value: 1000 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.distanceRGBA_vert,\n\t\tfragmentShader: ShaderChunk.distanceRGBA_frag\n\n\t},\n\n\tshadow: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\t\t\tUniformsLib.lights,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tcolor: { value: new Color( 0x00000 ) },\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t},\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.shadow_vert,\n\t\tfragmentShader: ShaderChunk.shadow_frag\n\n\t}\n\n};\n\nShaderLib.physical = {\n\n\tuniforms: UniformsUtils.merge( [\n\t\tShaderLib.standard.uniforms,\n\t\t{\n\t\t\tclearCoat: { value: 0 },\n\t\t\tclearCoatRoughness: { value: 0 }\n\t\t}\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLAnimation() {\n\n\tvar context = null;\n\tvar isAnimating = false;\n\tvar animationLoop = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tif ( isAnimating === false ) return;\n\n\t\tanimationLoop( time, frame );\n\n\t\tcontext.requestAnimationFrame( onAnimationFrame );\n\n\t}\n\n\treturn {\n\n\t\tstart: function () {\n\n\t\t\tif ( isAnimating === true ) return;\n\t\t\tif ( animationLoop === null ) return;\n\n\t\t\tcontext.requestAnimationFrame( onAnimationFrame );\n\n\t\t\tisAnimating = true;\n\n\t\t},\n\n\t\tstop: function () {\n\n\t\t\tisAnimating = false;\n\n\t\t},\n\n\t\tsetAnimationLoop: function ( callback ) {\n\n\t\t\tanimationLoop = callback;\n\n\t\t},\n\n\t\tsetContext: function ( value ) {\n\n\t\t\tcontext = value;\n\n\t\t}\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLAttributes( gl ) {\n\n\tvar buffers = new WeakMap();\n\n\tfunction createBuffer( attribute, bufferType ) {\n\n\t\tvar array = attribute.array;\n\t\tvar usage = attribute.dynamic ? gl.DYNAMIC_DRAW : gl.STATIC_DRAW;\n\n\t\tvar buffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\t\tgl.bufferData( bufferType, array, usage );\n\n\t\tattribute.onUploadCallback();\n\n\t\tvar type = gl.FLOAT;\n\n\t\tif ( array instanceof Float32Array ) {\n\n\t\t\ttype = gl.FLOAT;\n\n\t\t} else if ( array instanceof Float64Array ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.' );\n\n\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\ttype = gl.UNSIGNED_SHORT;\n\n\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\ttype = gl.SHORT;\n\n\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\ttype = gl.UNSIGNED_INT;\n\n\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\ttype = gl.INT;\n\n\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\ttype = gl.BYTE;\n\n\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\ttype = gl.UNSIGNED_BYTE;\n\n\t\t}\n\n\t\treturn {\n\t\t\tbuffer: buffer,\n\t\t\ttype: type,\n\t\t\tbytesPerElement: array.BYTES_PER_ELEMENT,\n\t\t\tversion: attribute.version\n\t\t};\n\n\t}\n\n\tfunction updateBuffer( buffer, attribute, bufferType ) {\n\n\t\tvar array = attribute.array;\n\t\tvar updateRange = attribute.updateRange;\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\n\t\tif ( attribute.dynamic === false ) {\n\n\t\t\tgl.bufferData( bufferType, array, gl.STATIC_DRAW );\n\n\t\t} else if ( updateRange.count === - 1 ) {\n\n\t\t\t// Not using update ranges\n\n\t\t\tgl.bufferSubData( bufferType, 0, array );\n\n\t\t} else if ( updateRange.count === 0 ) {\n\n\t\t\tconsole.error( 'THREE.WebGLObjects.updateBuffer: dynamic THREE.BufferAttribute marked as needsUpdate but updateRange.count is 0, ensure you are using set methods or updating manually.' );\n\n\t\t} else {\n\n\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\tarray.subarray( updateRange.offset, updateRange.offset + updateRange.count ) );\n\n\t\t\tupdateRange.count = - 1; // reset range\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction get( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\treturn buffers.get( attribute );\n\n\t}\n\n\tfunction remove( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tvar data = buffers.get( attribute );\n\n\t\tif ( data ) {\n\n\t\t\tgl.deleteBuffer( data.buffer );\n\n\t\t\tbuffers.delete( attribute );\n\n\t\t}\n\n\t}\n\n\tfunction update( attribute, bufferType ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tvar data = buffers.get( attribute );\n\n\t\tif ( data === undefined ) {\n\n\t\t\tbuffers.set( attribute, createBuffer( attribute, bufferType ) );\n\n\t\t} else if ( data.version < attribute.version ) {\n\n\t\t\tupdateBuffer( data.buffer, attribute, bufferType );\n\n\t\t\tdata.version = attribute.version;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n */\n\nfunction Euler( x, y, z, order ) {\n\n\tthis._x = x || 0;\n\tthis._y = y || 0;\n\tthis._z = z || 0;\n\tthis._order = order || Euler.DefaultOrder;\n\n}\n\nEuler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ];\n\nEuler.DefaultOrder = 'XYZ';\n\nObject.defineProperties( Euler.prototype, {\n\n\tx: {\n\n\t\tget: function () {\n\n\t\t\treturn this._x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._x = value;\n\t\t\tthis.onChangeCallback();\n\n\t\t}\n\n\t},\n\n\ty: {\n\n\t\tget: function () {\n\n\t\t\treturn this._y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._y = value;\n\t\t\tthis.onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tz: {\n\n\t\tget: function () {\n\n\t\t\treturn this._z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._z = value;\n\t\t\tthis.onChangeCallback();\n\n\t\t}\n\n\t},\n\n\torder: {\n\n\t\tget: function () {\n\n\t\t\treturn this._order;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._order = value;\n\t\t\tthis.onChangeCallback();\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Euler.prototype, {\n\n\tisEuler: true,\n\n\tset: function ( x, y, z, order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order || this._order;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t},\n\n\tcopy: function ( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromRotationMatrix: function ( m, order, update ) {\n\n\t\tvar clamp = _Math.clamp;\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tvar te = m.elements;\n\t\tvar m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tvar m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tvar m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\torder = order || this._order;\n\n\t\tif ( order === 'XYZ' ) {\n\n\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m13 ) < 0.99999 ) {\n\n\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\tthis._z = 0;\n\n\t\t\t}\n\n\t\t} else if ( order === 'YXZ' ) {\n\n\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m23 ) < 0.99999 ) {\n\n\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\tthis._z = 0;\n\n\t\t\t}\n\n\t\t} else if ( order === 'ZXY' ) {\n\n\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m32 ) < 0.99999 ) {\n\n\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._y = 0;\n\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t}\n\n\t\t} else if ( order === 'ZYX' ) {\n\n\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m31 ) < 0.99999 ) {\n\n\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t}\n\n\t\t} else if ( order === 'YZX' ) {\n\n\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m21 ) < 0.99999 ) {\n\n\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t}\n\n\t\t} else if ( order === 'XZY' ) {\n\n\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m12 ) < 0.99999 ) {\n\n\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\tthis._y = 0;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() given unsupported order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update !== false ) this.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromQuaternion: function () {\n\n\t\tvar matrix = new Matrix4();\n\n\t\treturn function setFromQuaternion( q, order, update ) {\n\n\t\t\tmatrix.makeRotationFromQuaternion( q );\n\n\t\t\treturn this.setFromRotationMatrix( matrix, order, update );\n\n\t\t};\n\n\t}(),\n\n\tsetFromVector3: function ( v, order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order || this._order );\n\n\t},\n\n\treorder: function () {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\tvar q = new Quaternion();\n\n\t\treturn function reorder( newOrder ) {\n\n\t\t\tq.setFromEuler( this );\n\n\t\t\treturn this.setFromQuaternion( q, newOrder );\n\n\t\t};\n\n\t}(),\n\n\tequals: function ( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t},\n\n\tfromArray: function ( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._order;\n\n\t\treturn array;\n\n\t},\n\n\ttoVector3: function ( optionalResult ) {\n\n\t\tif ( optionalResult ) {\n\n\t\t\treturn optionalResult.set( this._x, this._y, this._z );\n\n\t\t} else {\n\n\t\t\treturn new Vector3( this._x, this._y, this._z );\n\n\t\t}\n\n\t},\n\n\tonChange: function ( callback ) {\n\n\t\tthis.onChangeCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\tonChangeCallback: function () {}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Layers() {\n\n\tthis.mask = 1 | 0;\n\n}\n\nObject.assign( Layers.prototype, {\n\n\tset: function ( channel ) {\n\n\t\tthis.mask = 1 << channel | 0;\n\n\t},\n\n\tenable: function ( channel ) {\n\n\t\tthis.mask |= 1 << channel | 0;\n\n\t},\n\n\ttoggle: function ( channel ) {\n\n\t\tthis.mask ^= 1 << channel | 0;\n\n\t},\n\n\tdisable: function ( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel | 0 );\n\n\t},\n\n\ttest: function ( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author elephantatwork / www.elephantatwork.ch\n */\n\nvar object3DId = 0;\n\nfunction Object3D() {\n\n\tObject.defineProperty( this, 'id', { value: object3DId ++ } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Object3D';\n\n\tthis.parent = null;\n\tthis.children = [];\n\n\tthis.up = Object3D.DefaultUp.clone();\n\n\tvar position = new Vector3();\n\tvar rotation = new Euler();\n\tvar quaternion = new Quaternion();\n\tvar scale = new Vector3( 1, 1, 1 );\n\n\tfunction onRotationChange() {\n\n\t\tquaternion.setFromEuler( rotation, false );\n\n\t}\n\n\tfunction onQuaternionChange() {\n\n\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t}\n\n\trotation.onChange( onRotationChange );\n\tquaternion.onChange( onQuaternionChange );\n\n\tObject.defineProperties( this, {\n\t\tposition: {\n\t\t\tenumerable: true,\n\t\t\tvalue: position\n\t\t},\n\t\trotation: {\n\t\t\tenumerable: true,\n\t\t\tvalue: rotation\n\t\t},\n\t\tquaternion: {\n\t\t\tenumerable: true,\n\t\t\tvalue: quaternion\n\t\t},\n\t\tscale: {\n\t\t\tenumerable: true,\n\t\t\tvalue: scale\n\t\t},\n\t\tmodelViewMatrix: {\n\t\t\tvalue: new Matrix4()\n\t\t},\n\t\tnormalMatrix: {\n\t\t\tvalue: new Matrix3()\n\t\t}\n\t} );\n\n\tthis.matrix = new Matrix4();\n\tthis.matrixWorld = new Matrix4();\n\n\tthis.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate;\n\tthis.matrixWorldNeedsUpdate = false;\n\n\tthis.layers = new Layers();\n\tthis.visible = true;\n\n\tthis.castShadow = false;\n\tthis.receiveShadow = false;\n\n\tthis.frustumCulled = true;\n\tthis.renderOrder = 0;\n\n\tthis.userData = {};\n\n}\n\nObject3D.DefaultUp = new Vector3( 0, 1, 0 );\nObject3D.DefaultMatrixAutoUpdate = true;\n\nObject3D.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Object3D,\n\n\tisObject3D: true,\n\n\tonBeforeRender: function () {},\n\tonAfterRender: function () {},\n\n\tapplyMatrix: function ( matrix ) {\n\n\t\tthis.matrix.multiplyMatrices( matrix, this.matrix );\n\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t},\n\n\tapplyQuaternion: function ( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t},\n\n\tsetRotationFromAxisAngle: function ( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t},\n\n\tsetRotationFromEuler: function ( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t},\n\n\tsetRotationFromMatrix: function ( m ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t},\n\n\tsetRotationFromQuaternion: function ( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t},\n\n\trotateOnAxis: function () {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\tvar q1 = new Quaternion();\n\n\t\treturn function rotateOnAxis( axis, angle ) {\n\n\t\t\tq1.setFromAxisAngle( axis, angle );\n\n\t\t\tthis.quaternion.multiply( q1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateOnWorldAxis: function () {\n\n\t\t// rotate object on axis in world space\n\t\t// axis is assumed to be normalized\n\t\t// method assumes no rotated parent\n\n\t\tvar q1 = new Quaternion();\n\n\t\treturn function rotateOnWorldAxis( axis, angle ) {\n\n\t\t\tq1.setFromAxisAngle( axis, angle );\n\n\t\t\tthis.quaternion.premultiply( q1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateX: function () {\n\n\t\tvar v1 = new Vector3( 1, 0, 0 );\n\n\t\treturn function rotateX( angle ) {\n\n\t\t\treturn this.rotateOnAxis( v1, angle );\n\n\t\t};\n\n\t}(),\n\n\trotateY: function () {\n\n\t\tvar v1 = new Vector3( 0, 1, 0 );\n\n\t\treturn function rotateY( angle ) {\n\n\t\t\treturn this.rotateOnAxis( v1, angle );\n\n\t\t};\n\n\t}(),\n\n\trotateZ: function () {\n\n\t\tvar v1 = new Vector3( 0, 0, 1 );\n\n\t\treturn function rotateZ( angle ) {\n\n\t\t\treturn this.rotateOnAxis( v1, angle );\n\n\t\t};\n\n\t}(),\n\n\ttranslateOnAxis: function () {\n\n\t\t// translate object by distance along axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function translateOnAxis( axis, distance ) {\n\n\t\t\tv1.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\t\tthis.position.add( v1.multiplyScalar( distance ) );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslateX: function () {\n\n\t\tvar v1 = new Vector3( 1, 0, 0 );\n\n\t\treturn function translateX( distance ) {\n\n\t\t\treturn this.translateOnAxis( v1, distance );\n\n\t\t};\n\n\t}(),\n\n\ttranslateY: function () {\n\n\t\tvar v1 = new Vector3( 0, 1, 0 );\n\n\t\treturn function translateY( distance ) {\n\n\t\t\treturn this.translateOnAxis( v1, distance );\n\n\t\t};\n\n\t}(),\n\n\ttranslateZ: function () {\n\n\t\tvar v1 = new Vector3( 0, 0, 1 );\n\n\t\treturn function translateZ( distance ) {\n\n\t\t\treturn this.translateOnAxis( v1, distance );\n\n\t\t};\n\n\t}(),\n\n\tlocalToWorld: function ( vector ) {\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t},\n\n\tworldToLocal: function () {\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function worldToLocal( vector ) {\n\n\t\t\treturn vector.applyMatrix4( m1.getInverse( this.matrixWorld ) );\n\n\t\t};\n\n\t}(),\n\n\tlookAt: function () {\n\n\t\t// This method does not support objects with rotated and/or translated parent(s)\n\n\t\tvar m1 = new Matrix4();\n\t\tvar vector = new Vector3();\n\n\t\treturn function lookAt( x, y, z ) {\n\n\t\t\tif ( x.isVector3 ) {\n\n\t\t\t\tvector.copy( x );\n\n\t\t\t} else {\n\n\t\t\t\tvector.set( x, y, z );\n\n\t\t\t}\n\n\t\t\tif ( this.isCamera ) {\n\n\t\t\t\tm1.lookAt( this.position, vector, this.up );\n\n\t\t\t} else {\n\n\t\t\t\tm1.lookAt( vector, this.position, this.up );\n\n\t\t\t}\n\n\t\t\tthis.quaternion.setFromRotationMatrix( m1 );\n\n\t\t};\n\n\t}(),\n\n\tadd: function ( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( var i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object === this ) {\n\n\t\t\tconsole.error( \"THREE.Object3D.add: object can't be added as a child of itself.\", object );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( ( object && object.isObject3D ) ) {\n\n\t\t\tif ( object.parent !== null ) {\n\n\t\t\t\tobject.parent.remove( object );\n\n\t\t\t}\n\n\t\t\tobject.parent = this;\n\t\t\tobject.dispatchEvent( { type: 'added' } );\n\n\t\t\tthis.children.push( object );\n\n\t\t} else {\n\n\t\t\tconsole.error( \"THREE.Object3D.add: object not an instance of THREE.Object3D.\", object );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tremove: function ( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( var i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvar index = this.children.indexOf( object );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tobject.parent = null;\n\n\t\t\tobject.dispatchEvent( { type: 'removed' } );\n\n\t\t\tthis.children.splice( index, 1 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetObjectById: function ( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t},\n\n\tgetObjectByName: function ( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t},\n\n\tgetObjectByProperty: function ( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( var i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tvar child = this.children[ i ];\n\t\t\tvar object = child.getObjectByProperty( name, value );\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t},\n\n\tgetWorldPosition: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldPosition() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t},\n\n\tgetWorldQuaternion: function () {\n\n\t\tvar position = new Vector3();\n\t\tvar scale = new Vector3();\n\n\t\treturn function getWorldQuaternion( target ) {\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Object3D: .getWorldQuaternion() target is now required' );\n\t\t\t\ttarget = new Quaternion();\n\n\t\t\t}\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.matrixWorld.decompose( position, target, scale );\n\n\t\t\treturn target;\n\n\t\t};\n\n\t}(),\n\n\tgetWorldScale: function () {\n\n\t\tvar position = new Vector3();\n\t\tvar quaternion = new Quaternion();\n\n\t\treturn function getWorldScale( target ) {\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Object3D: .getWorldScale() target is now required' );\n\t\t\t\ttarget = new Vector3();\n\n\t\t\t}\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.matrixWorld.decompose( position, quaternion, target );\n\n\t\t\treturn target;\n\n\t\t};\n\n\t}(),\n\n\tgetWorldDirection: function () {\n\n\t\tvar quaternion = new Quaternion();\n\n\t\treturn function getWorldDirection( target ) {\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Object3D: .getWorldDirection() target is now required' );\n\t\t\t\ttarget = new Vector3();\n\n\t\t\t}\n\n\t\t\tthis.getWorldQuaternion( quaternion );\n\n\t\t\treturn target.set( 0, 0, 1 ).applyQuaternion( quaternion );\n\n\t\t};\n\n\t}(),\n\n\traycast: function () {},\n\n\ttraverse: function ( callback ) {\n\n\t\tcallback( this );\n\n\t\tvar children = this.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverse( callback );\n\n\t\t}\n\n\t},\n\n\ttraverseVisible: function ( callback ) {\n\n\t\tif ( this.visible === false ) return;\n\n\t\tcallback( this );\n\n\t\tvar children = this.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t}\n\n\t},\n\n\ttraverseAncestors: function ( callback ) {\n\n\t\tvar parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tcallback( parent );\n\n\t\t\tparent.traverseAncestors( callback );\n\n\t\t}\n\n\t},\n\n\tupdateMatrix: function () {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldNeedsUpdate || force ) {\n\n\t\t\tif ( this.parent === null ) {\n\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\n\t\t}\n\n\t\t// update children\n\n\t\tvar children = this.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].updateMatrixWorld( force );\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\t// meta is a string when called from JSON.stringify\n\t\tvar isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tvar output = {};\n\n\t\t// meta is a hash used to collect geometries, materials.\n\t\t// not providing it implies that this is the root object\n\t\t// being serialized.\n\t\tif ( isRootObject ) {\n\n\t\t\t// initialize meta obj\n\t\t\tmeta = {\n\t\t\t\tgeometries: {},\n\t\t\t\tmaterials: {},\n\t\t\t\ttextures: {},\n\t\t\t\timages: {},\n\t\t\t\tshapes: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Object',\n\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t};\n\n\t\t}\n\n\t\t// standard Object3D serialization\n\n\t\tvar object = {};\n\n\t\tobject.uuid = this.uuid;\n\t\tobject.type = this.type;\n\n\t\tif ( this.name !== '' ) object.name = this.name;\n\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\tif ( this.visible === false ) object.visible = false;\n\t\tif ( this.frustumCulled === false ) object.frustumCulled = false;\n\t\tif ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData;\n\n\t\tobject.layers = this.layers.mask;\n\t\tobject.matrix = this.matrix.toArray();\n\n\t\tif ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;\n\n\t\t//\n\n\t\tfunction serialize( library, element ) {\n\n\t\t\tif ( library[ element.uuid ] === undefined ) {\n\n\t\t\t\tlibrary[ element.uuid ] = element.toJSON( meta );\n\n\t\t\t}\n\n\t\t\treturn element.uuid;\n\n\t\t}\n\n\t\tif ( this.geometry !== undefined ) {\n\n\t\t\tobject.geometry = serialize( meta.geometries, this.geometry );\n\n\t\t\tvar parameters = this.geometry.parameters;\n\n\t\t\tif ( parameters !== undefined && parameters.shapes !== undefined ) {\n\n\t\t\t\tvar shapes = parameters.shapes;\n\n\t\t\t\tif ( Array.isArray( shapes ) ) {\n\n\t\t\t\t\tfor ( var i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tvar shape = shapes[ i ];\n\n\t\t\t\t\t\tserialize( meta.shapes, shape );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tserialize( meta.shapes, shapes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( Array.isArray( this.material ) ) {\n\n\t\t\t\tvar uuids = [];\n\n\t\t\t\tfor ( var i = 0, l = this.material.length; i < l; i ++ ) {\n\n\t\t\t\t\tuuids.push( serialize( meta.materials, this.material[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tobject.material = uuids;\n\n\t\t\t} else {\n\n\t\t\t\tobject.material = serialize( meta.materials, this.material );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.children.length > 0 ) {\n\n\t\t\tobject.children = [];\n\n\t\t\tfor ( var i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tvar geometries = extractFromCache( meta.geometries );\n\t\t\tvar materials = extractFromCache( meta.materials );\n\t\t\tvar textures = extractFromCache( meta.textures );\n\t\t\tvar images = extractFromCache( meta.images );\n\t\t\tvar shapes = extractFromCache( meta.shapes );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\t\t\tif ( shapes.length > 0 ) output.shapes = shapes;\n\n\t\t}\n\n\t\toutput.object = object;\n\n\t\treturn output;\n\n\t\t// extract data from the cache hash\n\t\t// remove metadata on each item\n\t\t// and return as array\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tvar values = [];\n\t\t\tfor ( var key in cache ) {\n\n\t\t\t\tvar data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\t\t\treturn values;\n\n\t\t}\n\n\t},\n\n\tclone: function ( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t},\n\n\tcopy: function ( source, recursive ) {\n\n\t\tif ( recursive === undefined ) recursive = true;\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.layers.mask = source.layers.mask;\n\t\tthis.visible = source.visible;\n\n\t\tthis.castShadow = source.castShadow;\n\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\tthis.frustumCulled = source.frustumCulled;\n\t\tthis.renderOrder = source.renderOrder;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( var i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tvar child = source.children[ i ];\n\t\t\t\tthis.add( child.clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n * @author WestLangley / http://github.com/WestLangley\n*/\n\nfunction Camera() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Camera';\n\n\tthis.matrixWorldInverse = new Matrix4();\n\tthis.projectionMatrix = new Matrix4();\n\n}\n\nCamera.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Camera,\n\n\tisCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tObject3D.prototype.copy.call( this, source, recursive );\n\n\t\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\t\tthis.projectionMatrix.copy( source.projectionMatrix );\n\n\t\treturn this;\n\n\t},\n\n\tgetWorldDirection: function () {\n\n\t\tvar quaternion = new Quaternion();\n\n\t\treturn function getWorldDirection( target ) {\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Camera: .getWorldDirection() target is now required' );\n\t\t\t\ttarget = new Vector3();\n\n\t\t\t}\n\n\t\t\tthis.getWorldQuaternion( quaternion );\n\n\t\t\treturn target.set( 0, 0, - 1 ).applyQuaternion( quaternion );\n\n\t\t};\n\n\t}(),\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tthis.matrixWorldInverse.getInverse( this.matrixWorld );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author arose / http://github.com/arose\n */\n\nfunction OrthographicCamera( left, right, top, bottom, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'OrthographicCamera';\n\n\tthis.zoom = 1;\n\tthis.view = null;\n\n\tthis.left = left;\n\tthis.right = right;\n\tthis.top = top;\n\tthis.bottom = bottom;\n\n\tthis.near = ( near !== undefined ) ? near : 0.1;\n\tthis.far = ( far !== undefined ) ? far : 2000;\n\n\tthis.updateProjectionMatrix();\n\n}\n\nOrthographicCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: OrthographicCamera,\n\n\tisOrthographicCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tCamera.prototype.copy.call( this, source, recursive );\n\n\t\tthis.left = source.left;\n\t\tthis.right = source.right;\n\t\tthis.top = source.top;\n\t\tthis.bottom = source.bottom;\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\n\t\tthis.zoom = source.zoom;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\treturn this;\n\n\t},\n\n\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tclearViewOffset: function () {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tupdateProjectionMatrix: function () {\n\n\t\tvar dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\tvar dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\tvar cx = ( this.right + this.left ) / 2;\n\t\tvar cy = ( this.top + this.bottom ) / 2;\n\n\t\tvar left = cx - dx;\n\t\tvar right = cx + dx;\n\t\tvar top = cy + dy;\n\t\tvar bottom = cy - dy;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tvar zoomW = this.zoom / ( this.view.width / this.view.fullWidth );\n\t\t\tvar zoomH = this.zoom / ( this.view.height / this.view.fullHeight );\n\t\t\tvar scaleW = ( this.right - this.left ) / this.view.width;\n\t\t\tvar scaleH = ( this.top - this.bottom ) / this.view.height;\n\n\t\t\tleft += scaleW * ( this.view.offsetX / zoomW );\n\t\t\tright = left + scaleW * ( this.view.width / zoomW );\n\t\t\ttop -= scaleH * ( this.view.offsetY / zoomH );\n\t\t\tbottom = top - scaleH * ( this.view.height / zoomH );\n\n\t\t}\n\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.zoom = this.zoom;\n\t\tdata.object.left = this.left;\n\t\tdata.object.right = this.right;\n\t\tdata.object.top = this.top;\n\t\tdata.object.bottom = this.bottom;\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Face3( a, b, c, normal, color, materialIndex ) {\n\n\tthis.a = a;\n\tthis.b = b;\n\tthis.c = c;\n\n\tthis.normal = ( normal && normal.isVector3 ) ? normal : new Vector3();\n\tthis.vertexNormals = Array.isArray( normal ) ? normal : [];\n\n\tthis.color = ( color && color.isColor ) ? color : new Color();\n\tthis.vertexColors = Array.isArray( color ) ? color : [];\n\n\tthis.materialIndex = materialIndex !== undefined ? materialIndex : 0;\n\n}\n\nObject.assign( Face3.prototype, {\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.a = source.a;\n\t\tthis.b = source.b;\n\t\tthis.c = source.c;\n\n\t\tthis.normal.copy( source.normal );\n\t\tthis.color.copy( source.color );\n\n\t\tthis.materialIndex = source.materialIndex;\n\n\t\tfor ( var i = 0, il = source.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexNormals[ i ] = source.vertexNormals[ i ].clone();\n\n\t\t}\n\n\t\tfor ( var i = 0, il = source.vertexColors.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexColors[ i ] = source.vertexColors[ i ].clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author kile / http://kile.stravaganza.org/\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author bhouston / http://clara.io\n */\n\nvar geometryId = 0; // Geometry uses even numbers as Id\n\nfunction Geometry() {\n\n\tObject.defineProperty( this, 'id', { value: geometryId += 2 } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Geometry';\n\n\tthis.vertices = [];\n\tthis.colors = [];\n\tthis.faces = [];\n\tthis.faceVertexUvs = [[]];\n\n\tthis.morphTargets = [];\n\tthis.morphNormals = [];\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\tthis.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.elementsNeedUpdate = false;\n\tthis.verticesNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.lineDistancesNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Geometry,\n\n\tisGeometry: true,\n\n\tapplyMatrix: function ( matrix ) {\n\n\t\tvar normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\tfor ( var i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tvar vertex = this.vertices[ i ];\n\t\t\tvertex.applyMatrix4( matrix );\n\n\t\t}\n\n\t\tfor ( var i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tvar face = this.faces[ i ];\n\t\t\tface.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\tfor ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tface.vertexNormals[ j ].applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\tthis.verticesNeedUpdate = true;\n\t\tthis.normalsNeedUpdate = true;\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function () {\n\n\t\t// rotate geometry around world x-axis\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function rotateX( angle ) {\n\n\t\t\tm1.makeRotationX( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateY: function () {\n\n\t\t// rotate geometry around world y-axis\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function rotateY( angle ) {\n\n\t\t\tm1.makeRotationY( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateZ: function () {\n\n\t\t// rotate geometry around world z-axis\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function rotateZ( angle ) {\n\n\t\t\tm1.makeRotationZ( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslate: function () {\n\n\t\t// translate geometry\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function translate( x, y, z ) {\n\n\t\t\tm1.makeTranslation( x, y, z );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tscale: function () {\n\n\t\t// scale geometry\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function scale( x, y, z ) {\n\n\t\t\tm1.makeScale( x, y, z );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tlookAt: function () {\n\n\t\tvar obj = new Object3D();\n\n\t\treturn function lookAt( vector ) {\n\n\t\t\tobj.lookAt( vector );\n\n\t\t\tobj.updateMatrix();\n\n\t\t\tthis.applyMatrix( obj.matrix );\n\n\t\t};\n\n\t}(),\n\n\tfromBufferGeometry: function ( geometry ) {\n\n\t\tvar scope = this;\n\n\t\tvar indices = geometry.index !== null ? geometry.index.array : undefined;\n\t\tvar attributes = geometry.attributes;\n\n\t\tvar positions = attributes.position.array;\n\t\tvar normals = attributes.normal !== undefined ? attributes.normal.array : undefined;\n\t\tvar colors = attributes.color !== undefined ? attributes.color.array : undefined;\n\t\tvar uvs = attributes.uv !== undefined ? attributes.uv.array : undefined;\n\t\tvar uvs2 = attributes.uv2 !== undefined ? attributes.uv2.array : undefined;\n\n\t\tif ( uvs2 !== undefined ) this.faceVertexUvs[ 1 ] = [];\n\n\t\tvar tempNormals = [];\n\t\tvar tempUVs = [];\n\t\tvar tempUVs2 = [];\n\n\t\tfor ( var i = 0, j = 0; i < positions.length; i += 3, j += 2 ) {\n\n\t\t\tscope.vertices.push( new Vector3( positions[ i ], positions[ i + 1 ], positions[ i + 2 ] ) );\n\n\t\t\tif ( normals !== undefined ) {\n\n\t\t\t\ttempNormals.push( new Vector3( normals[ i ], normals[ i + 1 ], normals[ i + 2 ] ) );\n\n\t\t\t}\n\n\t\t\tif ( colors !== undefined ) {\n\n\t\t\t\tscope.colors.push( new Color( colors[ i ], colors[ i + 1 ], colors[ i + 2 ] ) );\n\n\t\t\t}\n\n\t\t\tif ( uvs !== undefined ) {\n\n\t\t\t\ttempUVs.push( new Vector2( uvs[ j ], uvs[ j + 1 ] ) );\n\n\t\t\t}\n\n\t\t\tif ( uvs2 !== undefined ) {\n\n\t\t\t\ttempUVs2.push( new Vector2( uvs2[ j ], uvs2[ j + 1 ] ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction addFace( a, b, c, materialIndex ) {\n\n\t\t\tvar vertexNormals = normals !== undefined ? [ tempNormals[ a ].clone(), tempNormals[ b ].clone(), tempNormals[ c ].clone() ] : [];\n\t\t\tvar vertexColors = colors !== undefined ? [ scope.colors[ a ].clone(), scope.colors[ b ].clone(), scope.colors[ c ].clone() ] : [];\n\n\t\t\tvar face = new Face3( a, b, c, vertexNormals, vertexColors, materialIndex );\n\n\t\t\tscope.faces.push( face );\n\n\t\t\tif ( uvs !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 0 ].push( [ tempUVs[ a ].clone(), tempUVs[ b ].clone(), tempUVs[ c ].clone() ] );\n\n\t\t\t}\n\n\t\t\tif ( uvs2 !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 1 ].push( [ tempUVs2[ a ].clone(), tempUVs2[ b ].clone(), tempUVs2[ c ].clone() ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar groups = geometry.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tfor ( var i = 0; i < groups.length; i ++ ) {\n\n\t\t\t\tvar group = groups[ i ];\n\n\t\t\t\tvar start = group.start;\n\t\t\t\tvar count = group.count;\n\n\t\t\t\tfor ( var j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\t\tif ( indices !== undefined ) {\n\n\t\t\t\t\t\taddFace( indices[ j ], indices[ j + 1 ], indices[ j + 2 ], group.materialIndex );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\taddFace( j, j + 1, j + 2, group.materialIndex );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( indices !== undefined ) {\n\n\t\t\t\tfor ( var i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t\t\taddFace( indices[ i ], indices[ i + 1 ], indices[ i + 2 ] );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( var i = 0; i < positions.length / 3; i += 3 ) {\n\n\t\t\t\t\taddFace( i, i + 1, i + 2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeFaceNormals();\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcenter: function () {\n\n\t\tvar offset = new Vector3();\n\n\t\treturn function center() {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t\tthis.boundingBox.getCenter( offset ).negate();\n\n\t\t\tthis.translate( offset.x, offset.y, offset.z );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tnormalize: function () {\n\n\t\tthis.computeBoundingSphere();\n\n\t\tvar center = this.boundingSphere.center;\n\t\tvar radius = this.boundingSphere.radius;\n\n\t\tvar s = radius === 0 ? 1 : 1.0 / radius;\n\n\t\tvar matrix = new Matrix4();\n\t\tmatrix.set(\n\t\t\ts, 0, 0, - s * center.x,\n\t\t\t0, s, 0, - s * center.y,\n\t\t\t0, 0, s, - s * center.z,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\tthis.applyMatrix( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tcomputeFaceNormals: function () {\n\n\t\tvar cb = new Vector3(), ab = new Vector3();\n\n\t\tfor ( var f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tvar face = this.faces[ f ];\n\n\t\t\tvar vA = this.vertices[ face.a ];\n\t\t\tvar vB = this.vertices[ face.b ];\n\t\t\tvar vC = this.vertices[ face.c ];\n\n\t\t\tcb.subVectors( vC, vB );\n\t\t\tab.subVectors( vA, vB );\n\t\t\tcb.cross( ab );\n\n\t\t\tcb.normalize();\n\n\t\t\tface.normal.copy( cb );\n\n\t\t}\n\n\t},\n\n\tcomputeVertexNormals: function ( areaWeighted ) {\n\n\t\tif ( areaWeighted === undefined ) areaWeighted = true;\n\n\t\tvar v, vl, f, fl, face, vertices;\n\n\t\tvertices = new Array( this.vertices.length );\n\n\t\tfor ( v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ] = new Vector3();\n\n\t\t}\n\n\t\tif ( areaWeighted ) {\n\n\t\t\t// vertex normals weighted by triangle areas\n\t\t\t// http://www.iquilezles.org/www/articles/normals/normals.htm\n\n\t\t\tvar vA, vB, vC;\n\t\t\tvar cb = new Vector3(), ab = new Vector3();\n\n\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\tvA = this.vertices[ face.a ];\n\t\t\t\tvB = this.vertices[ face.b ];\n\t\t\t\tvC = this.vertices[ face.c ];\n\n\t\t\t\tcb.subVectors( vC, vB );\n\t\t\t\tab.subVectors( vA, vB );\n\t\t\t\tcb.cross( ab );\n\n\t\t\t\tvertices[ face.a ].add( cb );\n\t\t\t\tvertices[ face.b ].add( cb );\n\t\t\t\tvertices[ face.c ].add( cb );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.computeFaceNormals();\n\n\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\tvertices[ face.a ].add( face.normal );\n\t\t\t\tvertices[ face.b ].add( face.normal );\n\t\t\t\tvertices[ face.c ].add( face.normal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ].normalize();\n\n\t\t}\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( vertices[ face.a ] );\n\t\t\t\tvertexNormals[ 1 ].copy( vertices[ face.b ] );\n\t\t\t\tvertexNormals[ 2 ].copy( vertices[ face.c ] );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = vertices[ face.a ].clone();\n\t\t\t\tvertexNormals[ 1 ] = vertices[ face.b ].clone();\n\t\t\t\tvertexNormals[ 2 ] = vertices[ face.c ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeFlatVertexNormals: function () {\n\n\t\tvar f, fl, face;\n\n\t\tthis.computeFaceNormals();\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 1 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 2 ].copy( face.normal );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 1 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 2 ] = face.normal.clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeMorphNormals: function () {\n\n\t\tvar i, il, f, fl, face;\n\n\t\t// save original normals\n\t\t// - create temp variables on first access\n\t\t//   otherwise just copy (for faster repeated calls)\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tif ( ! face.__originalFaceNormal ) {\n\n\t\t\t\tface.__originalFaceNormal = face.normal.clone();\n\n\t\t\t} else {\n\n\t\t\t\tface.__originalFaceNormal.copy( face.normal );\n\n\t\t\t}\n\n\t\t\tif ( ! face.__originalVertexNormals ) face.__originalVertexNormals = [];\n\n\t\t\tfor ( i = 0, il = face.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\t\tif ( ! face.__originalVertexNormals[ i ] ) {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ] = face.vertexNormals[ i ].clone();\n\n\t\t\t\t} else {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ].copy( face.vertexNormals[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// use temp geometry to compute face and vertex normals for each morph\n\n\t\tvar tmpGeo = new Geometry();\n\t\ttmpGeo.faces = this.faces;\n\n\t\tfor ( i = 0, il = this.morphTargets.length; i < il; i ++ ) {\n\n\t\t\t// create on first access\n\n\t\t\tif ( ! this.morphNormals[ i ] ) {\n\n\t\t\t\tthis.morphNormals[ i ] = {};\n\t\t\t\tthis.morphNormals[ i ].faceNormals = [];\n\t\t\t\tthis.morphNormals[ i ].vertexNormals = [];\n\n\t\t\t\tvar dstNormalsFace = this.morphNormals[ i ].faceNormals;\n\t\t\t\tvar dstNormalsVertex = this.morphNormals[ i ].vertexNormals;\n\n\t\t\t\tvar faceNormal, vertexNormals;\n\n\t\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\t\tfaceNormal = new Vector3();\n\t\t\t\t\tvertexNormals = { a: new Vector3(), b: new Vector3(), c: new Vector3() };\n\n\t\t\t\t\tdstNormalsFace.push( faceNormal );\n\t\t\t\t\tdstNormalsVertex.push( vertexNormals );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar morphNormals = this.morphNormals[ i ];\n\n\t\t\t// set vertices to morph target\n\n\t\t\ttmpGeo.vertices = this.morphTargets[ i ].vertices;\n\n\t\t\t// compute morph normals\n\n\t\t\ttmpGeo.computeFaceNormals();\n\t\t\ttmpGeo.computeVertexNormals();\n\n\t\t\t// store morph normals\n\n\t\t\tvar faceNormal, vertexNormals;\n\n\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\tfaceNormal = morphNormals.faceNormals[ f ];\n\t\t\t\tvertexNormals = morphNormals.vertexNormals[ f ];\n\n\t\t\t\tfaceNormal.copy( face.normal );\n\n\t\t\t\tvertexNormals.a.copy( face.vertexNormals[ 0 ] );\n\t\t\t\tvertexNormals.b.copy( face.vertexNormals[ 1 ] );\n\t\t\t\tvertexNormals.c.copy( face.vertexNormals[ 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// restore original normals\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tface.normal = face.__originalFaceNormal;\n\t\t\tface.vertexNormals = face.__originalVertexNormals;\n\n\t\t}\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tthis.boundingBox.setFromPoints( this.vertices );\n\n\t},\n\n\tcomputeBoundingSphere: function () {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.setFromPoints( this.vertices );\n\n\t},\n\n\tmerge: function ( geometry, matrix, materialIndexOffset ) {\n\n\t\tif ( ! ( geometry && geometry.isGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar normalMatrix,\n\t\t\tvertexOffset = this.vertices.length,\n\t\t\tvertices1 = this.vertices,\n\t\t\tvertices2 = geometry.vertices,\n\t\t\tfaces1 = this.faces,\n\t\t\tfaces2 = geometry.faces,\n\t\t\tuvs1 = this.faceVertexUvs[ 0 ],\n\t\t\tuvs2 = geometry.faceVertexUvs[ 0 ],\n\t\t\tcolors1 = this.colors,\n\t\t\tcolors2 = geometry.colors;\n\n\t\tif ( materialIndexOffset === undefined ) materialIndexOffset = 0;\n\n\t\tif ( matrix !== undefined ) {\n\n\t\t\tnormalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t}\n\n\t\t// vertices\n\n\t\tfor ( var i = 0, il = vertices2.length; i < il; i ++ ) {\n\n\t\t\tvar vertex = vertices2[ i ];\n\n\t\t\tvar vertexCopy = vertex.clone();\n\n\t\t\tif ( matrix !== undefined ) vertexCopy.applyMatrix4( matrix );\n\n\t\t\tvertices1.push( vertexCopy );\n\n\t\t}\n\n\t\t// colors\n\n\t\tfor ( var i = 0, il = colors2.length; i < il; i ++ ) {\n\n\t\t\tcolors1.push( colors2[ i ].clone() );\n\n\t\t}\n\n\t\t// faces\n\n\t\tfor ( i = 0, il = faces2.length; i < il; i ++ ) {\n\n\t\t\tvar face = faces2[ i ], faceCopy, normal, color,\n\t\t\t\tfaceVertexNormals = face.vertexNormals,\n\t\t\t\tfaceVertexColors = face.vertexColors;\n\n\t\t\tfaceCopy = new Face3( face.a + vertexOffset, face.b + vertexOffset, face.c + vertexOffset );\n\t\t\tfaceCopy.normal.copy( face.normal );\n\n\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\tfaceCopy.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t\tfor ( var j = 0, jl = faceVertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tnormal = faceVertexNormals[ j ].clone();\n\n\t\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\t\tnormal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t\t}\n\n\t\t\t\tfaceCopy.vertexNormals.push( normal );\n\n\t\t\t}\n\n\t\t\tfaceCopy.color.copy( face.color );\n\n\t\t\tfor ( var j = 0, jl = faceVertexColors.length; j < jl; j ++ ) {\n\n\t\t\t\tcolor = faceVertexColors[ j ];\n\t\t\t\tfaceCopy.vertexColors.push( color.clone() );\n\n\t\t\t}\n\n\t\t\tfaceCopy.materialIndex = face.materialIndex + materialIndexOffset;\n\n\t\t\tfaces1.push( faceCopy );\n\n\t\t}\n\n\t\t// uvs\n\n\t\tfor ( i = 0, il = uvs2.length; i < il; i ++ ) {\n\n\t\t\tvar uv = uvs2[ i ], uvCopy = [];\n\n\t\t\tif ( uv === undefined ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tfor ( var j = 0, jl = uv.length; j < jl; j ++ ) {\n\n\t\t\t\tuvCopy.push( uv[ j ].clone() );\n\n\t\t\t}\n\n\t\t\tuvs1.push( uvCopy );\n\n\t\t}\n\n\t},\n\n\tmergeMesh: function ( mesh ) {\n\n\t\tif ( ! ( mesh && mesh.isMesh ) ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.', mesh );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( mesh.matrixAutoUpdate ) mesh.updateMatrix();\n\n\t\tthis.merge( mesh.geometry, mesh.matrix );\n\n\t},\n\n\t/*\n\t * Checks for duplicate vertices with hashmap.\n\t * Duplicated vertices are removed\n\t * and faces' vertices are updated.\n\t */\n\n\tmergeVertices: function () {\n\n\t\tvar verticesMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique)\n\t\tvar unique = [], changes = [];\n\n\t\tvar v, key;\n\t\tvar precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001\n\t\tvar precision = Math.pow( 10, precisionPoints );\n\t\tvar i, il, face;\n\t\tvar indices, j, jl;\n\n\t\tfor ( i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tv = this.vertices[ i ];\n\t\t\tkey = Math.round( v.x * precision ) + '_' + Math.round( v.y * precision ) + '_' + Math.round( v.z * precision );\n\n\t\t\tif ( verticesMap[ key ] === undefined ) {\n\n\t\t\t\tverticesMap[ key ] = i;\n\t\t\t\tunique.push( this.vertices[ i ] );\n\t\t\t\tchanges[ i ] = unique.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\t//console.log('Duplicate vertex found. ', i, ' could be using ', verticesMap[key]);\n\t\t\t\tchanges[ i ] = changes[ verticesMap[ key ] ];\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// if faces are completely degenerate after merging vertices, we\n\t\t// have to remove them from the geometry.\n\t\tvar faceIndicesToRemove = [];\n\n\t\tfor ( i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tface = this.faces[ i ];\n\n\t\t\tface.a = changes[ face.a ];\n\t\t\tface.b = changes[ face.b ];\n\t\t\tface.c = changes[ face.c ];\n\n\t\t\tindices = [ face.a, face.b, face.c ];\n\n\t\t\t// if any duplicate vertices are found in a Face3\n\t\t\t// we have to remove the face as nothing can be saved\n\t\t\tfor ( var n = 0; n < 3; n ++ ) {\n\n\t\t\t\tif ( indices[ n ] === indices[ ( n + 1 ) % 3 ] ) {\n\n\t\t\t\t\tfaceIndicesToRemove.push( i );\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( i = faceIndicesToRemove.length - 1; i >= 0; i -- ) {\n\n\t\t\tvar idx = faceIndicesToRemove[ i ];\n\n\t\t\tthis.faces.splice( idx, 1 );\n\n\t\t\tfor ( j = 0, jl = this.faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tthis.faceVertexUvs[ j ].splice( idx, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Use unique set of vertices\n\n\t\tvar diff = this.vertices.length - unique.length;\n\t\tthis.vertices = unique;\n\t\treturn diff;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.vertices = [];\n\n\t\tfor ( var i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tvar point = points[ i ];\n\t\t\tthis.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsortFacesByMaterialIndex: function () {\n\n\t\tvar faces = this.faces;\n\t\tvar length = faces.length;\n\n\t\t// tag faces\n\n\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\tfaces[ i ]._id = i;\n\n\t\t}\n\n\t\t// sort faces\n\n\t\tfunction materialIndexSort( a, b ) {\n\n\t\t\treturn a.materialIndex - b.materialIndex;\n\n\t\t}\n\n\t\tfaces.sort( materialIndexSort );\n\n\t\t// sort uvs\n\n\t\tvar uvs1 = this.faceVertexUvs[ 0 ];\n\t\tvar uvs2 = this.faceVertexUvs[ 1 ];\n\n\t\tvar newUvs1, newUvs2;\n\n\t\tif ( uvs1 && uvs1.length === length ) newUvs1 = [];\n\t\tif ( uvs2 && uvs2.length === length ) newUvs2 = [];\n\n\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\tvar id = faces[ i ]._id;\n\n\t\t\tif ( newUvs1 ) newUvs1.push( uvs1[ id ] );\n\t\t\tif ( newUvs2 ) newUvs2.push( uvs2[ id ] );\n\n\t\t}\n\n\t\tif ( newUvs1 ) this.faceVertexUvs[ 0 ] = newUvs1;\n\t\tif ( newUvs2 ) this.faceVertexUvs[ 1 ] = newUvs2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Geometry',\n\t\t\t\tgenerator: 'Geometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Geometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tvar parameters = this.parameters;\n\n\t\t\tfor ( var key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tvar vertices = [];\n\n\t\tfor ( var i = 0; i < this.vertices.length; i ++ ) {\n\n\t\t\tvar vertex = this.vertices[ i ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tvar faces = [];\n\t\tvar normals = [];\n\t\tvar normalsHash = {};\n\t\tvar colors = [];\n\t\tvar colorsHash = {};\n\t\tvar uvs = [];\n\t\tvar uvsHash = {};\n\n\t\tfor ( var i = 0; i < this.faces.length; i ++ ) {\n\n\t\t\tvar face = this.faces[ i ];\n\n\t\t\tvar hasMaterial = true;\n\t\t\tvar hasFaceUv = false; // deprecated\n\t\t\tvar hasFaceVertexUv = this.faceVertexUvs[ 0 ][ i ] !== undefined;\n\t\t\tvar hasFaceNormal = face.normal.length() > 0;\n\t\t\tvar hasFaceVertexNormal = face.vertexNormals.length > 0;\n\t\t\tvar hasFaceColor = face.color.r !== 1 || face.color.g !== 1 || face.color.b !== 1;\n\t\t\tvar hasFaceVertexColor = face.vertexColors.length > 0;\n\n\t\t\tvar faceType = 0;\n\n\t\t\tfaceType = setBit( faceType, 0, 0 ); // isQuad\n\t\t\tfaceType = setBit( faceType, 1, hasMaterial );\n\t\t\tfaceType = setBit( faceType, 2, hasFaceUv );\n\t\t\tfaceType = setBit( faceType, 3, hasFaceVertexUv );\n\t\t\tfaceType = setBit( faceType, 4, hasFaceNormal );\n\t\t\tfaceType = setBit( faceType, 5, hasFaceVertexNormal );\n\t\t\tfaceType = setBit( faceType, 6, hasFaceColor );\n\t\t\tfaceType = setBit( faceType, 7, hasFaceVertexColor );\n\n\t\t\tfaces.push( faceType );\n\t\t\tfaces.push( face.a, face.b, face.c );\n\t\t\tfaces.push( face.materialIndex );\n\n\t\t\tif ( hasFaceVertexUv ) {\n\n\t\t\t\tvar faceVertexUvs = this.faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 0 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 1 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceNormal ) {\n\n\t\t\t\tfaces.push( getNormalIndex( face.normal ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexNormal ) {\n\n\t\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 0 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 1 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceColor ) {\n\n\t\t\t\tfaces.push( getColorIndex( face.color ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexColor ) {\n\n\t\t\t\tvar vertexColors = face.vertexColors;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetColorIndex( vertexColors[ 0 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 1 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction setBit( value, position, enabled ) {\n\n\t\t\treturn enabled ? value | ( 1 << position ) : value & ( ~ ( 1 << position ) );\n\n\t\t}\n\n\t\tfunction getNormalIndex( normal ) {\n\n\t\t\tvar hash = normal.x.toString() + normal.y.toString() + normal.z.toString();\n\n\t\t\tif ( normalsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn normalsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tnormalsHash[ hash ] = normals.length / 3;\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\treturn normalsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getColorIndex( color ) {\n\n\t\t\tvar hash = color.r.toString() + color.g.toString() + color.b.toString();\n\n\t\t\tif ( colorsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn colorsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tcolorsHash[ hash ] = colors.length;\n\t\t\tcolors.push( color.getHex() );\n\n\t\t\treturn colorsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getUvIndex( uv ) {\n\n\t\t\tvar hash = uv.x.toString() + uv.y.toString();\n\n\t\t\tif ( uvsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn uvsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tuvsHash[ hash ] = uvs.length / 2;\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\treturn uvsHash[ hash ];\n\n\t\t}\n\n\t\tdata.data = {};\n\n\t\tdata.data.vertices = vertices;\n\t\tdata.data.normals = normals;\n\t\tif ( colors.length > 0 ) data.data.colors = colors;\n\t\tif ( uvs.length > 0 ) data.data.uvs = [ uvs ]; // temporal backward compatibility\n\t\tdata.data.faces = faces;\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t // Handle primitives\n\n\t\t var parameters = this.parameters;\n\n\t\t if ( parameters !== undefined ) {\n\n\t\t var values = [];\n\n\t\t for ( var key in parameters ) {\n\n\t\t values.push( parameters[ key ] );\n\n\t\t }\n\n\t\t var geometry = Object.create( this.constructor.prototype );\n\t\t this.constructor.apply( geometry, values );\n\t\t return geometry;\n\n\t\t }\n\n\t\t return new this.constructor().copy( this );\n\t\t */\n\n\t\treturn new Geometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tvar i, il, j, jl, k, kl;\n\n\t\t// reset\n\n\t\tthis.vertices = [];\n\t\tthis.colors = [];\n\t\tthis.faces = [];\n\t\tthis.faceVertexUvs = [[]];\n\t\tthis.morphTargets = [];\n\t\tthis.morphNormals = [];\n\t\tthis.skinWeights = [];\n\t\tthis.skinIndices = [];\n\t\tthis.lineDistances = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// vertices\n\n\t\tvar vertices = source.vertices;\n\n\t\tfor ( i = 0, il = vertices.length; i < il; i ++ ) {\n\n\t\t\tthis.vertices.push( vertices[ i ].clone() );\n\n\t\t}\n\n\t\t// colors\n\n\t\tvar colors = source.colors;\n\n\t\tfor ( i = 0, il = colors.length; i < il; i ++ ) {\n\n\t\t\tthis.colors.push( colors[ i ].clone() );\n\n\t\t}\n\n\t\t// faces\n\n\t\tvar faces = source.faces;\n\n\t\tfor ( i = 0, il = faces.length; i < il; i ++ ) {\n\n\t\t\tthis.faces.push( faces[ i ].clone() );\n\n\t\t}\n\n\t\t// face vertex uvs\n\n\t\tfor ( i = 0, il = source.faceVertexUvs.length; i < il; i ++ ) {\n\n\t\t\tvar faceVertexUvs = source.faceVertexUvs[ i ];\n\n\t\t\tif ( this.faceVertexUvs[ i ] === undefined ) {\n\n\t\t\t\tthis.faceVertexUvs[ i ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( j = 0, jl = faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tvar uvs = faceVertexUvs[ j ], uvsCopy = [];\n\n\t\t\t\tfor ( k = 0, kl = uvs.length; k < kl; k ++ ) {\n\n\t\t\t\t\tvar uv = uvs[ k ];\n\n\t\t\t\t\tuvsCopy.push( uv.clone() );\n\n\t\t\t\t}\n\n\t\t\t\tthis.faceVertexUvs[ i ].push( uvsCopy );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tvar morphTargets = source.morphTargets;\n\n\t\tfor ( i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tvar morphTarget = {};\n\t\t\tmorphTarget.name = morphTargets[ i ].name;\n\n\t\t\t// vertices\n\n\t\t\tif ( morphTargets[ i ].vertices !== undefined ) {\n\n\t\t\t\tmorphTarget.vertices = [];\n\n\t\t\t\tfor ( j = 0, jl = morphTargets[ i ].vertices.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphTarget.vertices.push( morphTargets[ i ].vertices[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// normals\n\n\t\t\tif ( morphTargets[ i ].normals !== undefined ) {\n\n\t\t\t\tmorphTarget.normals = [];\n\n\t\t\t\tfor ( j = 0, jl = morphTargets[ i ].normals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphTarget.normals.push( morphTargets[ i ].normals[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.push( morphTarget );\n\n\t\t}\n\n\t\t// morph normals\n\n\t\tvar morphNormals = source.morphNormals;\n\n\t\tfor ( i = 0, il = morphNormals.length; i < il; i ++ ) {\n\n\t\t\tvar morphNormal = {};\n\n\t\t\t// vertex normals\n\n\t\t\tif ( morphNormals[ i ].vertexNormals !== undefined ) {\n\n\t\t\t\tmorphNormal.vertexNormals = [];\n\n\t\t\t\tfor ( j = 0, jl = morphNormals[ i ].vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar srcVertexNormal = morphNormals[ i ].vertexNormals[ j ];\n\t\t\t\t\tvar destVertexNormal = {};\n\n\t\t\t\t\tdestVertexNormal.a = srcVertexNormal.a.clone();\n\t\t\t\t\tdestVertexNormal.b = srcVertexNormal.b.clone();\n\t\t\t\t\tdestVertexNormal.c = srcVertexNormal.c.clone();\n\n\t\t\t\t\tmorphNormal.vertexNormals.push( destVertexNormal );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// face normals\n\n\t\t\tif ( morphNormals[ i ].faceNormals !== undefined ) {\n\n\t\t\t\tmorphNormal.faceNormals = [];\n\n\t\t\t\tfor ( j = 0, jl = morphNormals[ i ].faceNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphNormal.faceNormals.push( morphNormals[ i ].faceNormals[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.morphNormals.push( morphNormal );\n\n\t\t}\n\n\t\t// skin weights\n\n\t\tvar skinWeights = source.skinWeights;\n\n\t\tfor ( i = 0, il = skinWeights.length; i < il; i ++ ) {\n\n\t\t\tthis.skinWeights.push( skinWeights[ i ].clone() );\n\n\t\t}\n\n\t\t// skin indices\n\n\t\tvar skinIndices = source.skinIndices;\n\n\t\tfor ( i = 0, il = skinIndices.length; i < il; i ++ ) {\n\n\t\t\tthis.skinIndices.push( skinIndices[ i ].clone() );\n\n\t\t}\n\n\t\t// line distances\n\n\t\tvar lineDistances = source.lineDistances;\n\n\t\tfor ( i = 0, il = lineDistances.length; i < il; i ++ ) {\n\n\t\t\tthis.lineDistances.push( lineDistances[ i ] );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tvar boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tvar boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// update flags\n\n\t\tthis.elementsNeedUpdate = source.elementsNeedUpdate;\n\t\tthis.verticesNeedUpdate = source.verticesNeedUpdate;\n\t\tthis.uvsNeedUpdate = source.uvsNeedUpdate;\n\t\tthis.normalsNeedUpdate = source.normalsNeedUpdate;\n\t\tthis.colorsNeedUpdate = source.colorsNeedUpdate;\n\t\tthis.lineDistancesNeedUpdate = source.lineDistancesNeedUpdate;\n\t\tthis.groupsNeedUpdate = source.groupsNeedUpdate;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction BufferAttribute( array, itemSize, normalized ) {\n\n\tif ( Array.isArray( array ) ) {\n\n\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t}\n\n\tthis.name = '';\n\n\tthis.array = array;\n\tthis.itemSize = itemSize;\n\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\tthis.normalized = normalized === true;\n\n\tthis.dynamic = false;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n}\n\nObject.defineProperty( BufferAttribute.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nObject.assign( BufferAttribute.prototype, {\n\n\tisBufferAttribute: true,\n\n\tonUploadCallback: function () {},\n\n\tsetArray: function ( array ) {\n\n\t\tif ( Array.isArray( array ) ) {\n\n\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t}\n\n\t\tthis.count = array !== undefined ? array.length / this.itemSize : 0;\n\t\tthis.array = array;\n\n\t\treturn this;\n\n\t},\n\n\tsetDynamic: function ( value ) {\n\n\t\tthis.dynamic = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.itemSize = source.itemSize;\n\t\tthis.count = source.count;\n\t\tthis.normalized = source.normalized;\n\n\t\tthis.dynamic = source.dynamic;\n\n\t\treturn this;\n\n\t},\n\n\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.itemSize;\n\t\tindex2 *= attribute.itemSize;\n\n\t\tfor ( var i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyArray: function ( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t},\n\n\tcopyColorsArray: function ( colors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = colors.length; i < l; i ++ ) {\n\n\t\t\tvar color = colors[ i ];\n\n\t\t\tif ( color === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyColorsArray(): color is undefined', i );\n\t\t\t\tcolor = new Color();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = color.r;\n\t\t\tarray[ offset ++ ] = color.g;\n\t\t\tarray[ offset ++ ] = color.b;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector2sArray: function ( vectors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tvar vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector2();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector3sArray: function ( vectors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tvar vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector3();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector4sArray: function ( vectors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tvar vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector4();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\t\t\tarray[ offset ++ ] = vector.w;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize ];\n\n\t},\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 1 ];\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 2 ];\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 3 ];\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\t\tthis.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tonUpload: function ( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\n\n\t}\n\n} );\n\n//\n\nfunction Int8BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int8Array( array ), itemSize, normalized );\n\n}\n\nInt8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt8BufferAttribute.prototype.constructor = Int8BufferAttribute;\n\n\nfunction Uint8BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint8Array( array ), itemSize, normalized );\n\n}\n\nUint8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint8BufferAttribute.prototype.constructor = Uint8BufferAttribute;\n\n\nfunction Uint8ClampedBufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint8ClampedArray( array ), itemSize, normalized );\n\n}\n\nUint8ClampedBufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint8ClampedBufferAttribute.prototype.constructor = Uint8ClampedBufferAttribute;\n\n\nfunction Int16BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int16Array( array ), itemSize, normalized );\n\n}\n\nInt16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt16BufferAttribute.prototype.constructor = Int16BufferAttribute;\n\n\nfunction Uint16BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint16Array( array ), itemSize, normalized );\n\n}\n\nUint16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint16BufferAttribute.prototype.constructor = Uint16BufferAttribute;\n\n\nfunction Int32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int32Array( array ), itemSize, normalized );\n\n}\n\nInt32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt32BufferAttribute.prototype.constructor = Int32BufferAttribute;\n\n\nfunction Uint32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint32Array( array ), itemSize, normalized );\n\n}\n\nUint32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint32BufferAttribute.prototype.constructor = Uint32BufferAttribute;\n\n\nfunction Float32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Float32Array( array ), itemSize, normalized );\n\n}\n\nFloat32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nFloat32BufferAttribute.prototype.constructor = Float32BufferAttribute;\n\n\nfunction Float64BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Float64Array( array ), itemSize, normalized );\n\n}\n\nFloat64BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nFloat64BufferAttribute.prototype.constructor = Float64BufferAttribute;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction DirectGeometry() {\n\n\tthis.vertices = [];\n\tthis.normals = [];\n\tthis.colors = [];\n\tthis.uvs = [];\n\tthis.uvs2 = [];\n\n\tthis.groups = [];\n\n\tthis.morphTargets = {};\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\t// this.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.verticesNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nObject.assign( DirectGeometry.prototype, {\n\n\tcomputeGroups: function ( geometry ) {\n\n\t\tvar group;\n\t\tvar groups = [];\n\t\tvar materialIndex = undefined;\n\n\t\tvar faces = geometry.faces;\n\n\t\tfor ( var i = 0; i < faces.length; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\t// materials\n\n\t\t\tif ( face.materialIndex !== materialIndex ) {\n\n\t\t\t\tmaterialIndex = face.materialIndex;\n\n\t\t\t\tif ( group !== undefined ) {\n\n\t\t\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\t\t\tgroups.push( group );\n\n\t\t\t\t}\n\n\t\t\t\tgroup = {\n\t\t\t\t\tstart: i * 3,\n\t\t\t\t\tmaterialIndex: materialIndex\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( group !== undefined ) {\n\n\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\tgroups.push( group );\n\n\t\t}\n\n\t\tthis.groups = groups;\n\n\t},\n\n\tfromGeometry: function ( geometry ) {\n\n\t\tvar faces = geometry.faces;\n\t\tvar vertices = geometry.vertices;\n\t\tvar faceVertexUvs = geometry.faceVertexUvs;\n\n\t\tvar hasFaceVertexUv = faceVertexUvs[ 0 ] && faceVertexUvs[ 0 ].length > 0;\n\t\tvar hasFaceVertexUv2 = faceVertexUvs[ 1 ] && faceVertexUvs[ 1 ].length > 0;\n\n\t\t// morphs\n\n\t\tvar morphTargets = geometry.morphTargets;\n\t\tvar morphTargetsLength = morphTargets.length;\n\n\t\tvar morphTargetsPosition;\n\n\t\tif ( morphTargetsLength > 0 ) {\n\n\t\t\tmorphTargetsPosition = [];\n\n\t\t\tfor ( var i = 0; i < morphTargetsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsPosition[ i ] = [];\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.position = morphTargetsPosition;\n\n\t\t}\n\n\t\tvar morphNormals = geometry.morphNormals;\n\t\tvar morphNormalsLength = morphNormals.length;\n\n\t\tvar morphTargetsNormal;\n\n\t\tif ( morphNormalsLength > 0 ) {\n\n\t\t\tmorphTargetsNormal = [];\n\n\t\t\tfor ( var i = 0; i < morphNormalsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsNormal[ i ] = [];\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.normal = morphTargetsNormal;\n\n\t\t}\n\n\t\t// skins\n\n\t\tvar skinIndices = geometry.skinIndices;\n\t\tvar skinWeights = geometry.skinWeights;\n\n\t\tvar hasSkinIndices = skinIndices.length === vertices.length;\n\t\tvar hasSkinWeights = skinWeights.length === vertices.length;\n\n\t\t//\n\n\t\tif ( vertices.length > 0 && faces.length === 0 ) {\n\n\t\t\tconsole.error( 'THREE.DirectGeometry: Faceless geometries are not supported.' );\n\n\t\t}\n\n\t\tfor ( var i = 0; i < faces.length; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tthis.vertices.push( vertices[ face.a ], vertices[ face.b ], vertices[ face.c ] );\n\n\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tthis.normals.push( vertexNormals[ 0 ], vertexNormals[ 1 ], vertexNormals[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tvar normal = face.normal;\n\n\t\t\t\tthis.normals.push( normal, normal, normal );\n\n\t\t\t}\n\n\t\t\tvar vertexColors = face.vertexColors;\n\n\t\t\tif ( vertexColors.length === 3 ) {\n\n\t\t\t\tthis.colors.push( vertexColors[ 0 ], vertexColors[ 1 ], vertexColors[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tvar color = face.color;\n\n\t\t\t\tthis.colors.push( color, color, color );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv === true ) {\n\n\t\t\t\tvar vertexUvs = faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ', i );\n\n\t\t\t\t\tthis.uvs.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv2 === true ) {\n\n\t\t\t\tvar vertexUvs = faceVertexUvs[ 1 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs2.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ', i );\n\n\t\t\t\t\tthis.uvs2.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// morphs\n\n\t\t\tfor ( var j = 0; j < morphTargetsLength; j ++ ) {\n\n\t\t\t\tvar morphTarget = morphTargets[ j ].vertices;\n\n\t\t\t\tmorphTargetsPosition[ j ].push( morphTarget[ face.a ], morphTarget[ face.b ], morphTarget[ face.c ] );\n\n\t\t\t}\n\n\t\t\tfor ( var j = 0; j < morphNormalsLength; j ++ ) {\n\n\t\t\t\tvar morphNormal = morphNormals[ j ].vertexNormals[ i ];\n\n\t\t\t\tmorphTargetsNormal[ j ].push( morphNormal.a, morphNormal.b, morphNormal.c );\n\n\t\t\t}\n\n\t\t\t// skins\n\n\t\t\tif ( hasSkinIndices ) {\n\n\t\t\t\tthis.skinIndices.push( skinIndices[ face.a ], skinIndices[ face.b ], skinIndices[ face.c ] );\n\n\t\t\t}\n\n\t\t\tif ( hasSkinWeights ) {\n\n\t\t\t\tthis.skinWeights.push( skinWeights[ face.a ], skinWeights[ face.b ], skinWeights[ face.c ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeGroups( geometry );\n\n\t\tthis.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\tthis.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\tthis.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\tthis.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\tthis.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction arrayMax( array ) {\n\n\tif ( array.length === 0 ) return - Infinity;\n\n\tvar max = array[ 0 ];\n\n\tfor ( var i = 1, l = array.length; i < l; ++ i ) {\n\n\t\tif ( array[ i ] > max ) max = array[ i ];\n\n\t}\n\n\treturn max;\n\n}\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar bufferGeometryId = 1; // BufferGeometry uses odd numbers as Id\n\nfunction BufferGeometry() {\n\n\tObject.defineProperty( this, 'id', { value: bufferGeometryId += 2 } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'BufferGeometry';\n\n\tthis.index = null;\n\tthis.attributes = {};\n\n\tthis.morphAttributes = {};\n\n\tthis.groups = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\tthis.drawRange = { start: 0, count: Infinity };\n\n\tthis.userData = {};\n\n}\n\nBufferGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: BufferGeometry,\n\n\tisBufferGeometry: true,\n\n\tgetIndex: function () {\n\n\t\treturn this.index;\n\n\t},\n\n\tsetIndex: function ( index ) {\n\n\t\tif ( Array.isArray( index ) ) {\n\n\t\t\tthis.index = new ( arrayMax( index ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\n\n\t\t} else {\n\n\t\t\tthis.index = index;\n\n\t\t}\n\n\t},\n\n\taddAttribute: function ( name, attribute ) {\n\n\t\tif ( ! ( attribute && attribute.isBufferAttribute ) && ! ( attribute && attribute.isInterleavedBufferAttribute ) ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' );\n\n\t\t\treturn this.addAttribute( name, new BufferAttribute( arguments[ 1 ], arguments[ 2 ] ) );\n\n\t\t}\n\n\t\tif ( name === 'index' ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.' );\n\t\t\tthis.setIndex( attribute );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t},\n\n\tgetAttribute: function ( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t},\n\n\tremoveAttribute: function ( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t},\n\n\taddGroup: function ( start, count, materialIndex ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex !== undefined ? materialIndex : 0\n\n\t\t} );\n\n\t},\n\n\tclearGroups: function () {\n\n\t\tthis.groups = [];\n\n\t},\n\n\tsetDrawRange: function ( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t},\n\n\tapplyMatrix: function ( matrix ) {\n\n\t\tvar position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tmatrix.applyToBufferAttribute( position );\n\t\t\tposition.needsUpdate = true;\n\n\t\t}\n\n\t\tvar normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tvar normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tnormalMatrix.applyToBufferAttribute( normal );\n\t\t\tnormal.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function () {\n\n\t\t// rotate geometry around world x-axis\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function rotateX( angle ) {\n\n\t\t\tm1.makeRotationX( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateY: function () {\n\n\t\t// rotate geometry around world y-axis\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function rotateY( angle ) {\n\n\t\t\tm1.makeRotationY( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateZ: function () {\n\n\t\t// rotate geometry around world z-axis\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function rotateZ( angle ) {\n\n\t\t\tm1.makeRotationZ( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslate: function () {\n\n\t\t// translate geometry\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function translate( x, y, z ) {\n\n\t\t\tm1.makeTranslation( x, y, z );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tscale: function () {\n\n\t\t// scale geometry\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function scale( x, y, z ) {\n\n\t\t\tm1.makeScale( x, y, z );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tlookAt: function () {\n\n\t\tvar obj = new Object3D();\n\n\t\treturn function lookAt( vector ) {\n\n\t\t\tobj.lookAt( vector );\n\n\t\t\tobj.updateMatrix();\n\n\t\t\tthis.applyMatrix( obj.matrix );\n\n\t\t};\n\n\t}(),\n\n\tcenter: function () {\n\n\t\tvar offset = new Vector3();\n\n\t\treturn function center() {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t\tthis.boundingBox.getCenter( offset ).negate();\n\n\t\t\tthis.translate( offset.x, offset.y, offset.z );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tsetFromObject: function ( object ) {\n\n\t\t// console.log( 'THREE.BufferGeometry.setFromObject(). Converting', object, this );\n\n\t\tvar geometry = object.geometry;\n\n\t\tif ( object.isPoints || object.isLine ) {\n\n\t\t\tvar positions = new Float32BufferAttribute( geometry.vertices.length * 3, 3 );\n\t\t\tvar colors = new Float32BufferAttribute( geometry.colors.length * 3, 3 );\n\n\t\t\tthis.addAttribute( 'position', positions.copyVector3sArray( geometry.vertices ) );\n\t\t\tthis.addAttribute( 'color', colors.copyColorsArray( geometry.colors ) );\n\n\t\t\tif ( geometry.lineDistances && geometry.lineDistances.length === geometry.vertices.length ) {\n\n\t\t\t\tvar lineDistances = new Float32BufferAttribute( geometry.lineDistances.length, 1 );\n\n\t\t\t\tthis.addAttribute( 'lineDistance', lineDistances.copyArray( geometry.lineDistances ) );\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t\t}\n\n\t\t} else if ( object.isMesh ) {\n\n\t\t\tif ( geometry && geometry.isGeometry ) {\n\n\t\t\t\tthis.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tvar position = [];\n\n\t\tfor ( var i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tvar point = points[ i ];\n\t\t\tposition.push( point.x, point.y, point.z || 0 );\n\n\t\t}\n\n\t\tthis.addAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\n\n\t\treturn this;\n\n\t},\n\n\tupdateFromObject: function ( object ) {\n\n\t\tvar geometry = object.geometry;\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tvar direct = geometry.__directGeometry;\n\n\t\t\tif ( geometry.elementsNeedUpdate === true ) {\n\n\t\t\t\tdirect = undefined;\n\t\t\t\tgeometry.elementsNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( direct === undefined ) {\n\n\t\t\t\treturn this.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t\tdirect.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\t\tdirect.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\t\tdirect.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\t\tdirect.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\t\tdirect.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\t\t\tgeometry.normalsNeedUpdate = false;\n\t\t\tgeometry.colorsNeedUpdate = false;\n\t\t\tgeometry.uvsNeedUpdate = false;\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t\tgeometry = direct;\n\n\t\t}\n\n\t\tvar attribute;\n\n\t\tif ( geometry.verticesNeedUpdate === true ) {\n\n\t\t\tattribute = this.attributes.position;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.vertices );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.normalsNeedUpdate === true ) {\n\n\t\t\tattribute = this.attributes.normal;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.normals );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.normalsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.colorsNeedUpdate === true ) {\n\n\t\t\tattribute = this.attributes.color;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyColorsArray( geometry.colors );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.colorsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.uvsNeedUpdate ) {\n\n\t\t\tattribute = this.attributes.uv;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector2sArray( geometry.uvs );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.uvsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.lineDistancesNeedUpdate ) {\n\n\t\t\tattribute = this.attributes.lineDistance;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyArray( geometry.lineDistances );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.lineDistancesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.groupsNeedUpdate ) {\n\n\t\t\tgeometry.computeGroups( object.geometry );\n\t\t\tthis.groups = geometry.groups;\n\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tfromGeometry: function ( geometry ) {\n\n\t\tgeometry.__directGeometry = new DirectGeometry().fromGeometry( geometry );\n\n\t\treturn this.fromDirectGeometry( geometry.__directGeometry );\n\n\t},\n\n\tfromDirectGeometry: function ( geometry ) {\n\n\t\tvar positions = new Float32Array( geometry.vertices.length * 3 );\n\t\tthis.addAttribute( 'position', new BufferAttribute( positions, 3 ).copyVector3sArray( geometry.vertices ) );\n\n\t\tif ( geometry.normals.length > 0 ) {\n\n\t\t\tvar normals = new Float32Array( geometry.normals.length * 3 );\n\t\t\tthis.addAttribute( 'normal', new BufferAttribute( normals, 3 ).copyVector3sArray( geometry.normals ) );\n\n\t\t}\n\n\t\tif ( geometry.colors.length > 0 ) {\n\n\t\t\tvar colors = new Float32Array( geometry.colors.length * 3 );\n\t\t\tthis.addAttribute( 'color', new BufferAttribute( colors, 3 ).copyColorsArray( geometry.colors ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs.length > 0 ) {\n\n\t\t\tvar uvs = new Float32Array( geometry.uvs.length * 2 );\n\t\t\tthis.addAttribute( 'uv', new BufferAttribute( uvs, 2 ).copyVector2sArray( geometry.uvs ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs2.length > 0 ) {\n\n\t\t\tvar uvs2 = new Float32Array( geometry.uvs2.length * 2 );\n\t\t\tthis.addAttribute( 'uv2', new BufferAttribute( uvs2, 2 ).copyVector2sArray( geometry.uvs2 ) );\n\n\t\t}\n\n\t\t// groups\n\n\t\tthis.groups = geometry.groups;\n\n\t\t// morphs\n\n\t\tfor ( var name in geometry.morphTargets ) {\n\n\t\t\tvar array = [];\n\t\t\tvar morphTargets = geometry.morphTargets[ name ];\n\n\t\t\tfor ( var i = 0, l = morphTargets.length; i < l; i ++ ) {\n\n\t\t\t\tvar morphTarget = morphTargets[ i ];\n\n\t\t\t\tvar attribute = new Float32BufferAttribute( morphTarget.length * 3, 3 );\n\n\t\t\t\tarray.push( attribute.copyVector3sArray( morphTarget ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\t// skinning\n\n\t\tif ( geometry.skinIndices.length > 0 ) {\n\n\t\t\tvar skinIndices = new Float32BufferAttribute( geometry.skinIndices.length * 4, 4 );\n\t\t\tthis.addAttribute( 'skinIndex', skinIndices.copyVector4sArray( geometry.skinIndices ) );\n\n\t\t}\n\n\t\tif ( geometry.skinWeights.length > 0 ) {\n\n\t\t\tvar skinWeights = new Float32BufferAttribute( geometry.skinWeights.length * 4, 4 );\n\t\t\tthis.addAttribute( 'skinWeight', skinWeights.copyVector4sArray( geometry.skinWeights ) );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tvar position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tthis.boundingBox.setFromBufferAttribute( position );\n\n\t\t} else {\n\n\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t}\n\n\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t}\n\n\t},\n\n\tcomputeBoundingSphere: function () {\n\n\t\tvar box = new Box3();\n\t\tvar vector = new Vector3();\n\n\t\treturn function computeBoundingSphere() {\n\n\t\t\tif ( this.boundingSphere === null ) {\n\n\t\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t\t}\n\n\t\t\tvar position = this.attributes.position;\n\n\t\t\tif ( position ) {\n\n\t\t\t\tvar center = this.boundingSphere.center;\n\n\t\t\t\tbox.setFromBufferAttribute( position );\n\t\t\t\tbox.getCenter( center );\n\n\t\t\t\t// hoping to find a boundingSphere with a radius smaller than the\n\t\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\t\tvar maxRadiusSq = 0;\n\n\t\t\t\tfor ( var i = 0, il = position.count; i < il; i ++ ) {\n\n\t\t\t\t\tvector.x = position.getX( i );\n\t\t\t\t\tvector.y = position.getY( i );\n\t\t\t\t\tvector.z = position.getZ( i );\n\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( vector ) );\n\n\t\t\t\t}\n\n\t\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}(),\n\n\tcomputeFaceNormals: function () {\n\n\t\t// backwards compatibility\n\n\t},\n\n\tcomputeVertexNormals: function () {\n\n\t\tvar index = this.index;\n\t\tvar attributes = this.attributes;\n\t\tvar groups = this.groups;\n\n\t\tif ( attributes.position ) {\n\n\t\t\tvar positions = attributes.position.array;\n\n\t\t\tif ( attributes.normal === undefined ) {\n\n\t\t\t\tthis.addAttribute( 'normal', new BufferAttribute( new Float32Array( positions.length ), 3 ) );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tvar array = attributes.normal.array;\n\n\t\t\t\tfor ( var i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t\t\tarray[ i ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar normals = attributes.normal.array;\n\n\t\t\tvar vA, vB, vC;\n\t\t\tvar pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n\t\t\tvar cb = new Vector3(), ab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tvar indices = index.array;\n\n\t\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\t\tthis.addGroup( 0, indices.length );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var j = 0, jl = groups.length; j < jl; ++ j ) {\n\n\t\t\t\t\tvar group = groups[ j ];\n\n\t\t\t\t\tvar start = group.start;\n\t\t\t\t\tvar count = group.count;\n\n\t\t\t\t\tfor ( var i = start, il = start + count; i < il; i += 3 ) {\n\n\t\t\t\t\t\tvA = indices[ i + 0 ] * 3;\n\t\t\t\t\t\tvB = indices[ i + 1 ] * 3;\n\t\t\t\t\t\tvC = indices[ i + 2 ] * 3;\n\n\t\t\t\t\t\tpA.fromArray( positions, vA );\n\t\t\t\t\t\tpB.fromArray( positions, vB );\n\t\t\t\t\t\tpC.fromArray( positions, vC );\n\n\t\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\t\tnormals[ vA ] += cb.x;\n\t\t\t\t\t\tnormals[ vA + 1 ] += cb.y;\n\t\t\t\t\t\tnormals[ vA + 2 ] += cb.z;\n\n\t\t\t\t\t\tnormals[ vB ] += cb.x;\n\t\t\t\t\t\tnormals[ vB + 1 ] += cb.y;\n\t\t\t\t\t\tnormals[ vB + 2 ] += cb.z;\n\n\t\t\t\t\t\tnormals[ vC ] += cb.x;\n\t\t\t\t\t\tnormals[ vC + 1 ] += cb.y;\n\t\t\t\t\t\tnormals[ vC + 2 ] += cb.z;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\tfor ( var i = 0, il = positions.length; i < il; i += 9 ) {\n\n\t\t\t\t\tpA.fromArray( positions, i );\n\t\t\t\t\tpB.fromArray( positions, i + 3 );\n\t\t\t\t\tpC.fromArray( positions, i + 6 );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormals[ i ] = cb.x;\n\t\t\t\t\tnormals[ i + 1 ] = cb.y;\n\t\t\t\t\tnormals[ i + 2 ] = cb.z;\n\n\t\t\t\t\tnormals[ i + 3 ] = cb.x;\n\t\t\t\t\tnormals[ i + 4 ] = cb.y;\n\t\t\t\t\tnormals[ i + 5 ] = cb.z;\n\n\t\t\t\t\tnormals[ i + 6 ] = cb.x;\n\t\t\t\t\tnormals[ i + 7 ] = cb.y;\n\t\t\t\t\tnormals[ i + 8 ] = cb.z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tattributes.normal.needsUpdate = true;\n\n\t\t}\n\n\t},\n\n\tmerge: function ( geometry, offset ) {\n\n\t\tif ( ! ( geometry && geometry.isBufferGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( offset === undefined ) {\n\n\t\t\toffset = 0;\n\n\t\t\tconsole.warn(\n\t\t\t\t'THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. '\n\t\t\t\t+ 'Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge.'\n\t\t\t);\n\n\t\t}\n\n\t\tvar attributes = this.attributes;\n\n\t\tfor ( var key in attributes ) {\n\n\t\t\tif ( geometry.attributes[ key ] === undefined ) continue;\n\n\t\t\tvar attribute1 = attributes[ key ];\n\t\t\tvar attributeArray1 = attribute1.array;\n\n\t\t\tvar attribute2 = geometry.attributes[ key ];\n\t\t\tvar attributeArray2 = attribute2.array;\n\n\t\t\tvar attributeSize = attribute2.itemSize;\n\n\t\t\tfor ( var i = 0, j = attributeSize * offset; i < attributeArray2.length; i ++, j ++ ) {\n\n\t\t\t\tattributeArray1[ j ] = attributeArray2[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tnormalizeNormals: function () {\n\n\t\tvar vector = new Vector3();\n\n\t\treturn function normalizeNormals() {\n\n\t\t\tvar normals = this.attributes.normal;\n\n\t\t\tfor ( var i = 0, il = normals.count; i < il; i ++ ) {\n\n\t\t\t\tvector.x = normals.getX( i );\n\t\t\t\tvector.y = normals.getY( i );\n\t\t\t\tvector.z = normals.getZ( i );\n\n\t\t\t\tvector.normalize();\n\n\t\t\t\tnormals.setXYZ( i, vector.x, vector.y, vector.z );\n\n\t\t\t}\n\n\t\t};\n\n\t}(),\n\n\ttoNonIndexed: function () {\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvar geometry2 = new BufferGeometry();\n\n\t\tvar indices = this.index.array;\n\t\tvar attributes = this.attributes;\n\n\t\tfor ( var name in attributes ) {\n\n\t\t\tvar attribute = attributes[ name ];\n\n\t\t\tvar array = attribute.array;\n\t\t\tvar itemSize = attribute.itemSize;\n\n\t\t\tvar array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tvar index = 0, index2 = 0;\n\n\t\t\tfor ( var i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\tfor ( var j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tgeometry2.addAttribute( name, new BufferAttribute( array2, itemSize ) );\n\n\t\t}\n\n\t\tvar groups = this.groups;\n\n\t\tfor ( var i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tvar group = groups[ i ];\n\t\t\tgeometry2.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard BufferGeometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tvar parameters = this.parameters;\n\n\t\t\tfor ( var key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tdata.data = { attributes: {} };\n\n\t\tvar index = this.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tvar array = Array.prototype.slice.call( index.array );\n\n\t\t\tdata.data.index = {\n\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\tarray: array\n\t\t\t};\n\n\t\t}\n\n\t\tvar attributes = this.attributes;\n\n\t\tfor ( var key in attributes ) {\n\n\t\t\tvar attribute = attributes[ key ];\n\n\t\t\tvar array = Array.prototype.slice.call( attribute.array );\n\n\t\t\tdata.data.attributes[ key ] = {\n\t\t\t\titemSize: attribute.itemSize,\n\t\t\t\ttype: attribute.array.constructor.name,\n\t\t\t\tarray: array,\n\t\t\t\tnormalized: attribute.normalized\n\t\t\t};\n\n\t\t}\n\n\t\tvar groups = this.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t}\n\n\t\tvar boundingSphere = this.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tdata.data.boundingSphere = {\n\t\t\t\tcenter: boundingSphere.center.toArray(),\n\t\t\t\tradius: boundingSphere.radius\n\t\t\t};\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t // Handle primitives\n\n\t\t var parameters = this.parameters;\n\n\t\t if ( parameters !== undefined ) {\n\n\t\t var values = [];\n\n\t\t for ( var key in parameters ) {\n\n\t\t values.push( parameters[ key ] );\n\n\t\t }\n\n\t\t var geometry = Object.create( this.constructor.prototype );\n\t\t this.constructor.apply( geometry, values );\n\t\t return geometry;\n\n\t\t }\n\n\t\t return new this.constructor().copy( this );\n\t\t */\n\n\t\treturn new BufferGeometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tvar name, i, l;\n\n\t\t// reset\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\t\tthis.morphAttributes = {};\n\t\tthis.groups = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// index\n\n\t\tvar index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone() );\n\n\t\t}\n\n\t\t// attributes\n\n\t\tvar attributes = source.attributes;\n\n\t\tfor ( name in attributes ) {\n\n\t\t\tvar attribute = attributes[ name ];\n\t\t\tthis.addAttribute( name, attribute.clone() );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tvar morphAttributes = source.morphAttributes;\n\n\t\tfor ( name in morphAttributes ) {\n\n\t\t\tvar array = [];\n\t\t\tvar morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( i = 0, l = morphAttribute.length; i < l; i ++ ) {\n\n\t\t\t\tarray.push( morphAttribute[ i ].clone() );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\t// groups\n\n\t\tvar groups = source.groups;\n\n\t\tfor ( i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tvar group = groups[ i ];\n\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tvar boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tvar boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// draw range\n\n\t\tthis.drawRange.start = source.drawRange.start;\n\t\tthis.drawRange.count = source.drawRange.count;\n\n\t\t// user data\n\n\t\tthis.userData = source.userData;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// BoxGeometry\n\nfunction BoxGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'BoxGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\tdepth: depth,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tdepthSegments: depthSegments\n\t};\n\n\tthis.fromBufferGeometry( new BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) );\n\tthis.mergeVertices();\n\n}\n\nBoxGeometry.prototype = Object.create( Geometry.prototype );\nBoxGeometry.prototype.constructor = BoxGeometry;\n\n// BoxBufferGeometry\n\nfunction BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'BoxBufferGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\tdepth: depth,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tdepthSegments: depthSegments\n\t};\n\n\tvar scope = this;\n\n\twidth = width || 1;\n\theight = height || 1;\n\tdepth = depth || 1;\n\n\t// segments\n\n\twidthSegments = Math.floor( widthSegments ) || 1;\n\theightSegments = Math.floor( heightSegments ) || 1;\n\tdepthSegments = Math.floor( depthSegments ) || 1;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar numberOfVertices = 0;\n\tvar groupStart = 0;\n\n\t// build each side of the box geometry\n\n\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\tbuildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\tbuildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\tbuildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\tvar segmentWidth = width / gridX;\n\t\tvar segmentHeight = height / gridY;\n\n\t\tvar widthHalf = width / 2;\n\t\tvar heightHalf = height / 2;\n\t\tvar depthHalf = depth / 2;\n\n\t\tvar gridX1 = gridX + 1;\n\t\tvar gridY1 = gridY + 1;\n\n\t\tvar vertexCounter = 0;\n\t\tvar groupCount = 0;\n\n\t\tvar ix, iy;\n\n\t\tvar vector = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\tvar y = iy * segmentHeight - heightHalf;\n\n\t\t\tfor ( ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\tvar x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t// set values to correct vector component\n\n\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t// now apply vector to vertex buffer\n\n\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t// set values to correct vector component\n\n\t\t\t\tvector[ u ] = 0;\n\t\t\t\tvector[ v ] = 0;\n\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\n\n\t\t\t\t// now apply vector to normal buffer\n\n\t\t\t\tnormals.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t// uvs\n\n\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t\t// counters\n\n\t\t\t\tvertexCounter += 1;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// indices\n\n\t\t// 1. you need three indices to draw a single face\n\t\t// 2. a single segment consists of two faces\n\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\tfor ( iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\tfor ( ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\tvar a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\tvar b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\tvar c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\tvar d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t// increase counter\n\n\t\t\t\tgroupCount += 6;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t// calculate new start value for groups\n\n\t\tgroupStart += groupCount;\n\n\t\t// update total number of vertices\n\n\t\tnumberOfVertices += vertexCounter;\n\n\t}\n\n}\n\nBoxBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nBoxBufferGeometry.prototype.constructor = BoxBufferGeometry;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// PlaneGeometry\n\nfunction PlaneGeometry( width, height, widthSegments, heightSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'PlaneGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments\n\t};\n\n\tthis.fromBufferGeometry( new PlaneBufferGeometry( width, height, widthSegments, heightSegments ) );\n\tthis.mergeVertices();\n\n}\n\nPlaneGeometry.prototype = Object.create( Geometry.prototype );\nPlaneGeometry.prototype.constructor = PlaneGeometry;\n\n// PlaneBufferGeometry\n\nfunction PlaneBufferGeometry( width, height, widthSegments, heightSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'PlaneBufferGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments\n\t};\n\n\twidth = width || 1;\n\theight = height || 1;\n\n\tvar width_half = width / 2;\n\tvar height_half = height / 2;\n\n\tvar gridX = Math.floor( widthSegments ) || 1;\n\tvar gridY = Math.floor( heightSegments ) || 1;\n\n\tvar gridX1 = gridX + 1;\n\tvar gridY1 = gridY + 1;\n\n\tvar segment_width = width / gridX;\n\tvar segment_height = height / gridY;\n\n\tvar ix, iy;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// generate vertices, normals and uvs\n\n\tfor ( iy = 0; iy < gridY1; iy ++ ) {\n\n\t\tvar y = iy * segment_height - height_half;\n\n\t\tfor ( ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\tvar x = ix * segment_width - width_half;\n\n\t\t\tvertices.push( x, - y, 0 );\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\tuvs.push( ix / gridX );\n\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t}\n\n\t}\n\n\t// indices\n\n\tfor ( iy = 0; iy < gridY; iy ++ ) {\n\n\t\tfor ( ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\tvar a = ix + gridX1 * iy;\n\t\t\tvar b = ix + gridX1 * ( iy + 1 );\n\t\t\tvar c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\tvar d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nPlaneBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nPlaneBufferGeometry.prototype.constructor = PlaneBufferGeometry;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nvar materialId = 0;\n\nfunction Material() {\n\n\tObject.defineProperty( this, 'id', { value: materialId ++ } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Material';\n\n\tthis.fog = true;\n\tthis.lights = true;\n\n\tthis.blending = NormalBlending;\n\tthis.side = FrontSide;\n\tthis.flatShading = false;\n\tthis.vertexColors = NoColors; // THREE.NoColors, THREE.VertexColors, THREE.FaceColors\n\n\tthis.opacity = 1;\n\tthis.transparent = false;\n\n\tthis.blendSrc = SrcAlphaFactor;\n\tthis.blendDst = OneMinusSrcAlphaFactor;\n\tthis.blendEquation = AddEquation;\n\tthis.blendSrcAlpha = null;\n\tthis.blendDstAlpha = null;\n\tthis.blendEquationAlpha = null;\n\n\tthis.depthFunc = LessEqualDepth;\n\tthis.depthTest = true;\n\tthis.depthWrite = true;\n\n\tthis.clippingPlanes = null;\n\tthis.clipIntersection = false;\n\tthis.clipShadows = false;\n\n\tthis.shadowSide = null;\n\n\tthis.colorWrite = true;\n\n\tthis.precision = null; // override the renderer's default precision for this material\n\n\tthis.polygonOffset = false;\n\tthis.polygonOffsetFactor = 0;\n\tthis.polygonOffsetUnits = 0;\n\n\tthis.dithering = false;\n\n\tthis.alphaTest = 0;\n\tthis.premultipliedAlpha = false;\n\n\tthis.overdraw = 0; // Overdrawn pixels (typically between 0 and 1) for fixing antialiasing gaps in CanvasRenderer\n\n\tthis.visible = true;\n\n\tthis.userData = {};\n\n\tthis.needsUpdate = true;\n\n}\n\nMaterial.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Material,\n\n\tisMaterial: true,\n\n\tonBeforeCompile: function () {},\n\n\tsetValues: function ( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( var key in values ) {\n\n\t\t\tvar newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.Material: '\" + key + \"' parameter is undefined.\" );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t// for backward compatability if shading is set in the constructor\n\t\t\tif ( key === 'shading' ) {\n\n\t\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\t\tthis.flatShading = ( newValue === FlatShading ) ? true : false;\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tvar currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.\" + this.type + \": '\" + key + \"' is not a property of this material.\" );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( currentValue && currentValue.isColor ) {\n\n\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t} else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else if ( key === 'overdraw' ) {\n\n\t\t\t\t// ensure overdraw is backwards-compatible with legacy boolean type\n\t\t\t\tthis[ key ] = Number( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar isRoot = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( isRoot ) {\n\n\t\t\tmeta = {\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t}\n\n\t\tvar data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Material',\n\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Material serialization\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.color && this.color.isColor ) data.color = this.color.getHex();\n\n\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\tif ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex();\n\t\tif ( this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity;\n\n\t\tif ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex();\n\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\t\tif ( this.clearCoat !== undefined ) data.clearCoat = this.clearCoat;\n\t\tif ( this.clearCoatRoughness !== undefined ) data.clearCoatRoughness = this.clearCoatRoughness;\n\n\t\tif ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid;\n\t\tif ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\t\tif ( this.lightMap && this.lightMap.isTexture ) data.lightMap = this.lightMap.toJSON( meta ).uuid;\n\n\t\tif ( this.aoMap && this.aoMap.isTexture ) {\n\n\t\t\tdata.aoMap = this.aoMap.toJSON( meta ).uuid;\n\t\t\tdata.aoMapIntensity = this.aoMapIntensity;\n\n\t\t}\n\n\t\tif ( this.bumpMap && this.bumpMap.isTexture ) {\n\n\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t}\n\n\t\tif ( this.normalMap && this.normalMap.isTexture ) {\n\n\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\tdata.normalMapType = this.normalMapType;\n\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.displacementMap && this.displacementMap.isTexture ) {\n\n\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t}\n\n\t\tif ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\tif ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\tif ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\tif ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\n\t\tif ( this.envMap && this.envMap.isTexture ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\t\t\tdata.reflectivity = this.reflectivity; // Scale behind envMap\n\n\t\t}\n\n\t\tif ( this.gradientMap && this.gradientMap.isTexture ) {\n\n\t\t\tdata.gradientMap = this.gradientMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\n\t\tif ( this.flatShading === true ) data.flatShading = this.flatShading;\n\t\tif ( this.side !== FrontSide ) data.side = this.side;\n\t\tif ( this.vertexColors !== NoColors ) data.vertexColors = this.vertexColors;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.transparent === true ) data.transparent = this.transparent;\n\n\t\tdata.depthFunc = this.depthFunc;\n\t\tdata.depthTest = this.depthTest;\n\t\tdata.depthWrite = this.depthWrite;\n\n\t\t// rotation (SpriteMaterial)\n\t\tif ( this.rotation !== 0 ) data.rotation = this.rotation;\n\n\t\tif ( this.linewidth !== 1 ) data.linewidth = this.linewidth;\n\t\tif ( this.dashSize !== undefined ) data.dashSize = this.dashSize;\n\t\tif ( this.gapSize !== undefined ) data.gapSize = this.gapSize;\n\t\tif ( this.scale !== undefined ) data.scale = this.scale;\n\n\t\tif ( this.dithering === true ) data.dithering = true;\n\n\t\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha;\n\n\t\tif ( this.wireframe === true ) data.wireframe = this.wireframe;\n\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\n\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\n\n\t\tif ( this.morphTargets === true ) data.morphTargets = true;\n\t\tif ( this.skinning === true ) data.skinning = true;\n\n\t\tif ( this.visible === false ) data.visible = false;\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) data.userData = this.userData;\n\n\t\t// TODO: Copied from Object3D.toJSON\n\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tvar values = [];\n\n\t\t\tfor ( var key in cache ) {\n\n\t\t\t\tvar data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t\tif ( isRoot ) {\n\n\t\t\tvar textures = extractFromCache( meta.textures );\n\t\t\tvar images = extractFromCache( meta.images );\n\n\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.fog = source.fog;\n\t\tthis.lights = source.lights;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\n\t\tthis.flatShading = source.flatShading;\n\t\tthis.vertexColors = source.vertexColors;\n\n\t\tthis.opacity = source.opacity;\n\t\tthis.transparent = source.transparent;\n\n\t\tthis.blendSrc = source.blendSrc;\n\t\tthis.blendDst = source.blendDst;\n\t\tthis.blendEquation = source.blendEquation;\n\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\n\t\tthis.depthFunc = source.depthFunc;\n\t\tthis.depthTest = source.depthTest;\n\t\tthis.depthWrite = source.depthWrite;\n\n\t\tthis.colorWrite = source.colorWrite;\n\n\t\tthis.precision = source.precision;\n\n\t\tthis.polygonOffset = source.polygonOffset;\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\tthis.dithering = source.dithering;\n\n\t\tthis.alphaTest = source.alphaTest;\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\n\t\tthis.overdraw = source.overdraw;\n\n\t\tthis.visible = source.visible;\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tthis.clipShadows = source.clipShadows;\n\t\tthis.clipIntersection = source.clipIntersection;\n\n\t\tvar srcPlanes = source.clippingPlanes,\n\t\t\tdstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tvar n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( var i = 0; i !== n; ++ i )\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\n\t\tthis.shadowSide = source.shadowSide;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n *  color: <hex>,\n *  opacity: <float>,\n *  map: new THREE.Texture( <Image> ),\n *\n *  lightMap: new THREE.Texture( <Image> ),\n *  lightMapIntensity: <float>\n *\n *  aoMap: new THREE.Texture( <Image> ),\n *  aoMapIntensity: <float>\n *\n *  specularMap: new THREE.Texture( <Image> ),\n *\n *  alphaMap: new THREE.Texture( <Image> ),\n *\n *  envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n *  combine: THREE.Multiply,\n *  reflectivity: <float>,\n *  refractionRatio: <float>,\n *\n *  depthTest: <bool>,\n *  depthWrite: <bool>,\n *\n *  wireframe: <boolean>,\n *  wireframeLinewidth: <float>,\n *\n *  skinning: <bool>,\n *  morphTargets: <bool>\n * }\n */\n\nfunction MeshBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshBasicMaterial';\n\n\tthis.color = new Color( 0xffffff ); // emissive\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshBasicMaterial.prototype = Object.create( Material.prototype );\nMeshBasicMaterial.prototype.constructor = MeshBasicMaterial;\n\nMeshBasicMaterial.prototype.isMeshBasicMaterial = true;\n\nMeshBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n *  defines: { \"label\" : \"value\" },\n *  uniforms: { \"parameter1\": { value: 1.0 }, \"parameter2\": { value2: 2 } },\n *\n *  fragmentShader: <string>,\n *  vertexShader: <string>,\n *\n *  wireframe: <boolean>,\n *  wireframeLinewidth: <float>,\n *\n *  lights: <bool>,\n *\n *  skinning: <bool>,\n *  morphTargets: <bool>,\n *  morphNormals: <bool>\n * }\n */\n\nfunction ShaderMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'ShaderMaterial';\n\n\tthis.defines = {};\n\tthis.uniforms = {};\n\n\tthis.vertexShader = 'void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}';\n\tthis.fragmentShader = 'void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}';\n\n\tthis.linewidth = 1;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false; // set to use scene fog\n\tthis.lights = false; // set to use scene lights\n\tthis.clipping = false; // set to use user-defined clipping planes\n\n\tthis.skinning = false; // set to use skinning attribute streams\n\tthis.morphTargets = false; // set to use morph targets\n\tthis.morphNormals = false; // set to use morph normals\n\n\tthis.extensions = {\n\t\tderivatives: false, // set to use derivatives\n\t\tfragDepth: false, // set to use fragment depth values\n\t\tdrawBuffers: false, // set to use draw buffers\n\t\tshaderTextureLOD: false // set to use shader texture LOD\n\t};\n\n\t// When rendered geometry doesn't include these attributes but the material does,\n\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\tthis.defaultAttributeValues = {\n\t\t'color': [ 1, 1, 1 ],\n\t\t'uv': [ 0, 0 ],\n\t\t'uv2': [ 0, 0 ]\n\t};\n\n\tthis.index0AttributeName = undefined;\n\tthis.uniformsNeedUpdate = false;\n\n\tif ( parameters !== undefined ) {\n\n\t\tif ( parameters.attributes !== undefined ) {\n\n\t\t\tconsole.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n}\n\nShaderMaterial.prototype = Object.create( Material.prototype );\nShaderMaterial.prototype.constructor = ShaderMaterial;\n\nShaderMaterial.prototype.isShaderMaterial = true;\n\nShaderMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.fragmentShader = source.fragmentShader;\n\tthis.vertexShader = source.vertexShader;\n\n\tthis.uniforms = UniformsUtils.clone( source.uniforms );\n\n\tthis.defines = Object.assign( {}, source.defines );\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\tthis.lights = source.lights;\n\tthis.clipping = source.clipping;\n\n\tthis.skinning = source.skinning;\n\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\tthis.extensions = source.extensions;\n\n\treturn this;\n\n};\n\nShaderMaterial.prototype.toJSON = function ( meta ) {\n\n\tvar data = Material.prototype.toJSON.call( this, meta );\n\n\tdata.uniforms = this.uniforms;\n\tdata.vertexShader = this.vertexShader;\n\tdata.fragmentShader = this.fragmentShader;\n\n\treturn data;\n\n};\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Ray( origin, direction ) {\n\n\tthis.origin = ( origin !== undefined ) ? origin : new Vector3();\n\tthis.direction = ( direction !== undefined ) ? direction : new Vector3();\n\n}\n\nObject.assign( Ray.prototype, {\n\n\tset: function ( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t},\n\n\tat: function ( t, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Ray: .at() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( t ).add( this.origin );\n\n\t},\n\n\tlookAt: function ( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t},\n\n\trecast: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function recast( t ) {\n\n\t\t\tthis.origin.copy( this.at( t, v1 ) );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclosestPointToPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Ray: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.subVectors( point, this.origin );\n\n\t\tvar directionDistance = target.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn target.copy( this.origin );\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t},\n\n\tdistanceSqToPoint: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function distanceSqToPoint( point ) {\n\n\t\t\tvar directionDistance = v1.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t\t// point behind the ray\n\n\t\t\tif ( directionDistance < 0 ) {\n\n\t\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t\t}\n\n\t\t\tv1.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t\t\treturn v1.distanceToSquared( point );\n\n\t\t};\n\n\t}(),\n\n\tdistanceSqToSegment: function () {\n\n\t\tvar segCenter = new Vector3();\n\t\tvar segDir = new Vector3();\n\t\tvar diff = new Vector3();\n\n\t\treturn function distanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t\t// It returns the min distance between the ray and the segment\n\t\t\t// defined by v0 and v1\n\t\t\t// It can also set two optional targets :\n\t\t\t// - The closest point on the ray\n\t\t\t// - The closest point on the segment\n\n\t\t\tsegCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t\tsegDir.copy( v1 ).sub( v0 ).normalize();\n\t\t\tdiff.copy( this.origin ).sub( segCenter );\n\n\t\t\tvar segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\t\tvar a01 = - this.direction.dot( segDir );\n\t\t\tvar b0 = diff.dot( this.direction );\n\t\t\tvar b1 = - diff.dot( segDir );\n\t\t\tvar c = diff.lengthSq();\n\t\t\tvar det = Math.abs( 1 - a01 * a01 );\n\t\t\tvar s0, s1, sqrDist, extDet;\n\n\t\t\tif ( det > 0 ) {\n\n\t\t\t\t// The ray and segment are not parallel.\n\n\t\t\t\ts0 = a01 * b1 - b0;\n\t\t\t\ts1 = a01 * b0 - b1;\n\t\t\t\textDet = segExtent * det;\n\n\t\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\t\tvar invDet = 1 / det;\n\t\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 5\n\n\t\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t\t// region 4\n\n\t\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 3\n\n\t\t\t\t\t\ts0 = 0;\n\t\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 2\n\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// Ray and segment are parallel.\n\n\t\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t}\n\n\t\t\tif ( optionalPointOnRay ) {\n\n\t\t\t\toptionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin );\n\n\t\t\t}\n\n\t\t\tif ( optionalPointOnSegment ) {\n\n\t\t\t\toptionalPointOnSegment.copy( segDir ).multiplyScalar( s1 ).add( segCenter );\n\n\t\t\t}\n\n\t\t\treturn sqrDist;\n\n\t\t};\n\n\t}(),\n\n\tintersectSphere: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function intersectSphere( sphere, target ) {\n\n\t\t\tv1.subVectors( sphere.center, this.origin );\n\t\t\tvar tca = v1.dot( this.direction );\n\t\t\tvar d2 = v1.dot( v1 ) - tca * tca;\n\t\t\tvar radius2 = sphere.radius * sphere.radius;\n\n\t\t\tif ( d2 > radius2 ) return null;\n\n\t\t\tvar thc = Math.sqrt( radius2 - d2 );\n\n\t\t\t// t0 = first intersect point - entrance on front of sphere\n\t\t\tvar t0 = tca - thc;\n\n\t\t\t// t1 = second intersect point - exit point on back of sphere\n\t\t\tvar t1 = tca + thc;\n\n\t\t\t// test to see if both t0 and t1 are behind the ray - if so, return null\n\t\t\tif ( t0 < 0 && t1 < 0 ) return null;\n\n\t\t\t// test to see if t0 is behind the ray:\n\t\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t\t// in order to always return an intersect point that is in front of the ray.\n\t\t\tif ( t0 < 0 ) return this.at( t1, target );\n\n\t\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\t\treturn this.at( t0, target );\n\n\t\t};\n\n\t}(),\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) <= sphere.radius;\n\n\t},\n\n\tdistanceToPlane: function ( plane ) {\n\n\t\tvar denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tvar t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t},\n\n\tintersectPlane: function ( plane, target ) {\n\n\t\tvar t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, target );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tvar distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tvar denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t},\n\n\tintersectBox: function ( box, target ) {\n\n\t\tvar tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tvar invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tvar origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\t// These lines also handle the case where tmin or tmax is NaN\n\t\t// (result of 0 * Infinity). x !== x returns true if x is NaN\n\n\t\tif ( tymin > tmin || tmin !== tmin ) tmin = tymin;\n\n\t\tif ( tymax < tmax || tmax !== tmax ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, target );\n\n\t},\n\n\tintersectsBox: ( function () {\n\n\t\tvar v = new Vector3();\n\n\t\treturn function intersectsBox( box ) {\n\n\t\t\treturn this.intersectBox( box, v ) !== null;\n\n\t\t};\n\n\t} )(),\n\n\tintersectTriangle: function () {\n\n\t\t// Compute the offset origin, edges, and normal.\n\t\tvar diff = new Vector3();\n\t\tvar edge1 = new Vector3();\n\t\tvar edge2 = new Vector3();\n\t\tvar normal = new Vector3();\n\n\t\treturn function intersectTriangle( a, b, c, backfaceCulling, target ) {\n\n\t\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t\tedge1.subVectors( b, a );\n\t\t\tedge2.subVectors( c, a );\n\t\t\tnormal.crossVectors( edge1, edge2 );\n\n\t\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t\t//   |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t\t//   |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t\t//   |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\t\tvar DdN = this.direction.dot( normal );\n\t\t\tvar sign;\n\n\t\t\tif ( DdN > 0 ) {\n\n\t\t\t\tif ( backfaceCulling ) return null;\n\t\t\t\tsign = 1;\n\n\t\t\t} else if ( DdN < 0 ) {\n\n\t\t\t\tsign = - 1;\n\t\t\t\tDdN = - DdN;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tdiff.subVectors( this.origin, a );\n\t\t\tvar DdQxE2 = sign * this.direction.dot( edge2.crossVectors( diff, edge2 ) );\n\n\t\t\t// b1 < 0, no intersection\n\t\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tvar DdE1xQ = sign * this.direction.dot( edge1.cross( diff ) );\n\n\t\t\t// b2 < 0, no intersection\n\t\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\t// b1+b2 > 1, no intersection\n\t\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\t// Line intersects triangle, check if ray does.\n\t\t\tvar QdN = - sign * diff.dot( normal );\n\n\t\t\t// t < 0, no intersection\n\t\t\tif ( QdN < 0 ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\t// Ray intersects triangle.\n\t\t\treturn this.at( QdN / DdN, target );\n\n\t\t};\n\n\t}(),\n\n\tapplyMatrix4: function ( matrix4 ) {\n\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.transformDirection( matrix4 );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Line3( start, end ) {\n\n\tthis.start = ( start !== undefined ) ? start : new Vector3();\n\tthis.end = ( end !== undefined ) ? end : new Vector3();\n\n}\n\nObject.assign( Line3.prototype, {\n\n\tset: function ( start, end ) {\n\n\t\tthis.start.copy( start );\n\t\tthis.end.copy( end );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( line ) {\n\n\t\tthis.start.copy( line.start );\n\t\tthis.end.copy( line.end );\n\n\t\treturn this;\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .getCenter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t},\n\n\tdelta: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .delta() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.subVectors( this.end, this.start );\n\n\t},\n\n\tdistanceSq: function () {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t},\n\n\tdistance: function () {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t},\n\n\tat: function ( t, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .at() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t},\n\n\tclosestPointToPointParameter: function () {\n\n\t\tvar startP = new Vector3();\n\t\tvar startEnd = new Vector3();\n\n\t\treturn function closestPointToPointParameter( point, clampToLine ) {\n\n\t\t\tstartP.subVectors( point, this.start );\n\t\t\tstartEnd.subVectors( this.end, this.start );\n\n\t\t\tvar startEnd2 = startEnd.dot( startEnd );\n\t\t\tvar startEnd_startP = startEnd.dot( startP );\n\n\t\t\tvar t = startEnd_startP / startEnd2;\n\n\t\t\tif ( clampToLine ) {\n\n\t\t\t\tt = _Math.clamp( t, 0, 1 );\n\n\t\t\t}\n\n\t\t\treturn t;\n\n\t\t};\n\n\t}(),\n\n\tclosestPointToPoint: function ( point, clampToLine, target ) {\n\n\t\tvar t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tthis.start.applyMatrix4( matrix );\n\t\tthis.end.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Triangle( a, b, c ) {\n\n\tthis.a = ( a !== undefined ) ? a : new Vector3();\n\tthis.b = ( b !== undefined ) ? b : new Vector3();\n\tthis.c = ( c !== undefined ) ? c : new Vector3();\n\n}\n\nObject.assign( Triangle, {\n\n\tgetNormal: function () {\n\n\t\tvar v0 = new Vector3();\n\n\t\treturn function getNormal( a, b, c, target ) {\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Triangle: .getNormal() target is now required' );\n\t\t\t\ttarget = new Vector3();\n\n\t\t\t}\n\n\t\t\ttarget.subVectors( c, b );\n\t\t\tv0.subVectors( a, b );\n\t\t\ttarget.cross( v0 );\n\n\t\t\tvar targetLengthSq = target.lengthSq();\n\t\t\tif ( targetLengthSq > 0 ) {\n\n\t\t\t\treturn target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) );\n\n\t\t\t}\n\n\t\t\treturn target.set( 0, 0, 0 );\n\n\t\t};\n\n\t}(),\n\n\t// static/instance method to calculate barycentric coordinates\n\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n\tgetBarycoord: function () {\n\n\t\tvar v0 = new Vector3();\n\t\tvar v1 = new Vector3();\n\t\tvar v2 = new Vector3();\n\n\t\treturn function getBarycoord( point, a, b, c, target ) {\n\n\t\t\tv0.subVectors( c, a );\n\t\t\tv1.subVectors( b, a );\n\t\t\tv2.subVectors( point, a );\n\n\t\t\tvar dot00 = v0.dot( v0 );\n\t\t\tvar dot01 = v0.dot( v1 );\n\t\t\tvar dot02 = v0.dot( v2 );\n\t\t\tvar dot11 = v1.dot( v1 );\n\t\t\tvar dot12 = v1.dot( v2 );\n\n\t\t\tvar denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Triangle: .getBarycoord() target is now required' );\n\t\t\t\ttarget = new Vector3();\n\n\t\t\t}\n\n\t\t\t// collinear or singular triangle\n\t\t\tif ( denom === 0 ) {\n\n\t\t\t\t// arbitrary location outside of triangle?\n\t\t\t\t// not sure if this is the best idea, maybe should be returning undefined\n\t\t\t\treturn target.set( - 2, - 1, - 1 );\n\n\t\t\t}\n\n\t\t\tvar invDenom = 1 / denom;\n\t\t\tvar u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\t\tvar v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t\t// barycentric coordinates must always sum to 1\n\t\t\treturn target.set( 1 - u - v, v, u );\n\n\t\t};\n\n\t}(),\n\n\tcontainsPoint: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function containsPoint( point, a, b, c ) {\n\n\t\t\tTriangle.getBarycoord( point, a, b, c, v1 );\n\n\t\t\treturn ( v1.x >= 0 ) && ( v1.y >= 0 ) && ( ( v1.x + v1.y ) <= 1 );\n\n\t\t};\n\n\t}()\n\n} );\n\nObject.assign( Triangle.prototype, {\n\n\tset: function ( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPointsAndIndices: function ( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t},\n\n\tgetArea: function () {\n\n\t\tvar v0 = new Vector3();\n\t\tvar v1 = new Vector3();\n\n\t\treturn function getArea() {\n\n\t\t\tv0.subVectors( this.c, this.b );\n\t\t\tv1.subVectors( this.a, this.b );\n\n\t\t\treturn v0.cross( v1 ).length() * 0.5;\n\n\t\t};\n\n\t}(),\n\n\tgetMidpoint: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getMidpoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t},\n\n\tgetNormal: function ( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t},\n\n\tgetPlane: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getPlane() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t},\n\n\tgetBarycoord: function ( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t},\n\n\tclosestPointToPoint: function () {\n\n\t\tvar plane = new Plane();\n\t\tvar edgeList = [ new Line3(), new Line3(), new Line3() ];\n\t\tvar projectedPoint = new Vector3();\n\t\tvar closestPoint = new Vector3();\n\n\t\treturn function closestPointToPoint( point, target ) {\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Triangle: .closestPointToPoint() target is now required' );\n\t\t\t\ttarget = new Vector3();\n\n\t\t\t}\n\n\t\t\tvar minDistance = Infinity;\n\n\t\t\t// project the point onto the plane of the triangle\n\n\t\t\tplane.setFromCoplanarPoints( this.a, this.b, this.c );\n\t\t\tplane.projectPoint( point, projectedPoint );\n\n\t\t\t// check if the projection lies within the triangle\n\n\t\t\tif ( this.containsPoint( projectedPoint ) === true ) {\n\n\t\t\t\t// if so, this is the closest point\n\n\t\t\t\ttarget.copy( projectedPoint );\n\n\t\t\t} else {\n\n\t\t\t\t// if not, the point falls outside the triangle. the target is the closest point to the triangle's edges or vertices\n\n\t\t\t\tedgeList[ 0 ].set( this.a, this.b );\n\t\t\t\tedgeList[ 1 ].set( this.b, this.c );\n\t\t\t\tedgeList[ 2 ].set( this.c, this.a );\n\n\t\t\t\tfor ( var i = 0; i < edgeList.length; i ++ ) {\n\n\t\t\t\t\tedgeList[ i ].closestPointToPoint( projectedPoint, true, closestPoint );\n\n\t\t\t\t\tvar distance = projectedPoint.distanceToSquared( closestPoint );\n\n\t\t\t\t\tif ( distance < minDistance ) {\n\n\t\t\t\t\t\tminDistance = distance;\n\n\t\t\t\t\t\ttarget.copy( closestPoint );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn target;\n\n\t\t};\n\n\t}(),\n\n\tequals: function ( triangle ) {\n\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author jonobr1 / http://jonobr1.com/\n */\n\nfunction Mesh( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Mesh';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new MeshBasicMaterial( { color: Math.random() * 0xffffff } );\n\n\tthis.drawMode = TrianglesDrawMode;\n\n\tthis.updateMorphTargets();\n\n}\n\nMesh.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Mesh,\n\n\tisMesh: true,\n\n\tsetDrawMode: function ( value ) {\n\n\t\tthis.drawMode = value;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.drawMode = source.drawMode;\n\n\t\tif ( source.morphTargetInfluences !== undefined ) {\n\n\t\t\tthis.morphTargetInfluences = source.morphTargetInfluences.slice();\n\n\t\t}\n\n\t\tif ( source.morphTargetDictionary !== undefined ) {\n\n\t\t\tthis.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tvar geometry = this.geometry;\n\t\tvar m, ml, name;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tvar morphAttributes = geometry.morphAttributes;\n\t\t\tvar keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tvar morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tname = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tvar morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( m = 0, ml = morphTargets.length; m < ml; m ++ ) {\n\n\t\t\t\t\tname = morphTargets[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\traycast: ( function () {\n\n\t\tvar inverseMatrix = new Matrix4();\n\t\tvar ray = new Ray();\n\t\tvar sphere = new Sphere();\n\n\t\tvar vA = new Vector3();\n\t\tvar vB = new Vector3();\n\t\tvar vC = new Vector3();\n\n\t\tvar tempA = new Vector3();\n\t\tvar tempB = new Vector3();\n\t\tvar tempC = new Vector3();\n\n\t\tvar uvA = new Vector2();\n\t\tvar uvB = new Vector2();\n\t\tvar uvC = new Vector2();\n\n\t\tvar barycoord = new Vector3();\n\n\t\tvar intersectionPoint = new Vector3();\n\t\tvar intersectionPointWorld = new Vector3();\n\n\t\tfunction uvIntersection( point, p1, p2, p3, uv1, uv2, uv3 ) {\n\n\t\t\tTriangle.getBarycoord( point, p1, p2, p3, barycoord );\n\n\t\t\tuv1.multiplyScalar( barycoord.x );\n\t\t\tuv2.multiplyScalar( barycoord.y );\n\t\t\tuv3.multiplyScalar( barycoord.z );\n\n\t\t\tuv1.add( uv2 ).add( uv3 );\n\n\t\t\treturn uv1.clone();\n\n\t\t}\n\n\t\tfunction checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) {\n\n\t\t\tvar intersect;\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t\t\t} else {\n\n\t\t\t\tintersect = ray.intersectTriangle( pA, pB, pC, material.side !== DoubleSide, point );\n\n\t\t\t}\n\n\t\t\tif ( intersect === null ) return null;\n\n\t\t\tintersectionPointWorld.copy( point );\n\t\t\tintersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\t\t\tvar distance = raycaster.ray.origin.distanceTo( intersectionPointWorld );\n\n\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\t\t\treturn {\n\t\t\t\tdistance: distance,\n\t\t\t\tpoint: intersectionPointWorld.clone(),\n\t\t\t\tobject: object\n\t\t\t};\n\n\t\t}\n\n\t\tfunction checkBufferGeometryIntersection( object, material, raycaster, ray, position, uv, a, b, c ) {\n\n\t\t\tvA.fromBufferAttribute( position, a );\n\t\t\tvB.fromBufferAttribute( position, b );\n\t\t\tvC.fromBufferAttribute( position, c );\n\n\t\t\tvar intersection = checkIntersection( object, material, raycaster, ray, vA, vB, vC, intersectionPoint );\n\n\t\t\tif ( intersection ) {\n\n\t\t\t\tif ( uv ) {\n\n\t\t\t\t\tuvA.fromBufferAttribute( uv, a );\n\t\t\t\t\tuvB.fromBufferAttribute( uv, b );\n\t\t\t\t\tuvC.fromBufferAttribute( uv, c );\n\n\t\t\t\t\tintersection.uv = uvIntersection( intersectionPoint, vA, vB, vC, uvA, uvB, uvC );\n\n\t\t\t\t}\n\n\t\t\t\tvar face = new Face3( a, b, c );\n\t\t\t\tTriangle.getNormal( vA, vB, vC, face.normal );\n\n\t\t\t\tintersection.face = face;\n\n\t\t\t}\n\n\t\t\treturn intersection;\n\n\t\t}\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tvar geometry = this.geometry;\n\t\t\tvar material = this.material;\n\t\t\tvar matrixWorld = this.matrixWorld;\n\n\t\t\tif ( material === undefined ) return;\n\n\t\t\t// Checking boundingSphere distance to ray\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\tsphere.copy( geometry.boundingSphere );\n\t\t\tsphere.applyMatrix4( matrixWorld );\n\n\t\t\tif ( raycaster.ray.intersectsSphere( sphere ) === false ) return;\n\n\t\t\t//\n\n\t\t\tinverseMatrix.getInverse( matrixWorld );\n\t\t\tray.copy( raycaster.ray ).applyMatrix4( inverseMatrix );\n\n\t\t\t// Check boundingBox before continuing\n\n\t\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\t\tif ( ray.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t\t}\n\n\t\t\tvar intersection;\n\n\t\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t\tvar a, b, c;\n\t\t\t\tvar index = geometry.index;\n\t\t\t\tvar position = geometry.attributes.position;\n\t\t\t\tvar uv = geometry.attributes.uv;\n\t\t\t\tvar groups = geometry.groups;\n\t\t\t\tvar drawRange = geometry.drawRange;\n\t\t\t\tvar i, j, il, jl;\n\t\t\t\tvar group, groupMaterial;\n\t\t\t\tvar start, end;\n\n\t\t\t\tif ( index !== null ) {\n\n\t\t\t\t\t// indexed buffer geometry\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tfor ( i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\tgroup = groups[ i ];\n\t\t\t\t\t\t\tgroupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\tstart = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\t\tend = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\t\tfor ( j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\t\ta = index.getX( i );\n\t\t\t\t\t\t\t\tb = index.getX( i + 1 );\n\t\t\t\t\t\t\t\tc = index.getX( i + 2 );\n\n\t\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, ray, position, uv, a, b, c );\n\n\t\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstart = Math.max( 0, drawRange.start );\n\t\t\t\t\t\tend = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\tfor ( i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\t\ta = index.getX( i );\n\t\t\t\t\t\t\tb = index.getX( i + 1 );\n\t\t\t\t\t\t\tc = index.getX( i + 2 );\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, ray, position, uv, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( position !== undefined ) {\n\n\t\t\t\t\t// non-indexed buffer geometry\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tfor ( i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\tgroup = groups[ i ];\n\t\t\t\t\t\t\tgroupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\tstart = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\t\tend = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\t\tfor ( j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\t\ta = j;\n\t\t\t\t\t\t\t\tb = j + 1;\n\t\t\t\t\t\t\t\tc = j + 2;\n\n\t\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, ray, position, uv, a, b, c );\n\n\t\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstart = Math.max( 0, drawRange.start );\n\t\t\t\t\t\tend = Math.min( position.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\tfor ( i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\t\ta = i;\n\t\t\t\t\t\t\tb = i + 1;\n\t\t\t\t\t\t\tc = i + 2;\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, ray, position, uv, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\t\tvar fvA, fvB, fvC;\n\t\t\t\tvar isMultiMaterial = Array.isArray( material );\n\n\t\t\t\tvar vertices = geometry.vertices;\n\t\t\t\tvar faces = geometry.faces;\n\t\t\t\tvar uvs;\n\n\t\t\t\tvar faceVertexUvs = geometry.faceVertexUvs[ 0 ];\n\t\t\t\tif ( faceVertexUvs.length > 0 ) uvs = faceVertexUvs;\n\n\t\t\t\tfor ( var f = 0, fl = faces.length; f < fl; f ++ ) {\n\n\t\t\t\t\tvar face = faces[ f ];\n\t\t\t\t\tvar faceMaterial = isMultiMaterial ? material[ face.materialIndex ] : material;\n\n\t\t\t\t\tif ( faceMaterial === undefined ) continue;\n\n\t\t\t\t\tfvA = vertices[ face.a ];\n\t\t\t\t\tfvB = vertices[ face.b ];\n\t\t\t\t\tfvC = vertices[ face.c ];\n\n\t\t\t\t\tif ( faceMaterial.morphTargets === true ) {\n\n\t\t\t\t\t\tvar morphTargets = geometry.morphTargets;\n\t\t\t\t\t\tvar morphInfluences = this.morphTargetInfluences;\n\n\t\t\t\t\t\tvA.set( 0, 0, 0 );\n\t\t\t\t\t\tvB.set( 0, 0, 0 );\n\t\t\t\t\t\tvC.set( 0, 0, 0 );\n\n\t\t\t\t\t\tfor ( var t = 0, tl = morphTargets.length; t < tl; t ++ ) {\n\n\t\t\t\t\t\t\tvar influence = morphInfluences[ t ];\n\n\t\t\t\t\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t\t\t\t\tvar targets = morphTargets[ t ].vertices;\n\n\t\t\t\t\t\t\tvA.addScaledVector( tempA.subVectors( targets[ face.a ], fvA ), influence );\n\t\t\t\t\t\t\tvB.addScaledVector( tempB.subVectors( targets[ face.b ], fvB ), influence );\n\t\t\t\t\t\t\tvC.addScaledVector( tempC.subVectors( targets[ face.c ], fvC ), influence );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvA.add( fvA );\n\t\t\t\t\t\tvB.add( fvB );\n\t\t\t\t\t\tvC.add( fvC );\n\n\t\t\t\t\t\tfvA = vA;\n\t\t\t\t\t\tfvB = vB;\n\t\t\t\t\t\tfvC = vC;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tintersection = checkIntersection( this, faceMaterial, raycaster, ray, fvA, fvB, fvC, intersectionPoint );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tif ( uvs && uvs[ f ] ) {\n\n\t\t\t\t\t\t\tvar uvs_f = uvs[ f ];\n\t\t\t\t\t\t\tuvA.copy( uvs_f[ 0 ] );\n\t\t\t\t\t\t\tuvB.copy( uvs_f[ 1 ] );\n\t\t\t\t\t\t\tuvC.copy( uvs_f[ 2 ] );\n\n\t\t\t\t\t\t\tintersection.uv = uvIntersection( intersectionPoint, fvA, fvB, fvC, uvA, uvB, uvC );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tintersection.face = face;\n\t\t\t\t\t\tintersection.faceIndex = f;\n\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}() ),\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLBackground( renderer, state, objects, premultipliedAlpha ) {\n\n\tvar clearColor = new Color( 0x000000 );\n\tvar clearAlpha = 0;\n\n\tvar planeCamera, planeMesh;\n\tvar boxMesh;\n\n\tfunction render( renderList, scene, camera, forceClear ) {\n\n\t\tvar background = scene.background;\n\n\t\tif ( background === null ) {\n\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tsetClear( background, 1 );\n\t\t\tforceClear = true;\n\n\t\t}\n\n\t\tif ( renderer.autoClear || forceClear ) {\n\n\t\t\trenderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\n\t\t}\n\n\t\tif ( background && background.isCubeTexture ) {\n\n\t\t\tif ( boxMesh === undefined ) {\n\n\t\t\t\tboxMesh = new Mesh(\n\t\t\t\t\tnew BoxBufferGeometry( 1, 1, 1 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tuniforms: ShaderLib.cube.uniforms,\n\t\t\t\t\t\tvertexShader: ShaderLib.cube.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.cube.fragmentShader,\n\t\t\t\t\t\tside: BackSide,\n\t\t\t\t\t\tdepthTest: true,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tboxMesh.geometry.removeAttribute( 'normal' );\n\t\t\t\tboxMesh.geometry.removeAttribute( 'uv' );\n\n\t\t\t\tboxMesh.onBeforeRender = function ( renderer, scene, camera ) {\n\n\t\t\t\t\tthis.matrixWorld.copyPosition( camera.matrixWorld );\n\n\t\t\t\t};\n\n\t\t\t\tobjects.update( boxMesh );\n\n\t\t\t}\n\n\t\t\tboxMesh.material.uniforms.tCube.value = background;\n\n\t\t\trenderList.push( boxMesh, boxMesh.geometry, boxMesh.material, 0, null );\n\n\t\t} else if ( background && background.isTexture ) {\n\n\t\t\tif ( planeCamera === undefined ) {\n\n\t\t\t\tplaneCamera = new OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );\n\n\t\t\t\tplaneMesh = new Mesh(\n\t\t\t\t\tnew PlaneBufferGeometry( 2, 2 ),\n\t\t\t\t\tnew MeshBasicMaterial( { depthTest: false, depthWrite: false, fog: false } )\n\t\t\t\t);\n\n\t\t\t\tobjects.update( planeMesh );\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.map = background;\n\n\t\t\t// TODO Push this to renderList\n\n\t\t\trenderer.renderBufferDirect( planeCamera, null, planeMesh.geometry, planeMesh.material, planeMesh, null );\n\n\t\t}\n\n\t}\n\n\tfunction setClear( color, alpha ) {\n\n\t\tstate.buffers.color.setClear( color.r, color.g, color.b, alpha, premultipliedAlpha );\n\n\t}\n\n\treturn {\n\n\t\tgetClearColor: function () {\n\n\t\t\treturn clearColor;\n\n\t\t},\n\t\tsetClearColor: function ( color, alpha ) {\n\n\t\t\tclearColor.set( color );\n\t\t\tclearAlpha = alpha !== undefined ? alpha : 1;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\tgetClearAlpha: function () {\n\n\t\t\treturn clearAlpha;\n\n\t\t},\n\t\tsetClearAlpha: function ( alpha ) {\n\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\trender: render\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLBufferRenderer( gl, extensions, info ) {\n\n\tvar mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawArrays( mode, start, count );\n\n\t\tinfo.update( count, mode );\n\n\t}\n\n\tfunction renderInstances( geometry, start, count ) {\n\n\t\tvar extension = extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\tif ( extension === null ) {\n\n\t\t\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\textension.drawArraysInstancedANGLE( mode, start, count, geometry.maxInstancedCount );\n\n\t\tinfo.update( count, mode, geometry.maxInstancedCount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLCapabilities( gl, extensions, parameters ) {\n\n\tvar maxAnisotropy;\n\n\tfunction getMaxAnisotropy() {\n\n\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\tvar extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tmaxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT );\n\n\t\t} else {\n\n\t\t\tmaxAnisotropy = 0;\n\n\t\t}\n\n\t\treturn maxAnisotropy;\n\n\t}\n\n\tfunction getMaxPrecision( precision ) {\n\n\t\tif ( precision === 'highp' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.HIGH_FLOAT ).precision > 0 &&\n\t\t\t     gl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.HIGH_FLOAT ).precision > 0 ) {\n\n\t\t\t\treturn 'highp';\n\n\t\t\t}\n\n\t\t\tprecision = 'mediump';\n\n\t\t}\n\n\t\tif ( precision === 'mediump' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.MEDIUM_FLOAT ).precision > 0 &&\n\t\t\t     gl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT ).precision > 0 ) {\n\n\t\t\t\treturn 'mediump';\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn 'lowp';\n\n\t}\n\n\tvar precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\tvar maxPrecision = getMaxPrecision( precision );\n\n\tif ( maxPrecision !== precision ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' );\n\t\tprecision = maxPrecision;\n\n\t}\n\n\tvar logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n\n\tvar maxTextures = gl.getParameter( gl.MAX_TEXTURE_IMAGE_UNITS );\n\tvar maxVertexTextures = gl.getParameter( gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS );\n\tvar maxTextureSize = gl.getParameter( gl.MAX_TEXTURE_SIZE );\n\tvar maxCubemapSize = gl.getParameter( gl.MAX_CUBE_MAP_TEXTURE_SIZE );\n\n\tvar maxAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );\n\tvar maxVertexUniforms = gl.getParameter( gl.MAX_VERTEX_UNIFORM_VECTORS );\n\tvar maxVaryings = gl.getParameter( gl.MAX_VARYING_VECTORS );\n\tvar maxFragmentUniforms = gl.getParameter( gl.MAX_FRAGMENT_UNIFORM_VECTORS );\n\n\tvar vertexTextures = maxVertexTextures > 0;\n\tvar floatFragmentTextures = !! extensions.get( 'OES_texture_float' );\n\tvar floatVertexTextures = vertexTextures && floatFragmentTextures;\n\n\treturn {\n\n\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\tgetMaxPrecision: getMaxPrecision,\n\n\t\tprecision: precision,\n\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\tmaxTextures: maxTextures,\n\t\tmaxVertexTextures: maxVertexTextures,\n\t\tmaxTextureSize: maxTextureSize,\n\t\tmaxCubemapSize: maxCubemapSize,\n\n\t\tmaxAttributes: maxAttributes,\n\t\tmaxVertexUniforms: maxVertexUniforms,\n\t\tmaxVaryings: maxVaryings,\n\t\tmaxFragmentUniforms: maxFragmentUniforms,\n\n\t\tvertexTextures: vertexTextures,\n\t\tfloatFragmentTextures: floatFragmentTextures,\n\t\tfloatVertexTextures: floatVertexTextures\n\n\t};\n\n}\n\n/**\n * @author tschw\n */\n\nfunction WebGLClipping() {\n\n\tvar scope = this,\n\n\t\tglobalState = null,\n\t\tnumGlobalPlanes = 0,\n\t\tlocalClippingEnabled = false,\n\t\trenderingShadows = false,\n\n\t\tplane = new Plane(),\n\t\tviewNormalMatrix = new Matrix3(),\n\n\t\tuniform = { value: null, needsUpdate: false };\n\n\tthis.uniform = uniform;\n\tthis.numPlanes = 0;\n\tthis.numIntersection = 0;\n\n\tthis.init = function ( planes, enableLocalClipping, camera ) {\n\n\t\tvar enabled =\n\t\t\tplanes.length !== 0 ||\n\t\t\tenableLocalClipping ||\n\t\t\t// enable state of previous frame - the clipping code has to\n\t\t\t// run another frame in order to reset the state:\n\t\t\tnumGlobalPlanes !== 0 ||\n\t\t\tlocalClippingEnabled;\n\n\t\tlocalClippingEnabled = enableLocalClipping;\n\n\t\tglobalState = projectPlanes( planes, camera, 0 );\n\t\tnumGlobalPlanes = planes.length;\n\n\t\treturn enabled;\n\n\t};\n\n\tthis.beginShadows = function () {\n\n\t\trenderingShadows = true;\n\t\tprojectPlanes( null );\n\n\t};\n\n\tthis.endShadows = function () {\n\n\t\trenderingShadows = false;\n\t\tresetGlobalState();\n\n\t};\n\n\tthis.setState = function ( planes, clipIntersection, clipShadows, camera, cache, fromCache ) {\n\n\t\tif ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) {\n\n\t\t\t// there's no local clipping\n\n\t\t\tif ( renderingShadows ) {\n\n\t\t\t\t// there's no global clipping\n\n\t\t\t\tprojectPlanes( null );\n\n\t\t\t} else {\n\n\t\t\t\tresetGlobalState();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tvar nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\tlGlobal = nGlobal * 4,\n\n\t\t\t\tdstArray = cache.clippingState || null;\n\n\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, fromCache );\n\n\t\t\tfor ( var i = 0; i !== lGlobal; ++ i ) {\n\n\t\t\t\tdstArray[ i ] = globalState[ i ];\n\n\t\t\t}\n\n\t\t\tcache.clippingState = dstArray;\n\t\t\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\n\t\t\tthis.numPlanes += nGlobal;\n\n\t\t}\n\n\n\t};\n\n\tfunction resetGlobalState() {\n\n\t\tif ( uniform.value !== globalState ) {\n\n\t\t\tuniform.value = globalState;\n\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\n\n\t\t}\n\n\t\tscope.numPlanes = numGlobalPlanes;\n\t\tscope.numIntersection = 0;\n\n\t}\n\n\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\n\n\t\tvar nPlanes = planes !== null ? planes.length : 0,\n\t\t\tdstArray = null;\n\n\t\tif ( nPlanes !== 0 ) {\n\n\t\t\tdstArray = uniform.value;\n\n\t\t\tif ( skipTransform !== true || dstArray === null ) {\n\n\t\t\t\tvar flatSize = dstOffset + nPlanes * 4,\n\t\t\t\t\tviewMatrix = camera.matrixWorldInverse;\n\n\t\t\t\tviewNormalMatrix.getNormalMatrix( viewMatrix );\n\n\t\t\t\tif ( dstArray === null || dstArray.length < flatSize ) {\n\n\t\t\t\t\tdstArray = new Float32Array( flatSize );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) {\n\n\t\t\t\t\tplane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix );\n\n\t\t\t\t\tplane.normal.toArray( dstArray, i4 );\n\t\t\t\t\tdstArray[ i4 + 3 ] = plane.constant;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tuniform.value = dstArray;\n\t\t\tuniform.needsUpdate = true;\n\n\t\t}\n\n\t\tscope.numPlanes = nPlanes;\n\n\t\treturn dstArray;\n\n\t}\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLExtensions( gl ) {\n\n\tvar extensions = {};\n\n\treturn {\n\n\t\tget: function ( name ) {\n\n\t\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\t\treturn extensions[ name ];\n\n\t\t\t}\n\n\t\t\tvar extension;\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'WEBGL_depth_texture':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'EXT_texture_filter_anisotropic':\n\t\t\t\t\textension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_s3tc':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\textension = gl.getExtension( name );\n\n\t\t\t}\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\n\n\t\t\t}\n\n\t\t\textensions[ name ] = extension;\n\n\t\t\treturn extension;\n\n\t\t}\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLGeometries( gl, attributes, info ) {\n\n\tvar geometries = {};\n\tvar wireframeAttributes = {};\n\n\tfunction onGeometryDispose( event ) {\n\n\t\tvar geometry = event.target;\n\t\tvar buffergeometry = geometries[ geometry.id ];\n\n\t\tif ( buffergeometry.index !== null ) {\n\n\t\t\tattributes.remove( buffergeometry.index );\n\n\t\t}\n\n\t\tfor ( var name in buffergeometry.attributes ) {\n\n\t\t\tattributes.remove( buffergeometry.attributes[ name ] );\n\n\t\t}\n\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\tdelete geometries[ geometry.id ];\n\n\t\t// TODO Remove duplicate code\n\n\t\tvar attribute = wireframeAttributes[ geometry.id ];\n\n\t\tif ( attribute ) {\n\n\t\t\tattributes.remove( attribute );\n\t\t\tdelete wireframeAttributes[ geometry.id ];\n\n\t\t}\n\n\t\tattribute = wireframeAttributes[ buffergeometry.id ];\n\n\t\tif ( attribute ) {\n\n\t\t\tattributes.remove( attribute );\n\t\t\tdelete wireframeAttributes[ buffergeometry.id ];\n\n\t\t}\n\n\t\t//\n\n\t\tinfo.memory.geometries --;\n\n\t}\n\n\tfunction get( object, geometry ) {\n\n\t\tvar buffergeometry = geometries[ geometry.id ];\n\n\t\tif ( buffergeometry ) return buffergeometry;\n\n\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tbuffergeometry = geometry;\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tif ( geometry._bufferGeometry === undefined ) {\n\n\t\t\t\tgeometry._bufferGeometry = new BufferGeometry().setFromObject( object );\n\n\t\t\t}\n\n\t\t\tbuffergeometry = geometry._bufferGeometry;\n\n\t\t}\n\n\t\tgeometries[ geometry.id ] = buffergeometry;\n\n\t\tinfo.memory.geometries ++;\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction update( geometry ) {\n\n\t\tvar index = geometry.index;\n\t\tvar geometryAttributes = geometry.attributes;\n\n\t\tif ( index !== null ) {\n\n\t\t\tattributes.update( index, gl.ELEMENT_ARRAY_BUFFER );\n\n\t\t}\n\n\t\tfor ( var name in geometryAttributes ) {\n\n\t\t\tattributes.update( geometryAttributes[ name ], gl.ARRAY_BUFFER );\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tvar morphAttributes = geometry.morphAttributes;\n\n\t\tfor ( var name in morphAttributes ) {\n\n\t\t\tvar array = morphAttributes[ name ];\n\n\t\t\tfor ( var i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.update( array[ i ], gl.ARRAY_BUFFER );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction getWireframeAttribute( geometry ) {\n\n\t\tvar attribute = wireframeAttributes[ geometry.id ];\n\n\t\tif ( attribute ) return attribute;\n\n\t\tvar indices = [];\n\n\t\tvar geometryIndex = geometry.index;\n\t\tvar geometryAttributes = geometry.attributes;\n\n\t\t// console.time( 'wireframe' );\n\n\t\tif ( geometryIndex !== null ) {\n\n\t\t\tvar array = geometryIndex.array;\n\n\t\t\tfor ( var i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\tvar a = array[ i + 0 ];\n\t\t\t\tvar b = array[ i + 1 ];\n\t\t\t\tvar c = array[ i + 2 ];\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tvar array = geometryAttributes.position.array;\n\n\t\t\tfor ( var i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\n\n\t\t\t\tvar a = i + 0;\n\t\t\t\tvar b = i + 1;\n\t\t\t\tvar c = i + 2;\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// console.timeEnd( 'wireframe' );\n\n\t\tattribute = new ( arrayMax( indices ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );\n\n\t\tattributes.update( attribute, gl.ELEMENT_ARRAY_BUFFER );\n\n\t\twireframeAttributes[ geometry.id ] = attribute;\n\n\t\treturn attribute;\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tupdate: update,\n\n\t\tgetWireframeAttribute: getWireframeAttribute\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLIndexedBufferRenderer( gl, extensions, info ) {\n\n\tvar mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tvar type, bytesPerElement;\n\n\tfunction setIndex( value ) {\n\n\t\ttype = value.type;\n\t\tbytesPerElement = value.bytesPerElement;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawElements( mode, count, type, start * bytesPerElement );\n\n\t\tinfo.update( count, mode );\n\n\t}\n\n\tfunction renderInstances( geometry, start, count ) {\n\n\t\tvar extension = extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\tif ( extension === null ) {\n\n\t\t\tconsole.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\textension.drawElementsInstancedANGLE( mode, count, type, start * bytesPerElement, geometry.maxInstancedCount );\n\n\t\tinfo.update( count, mode, geometry.maxInstancedCount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.setIndex = setIndex;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WebGLInfo( gl ) {\n\n\tvar memory = {\n\t\tgeometries: 0,\n\t\ttextures: 0\n\t};\n\n\tvar render = {\n\t\tframe: 0,\n\t\tcalls: 0,\n\t\ttriangles: 0,\n\t\tpoints: 0,\n\t\tlines: 0\n\t};\n\n\tfunction update( count, mode, instanceCount ) {\n\n\t\tinstanceCount = instanceCount || 1;\n\n\t\trender.calls ++;\n\n\t\tswitch ( mode ) {\n\n\t\t\tcase gl.TRIANGLES:\n\t\t\t\trender.triangles += instanceCount * ( count / 3 );\n\t\t\t\tbreak;\n\n\t\t\tcase gl.TRIANGLE_STRIP:\n\t\t\tcase gl.TRIANGLE_FAN:\n\t\t\t\trender.triangles += instanceCount * ( count - 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase gl.LINES:\n\t\t\t\trender.lines += instanceCount * ( count / 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase gl.LINE_STRIP:\n\t\t\t\trender.lines += instanceCount * ( count - 1 );\n\t\t\t\tbreak;\n\n\t\t\tcase gl.LINE_LOOP:\n\t\t\t\trender.lines += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tcase gl.POINTS:\n\t\t\t\trender.points += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.error( 'THREE.WebGLInfo: Unknown draw mode:', mode );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\trender.frame ++;\n\t\trender.calls = 0;\n\t\trender.triangles = 0;\n\t\trender.points = 0;\n\t\trender.lines = 0;\n\n\t}\n\n\treturn {\n\t\tmemory: memory,\n\t\trender: render,\n\t\tprograms: null,\n\t\tautoReset: true,\n\t\treset: reset,\n\t\tupdate: update\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction absNumericalSort( a, b ) {\n\n\treturn Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] );\n\n}\n\nfunction WebGLMorphtargets( gl ) {\n\n\tvar influencesList = {};\n\tvar morphInfluences = new Float32Array( 8 );\n\n\tfunction update( object, geometry, material, program ) {\n\n\t\tvar objectInfluences = object.morphTargetInfluences;\n\n\t\tvar length = objectInfluences.length;\n\n\t\tvar influences = influencesList[ geometry.id ];\n\n\t\tif ( influences === undefined ) {\n\n\t\t\t// initialise list\n\n\t\t\tinfluences = [];\n\n\t\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\t\tinfluences[ i ] = [ i, 0 ];\n\n\t\t\t}\n\n\t\t\tinfluencesList[ geometry.id ] = influences;\n\n\t\t}\n\n\t\tvar morphTargets = material.morphTargets && geometry.morphAttributes.position;\n\t\tvar morphNormals = material.morphNormals && geometry.morphAttributes.normal;\n\n\t\t// Remove current morphAttributes\n\n\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\tvar influence = influences[ i ];\n\n\t\t\tif ( influence[ 1 ] !== 0 ) {\n\n\t\t\t\tif ( morphTargets ) geometry.removeAttribute( 'morphTarget' + i );\n\t\t\t\tif ( morphNormals ) geometry.removeAttribute( 'morphNormal' + i );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Collect influences\n\n\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\tvar influence = influences[ i ];\n\n\t\t\tinfluence[ 0 ] = i;\n\t\t\tinfluence[ 1 ] = objectInfluences[ i ];\n\n\t\t}\n\n\t\tinfluences.sort( absNumericalSort );\n\n\t\t// Add morphAttributes\n\n\t\tfor ( var i = 0; i < 8; i ++ ) {\n\n\t\t\tvar influence = influences[ i ];\n\n\t\t\tif ( influence ) {\n\n\t\t\t\tvar index = influence[ 0 ];\n\t\t\t\tvar value = influence[ 1 ];\n\n\t\t\t\tif ( value ) {\n\n\t\t\t\t\tif ( morphTargets ) geometry.addAttribute( 'morphTarget' + i, morphTargets[ index ] );\n\t\t\t\t\tif ( morphNormals ) geometry.addAttribute( 'morphNormal' + i, morphNormals[ index ] );\n\n\t\t\t\t\tmorphInfluences[ i ] = value;\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tmorphInfluences[ i ] = 0;\n\n\t\t}\n\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLObjects( geometries, info ) {\n\n\tvar updateList = {};\n\n\tfunction update( object ) {\n\n\t\tvar frame = info.render.frame;\n\n\t\tvar geometry = object.geometry;\n\t\tvar buffergeometry = geometries.get( object, geometry );\n\n\t\t// Update once per frame\n\n\t\tif ( updateList[ buffergeometry.id ] !== frame ) {\n\n\t\t\tif ( geometry.isGeometry ) {\n\n\t\t\t\tbuffergeometry.updateFromObject( object );\n\n\t\t\t}\n\n\t\t\tgeometries.update( buffergeometry );\n\n\t\t\tupdateList[ buffergeometry.id ] = frame;\n\n\t\t}\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tupdateList = {};\n\n\t}\n\n\treturn {\n\n\t\tupdate: update,\n\t\tdispose: dispose\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CubeTexture( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\timages = images !== undefined ? images : [];\n\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\n\tTexture.call( this, images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.flipY = false;\n\n}\n\nCubeTexture.prototype = Object.create( Texture.prototype );\nCubeTexture.prototype.constructor = CubeTexture;\n\nCubeTexture.prototype.isCubeTexture = true;\n\nObject.defineProperty( CubeTexture.prototype, 'images', {\n\n\tget: function () {\n\n\t\treturn this.image;\n\n\t},\n\n\tset: function ( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n} );\n\n/**\n * @author tschw\n * @author Mugen87 / https://github.com/Mugen87\n * @author mrdoob / http://mrdoob.com/\n *\n * Uniforms of a program.\n * Those form a tree structure with a special top-level container for the root,\n * which you get by calling 'new WebGLUniforms( gl, program, renderer )'.\n *\n *\n * Properties of inner nodes including the top-level container:\n *\n * .seq - array of nested uniforms\n * .map - nested uniforms by name\n *\n *\n * Methods of all nodes except the top-level container:\n *\n * .setValue( gl, value, [renderer] )\n *\n * \t\tuploads a uniform value(s)\n *  \tthe 'renderer' parameter is needed for sampler uniforms\n *\n *\n * Static methods of the top-level container (renderer factorizations):\n *\n * .upload( gl, seq, values, renderer )\n *\n * \t\tsets uniforms in 'seq' to 'values[id].value'\n *\n * .seqWithValue( seq, values ) : filteredSeq\n *\n * \t\tfilters 'seq' entries with corresponding entry in values\n *\n *\n * Methods of the top-level container (renderer factorizations):\n *\n * .setValue( gl, name, value )\n *\n * \t\tsets uniform with  name 'name' to 'value'\n *\n * .set( gl, obj, prop )\n *\n * \t\tsets uniform from object and property with same name than uniform\n *\n * .setOptional( gl, obj, prop )\n *\n * \t\tlike .set for an optional property of the object\n *\n */\n\nvar emptyTexture = new Texture();\nvar emptyCubeTexture = new CubeTexture();\n\n// --- Base for inner nodes (including the root) ---\n\nfunction UniformContainer() {\n\n\tthis.seq = [];\n\tthis.map = {};\n\n}\n\n// --- Utilities ---\n\n// Array Caches (provide typed arrays for temporary by size)\n\nvar arrayCacheF32 = [];\nvar arrayCacheI32 = [];\n\n// Float32Array caches used for uploading Matrix uniforms\n\nvar mat4array = new Float32Array( 16 );\nvar mat3array = new Float32Array( 9 );\nvar mat2array = new Float32Array( 4 );\n\n// Flattening for arrays of vectors and matrices\n\nfunction flatten( array, nBlocks, blockSize ) {\n\n\tvar firstElem = array[ 0 ];\n\n\tif ( firstElem <= 0 || firstElem > 0 ) return array;\n\t// unoptimized: ! isNaN( firstElem )\n\t// see http://jacksondunstan.com/articles/983\n\n\tvar n = nBlocks * blockSize,\n\t\tr = arrayCacheF32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Float32Array( n );\n\t\tarrayCacheF32[ n ] = r;\n\n\t}\n\n\tif ( nBlocks !== 0 ) {\n\n\t\tfirstElem.toArray( r, 0 );\n\n\t\tfor ( var i = 1, offset = 0; i !== nBlocks; ++ i ) {\n\n\t\t\toffset += blockSize;\n\t\t\tarray[ i ].toArray( r, offset );\n\n\t\t}\n\n\t}\n\n\treturn r;\n\n}\n\nfunction arraysEqual( a, b ) {\n\n\tif ( a.length !== b.length ) return false;\n\n\tfor ( var i = 0, l = a.length; i < l; i ++ ) {\n\n\t\tif ( a[ i ] !== b[ i ] ) return false;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction copyArray( a, b ) {\n\n\tfor ( var i = 0, l = b.length; i < l; i ++ ) {\n\n\t\ta[ i ] = b[ i ];\n\n\t}\n\n}\n\n// Texture unit allocation\n\nfunction allocTexUnits( renderer, n ) {\n\n\tvar r = arrayCacheI32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Int32Array( n );\n\t\tarrayCacheI32[ n ] = r;\n\n\t}\n\n\tfor ( var i = 0; i !== n; ++ i )\n\t\tr[ i ] = renderer.allocTextureUnit();\n\n\treturn r;\n\n}\n\n// --- Setters ---\n\n// Note: Defining these methods externally, because they come in a bunch\n// and this way their names minify.\n\n// Single scalar\n\nfunction setValue1f( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1f( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\nfunction setValue1i( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1i( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single float vector (from flat array or THREE.VectorN)\n\nfunction setValue2fv( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2f( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValue3fv( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3f( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else if ( v.r !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.r || cache[ 1 ] !== v.g || cache[ 2 ] !== v.b ) {\n\n\t\t\tgl.uniform3f( this.addr, v.r, v.g, v.b );\n\n\t\t\tcache[ 0 ] = v.r;\n\t\t\tcache[ 1 ] = v.g;\n\t\t\tcache[ 2 ] = v.b;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValue4fv( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4f( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single matrix (from flat array or MatrixN)\n\nfunction setValue2fm( gl, v ) {\n\n\tvar cache = this.cache;\n\tvar elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix2fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat2array.set( elements );\n\n\t\tgl.uniformMatrix2fv( this.addr, false, mat2array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValue3fm( gl, v ) {\n\n\tvar cache = this.cache;\n\tvar elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix3fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat3array.set( elements );\n\n\t\tgl.uniformMatrix3fv( this.addr, false, mat3array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValue4fm( gl, v ) {\n\n\tvar cache = this.cache;\n\tvar elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix4fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat4array.set( elements );\n\n\t\tgl.uniformMatrix4fv( this.addr, false, mat4array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\n// Single texture (2D / Cube)\n\nfunction setValueT1( gl, v, renderer ) {\n\n\tvar cache = this.cache;\n\tvar unit = renderer.allocTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\trenderer.setTexture2D( v || emptyTexture, unit );\n\n}\n\nfunction setValueT6( gl, v, renderer ) {\n\n\tvar cache = this.cache;\n\tvar unit = renderer.allocTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\trenderer.setTextureCube( v || emptyCubeTexture, unit );\n\n}\n\n// Integer / Boolean vectors or arrays thereof (always flat arrays)\n\nfunction setValue2iv( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform2iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValue3iv( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform3iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValue4iv( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform4iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\n// Helper to pick the right setter for the singular case\n\nfunction getSingularSetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValue1f; // FLOAT\n\t\tcase 0x8b50: return setValue2fv; // _VEC2\n\t\tcase 0x8b51: return setValue3fv; // _VEC3\n\t\tcase 0x8b52: return setValue4fv; // _VEC4\n\n\t\tcase 0x8b5a: return setValue2fm; // _MAT2\n\t\tcase 0x8b5b: return setValue3fm; // _MAT3\n\t\tcase 0x8b5c: return setValue4fm; // _MAT4\n\n\t\tcase 0x8b5e: case 0x8d66: return setValueT1; // SAMPLER_2D, SAMPLER_EXTERNAL_OES\n\t\tcase 0x8b60: return setValueT6; // SAMPLER_CUBE\n\n\t\tcase 0x1404: case 0x8b56: return setValue1i; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValue2iv; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValue3iv; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValue4iv; // _VEC4\n\n\t}\n\n}\n\n// Array of scalars\n\nfunction setValue1fv( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform1fv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\nfunction setValue1iv( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform1iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\n// Array of vectors (flat or from THREE classes)\n\nfunction setValueV2a( gl, v ) {\n\n\tvar cache = this.cache;\n\tvar data = flatten( v, this.size, 2 );\n\n\tif ( arraysEqual( cache, data ) ) return;\n\n\tgl.uniform2fv( this.addr, data );\n\n\tthis.updateCache( data );\n\n}\n\nfunction setValueV3a( gl, v ) {\n\n\tvar cache = this.cache;\n\tvar data = flatten( v, this.size, 3 );\n\n\tif ( arraysEqual( cache, data ) ) return;\n\n\tgl.uniform3fv( this.addr, data );\n\n\tthis.updateCache( data );\n\n}\n\nfunction setValueV4a( gl, v ) {\n\n\tvar cache = this.cache;\n\tvar data = flatten( v, this.size, 4 );\n\n\tif ( arraysEqual( cache, data ) ) return;\n\n\tgl.uniform4fv( this.addr, data );\n\n\tthis.updateCache( data );\n\n}\n\n// Array of matrices (flat or from THREE clases)\n\nfunction setValueM2a( gl, v ) {\n\n\tvar cache = this.cache;\n\tvar data = flatten( v, this.size, 4 );\n\n\tif ( arraysEqual( cache, data ) ) return;\n\n\tgl.uniformMatrix2fv( this.addr, false, data );\n\n\tthis.updateCache( data );\n\n}\n\nfunction setValueM3a( gl, v ) {\n\n\tvar cache = this.cache;\n\tvar data = flatten( v, this.size, 9 );\n\n\tif ( arraysEqual( cache, data ) ) return;\n\n\tgl.uniformMatrix3fv( this.addr, false, data );\n\n\tthis.updateCache( data );\n\n}\n\nfunction setValueM4a( gl, v ) {\n\n\tvar cache = this.cache;\n\tvar data = flatten( v, this.size, 16 );\n\n\tif ( arraysEqual( cache, data ) ) return;\n\n\tgl.uniformMatrix4fv( this.addr, false, data );\n\n\tthis.updateCache( data );\n\n}\n\n// Array of textures (2D / Cube)\n\nfunction setValueT1a( gl, v, renderer ) {\n\n\tvar cache = this.cache;\n\tvar n = v.length;\n\n\tvar units = allocTexUnits( renderer, n );\n\n\tif ( arraysEqual( cache, units ) === false ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( var i = 0; i !== n; ++ i ) {\n\n\t\trenderer.setTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT6a( gl, v, renderer ) {\n\n\tvar cache = this.cache;\n\tvar n = v.length;\n\n\tvar units = allocTexUnits( renderer, n );\n\n\tif ( arraysEqual( cache, units ) === false ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( var i = 0; i !== n; ++ i ) {\n\n\t\trenderer.setTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t}\n\n}\n\n// Helper to pick the right setter for a pure (bottom-level) array\n\nfunction getPureArraySetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValue1fv; // FLOAT\n\t\tcase 0x8b50: return setValueV2a; // _VEC2\n\t\tcase 0x8b51: return setValueV3a; // _VEC3\n\t\tcase 0x8b52: return setValueV4a; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2a; // _MAT2\n\t\tcase 0x8b5b: return setValueM3a; // _MAT3\n\t\tcase 0x8b5c: return setValueM4a; // _MAT4\n\n\t\tcase 0x8b5e: return setValueT1a; // SAMPLER_2D\n\t\tcase 0x8b60: return setValueT6a; // SAMPLER_CUBE\n\n\t\tcase 0x1404: case 0x8b56: return setValue1iv; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValue2iv; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValue3iv; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValue4iv; // _VEC4\n\n\t}\n\n}\n\n// --- Uniform Classes ---\n\nfunction SingleUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nfunction PureArrayUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.size = activeInfo.size;\n\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nPureArrayUniform.prototype.updateCache = function ( data ) {\n\n\tvar cache = this.cache;\n\n\tif ( data instanceof Float32Array && cache.length !== data.length ) {\n\n\t\tthis.cache = new Float32Array( data.length );\n\n\t}\n\n\tcopyArray( cache, data );\n\n};\n\nfunction StructuredUniform( id ) {\n\n\tthis.id = id;\n\n\tUniformContainer.call( this ); // mix-in\n\n}\n\nStructuredUniform.prototype.setValue = function ( gl, value ) {\n\n\t// Note: Don't need an extra 'renderer' parameter, since samplers\n\t// are not allowed in structured uniforms.\n\n\tvar seq = this.seq;\n\n\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tvar u = seq[ i ];\n\t\tu.setValue( gl, value[ u.id ] );\n\n\t}\n\n};\n\n// --- Top-level ---\n\n// Parser - builds up the property tree from the path strings\n\nvar RePathPart = /([\\w\\d_]+)(\\])?(\\[|\\.)?/g;\n\n// extracts\n// \t- the identifier (member name or array index)\n//  - followed by an optional right bracket (found when array index)\n//  - followed by an optional left bracket or dot (type of subscript)\n//\n// Note: These portions can be read in a non-overlapping fashion and\n// allow straightforward parsing of the hierarchy that WebGL encodes\n// in the uniform names.\n\nfunction addUniform( container, uniformObject ) {\n\n\tcontainer.seq.push( uniformObject );\n\tcontainer.map[ uniformObject.id ] = uniformObject;\n\n}\n\nfunction parseUniform( activeInfo, addr, container ) {\n\n\tvar path = activeInfo.name,\n\t\tpathLength = path.length;\n\n\t// reset RegExp object, because of the early exit of a previous run\n\tRePathPart.lastIndex = 0;\n\n\twhile ( true ) {\n\n\t\tvar match = RePathPart.exec( path ),\n\t\t\tmatchEnd = RePathPart.lastIndex,\n\n\t\t\tid = match[ 1 ],\n\t\t\tidIsIndex = match[ 2 ] === ']',\n\t\t\tsubscript = match[ 3 ];\n\n\t\tif ( idIsIndex ) id = id | 0; // convert to integer\n\n\t\tif ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) {\n\n\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\n\n\t\t\taddUniform( container, subscript === undefined ?\n\t\t\t\tnew SingleUniform( id, activeInfo, addr ) :\n\t\t\t\tnew PureArrayUniform( id, activeInfo, addr ) );\n\n\t\t\tbreak;\n\n\t\t} else {\n\n\t\t\t// step into inner node / create it in case it doesn't exist\n\n\t\t\tvar map = container.map, next = map[ id ];\n\n\t\t\tif ( next === undefined ) {\n\n\t\t\t\tnext = new StructuredUniform( id );\n\t\t\t\taddUniform( container, next );\n\n\t\t\t}\n\n\t\t\tcontainer = next;\n\n\t\t}\n\n\t}\n\n}\n\n// Root Container\n\nfunction WebGLUniforms( gl, program, renderer ) {\n\n\tUniformContainer.call( this );\n\n\tthis.renderer = renderer;\n\n\tvar n = gl.getProgramParameter( program, gl.ACTIVE_UNIFORMS );\n\n\tfor ( var i = 0; i < n; ++ i ) {\n\n\t\tvar info = gl.getActiveUniform( program, i ),\n\t\t\taddr = gl.getUniformLocation( program, info.name );\n\n\t\tparseUniform( info, addr, this );\n\n\t}\n\n}\n\nWebGLUniforms.prototype.setValue = function ( gl, name, value ) {\n\n\tvar u = this.map[ name ];\n\n\tif ( u !== undefined ) u.setValue( gl, value, this.renderer );\n\n};\n\nWebGLUniforms.prototype.setOptional = function ( gl, object, name ) {\n\n\tvar v = object[ name ];\n\n\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n};\n\n\n// Static interface\n\nWebGLUniforms.upload = function ( gl, seq, values, renderer ) {\n\n\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tvar u = seq[ i ],\n\t\t\tv = values[ u.id ];\n\n\t\tif ( v.needsUpdate !== false ) {\n\n\t\t\t// note: always updating when .needsUpdate is undefined\n\t\t\tu.setValue( gl, v.value, renderer );\n\n\t\t}\n\n\t}\n\n};\n\nWebGLUniforms.seqWithValue = function ( seq, values ) {\n\n\tvar r = [];\n\n\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tvar u = seq[ i ];\n\t\tif ( u.id in values ) r.push( u );\n\n\t}\n\n\treturn r;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction addLineNumbers( string ) {\n\n\tvar lines = string.split( '\\n' );\n\n\tfor ( var i = 0; i < lines.length; i ++ ) {\n\n\t\tlines[ i ] = ( i + 1 ) + ': ' + lines[ i ];\n\n\t}\n\n\treturn lines.join( '\\n' );\n\n}\n\nfunction WebGLShader( gl, type, string ) {\n\n\tvar shader = gl.createShader( type );\n\n\tgl.shaderSource( shader, string );\n\tgl.compileShader( shader );\n\n\tif ( gl.getShaderParameter( shader, gl.COMPILE_STATUS ) === false ) {\n\n\t\tconsole.error( 'THREE.WebGLShader: Shader couldn\\'t compile.' );\n\n\t}\n\n\tif ( gl.getShaderInfoLog( shader ) !== '' ) {\n\n\t\tconsole.warn( 'THREE.WebGLShader: gl.getShaderInfoLog()', type === gl.VERTEX_SHADER ? 'vertex' : 'fragment', gl.getShaderInfoLog( shader ), addLineNumbers( string ) );\n\n\t}\n\n\t// --enable-privileged-webgl-extension\n\t// console.log( type, gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\treturn shader;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar programIdCount = 0;\n\nfunction getEncodingComponents( encoding ) {\n\n\tswitch ( encoding ) {\n\n\t\tcase LinearEncoding:\n\t\t\treturn [ 'Linear', '( value )' ];\n\t\tcase sRGBEncoding:\n\t\t\treturn [ 'sRGB', '( value )' ];\n\t\tcase RGBEEncoding:\n\t\t\treturn [ 'RGBE', '( value )' ];\n\t\tcase RGBM7Encoding:\n\t\t\treturn [ 'RGBM', '( value, 7.0 )' ];\n\t\tcase RGBM16Encoding:\n\t\t\treturn [ 'RGBM', '( value, 16.0 )' ];\n\t\tcase RGBDEncoding:\n\t\t\treturn [ 'RGBD', '( value, 256.0 )' ];\n\t\tcase GammaEncoding:\n\t\t\treturn [ 'Gamma', '( value, float( GAMMA_FACTOR ) )' ];\n\t\tdefault:\n\t\t\tthrow new Error( 'unsupported encoding: ' + encoding );\n\n\t}\n\n}\n\nfunction getTexelDecodingFunction( functionName, encoding ) {\n\n\tvar components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return ' + components[ 0 ] + 'ToLinear' + components[ 1 ] + '; }';\n\n}\n\nfunction getTexelEncodingFunction( functionName, encoding ) {\n\n\tvar components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[ 0 ] + components[ 1 ] + '; }';\n\n}\n\nfunction getToneMappingFunction( functionName, toneMapping ) {\n\n\tvar toneMappingName;\n\n\tswitch ( toneMapping ) {\n\n\t\tcase LinearToneMapping:\n\t\t\ttoneMappingName = 'Linear';\n\t\t\tbreak;\n\n\t\tcase ReinhardToneMapping:\n\t\t\ttoneMappingName = 'Reinhard';\n\t\t\tbreak;\n\n\t\tcase Uncharted2ToneMapping:\n\t\t\ttoneMappingName = 'Uncharted2';\n\t\t\tbreak;\n\n\t\tcase CineonToneMapping:\n\t\t\ttoneMappingName = 'OptimizedCineon';\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tthrow new Error( 'unsupported toneMapping: ' + toneMapping );\n\n\t}\n\n\treturn 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }';\n\n}\n\nfunction generateExtensions( extensions, parameters, rendererExtensions ) {\n\n\textensions = extensions || {};\n\n\tvar chunks = [\n\t\t( extensions.derivatives || parameters.envMapCubeUV || parameters.bumpMap || ( parameters.normalMap && ! parameters.objectSpaceNormalMap ) || parameters.flatShading ) ? '#extension GL_OES_standard_derivatives : enable' : '',\n\t\t( extensions.fragDepth || parameters.logarithmicDepthBuffer ) && rendererExtensions.get( 'EXT_frag_depth' ) ? '#extension GL_EXT_frag_depth : enable' : '',\n\t\t( extensions.drawBuffers ) && rendererExtensions.get( 'WEBGL_draw_buffers' ) ? '#extension GL_EXT_draw_buffers : require' : '',\n\t\t( extensions.shaderTextureLOD || parameters.envMap ) && rendererExtensions.get( 'EXT_shader_texture_lod' ) ? '#extension GL_EXT_shader_texture_lod : enable' : ''\n\t];\n\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n}\n\nfunction generateDefines( defines ) {\n\n\tvar chunks = [];\n\n\tfor ( var name in defines ) {\n\n\t\tvar value = defines[ name ];\n\n\t\tif ( value === false ) continue;\n\n\t\tchunks.push( '#define ' + name + ' ' + value );\n\n\t}\n\n\treturn chunks.join( '\\n' );\n\n}\n\nfunction fetchAttributeLocations( gl, program ) {\n\n\tvar attributes = {};\n\n\tvar n = gl.getProgramParameter( program, gl.ACTIVE_ATTRIBUTES );\n\n\tfor ( var i = 0; i < n; i ++ ) {\n\n\t\tvar info = gl.getActiveAttrib( program, i );\n\t\tvar name = info.name;\n\n\t\t// console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );\n\n\t\tattributes[ name ] = gl.getAttribLocation( program, name );\n\n\t}\n\n\treturn attributes;\n\n}\n\nfunction filterEmptyLine( string ) {\n\n\treturn string !== '';\n\n}\n\nfunction replaceLightNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )\n\t\t.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )\n\t\t.replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights )\n\t\t.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )\n\t\t.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights );\n\n}\n\nfunction replaceClippingPlaneNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes )\n\t\t.replace( /UNION_CLIPPING_PLANES/g, ( parameters.numClippingPlanes - parameters.numClipIntersection ) );\n\n}\n\nfunction parseIncludes( string ) {\n\n\tvar pattern = /^[ \\t]*#include +<([\\w\\d.]+)>/gm;\n\n\tfunction replace( match, include ) {\n\n\t\tvar replace = ShaderChunk[ include ];\n\n\t\tif ( replace === undefined ) {\n\n\t\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t\t}\n\n\t\treturn parseIncludes( replace );\n\n\t}\n\n\treturn string.replace( pattern, replace );\n\n}\n\nfunction unrollLoops( string ) {\n\n\tvar pattern = /#pragma unroll_loop[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}/g;\n\n\tfunction replace( match, start, end, snippet ) {\n\n\t\tvar unroll = '';\n\n\t\tfor ( var i = parseInt( start ); i < parseInt( end ); i ++ ) {\n\n\t\t\tunroll += snippet.replace( /\\[ i \\]/g, '[ ' + i + ' ]' );\n\n\t\t}\n\n\t\treturn unroll;\n\n\t}\n\n\treturn string.replace( pattern, replace );\n\n}\n\nfunction WebGLProgram( renderer, extensions, code, material, shader, parameters ) {\n\n\tvar gl = renderer.context;\n\n\tvar defines = material.defines;\n\n\tvar vertexShader = shader.vertexShader;\n\tvar fragmentShader = shader.fragmentShader;\n\n\tvar shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\n\n\tif ( parameters.shadowMapType === PCFShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\n\n\t} else if ( parameters.shadowMapType === PCFSoftShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\n\n\t}\n\n\tvar envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\tvar envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\tvar envMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( material.envMap.mapping ) {\n\n\t\t\tcase CubeReflectionMapping:\n\t\t\tcase CubeRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\t\tbreak;\n\n\t\t\tcase CubeUVReflectionMapping:\n\t\t\tcase CubeUVRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\tbreak;\n\n\t\t\tcase EquirectangularReflectionMapping:\n\t\t\tcase EquirectangularRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_EQUIREC';\n\t\t\t\tbreak;\n\n\t\t\tcase SphericalReflectionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_SPHERE';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tswitch ( material.envMap.mapping ) {\n\n\t\t\tcase CubeRefractionMapping:\n\t\t\tcase EquirectangularRefractionMapping:\n\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tswitch ( material.combine ) {\n\n\t\t\tcase MultiplyOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\t\t\t\tbreak;\n\n\t\t\tcase MixOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\n\t\t\t\tbreak;\n\n\t\t\tcase AddOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tvar gammaFactorDefine = ( renderer.gammaFactor > 0 ) ? renderer.gammaFactor : 1.0;\n\n\t// console.log( 'building new program ' );\n\n\t//\n\n\tvar customExtensions = generateExtensions( material.extensions, parameters, extensions );\n\n\tvar customDefines = generateDefines( defines );\n\n\t//\n\n\tvar program = gl.createProgram();\n\n\tvar prefixVertex, prefixFragment;\n\n\tif ( material.isRawShaderMaterial ) {\n\n\t\tprefixVertex = [\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixVertex.length > 0 ) {\n\n\t\t\tprefixVertex += '\\n';\n\n\t\t}\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixFragment.length > 0 ) {\n\n\t\t\tprefixFragment += '\\n';\n\n\t\t}\n\n\t} else {\n\n\t\tprefixVertex = [\n\n\t\t\t'precision ' + parameters.precision + ' float;',\n\t\t\t'precision ' + parameters.precision + ' int;',\n\n\t\t\t'#define SHADER_NAME ' + shader.name,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '',\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t'#define MAX_BONES ' + parameters.maxBones,\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\tparameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.skinning ? '#define USE_SKINNING' : '',\n\t\t\tparameters.useVertexTexture ? '#define BONE_TEXTURE' : '',\n\n\t\t\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\n\t\t\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\tparameters.logarithmicDepthBuffer && extensions.get( 'EXT_frag_depth' ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 modelMatrix;',\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform mat3 normalMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\n\t\t\t'attribute vec3 position;',\n\t\t\t'attribute vec3 normal;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'#ifdef USE_COLOR',\n\n\t\t\t'\tattribute vec3 color;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_MORPHTARGETS',\n\n\t\t\t'\tattribute vec3 morphTarget0;',\n\t\t\t'\tattribute vec3 morphTarget1;',\n\t\t\t'\tattribute vec3 morphTarget2;',\n\t\t\t'\tattribute vec3 morphTarget3;',\n\n\t\t\t'\t#ifdef USE_MORPHNORMALS',\n\n\t\t\t'\t\tattribute vec3 morphNormal0;',\n\t\t\t'\t\tattribute vec3 morphNormal1;',\n\t\t\t'\t\tattribute vec3 morphNormal2;',\n\t\t\t'\t\tattribute vec3 morphNormal3;',\n\n\t\t\t'\t#else',\n\n\t\t\t'\t\tattribute vec3 morphTarget4;',\n\t\t\t'\t\tattribute vec3 morphTarget5;',\n\t\t\t'\t\tattribute vec3 morphTarget6;',\n\t\t\t'\t\tattribute vec3 morphTarget7;',\n\n\t\t\t'\t#endif',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_SKINNING',\n\n\t\t\t'\tattribute vec4 skinIndex;',\n\t\t\t'\tattribute vec4 skinWeight;',\n\n\t\t\t'#endif',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\n\t\t\t'precision ' + parameters.precision + ' float;',\n\t\t\t'precision ' + parameters.precision + ' int;',\n\n\t\t\t'#define SHADER_NAME ' + shader.name,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.alphaTest ? '#define ALPHATEST ' + parameters.alphaTest + ( parameters.alphaTest % 1 ? '' : '.0' ) : '', // add '.0' if integer\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapTypeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapBlendingDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\n\t\t\tparameters.gradientMap ? '#define USE_GRADIENTMAP' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '',\n\n\t\t\tparameters.physicallyCorrectLights ? '#define PHYSICALLY_CORRECT_LIGHTS' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\tparameters.logarithmicDepthBuffer && extensions.get( 'EXT_frag_depth' ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\tparameters.envMap && extensions.get( 'EXT_shader_texture_lod' ) ? '#define TEXTURE_LOD_EXT' : '',\n\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '',\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '',\n\n\t\t\tparameters.dithering ? '#define DITHERING' : '',\n\n\t\t\t( parameters.outputEncoding || parameters.mapEncoding || parameters.envMapEncoding || parameters.emissiveMapEncoding ) ? ShaderChunk[ 'encodings_pars_fragment' ] : '', // this code is required here because it is used by the various encoding/decoding function defined below\n\t\t\tparameters.mapEncoding ? getTexelDecodingFunction( 'mapTexelToLinear', parameters.mapEncoding ) : '',\n\t\t\tparameters.envMapEncoding ? getTexelDecodingFunction( 'envMapTexelToLinear', parameters.envMapEncoding ) : '',\n\t\t\tparameters.emissiveMapEncoding ? getTexelDecodingFunction( 'emissiveMapTexelToLinear', parameters.emissiveMapEncoding ) : '',\n\t\t\tparameters.outputEncoding ? getTexelEncodingFunction( 'linearToOutputTexel', parameters.outputEncoding ) : '',\n\n\t\t\tparameters.depthPacking ? '#define DEPTH_PACKING ' + material.depthPacking : '',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t}\n\n\tvertexShader = parseIncludes( vertexShader );\n\tvertexShader = replaceLightNums( vertexShader, parameters );\n\tvertexShader = replaceClippingPlaneNums( vertexShader, parameters );\n\n\tfragmentShader = parseIncludes( fragmentShader );\n\tfragmentShader = replaceLightNums( fragmentShader, parameters );\n\tfragmentShader = replaceClippingPlaneNums( fragmentShader, parameters );\n\n\tvertexShader = unrollLoops( vertexShader );\n\tfragmentShader = unrollLoops( fragmentShader );\n\n\tvar vertexGlsl = prefixVertex + vertexShader;\n\tvar fragmentGlsl = prefixFragment + fragmentShader;\n\n\t// console.log( '*VERTEX*', vertexGlsl );\n\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\tvar glVertexShader = WebGLShader( gl, gl.VERTEX_SHADER, vertexGlsl );\n\tvar glFragmentShader = WebGLShader( gl, gl.FRAGMENT_SHADER, fragmentGlsl );\n\n\tgl.attachShader( program, glVertexShader );\n\tgl.attachShader( program, glFragmentShader );\n\n\t// Force a particular attribute to index 0.\n\n\tif ( material.index0AttributeName !== undefined ) {\n\n\t\tgl.bindAttribLocation( program, 0, material.index0AttributeName );\n\n\t} else if ( parameters.morphTargets === true ) {\n\n\t\t// programs with morphTargets displace position out of attribute 0\n\t\tgl.bindAttribLocation( program, 0, 'position' );\n\n\t}\n\n\tgl.linkProgram( program );\n\n\tvar programLog = gl.getProgramInfoLog( program ).trim();\n\tvar vertexLog = gl.getShaderInfoLog( glVertexShader ).trim();\n\tvar fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim();\n\n\tvar runnable = true;\n\tvar haveDiagnostics = true;\n\n\t// console.log( '**VERTEX**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( glVertexShader ) );\n\t// console.log( '**FRAGMENT**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( glFragmentShader ) );\n\n\tif ( gl.getProgramParameter( program, gl.LINK_STATUS ) === false ) {\n\n\t\trunnable = false;\n\n\t\tconsole.error( 'THREE.WebGLProgram: shader error: ', gl.getError(), 'gl.VALIDATE_STATUS', gl.getProgramParameter( program, gl.VALIDATE_STATUS ), 'gl.getProgramInfoLog', programLog, vertexLog, fragmentLog );\n\n\t} else if ( programLog !== '' ) {\n\n\t\tconsole.warn( 'THREE.WebGLProgram: gl.getProgramInfoLog()', programLog );\n\n\t} else if ( vertexLog === '' || fragmentLog === '' ) {\n\n\t\thaveDiagnostics = false;\n\n\t}\n\n\tif ( haveDiagnostics ) {\n\n\t\tthis.diagnostics = {\n\n\t\t\trunnable: runnable,\n\t\t\tmaterial: material,\n\n\t\t\tprogramLog: programLog,\n\n\t\t\tvertexShader: {\n\n\t\t\t\tlog: vertexLog,\n\t\t\t\tprefix: prefixVertex\n\n\t\t\t},\n\n\t\t\tfragmentShader: {\n\n\t\t\t\tlog: fragmentLog,\n\t\t\t\tprefix: prefixFragment\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t// clean up\n\n\tgl.deleteShader( glVertexShader );\n\tgl.deleteShader( glFragmentShader );\n\n\t// set up caching for uniform locations\n\n\tvar cachedUniforms;\n\n\tthis.getUniforms = function () {\n\n\t\tif ( cachedUniforms === undefined ) {\n\n\t\t\tcachedUniforms = new WebGLUniforms( gl, program, renderer );\n\n\t\t}\n\n\t\treturn cachedUniforms;\n\n\t};\n\n\t// set up caching for attribute locations\n\n\tvar cachedAttributes;\n\n\tthis.getAttributes = function () {\n\n\t\tif ( cachedAttributes === undefined ) {\n\n\t\t\tcachedAttributes = fetchAttributeLocations( gl, program );\n\n\t\t}\n\n\t\treturn cachedAttributes;\n\n\t};\n\n\t// free resource\n\n\tthis.destroy = function () {\n\n\t\tgl.deleteProgram( program );\n\t\tthis.program = undefined;\n\n\t};\n\n\t// DEPRECATED\n\n\tObject.defineProperties( this, {\n\n\t\tuniforms: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram: .uniforms is now .getUniforms().' );\n\t\t\t\treturn this.getUniforms();\n\n\t\t\t}\n\t\t},\n\n\t\tattributes: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram: .attributes is now .getAttributes().' );\n\t\t\t\treturn this.getAttributes();\n\n\t\t\t}\n\t\t}\n\n\t} );\n\n\n\t//\n\n\tthis.name = shader.name;\n\tthis.id = programIdCount ++;\n\tthis.code = code;\n\tthis.usedTimes = 1;\n\tthis.program = program;\n\tthis.vertexShader = glVertexShader;\n\tthis.fragmentShader = glFragmentShader;\n\n\treturn this;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLPrograms( renderer, extensions, capabilities ) {\n\n\tvar programs = [];\n\n\tvar shaderIDs = {\n\t\tMeshDepthMaterial: 'depth',\n\t\tMeshDistanceMaterial: 'distanceRGBA',\n\t\tMeshNormalMaterial: 'normal',\n\t\tMeshBasicMaterial: 'basic',\n\t\tMeshLambertMaterial: 'lambert',\n\t\tMeshPhongMaterial: 'phong',\n\t\tMeshToonMaterial: 'phong',\n\t\tMeshStandardMaterial: 'physical',\n\t\tMeshPhysicalMaterial: 'physical',\n\t\tLineBasicMaterial: 'basic',\n\t\tLineDashedMaterial: 'dashed',\n\t\tPointsMaterial: 'points',\n\t\tShadowMaterial: 'shadow'\n\t};\n\n\tvar parameterNames = [\n\t\t\"precision\", \"supportsVertexTextures\", \"map\", \"mapEncoding\", \"envMap\", \"envMapMode\", \"envMapEncoding\",\n\t\t\"lightMap\", \"aoMap\", \"emissiveMap\", \"emissiveMapEncoding\", \"bumpMap\", \"normalMap\", \"objectSpaceNormalMap\", \"displacementMap\", \"specularMap\",\n\t\t\"roughnessMap\", \"metalnessMap\", \"gradientMap\",\n\t\t\"alphaMap\", \"combine\", \"vertexColors\", \"fog\", \"useFog\", \"fogExp\",\n\t\t\"flatShading\", \"sizeAttenuation\", \"logarithmicDepthBuffer\", \"skinning\",\n\t\t\"maxBones\", \"useVertexTexture\", \"morphTargets\", \"morphNormals\",\n\t\t\"maxMorphTargets\", \"maxMorphNormals\", \"premultipliedAlpha\",\n\t\t\"numDirLights\", \"numPointLights\", \"numSpotLights\", \"numHemiLights\", \"numRectAreaLights\",\n\t\t\"shadowMapEnabled\", \"shadowMapType\", \"toneMapping\", 'physicallyCorrectLights',\n\t\t\"alphaTest\", \"doubleSided\", \"flipSided\", \"numClippingPlanes\", \"numClipIntersection\", \"depthPacking\", \"dithering\"\n\t];\n\n\n\tfunction allocateBones( object ) {\n\n\t\tvar skeleton = object.skeleton;\n\t\tvar bones = skeleton.bones;\n\n\t\tif ( capabilities.floatVertexTextures ) {\n\n\t\t\treturn 1024;\n\n\t\t} else {\n\n\t\t\t// default for when object is not specified\n\t\t\t// ( for example when prebuilding shader to be used with multiple objects )\n\t\t\t//\n\t\t\t//  - leave some extra space for other uniforms\n\t\t\t//  - limit here is ANGLE's 254 max uniform vectors\n\t\t\t//    (up to 54 should be safe)\n\n\t\t\tvar nVertexUniforms = capabilities.maxVertexUniforms;\n\t\t\tvar nVertexMatrices = Math.floor( ( nVertexUniforms - 20 ) / 4 );\n\n\t\t\tvar maxBones = Math.min( nVertexMatrices, bones.length );\n\n\t\t\tif ( maxBones < bones.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Skeleton has ' + bones.length + ' bones. This GPU supports ' + maxBones + '.' );\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\treturn maxBones;\n\n\t\t}\n\n\t}\n\n\tfunction getTextureEncodingFromMap( map, gammaOverrideLinear ) {\n\n\t\tvar encoding;\n\n\t\tif ( ! map ) {\n\n\t\t\tencoding = LinearEncoding;\n\n\t\t} else if ( map.isTexture ) {\n\n\t\t\tencoding = map.encoding;\n\n\t\t} else if ( map.isWebGLRenderTarget ) {\n\n\t\t\tconsole.warn( \"THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\tencoding = map.texture.encoding;\n\n\t\t}\n\n\t\t// add backwards compatibility for WebGLRenderer.gammaInput/gammaOutput parameter, should probably be removed at some point.\n\t\tif ( encoding === LinearEncoding && gammaOverrideLinear ) {\n\n\t\t\tencoding = GammaEncoding;\n\n\t\t}\n\n\t\treturn encoding;\n\n\t}\n\n\tthis.getParameters = function ( material, lights, shadows, fog, nClipPlanes, nClipIntersection, object ) {\n\n\t\tvar shaderID = shaderIDs[ material.type ];\n\n\t\t// heuristics to create shader parameters according to lights in the scene\n\t\t// (not to blow over maxLights budget)\n\n\t\tvar maxBones = object.isSkinnedMesh ? allocateBones( object ) : 0;\n\t\tvar precision = capabilities.precision;\n\n\t\tif ( material.precision !== null ) {\n\n\t\t\tprecision = capabilities.getMaxPrecision( material.precision );\n\n\t\t\tif ( precision !== material.precision ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar currentRenderTarget = renderer.getRenderTarget();\n\n\t\tvar parameters = {\n\n\t\t\tshaderID: shaderID,\n\n\t\t\tprecision: precision,\n\t\t\tsupportsVertexTextures: capabilities.vertexTextures,\n\t\t\toutputEncoding: getTextureEncodingFromMap( ( ! currentRenderTarget ) ? null : currentRenderTarget.texture, renderer.gammaOutput ),\n\t\t\tmap: !! material.map,\n\t\t\tmapEncoding: getTextureEncodingFromMap( material.map, renderer.gammaInput ),\n\t\t\tenvMap: !! material.envMap,\n\t\t\tenvMapMode: material.envMap && material.envMap.mapping,\n\t\t\tenvMapEncoding: getTextureEncodingFromMap( material.envMap, renderer.gammaInput ),\n\t\t\tenvMapCubeUV: ( !! material.envMap ) && ( ( material.envMap.mapping === CubeUVReflectionMapping ) || ( material.envMap.mapping === CubeUVRefractionMapping ) ),\n\t\t\tlightMap: !! material.lightMap,\n\t\t\taoMap: !! material.aoMap,\n\t\t\temissiveMap: !! material.emissiveMap,\n\t\t\temissiveMapEncoding: getTextureEncodingFromMap( material.emissiveMap, renderer.gammaInput ),\n\t\t\tbumpMap: !! material.bumpMap,\n\t\t\tnormalMap: !! material.normalMap,\n\t\t\tobjectSpaceNormalMap: material.normalMapType === ObjectSpaceNormalMap,\n\t\t\tdisplacementMap: !! material.displacementMap,\n\t\t\troughnessMap: !! material.roughnessMap,\n\t\t\tmetalnessMap: !! material.metalnessMap,\n\t\t\tspecularMap: !! material.specularMap,\n\t\t\talphaMap: !! material.alphaMap,\n\n\t\t\tgradientMap: !! material.gradientMap,\n\n\t\t\tcombine: material.combine,\n\n\t\t\tvertexColors: material.vertexColors,\n\n\t\t\tfog: !! fog,\n\t\t\tuseFog: material.fog,\n\t\t\tfogExp: ( fog && fog.isFogExp2 ),\n\n\t\t\tflatShading: material.flatShading,\n\n\t\t\tsizeAttenuation: material.sizeAttenuation,\n\t\t\tlogarithmicDepthBuffer: capabilities.logarithmicDepthBuffer,\n\n\t\t\tskinning: material.skinning && maxBones > 0,\n\t\t\tmaxBones: maxBones,\n\t\t\tuseVertexTexture: capabilities.floatVertexTextures,\n\n\t\t\tmorphTargets: material.morphTargets,\n\t\t\tmorphNormals: material.morphNormals,\n\t\t\tmaxMorphTargets: renderer.maxMorphTargets,\n\t\t\tmaxMorphNormals: renderer.maxMorphNormals,\n\n\t\t\tnumDirLights: lights.directional.length,\n\t\t\tnumPointLights: lights.point.length,\n\t\t\tnumSpotLights: lights.spot.length,\n\t\t\tnumRectAreaLights: lights.rectArea.length,\n\t\t\tnumHemiLights: lights.hemi.length,\n\n\t\t\tnumClippingPlanes: nClipPlanes,\n\t\t\tnumClipIntersection: nClipIntersection,\n\n\t\t\tdithering: material.dithering,\n\n\t\t\tshadowMapEnabled: renderer.shadowMap.enabled && object.receiveShadow && shadows.length > 0,\n\t\t\tshadowMapType: renderer.shadowMap.type,\n\n\t\t\ttoneMapping: renderer.toneMapping,\n\t\t\tphysicallyCorrectLights: renderer.physicallyCorrectLights,\n\n\t\t\tpremultipliedAlpha: material.premultipliedAlpha,\n\n\t\t\talphaTest: material.alphaTest,\n\t\t\tdoubleSided: material.side === DoubleSide,\n\t\t\tflipSided: material.side === BackSide,\n\n\t\t\tdepthPacking: ( material.depthPacking !== undefined ) ? material.depthPacking : false\n\n\t\t};\n\n\t\treturn parameters;\n\n\t};\n\n\tthis.getProgramCode = function ( material, parameters ) {\n\n\t\tvar array = [];\n\n\t\tif ( parameters.shaderID ) {\n\n\t\t\tarray.push( parameters.shaderID );\n\n\t\t} else {\n\n\t\t\tarray.push( material.fragmentShader );\n\t\t\tarray.push( material.vertexShader );\n\n\t\t}\n\n\t\tif ( material.defines !== undefined ) {\n\n\t\t\tfor ( var name in material.defines ) {\n\n\t\t\t\tarray.push( name );\n\t\t\t\tarray.push( material.defines[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( var i = 0; i < parameterNames.length; i ++ ) {\n\n\t\t\tarray.push( parameters[ parameterNames[ i ] ] );\n\n\t\t}\n\n\t\tarray.push( material.onBeforeCompile.toString() );\n\n\t\tarray.push( renderer.gammaOutput );\n\n\t\treturn array.join();\n\n\t};\n\n\tthis.acquireProgram = function ( material, shader, parameters, code ) {\n\n\t\tvar program;\n\n\t\t// Check if code has been already compiled\n\t\tfor ( var p = 0, pl = programs.length; p < pl; p ++ ) {\n\n\t\t\tvar programInfo = programs[ p ];\n\n\t\t\tif ( programInfo.code === code ) {\n\n\t\t\t\tprogram = programInfo;\n\t\t\t\t++ program.usedTimes;\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( program === undefined ) {\n\n\t\t\tprogram = new WebGLProgram( renderer, extensions, code, material, shader, parameters );\n\t\t\tprograms.push( program );\n\n\t\t}\n\n\t\treturn program;\n\n\t};\n\n\tthis.releaseProgram = function ( program ) {\n\n\t\tif ( -- program.usedTimes === 0 ) {\n\n\t\t\t// Remove from unordered set\n\t\t\tvar i = programs.indexOf( program );\n\t\t\tprograms[ i ] = programs[ programs.length - 1 ];\n\t\t\tprograms.pop();\n\n\t\t\t// Free WebGL resources\n\t\t\tprogram.destroy();\n\n\t\t}\n\n\t};\n\n\t// Exposed for resource monitoring & error feedback via renderer.info:\n\tthis.programs = programs;\n\n}\n\n/**\n * @author fordacious / fordacious.github.io\n */\n\nfunction WebGLProperties() {\n\n\tvar properties = new WeakMap();\n\n\tfunction get( object ) {\n\n\t\tvar map = properties.get( object );\n\n\t\tif ( map === undefined ) {\n\n\t\t\tmap = {};\n\t\t\tproperties.set( object, map );\n\n\t\t}\n\n\t\treturn map;\n\n\t}\n\n\tfunction remove( object ) {\n\n\t\tproperties.delete( object );\n\n\t}\n\n\tfunction update( object, key, value ) {\n\n\t\tproperties.get( object )[ key ] = value;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tproperties = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction painterSortStable( a, b ) {\n\n\tif ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.program && b.program && a.program !== b.program ) {\n\n\t\treturn a.program.id - b.program.id;\n\n\t} else if ( a.material.id !== b.material.id ) {\n\n\t\treturn a.material.id - b.material.id;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn a.z - b.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\nfunction reversePainterSortStable( a, b ) {\n\n\tif ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} if ( a.z !== b.z ) {\n\n\t\treturn b.z - a.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\nfunction WebGLRenderList() {\n\n\tvar renderItems = [];\n\tvar renderItemsIndex = 0;\n\n\tvar opaque = [];\n\tvar transparent = [];\n\n\tfunction init() {\n\n\t\trenderItemsIndex = 0;\n\n\t\topaque.length = 0;\n\t\ttransparent.length = 0;\n\n\t}\n\n\tfunction push( object, geometry, material, z, group ) {\n\n\t\tvar renderItem = renderItems[ renderItemsIndex ];\n\n\t\tif ( renderItem === undefined ) {\n\n\t\t\trenderItem = {\n\t\t\t\tid: object.id,\n\t\t\t\tobject: object,\n\t\t\t\tgeometry: geometry,\n\t\t\t\tmaterial: material,\n\t\t\t\tprogram: material.program,\n\t\t\t\trenderOrder: object.renderOrder,\n\t\t\t\tz: z,\n\t\t\t\tgroup: group\n\t\t\t};\n\n\t\t\trenderItems[ renderItemsIndex ] = renderItem;\n\n\t\t} else {\n\n\t\t\trenderItem.id = object.id;\n\t\t\trenderItem.object = object;\n\t\t\trenderItem.geometry = geometry;\n\t\t\trenderItem.material = material;\n\t\t\trenderItem.program = material.program;\n\t\t\trenderItem.renderOrder = object.renderOrder;\n\t\t\trenderItem.z = z;\n\t\t\trenderItem.group = group;\n\n\t\t}\n\n\t\t( material.transparent === true ? transparent : opaque ).push( renderItem );\n\n\t\trenderItemsIndex ++;\n\n\t}\n\n\tfunction sort() {\n\n\t\tif ( opaque.length > 1 ) opaque.sort( painterSortStable );\n\t\tif ( transparent.length > 1 ) transparent.sort( reversePainterSortStable );\n\n\t}\n\n\treturn {\n\t\topaque: opaque,\n\t\ttransparent: transparent,\n\n\t\tinit: init,\n\t\tpush: push,\n\n\t\tsort: sort\n\t};\n\n}\n\nfunction WebGLRenderLists() {\n\n\tvar lists = {};\n\n\tfunction get( scene, camera ) {\n\n\t\tvar hash = scene.id + ',' + camera.id;\n\t\tvar list = lists[ hash ];\n\n\t\tif ( list === undefined ) {\n\n\t\t\t// console.log( 'THREE.WebGLRenderLists:', hash );\n\n\t\t\tlist = new WebGLRenderList();\n\t\t\tlists[ hash ] = list;\n\n\t\t}\n\n\t\treturn list;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tlists = {};\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction UniformsCache() {\n\n\tvar lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tvar uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\n\t\t\t\t\t\tshadow: false,\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tconeCos: 0,\n\t\t\t\t\t\tpenumbraCos: 0,\n\t\t\t\t\t\tdecay: 0,\n\n\t\t\t\t\t\tshadow: false,\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tdecay: 0,\n\n\t\t\t\t\t\tshadow: false,\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2(),\n\t\t\t\t\t\tshadowCameraNear: 1,\n\t\t\t\t\t\tshadowCameraFar: 1000\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tskyColor: new Color(),\n\t\t\t\t\t\tgroundColor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'RectAreaLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\thalfWidth: new Vector3(),\n\t\t\t\t\t\thalfHeight: new Vector3()\n\t\t\t\t\t\t// TODO (abelnation): set RectAreaLight shadow uniforms\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\nvar count = 0;\n\nfunction WebGLLights() {\n\n\tvar cache = new UniformsCache();\n\n\tvar state = {\n\n\t\tid: count ++,\n\n\t\thash: '',\n\n\t\tambient: [ 0, 0, 0 ],\n\t\tdirectional: [],\n\t\tdirectionalShadowMap: [],\n\t\tdirectionalShadowMatrix: [],\n\t\tspot: [],\n\t\tspotShadowMap: [],\n\t\tspotShadowMatrix: [],\n\t\trectArea: [],\n\t\tpoint: [],\n\t\tpointShadowMap: [],\n\t\tpointShadowMatrix: [],\n\t\themi: []\n\n\t};\n\n\tvar vector3 = new Vector3();\n\tvar matrix4 = new Matrix4();\n\tvar matrix42 = new Matrix4();\n\n\tfunction setup( lights, shadows, camera ) {\n\n\t\tvar r = 0, g = 0, b = 0;\n\n\t\tvar directionalLength = 0;\n\t\tvar pointLength = 0;\n\t\tvar spotLength = 0;\n\t\tvar rectAreaLength = 0;\n\t\tvar hemiLength = 0;\n\n\t\tvar viewMatrix = camera.matrixWorldInverse;\n\n\t\tfor ( var i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tvar light = lights[ i ];\n\n\t\t\tvar color = light.color;\n\t\t\tvar intensity = light.intensity;\n\t\t\tvar distance = light.distance;\n\n\t\t\tvar shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\n\n\t\t\tif ( light.isAmbientLight ) {\n\n\t\t\t\tr += color.r * intensity;\n\t\t\t\tg += color.g * intensity;\n\t\t\t\tb += color.b * intensity;\n\n\t\t\t} else if ( light.isDirectionalLight ) {\n\n\t\t\t\tvar uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tuniforms.shadow = light.castShadow;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tvar shadow = light.shadow;\n\n\t\t\t\t\tuniforms.shadowBias = shadow.bias;\n\t\t\t\t\tuniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tuniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t}\n\n\t\t\t\tstate.directionalShadowMap[ directionalLength ] = shadowMap;\n\t\t\t\tstate.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\n\t\t\t\tstate.directional[ directionalLength ] = uniforms;\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tvar uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.distance = distance;\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tuniforms.coneCos = Math.cos( light.angle );\n\t\t\t\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\n\t\t\t\tuniforms.decay = ( light.distance === 0 ) ? 0.0 : light.decay;\n\n\t\t\t\tuniforms.shadow = light.castShadow;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tvar shadow = light.shadow;\n\n\t\t\t\t\tuniforms.shadowBias = shadow.bias;\n\t\t\t\t\tuniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tuniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t}\n\n\t\t\t\tstate.spotShadowMap[ spotLength ] = shadowMap;\n\t\t\t\tstate.spotShadowMatrix[ spotLength ] = light.shadow.matrix;\n\t\t\t\tstate.spot[ spotLength ] = uniforms;\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tvar uniforms = cache.get( light );\n\n\t\t\t\t// (a) intensity is the total visible light emitted\n\t\t\t\t//uniforms.color.copy( color ).multiplyScalar( intensity / ( light.width * light.height * Math.PI ) );\n\n\t\t\t\t// (b) intensity is the brightness of the light\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\t// extract local rotation of light to derive width/height half vectors\n\t\t\t\tmatrix42.identity();\n\t\t\t\tmatrix4.copy( light.matrixWorld );\n\t\t\t\tmatrix4.premultiply( viewMatrix );\n\t\t\t\tmatrix42.extractRotation( matrix4 );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tuniforms.halfWidth.applyMatrix4( matrix42 );\n\t\t\t\tuniforms.halfHeight.applyMatrix4( matrix42 );\n\n\t\t\t\t// TODO (abelnation): RectAreaLight distance?\n\t\t\t\t// uniforms.distance = distance;\n\n\t\t\t\tstate.rectArea[ rectAreaLength ] = uniforms;\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tvar uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\tuniforms.decay = ( light.distance === 0 ) ? 0.0 : light.decay;\n\n\t\t\t\tuniforms.shadow = light.castShadow;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tvar shadow = light.shadow;\n\n\t\t\t\t\tuniforms.shadowBias = shadow.bias;\n\t\t\t\t\tuniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tuniforms.shadowMapSize = shadow.mapSize;\n\t\t\t\t\tuniforms.shadowCameraNear = shadow.camera.near;\n\t\t\t\t\tuniforms.shadowCameraFar = shadow.camera.far;\n\n\t\t\t\t}\n\n\t\t\t\tstate.pointShadowMap[ pointLength ] = shadowMap;\n\t\t\t\tstate.pointShadowMatrix[ pointLength ] = light.shadow.matrix;\n\t\t\t\tstate.point[ pointLength ] = uniforms;\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tvar uniforms = cache.get( light );\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\t\t\t\tuniforms.direction.normalize();\n\n\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity );\n\n\t\t\t\tstate.hemi[ hemiLength ] = uniforms;\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.ambient[ 0 ] = r;\n\t\tstate.ambient[ 1 ] = g;\n\t\tstate.ambient[ 2 ] = b;\n\n\t\tstate.directional.length = directionalLength;\n\t\tstate.spot.length = spotLength;\n\t\tstate.rectArea.length = rectAreaLength;\n\t\tstate.point.length = pointLength;\n\t\tstate.hemi.length = hemiLength;\n\n\t\tstate.hash = state.id + ',' + directionalLength + ',' + pointLength + ',' + spotLength + ',' + rectAreaLength + ',' + hemiLength + ',' + shadows.length;\n\n\t}\n\n\treturn {\n\t\tsetup: setup,\n\t\tstate: state\n\t};\n\n}\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WebGLRenderState() {\n\n\tvar lights = new WebGLLights();\n\n\tvar lightsArray = [];\n\tvar shadowsArray = [];\n\tvar spritesArray = [];\n\n\tfunction init() {\n\n\t\tlightsArray.length = 0;\n\t\tshadowsArray.length = 0;\n\t\tspritesArray.length = 0;\n\n\t}\n\n\tfunction pushLight( light ) {\n\n\t\tlightsArray.push( light );\n\n\t}\n\n\tfunction pushShadow( shadowLight ) {\n\n\t\tshadowsArray.push( shadowLight );\n\n\t}\n\n\tfunction pushSprite( sprite ) {\n\n\t\tspritesArray.push( sprite );\n\n\t}\n\n\tfunction setupLights( camera ) {\n\n\t\tlights.setup( lightsArray, shadowsArray, camera );\n\n\t}\n\n\tvar state = {\n\t\tlightsArray: lightsArray,\n\t\tshadowsArray: shadowsArray,\n\t\tspritesArray: spritesArray,\n\n\t\tlights: lights\n\t};\n\n\treturn {\n\t\tinit: init,\n\t\tstate: state,\n\t\tsetupLights: setupLights,\n\n\t\tpushLight: pushLight,\n\t\tpushShadow: pushShadow,\n\t\tpushSprite: pushSprite\n\t};\n\n}\n\nfunction WebGLRenderStates() {\n\n\tvar renderStates = {};\n\n\tfunction get( scene, camera ) {\n\n\t\tvar hash = scene.id + ',' + camera.id;\n\n\t\tvar renderState = renderStates[ hash ];\n\n\t\tif ( renderState === undefined ) {\n\n\t\t\trenderState = new WebGLRenderState();\n\t\t\trenderStates[ hash ] = renderState;\n\n\t\t}\n\n\t\treturn renderState;\n\n\t}\n\n\tfunction dispose() {\n\n\t\trenderStates = {};\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author bhouston / https://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n *\n *  opacity: <float>,\n *\n *  map: new THREE.Texture( <Image> ),\n *\n *  alphaMap: new THREE.Texture( <Image> ),\n *\n *  displacementMap: new THREE.Texture( <Image> ),\n *  displacementScale: <float>,\n *  displacementBias: <float>,\n *\n *  wireframe: <boolean>,\n *  wireframeLinewidth: <float>\n * }\n */\n\nfunction MeshDepthMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshDepthMaterial';\n\n\tthis.depthPacking = BasicDepthPacking;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshDepthMaterial.prototype = Object.create( Material.prototype );\nMeshDepthMaterial.prototype.constructor = MeshDepthMaterial;\n\nMeshDepthMaterial.prototype.isMeshDepthMaterial = true;\n\nMeshDepthMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.depthPacking = source.depthPacking;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\treturn this;\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n *\n *  referencePosition: <float>,\n *  nearDistance: <float>,\n *  farDistance: <float>,\n *\n *  skinning: <bool>,\n *  morphTargets: <bool>,\n *\n *  map: new THREE.Texture( <Image> ),\n *\n *  alphaMap: new THREE.Texture( <Image> ),\n *\n *  displacementMap: new THREE.Texture( <Image> ),\n *  displacementScale: <float>,\n *  displacementBias: <float>\n *\n * }\n */\n\nfunction MeshDistanceMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshDistanceMaterial';\n\n\tthis.referencePosition = new Vector3();\n\tthis.nearDistance = 1;\n\tthis.farDistance = 1000;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.fog = false;\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshDistanceMaterial.prototype = Object.create( Material.prototype );\nMeshDistanceMaterial.prototype.constructor = MeshDistanceMaterial;\n\nMeshDistanceMaterial.prototype.isMeshDistanceMaterial = true;\n\nMeshDistanceMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.referencePosition.copy( source.referencePosition );\n\tthis.nearDistance = source.nearDistance;\n\tthis.farDistance = source.farDistance;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\treturn this;\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLShadowMap( _renderer, _objects, maxTextureSize ) {\n\n\tvar _frustum = new Frustum(),\n\t\t_projScreenMatrix = new Matrix4(),\n\n\t\t_shadowMapSize = new Vector2(),\n\t\t_maxShadowMapSize = new Vector2( maxTextureSize, maxTextureSize ),\n\n\t\t_lookTarget = new Vector3(),\n\t\t_lightPositionWorld = new Vector3(),\n\n\t\t_MorphingFlag = 1,\n\t\t_SkinningFlag = 2,\n\n\t\t_NumberOfMaterialVariants = ( _MorphingFlag | _SkinningFlag ) + 1,\n\n\t\t_depthMaterials = new Array( _NumberOfMaterialVariants ),\n\t\t_distanceMaterials = new Array( _NumberOfMaterialVariants ),\n\n\t\t_materialCache = {};\n\n\tvar shadowSide = { 0: BackSide, 1: FrontSide, 2: DoubleSide };\n\n\tvar cubeDirections = [\n\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\n\t];\n\n\tvar cubeUps = [\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\n\t];\n\n\tvar cube2DViewPorts = [\n\t\tnew Vector4(), new Vector4(), new Vector4(),\n\t\tnew Vector4(), new Vector4(), new Vector4()\n\t];\n\n\t// init\n\n\tfor ( var i = 0; i !== _NumberOfMaterialVariants; ++ i ) {\n\n\t\tvar useMorphing = ( i & _MorphingFlag ) !== 0;\n\t\tvar useSkinning = ( i & _SkinningFlag ) !== 0;\n\n\t\tvar depthMaterial = new MeshDepthMaterial( {\n\n\t\t\tdepthPacking: RGBADepthPacking,\n\n\t\t\tmorphTargets: useMorphing,\n\t\t\tskinning: useSkinning\n\n\t\t} );\n\n\t\t_depthMaterials[ i ] = depthMaterial;\n\n\t\t//\n\n\t\tvar distanceMaterial = new MeshDistanceMaterial( {\n\n\t\t\tmorphTargets: useMorphing,\n\t\t\tskinning: useSkinning\n\n\t\t} );\n\n\t\t_distanceMaterials[ i ] = distanceMaterial;\n\n\t}\n\n\t//\n\n\tvar scope = this;\n\n\tthis.enabled = false;\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis.type = PCFShadowMap;\n\n\tthis.render = function ( lights, scene, camera ) {\n\n\t\tif ( scope.enabled === false ) return;\n\t\tif ( scope.autoUpdate === false && scope.needsUpdate === false ) return;\n\n\t\tif ( lights.length === 0 ) return;\n\n\t\t// TODO Clean up (needed in case of contextlost)\n\t\tvar _gl = _renderer.context;\n\t\tvar _state = _renderer.state;\n\n\t\t// Set GL state for depth map.\n\t\t_state.disable( _gl.BLEND );\n\t\t_state.buffers.color.setClear( 1, 1, 1, 1 );\n\t\t_state.buffers.depth.setTest( true );\n\t\t_state.setScissorTest( false );\n\n\t\t// render depth map\n\n\t\tvar faceCount;\n\n\t\tfor ( var i = 0, il = lights.length; i < il; i ++ ) {\n\n\t\t\tvar light = lights[ i ];\n\t\t\tvar shadow = light.shadow;\n\t\t\tvar isPointLight = light && light.isPointLight;\n\n\t\t\tif ( shadow === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tvar shadowCamera = shadow.camera;\n\n\t\t\t_shadowMapSize.copy( shadow.mapSize );\n\t\t\t_shadowMapSize.min( _maxShadowMapSize );\n\n\t\t\tif ( isPointLight ) {\n\n\t\t\t\tvar vpWidth = _shadowMapSize.x;\n\t\t\t\tvar vpHeight = _shadowMapSize.y;\n\n\t\t\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t\t\t// following orientation:\n\t\t\t\t//\n\t\t\t\t//  xzXZ\n\t\t\t\t//   y Y\n\t\t\t\t//\n\t\t\t\t// X - Positive x direction\n\t\t\t\t// x - Negative x direction\n\t\t\t\t// Y - Positive y direction\n\t\t\t\t// y - Negative y direction\n\t\t\t\t// Z - Positive z direction\n\t\t\t\t// z - Negative z direction\n\n\t\t\t\t// positive X\n\t\t\t\tcube2DViewPorts[ 0 ].set( vpWidth * 2, vpHeight, vpWidth, vpHeight );\n\t\t\t\t// negative X\n\t\t\t\tcube2DViewPorts[ 1 ].set( 0, vpHeight, vpWidth, vpHeight );\n\t\t\t\t// positive Z\n\t\t\t\tcube2DViewPorts[ 2 ].set( vpWidth * 3, vpHeight, vpWidth, vpHeight );\n\t\t\t\t// negative Z\n\t\t\t\tcube2DViewPorts[ 3 ].set( vpWidth, vpHeight, vpWidth, vpHeight );\n\t\t\t\t// positive Y\n\t\t\t\tcube2DViewPorts[ 4 ].set( vpWidth * 3, 0, vpWidth, vpHeight );\n\t\t\t\t// negative Y\n\t\t\t\tcube2DViewPorts[ 5 ].set( vpWidth, 0, vpWidth, vpHeight );\n\n\t\t\t\t_shadowMapSize.x *= 4.0;\n\t\t\t\t_shadowMapSize.y *= 2.0;\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null ) {\n\n\t\t\t\tvar pars = { minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat };\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + \".shadowMap\";\n\n\t\t\t\tshadowCamera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\tif ( shadow.isSpotLightShadow ) {\n\n\t\t\t\tshadow.update( light );\n\n\t\t\t}\n\n\t\t\tvar shadowMap = shadow.map;\n\t\t\tvar shadowMatrix = shadow.matrix;\n\n\t\t\t_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\t\tshadowCamera.position.copy( _lightPositionWorld );\n\n\t\t\tif ( isPointLight ) {\n\n\t\t\t\tfaceCount = 6;\n\n\t\t\t\t// for point lights we set the shadow matrix to be a translation-only matrix\n\t\t\t\t// equal to inverse of the light's position\n\n\t\t\t\tshadowMatrix.makeTranslation( - _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z );\n\n\t\t\t} else {\n\n\t\t\t\tfaceCount = 1;\n\n\t\t\t\t_lookTarget.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tshadowCamera.lookAt( _lookTarget );\n\t\t\t\tshadowCamera.updateMatrixWorld();\n\n\t\t\t\t// compute shadow matrix\n\n\t\t\t\tshadowMatrix.set(\n\t\t\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t\t\t);\n\n\t\t\t\tshadowMatrix.multiply( shadowCamera.projectionMatrix );\n\t\t\t\tshadowMatrix.multiply( shadowCamera.matrixWorldInverse );\n\n\t\t\t}\n\n\t\t\t_renderer.setRenderTarget( shadowMap );\n\t\t\t_renderer.clear();\n\n\t\t\t// render shadow map for each cube face (if omni-directional) or\n\t\t\t// run a single pass if not\n\n\t\t\tfor ( var face = 0; face < faceCount; face ++ ) {\n\n\t\t\t\tif ( isPointLight ) {\n\n\t\t\t\t\t_lookTarget.copy( shadowCamera.position );\n\t\t\t\t\t_lookTarget.add( cubeDirections[ face ] );\n\t\t\t\t\tshadowCamera.up.copy( cubeUps[ face ] );\n\t\t\t\t\tshadowCamera.lookAt( _lookTarget );\n\t\t\t\t\tshadowCamera.updateMatrixWorld();\n\n\t\t\t\t\tvar vpDimensions = cube2DViewPorts[ face ];\n\t\t\t\t\t_state.viewport( vpDimensions );\n\n\t\t\t\t}\n\n\t\t\t\t// update camera matrices and frustum\n\n\t\t\t\t_projScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\t\t\t_frustum.setFromMatrix( _projScreenMatrix );\n\n\t\t\t\t// set object matrices & frustum culling\n\n\t\t\t\trenderObject( scene, camera, shadowCamera, isPointLight );\n\n\t\t\t}\n\n\t\t}\n\n\t\tscope.needsUpdate = false;\n\n\t};\n\n\tfunction getDepthMaterial( object, material, isPointLight, lightPositionWorld, shadowCameraNear, shadowCameraFar ) {\n\n\t\tvar geometry = object.geometry;\n\n\t\tvar result = null;\n\n\t\tvar materialVariants = _depthMaterials;\n\t\tvar customMaterial = object.customDepthMaterial;\n\n\t\tif ( isPointLight ) {\n\n\t\t\tmaterialVariants = _distanceMaterials;\n\t\t\tcustomMaterial = object.customDistanceMaterial;\n\n\t\t}\n\n\t\tif ( ! customMaterial ) {\n\n\t\t\tvar useMorphing = false;\n\n\t\t\tif ( material.morphTargets ) {\n\n\t\t\t\tif ( geometry && geometry.isBufferGeometry ) {\n\n\t\t\t\t\tuseMorphing = geometry.morphAttributes && geometry.morphAttributes.position && geometry.morphAttributes.position.length > 0;\n\n\t\t\t\t} else if ( geometry && geometry.isGeometry ) {\n\n\t\t\t\t\tuseMorphing = geometry.morphTargets && geometry.morphTargets.length > 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( object.isSkinnedMesh && material.skinning === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:', object );\n\n\t\t\t}\n\n\t\t\tvar useSkinning = object.isSkinnedMesh && material.skinning;\n\n\t\t\tvar variantIndex = 0;\n\n\t\t\tif ( useMorphing ) variantIndex |= _MorphingFlag;\n\t\t\tif ( useSkinning ) variantIndex |= _SkinningFlag;\n\n\t\t\tresult = materialVariants[ variantIndex ];\n\n\t\t} else {\n\n\t\t\tresult = customMaterial;\n\n\t\t}\n\n\t\tif ( _renderer.localClippingEnabled &&\n\t\t\t\tmaterial.clipShadows === true &&\n\t\t\t\tmaterial.clippingPlanes.length !== 0 ) {\n\n\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t// appropriate state\n\n\t\t\tvar keyA = result.uuid, keyB = material.uuid;\n\n\t\t\tvar materialsForVariant = _materialCache[ keyA ];\n\n\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t}\n\n\t\t\tvar cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\n\t\t\t}\n\n\t\t\tresult = cachedMaterial;\n\n\t\t}\n\n\t\tresult.visible = material.visible;\n\t\tresult.wireframe = material.wireframe;\n\n\t\tresult.side = ( material.shadowSide != null ) ? material.shadowSide : shadowSide[ material.side ];\n\n\t\tresult.clipShadows = material.clipShadows;\n\t\tresult.clippingPlanes = material.clippingPlanes;\n\t\tresult.clipIntersection = material.clipIntersection;\n\n\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\n\t\tresult.linewidth = material.linewidth;\n\n\t\tif ( isPointLight && result.isMeshDistanceMaterial ) {\n\n\t\t\tresult.referencePosition.copy( lightPositionWorld );\n\t\t\tresult.nearDistance = shadowCameraNear;\n\t\t\tresult.farDistance = shadowCameraFar;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tfunction renderObject( object, camera, shadowCamera, isPointLight ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tvar visible = object.layers.test( camera.layers );\n\n\t\tif ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {\n\n\t\t\tif ( object.castShadow && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) {\n\n\t\t\t\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\n\n\t\t\t\tvar geometry = _objects.update( object );\n\t\t\t\tvar material = object.material;\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tvar groups = geometry.groups;\n\n\t\t\t\t\tfor ( var k = 0, kl = groups.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\tvar group = groups[ k ];\n\t\t\t\t\t\tvar groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\tvar depthMaterial = getDepthMaterial( object, groupMaterial, isPointLight, _lightPositionWorld, shadowCamera.near, shadowCamera.far );\n\t\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\tvar depthMaterial = getDepthMaterial( object, material, isPointLight, _lightPositionWorld, shadowCamera.near, shadowCamera.far );\n\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar children = object.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\trenderObject( children[ i ], camera, shadowCamera, isPointLight );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CanvasTexture( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.needsUpdate = true;\n\n}\n\nCanvasTexture.prototype = Object.create( Texture.prototype );\nCanvasTexture.prototype.constructor = CanvasTexture;\nCanvasTexture.prototype.isCanvasTexture = true;\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction WebGLSpriteRenderer( renderer, gl, state, textures, capabilities ) {\n\n\tvar vertexBuffer, elementBuffer;\n\tvar program, attributes, uniforms;\n\n\tvar texture;\n\n\t// decompose matrixWorld\n\n\tvar spritePosition = new Vector3();\n\tvar spriteRotation = new Quaternion();\n\tvar spriteScale = new Vector3();\n\n\tfunction init() {\n\n\t\tvar vertices = new Float32Array( [\n\t\t\t- 0.5, - 0.5, 0, 0,\n\t\t\t  0.5, - 0.5, 1, 0,\n\t\t\t  0.5, 0.5, 1, 1,\n\t\t\t- 0.5, 0.5, 0, 1\n\t\t] );\n\n\t\tvar faces = new Uint16Array( [\n\t\t\t0, 1, 2,\n\t\t\t0, 2, 3\n\t\t] );\n\n\t\tvertexBuffer = gl.createBuffer();\n\t\telementBuffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( gl.ARRAY_BUFFER, vertexBuffer );\n\t\tgl.bufferData( gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW );\n\n\t\tgl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, elementBuffer );\n\t\tgl.bufferData( gl.ELEMENT_ARRAY_BUFFER, faces, gl.STATIC_DRAW );\n\n\t\tprogram = createProgram();\n\n\t\tattributes = {\n\t\t\tposition: gl.getAttribLocation( program, 'position' ),\n\t\t\tuv: gl.getAttribLocation( program, 'uv' )\n\t\t};\n\n\t\tuniforms = {\n\t\t\tuvOffset: gl.getUniformLocation( program, 'uvOffset' ),\n\t\t\tuvScale: gl.getUniformLocation( program, 'uvScale' ),\n\n\t\t\trotation: gl.getUniformLocation( program, 'rotation' ),\n\t\t\tcenter: gl.getUniformLocation( program, 'center' ),\n\t\t\tscale: gl.getUniformLocation( program, 'scale' ),\n\n\t\t\tcolor: gl.getUniformLocation( program, 'color' ),\n\t\t\tmap: gl.getUniformLocation( program, 'map' ),\n\t\t\topacity: gl.getUniformLocation( program, 'opacity' ),\n\n\t\t\tmodelViewMatrix: gl.getUniformLocation( program, 'modelViewMatrix' ),\n\t\t\tprojectionMatrix: gl.getUniformLocation( program, 'projectionMatrix' ),\n\n\t\t\tfogType: gl.getUniformLocation( program, 'fogType' ),\n\t\t\tfogDensity: gl.getUniformLocation( program, 'fogDensity' ),\n\t\t\tfogNear: gl.getUniformLocation( program, 'fogNear' ),\n\t\t\tfogFar: gl.getUniformLocation( program, 'fogFar' ),\n\t\t\tfogColor: gl.getUniformLocation( program, 'fogColor' ),\n\t\t\tfogDepth: gl.getUniformLocation( program, 'fogDepth' ),\n\n\t\t\talphaTest: gl.getUniformLocation( program, 'alphaTest' )\n\t\t};\n\n\t\tvar canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\t\tcanvas.width = 8;\n\t\tcanvas.height = 8;\n\n\t\tvar context = canvas.getContext( '2d' );\n\t\tcontext.fillStyle = 'white';\n\t\tcontext.fillRect( 0, 0, 8, 8 );\n\n\t\ttexture = new CanvasTexture( canvas );\n\n\t}\n\n\tthis.render = function ( sprites, scene, camera ) {\n\n\t\tif ( sprites.length === 0 ) return;\n\n\t\t// setup gl\n\n\t\tif ( program === undefined ) {\n\n\t\t\tinit();\n\n\t\t}\n\n\t\tstate.useProgram( program );\n\n\t\tstate.initAttributes();\n\t\tstate.enableAttribute( attributes.position );\n\t\tstate.enableAttribute( attributes.uv );\n\t\tstate.disableUnusedAttributes();\n\n\t\tstate.disable( gl.CULL_FACE );\n\t\tstate.enable( gl.BLEND );\n\n\t\tgl.bindBuffer( gl.ARRAY_BUFFER, vertexBuffer );\n\t\tgl.vertexAttribPointer( attributes.position, 2, gl.FLOAT, false, 2 * 8, 0 );\n\t\tgl.vertexAttribPointer( attributes.uv, 2, gl.FLOAT, false, 2 * 8, 8 );\n\n\t\tgl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, elementBuffer );\n\n\t\tgl.uniformMatrix4fv( uniforms.projectionMatrix, false, camera.projectionMatrix.elements );\n\n\t\tstate.activeTexture( gl.TEXTURE0 );\n\t\tgl.uniform1i( uniforms.map, 0 );\n\n\t\tvar oldFogType = 0;\n\t\tvar sceneFogType = 0;\n\t\tvar fog = scene.fog;\n\n\t\tif ( fog ) {\n\n\t\t\tgl.uniform3f( uniforms.fogColor, fog.color.r, fog.color.g, fog.color.b );\n\n\t\t\tif ( fog.isFog ) {\n\n\t\t\t\tgl.uniform1f( uniforms.fogNear, fog.near );\n\t\t\t\tgl.uniform1f( uniforms.fogFar, fog.far );\n\n\t\t\t\tgl.uniform1i( uniforms.fogType, 1 );\n\t\t\t\toldFogType = 1;\n\t\t\t\tsceneFogType = 1;\n\n\t\t\t} else if ( fog.isFogExp2 ) {\n\n\t\t\t\tgl.uniform1f( uniforms.fogDensity, fog.density );\n\n\t\t\t\tgl.uniform1i( uniforms.fogType, 2 );\n\t\t\t\toldFogType = 2;\n\t\t\t\tsceneFogType = 2;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tgl.uniform1i( uniforms.fogType, 0 );\n\t\t\toldFogType = 0;\n\t\t\tsceneFogType = 0;\n\n\t\t}\n\n\n\t\t// update positions and sort\n\n\t\tfor ( var i = 0, l = sprites.length; i < l; i ++ ) {\n\n\t\t\tvar sprite = sprites[ i ];\n\n\t\t\tsprite.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, sprite.matrixWorld );\n\t\t\tsprite.z = - sprite.modelViewMatrix.elements[ 14 ];\n\n\t\t}\n\n\t\tsprites.sort( painterSortStable );\n\n\t\t// render all sprites\n\n\t\tvar scale = [];\n\t\tvar center = [];\n\n\t\tfor ( var i = 0, l = sprites.length; i < l; i ++ ) {\n\n\t\t\tvar sprite = sprites[ i ];\n\t\t\tvar material = sprite.material;\n\n\t\t\tif ( material.visible === false ) continue;\n\n\t\t\tsprite.onBeforeRender( renderer, scene, camera, undefined, material, undefined );\n\n\t\t\tgl.uniform1f( uniforms.alphaTest, material.alphaTest );\n\t\t\tgl.uniformMatrix4fv( uniforms.modelViewMatrix, false, sprite.modelViewMatrix.elements );\n\n\t\t\tsprite.matrixWorld.decompose( spritePosition, spriteRotation, spriteScale );\n\n\t\t\tscale[ 0 ] = spriteScale.x;\n\t\t\tscale[ 1 ] = spriteScale.y;\n\n\t\t\tcenter[ 0 ] = sprite.center.x - 0.5;\n\t\t\tcenter[ 1 ] = sprite.center.y - 0.5;\n\n\t\t\tvar fogType = 0;\n\n\t\t\tif ( scene.fog && material.fog ) {\n\n\t\t\t\tfogType = sceneFogType;\n\n\t\t\t}\n\n\t\t\tif ( oldFogType !== fogType ) {\n\n\t\t\t\tgl.uniform1i( uniforms.fogType, fogType );\n\t\t\t\toldFogType = fogType;\n\n\t\t\t}\n\n\t\t\tif ( material.map !== null ) {\n\n\t\t\t\tgl.uniform2f( uniforms.uvOffset, material.map.offset.x, material.map.offset.y );\n\t\t\t\tgl.uniform2f( uniforms.uvScale, material.map.repeat.x, material.map.repeat.y );\n\n\t\t\t} else {\n\n\t\t\t\tgl.uniform2f( uniforms.uvOffset, 0, 0 );\n\t\t\t\tgl.uniform2f( uniforms.uvScale, 1, 1 );\n\n\t\t\t}\n\n\t\t\tgl.uniform1f( uniforms.opacity, material.opacity );\n\t\t\tgl.uniform3f( uniforms.color, material.color.r, material.color.g, material.color.b );\n\n\t\t\tgl.uniform1f( uniforms.rotation, material.rotation );\n\t\t\tgl.uniform2fv( uniforms.center, center );\n\t\t\tgl.uniform2fv( uniforms.scale, scale );\n\n\t\t\tstate.setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha );\n\t\t\tstate.buffers.depth.setTest( material.depthTest );\n\t\t\tstate.buffers.depth.setMask( material.depthWrite );\n\t\t\tstate.buffers.color.setMask( material.colorWrite );\n\n\t\t\ttextures.setTexture2D( material.map || texture, 0 );\n\n\t\t\tgl.drawElements( gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 );\n\n\t\t\tsprite.onAfterRender( renderer, scene, camera, undefined, material, undefined );\n\n\t\t}\n\n\t\t// restore gl\n\n\t\tstate.enable( gl.CULL_FACE );\n\n\t\tstate.reset();\n\n\t};\n\n\tfunction createProgram() {\n\n\t\tvar program = gl.createProgram();\n\n\t\tvar vertexShader = gl.createShader( gl.VERTEX_SHADER );\n\t\tvar fragmentShader = gl.createShader( gl.FRAGMENT_SHADER );\n\n\t\tgl.shaderSource( vertexShader, [\n\n\t\t\t'precision ' + capabilities.precision + ' float;',\n\n\t\t\t'#define SHADER_NAME ' + 'SpriteMaterial',\n\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform float rotation;',\n\t\t\t'uniform vec2 center;',\n\t\t\t'uniform vec2 scale;',\n\t\t\t'uniform vec2 uvOffset;',\n\t\t\t'uniform vec2 uvScale;',\n\n\t\t\t'attribute vec2 position;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'varying vec2 vUV;',\n\t\t\t'varying float fogDepth;',\n\n\t\t\t'void main() {',\n\n\t\t\t'\tvUV = uvOffset + uv * uvScale;',\n\n\t\t\t'\tvec2 alignedPosition = ( position - center ) * scale;',\n\n\t\t\t'\tvec2 rotatedPosition;',\n\t\t\t'\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;',\n\t\t\t'\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;',\n\n\t\t\t'\tvec4 mvPosition;',\n\n\t\t\t'\tmvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );',\n\t\t\t'\tmvPosition.xy += rotatedPosition;',\n\n\t\t\t'\tgl_Position = projectionMatrix * mvPosition;',\n\n\t\t\t'\tfogDepth = - mvPosition.z;',\n\n\t\t\t'}'\n\n\t\t].join( '\\n' ) );\n\n\t\tgl.shaderSource( fragmentShader, [\n\n\t\t\t'precision ' + capabilities.precision + ' float;',\n\n\t\t\t'#define SHADER_NAME ' + 'SpriteMaterial',\n\n\t\t\t'uniform vec3 color;',\n\t\t\t'uniform sampler2D map;',\n\t\t\t'uniform float opacity;',\n\n\t\t\t'uniform int fogType;',\n\t\t\t'uniform vec3 fogColor;',\n\t\t\t'uniform float fogDensity;',\n\t\t\t'uniform float fogNear;',\n\t\t\t'uniform float fogFar;',\n\t\t\t'uniform float alphaTest;',\n\n\t\t\t'varying vec2 vUV;',\n\t\t\t'varying float fogDepth;',\n\n\t\t\t'void main() {',\n\n\t\t\t'\tvec4 texture = texture2D( map, vUV );',\n\n\t\t\t'\tgl_FragColor = vec4( color * texture.xyz, texture.a * opacity );',\n\n\t\t\t'\tif ( gl_FragColor.a < alphaTest ) discard;',\n\n\t\t\t'\tif ( fogType > 0 ) {',\n\n\t\t\t'\t\tfloat fogFactor = 0.0;',\n\n\t\t\t'\t\tif ( fogType == 1 ) {',\n\n\t\t\t'\t\t\tfogFactor = smoothstep( fogNear, fogFar, fogDepth );',\n\n\t\t\t'\t\t} else {',\n\n\t\t\t'\t\t\tconst float LOG2 = 1.442695;',\n\t\t\t'\t\t\tfogFactor = exp2( - fogDensity * fogDensity * fogDepth * fogDepth * LOG2 );',\n\t\t\t'\t\t\tfogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );',\n\n\t\t\t'\t\t}',\n\n\t\t\t'\t\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );',\n\n\t\t\t'\t}',\n\n\t\t\t'}'\n\n\t\t].join( '\\n' ) );\n\n\t\tgl.compileShader( vertexShader );\n\t\tgl.compileShader( fragmentShader );\n\n\t\tgl.attachShader( program, vertexShader );\n\t\tgl.attachShader( program, fragmentShader );\n\n\t\tgl.linkProgram( program );\n\n\t\treturn program;\n\n\t}\n\n\tfunction painterSortStable( a, b ) {\n\n\t\tif ( a.renderOrder !== b.renderOrder ) {\n\n\t\t\treturn a.renderOrder - b.renderOrder;\n\n\t\t} else if ( a.z !== b.z ) {\n\n\t\t\treturn b.z - a.z;\n\n\t\t} else {\n\n\t\t\treturn b.id - a.id;\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLState( gl, extensions, utils ) {\n\n\tfunction ColorBuffer() {\n\n\t\tvar locked = false;\n\n\t\tvar color = new Vector4();\n\t\tvar currentColorMask = null;\n\t\tvar currentColorClear = new Vector4( 0, 0, 0, 0 );\n\n\t\treturn {\n\n\t\t\tsetMask: function ( colorMask ) {\n\n\t\t\t\tif ( currentColorMask !== colorMask && ! locked ) {\n\n\t\t\t\t\tgl.colorMask( colorMask, colorMask, colorMask, colorMask );\n\t\t\t\t\tcurrentColorMask = colorMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( r, g, b, a, premultipliedAlpha ) {\n\n\t\t\t\tif ( premultipliedAlpha === true ) {\n\n\t\t\t\t\tr *= a; g *= a; b *= a;\n\n\t\t\t\t}\n\n\t\t\t\tcolor.set( r, g, b, a );\n\n\t\t\t\tif ( currentColorClear.equals( color ) === false ) {\n\n\t\t\t\t\tgl.clearColor( r, g, b, a );\n\t\t\t\t\tcurrentColorClear.copy( color );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentColorMask = null;\n\t\t\t\tcurrentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction DepthBuffer() {\n\n\t\tvar locked = false;\n\n\t\tvar currentDepthMask = null;\n\t\tvar currentDepthFunc = null;\n\t\tvar currentDepthClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( depthTest ) {\n\n\t\t\t\tif ( depthTest ) {\n\n\t\t\t\t\tenable( gl.DEPTH_TEST );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( gl.DEPTH_TEST );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( depthMask ) {\n\n\t\t\t\tif ( currentDepthMask !== depthMask && ! locked ) {\n\n\t\t\t\t\tgl.depthMask( depthMask );\n\t\t\t\t\tcurrentDepthMask = depthMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( depthFunc ) {\n\n\t\t\t\tif ( currentDepthFunc !== depthFunc ) {\n\n\t\t\t\t\tif ( depthFunc ) {\n\n\t\t\t\t\t\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\t\tcase NeverDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.NEVER );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase AlwaysDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.ALWAYS );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.LESS );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase EqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.EQUAL );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.GEQUAL );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.GREATER );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase NotEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.NOTEQUAL );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentDepthFunc = depthFunc;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( depth ) {\n\n\t\t\t\tif ( currentDepthClear !== depth ) {\n\n\t\t\t\t\tgl.clearDepth( depth );\n\t\t\t\t\tcurrentDepthClear = depth;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentDepthMask = null;\n\t\t\t\tcurrentDepthFunc = null;\n\t\t\t\tcurrentDepthClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction StencilBuffer() {\n\n\t\tvar locked = false;\n\n\t\tvar currentStencilMask = null;\n\t\tvar currentStencilFunc = null;\n\t\tvar currentStencilRef = null;\n\t\tvar currentStencilFuncMask = null;\n\t\tvar currentStencilFail = null;\n\t\tvar currentStencilZFail = null;\n\t\tvar currentStencilZPass = null;\n\t\tvar currentStencilClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( stencilTest ) {\n\n\t\t\t\tif ( stencilTest ) {\n\n\t\t\t\t\tenable( gl.STENCIL_TEST );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( gl.STENCIL_TEST );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( stencilMask ) {\n\n\t\t\t\tif ( currentStencilMask !== stencilMask && ! locked ) {\n\n\t\t\t\t\tgl.stencilMask( stencilMask );\n\t\t\t\t\tcurrentStencilMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( stencilFunc, stencilRef, stencilMask ) {\n\n\t\t\t\tif ( currentStencilFunc !== stencilFunc ||\n\t\t\t\t     currentStencilRef \t!== stencilRef \t||\n\t\t\t\t     currentStencilFuncMask !== stencilMask ) {\n\n\t\t\t\t\tgl.stencilFunc( stencilFunc, stencilRef, stencilMask );\n\n\t\t\t\t\tcurrentStencilFunc = stencilFunc;\n\t\t\t\t\tcurrentStencilRef = stencilRef;\n\t\t\t\t\tcurrentStencilFuncMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetOp: function ( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\t\t\tif ( currentStencilFail\t !== stencilFail \t||\n\t\t\t\t     currentStencilZFail !== stencilZFail ||\n\t\t\t\t     currentStencilZPass !== stencilZPass ) {\n\n\t\t\t\t\tgl.stencilOp( stencilFail, stencilZFail, stencilZPass );\n\n\t\t\t\t\tcurrentStencilFail = stencilFail;\n\t\t\t\t\tcurrentStencilZFail = stencilZFail;\n\t\t\t\t\tcurrentStencilZPass = stencilZPass;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( stencil ) {\n\n\t\t\t\tif ( currentStencilClear !== stencil ) {\n\n\t\t\t\t\tgl.clearStencil( stencil );\n\t\t\t\t\tcurrentStencilClear = stencil;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentStencilMask = null;\n\t\t\t\tcurrentStencilFunc = null;\n\t\t\t\tcurrentStencilRef = null;\n\t\t\t\tcurrentStencilFuncMask = null;\n\t\t\t\tcurrentStencilFail = null;\n\t\t\t\tcurrentStencilZFail = null;\n\t\t\t\tcurrentStencilZPass = null;\n\t\t\t\tcurrentStencilClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t//\n\n\tvar colorBuffer = new ColorBuffer();\n\tvar depthBuffer = new DepthBuffer();\n\tvar stencilBuffer = new StencilBuffer();\n\n\tvar maxVertexAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );\n\tvar newAttributes = new Uint8Array( maxVertexAttributes );\n\tvar enabledAttributes = new Uint8Array( maxVertexAttributes );\n\tvar attributeDivisors = new Uint8Array( maxVertexAttributes );\n\n\tvar capabilities = {};\n\n\tvar compressedTextureFormats = null;\n\n\tvar currentProgram = null;\n\n\tvar currentBlending = null;\n\tvar currentBlendEquation = null;\n\tvar currentBlendSrc = null;\n\tvar currentBlendDst = null;\n\tvar currentBlendEquationAlpha = null;\n\tvar currentBlendSrcAlpha = null;\n\tvar currentBlendDstAlpha = null;\n\tvar currentPremultipledAlpha = false;\n\n\tvar currentFlipSided = null;\n\tvar currentCullFace = null;\n\n\tvar currentLineWidth = null;\n\n\tvar currentPolygonOffsetFactor = null;\n\tvar currentPolygonOffsetUnits = null;\n\n\tvar maxTextures = gl.getParameter( gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS );\n\n\tvar lineWidthAvailable = false;\n\tvar version = 0;\n\tvar glVersion = gl.getParameter( gl.VERSION );\n\n\tif ( glVersion.indexOf( 'WebGL' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^WebGL\\ ([0-9])/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 1.0 );\n\n\t} else if ( glVersion.indexOf( 'OpenGL ES' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^OpenGL\\ ES\\ ([0-9])/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 2.0 );\n\n\t}\n\n\tvar currentTextureSlot = null;\n\tvar currentBoundTextures = {};\n\n\tvar currentScissor = new Vector4();\n\tvar currentViewport = new Vector4();\n\n\tfunction createTexture( type, target, count ) {\n\n\t\tvar data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\n\t\tvar texture = gl.createTexture();\n\n\t\tgl.bindTexture( type, texture );\n\t\tgl.texParameteri( type, gl.TEXTURE_MIN_FILTER, gl.NEAREST );\n\t\tgl.texParameteri( type, gl.TEXTURE_MAG_FILTER, gl.NEAREST );\n\n\t\tfor ( var i = 0; i < count; i ++ ) {\n\n\t\t\tgl.texImage2D( target + i, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, data );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tvar emptyTextures = {};\n\temptyTextures[ gl.TEXTURE_2D ] = createTexture( gl.TEXTURE_2D, gl.TEXTURE_2D, 1 );\n\temptyTextures[ gl.TEXTURE_CUBE_MAP ] = createTexture( gl.TEXTURE_CUBE_MAP, gl.TEXTURE_CUBE_MAP_POSITIVE_X, 6 );\n\n\t// init\n\n\tcolorBuffer.setClear( 0, 0, 0, 1 );\n\tdepthBuffer.setClear( 1 );\n\tstencilBuffer.setClear( 0 );\n\n\tenable( gl.DEPTH_TEST );\n\tdepthBuffer.setFunc( LessEqualDepth );\n\n\tsetFlipSided( false );\n\tsetCullFace( CullFaceBack );\n\tenable( gl.CULL_FACE );\n\n\tenable( gl.BLEND );\n\tsetBlending( NormalBlending );\n\n\t//\n\n\tfunction initAttributes() {\n\n\t\tfor ( var i = 0, l = newAttributes.length; i < l; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\tfunction enableAttribute( attribute ) {\n\n\t\tenableAttributeAndDivisor( attribute, 0 );\n\n\t}\n\n\tfunction enableAttributeAndDivisor( attribute, meshPerAttribute ) {\n\n\t\tnewAttributes[ attribute ] = 1;\n\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t}\n\n\t\tif ( attributeDivisors[ attribute ] !== meshPerAttribute ) {\n\n\t\t\tvar extension = extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\textension.vertexAttribDivisorANGLE( attribute, meshPerAttribute );\n\t\t\tattributeDivisors[ attribute ] = meshPerAttribute;\n\n\t\t}\n\n\t}\n\n\tfunction disableUnusedAttributes() {\n\n\t\tfor ( var i = 0, l = enabledAttributes.length; i !== l; ++ i ) {\n\n\t\t\tif ( enabledAttributes[ i ] !== newAttributes[ i ] ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction enable( id ) {\n\n\t\tif ( capabilities[ id ] !== true ) {\n\n\t\t\tgl.enable( id );\n\t\t\tcapabilities[ id ] = true;\n\n\t\t}\n\n\t}\n\n\tfunction disable( id ) {\n\n\t\tif ( capabilities[ id ] !== false ) {\n\n\t\t\tgl.disable( id );\n\t\t\tcapabilities[ id ] = false;\n\n\t\t}\n\n\t}\n\n\tfunction getCompressedTextureFormats() {\n\n\t\tif ( compressedTextureFormats === null ) {\n\n\t\t\tcompressedTextureFormats = [];\n\n\t\t\tif ( extensions.get( 'WEBGL_compressed_texture_pvrtc' ) ||\n\t\t\t     extensions.get( 'WEBGL_compressed_texture_s3tc' ) ||\n\t\t\t     extensions.get( 'WEBGL_compressed_texture_etc1' ) ||\n\t\t\t     extensions.get( 'WEBGL_compressed_texture_astc' ) ) {\n\n\t\t\t\tvar formats = gl.getParameter( gl.COMPRESSED_TEXTURE_FORMATS );\n\n\t\t\t\tfor ( var i = 0; i < formats.length; i ++ ) {\n\n\t\t\t\t\tcompressedTextureFormats.push( formats[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn compressedTextureFormats;\n\n\t}\n\n\tfunction useProgram( program ) {\n\n\t\tif ( currentProgram !== program ) {\n\n\t\t\tgl.useProgram( program );\n\n\t\t\tcurrentProgram = program;\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) {\n\n\t\tif ( blending !== NoBlending ) {\n\n\t\t\tenable( gl.BLEND );\n\n\t\t} else {\n\n\t\t\tdisable( gl.BLEND );\n\n\t\t}\n\n\t\tif ( blending !== CustomBlending ) {\n\n\t\t\tif ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {\n\n\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\tcase AdditiveBlending:\n\n\t\t\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ONE, gl.ONE, gl.ONE, gl.ONE );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgl.blendEquation( gl.FUNC_ADD );\n\t\t\t\t\t\t\tgl.blendFunc( gl.SRC_ALPHA, gl.ONE );\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase SubtractiveBlending:\n\n\t\t\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ONE_MINUS_SRC_ALPHA );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgl.blendEquation( gl.FUNC_ADD );\n\t\t\t\t\t\t\tgl.blendFunc( gl.ZERO, gl.ONE_MINUS_SRC_COLOR );\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase MultiplyBlending:\n\n\t\t\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.SRC_COLOR, gl.ZERO, gl.SRC_ALPHA );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgl.blendEquation( gl.FUNC_ADD );\n\t\t\t\t\t\t\tgl.blendFunc( gl.ZERO, gl.SRC_COLOR );\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ONE, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tcurrentBlendEquation = null;\n\t\t\tcurrentBlendSrc = null;\n\t\t\tcurrentBlendDst = null;\n\t\t\tcurrentBlendEquationAlpha = null;\n\t\t\tcurrentBlendSrcAlpha = null;\n\t\t\tcurrentBlendDstAlpha = null;\n\n\t\t} else {\n\n\t\t\tblendEquationAlpha = blendEquationAlpha || blendEquation;\n\t\t\tblendSrcAlpha = blendSrcAlpha || blendSrc;\n\t\t\tblendDstAlpha = blendDstAlpha || blendDst;\n\n\t\t\tif ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) {\n\n\t\t\t\tgl.blendEquationSeparate( utils.convert( blendEquation ), utils.convert( blendEquationAlpha ) );\n\n\t\t\t\tcurrentBlendEquation = blendEquation;\n\t\t\t\tcurrentBlendEquationAlpha = blendEquationAlpha;\n\n\t\t\t}\n\n\t\t\tif ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) {\n\n\t\t\t\tgl.blendFuncSeparate( utils.convert( blendSrc ), utils.convert( blendDst ), utils.convert( blendSrcAlpha ), utils.convert( blendDstAlpha ) );\n\n\t\t\t\tcurrentBlendSrc = blendSrc;\n\t\t\t\tcurrentBlendDst = blendDst;\n\t\t\t\tcurrentBlendSrcAlpha = blendSrcAlpha;\n\t\t\t\tcurrentBlendDstAlpha = blendDstAlpha;\n\n\t\t\t}\n\n\t\t}\n\n\t\tcurrentBlending = blending;\n\t\tcurrentPremultipledAlpha = premultipliedAlpha;\n\n\t}\n\n\tfunction setMaterial( material, frontFaceCW ) {\n\n\t\tmaterial.side === DoubleSide\n\t\t\t? disable( gl.CULL_FACE )\n\t\t\t: enable( gl.CULL_FACE );\n\n\t\tvar flipSided = ( material.side === BackSide );\n\t\tif ( frontFaceCW ) flipSided = ! flipSided;\n\n\t\tsetFlipSided( flipSided );\n\n\t\t( material.blending === NormalBlending && material.transparent === false )\n\t\t\t? setBlending( NoBlending )\n\t\t\t: setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha );\n\n\t\tdepthBuffer.setFunc( material.depthFunc );\n\t\tdepthBuffer.setTest( material.depthTest );\n\t\tdepthBuffer.setMask( material.depthWrite );\n\t\tcolorBuffer.setMask( material.colorWrite );\n\n\t\tsetPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\n\n\t}\n\n\t//\n\n\tfunction setFlipSided( flipSided ) {\n\n\t\tif ( currentFlipSided !== flipSided ) {\n\n\t\t\tif ( flipSided ) {\n\n\t\t\t\tgl.frontFace( gl.CW );\n\n\t\t\t} else {\n\n\t\t\t\tgl.frontFace( gl.CCW );\n\n\t\t\t}\n\n\t\t\tcurrentFlipSided = flipSided;\n\n\t\t}\n\n\t}\n\n\tfunction setCullFace( cullFace ) {\n\n\t\tif ( cullFace !== CullFaceNone ) {\n\n\t\t\tenable( gl.CULL_FACE );\n\n\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\tif ( cullFace === CullFaceBack ) {\n\n\t\t\t\t\tgl.cullFace( gl.BACK );\n\n\t\t\t\t} else if ( cullFace === CullFaceFront ) {\n\n\t\t\t\t\tgl.cullFace( gl.FRONT );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.cullFace( gl.FRONT_AND_BACK );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( gl.CULL_FACE );\n\n\t\t}\n\n\t\tcurrentCullFace = cullFace;\n\n\t}\n\n\tfunction setLineWidth( width ) {\n\n\t\tif ( width !== currentLineWidth ) {\n\n\t\t\tif ( lineWidthAvailable ) gl.lineWidth( width );\n\n\t\t\tcurrentLineWidth = width;\n\n\t\t}\n\n\t}\n\n\tfunction setPolygonOffset( polygonOffset, factor, units ) {\n\n\t\tif ( polygonOffset ) {\n\n\t\t\tenable( gl.POLYGON_OFFSET_FILL );\n\n\t\t\tif ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) {\n\n\t\t\t\tgl.polygonOffset( factor, units );\n\n\t\t\t\tcurrentPolygonOffsetFactor = factor;\n\t\t\t\tcurrentPolygonOffsetUnits = units;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( gl.POLYGON_OFFSET_FILL );\n\n\t\t}\n\n\t}\n\n\tfunction setScissorTest( scissorTest ) {\n\n\t\tif ( scissorTest ) {\n\n\t\t\tenable( gl.SCISSOR_TEST );\n\n\t\t} else {\n\n\t\t\tdisable( gl.SCISSOR_TEST );\n\n\t\t}\n\n\t}\n\n\t// texture\n\n\tfunction activeTexture( webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) webglSlot = gl.TEXTURE0 + maxTextures - 1;\n\n\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\tgl.activeTexture( webglSlot );\n\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t}\n\n\t}\n\n\tfunction bindTexture( webglType, webglTexture ) {\n\n\t\tif ( currentTextureSlot === null ) {\n\n\t\t\tactiveTexture();\n\n\t\t}\n\n\t\tvar boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture === undefined ) {\n\n\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\tcurrentBoundTextures[ currentTextureSlot ] = boundTexture;\n\n\t\t}\n\n\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\n\n\t\t\tgl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );\n\n\t\t\tboundTexture.type = webglType;\n\t\t\tboundTexture.texture = webglTexture;\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction scissor( scissor ) {\n\n\t\tif ( currentScissor.equals( scissor ) === false ) {\n\n\t\t\tgl.scissor( scissor.x, scissor.y, scissor.z, scissor.w );\n\t\t\tcurrentScissor.copy( scissor );\n\n\t\t}\n\n\t}\n\n\tfunction viewport( viewport ) {\n\n\t\tif ( currentViewport.equals( viewport ) === false ) {\n\n\t\t\tgl.viewport( viewport.x, viewport.y, viewport.z, viewport.w );\n\t\t\tcurrentViewport.copy( viewport );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction reset() {\n\n\t\tfor ( var i = 0; i < enabledAttributes.length; i ++ ) {\n\n\t\t\tif ( enabledAttributes[ i ] === 1 ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tcapabilities = {};\n\n\t\tcompressedTextureFormats = null;\n\n\t\tcurrentTextureSlot = null;\n\t\tcurrentBoundTextures = {};\n\n\t\tcurrentProgram = null;\n\n\t\tcurrentBlending = null;\n\n\t\tcurrentFlipSided = null;\n\t\tcurrentCullFace = null;\n\n\t\tcolorBuffer.reset();\n\t\tdepthBuffer.reset();\n\t\tstencilBuffer.reset();\n\n\t}\n\n\treturn {\n\n\t\tbuffers: {\n\t\t\tcolor: colorBuffer,\n\t\t\tdepth: depthBuffer,\n\t\t\tstencil: stencilBuffer\n\t\t},\n\n\t\tinitAttributes: initAttributes,\n\t\tenableAttribute: enableAttribute,\n\t\tenableAttributeAndDivisor: enableAttributeAndDivisor,\n\t\tdisableUnusedAttributes: disableUnusedAttributes,\n\t\tenable: enable,\n\t\tdisable: disable,\n\t\tgetCompressedTextureFormats: getCompressedTextureFormats,\n\n\t\tuseProgram: useProgram,\n\n\t\tsetBlending: setBlending,\n\t\tsetMaterial: setMaterial,\n\n\t\tsetFlipSided: setFlipSided,\n\t\tsetCullFace: setCullFace,\n\n\t\tsetLineWidth: setLineWidth,\n\t\tsetPolygonOffset: setPolygonOffset,\n\n\t\tsetScissorTest: setScissorTest,\n\n\t\tactiveTexture: activeTexture,\n\t\tbindTexture: bindTexture,\n\t\tcompressedTexImage2D: compressedTexImage2D,\n\t\ttexImage2D: texImage2D,\n\n\t\tscissor: scissor,\n\t\tviewport: viewport,\n\n\t\treset: reset\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {\n\n\tvar _isWebGL2 = ( typeof WebGL2RenderingContext !== 'undefined' && _gl instanceof WebGL2RenderingContext ); /* global WebGL2RenderingContext */\n\tvar _videoTextures = {};\n\tvar _canvas;\n\n\t//\n\n\tfunction clampToMaxSize( image, maxSize ) {\n\n\t\tif ( image.width > maxSize || image.height > maxSize ) {\n\n\t\t\tif ( 'data' in image ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: image in DataTexture is too big (' + image.width + 'x' + image.height + ').' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\t// Warning: Scaling through the canvas will only work with images that use\n\t\t\t// premultiplied alpha.\n\n\t\t\tvar scale = maxSize / Math.max( image.width, image.height );\n\n\t\t\tvar canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\t\t\tcanvas.width = Math.floor( image.width * scale );\n\t\t\tcanvas.height = Math.floor( image.height * scale );\n\n\t\t\tvar context = canvas.getContext( '2d' );\n\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height, 0, 0, canvas.width, canvas.height );\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: image is too big (' + image.width + 'x' + image.height + '). Resized to ' + canvas.width + 'x' + canvas.height, image );\n\n\t\t\treturn canvas;\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction isPowerOfTwo( image ) {\n\n\t\treturn _Math.isPowerOfTwo( image.width ) && _Math.isPowerOfTwo( image.height );\n\n\t}\n\n\tfunction makePowerOfTwo( image ) {\n\n\t\tif ( image instanceof HTMLImageElement || image instanceof HTMLCanvasElement || image instanceof ImageBitmap ) {\n\n\t\t\tif ( _canvas === undefined ) _canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\n\t\t\t_canvas.width = _Math.floorPowerOfTwo( image.width );\n\t\t\t_canvas.height = _Math.floorPowerOfTwo( image.height );\n\n\t\t\tvar context = _canvas.getContext( '2d' );\n\t\t\tcontext.drawImage( image, 0, 0, _canvas.width, _canvas.height );\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: image is not power of two (' + image.width + 'x' + image.height + '). Resized to ' + _canvas.width + 'x' + _canvas.height, image );\n\n\t\t\treturn _canvas;\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction textureNeedsPowerOfTwo( texture ) {\n\n\t\treturn ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) ||\n\t\t\t( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter );\n\n\t}\n\n\tfunction textureNeedsGenerateMipmaps( texture, isPowerOfTwo ) {\n\n\t\treturn texture.generateMipmaps && isPowerOfTwo &&\n\t\t\ttexture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n\n\t}\n\n\tfunction generateMipmap( target, texture, width, height ) {\n\n\t\t_gl.generateMipmap( target );\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\t// Note: Math.log( x ) * Math.LOG2E used instead of Math.log2( x ) which is not supported by IE11\n\t\ttextureProperties.__maxMipLevel = Math.log( Math.max( width, height ) ) * Math.LOG2E;\n\n\t}\n\n\t// Fallback filters for non-power-of-2 textures\n\n\tfunction filterFallback( f ) {\n\n\t\tif ( f === NearestFilter || f === NearestMipMapNearestFilter || f === NearestMipMapLinearFilter ) {\n\n\t\t\treturn _gl.NEAREST;\n\n\t\t}\n\n\t\treturn _gl.LINEAR;\n\n\t}\n\n\t//\n\n\tfunction onTextureDispose( event ) {\n\n\t\tvar texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tdeallocateTexture( texture );\n\n\t\tif ( texture.isVideoTexture ) {\n\n\t\t\tdelete _videoTextures[ texture.id ];\n\n\t\t}\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\tfunction onRenderTargetDispose( event ) {\n\n\t\tvar renderTarget = event.target;\n\n\t\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tdeallocateRenderTarget( renderTarget );\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\t//\n\n\tfunction deallocateTexture( texture ) {\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\tif ( texture.image && textureProperties.__image__webglTextureCube ) {\n\n\t\t\t// cube texture\n\n\t\t\t_gl.deleteTexture( textureProperties.__image__webglTextureCube );\n\n\t\t} else {\n\n\t\t\t// 2D texture\n\n\t\t\tif ( textureProperties.__webglInit === undefined ) return;\n\n\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t}\n\n\t\t// remove all webgl properties\n\t\tproperties.remove( texture );\n\n\t}\n\n\tfunction deallocateRenderTarget( renderTarget ) {\n\n\t\tvar renderTargetProperties = properties.get( renderTarget );\n\t\tvar textureProperties = properties.get( renderTarget.texture );\n\n\t\tif ( ! renderTarget ) return;\n\n\t\tif ( textureProperties.__webglTexture !== undefined ) {\n\n\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t}\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\trenderTarget.depthTexture.dispose();\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLRenderTargetCube ) {\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\n\n\t\t}\n\n\t\tproperties.remove( renderTarget.texture );\n\t\tproperties.remove( renderTarget );\n\n\t}\n\n\t//\n\n\n\n\tfunction setTexture2D( texture, slot ) {\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\tif ( texture.isVideoTexture ) updateVideoTexture( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tvar image = texture.image;\n\n\t\t\tif ( image === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is undefined', texture );\n\n\t\t\t} else if ( image.complete === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete', texture );\n\n\t\t\t} else {\n\n\t\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\tstate.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTextureCube( texture, slot ) {\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\tif ( texture.image.length === 6 ) {\n\n\t\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\t\tif ( ! textureProperties.__image__webglTextureCube ) {\n\n\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\ttextureProperties.__image__webglTextureCube = _gl.createTexture();\n\n\t\t\t\t\tinfo.memory.textures ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__image__webglTextureCube );\n\n\t\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );\n\n\t\t\t\tvar isCompressed = ( texture && texture.isCompressedTexture );\n\t\t\t\tvar isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );\n\n\t\t\t\tvar cubeImage = [];\n\n\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\t\t\tcubeImage[ i ] = clampToMaxSize( texture.image[ i ], capabilities.maxCubemapSize );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tvar image = cubeImage[ 0 ],\n\t\t\t\t\tisPowerOfTwoImage = isPowerOfTwo( image ),\n\t\t\t\t\tglFormat = utils.convert( texture.format ),\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\tsetTextureParameters( _gl.TEXTURE_CUBE_MAP, texture, isPowerOfTwoImage );\n\n\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( ! isCompressed ) {\n\n\t\t\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glFormat, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tvar mipmap, mipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\t\t\tfor ( var j = 0, jl = mipmaps.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tmipmap = mipmaps[ j ];\n\n\t\t\t\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\t\t\t\tif ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! isCompressed ) {\n\n\t\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t\t}\n\n\t\t\t\tif ( textureNeedsGenerateMipmaps( texture, isPowerOfTwoImage ) ) {\n\n\t\t\t\t\t// We assume images for cube map have the same size.\n\t\t\t\t\tgenerateMipmap( _gl.TEXTURE_CUBE_MAP, texture, image.width, image.height );\n\n\t\t\t\t}\n\n\t\t\t\ttextureProperties.__version = texture.version;\n\n\t\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t\t} else {\n\n\t\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__image__webglTextureCube );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction setTextureCubeDynamic( texture, slot ) {\n\n\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, properties.get( texture ).__webglTexture );\n\n\t}\n\n\tfunction setTextureParameters( textureType, texture, isPowerOfTwoImage ) {\n\n\t\tvar extension;\n\n\t\tif ( isPowerOfTwoImage ) {\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, utils.convert( texture.wrapS ) );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_T, utils.convert( texture.wrapT ) );\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MAG_FILTER, utils.convert( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MIN_FILTER, utils.convert( texture.minFilter ) );\n\n\t\t} else {\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, _gl.CLAMP_TO_EDGE );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_T, _gl.CLAMP_TO_EDGE );\n\n\t\t\tif ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.', texture );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MAG_FILTER, filterFallback( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MIN_FILTER, filterFallback( texture.minFilter ) );\n\n\t\t\tif ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.', texture );\n\n\t\t\t}\n\n\t\t}\n\n\t\textension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension ) {\n\n\t\t\tif ( texture.type === FloatType && extensions.get( 'OES_texture_float_linear' ) === null ) return;\n\t\t\tif ( texture.type === HalfFloatType && extensions.get( 'OES_texture_half_float_linear' ) === null ) return;\n\n\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\n\n\t\t\t\t_gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );\n\t\t\t\tproperties.get( texture ).__currentAnisotropy = texture.anisotropy;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\tif ( textureProperties.__webglInit === undefined ) {\n\n\t\t\ttextureProperties.__webglInit = true;\n\n\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\tinfo.memory.textures ++;\n\n\t\t}\n\n\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\tstate.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture );\n\n\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );\n\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha );\n\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, texture.unpackAlignment );\n\n\t\tvar image = clampToMaxSize( texture.image, capabilities.maxTextureSize );\n\n\t\tif ( textureNeedsPowerOfTwo( texture ) && isPowerOfTwo( image ) === false ) {\n\n\t\t\timage = makePowerOfTwo( image );\n\n\t\t}\n\n\t\tvar isPowerOfTwoImage = isPowerOfTwo( image ),\n\t\t\tglFormat = utils.convert( texture.format ),\n\t\t\tglType = utils.convert( texture.type );\n\n\t\tsetTextureParameters( _gl.TEXTURE_2D, texture, isPowerOfTwoImage );\n\n\t\tvar mipmap, mipmaps = texture.mipmaps;\n\n\t\tif ( texture.isDepthTexture ) {\n\n\t\t\t// populate depth texture with dummy data\n\n\t\t\tvar internalFormat = _gl.DEPTH_COMPONENT;\n\n\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\tif ( ! _isWebGL2 ) throw new Error( 'Float Depth Texture only supported in WebGL2.0' );\n\t\t\t\tinternalFormat = _gl.DEPTH_COMPONENT32F;\n\n\t\t\t} else if ( _isWebGL2 ) {\n\n\t\t\t\t// WebGL 2.0 requires signed internalformat for glTexImage2D\n\t\t\t\tinternalFormat = _gl.DEPTH_COMPONENT16;\n\n\t\t\t}\n\n\t\t\tif ( texture.format === DepthFormat && internalFormat === _gl.DEPTH_COMPONENT ) {\n\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t// DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tif ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' );\n\n\t\t\t\t\ttexture.type = UnsignedShortType;\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Depth stencil textures need the DEPTH_STENCIL internal format\n\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\tif ( texture.format === DepthStencilFormat ) {\n\n\t\t\t\tinternalFormat = _gl.DEPTH_STENCIL;\n\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t// DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL.\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tif ( texture.type !== UnsignedInt248Type ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' );\n\n\t\t\t\t\ttexture.type = UnsignedInt248Type;\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, internalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t} else if ( texture.isDataTexture ) {\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && isPowerOfTwoImage ) {\n\n\t\t\t\tfor ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glFormat, image.width, image.height, 0, glFormat, glType, image.data );\n\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t}\n\n\t\t} else if ( texture.isCompressedTexture ) {\n\n\t\t\tfor ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\tif ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) {\n\n\t\t\t\t\t\tstate.compressedTexImage2D( _gl.TEXTURE_2D, i, glFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t} else {\n\n\t\t\t// regular Texture (image, video, canvas)\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && isPowerOfTwoImage ) {\n\n\t\t\t\tfor ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glFormat, glFormat, glType, mipmap );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glFormat, glFormat, glType, image );\n\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, isPowerOfTwoImage ) ) {\n\n\t\t\tgenerateMipmap( _gl.TEXTURE_2D, texture, image.width, image.height );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t}\n\n\t// Render targets\n\n\t// Setup storage for target texture and bind it to correct framebuffer\n\tfunction setupFrameBufferTexture( framebuffer, renderTarget, attachment, textureTarget ) {\n\n\t\tvar glFormat = utils.convert( renderTarget.texture.format );\n\t\tvar glType = utils.convert( renderTarget.texture.type );\n\t\tstate.texImage2D( textureTarget, 0, glFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null );\n\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, attachment, textureTarget, properties.get( renderTarget.texture ).__webglTexture, 0 );\n\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t}\n\n\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n\tfunction setupRenderBufferStorage( renderbuffer, renderTarget ) {\n\n\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, renderbuffer );\n\n\t\tif ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {\n\n\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.DEPTH_COMPONENT16, renderTarget.width, renderTarget.height );\n\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer );\n\n\t\t} else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) {\n\n\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.DEPTH_STENCIL, renderTarget.width, renderTarget.height );\n\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer );\n\n\t\t} else {\n\n\t\t\t// FIXME: We don't support !depth !stencil\n\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.RGBA4, renderTarget.width, renderTarget.height );\n\n\t\t}\n\n\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, null );\n\n\t}\n\n\t// Setup resources for a Depth Texture for a FBO (needs an extension)\n\tfunction setupDepthTexture( framebuffer, renderTarget ) {\n\n\t\tvar isCube = ( renderTarget && renderTarget.isWebGLRenderTargetCube );\n\t\tif ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' );\n\n\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\tif ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) {\n\n\t\t\tthrow new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' );\n\n\t\t}\n\n\t\t// upload an empty depth texture with framebuffer size\n\t\tif ( ! properties.get( renderTarget.depthTexture ).__webglTexture ||\n\t\t\t\trenderTarget.depthTexture.image.width !== renderTarget.width ||\n\t\t\t\trenderTarget.depthTexture.image.height !== renderTarget.height ) {\n\n\t\t\trenderTarget.depthTexture.image.width = renderTarget.width;\n\t\t\trenderTarget.depthTexture.image.height = renderTarget.height;\n\t\t\trenderTarget.depthTexture.needsUpdate = true;\n\n\t\t}\n\n\t\tsetTexture2D( renderTarget.depthTexture, 0 );\n\n\t\tvar webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;\n\n\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0 );\n\n\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0 );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Unknown depthTexture format' );\n\n\t\t}\n\n\t}\n\n\t// Setup GL resources for a non-texture depth buffer\n\tfunction setupDepthRenderbuffer( renderTarget ) {\n\n\t\tvar renderTargetProperties = properties.get( renderTarget );\n\n\t\tvar isCube = ( renderTarget.isWebGLRenderTargetCube === true );\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\tif ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' );\n\n\t\t\tsetupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );\n\n\t\t} else {\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = [];\n\n\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t}\n\n\t// Set up GL resources for the render target\n\tfunction setupRenderTarget( renderTarget ) {\n\n\t\tvar renderTargetProperties = properties.get( renderTarget );\n\t\tvar textureProperties = properties.get( renderTarget.texture );\n\n\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\n\n\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\tinfo.memory.textures ++;\n\n\t\tvar isCube = ( renderTarget.isWebGLRenderTargetCube === true );\n\t\tvar isTargetPowerOfTwo = isPowerOfTwo( renderTarget );\n\n\t\t// Setup framebuffer\n\n\t\tif ( isCube ) {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t}\n\n\t\t// Setup color buffer\n\n\t\tif ( isCube ) {\n\n\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( _gl.TEXTURE_CUBE_MAP, renderTarget.texture, isTargetPowerOfTwo );\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i );\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( renderTarget.texture, isTargetPowerOfTwo ) ) {\n\n\t\t\t\tgenerateMipmap( _gl.TEXTURE_CUBE_MAP, renderTarget.texture, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, null );\n\n\t\t} else {\n\n\t\t\tstate.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( _gl.TEXTURE_2D, renderTarget.texture, isTargetPowerOfTwo );\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D );\n\n\t\t\tif ( textureNeedsGenerateMipmaps( renderTarget.texture, isTargetPowerOfTwo ) ) {\n\n\t\t\t\tgenerateMipmap( _gl.TEXTURE_2D, renderTarget.texture, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( _gl.TEXTURE_2D, null );\n\n\t\t}\n\n\t\t// Setup depth and stencil buffers\n\n\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\tfunction updateRenderTargetMipmap( renderTarget ) {\n\n\t\tvar texture = renderTarget.texture;\n\t\tvar isTargetPowerOfTwo = isPowerOfTwo( renderTarget );\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, isTargetPowerOfTwo ) ) {\n\n\t\t\tvar target = renderTarget.isWebGLRenderTargetCube ? _gl.TEXTURE_CUBE_MAP : _gl.TEXTURE_2D;\n\t\t\tvar webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\tstate.bindTexture( target, webglTexture );\n\t\t\tgenerateMipmap( target, texture, renderTarget.width, renderTarget.height );\n\t\t\tstate.bindTexture( target, null );\n\n\t\t}\n\n\t}\n\n\tfunction updateVideoTexture( texture ) {\n\n\t\tvar id = texture.id;\n\t\tvar frame = info.render.frame;\n\n\t\t// Check the last frame we updated the VideoTexture\n\n\t\tif ( _videoTextures[ id ] !== frame ) {\n\n\t\t\t_videoTextures[ id ] = frame;\n\t\t\ttexture.update();\n\n\t\t}\n\n\t}\n\n\tthis.setTexture2D = setTexture2D;\n\tthis.setTextureCube = setTextureCube;\n\tthis.setTextureCubeDynamic = setTextureCubeDynamic;\n\tthis.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\n}\n\n/**\n * @author thespite / http://www.twitter.com/thespite\n */\n\nfunction WebGLUtils( gl, extensions ) {\n\n\tfunction convert( p ) {\n\n\t\tvar extension;\n\n\t\tif ( p === RepeatWrapping ) return gl.REPEAT;\n\t\tif ( p === ClampToEdgeWrapping ) return gl.CLAMP_TO_EDGE;\n\t\tif ( p === MirroredRepeatWrapping ) return gl.MIRRORED_REPEAT;\n\n\t\tif ( p === NearestFilter ) return gl.NEAREST;\n\t\tif ( p === NearestMipMapNearestFilter ) return gl.NEAREST_MIPMAP_NEAREST;\n\t\tif ( p === NearestMipMapLinearFilter ) return gl.NEAREST_MIPMAP_LINEAR;\n\n\t\tif ( p === LinearFilter ) return gl.LINEAR;\n\t\tif ( p === LinearMipMapNearestFilter ) return gl.LINEAR_MIPMAP_NEAREST;\n\t\tif ( p === LinearMipMapLinearFilter ) return gl.LINEAR_MIPMAP_LINEAR;\n\n\t\tif ( p === UnsignedByteType ) return gl.UNSIGNED_BYTE;\n\t\tif ( p === UnsignedShort4444Type ) return gl.UNSIGNED_SHORT_4_4_4_4;\n\t\tif ( p === UnsignedShort5551Type ) return gl.UNSIGNED_SHORT_5_5_5_1;\n\t\tif ( p === UnsignedShort565Type ) return gl.UNSIGNED_SHORT_5_6_5;\n\n\t\tif ( p === ByteType ) return gl.BYTE;\n\t\tif ( p === ShortType ) return gl.SHORT;\n\t\tif ( p === UnsignedShortType ) return gl.UNSIGNED_SHORT;\n\t\tif ( p === IntType ) return gl.INT;\n\t\tif ( p === UnsignedIntType ) return gl.UNSIGNED_INT;\n\t\tif ( p === FloatType ) return gl.FLOAT;\n\n\t\tif ( p === HalfFloatType ) {\n\n\t\t\textension = extensions.get( 'OES_texture_half_float' );\n\n\t\t\tif ( extension !== null ) return extension.HALF_FLOAT_OES;\n\n\t\t}\n\n\t\tif ( p === AlphaFormat ) return gl.ALPHA;\n\t\tif ( p === RGBFormat ) return gl.RGB;\n\t\tif ( p === RGBAFormat ) return gl.RGBA;\n\t\tif ( p === LuminanceFormat ) return gl.LUMINANCE;\n\t\tif ( p === LuminanceAlphaFormat ) return gl.LUMINANCE_ALPHA;\n\t\tif ( p === DepthFormat ) return gl.DEPTH_COMPONENT;\n\t\tif ( p === DepthStencilFormat ) return gl.DEPTH_STENCIL;\n\n\t\tif ( p === AddEquation ) return gl.FUNC_ADD;\n\t\tif ( p === SubtractEquation ) return gl.FUNC_SUBTRACT;\n\t\tif ( p === ReverseSubtractEquation ) return gl.FUNC_REVERSE_SUBTRACT;\n\n\t\tif ( p === ZeroFactor ) return gl.ZERO;\n\t\tif ( p === OneFactor ) return gl.ONE;\n\t\tif ( p === SrcColorFactor ) return gl.SRC_COLOR;\n\t\tif ( p === OneMinusSrcColorFactor ) return gl.ONE_MINUS_SRC_COLOR;\n\t\tif ( p === SrcAlphaFactor ) return gl.SRC_ALPHA;\n\t\tif ( p === OneMinusSrcAlphaFactor ) return gl.ONE_MINUS_SRC_ALPHA;\n\t\tif ( p === DstAlphaFactor ) return gl.DST_ALPHA;\n\t\tif ( p === OneMinusDstAlphaFactor ) return gl.ONE_MINUS_DST_ALPHA;\n\n\t\tif ( p === DstColorFactor ) return gl.DST_COLOR;\n\t\tif ( p === OneMinusDstColorFactor ) return gl.ONE_MINUS_DST_COLOR;\n\t\tif ( p === SrcAlphaSaturateFactor ) return gl.SRC_ALPHA_SATURATE;\n\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format ||\n\t\t\tp === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format ||\n\t\t\tp === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_ETC1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc1' );\n\n\t\t\tif ( extension !== null ) return extension.COMPRESSED_RGB_ETC1_WEBGL;\n\n\t\t}\n\n\t\tif ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format ||\n\t\t\tp === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format ||\n\t\t\tp === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format ||\n\t\t\tp === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format ||\n\t\t\tp === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_astc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn p;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === MinEquation || p === MaxEquation ) {\n\n\t\t\textension = extensions.get( 'EXT_blend_minmax' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === MinEquation ) return extension.MIN_EXT;\n\t\t\t\tif ( p === MaxEquation ) return extension.MAX_EXT;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === UnsignedInt248Type ) {\n\n\t\t\textension = extensions.get( 'WEBGL_depth_texture' );\n\n\t\t\tif ( extension !== null ) return extension.UNSIGNED_INT_24_8_WEBGL;\n\n\t\t}\n\n\t\treturn 0;\n\n\t}\n\n\treturn { convert: convert };\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Group() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Group';\n\n}\n\nGroup.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Group,\n\n\tisGroup: true\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author greggman / http://games.greggman.com/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author tschw\n */\n\nfunction PerspectiveCamera( fov, aspect, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'PerspectiveCamera';\n\n\tthis.fov = fov !== undefined ? fov : 50;\n\tthis.zoom = 1;\n\n\tthis.near = near !== undefined ? near : 0.1;\n\tthis.far = far !== undefined ? far : 2000;\n\tthis.focus = 10;\n\n\tthis.aspect = aspect !== undefined ? aspect : 1;\n\tthis.view = null;\n\n\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\tthis.updateProjectionMatrix();\n\n}\n\nPerspectiveCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: PerspectiveCamera,\n\n\tisPerspectiveCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tCamera.prototype.copy.call( this, source, recursive );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t},\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength: function ( focalLength ) {\n\n\t\t// see http://www.bobatkins.com/photography/technical/field_of_view.html\n\t\tvar vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = _Math.RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\t/**\n\t * Calculates the focal length from the current .fov and .filmGauge.\n\t */\n\tgetFocalLength: function () {\n\n\t\tvar vExtentSlope = Math.tan( _Math.DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t},\n\n\tgetEffectiveFOV: function () {\n\n\t\treturn _Math.RAD2DEG * 2 * Math.atan(\n\t\t\tMath.tan( _Math.DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t},\n\n\tgetFilmWidth: function () {\n\n\t\t// film not completely covered in portrait format (aspect < 1)\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t},\n\n\tgetFilmHeight: function () {\n\n\t\t// film not completely covered in landscape format (aspect > 1)\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t},\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t * the monitors are in grid like this\n\t *\n\t *   +---+---+---+\n\t *   | A | B | C |\n\t *   +---+---+---+\n\t *   | D | E | F |\n\t *   +---+---+---+\n\t *\n\t * then for each monitor you would call it like this\n\t *\n\t *   var w = 1920;\n\t *   var h = 1080;\n\t *   var fullWidth = w * 3;\n\t *   var fullHeight = h * 2;\n\t *\n\t *   --A--\n\t *   camera.setOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t *   --B--\n\t *   camera.setOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t *   --C--\n\t *   camera.setOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t *   --D--\n\t *   camera.setOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t *   --E--\n\t *   camera.setOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t *   --F--\n\t *   camera.setOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t *\n\t *   Note there is no reason monitors have to be the same size or in a grid.\n\t */\n\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tclearViewOffset: function () {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tupdateProjectionMatrix: function () {\n\n\t\tvar near = this.near,\n\t\t\ttop = near * Math.tan(\n\t\t\t\t_Math.DEG2RAD * 0.5 * this.fov ) / this.zoom,\n\t\t\theight = 2 * top,\n\t\t\twidth = this.aspect * height,\n\t\t\tleft = - 0.5 * width,\n\t\t\tview = this.view;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tvar fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tvar skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ArrayCamera( array ) {\n\n\tPerspectiveCamera.call( this );\n\n\tthis.cameras = array || [];\n\n}\n\nArrayCamera.prototype = Object.assign( Object.create( PerspectiveCamera.prototype ), {\n\n\tconstructor: ArrayCamera,\n\n\tisArrayCamera: true\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebVRManager( renderer ) {\n\n\tvar scope = this;\n\n\tvar device = null;\n\tvar frameData = null;\n\n\tvar poseTarget = null;\n\n\tvar controllers = [];\n\tvar standingMatrix = new Matrix4();\n\tvar standingMatrixInverse = new Matrix4();\n\n\tif ( typeof window !== 'undefined' && 'VRFrameData' in window ) {\n\n\t\tframeData = new window.VRFrameData();\n\t\twindow.addEventListener( 'vrdisplaypresentchange', onVRDisplayPresentChange, false );\n\n\t}\n\n\tvar matrixWorldInverse = new Matrix4();\n\tvar tempQuaternion = new Quaternion();\n\tvar tempPosition = new Vector3();\n\n\tvar cameraL = new PerspectiveCamera();\n\tcameraL.bounds = new Vector4( 0.0, 0.0, 0.5, 1.0 );\n\tcameraL.layers.enable( 1 );\n\n\tvar cameraR = new PerspectiveCamera();\n\tcameraR.bounds = new Vector4( 0.5, 0.0, 0.5, 1.0 );\n\tcameraR.layers.enable( 2 );\n\n\tvar cameraVR = new ArrayCamera( [ cameraL, cameraR ] );\n\tcameraVR.layers.enable( 1 );\n\tcameraVR.layers.enable( 2 );\n\n\t//\n\n\tfunction isPresenting() {\n\n\t\treturn device !== null && device.isPresenting === true;\n\n\t}\n\n\tvar currentSize, currentPixelRatio;\n\n\tfunction onVRDisplayPresentChange() {\n\n\t\tif ( isPresenting() ) {\n\n\t\t\tvar eyeParameters = device.getEyeParameters( 'left' );\n\t\t\tvar renderWidth = eyeParameters.renderWidth;\n\t\t\tvar renderHeight = eyeParameters.renderHeight;\n\n\t\t\tcurrentPixelRatio = renderer.getPixelRatio();\n\t\t\tcurrentSize = renderer.getSize();\n\n\t\t\trenderer.setDrawingBufferSize( renderWidth * 2, renderHeight, 1 );\n\n\t\t\tanimation.start();\n\n\t\t} else if ( scope.enabled ) {\n\n\t\t\trenderer.setDrawingBufferSize( currentSize.width, currentSize.height, currentPixelRatio );\n\n\t\t\tanimation.stop();\n\n\t\t}\n\n\t}\n\n\t//\n\n\tvar isTriggerPressed = false;\n\n\tfunction findGamepad( id ) {\n\n\t\tvar gamepads = navigator.getGamepads && navigator.getGamepads();\n\n\t\tfor ( var i = 0, j = 0, l = gamepads.length; i < l; i ++ ) {\n\n\t\t\tvar gamepad = gamepads[ i ];\n\n\t\t\tif ( gamepad && ( gamepad.id === 'Daydream Controller' ||\n\t\t\t\tgamepad.id === 'Gear VR Controller' || gamepad.id === 'Oculus Go Controller' ||\n\t\t\t\tgamepad.id === 'OpenVR Gamepad' || gamepad.id.startsWith( 'Oculus Touch' ) ||\n\t\t\t\tgamepad.id.startsWith( 'Spatial Controller' ) ) ) {\n\n\t\t\t\tif ( j === id ) return gamepad;\n\n\t\t\t\tj ++;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateControllers() {\n\n\t\tfor ( var i = 0; i < controllers.length; i ++ ) {\n\n\t\t\tvar controller = controllers[ i ];\n\n\t\t\tvar gamepad = findGamepad( i );\n\n\t\t\tif ( gamepad !== undefined && gamepad.pose !== undefined ) {\n\n\t\t\t\tif ( gamepad.pose === null ) return;\n\n\t\t\t\t//  Pose\n\n\t\t\t\tvar pose = gamepad.pose;\n\n\t\t\t\tif ( pose.hasPosition === false ) controller.position.set( 0.2, - 0.6, - 0.05 );\n\n\t\t\t\tif ( pose.position !== null ) controller.position.fromArray( pose.position );\n\t\t\t\tif ( pose.orientation !== null ) controller.quaternion.fromArray( pose.orientation );\n\t\t\t\tcontroller.matrix.compose( controller.position, controller.quaternion, controller.scale );\n\t\t\t\tcontroller.matrix.premultiply( standingMatrix );\n\t\t\t\tcontroller.matrix.decompose( controller.position, controller.quaternion, controller.scale );\n\t\t\t\tcontroller.matrixWorldNeedsUpdate = true;\n\t\t\t\tcontroller.visible = true;\n\n\t\t\t\t//  Trigger\n\n\t\t\t\tvar buttonId = gamepad.id === 'Daydream Controller' ? 0 : 1;\n\n\t\t\t\tif ( isTriggerPressed !== gamepad.buttons[ buttonId ].pressed ) {\n\n\t\t\t\t\tisTriggerPressed = gamepad.buttons[ buttonId ].pressed;\n\n\t\t\t\t\tif ( isTriggerPressed ) {\n\n\t\t\t\t\t\tcontroller.dispatchEvent( { type: 'selectstart' } );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tcontroller.dispatchEvent( { type: 'selectend' } );\n\t\t\t\t\t\tcontroller.dispatchEvent( { type: 'select' } );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tcontroller.visible = false;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t//\n\n\tthis.enabled = false;\n\tthis.userHeight = 1.6;\n\n\tthis.getController = function ( id ) {\n\n\t\tvar controller = controllers[ id ];\n\n\t\tif ( controller === undefined ) {\n\n\t\t\tcontroller = new Group();\n\t\t\tcontroller.matrixAutoUpdate = false;\n\t\t\tcontroller.visible = false;\n\n\t\t\tcontrollers[ id ] = controller;\n\n\t\t}\n\n\t\treturn controller;\n\n\t};\n\n\tthis.getDevice = function () {\n\n\t\treturn device;\n\n\t};\n\n\tthis.setDevice = function ( value ) {\n\n\t\tif ( value !== undefined ) device = value;\n\n\t\tanimation.setContext( value );\n\n\t};\n\n\tthis.setPoseTarget = function ( object ) {\n\n\t\tif ( object !== undefined ) poseTarget = object;\n\n\t};\n\n\tthis.getCamera = function ( camera ) {\n\n\t\tif ( device === null ) {\n\n\t\t\tcamera.position.set( 0, scope.userHeight, 0 );\n\t\t\treturn camera;\n\n\t\t}\n\n\t\tdevice.depthNear = camera.near;\n\t\tdevice.depthFar = camera.far;\n\n\t\tdevice.getFrameData( frameData );\n\n\t\t//\n\n\t\tvar stageParameters = device.stageParameters;\n\n\t\tif ( stageParameters ) {\n\n\t\t\tstandingMatrix.fromArray( stageParameters.sittingToStandingTransform );\n\n\t\t} else {\n\n\t\t\tstandingMatrix.makeTranslation( 0, scope.userHeight, 0 );\n\n\t\t}\n\n\n\t\tvar pose = frameData.pose;\n\t\tvar poseObject = poseTarget !== null ? poseTarget : camera;\n\n\t\t// We want to manipulate poseObject by its position and quaternion components since users may rely on them.\n\t\tposeObject.matrix.copy( standingMatrix );\n\t\tposeObject.matrix.decompose( poseObject.position, poseObject.quaternion, poseObject.scale );\n\n\t\tif ( pose.orientation !== null ) {\n\n\t\t\ttempQuaternion.fromArray( pose.orientation );\n\t\t\tposeObject.quaternion.multiply( tempQuaternion );\n\n\t\t}\n\n\t\tif ( pose.position !== null ) {\n\n\t\t\ttempQuaternion.setFromRotationMatrix( standingMatrix );\n\t\t\ttempPosition.fromArray( pose.position );\n\t\t\ttempPosition.applyQuaternion( tempQuaternion );\n\t\t\tposeObject.position.add( tempPosition );\n\n\t\t}\n\n\t\tposeObject.updateMatrixWorld();\n\n\t\tif ( device.isPresenting === false ) return camera;\n\n\t\t//\n\n\t\tcameraL.near = camera.near;\n\t\tcameraR.near = camera.near;\n\n\t\tcameraL.far = camera.far;\n\t\tcameraR.far = camera.far;\n\n\t\tcameraVR.matrixWorld.copy( camera.matrixWorld );\n\t\tcameraVR.matrixWorldInverse.copy( camera.matrixWorldInverse );\n\n\t\tcameraL.matrixWorldInverse.fromArray( frameData.leftViewMatrix );\n\t\tcameraR.matrixWorldInverse.fromArray( frameData.rightViewMatrix );\n\n\t\t// TODO (mrdoob) Double check this code\n\n\t\tstandingMatrixInverse.getInverse( standingMatrix );\n\n\t\tcameraL.matrixWorldInverse.multiply( standingMatrixInverse );\n\t\tcameraR.matrixWorldInverse.multiply( standingMatrixInverse );\n\n\t\tvar parent = poseObject.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tmatrixWorldInverse.getInverse( parent.matrixWorld );\n\n\t\t\tcameraL.matrixWorldInverse.multiply( matrixWorldInverse );\n\t\t\tcameraR.matrixWorldInverse.multiply( matrixWorldInverse );\n\n\t\t}\n\n\t\t// envMap and Mirror needs camera.matrixWorld\n\n\t\tcameraL.matrixWorld.getInverse( cameraL.matrixWorldInverse );\n\t\tcameraR.matrixWorld.getInverse( cameraR.matrixWorldInverse );\n\n\t\tcameraL.projectionMatrix.fromArray( frameData.leftProjectionMatrix );\n\t\tcameraR.projectionMatrix.fromArray( frameData.rightProjectionMatrix );\n\n\t\t// HACK (mrdoob)\n\t\t// https://github.com/w3c/webvr/issues/203\n\n\t\tcameraVR.projectionMatrix.copy( cameraL.projectionMatrix );\n\n\t\t//\n\n\t\tvar layers = device.getLayers();\n\n\t\tif ( layers.length ) {\n\n\t\t\tvar layer = layers[ 0 ];\n\n\t\t\tif ( layer.leftBounds !== null && layer.leftBounds.length === 4 ) {\n\n\t\t\t\tcameraL.bounds.fromArray( layer.leftBounds );\n\n\t\t\t}\n\n\t\t\tif ( layer.rightBounds !== null && layer.rightBounds.length === 4 ) {\n\n\t\t\t\tcameraR.bounds.fromArray( layer.rightBounds );\n\n\t\t\t}\n\n\t\t}\n\n\t\tupdateControllers();\n\n\t\treturn cameraVR;\n\n\t};\n\n\tthis.getStandingMatrix = function () {\n\n\t\treturn standingMatrix;\n\n\t};\n\n\tthis.isPresenting = isPresenting;\n\n\t// Animation Loop\n\n\tvar animation = new WebGLAnimation();\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tanimation.setAnimationLoop( callback );\n\n\t};\n\n\tthis.submitFrame = function () {\n\n\t\tif ( isPresenting() ) device.submitFrame();\n\n\t};\n\n\tthis.dispose = function () {\n\n\t\tif ( typeof window !== 'undefined' ) {\n\n\t\t\twindow.removeEventListener( 'vrdisplaypresentchange', onVRDisplayPresentChange );\n\n\t\t}\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebXRManager( renderer ) {\n\n\tvar gl = renderer.context;\n\n\tvar device = null;\n\tvar session = null;\n\n\tvar frameOfRef = null;\n\n\tvar pose = null;\n\n\tvar controllers = [];\n\tvar inputSources = [];\n\n\tfunction isPresenting() {\n\n\t\treturn session !== null && frameOfRef !== null;\n\n\n\t}\n\n\t//\n\n\tvar cameraL = new PerspectiveCamera();\n\tcameraL.layers.enable( 1 );\n\tcameraL.viewport = new Vector4();\n\n\tvar cameraR = new PerspectiveCamera();\n\tcameraR.layers.enable( 2 );\n\tcameraR.viewport = new Vector4();\n\n\tvar cameraVR = new ArrayCamera( [ cameraL, cameraR ] );\n\tcameraVR.layers.enable( 1 );\n\tcameraVR.layers.enable( 2 );\n\n\t//\n\n\tthis.enabled = false;\n\n\tthis.getController = function ( id ) {\n\n\t\tvar controller = controllers[ id ];\n\n\t\tif ( controller === undefined ) {\n\n\t\t\tcontroller = new Group();\n\t\t\tcontroller.matrixAutoUpdate = false;\n\t\t\tcontroller.visible = false;\n\n\t\t\tcontrollers[ id ] = controller;\n\n\t\t}\n\n\t\treturn controller;\n\n\t};\n\n\tthis.getDevice = function () {\n\n\t\treturn device;\n\n\t};\n\n\tthis.setDevice = function ( value ) {\n\n\t\tif ( value !== undefined ) device = value;\n\n\t\tgl.setCompatibleXRDevice( value );\n\n\t};\n\n\t//\n\n\tfunction onSessionEvent( event ) {\n\n\t\tvar controller = controllers[ inputSources.indexOf( event.inputSource ) ];\n\t\tif ( controller ) controller.dispatchEvent( { type: event.type } );\n\n\t}\n\n\tfunction onSessionEnd() {\n\n\t\trenderer.setFramebuffer( null );\n\t\tanimation.stop();\n\n\t}\n\n\tthis.setSession = function ( value, options ) {\n\n\t\tsession = value;\n\n\t\tif ( session !== null ) {\n\n\t\t\tsession.addEventListener( 'select', onSessionEvent );\n\t\t\tsession.addEventListener( 'selectstart', onSessionEvent );\n\t\t\tsession.addEventListener( 'selectend', onSessionEvent );\n\t\t\tsession.addEventListener( 'end', onSessionEnd );\n\n\t\t\tsession.baseLayer = new XRWebGLLayer( session, gl );\n\t\t\tsession.requestFrameOfReference( options.frameOfReferenceType ).then( function ( value ) {\n\n\t\t\t\tframeOfRef = value;\n\n\t\t\t\trenderer.setFramebuffer( session.baseLayer.framebuffer );\n\n\t\t\t\tanimation.setContext( session );\n\t\t\t\tanimation.start();\n\n\t\t\t} );\n\n\t\t\t//\n\n\t\t\tinputSources = session.getInputSources();\n\n\t\t\tsession.addEventListener( 'inputsourceschange', function () {\n\n\t\t\t\tinputSources = session.getInputSources();\n\t\t\t\tconsole.log( inputSources );\n\n\t\t\t} );\n\n\t\t}\n\n\t};\n\n\tfunction updateCamera( camera, parent ) {\n\n\t\tif ( parent === null ) {\n\n\t\t\tcamera.matrixWorld.copy( camera.matrix );\n\n\t\t} else {\n\n\t\t\tcamera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix );\n\n\t\t}\n\n\t\tcamera.matrixWorldInverse.getInverse( camera.matrixWorld );\n\n\t}\n\n\tthis.getCamera = function ( camera ) {\n\n\t\tif ( isPresenting() ) {\n\n\t\t\tvar parent = camera.parent;\n\t\t\tvar cameras = cameraVR.cameras;\n\n\t\t\t// apply camera.parent to cameraVR\n\n\t\t\tupdateCamera( cameraVR, parent );\n\n\t\t\tfor ( var i = 0; i < cameras.length; i ++ ) {\n\n\t\t\t\tupdateCamera( cameras[ i ], parent );\n\n\t\t\t}\n\n\t\t\t// update camera and its children\n\n\t\t\tcamera.matrixWorld.copy( cameraVR.matrixWorld );\n\n\t\t\tvar children = camera.children;\n\n\t\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tchildren[ i ].updateMatrixWorld( true );\n\n\t\t\t}\n\n\t\t\treturn cameraVR;\n\n\t\t}\n\n\t\treturn camera;\n\n\t};\n\n\tthis.isPresenting = isPresenting;\n\n\t// Animation Loop\n\n\tvar onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tpose = frame.getDevicePose( frameOfRef );\n\n\t\tif ( pose !== null ) {\n\n\t\t\tvar layer = session.baseLayer;\n\t\t\tvar views = frame.views;\n\n\t\t\tfor ( var i = 0; i < views.length; i ++ ) {\n\n\t\t\t\tvar view = views[ i ];\n\t\t\t\tvar viewport = layer.getViewport( view );\n\t\t\t\tvar viewMatrix = pose.getViewMatrix( view );\n\n\t\t\t\tvar camera = cameraVR.cameras[ i ];\n\t\t\t\tcamera.matrix.fromArray( viewMatrix ).getInverse( camera.matrix );\n\t\t\t\tcamera.projectionMatrix.fromArray( view.projectionMatrix );\n\t\t\t\tcamera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );\n\n\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\tcameraVR.matrix.copy( camera.matrix );\n\n\t\t\t\t\t// HACK (mrdoob)\n\t\t\t\t\t// https://github.com/w3c/webvr/issues/203\n\n\t\t\t\t\tcameraVR.projectionMatrix.copy( camera.projectionMatrix );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tfor ( var i = 0; i < controllers.length; i ++ ) {\n\n\t\t\tvar controller = controllers[ i ];\n\n\t\t\tvar inputSource = inputSources[ i ];\n\n\t\t\tif ( inputSource ) {\n\n\t\t\t\tvar inputPose = frame.getInputPose( inputSource, frameOfRef );\n\n\t\t\t\tif ( inputPose !== null ) {\n\n\t\t\t\t\tcontroller.matrix.elements = inputPose.pointerMatrix;\n\t\t\t\t\tcontroller.matrix.decompose( controller.position, controller.rotation, controller.scale );\n\t\t\t\t\tcontroller.visible = true;\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tcontroller.visible = false;\n\n\t\t}\n\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t}\n\n\tvar animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\n\t};\n\n\tthis.dispose = function () {};\n\n\t// DEPRECATED\n\n\tthis.getStandingMatrix = function () {\n\n\t\tconsole.warn( 'THREE.WebXRManager: getStandingMatrix() is no longer needed.' );\n\t\treturn new THREE.Matrix4();\n\n\t};\n\n\tthis.submitFrame = function () {};\n\n}\n\n/**\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n * @author tschw\n */\n\nfunction WebGLRenderer( parameters ) {\n\n\tconsole.log( 'THREE.WebGLRenderer', REVISION );\n\n\tparameters = parameters || {};\n\n\tvar _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ),\n\t\t_context = parameters.context !== undefined ? parameters.context : null,\n\n\t\t_alpha = parameters.alpha !== undefined ? parameters.alpha : false,\n\t\t_depth = parameters.depth !== undefined ? parameters.depth : true,\n\t\t_stencil = parameters.stencil !== undefined ? parameters.stencil : true,\n\t\t_antialias = parameters.antialias !== undefined ? parameters.antialias : false,\n\t\t_premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,\n\t\t_preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false,\n\t\t_powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default';\n\n\tvar currentRenderList = null;\n\tvar currentRenderState = null;\n\n\t// public properties\n\n\tthis.domElement = _canvas;\n\tthis.context = null;\n\n\t// clearing\n\n\tthis.autoClear = true;\n\tthis.autoClearColor = true;\n\tthis.autoClearDepth = true;\n\tthis.autoClearStencil = true;\n\n\t// scene graph\n\n\tthis.sortObjects = true;\n\n\t// user-defined clipping\n\n\tthis.clippingPlanes = [];\n\tthis.localClippingEnabled = false;\n\n\t// physically based shading\n\n\tthis.gammaFactor = 2.0;\t// for backwards compatibility\n\tthis.gammaInput = false;\n\tthis.gammaOutput = false;\n\n\t// physical lights\n\n\tthis.physicallyCorrectLights = false;\n\n\t// tone mapping\n\n\tthis.toneMapping = LinearToneMapping;\n\tthis.toneMappingExposure = 1.0;\n\tthis.toneMappingWhitePoint = 1.0;\n\n\t// morphs\n\n\tthis.maxMorphTargets = 8;\n\tthis.maxMorphNormals = 4;\n\n\t// internal properties\n\n\tvar _this = this,\n\n\t\t_isContextLost = false,\n\n\t\t// internal state cache\n\n\t\t_framebuffer = null,\n\n\t\t_currentRenderTarget = null,\n\t\t_currentFramebuffer = null,\n\t\t_currentMaterialId = - 1,\n\t\t_currentGeometryProgram = '',\n\n\t\t_currentCamera = null,\n\t\t_currentArrayCamera = null,\n\n\t\t_currentViewport = new Vector4(),\n\t\t_currentScissor = new Vector4(),\n\t\t_currentScissorTest = null,\n\n\t\t//\n\n\t\t_usedTextureUnits = 0,\n\n\t\t//\n\n\t\t_width = _canvas.width,\n\t\t_height = _canvas.height,\n\n\t\t_pixelRatio = 1,\n\n\t\t_viewport = new Vector4( 0, 0, _width, _height ),\n\t\t_scissor = new Vector4( 0, 0, _width, _height ),\n\t\t_scissorTest = false,\n\n\t\t// frustum\n\n\t\t_frustum = new Frustum(),\n\n\t\t// clipping\n\n\t\t_clipping = new WebGLClipping(),\n\t\t_clippingEnabled = false,\n\t\t_localClippingEnabled = false,\n\n\t\t// camera matrices cache\n\n\t\t_projScreenMatrix = new Matrix4(),\n\n\t\t_vector3 = new Vector3();\n\n\tfunction getTargetPixelRatio() {\n\n\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t}\n\n\t// initialize\n\n\tvar _gl;\n\n\ttry {\n\n\t\tvar contextAttributes = {\n\t\t\talpha: _alpha,\n\t\t\tdepth: _depth,\n\t\t\tstencil: _stencil,\n\t\t\tantialias: _antialias,\n\t\t\tpremultipliedAlpha: _premultipliedAlpha,\n\t\t\tpreserveDrawingBuffer: _preserveDrawingBuffer,\n\t\t\tpowerPreference: _powerPreference\n\t\t};\n\n\t\t// event listeners must be registered before WebGL context is created, see #12753\n\n\t\t_canvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.addEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\t_gl = _context || _canvas.getContext( 'webgl', contextAttributes ) || _canvas.getContext( 'experimental-webgl', contextAttributes );\n\n\t\tif ( _gl === null ) {\n\n\t\t\tif ( _canvas.getContext( 'webgl' ) !== null ) {\n\n\t\t\t\tthrow new Error( 'Error creating WebGL context with your selected attributes.' );\n\n\t\t\t} else {\n\n\t\t\t\tthrow new Error( 'Error creating WebGL context.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Some experimental-webgl implementations do not have getShaderPrecisionFormat\n\n\t\tif ( _gl.getShaderPrecisionFormat === undefined ) {\n\n\t\t\t_gl.getShaderPrecisionFormat = function () {\n\n\t\t\t\treturn { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };\n\n\t\t\t};\n\n\t\t}\n\n\t} catch ( error ) {\n\n\t\tconsole.error( 'THREE.WebGLRenderer: ' + error.message );\n\n\t}\n\n\tvar extensions, capabilities, state, info;\n\tvar properties, textures, attributes, geometries, objects;\n\tvar programCache, renderLists, renderStates;\n\n\tvar background, morphtargets, bufferRenderer, indexedBufferRenderer;\n\tvar spriteRenderer;\n\n\tvar utils;\n\n\tfunction initGLContext() {\n\n\t\textensions = new WebGLExtensions( _gl );\n\t\textensions.get( 'WEBGL_depth_texture' );\n\t\textensions.get( 'OES_texture_float' );\n\t\textensions.get( 'OES_texture_float_linear' );\n\t\textensions.get( 'OES_texture_half_float' );\n\t\textensions.get( 'OES_texture_half_float_linear' );\n\t\textensions.get( 'OES_standard_derivatives' );\n\t\textensions.get( 'OES_element_index_uint' );\n\t\textensions.get( 'ANGLE_instanced_arrays' );\n\n\t\tutils = new WebGLUtils( _gl, extensions );\n\n\t\tcapabilities = new WebGLCapabilities( _gl, extensions, parameters );\n\n\t\tstate = new WebGLState( _gl, extensions, utils );\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ) );\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ) );\n\n\t\tinfo = new WebGLInfo( _gl );\n\t\tproperties = new WebGLProperties();\n\t\ttextures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );\n\t\tattributes = new WebGLAttributes( _gl );\n\t\tgeometries = new WebGLGeometries( _gl, attributes, info );\n\t\tobjects = new WebGLObjects( geometries, info );\n\t\tmorphtargets = new WebGLMorphtargets( _gl );\n\t\tprogramCache = new WebGLPrograms( _this, extensions, capabilities );\n\t\trenderLists = new WebGLRenderLists();\n\t\trenderStates = new WebGLRenderStates();\n\n\t\tbackground = new WebGLBackground( _this, state, objects, _premultipliedAlpha );\n\n\t\tbufferRenderer = new WebGLBufferRenderer( _gl, extensions, info );\n\t\tindexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info );\n\n\t\tspriteRenderer = new WebGLSpriteRenderer( _this, _gl, state, textures, capabilities );\n\n\t\tinfo.programs = programCache.programs;\n\n\t\t_this.context = _gl;\n\t\t_this.capabilities = capabilities;\n\t\t_this.extensions = extensions;\n\t\t_this.properties = properties;\n\t\t_this.renderLists = renderLists;\n\t\t_this.state = state;\n\t\t_this.info = info;\n\n\t}\n\n\tinitGLContext();\n\n\t// vr\n\n\tvar vr = ( 'xr' in navigator ) ? new WebXRManager( _this ) : new WebVRManager( _this );\n\n\tthis.vr = vr;\n\n\t// shadow map\n\n\tvar shadowMap = new WebGLShadowMap( _this, objects, capabilities.maxTextureSize );\n\n\tthis.shadowMap = shadowMap;\n\n\t// API\n\n\tthis.getContext = function () {\n\n\t\treturn _gl;\n\n\t};\n\n\tthis.getContextAttributes = function () {\n\n\t\treturn _gl.getContextAttributes();\n\n\t};\n\n\tthis.forceContextLoss = function () {\n\n\t\tvar extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.loseContext();\n\n\t};\n\n\tthis.forceContextRestore = function () {\n\n\t\tvar extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.restoreContext();\n\n\t};\n\n\tthis.getPixelRatio = function () {\n\n\t\treturn _pixelRatio;\n\n\t};\n\n\tthis.setPixelRatio = function ( value ) {\n\n\t\tif ( value === undefined ) return;\n\n\t\t_pixelRatio = value;\n\n\t\tthis.setSize( _width, _height, false );\n\n\t};\n\n\tthis.getSize = function () {\n\n\t\treturn {\n\t\t\twidth: _width,\n\t\t\theight: _height\n\t\t};\n\n\t};\n\n\tthis.setSize = function ( width, height, updateStyle ) {\n\n\t\tif ( vr.isPresenting() ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Can\\'t change size while VR device is presenting.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_canvas.width = width * _pixelRatio;\n\t\t_canvas.height = height * _pixelRatio;\n\n\t\tif ( updateStyle !== false ) {\n\n\t\t\t_canvas.style.width = width + 'px';\n\t\t\t_canvas.style.height = height + 'px';\n\n\t\t}\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getDrawingBufferSize = function () {\n\n\t\treturn {\n\t\t\twidth: _width * _pixelRatio,\n\t\t\theight: _height * _pixelRatio\n\t\t};\n\n\t};\n\n\tthis.setDrawingBufferSize = function ( width, height, pixelRatio ) {\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_pixelRatio = pixelRatio;\n\n\t\t_canvas.width = width * pixelRatio;\n\t\t_canvas.height = height * pixelRatio;\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getCurrentViewport = function () {\n\n\t\treturn _currentViewport;\n\n\t};\n\n\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\t_viewport.set( x, _height - y - height, width, height );\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ) );\n\n\t};\n\n\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\t_scissor.set( x, _height - y - height, width, height );\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ) );\n\n\t};\n\n\tthis.setScissorTest = function ( boolean ) {\n\n\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t};\n\n\t// Clearing\n\n\tthis.getClearColor = function () {\n\n\t\treturn background.getClearColor();\n\n\t};\n\n\tthis.setClearColor = function () {\n\n\t\tbackground.setClearColor.apply( background, arguments );\n\n\t};\n\n\tthis.getClearAlpha = function () {\n\n\t\treturn background.getClearAlpha();\n\n\t};\n\n\tthis.setClearAlpha = function () {\n\n\t\tbackground.setClearAlpha.apply( background, arguments );\n\n\t};\n\n\tthis.clear = function ( color, depth, stencil ) {\n\n\t\tvar bits = 0;\n\n\t\tif ( color === undefined || color ) bits |= _gl.COLOR_BUFFER_BIT;\n\t\tif ( depth === undefined || depth ) bits |= _gl.DEPTH_BUFFER_BIT;\n\t\tif ( stencil === undefined || stencil ) bits |= _gl.STENCIL_BUFFER_BIT;\n\n\t\t_gl.clear( bits );\n\n\t};\n\n\tthis.clearColor = function () {\n\n\t\tthis.clear( true, false, false );\n\n\t};\n\n\tthis.clearDepth = function () {\n\n\t\tthis.clear( false, true, false );\n\n\t};\n\n\tthis.clearStencil = function () {\n\n\t\tthis.clear( false, false, true );\n\n\t};\n\n\tthis.clearTarget = function ( renderTarget, color, depth, stencil ) {\n\n\t\tthis.setRenderTarget( renderTarget );\n\t\tthis.clear( color, depth, stencil );\n\n\t};\n\n\t//\n\n\tthis.dispose = function () {\n\n\t\t_canvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\trenderLists.dispose();\n\t\trenderStates.dispose();\n\t\tproperties.dispose();\n\t\tobjects.dispose();\n\n\t\tvr.dispose();\n\n\t\tanimation.stop();\n\n\t};\n\n\t// Events\n\n\tfunction onContextLost( event ) {\n\n\t\tevent.preventDefault();\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Lost.' );\n\n\t\t_isContextLost = true;\n\n\t}\n\n\tfunction onContextRestore( /* event */ ) {\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Restored.' );\n\n\t\t_isContextLost = false;\n\n\t\tinitGLContext();\n\n\t}\n\n\tfunction onMaterialDispose( event ) {\n\n\t\tvar material = event.target;\n\n\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\tdeallocateMaterial( material );\n\n\t}\n\n\t// Buffer deallocation\n\n\tfunction deallocateMaterial( material ) {\n\n\t\treleaseMaterialProgramReference( material );\n\n\t\tproperties.remove( material );\n\n\t}\n\n\n\tfunction releaseMaterialProgramReference( material ) {\n\n\t\tvar programInfo = properties.get( material ).program;\n\n\t\tmaterial.program = undefined;\n\n\t\tif ( programInfo !== undefined ) {\n\n\t\t\tprogramCache.releaseProgram( programInfo );\n\n\t\t}\n\n\t}\n\n\t// Buffer rendering\n\n\tfunction renderObjectImmediate( object, program, material ) {\n\n\t\tobject.render( function ( object ) {\n\n\t\t\t_this.renderBufferImmediate( object, program, material );\n\n\t\t} );\n\n\t}\n\n\tthis.renderBufferImmediate = function ( object, program, material ) {\n\n\t\tstate.initAttributes();\n\n\t\tvar buffers = properties.get( object );\n\n\t\tif ( object.hasPositions && ! buffers.position ) buffers.position = _gl.createBuffer();\n\t\tif ( object.hasNormals && ! buffers.normal ) buffers.normal = _gl.createBuffer();\n\t\tif ( object.hasUvs && ! buffers.uv ) buffers.uv = _gl.createBuffer();\n\t\tif ( object.hasColors && ! buffers.color ) buffers.color = _gl.createBuffer();\n\n\t\tvar programAttributes = program.getAttributes();\n\n\t\tif ( object.hasPositions ) {\n\n\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.position );\n\t\t\t_gl.bufferData( _gl.ARRAY_BUFFER, object.positionArray, _gl.DYNAMIC_DRAW );\n\n\t\t\tstate.enableAttribute( programAttributes.position );\n\t\t\t_gl.vertexAttribPointer( programAttributes.position, 3, _gl.FLOAT, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasNormals ) {\n\n\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.normal );\n\n\t\t\tif ( ! material.isMeshPhongMaterial &&\n\t\t\t\t! material.isMeshStandardMaterial &&\n\t\t\t\t! material.isMeshNormalMaterial &&\n\t\t\t\tmaterial.flatShading === true ) {\n\n\t\t\t\tfor ( var i = 0, l = object.count * 3; i < l; i += 9 ) {\n\n\t\t\t\t\tvar array = object.normalArray;\n\n\t\t\t\t\tvar nx = ( array[ i + 0 ] + array[ i + 3 ] + array[ i + 6 ] ) / 3;\n\t\t\t\t\tvar ny = ( array[ i + 1 ] + array[ i + 4 ] + array[ i + 7 ] ) / 3;\n\t\t\t\t\tvar nz = ( array[ i + 2 ] + array[ i + 5 ] + array[ i + 8 ] ) / 3;\n\n\t\t\t\t\tarray[ i + 0 ] = nx;\n\t\t\t\t\tarray[ i + 1 ] = ny;\n\t\t\t\t\tarray[ i + 2 ] = nz;\n\n\t\t\t\t\tarray[ i + 3 ] = nx;\n\t\t\t\t\tarray[ i + 4 ] = ny;\n\t\t\t\t\tarray[ i + 5 ] = nz;\n\n\t\t\t\t\tarray[ i + 6 ] = nx;\n\t\t\t\t\tarray[ i + 7 ] = ny;\n\t\t\t\t\tarray[ i + 8 ] = nz;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_gl.bufferData( _gl.ARRAY_BUFFER, object.normalArray, _gl.DYNAMIC_DRAW );\n\n\t\t\tstate.enableAttribute( programAttributes.normal );\n\n\t\t\t_gl.vertexAttribPointer( programAttributes.normal, 3, _gl.FLOAT, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasUvs && material.map ) {\n\n\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.uv );\n\t\t\t_gl.bufferData( _gl.ARRAY_BUFFER, object.uvArray, _gl.DYNAMIC_DRAW );\n\n\t\t\tstate.enableAttribute( programAttributes.uv );\n\n\t\t\t_gl.vertexAttribPointer( programAttributes.uv, 2, _gl.FLOAT, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasColors && material.vertexColors !== NoColors ) {\n\n\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.color );\n\t\t\t_gl.bufferData( _gl.ARRAY_BUFFER, object.colorArray, _gl.DYNAMIC_DRAW );\n\n\t\t\tstate.enableAttribute( programAttributes.color );\n\n\t\t\t_gl.vertexAttribPointer( programAttributes.color, 3, _gl.FLOAT, false, 0, 0 );\n\n\t\t}\n\n\t\tstate.disableUnusedAttributes();\n\n\t\t_gl.drawArrays( _gl.TRIANGLES, 0, object.count );\n\n\t\tobject.count = 0;\n\n\t};\n\n\tthis.renderBufferDirect = function ( camera, fog, geometry, material, object, group ) {\n\n\t\tvar frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );\n\n\t\tstate.setMaterial( material, frontFaceCW );\n\n\t\tvar program = setProgram( camera, fog, material, object );\n\t\tvar geometryProgram = geometry.id + '_' + program.id + '_' + ( material.wireframe === true );\n\n\t\tvar updateBuffers = false;\n\n\t\tif ( geometryProgram !== _currentGeometryProgram ) {\n\n\t\t\t_currentGeometryProgram = geometryProgram;\n\t\t\tupdateBuffers = true;\n\n\t\t}\n\n\t\tif ( object.morphTargetInfluences ) {\n\n\t\t\tmorphtargets.update( object, geometry, material, program );\n\n\t\t\tupdateBuffers = true;\n\n\t\t}\n\n\t\t//\n\n\t\tvar index = geometry.index;\n\t\tvar position = geometry.attributes.position;\n\t\tvar rangeFactor = 1;\n\n\t\tif ( material.wireframe === true ) {\n\n\t\t\tindex = geometries.getWireframeAttribute( geometry );\n\t\t\trangeFactor = 2;\n\n\t\t}\n\n\t\tvar attribute;\n\t\tvar renderer = bufferRenderer;\n\n\t\tif ( index !== null ) {\n\n\t\t\tattribute = attributes.get( index );\n\n\t\t\trenderer = indexedBufferRenderer;\n\t\t\trenderer.setIndex( attribute );\n\n\t\t}\n\n\t\tif ( updateBuffers ) {\n\n\t\t\tsetupVertexAttributes( material, program, geometry );\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\t_gl.bindBuffer( _gl.ELEMENT_ARRAY_BUFFER, attribute.buffer );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tvar dataCount = Infinity;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdataCount = index.count;\n\n\t\t} else if ( position !== undefined ) {\n\n\t\t\tdataCount = position.count;\n\n\t\t}\n\n\t\tvar rangeStart = geometry.drawRange.start * rangeFactor;\n\t\tvar rangeCount = geometry.drawRange.count * rangeFactor;\n\n\t\tvar groupStart = group !== null ? group.start * rangeFactor : 0;\n\t\tvar groupCount = group !== null ? group.count * rangeFactor : Infinity;\n\n\t\tvar drawStart = Math.max( rangeStart, groupStart );\n\t\tvar drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1;\n\n\t\tvar drawCount = Math.max( 0, drawEnd - drawStart + 1 );\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\t//\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\trenderer.setMode( _gl.LINES );\n\n\t\t\t} else {\n\n\t\t\t\tswitch ( object.drawMode ) {\n\n\t\t\t\t\tcase TrianglesDrawMode:\n\t\t\t\t\t\trenderer.setMode( _gl.TRIANGLES );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase TriangleStripDrawMode:\n\t\t\t\t\t\trenderer.setMode( _gl.TRIANGLE_STRIP );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase TriangleFanDrawMode:\n\t\t\t\t\t\trenderer.setMode( _gl.TRIANGLE_FAN );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t} else if ( object.isLine ) {\n\n\t\t\tvar lineWidth = material.linewidth;\n\n\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\trenderer.setMode( _gl.LINES );\n\n\t\t\t} else if ( object.isLineLoop ) {\n\n\t\t\t\trenderer.setMode( _gl.LINE_LOOP );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( _gl.LINE_STRIP );\n\n\t\t\t}\n\n\t\t} else if ( object.isPoints ) {\n\n\t\t\trenderer.setMode( _gl.POINTS );\n\n\t\t}\n\n\t\tif ( geometry && geometry.isInstancedBufferGeometry ) {\n\n\t\t\tif ( geometry.maxInstancedCount > 0 ) {\n\n\t\t\t\trenderer.renderInstances( geometry, drawStart, drawCount );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t}\n\n\t};\n\n\tfunction setupVertexAttributes( material, program, geometry ) {\n\n\t\tif ( geometry && geometry.isInstancedBufferGeometry ) {\n\n\t\t\tif ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.initAttributes();\n\n\t\tvar geometryAttributes = geometry.attributes;\n\n\t\tvar programAttributes = program.getAttributes();\n\n\t\tvar materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\tfor ( var name in programAttributes ) {\n\n\t\t\tvar programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute >= 0 ) {\n\n\t\t\t\tvar geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute !== undefined ) {\n\n\t\t\t\t\tvar normalized = geometryAttribute.normalized;\n\t\t\t\t\tvar size = geometryAttribute.itemSize;\n\n\t\t\t\t\tvar attribute = attributes.get( geometryAttribute );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tvar buffer = attribute.buffer;\n\t\t\t\t\tvar type = attribute.type;\n\t\t\t\t\tvar bytesPerElement = attribute.bytesPerElement;\n\n\t\t\t\t\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tvar data = geometryAttribute.data;\n\t\t\t\t\t\tvar stride = data.stride;\n\t\t\t\t\t\tvar offset = geometryAttribute.offset;\n\n\t\t\t\t\t\tif ( data && data.isInstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\tstate.enableAttributeAndDivisor( programAttribute, data.meshPerAttribute );\n\n\t\t\t\t\t\t\tif ( geometry.maxInstancedCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry.maxInstancedCount = data.meshPerAttribute * data.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.enableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffer );\n\t\t\t\t\t\t_gl.vertexAttribPointer( programAttribute, size, type, normalized, stride * bytesPerElement, offset * bytesPerElement );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( geometryAttribute.isInstancedBufferAttribute ) {\n\n\t\t\t\t\t\t\tstate.enableAttributeAndDivisor( programAttribute, geometryAttribute.meshPerAttribute );\n\n\t\t\t\t\t\t\tif ( geometry.maxInstancedCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry.maxInstancedCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.enableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffer );\n\t\t\t\t\t\t_gl.vertexAttribPointer( programAttribute, size, type, normalized, 0, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( materialDefaultAttributeValues !== undefined ) {\n\n\t\t\t\t\tvar value = materialDefaultAttributeValues[ name ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\tswitch ( value.length ) {\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib2fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib3fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib4fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib1fv( programAttribute, value );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.disableUnusedAttributes();\n\n\t}\n\n\t// Compile\n\n\tthis.compile = function ( scene, camera ) {\n\n\t\tcurrentRenderState = renderStates.get( scene, camera );\n\t\tcurrentRenderState.init();\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tif ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t\tcurrentRenderState.setupLights( camera );\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tif ( object.material ) {\n\n\t\t\t\tif ( Array.isArray( object.material ) ) {\n\n\t\t\t\t\tfor ( var i = 0; i < object.material.length; i ++ ) {\n\n\t\t\t\t\t\tinitMaterial( object.material[ i ], scene.fog, object );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tinitMaterial( object.material, scene.fog, object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t};\n\n\t// Animation Loop\n\n\tvar onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time ) {\n\n\t\tif ( vr.isPresenting() ) return;\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t}\n\n\tvar animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tif ( typeof window !== 'undefined' ) animation.setContext( window );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\t\tvr.setAnimationLoop( callback );\n\n\t\tanimation.start();\n\n\t};\n\n\t// Rendering\n\n\tthis.render = function ( scene, camera, renderTarget, forceClear ) {\n\n\t\tif ( ! ( camera && camera.isCamera ) ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( _isContextLost ) return;\n\n\t\t// reset caching for this frame\n\n\t\t_currentGeometryProgram = '';\n\t\t_currentMaterialId = - 1;\n\t\t_currentCamera = null;\n\n\t\t// update scene graph\n\n\t\tif ( scene.autoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t// update camera matrices and frustum\n\n\t\tif ( camera.parent === null ) camera.updateMatrixWorld();\n\n\t\tif ( vr.enabled ) {\n\n\t\t\tcamera = vr.getCamera( camera );\n\n\t\t}\n\n\t\t//\n\n\t\tcurrentRenderState = renderStates.get( scene, camera );\n\t\tcurrentRenderState.init();\n\n\t\tscene.onBeforeRender( _this, scene, camera, renderTarget );\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t_frustum.setFromMatrix( _projScreenMatrix );\n\n\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t_clippingEnabled = _clipping.init( this.clippingPlanes, _localClippingEnabled, camera );\n\n\t\tcurrentRenderList = renderLists.get( scene, camera );\n\t\tcurrentRenderList.init();\n\n\t\tprojectObject( scene, camera, _this.sortObjects );\n\n\t\tif ( _this.sortObjects === true ) {\n\n\t\t\tcurrentRenderList.sort();\n\n\t\t}\n\n\t\t//\n\n\t\tif ( _clippingEnabled ) _clipping.beginShadows();\n\n\t\tvar shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tshadowMap.render( shadowsArray, scene, camera );\n\n\t\tcurrentRenderState.setupLights( camera );\n\n\t\tif ( _clippingEnabled ) _clipping.endShadows();\n\n\t\t//\n\n\t\tif ( this.info.autoReset ) this.info.reset();\n\n\t\tif ( renderTarget === undefined ) {\n\n\t\t\trenderTarget = null;\n\n\t\t}\n\n\t\tthis.setRenderTarget( renderTarget );\n\n\t\t//\n\n\t\tbackground.render( currentRenderList, scene, camera, forceClear );\n\n\t\t// render scene\n\n\t\tvar opaqueObjects = currentRenderList.opaque;\n\t\tvar transparentObjects = currentRenderList.transparent;\n\n\t\tif ( scene.overrideMaterial ) {\n\n\t\t\tvar overrideMaterial = scene.overrideMaterial;\n\n\t\t\tif ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera, overrideMaterial );\n\t\t\tif ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera, overrideMaterial );\n\n\t\t} else {\n\n\t\t\t// opaque pass (front-to-back order)\n\n\t\t\tif ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera );\n\n\t\t\t// transparent pass (back-to-front order)\n\n\t\t\tif ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera );\n\n\t\t}\n\n\t\t// custom renderers\n\n\t\tvar spritesArray = currentRenderState.state.spritesArray;\n\n\t\tspriteRenderer.render( spritesArray, scene, camera );\n\n\t\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\tif ( renderTarget ) {\n\n\t\t\ttextures.updateRenderTargetMipmap( renderTarget );\n\n\t\t}\n\n\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\tstate.buffers.depth.setTest( true );\n\t\tstate.buffers.depth.setMask( true );\n\t\tstate.buffers.color.setMask( true );\n\n\t\tstate.setPolygonOffset( false );\n\n\t\tscene.onAfterRender( _this, scene, camera );\n\n\t\tif ( vr.enabled ) {\n\n\t\t\tvr.submitFrame();\n\n\t\t}\n\n\t\t// _gl.finish();\n\n\t\tcurrentRenderList = null;\n\t\tcurrentRenderState = null;\n\n\t};\n\n\t/*\n\t// TODO Duplicated code (Frustum)\n\n\tvar _sphere = new Sphere();\n\n\tfunction isObjectViewable( object ) {\n\n\t\tvar geometry = object.geometry;\n\n\t\tif ( geometry.boundingSphere === null )\n\t\t\tgeometry.computeBoundingSphere();\n\n\t\t_sphere.copy( geometry.boundingSphere ).\n\t\tapplyMatrix4( object.matrixWorld );\n\n\t\treturn isSphereViewable( _sphere );\n\n\t}\n\n\tfunction isSpriteViewable( sprite ) {\n\n\t\t_sphere.center.set( 0, 0, 0 );\n\t\t_sphere.radius = 0.7071067811865476;\n\t\t_sphere.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn isSphereViewable( _sphere );\n\n\t}\n\n\tfunction isSphereViewable( sphere ) {\n\n\t\tif ( ! _frustum.intersectsSphere( sphere ) ) return false;\n\n\t\tvar numPlanes = _clipping.numPlanes;\n\n\t\tif ( numPlanes === 0 ) return true;\n\n\t\tvar planes = _this.clippingPlanes,\n\n\t\t\tcenter = sphere.center,\n\t\t\tnegRad = - sphere.radius,\n\t\t\ti = 0;\n\n\t\tdo {\n\n\t\t\t// out when deeper than radius in the negative halfspace\n\t\t\tif ( planes[ i ].distanceToPoint( center ) < negRad ) return false;\n\n\t\t} while ( ++ i !== numPlanes );\n\n\t\treturn true;\n\n\t}\n\t*/\n\n\tfunction projectObject( object, camera, sortObjects ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tvar visible = object.layers.test( camera.layers );\n\n\t\tif ( visible ) {\n\n\t\t\tif ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {\n\n\t\t\t\t\tcurrentRenderState.pushSprite( object );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isImmediateRenderObject ) {\n\n\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t}\n\n\t\t\t\tcurrentRenderList.push( object, null, object.material, _vector3.z, null );\n\n\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\t\tobject.skeleton.update();\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar geometry = objects.update( object );\n\t\t\t\t\tvar material = object.material;\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tvar groups = geometry.groups;\n\n\t\t\t\t\t\tfor ( var i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\tvar group = groups[ i ];\n\t\t\t\t\t\t\tvar groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, groupMaterial, _vector3.z, group );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar children = object.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tprojectObject( children[ i ], camera, sortObjects );\n\n\t\t}\n\n\t}\n\n\tfunction renderObjects( renderList, scene, camera, overrideMaterial ) {\n\n\t\tfor ( var i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\tvar renderItem = renderList[ i ];\n\n\t\t\tvar object = renderItem.object;\n\t\t\tvar geometry = renderItem.geometry;\n\t\t\tvar material = overrideMaterial === undefined ? renderItem.material : overrideMaterial;\n\t\t\tvar group = renderItem.group;\n\n\t\t\tif ( camera.isArrayCamera ) {\n\n\t\t\t\t_currentArrayCamera = camera;\n\n\t\t\t\tvar cameras = camera.cameras;\n\n\t\t\t\tfor ( var j = 0, jl = cameras.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar camera2 = cameras[ j ];\n\n\t\t\t\t\tif ( object.layers.test( camera2.layers ) ) {\n\n\t\t\t\t\t\tif ( 'viewport' in camera2 ) { // XR\n\n\t\t\t\t\t\t\tstate.viewport( _currentViewport.copy( camera2.viewport ) );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tvar bounds = camera2.bounds;\n\n\t\t\t\t\t\t\tvar x = bounds.x * _width;\n\t\t\t\t\t\t\tvar y = bounds.y * _height;\n\t\t\t\t\t\t\tvar width = bounds.z * _width;\n\t\t\t\t\t\t\tvar height = bounds.w * _height;\n\n\t\t\t\t\t\t\tstate.viewport( _currentViewport.set( x, y, width, height ).multiplyScalar( _pixelRatio ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\trenderObject( object, scene, camera2, geometry, material, group );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_currentArrayCamera = null;\n\n\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction renderObject( object, scene, camera, geometry, material, group ) {\n\n\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\t\tcurrentRenderState = renderStates.get( scene, _currentArrayCamera || camera );\n\n\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\tif ( object.isImmediateRenderObject ) {\n\n\t\t\tvar frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );\n\n\t\t\tstate.setMaterial( material, frontFaceCW );\n\n\t\t\tvar program = setProgram( camera, scene.fog, material, object );\n\n\t\t\t_currentGeometryProgram = '';\n\n\t\t\trenderObjectImmediate( object, program, material );\n\n\t\t} else {\n\n\t\t\t_this.renderBufferDirect( camera, scene.fog, geometry, material, object, group );\n\n\t\t}\n\n\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\t\tcurrentRenderState = renderStates.get( scene, _currentArrayCamera || camera );\n\n\t}\n\n\tfunction initMaterial( material, fog, object ) {\n\n\t\tvar materialProperties = properties.get( material );\n\n\t\tvar lights = currentRenderState.state.lights;\n\t\tvar shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tvar parameters = programCache.getParameters(\n\t\t\tmaterial, lights.state, shadowsArray, fog, _clipping.numPlanes, _clipping.numIntersection, object );\n\n\t\tvar code = programCache.getProgramCode( material, parameters );\n\n\t\tvar program = materialProperties.program;\n\t\tvar programChange = true;\n\n\t\tif ( program === undefined ) {\n\n\t\t\t// new material\n\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t} else if ( program.code !== code ) {\n\n\t\t\t// changed glsl or parameters\n\t\t\treleaseMaterialProgramReference( material );\n\n\t\t} else if ( materialProperties.lightsHash !== lights.state.hash ) {\n\n\t\t\tproperties.update( material, 'lightsHash', lights.state.hash );\n\t\t\tprogramChange = false;\n\n\t\t} else if ( parameters.shaderID !== undefined ) {\n\n\t\t\t// same glsl and uniform list\n\t\t\treturn;\n\n\t\t} else {\n\n\t\t\t// only rebuild uniform list\n\t\t\tprogramChange = false;\n\n\t\t}\n\n\t\tif ( programChange ) {\n\n\t\t\tif ( parameters.shaderID ) {\n\n\t\t\t\tvar shader = ShaderLib[ parameters.shaderID ];\n\n\t\t\t\tmaterialProperties.shader = {\n\t\t\t\t\tname: material.type,\n\t\t\t\t\tuniforms: UniformsUtils.clone( shader.uniforms ),\n\t\t\t\t\tvertexShader: shader.vertexShader,\n\t\t\t\t\tfragmentShader: shader.fragmentShader\n\t\t\t\t};\n\n\t\t\t} else {\n\n\t\t\t\tmaterialProperties.shader = {\n\t\t\t\t\tname: material.type,\n\t\t\t\t\tuniforms: material.uniforms,\n\t\t\t\t\tvertexShader: material.vertexShader,\n\t\t\t\t\tfragmentShader: material.fragmentShader\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tmaterial.onBeforeCompile( materialProperties.shader, _this );\n\n\t\t\tprogram = programCache.acquireProgram( material, materialProperties.shader, parameters, code );\n\n\t\t\tmaterialProperties.program = program;\n\t\t\tmaterial.program = program;\n\n\t\t}\n\n\t\tvar programAttributes = program.getAttributes();\n\n\t\tif ( material.morphTargets ) {\n\n\t\t\tmaterial.numSupportedMorphTargets = 0;\n\n\t\t\tfor ( var i = 0; i < _this.maxMorphTargets; i ++ ) {\n\n\t\t\t\tif ( programAttributes[ 'morphTarget' + i ] >= 0 ) {\n\n\t\t\t\t\tmaterial.numSupportedMorphTargets ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.morphNormals ) {\n\n\t\t\tmaterial.numSupportedMorphNormals = 0;\n\n\t\t\tfor ( var i = 0; i < _this.maxMorphNormals; i ++ ) {\n\n\t\t\t\tif ( programAttributes[ 'morphNormal' + i ] >= 0 ) {\n\n\t\t\t\t\tmaterial.numSupportedMorphNormals ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar uniforms = materialProperties.shader.uniforms;\n\n\t\tif ( ! material.isShaderMaterial &&\n\t\t\t! material.isRawShaderMaterial ||\n\t\t\tmaterial.clipping === true ) {\n\n\t\t\tmaterialProperties.numClippingPlanes = _clipping.numPlanes;\n\t\t\tmaterialProperties.numIntersection = _clipping.numIntersection;\n\t\t\tuniforms.clippingPlanes = _clipping.uniform;\n\n\t\t}\n\n\t\tmaterialProperties.fog = fog;\n\n\t\t// store the light setup it was created for\n\n\t\tmaterialProperties.lightsHash = lights.state.hash;\n\n\t\tif ( material.lights ) {\n\n\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\tuniforms.ambientLightColor.value = lights.state.ambient;\n\t\t\tuniforms.directionalLights.value = lights.state.directional;\n\t\t\tuniforms.spotLights.value = lights.state.spot;\n\t\t\tuniforms.rectAreaLights.value = lights.state.rectArea;\n\t\t\tuniforms.pointLights.value = lights.state.point;\n\t\t\tuniforms.hemisphereLights.value = lights.state.hemi;\n\n\t\t\tuniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n\t\t\tuniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n\t\t\tuniforms.spotShadowMap.value = lights.state.spotShadowMap;\n\t\t\tuniforms.spotShadowMatrix.value = lights.state.spotShadowMatrix;\n\t\t\tuniforms.pointShadowMap.value = lights.state.pointShadowMap;\n\t\t\tuniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n\t\t\t// TODO (abelnation): add area lights shadow info to uniforms\n\n\t\t}\n\n\t\tvar progUniforms = materialProperties.program.getUniforms(),\n\t\t\tuniformsList =\n\t\t\t\tWebGLUniforms.seqWithValue( progUniforms.seq, uniforms );\n\n\t\tmaterialProperties.uniformsList = uniformsList;\n\n\t}\n\n\tfunction setProgram( camera, fog, material, object ) {\n\n\t\t_usedTextureUnits = 0;\n\n\t\tvar materialProperties = properties.get( material );\n\t\tvar lights = currentRenderState.state.lights;\n\n\t\tif ( _clippingEnabled ) {\n\n\t\t\tif ( _localClippingEnabled || camera !== _currentCamera ) {\n\n\t\t\t\tvar useCache =\n\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t// (#8465, #8379)\n\t\t\t\t_clipping.setState(\n\t\t\t\t\tmaterial.clippingPlanes, material.clipIntersection, material.clipShadows,\n\t\t\t\t\tcamera, materialProperties, useCache );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.needsUpdate === false ) {\n\n\t\t\tif ( materialProperties.program === undefined ) {\n\n\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t} else if ( material.fog && materialProperties.fog !== fog ) {\n\n\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t} else if ( material.lights && materialProperties.lightsHash !== lights.state.hash ) {\n\n\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t} else if ( materialProperties.numClippingPlanes !== undefined &&\n\t\t\t\t( materialProperties.numClippingPlanes !== _clipping.numPlanes ||\n\t\t\t\tmaterialProperties.numIntersection !== _clipping.numIntersection ) ) {\n\n\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.needsUpdate ) {\n\n\t\t\tinitMaterial( material, fog, object );\n\t\t\tmaterial.needsUpdate = false;\n\n\t\t}\n\n\t\tvar refreshProgram = false;\n\t\tvar refreshMaterial = false;\n\t\tvar refreshLights = false;\n\n\t\tvar program = materialProperties.program,\n\t\t\tp_uniforms = program.getUniforms(),\n\t\t\tm_uniforms = materialProperties.shader.uniforms;\n\n\t\tif ( state.useProgram( program.program ) ) {\n\n\t\t\trefreshProgram = true;\n\t\t\trefreshMaterial = true;\n\t\t\trefreshLights = true;\n\n\t\t}\n\n\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t_currentMaterialId = material.id;\n\n\t\t\trefreshMaterial = true;\n\n\t\t}\n\n\t\tif ( refreshProgram || camera !== _currentCamera ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );\n\n\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t}\n\n\t\t\t// Avoid unneeded uniform updates per ArrayCamera's sub-camera\n\n\t\t\tif ( _currentCamera !== ( _currentArrayCamera || camera ) ) {\n\n\t\t\t\t_currentCamera = ( _currentArrayCamera || camera );\n\n\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t}\n\n\t\t\t// load material specific uniforms\n\t\t\t// (shader material also gets them for the sake of genericity)\n\n\t\t\tif ( material.isShaderMaterial ||\n\t\t\t\tmaterial.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.envMap ) {\n\n\t\t\t\tvar uCamPos = p_uniforms.map.cameraPosition;\n\n\t\t\t\tif ( uCamPos !== undefined ) {\n\n\t\t\t\t\tuCamPos.setValue( _gl,\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ||\n\t\t\t\tmaterial.skinning ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// skinning uniforms must be set even if material didn't change\n\t\t// auto-setting of texture unit for bone texture must go before other textures\n\t\t// not sure why, but otherwise weird things happen\n\n\t\tif ( material.skinning ) {\n\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\tvar skeleton = object.skeleton;\n\n\t\t\tif ( skeleton ) {\n\n\t\t\t\tvar bones = skeleton.bones;\n\n\t\t\t\tif ( capabilities.floatVertexTextures ) {\n\n\t\t\t\t\tif ( skeleton.boneTexture === undefined ) {\n\n\t\t\t\t\t\t// layout (1 matrix = 4 pixels)\n\t\t\t\t\t\t//      RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t\t\t\t\t//  with  8x8  pixel texture max   16 bones * 4 pixels =  (8 * 8)\n\t\t\t\t\t\t//       16x16 pixel texture max   64 bones * 4 pixels = (16 * 16)\n\t\t\t\t\t\t//       32x32 pixel texture max  256 bones * 4 pixels = (32 * 32)\n\t\t\t\t\t\t//       64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\n\t\t\t\t\t\tvar size = Math.sqrt( bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\t\t\t\t\tsize = _Math.ceilPowerOfTwo( size );\n\t\t\t\t\t\tsize = Math.max( size, 4 );\n\n\t\t\t\t\t\tvar boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\t\t\t\t\tboneMatrices.set( skeleton.boneMatrices ); // copy current values\n\n\t\t\t\t\t\tvar boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );\n\t\t\t\t\t\tboneTexture.needsUpdate = true;\n\n\t\t\t\t\t\tskeleton.boneMatrices = boneMatrices;\n\t\t\t\t\t\tskeleton.boneTexture = boneTexture;\n\t\t\t\t\t\tskeleton.boneTextureSize = size;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture );\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTextureSize', skeleton.boneTextureSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tp_uniforms.setOptional( _gl, skeleton, 'boneMatrices' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( refreshMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );\n\t\t\tp_uniforms.setValue( _gl, 'toneMappingWhitePoint', _this.toneMappingWhitePoint );\n\n\t\t\tif ( material.lights ) {\n\n\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t// values\n\t\t\t\t//\n\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t// the GL state when required\n\n\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t}\n\n\t\t\t// refresh uniforms common to several materials\n\n\t\t\tif ( fog && material.fog ) {\n\n\t\t\t\trefreshUniformsFog( m_uniforms, fog );\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshBasicMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshLambertMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\t\t\t\trefreshUniformsLambert( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshPhongMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\n\t\t\t\tif ( material.isMeshToonMaterial ) {\n\n\t\t\t\t\trefreshUniformsToon( m_uniforms, material );\n\n\t\t\t\t} else {\n\n\t\t\t\t\trefreshUniformsPhong( m_uniforms, material );\n\n\t\t\t\t}\n\n\t\t\t} else if ( material.isMeshStandardMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\n\t\t\t\tif ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\t\trefreshUniformsPhysical( m_uniforms, material );\n\n\t\t\t\t} else {\n\n\t\t\t\t\trefreshUniformsStandard( m_uniforms, material );\n\n\t\t\t\t}\n\n\t\t\t} else if ( material.isMeshDepthMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\t\t\t\trefreshUniformsDepth( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshDistanceMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\t\t\t\trefreshUniformsDistance( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\t\t\t\trefreshUniformsNormal( m_uniforms, material );\n\n\t\t\t} else if ( material.isLineBasicMaterial ) {\n\n\t\t\t\trefreshUniformsLine( m_uniforms, material );\n\n\t\t\t\tif ( material.isLineDashedMaterial ) {\n\n\t\t\t\t\trefreshUniformsDash( m_uniforms, material );\n\n\t\t\t\t}\n\n\t\t\t} else if ( material.isPointsMaterial ) {\n\n\t\t\t\trefreshUniformsPoints( m_uniforms, material );\n\n\t\t\t} else if ( material.isShadowMaterial ) {\n\n\t\t\t\tm_uniforms.color.value = material.color;\n\t\t\t\tm_uniforms.opacity.value = material.opacity;\n\n\t\t\t}\n\n\t\t\t// RectAreaLight Texture\n\t\t\t// TODO (mrdoob): Find a nicer implementation\n\n\t\t\tif ( m_uniforms.ltc_1 !== undefined ) m_uniforms.ltc_1.value = UniformsLib.LTC_1;\n\t\t\tif ( m_uniforms.ltc_2 !== undefined ) m_uniforms.ltc_2.value = UniformsLib.LTC_2;\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, _this );\n\n\t\t}\n\n\t\tif ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) {\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, _this );\n\t\t\tmaterial.uniformsNeedUpdate = false;\n\n\t\t}\n\n\t\t// common matrices\n\n\t\tp_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix );\n\t\tp_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix );\n\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\n\n\t\treturn program;\n\n\t}\n\n\t// Uniforms (refresh uniforms objects)\n\n\tfunction refreshUniformsCommon( uniforms, material ) {\n\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.color ) {\n\n\t\t\tuniforms.diffuse.value = material.color;\n\n\t\t}\n\n\t\tif ( material.emissive ) {\n\n\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t}\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.specularMap ) {\n\n\t\t\tuniforms.specularMap.value = material.specularMap;\n\n\t\t}\n\n\t\tif ( material.envMap ) {\n\n\t\t\tuniforms.envMap.value = material.envMap;\n\n\t\t\t// don't flip CubeTexture envMaps, flip everything else:\n\t\t\t//  WebGLRenderTargetCube will be flipped for backwards compatibility\n\t\t\t//  WebGLRenderTargetCube.texture will be flipped because it's a Texture and NOT a CubeTexture\n\t\t\t// this check must be handled differently, or removed entirely, if WebGLRenderTargetCube uses a CubeTexture in the future\n\t\t\tuniforms.flipEnvMap.value = ( ! ( material.envMap && material.envMap.isCubeTexture ) ) ? 1 : - 1;\n\n\t\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t\tuniforms.maxMipLevel.value = properties.get( material.envMap ).__maxMipLevel;\n\n\t\t}\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. specular map\n\t\t// 3. normal map\n\t\t// 4. bump map\n\t\t// 5. alpha map\n\t\t// 6. emissive map\n\n\t\tvar uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.specularMap ) {\n\n\t\t\tuvScaleMap = material.specularMap;\n\n\t\t} else if ( material.displacementMap ) {\n\n\t\t\tuvScaleMap = material.displacementMap;\n\n\t\t} else if ( material.normalMap ) {\n\n\t\t\tuvScaleMap = material.normalMap;\n\n\t\t} else if ( material.bumpMap ) {\n\n\t\t\tuvScaleMap = material.bumpMap;\n\n\t\t} else if ( material.roughnessMap ) {\n\n\t\t\tuvScaleMap = material.roughnessMap;\n\n\t\t} else if ( material.metalnessMap ) {\n\n\t\t\tuvScaleMap = material.metalnessMap;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t} else if ( material.emissiveMap ) {\n\n\t\t\tuvScaleMap = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uvScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuvScaleMap = uvScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLine( uniforms, material ) {\n\n\t\tuniforms.diffuse.value = material.color;\n\t\tuniforms.opacity.value = material.opacity;\n\n\t}\n\n\tfunction refreshUniformsDash( uniforms, material ) {\n\n\t\tuniforms.dashSize.value = material.dashSize;\n\t\tuniforms.totalSize.value = material.dashSize + material.gapSize;\n\t\tuniforms.scale.value = material.scale;\n\n\t}\n\n\tfunction refreshUniformsPoints( uniforms, material ) {\n\n\t\tuniforms.diffuse.value = material.color;\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.size.value = material.size * _pixelRatio;\n\t\tuniforms.scale.value = _height * 0.5;\n\n\t\tuniforms.map.value = material.map;\n\n\t\tif ( material.map !== null ) {\n\n\t\t\tif ( material.map.matrixAutoUpdate === true ) {\n\n\t\t\t\tmaterial.map.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( material.map.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsFog( uniforms, fog ) {\n\n\t\tuniforms.fogColor.value = fog.color;\n\n\t\tif ( fog.isFog ) {\n\n\t\t\tuniforms.fogNear.value = fog.near;\n\t\t\tuniforms.fogFar.value = fog.far;\n\n\t\t} else if ( fog.isFogExp2 ) {\n\n\t\t\tuniforms.fogDensity.value = fog.density;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLambert( uniforms, material ) {\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhong( uniforms, material ) {\n\n\t\tuniforms.specular.value = material.specular;\n\t\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsToon( uniforms, material ) {\n\n\t\trefreshUniformsPhong( uniforms, material );\n\n\t\tif ( material.gradientMap ) {\n\n\t\t\tuniforms.gradientMap.value = material.gradientMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsStandard( uniforms, material ) {\n\n\t\tuniforms.roughness.value = material.roughness;\n\t\tuniforms.metalness.value = material.metalness;\n\n\t\tif ( material.roughnessMap ) {\n\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t}\n\n\t\tif ( material.metalnessMap ) {\n\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tif ( material.envMap ) {\n\n\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhysical( uniforms, material ) {\n\n\t\trefreshUniformsStandard( uniforms, material );\n\n\t\tuniforms.reflectivity.value = material.reflectivity; // also part of uniforms common\n\n\t\tuniforms.clearCoat.value = material.clearCoat;\n\t\tuniforms.clearCoatRoughness.value = material.clearCoatRoughness;\n\n\t}\n\n\tfunction refreshUniformsDepth( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDistance( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tuniforms.referencePosition.value.copy( material.referencePosition );\n\t\tuniforms.nearDistance.value = material.nearDistance;\n\t\tuniforms.farDistance.value = material.farDistance;\n\n\t}\n\n\tfunction refreshUniformsNormal( uniforms, material ) {\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\n\n\t\tuniforms.ambientLightColor.needsUpdate = value;\n\n\t\tuniforms.directionalLights.needsUpdate = value;\n\t\tuniforms.pointLights.needsUpdate = value;\n\t\tuniforms.spotLights.needsUpdate = value;\n\t\tuniforms.rectAreaLights.needsUpdate = value;\n\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t}\n\n\t// Textures\n\n\tfunction allocTextureUnit() {\n\n\t\tvar textureUnit = _usedTextureUnits;\n\n\t\tif ( textureUnit >= capabilities.maxTextures ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + capabilities.maxTextures );\n\n\t\t}\n\n\t\t_usedTextureUnits += 1;\n\n\t\treturn textureUnit;\n\n\t}\n\n\tthis.allocTextureUnit = allocTextureUnit;\n\n\t// this.setTexture2D = setTexture2D;\n\tthis.setTexture2D = ( function () {\n\n\t\tvar warned = false;\n\n\t\t// backwards compatibility: peel texture.texture\n\t\treturn function setTexture2D( texture, slot ) {\n\n\t\t\tif ( texture && texture.isWebGLRenderTarget ) {\n\n\t\t\t\tif ( ! warned ) {\n\n\t\t\t\t\tconsole.warn( \"THREE.WebGLRenderer.setTexture2D: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\t\t\twarned = true;\n\n\t\t\t\t}\n\n\t\t\t\ttexture = texture.texture;\n\n\t\t\t}\n\n\t\t\ttextures.setTexture2D( texture, slot );\n\n\t\t};\n\n\t}() );\n\n\tthis.setTexture = ( function () {\n\n\t\tvar warned = false;\n\n\t\treturn function setTexture( texture, slot ) {\n\n\t\t\tif ( ! warned ) {\n\n\t\t\t\tconsole.warn( \"THREE.WebGLRenderer: .setTexture is deprecated, use setTexture2D instead.\" );\n\t\t\t\twarned = true;\n\n\t\t\t}\n\n\t\t\ttextures.setTexture2D( texture, slot );\n\n\t\t};\n\n\t}() );\n\n\tthis.setTextureCube = ( function () {\n\n\t\tvar warned = false;\n\n\t\treturn function setTextureCube( texture, slot ) {\n\n\t\t\t// backwards compatibility: peel texture.texture\n\t\t\tif ( texture && texture.isWebGLRenderTargetCube ) {\n\n\t\t\t\tif ( ! warned ) {\n\n\t\t\t\t\tconsole.warn( \"THREE.WebGLRenderer.setTextureCube: don't use cube render targets as textures. Use their .texture property instead.\" );\n\t\t\t\t\twarned = true;\n\n\t\t\t\t}\n\n\t\t\t\ttexture = texture.texture;\n\n\t\t\t}\n\n\t\t\t// currently relying on the fact that WebGLRenderTargetCube.texture is a Texture and NOT a CubeTexture\n\t\t\t// TODO: unify these code paths\n\t\t\tif ( ( texture && texture.isCubeTexture ) ||\n\t\t\t\t( Array.isArray( texture.image ) && texture.image.length === 6 ) ) {\n\n\t\t\t\t// CompressedTexture can have Array in image :/\n\n\t\t\t\t// this function alone should take care of cube textures\n\t\t\t\ttextures.setTextureCube( texture, slot );\n\n\t\t\t} else {\n\n\t\t\t\t// assumed: texture property of THREE.WebGLRenderTargetCube\n\n\t\t\t\ttextures.setTextureCubeDynamic( texture, slot );\n\n\t\t\t}\n\n\t\t};\n\n\t}() );\n\n\t//\n\n\tthis.setFramebuffer = function ( value ) {\n\n\t\t_framebuffer = value;\n\n\t};\n\n\tthis.getRenderTarget = function () {\n\n\t\treturn _currentRenderTarget;\n\n\t};\n\n\tthis.setRenderTarget = function ( renderTarget ) {\n\n\t\t_currentRenderTarget = renderTarget;\n\n\t\tif ( renderTarget && properties.get( renderTarget ).__webglFramebuffer === undefined ) {\n\n\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t}\n\n\t\tvar framebuffer = _framebuffer;\n\t\tvar isCube = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tvar __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\tif ( renderTarget.isWebGLRenderTargetCube ) {\n\n\t\t\t\tframebuffer = __webglFramebuffer[ renderTarget.activeCubeFace ];\n\t\t\t\tisCube = true;\n\n\t\t\t} else {\n\n\t\t\t\tframebuffer = __webglFramebuffer;\n\n\t\t\t}\n\n\t\t\t_currentViewport.copy( renderTarget.viewport );\n\t\t\t_currentScissor.copy( renderTarget.scissor );\n\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\n\t\t} else {\n\n\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio );\n\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio );\n\t\t\t_currentScissorTest = _scissorTest;\n\n\t\t}\n\n\t\tif ( _currentFramebuffer !== framebuffer ) {\n\n\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\t\t\t_currentFramebuffer = framebuffer;\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport );\n\t\tstate.scissor( _currentScissor );\n\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\tif ( isCube ) {\n\n\t\t\tvar textureProperties = properties.get( renderTarget.texture );\n\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + renderTarget.activeCubeFace, textureProperties.__webglTexture, renderTarget.activeMipMapLevel );\n\n\t\t}\n\n\t};\n\n\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer ) {\n\n\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\tif ( framebuffer ) {\n\n\t\t\tvar restore = false;\n\n\t\t\tif ( framebuffer !== _currentFramebuffer ) {\n\n\t\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\t\trestore = true;\n\n\t\t\t}\n\n\t\t\ttry {\n\n\t\t\t\tvar texture = renderTarget.texture;\n\t\t\t\tvar textureFormat = texture.format;\n\t\t\t\tvar textureType = texture.type;\n\n\t\t\t\tif ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( _gl.IMPLEMENTATION_COLOR_READ_FORMAT ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( _gl.IMPLEMENTATION_COLOR_READ_TYPE ) && // IE11, Edge and Chrome Mac < 52 (#9513)\n\t\t\t\t\t! ( textureType === FloatType && ( extensions.get( 'OES_texture_float' ) || extensions.get( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox\n\t\t\t\t\t! ( textureType === HalfFloatType && extensions.get( 'EXT_color_buffer_half_float' ) ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _gl.checkFramebufferStatus( _gl.FRAMEBUFFER ) === _gl.FRAMEBUFFER_COMPLETE ) {\n\n\t\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n\t\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t\t_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' );\n\n\t\t\t\t}\n\n\t\t\t} finally {\n\n\t\t\t\tif ( restore ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, _currentFramebuffer );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.copyFramebufferToTexture = function ( position, texture, level ) {\n\n\t\tvar width = texture.image.width;\n\t\tvar height = texture.image.height;\n\t\tvar glFormat = utils.convert( texture.format );\n\n\t\tthis.setTexture2D( texture, 0 );\n\n\t\t_gl.copyTexImage2D( _gl.TEXTURE_2D, level || 0, glFormat, position.x, position.y, width, height, 0 );\n\n\t};\n\n\tthis.copyTextureToTexture = function ( position, srcTexture, dstTexture, level ) {\n\n\t\tvar width = srcTexture.image.width;\n\t\tvar height = srcTexture.image.height;\n\t\tvar glFormat = utils.convert( dstTexture.format );\n\t\tvar glType = utils.convert( dstTexture.type );\n\n\t\tthis.setTexture2D( dstTexture, 0 );\n\n\t\tif ( srcTexture.isDataTexture ) {\n\n\t\t\t_gl.texSubImage2D( _gl.TEXTURE_2D, level || 0, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data );\n\n\t\t} else {\n\n\t\t\t_gl.texSubImage2D( _gl.TEXTURE_2D, level || 0, position.x, position.y, glFormat, glType, srcTexture.image );\n\n\t\t}\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction FogExp2( color, density ) {\n\n\tthis.name = '';\n\n\tthis.color = new Color( color );\n\tthis.density = ( density !== undefined ) ? density : 0.00025;\n\n}\n\nFogExp2.prototype.isFogExp2 = true;\n\nFogExp2.prototype.clone = function () {\n\n\treturn new FogExp2( this.color, this.density );\n\n};\n\nFogExp2.prototype.toJSON = function ( /* meta */ ) {\n\n\treturn {\n\t\ttype: 'FogExp2',\n\t\tcolor: this.color.getHex(),\n\t\tdensity: this.density\n\t};\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Fog( color, near, far ) {\n\n\tthis.name = '';\n\n\tthis.color = new Color( color );\n\n\tthis.near = ( near !== undefined ) ? near : 1;\n\tthis.far = ( far !== undefined ) ? far : 1000;\n\n}\n\nFog.prototype.isFog = true;\n\nFog.prototype.clone = function () {\n\n\treturn new Fog( this.color, this.near, this.far );\n\n};\n\nFog.prototype.toJSON = function ( /* meta */ ) {\n\n\treturn {\n\t\ttype: 'Fog',\n\t\tcolor: this.color.getHex(),\n\t\tnear: this.near,\n\t\tfar: this.far\n\t};\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Scene() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Scene';\n\n\tthis.background = null;\n\tthis.fog = null;\n\tthis.overrideMaterial = null;\n\n\tthis.autoUpdate = true; // checked by the renderer\n\n}\n\nScene.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Scene,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tObject3D.prototype.copy.call( this, source, recursive );\n\n\t\tif ( source.background !== null ) this.background = source.background.clone();\n\t\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\t\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tif ( this.background !== null ) data.object.background = this.background.toJSON( meta );\n\t\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n *  color: <hex>,\n *  opacity: <float>,\n *  map: new THREE.Texture( <Image> ),\n *\n *\tuvOffset: new THREE.Vector2(),\n *\tuvScale: new THREE.Vector2()\n * }\n */\n\nfunction SpriteMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'SpriteMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\tthis.map = null;\n\n\tthis.rotation = 0;\n\n\tthis.fog = false;\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nSpriteMaterial.prototype = Object.create( Material.prototype );\nSpriteMaterial.prototype.constructor = SpriteMaterial;\nSpriteMaterial.prototype.isSpriteMaterial = true;\n\nSpriteMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\tthis.map = source.map;\n\n\tthis.rotation = source.rotation;\n\n\treturn this;\n\n};\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Sprite( material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Sprite';\n\n\tthis.material = ( material !== undefined ) ? material : new SpriteMaterial();\n\n\tthis.center = new Vector2( 0.5, 0.5 );\n\n}\n\nSprite.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Sprite,\n\n\tisSprite: true,\n\n\traycast: ( function () {\n\n\t\tvar intersectPoint = new Vector3();\n\t\tvar worldScale = new Vector3();\n\t\tvar mvPosition = new Vector3();\n\n\t\tvar alignedPosition = new Vector2();\n\t\tvar rotatedPosition = new Vector2();\n\t\tvar viewWorldMatrix = new Matrix4();\n\n\t\tvar vA = new Vector3();\n\t\tvar vB = new Vector3();\n\t\tvar vC = new Vector3();\n\n\t\tfunction transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) {\n\n\t\t\t// compute position in camera space\n\t\t\talignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale );\n\n\t\t\t// to check if rotation is not zero\n\t\t\tif ( sin !== undefined ) {\n\n\t\t\t\trotatedPosition.x = ( cos * alignedPosition.x ) - ( sin * alignedPosition.y );\n\t\t\t\trotatedPosition.y = ( sin * alignedPosition.x ) + ( cos * alignedPosition.y );\n\n\t\t\t} else {\n\n\t\t\t\trotatedPosition.copy( alignedPosition );\n\n\t\t\t}\n\n\n\t\t\tvertexPosition.copy( mvPosition );\n\t\t\tvertexPosition.x += rotatedPosition.x;\n\t\t\tvertexPosition.y += rotatedPosition.y;\n\n\t\t\t// transform to world space\n\t\t\tvertexPosition.applyMatrix4( viewWorldMatrix );\n\n\t\t}\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tworldScale.setFromMatrixScale( this.matrixWorld );\n\t\t\tviewWorldMatrix.getInverse( this.modelViewMatrix ).premultiply( this.matrixWorld );\n\t\t\tmvPosition.setFromMatrixPosition( this.modelViewMatrix );\n\n\t\t\tvar rotation = this.material.rotation;\n\t\t\tvar sin, cos;\n\t\t\tif ( rotation !== 0 ) {\n\n\t\t\t\tcos = Math.cos( rotation );\n\t\t\t\tsin = Math.sin( rotation );\n\n\t\t\t}\n\n\t\t\tvar center = this.center;\n\n\t\t\ttransformVertex( vA.set( - 0.5, - 0.5, 0 ), mvPosition, center, worldScale, sin, cos );\n\t\t\ttransformVertex( vB.set( 0.5, - 0.5, 0 ), mvPosition, center, worldScale, sin, cos );\n\t\t\ttransformVertex( vC.set( 0.5, 0.5, 0 ), mvPosition, center, worldScale, sin, cos );\n\n\t\t\t// check first triangle\n\t\t\tvar intersect = raycaster.ray.intersectTriangle( vA, vB, vC, false, intersectPoint );\n\n\t\t\tif ( intersect === null ) {\n\n\t\t\t\t// check second triangle\n\t\t\t\ttransformVertex( vB.set( - 0.5, 0.5, 0 ), mvPosition, center, worldScale, sin, cos );\n\t\t\t\tintersect = raycaster.ray.intersectTriangle( vA, vC, vB, false, intersectPoint );\n\t\t\t\tif ( intersect === null ) {\n\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\t\tintersects.push( {\n\n\t\t\t\tdistance: distance,\n\t\t\t\tpoint: intersectPoint.clone(),\n\t\t\t\tface: null,\n\t\t\t\tobject: this\n\n\t\t\t} );\n\n\t\t};\n\n\t}() ),\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.material ).copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tif ( source.center !== undefined ) this.center.copy( source.center );\n\n\t\treturn this;\n\n\t}\n\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LOD() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'LOD';\n\n\tObject.defineProperties( this, {\n\t\tlevels: {\n\t\t\tenumerable: true,\n\t\t\tvalue: []\n\t\t}\n\t} );\n\n}\n\nLOD.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: LOD,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source, false );\n\n\t\tvar levels = source.levels;\n\n\t\tfor ( var i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tvar level = levels[ i ];\n\n\t\t\tthis.addLevel( level.object.clone(), level.distance );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\taddLevel: function ( object, distance ) {\n\n\t\tif ( distance === undefined ) distance = 0;\n\n\t\tdistance = Math.abs( distance );\n\n\t\tvar levels = this.levels;\n\n\t\tfor ( var l = 0; l < levels.length; l ++ ) {\n\n\t\t\tif ( distance < levels[ l ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlevels.splice( l, 0, { distance: distance, object: object } );\n\n\t\tthis.add( object );\n\n\t},\n\n\tgetObjectForDistance: function ( distance ) {\n\n\t\tvar levels = this.levels;\n\n\t\tfor ( var i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\tif ( distance < levels[ i ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn levels[ i - 1 ].object;\n\n\t},\n\n\traycast: ( function () {\n\n\t\tvar matrixPosition = new Vector3();\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tmatrixPosition.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tvar distance = raycaster.ray.origin.distanceTo( matrixPosition );\n\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t};\n\n\t}() ),\n\n\tupdate: function () {\n\n\t\tvar v1 = new Vector3();\n\t\tvar v2 = new Vector3();\n\n\t\treturn function update( camera ) {\n\n\t\t\tvar levels = this.levels;\n\n\t\t\tif ( levels.length > 1 ) {\n\n\t\t\t\tv1.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t\tv2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\t\tvar distance = v1.distanceTo( v2 );\n\n\t\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\t\tfor ( var i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\t\tif ( distance >= levels[ i ].distance ) {\n\n\t\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\t\tlevels[ i ].object.visible = false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}(),\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.levels = [];\n\n\t\tvar levels = this.levels;\n\n\t\tfor ( var i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tvar level = levels[ i ];\n\n\t\t\tdata.object.levels.push( {\n\t\t\t\tobject: level.object.uuid,\n\t\t\t\tdistance: level.distance\n\t\t\t} );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author michael guerrero / http://realitymeltdown.com\n * @author ikerr / http://verold.com\n */\n\nfunction Skeleton( bones, boneInverses ) {\n\n\t// copy the bone array\n\n\tbones = bones || [];\n\n\tthis.bones = bones.slice( 0 );\n\tthis.boneMatrices = new Float32Array( this.bones.length * 16 );\n\n\t// use the supplied bone inverses or calculate the inverses\n\n\tif ( boneInverses === undefined ) {\n\n\t\tthis.calculateInverses();\n\n\t} else {\n\n\t\tif ( this.bones.length === boneInverses.length ) {\n\n\t\t\tthis.boneInverses = boneInverses.slice( 0 );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Skeleton boneInverses is the wrong length.' );\n\n\t\t\tthis.boneInverses = [];\n\n\t\t\tfor ( var i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nObject.assign( Skeleton.prototype, {\n\n\tcalculateInverses: function () {\n\n\t\tthis.boneInverses = [];\n\n\t\tfor ( var i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tvar inverse = new Matrix4();\n\n\t\t\tif ( this.bones[ i ] ) {\n\n\t\t\t\tinverse.getInverse( this.bones[ i ].matrixWorld );\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t},\n\n\tpose: function () {\n\n\t\tvar bone, i, il;\n\n\t\t// recover the bind-time world matrices\n\n\t\tfor ( i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tbone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tbone.matrixWorld.getInverse( this.boneInverses[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute the local matrices, positions, rotations and scales\n\n\t\tfor ( i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tbone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t\tbone.matrix.getInverse( bone.parent.matrixWorld );\n\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdate: ( function () {\n\n\t\tvar offsetMatrix = new Matrix4();\n\t\tvar identityMatrix = new Matrix4();\n\n\t\treturn function update() {\n\n\t\t\tvar bones = this.bones;\n\t\t\tvar boneInverses = this.boneInverses;\n\t\t\tvar boneMatrices = this.boneMatrices;\n\t\t\tvar boneTexture = this.boneTexture;\n\n\t\t\t// flatten bone matrices to array\n\n\t\t\tfor ( var i = 0, il = bones.length; i < il; i ++ ) {\n\n\t\t\t\t// compute the offset between the current and the original transform\n\n\t\t\t\tvar matrix = bones[ i ] ? bones[ i ].matrixWorld : identityMatrix;\n\n\t\t\t\toffsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] );\n\t\t\t\toffsetMatrix.toArray( boneMatrices, i * 16 );\n\n\t\t\t}\n\n\t\t\tif ( boneTexture !== undefined ) {\n\n\t\t\t\tboneTexture.needsUpdate = true;\n\n\t\t\t}\n\n\t\t};\n\n\t} )(),\n\n\tclone: function () {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses );\n\n\t},\n\n\tgetBoneByName: function ( name ) {\n\n\t\tfor ( var i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tvar bone = this.bones[ i ];\n\n\t\t\tif ( bone.name === name ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author ikerr / http://verold.com\n */\n\nfunction Bone() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Bone';\n\n}\n\nBone.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Bone,\n\n\tisBone: true\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author ikerr / http://verold.com\n */\n\nfunction SkinnedMesh( geometry, material ) {\n\n\tMesh.call( this, geometry, material );\n\n\tthis.type = 'SkinnedMesh';\n\n\tthis.bindMode = 'attached';\n\tthis.bindMatrix = new Matrix4();\n\tthis.bindMatrixInverse = new Matrix4();\n\n\tvar bones = this.initBones();\n\tvar skeleton = new Skeleton( bones );\n\n\tthis.bind( skeleton, this.matrixWorld );\n\n\tthis.normalizeSkinWeights();\n\n}\n\nSkinnedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), {\n\n\tconstructor: SkinnedMesh,\n\n\tisSkinnedMesh: true,\n\n\tinitBones: function () {\n\n\t\tvar bones = [], bone, gbone;\n\t\tvar i, il;\n\n\t\tif ( this.geometry && this.geometry.bones !== undefined ) {\n\n\t\t\t// first, create array of 'Bone' objects from geometry data\n\n\t\t\tfor ( i = 0, il = this.geometry.bones.length; i < il; i ++ ) {\n\n\t\t\t\tgbone = this.geometry.bones[ i ];\n\n\t\t\t\t// create new 'Bone' object\n\n\t\t\t\tbone = new Bone();\n\t\t\t\tbones.push( bone );\n\n\t\t\t\t// apply values\n\n\t\t\t\tbone.name = gbone.name;\n\t\t\t\tbone.position.fromArray( gbone.pos );\n\t\t\t\tbone.quaternion.fromArray( gbone.rotq );\n\t\t\t\tif ( gbone.scl !== undefined ) bone.scale.fromArray( gbone.scl );\n\n\t\t\t}\n\n\t\t\t// second, create bone hierarchy\n\n\t\t\tfor ( i = 0, il = this.geometry.bones.length; i < il; i ++ ) {\n\n\t\t\t\tgbone = this.geometry.bones[ i ];\n\n\t\t\t\tif ( ( gbone.parent !== - 1 ) && ( gbone.parent !== null ) && ( bones[ gbone.parent ] !== undefined ) ) {\n\n\t\t\t\t\t// subsequent bones in the hierarchy\n\n\t\t\t\t\tbones[ gbone.parent ].add( bones[ i ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// topmost bone, immediate child of the skinned mesh\n\n\t\t\t\t\tthis.add( bones[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// now the bones are part of the scene graph and children of the skinned mesh.\n\t\t// let's update the corresponding matrices\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\treturn bones;\n\n\t},\n\n\tbind: function ( skeleton, bindMatrix ) {\n\n\t\tthis.skeleton = skeleton;\n\n\t\tif ( bindMatrix === undefined ) {\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t}\n\n\t\tthis.bindMatrix.copy( bindMatrix );\n\t\tthis.bindMatrixInverse.getInverse( bindMatrix );\n\n\t},\n\n\tpose: function () {\n\n\t\tthis.skeleton.pose();\n\n\t},\n\n\tnormalizeSkinWeights: function () {\n\n\t\tvar scale, i;\n\n\t\tif ( this.geometry && this.geometry.isGeometry ) {\n\n\t\t\tfor ( i = 0; i < this.geometry.skinWeights.length; i ++ ) {\n\n\t\t\t\tvar sw = this.geometry.skinWeights[ i ];\n\n\t\t\t\tscale = 1.0 / sw.manhattanLength();\n\n\t\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\t\tsw.multiplyScalar( scale );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tsw.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( this.geometry && this.geometry.isBufferGeometry ) {\n\n\t\t\tvar vec = new Vector4();\n\n\t\t\tvar skinWeight = this.geometry.attributes.skinWeight;\n\n\t\t\tfor ( i = 0; i < skinWeight.count; i ++ ) {\n\n\t\t\t\tvec.x = skinWeight.getX( i );\n\t\t\t\tvec.y = skinWeight.getY( i );\n\t\t\t\tvec.z = skinWeight.getZ( i );\n\t\t\t\tvec.w = skinWeight.getW( i );\n\n\t\t\t\tscale = 1.0 / vec.manhattanLength();\n\n\t\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\t\tvec.multiplyScalar( scale );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tvec.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t\t}\n\n\t\t\t\tskinWeight.setXYZW( i, vec.x, vec.y, vec.z, vec.w );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tMesh.prototype.updateMatrixWorld.call( this, force );\n\n\t\tif ( this.bindMode === 'attached' ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.matrixWorld );\n\n\t\t} else if ( this.bindMode === 'detached' ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.bindMatrix );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n *  color: <hex>,\n *  opacity: <float>,\n *\n *  linewidth: <float>,\n *  linecap: \"round\",\n *  linejoin: \"round\"\n * }\n */\n\nfunction LineBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'LineBasicMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.linewidth = 1;\n\tthis.linecap = 'round';\n\tthis.linejoin = 'round';\n\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nLineBasicMaterial.prototype = Object.create( Material.prototype );\nLineBasicMaterial.prototype.constructor = LineBasicMaterial;\n\nLineBasicMaterial.prototype.isLineBasicMaterial = true;\n\nLineBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.linewidth = source.linewidth;\n\tthis.linecap = source.linecap;\n\tthis.linejoin = source.linejoin;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Line( geometry, material, mode ) {\n\n\tif ( mode === 1 ) {\n\n\t\tconsole.warn( 'THREE.Line: parameter THREE.LinePieces no longer supported. Created THREE.LineSegments instead.' );\n\t\treturn new LineSegments( geometry, material );\n\n\t}\n\n\tObject3D.call( this );\n\n\tthis.type = 'Line';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new LineBasicMaterial( { color: Math.random() * 0xffffff } );\n\n}\n\nLine.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Line,\n\n\tisLine: true,\n\n\tcomputeLineDistances: ( function () {\n\n\t\tvar start = new Vector3();\n\t\tvar end = new Vector3();\n\n\t\treturn function computeLineDistances() {\n\n\t\t\tvar geometry = this.geometry;\n\n\t\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t\t// we assume non-indexed geometry\n\n\t\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\t\tvar positionAttribute = geometry.attributes.position;\n\t\t\t\t\tvar lineDistances = [ 0 ];\n\n\t\t\t\t\tfor ( var i = 1, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t\t\tstart.fromBufferAttribute( positionAttribute, i - 1 );\n\t\t\t\t\t\tend.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\t\t\tlineDistances[ i ] += start.distanceTo( end );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgeometry.addAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t\t}\n\n\t\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\t\tvar vertices = geometry.vertices;\n\t\t\t\tvar lineDistances = geometry.lineDistances;\n\n\t\t\t\tlineDistances[ 0 ] = 0;\n\n\t\t\t\tfor ( var i = 1, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ i ] += vertices[ i - 1 ].distanceTo( vertices[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}() ),\n\n\traycast: ( function () {\n\n\t\tvar inverseMatrix = new Matrix4();\n\t\tvar ray = new Ray();\n\t\tvar sphere = new Sphere();\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tvar precision = raycaster.linePrecision;\n\t\t\tvar precisionSq = precision * precision;\n\n\t\t\tvar geometry = this.geometry;\n\t\t\tvar matrixWorld = this.matrixWorld;\n\n\t\t\t// Checking boundingSphere distance to ray\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\tsphere.copy( geometry.boundingSphere );\n\t\t\tsphere.applyMatrix4( matrixWorld );\n\n\t\t\tif ( raycaster.ray.intersectsSphere( sphere ) === false ) return;\n\n\t\t\t//\n\n\t\t\tinverseMatrix.getInverse( matrixWorld );\n\t\t\tray.copy( raycaster.ray ).applyMatrix4( inverseMatrix );\n\n\t\t\tvar vStart = new Vector3();\n\t\t\tvar vEnd = new Vector3();\n\t\t\tvar interSegment = new Vector3();\n\t\t\tvar interRay = new Vector3();\n\t\t\tvar step = ( this && this.isLineSegments ) ? 2 : 1;\n\n\t\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t\tvar index = geometry.index;\n\t\t\t\tvar attributes = geometry.attributes;\n\t\t\t\tvar positions = attributes.position.array;\n\n\t\t\t\tif ( index !== null ) {\n\n\t\t\t\t\tvar indices = index.array;\n\n\t\t\t\t\tfor ( var i = 0, l = indices.length - 1; i < l; i += step ) {\n\n\t\t\t\t\t\tvar a = indices[ i ];\n\t\t\t\t\t\tvar b = indices[ i + 1 ];\n\n\t\t\t\t\t\tvStart.fromArray( positions, a * 3 );\n\t\t\t\t\t\tvEnd.fromArray( positions, b * 3 );\n\n\t\t\t\t\t\tvar distSq = ray.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\t\tif ( distSq > precisionSq ) continue;\n\n\t\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\t\tface: null,\n\t\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfor ( var i = 0, l = positions.length / 3 - 1; i < l; i += step ) {\n\n\t\t\t\t\t\tvStart.fromArray( positions, 3 * i );\n\t\t\t\t\t\tvEnd.fromArray( positions, 3 * i + 3 );\n\n\t\t\t\t\t\tvar distSq = ray.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\t\tif ( distSq > precisionSq ) continue;\n\n\t\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\t\tface: null,\n\t\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\t\tvar vertices = geometry.vertices;\n\t\t\t\tvar nbVertices = vertices.length;\n\n\t\t\t\tfor ( var i = 0; i < nbVertices - 1; i += step ) {\n\n\t\t\t\t\tvar distSq = ray.distanceSqToSegment( vertices[ i ], vertices[ i + 1 ], interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > precisionSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}() ),\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LineSegments( geometry, material ) {\n\n\tLine.call( this, geometry, material );\n\n\tthis.type = 'LineSegments';\n\n}\n\nLineSegments.prototype = Object.assign( Object.create( Line.prototype ), {\n\n\tconstructor: LineSegments,\n\n\tisLineSegments: true,\n\n\tcomputeLineDistances: ( function () {\n\n\t\tvar start = new Vector3();\n\t\tvar end = new Vector3();\n\n\t\treturn function computeLineDistances() {\n\n\t\t\tvar geometry = this.geometry;\n\n\t\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t\t// we assume non-indexed geometry\n\n\t\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\t\tvar positionAttribute = geometry.attributes.position;\n\t\t\t\t\tvar lineDistances = [];\n\n\t\t\t\t\tfor ( var i = 0, l = positionAttribute.count; i < l; i += 2 ) {\n\n\t\t\t\t\t\tstart.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t\t\tend.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + start.distanceTo( end );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgeometry.addAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t\t}\n\n\t\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\t\tvar vertices = geometry.vertices;\n\t\t\t\tvar lineDistances = geometry.lineDistances;\n\n\t\t\t\tfor ( var i = 0, l = vertices.length; i < l; i += 2 ) {\n\n\t\t\t\t\tstart.copy( vertices[ i ] );\n\t\t\t\t\tend.copy( vertices[ i + 1 ] );\n\n\t\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + start.distanceTo( end );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}() )\n\n} );\n\n/**\n * @author mgreter / http://github.com/mgreter\n */\n\nfunction LineLoop( geometry, material ) {\n\n\tLine.call( this, geometry, material );\n\n\tthis.type = 'LineLoop';\n\n}\n\nLineLoop.prototype = Object.assign( Object.create( Line.prototype ), {\n\n\tconstructor: LineLoop,\n\n\tisLineLoop: true,\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n *  color: <hex>,\n *  opacity: <float>,\n *  map: new THREE.Texture( <Image> ),\n *\n *  size: <float>,\n *  sizeAttenuation: <bool>\n *\n *  morphTargets: <bool>\n * }\n */\n\nfunction PointsMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'PointsMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\n\tthis.size = 1;\n\tthis.sizeAttenuation = true;\n\n\tthis.morphTargets = false;\n\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nPointsMaterial.prototype = Object.create( Material.prototype );\nPointsMaterial.prototype.constructor = PointsMaterial;\n\nPointsMaterial.prototype.isPointsMaterial = true;\n\nPointsMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.size = source.size;\n\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Points( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Points';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new PointsMaterial( { color: Math.random() * 0xffffff } );\n\n}\n\nPoints.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Points,\n\n\tisPoints: true,\n\n\traycast: ( function () {\n\n\t\tvar inverseMatrix = new Matrix4();\n\t\tvar ray = new Ray();\n\t\tvar sphere = new Sphere();\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tvar object = this;\n\t\t\tvar geometry = this.geometry;\n\t\t\tvar matrixWorld = this.matrixWorld;\n\t\t\tvar threshold = raycaster.params.Points.threshold;\n\n\t\t\t// Checking boundingSphere distance to ray\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\tsphere.copy( geometry.boundingSphere );\n\t\t\tsphere.applyMatrix4( matrixWorld );\n\t\t\tsphere.radius += threshold;\n\n\t\t\tif ( raycaster.ray.intersectsSphere( sphere ) === false ) return;\n\n\t\t\t//\n\n\t\t\tinverseMatrix.getInverse( matrixWorld );\n\t\t\tray.copy( raycaster.ray ).applyMatrix4( inverseMatrix );\n\n\t\t\tvar localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\t\tvar localThresholdSq = localThreshold * localThreshold;\n\t\t\tvar position = new Vector3();\n\t\t\tvar intersectPoint = new Vector3();\n\n\t\t\tfunction testPoint( point, index ) {\n\n\t\t\t\tvar rayPointDistanceSq = ray.distanceSqToPoint( point );\n\n\t\t\t\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\t\t\t\tray.closestPointToPoint( point, intersectPoint );\n\t\t\t\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\t\t\t\tpoint: intersectPoint.clone(),\n\t\t\t\t\t\tindex: index,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tobject: object\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t\tvar index = geometry.index;\n\t\t\t\tvar attributes = geometry.attributes;\n\t\t\t\tvar positions = attributes.position.array;\n\n\t\t\t\tif ( index !== null ) {\n\n\t\t\t\t\tvar indices = index.array;\n\n\t\t\t\t\tfor ( var i = 0, il = indices.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar a = indices[ i ];\n\n\t\t\t\t\t\tposition.fromArray( positions, a * 3 );\n\n\t\t\t\t\t\ttestPoint( position, a );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfor ( var i = 0, l = positions.length / 3; i < l; i ++ ) {\n\n\t\t\t\t\t\tposition.fromArray( positions, i * 3 );\n\n\t\t\t\t\t\ttestPoint( position, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tvar vertices = geometry.vertices;\n\n\t\t\t\tfor ( var i = 0, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\t\ttestPoint( vertices[ i ], i );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}() ),\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction VideoTexture( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.generateMipmaps = false;\n\n}\n\nVideoTexture.prototype = Object.assign( Object.create( Texture.prototype ), {\n\n\tconstructor: VideoTexture,\n\n\tisVideoTexture: true,\n\n\tupdate: function () {\n\n\t\tvar video = this.image;\n\n\t\tif ( video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tthis.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction CompressedTexture( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { width: width, height: height };\n\tthis.mipmaps = mipmaps;\n\n\t// no flipping for cube textures\n\t// (also flipping doesn't work for compressed textures )\n\n\tthis.flipY = false;\n\n\t// can't generate mipmaps for compressed textures\n\t// mips must be embedded in DDS files\n\n\tthis.generateMipmaps = false;\n\n}\n\nCompressedTexture.prototype = Object.create( Texture.prototype );\nCompressedTexture.prototype.constructor = CompressedTexture;\n\nCompressedTexture.prototype.isCompressedTexture = true;\n\n/**\n * @author Matt DesLauriers / @mattdesl\n * @author atix / arthursilber.de\n */\n\nfunction DepthTexture( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {\n\n\tformat = format !== undefined ? format : DepthFormat;\n\n\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );\n\n\t}\n\n\tif ( type === undefined && format === DepthFormat ) type = UnsignedShortType;\n\tif ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.image = { width: width, height: height };\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.flipY = false;\n\tthis.generateMipmaps\t= false;\n\n}\n\nDepthTexture.prototype = Object.create( Texture.prototype );\nDepthTexture.prototype.constructor = DepthTexture;\nDepthTexture.prototype.isDepthTexture = true;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WireframeGeometry( geometry ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'WireframeGeometry';\n\n\t// buffer\n\n\tvar vertices = [];\n\n\t// helper variables\n\n\tvar i, j, l, o, ol;\n\tvar edge = [ 0, 0 ], edges = {}, e, edge1, edge2;\n\tvar key, keys = [ 'a', 'b', 'c' ];\n\tvar vertex;\n\n\t// different logic for Geometry and BufferGeometry\n\n\tif ( geometry && geometry.isGeometry ) {\n\n\t\t// create a data structure that contains all edges without duplicates\n\n\t\tvar faces = geometry.faces;\n\n\t\tfor ( i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tfor ( j = 0; j < 3; j ++ ) {\n\n\t\t\t\tedge1 = face[ keys[ j ] ];\n\t\t\t\tedge2 = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\t\tedge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates\n\t\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\t\tkey = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] };\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate vertices\n\n\t\tfor ( key in edges ) {\n\n\t\t\te = edges[ key ];\n\n\t\t\tvertex = geometry.vertices[ e.index1 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\tvertex = geometry.vertices[ e.index2 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t} else if ( geometry && geometry.isBufferGeometry ) {\n\n\t\tvar position, indices, groups;\n\t\tvar group, start, count;\n\t\tvar index1, index2;\n\n\t\tvertex = new Vector3();\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\t// indexed BufferGeometry\n\n\t\t\tposition = geometry.attributes.position;\n\t\t\tindices = geometry.index;\n\t\t\tgroups = geometry.groups;\n\n\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\tgroups = [ { start: 0, count: indices.count, materialIndex: 0 } ];\n\n\t\t\t}\n\n\t\t\t// create a data structure that contains all eges without duplicates\n\n\t\t\tfor ( o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\tgroup = groups[ o ];\n\n\t\t\t\tstart = group.start;\n\t\t\t\tcount = group.count;\n\n\t\t\t\tfor ( i = start, l = ( start + count ); i < l; i += 3 ) {\n\n\t\t\t\t\tfor ( j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\tedge1 = indices.getX( i + j );\n\t\t\t\t\t\tedge2 = indices.getX( i + ( j + 1 ) % 3 );\n\t\t\t\t\t\tedge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates\n\t\t\t\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\t\t\t\tkey = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\t\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] };\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// generate vertices\n\n\t\t\tfor ( key in edges ) {\n\n\t\t\t\te = edges[ key ];\n\n\t\t\t\tvertex.fromBufferAttribute( position, e.index1 );\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\tvertex.fromBufferAttribute( position, e.index2 );\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// non-indexed BufferGeometry\n\n\t\t\tposition = geometry.attributes.position;\n\n\t\t\tfor ( i = 0, l = ( position.count / 3 ); i < l; i ++ ) {\n\n\t\t\t\tfor ( j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t// three edges per triangle, an edge is represented as (index1, index2)\n\t\t\t\t\t// e.g. the first triangle has the following edges: (0,1),(1,2),(2,0)\n\n\t\t\t\t\tindex1 = 3 * i + j;\n\t\t\t\t\tvertex.fromBufferAttribute( position, index1 );\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\tindex2 = 3 * i + ( ( j + 1 ) % 3 );\n\t\t\t\t\tvertex.fromBufferAttribute( position, index2 );\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n}\n\nWireframeGeometry.prototype = Object.create( BufferGeometry.prototype );\nWireframeGeometry.prototype.constructor = WireframeGeometry;\n\n/**\n * @author zz85 / https://github.com/zz85\n * @author Mugen87 / https://github.com/Mugen87\n *\n * Parametric Surfaces Geometry\n * based on the brilliant article by @prideout http://prideout.net/blog/?p=44\n */\n\n// ParametricGeometry\n\nfunction ParametricGeometry( func, slices, stacks ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ParametricGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\tthis.fromBufferGeometry( new ParametricBufferGeometry( func, slices, stacks ) );\n\tthis.mergeVertices();\n\n}\n\nParametricGeometry.prototype = Object.create( Geometry.prototype );\nParametricGeometry.prototype.constructor = ParametricGeometry;\n\n// ParametricBufferGeometry\n\nfunction ParametricBufferGeometry( func, slices, stacks ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ParametricBufferGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\tvar EPS = 0.00001;\n\n\tvar normal = new Vector3();\n\n\tvar p0 = new Vector3(), p1 = new Vector3();\n\tvar pu = new Vector3(), pv = new Vector3();\n\n\tvar i, j;\n\n\tif ( func.length < 3 ) {\n\n\t\tconsole.error( 'THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter.' );\n\n\t}\n\n\t// generate vertices, normals and uvs\n\n\tvar sliceCount = slices + 1;\n\n\tfor ( i = 0; i <= stacks; i ++ ) {\n\n\t\tvar v = i / stacks;\n\n\t\tfor ( j = 0; j <= slices; j ++ ) {\n\n\t\t\tvar u = j / slices;\n\n\t\t\t// vertex\n\n\t\t\tfunc( u, v, p0 );\n\t\t\tvertices.push( p0.x, p0.y, p0.z );\n\n\t\t\t// normal\n\n\t\t\t// approximate tangent vectors via finite differences\n\n\t\t\tif ( u - EPS >= 0 ) {\n\n\t\t\t\tfunc( u - EPS, v, p1 );\n\t\t\t\tpu.subVectors( p0, p1 );\n\n\t\t\t} else {\n\n\t\t\t\tfunc( u + EPS, v, p1 );\n\t\t\t\tpu.subVectors( p1, p0 );\n\n\t\t\t}\n\n\t\t\tif ( v - EPS >= 0 ) {\n\n\t\t\t\tfunc( u, v - EPS, p1 );\n\t\t\t\tpv.subVectors( p0, p1 );\n\n\t\t\t} else {\n\n\t\t\t\tfunc( u, v + EPS, p1 );\n\t\t\t\tpv.subVectors( p1, p0 );\n\n\t\t\t}\n\n\t\t\t// cross product of tangent vectors returns surface normal\n\n\t\t\tnormal.crossVectors( pu, pv ).normalize();\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( u, v );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( i = 0; i < stacks; i ++ ) {\n\n\t\tfor ( j = 0; j < slices; j ++ ) {\n\n\t\t\tvar a = i * sliceCount + j;\n\t\t\tvar b = i * sliceCount + j + 1;\n\t\t\tvar c = ( i + 1 ) * sliceCount + j + 1;\n\t\t\tvar d = ( i + 1 ) * sliceCount + j;\n\n\t\t\t// faces one and two\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nParametricBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nParametricBufferGeometry.prototype.constructor = ParametricBufferGeometry;\n\n/**\n * @author clockworkgeek / https://github.com/clockworkgeek\n * @author timothypratley / https://github.com/timothypratley\n * @author WestLangley / http://github.com/WestLangley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// PolyhedronGeometry\n\nfunction PolyhedronGeometry( vertices, indices, radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'PolyhedronGeometry';\n\n\tthis.parameters = {\n\t\tvertices: vertices,\n\t\tindices: indices,\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new PolyhedronBufferGeometry( vertices, indices, radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nPolyhedronGeometry.prototype = Object.create( Geometry.prototype );\nPolyhedronGeometry.prototype.constructor = PolyhedronGeometry;\n\n// PolyhedronBufferGeometry\n\nfunction PolyhedronBufferGeometry( vertices, indices, radius, detail ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'PolyhedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tvertices: vertices,\n\t\tindices: indices,\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tradius = radius || 1;\n\tdetail = detail || 0;\n\n\t// default buffer data\n\n\tvar vertexBuffer = [];\n\tvar uvBuffer = [];\n\n\t// the subdivision creates the vertex buffer data\n\n\tsubdivide( detail );\n\n\t// all vertices should lie on a conceptual sphere with a given radius\n\n\tappplyRadius( radius );\n\n\t// finally, create the uv data\n\n\tgenerateUVs();\n\n\t// build non-indexed geometry\n\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) );\n\n\tif ( detail === 0 ) {\n\n\t\tthis.computeVertexNormals(); // flat normals\n\n\t} else {\n\n\t\tthis.normalizeNormals(); // smooth normals\n\n\t}\n\n\t// helper functions\n\n\tfunction subdivide( detail ) {\n\n\t\tvar a = new Vector3();\n\t\tvar b = new Vector3();\n\t\tvar c = new Vector3();\n\n\t\t// iterate over all faces and apply a subdivison with the given detail value\n\n\t\tfor ( var i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t// get the vertices of the face\n\n\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t// perform subdivision\n\n\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t}\n\n\t}\n\n\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\tvar cols = Math.pow( 2, detail );\n\n\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\tvar v = [];\n\n\t\tvar i, j;\n\n\t\t// construct all of the vertices for this subdivision\n\n\t\tfor ( i = 0; i <= cols; i ++ ) {\n\n\t\t\tv[ i ] = [];\n\n\t\t\tvar aj = a.clone().lerp( c, i / cols );\n\t\t\tvar bj = b.clone().lerp( c, i / cols );\n\n\t\t\tvar rows = cols - i;\n\n\t\t\tfor ( j = 0; j <= rows; j ++ ) {\n\n\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// construct all of the faces\n\n\t\tfor ( i = 0; i < cols; i ++ ) {\n\n\t\t\tfor ( j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\tvar k = Math.floor( j / 2 );\n\n\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction appplyRadius( radius ) {\n\n\t\tvar vertex = new Vector3();\n\n\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\tfor ( var i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t}\n\n\t}\n\n\tfunction generateUVs() {\n\n\t\tvar vertex = new Vector3();\n\n\t\tfor ( var i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\tvar u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\tvar v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t}\n\n\t\tcorrectUVs();\n\n\t\tcorrectSeam();\n\n\t}\n\n\tfunction correctSeam() {\n\n\t\t// handle case when face straddles the seam, see #3269\n\n\t\tfor ( var i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t// uv data of a single face\n\n\t\t\tvar x0 = uvBuffer[ i + 0 ];\n\t\t\tvar x1 = uvBuffer[ i + 2 ];\n\t\t\tvar x2 = uvBuffer[ i + 4 ];\n\n\t\t\tvar max = Math.max( x0, x1, x2 );\n\t\t\tvar min = Math.min( x0, x1, x2 );\n\n\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction pushVertex( vertex ) {\n\n\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t}\n\n\tfunction getVertexByIndex( index, vertex ) {\n\n\t\tvar stride = index * 3;\n\n\t\tvertex.x = vertices[ stride + 0 ];\n\t\tvertex.y = vertices[ stride + 1 ];\n\t\tvertex.z = vertices[ stride + 2 ];\n\n\t}\n\n\tfunction correctUVs() {\n\n\t\tvar a = new Vector3();\n\t\tvar b = new Vector3();\n\t\tvar c = new Vector3();\n\n\t\tvar centroid = new Vector3();\n\n\t\tvar uvA = new Vector2();\n\t\tvar uvB = new Vector2();\n\t\tvar uvC = new Vector2();\n\n\t\tfor ( var i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\tvar azi = azimuth( centroid );\n\n\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t}\n\n\t}\n\n\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t}\n\n\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t}\n\n\t}\n\n\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\tfunction azimuth( vector ) {\n\n\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t}\n\n\n\t// Angle above the XZ plane.\n\n\tfunction inclination( vector ) {\n\n\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t}\n\n}\n\nPolyhedronBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nPolyhedronBufferGeometry.prototype.constructor = PolyhedronBufferGeometry;\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// TetrahedronGeometry\n\nfunction TetrahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TetrahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new TetrahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nTetrahedronGeometry.prototype = Object.create( Geometry.prototype );\nTetrahedronGeometry.prototype.constructor = TetrahedronGeometry;\n\n// TetrahedronBufferGeometry\n\nfunction TetrahedronBufferGeometry( radius, detail ) {\n\n\tvar vertices = [\n\t\t1, 1, 1, \t- 1, - 1, 1, \t- 1, 1, - 1, \t1, - 1, - 1\n\t];\n\n\tvar indices = [\n\t\t2, 1, 0, \t0, 3, 2,\t1, 3, 0,\t2, 3, 1\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'TetrahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nTetrahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nTetrahedronBufferGeometry.prototype.constructor = TetrahedronBufferGeometry;\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// OctahedronGeometry\n\nfunction OctahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'OctahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new OctahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nOctahedronGeometry.prototype = Object.create( Geometry.prototype );\nOctahedronGeometry.prototype.constructor = OctahedronGeometry;\n\n// OctahedronBufferGeometry\n\nfunction OctahedronBufferGeometry( radius, detail ) {\n\n\tvar vertices = [\n\t\t1, 0, 0, \t- 1, 0, 0,\t0, 1, 0,\n\t\t0, - 1, 0, \t0, 0, 1,\t0, 0, - 1\n\t];\n\n\tvar indices = [\n\t\t0, 2, 4,\t0, 4, 3,\t0, 3, 5,\n\t\t0, 5, 2,\t1, 2, 5,\t1, 5, 3,\n\t\t1, 3, 4,\t1, 4, 2\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'OctahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nOctahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nOctahedronBufferGeometry.prototype.constructor = OctahedronBufferGeometry;\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// IcosahedronGeometry\n\nfunction IcosahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'IcosahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new IcosahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nIcosahedronGeometry.prototype = Object.create( Geometry.prototype );\nIcosahedronGeometry.prototype.constructor = IcosahedronGeometry;\n\n// IcosahedronBufferGeometry\n\nfunction IcosahedronBufferGeometry( radius, detail ) {\n\n\tvar t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\tvar vertices = [\n\t\t- 1, t, 0, \t1, t, 0, \t- 1, - t, 0, \t1, - t, 0,\n\t\t 0, - 1, t, \t0, 1, t,\t0, - 1, - t, \t0, 1, - t,\n\t\t t, 0, - 1, \tt, 0, 1, \t- t, 0, - 1, \t- t, 0, 1\n\t];\n\n\tvar indices = [\n\t\t 0, 11, 5, \t0, 5, 1, \t0, 1, 7, \t0, 7, 10, \t0, 10, 11,\n\t\t 1, 5, 9, \t5, 11, 4,\t11, 10, 2,\t10, 7, 6,\t7, 1, 8,\n\t\t 3, 9, 4, \t3, 4, 2,\t3, 2, 6,\t3, 6, 8,\t3, 8, 9,\n\t\t 4, 9, 5, \t2, 4, 11,\t6, 2, 10,\t8, 6, 7,\t9, 8, 1\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'IcosahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nIcosahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nIcosahedronBufferGeometry.prototype.constructor = IcosahedronBufferGeometry;\n\n/**\n * @author Abe Pazos / https://hamoid.com\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// DodecahedronGeometry\n\nfunction DodecahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'DodecahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new DodecahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nDodecahedronGeometry.prototype = Object.create( Geometry.prototype );\nDodecahedronGeometry.prototype.constructor = DodecahedronGeometry;\n\n// DodecahedronBufferGeometry\n\nfunction DodecahedronBufferGeometry( radius, detail ) {\n\n\tvar t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\tvar r = 1 / t;\n\n\tvar vertices = [\n\n\t\t// (±1, ±1, ±1)\n\t\t- 1, - 1, - 1,\t- 1, - 1, 1,\n\t\t- 1, 1, - 1, - 1, 1, 1,\n\t\t1, - 1, - 1, 1, - 1, 1,\n\t\t1, 1, - 1, 1, 1, 1,\n\n\t\t// (0, ±1/φ, ±φ)\n\t\t 0, - r, - t, 0, - r, t,\n\t\t 0, r, - t, 0, r, t,\n\n\t\t// (±1/φ, ±φ, 0)\n\t\t- r, - t, 0, - r, t, 0,\n\t\t r, - t, 0, r, t, 0,\n\n\t\t// (±φ, 0, ±1/φ)\n\t\t- t, 0, - r, t, 0, - r,\n\t\t- t, 0, r, t, 0, r\n\t];\n\n\tvar indices = [\n\t\t3, 11, 7, \t3, 7, 15, \t3, 15, 13,\n\t\t7, 19, 17, \t7, 17, 6, \t7, 6, 15,\n\t\t17, 4, 8, \t17, 8, 10, \t17, 10, 6,\n\t\t8, 0, 16, \t8, 16, 2, \t8, 2, 10,\n\t\t0, 12, 1, \t0, 1, 18, \t0, 18, 16,\n\t\t6, 10, 2, \t6, 2, 13, \t6, 13, 15,\n\t\t2, 16, 18, \t2, 18, 3, \t2, 3, 13,\n\t\t18, 1, 9, \t18, 9, 11, \t18, 11, 3,\n\t\t4, 14, 12, \t4, 12, 0, \t4, 0, 8,\n\t\t11, 9, 5, \t11, 5, 19, \t11, 19, 7,\n\t\t19, 5, 14, \t19, 14, 4, \t19, 4, 17,\n\t\t1, 12, 14, \t1, 14, 5, \t1, 5, 9\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'DodecahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nDodecahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nDodecahedronBufferGeometry.prototype.constructor = DodecahedronBufferGeometry;\n\n/**\n * @author oosmoxiecode / https://github.com/oosmoxiecode\n * @author WestLangley / https://github.com/WestLangley\n * @author zz85 / https://github.com/zz85\n * @author miningold / https://github.com/miningold\n * @author jonobr1 / https://github.com/jonobr1\n * @author Mugen87 / https://github.com/Mugen87\n *\n */\n\n// TubeGeometry\n\nfunction TubeGeometry( path, tubularSegments, radius, radialSegments, closed, taper ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TubeGeometry';\n\n\tthis.parameters = {\n\t\tpath: path,\n\t\ttubularSegments: tubularSegments,\n\t\tradius: radius,\n\t\tradialSegments: radialSegments,\n\t\tclosed: closed\n\t};\n\n\tif ( taper !== undefined ) console.warn( 'THREE.TubeGeometry: taper has been removed.' );\n\n\tvar bufferGeometry = new TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed );\n\n\t// expose internals\n\n\tthis.tangents = bufferGeometry.tangents;\n\tthis.normals = bufferGeometry.normals;\n\tthis.binormals = bufferGeometry.binormals;\n\n\t// create geometry\n\n\tthis.fromBufferGeometry( bufferGeometry );\n\tthis.mergeVertices();\n\n}\n\nTubeGeometry.prototype = Object.create( Geometry.prototype );\nTubeGeometry.prototype.constructor = TubeGeometry;\n\n// TubeBufferGeometry\n\nfunction TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TubeBufferGeometry';\n\n\tthis.parameters = {\n\t\tpath: path,\n\t\ttubularSegments: tubularSegments,\n\t\tradius: radius,\n\t\tradialSegments: radialSegments,\n\t\tclosed: closed\n\t};\n\n\ttubularSegments = tubularSegments || 64;\n\tradius = radius || 1;\n\tradialSegments = radialSegments || 8;\n\tclosed = closed || false;\n\n\tvar frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t// expose internals\n\n\tthis.tangents = frames.tangents;\n\tthis.normals = frames.normals;\n\tthis.binormals = frames.binormals;\n\n\t// helper variables\n\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\tvar uv = new Vector2();\n\tvar P = new Vector3();\n\n\tvar i, j;\n\n\t// buffer\n\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\tvar indices = [];\n\n\t// create buffer data\n\n\tgenerateBufferData();\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// functions\n\n\tfunction generateBufferData() {\n\n\t\tfor ( i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\tgenerateSegment( i );\n\n\t\t}\n\n\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t// at the regular position on the given path\n\t\t//\n\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t// uvs are generated in a separate function.\n\t\t// this makes it easy compute correct values for closed geometries\n\n\t\tgenerateUVs();\n\n\t\t// finally create faces\n\n\t\tgenerateIndices();\n\n\t}\n\n\tfunction generateSegment( i ) {\n\n\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\tP = path.getPointAt( i / tubularSegments, P );\n\n\t\t// retrieve corresponding normal and binormal\n\n\t\tvar N = frames.normals[ i ];\n\t\tvar B = frames.binormals[ i ];\n\n\t\t// generate normals and vertices for the current segment\n\n\t\tfor ( j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tvar v = j / radialSegments * Math.PI * 2;\n\n\t\t\tvar sin = Math.sin( v );\n\t\t\tvar cos = - Math.cos( v );\n\n\t\t\t// normal\n\n\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\tnormal.normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t}\n\n\tfunction generateIndices() {\n\n\t\tfor ( j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\tvar a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tvar b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tvar c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tvar d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction generateUVs() {\n\n\t\tfor ( i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\tfor ( j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nTubeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTubeBufferGeometry.prototype.constructor = TubeBufferGeometry;\n\n/**\n * @author oosmoxiecode\n * @author Mugen87 / https://github.com/Mugen87\n *\n * based on http://www.blackpawn.com/texts/pqtorus/\n */\n\n// TorusKnotGeometry\n\nfunction TorusKnotGeometry( radius, tube, tubularSegments, radialSegments, p, q, heightScale ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TorusKnotGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\ttubularSegments: tubularSegments,\n\t\tradialSegments: radialSegments,\n\t\tp: p,\n\t\tq: q\n\t};\n\n\tif ( heightScale !== undefined ) console.warn( 'THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.' );\n\n\tthis.fromBufferGeometry( new TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) );\n\tthis.mergeVertices();\n\n}\n\nTorusKnotGeometry.prototype = Object.create( Geometry.prototype );\nTorusKnotGeometry.prototype.constructor = TorusKnotGeometry;\n\n// TorusKnotBufferGeometry\n\nfunction TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TorusKnotBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\ttubularSegments: tubularSegments,\n\t\tradialSegments: radialSegments,\n\t\tp: p,\n\t\tq: q\n\t};\n\n\tradius = radius || 1;\n\ttube = tube || 0.4;\n\ttubularSegments = Math.floor( tubularSegments ) || 64;\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\tp = p || 2;\n\tq = q || 3;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar i, j;\n\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\n\tvar P1 = new Vector3();\n\tvar P2 = new Vector3();\n\n\tvar B = new Vector3();\n\tvar T = new Vector3();\n\tvar N = new Vector3();\n\n\t// generate vertices, normals and uvs\n\n\tfor ( i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segement\n\n\t\tvar u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t// calculate orthonormal basis\n\n\t\tT.subVectors( P2, P1 );\n\t\tN.addVectors( P2, P1 );\n\t\tB.crossVectors( T, N );\n\t\tN.crossVectors( B, T );\n\n\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\tB.normalize();\n\t\tN.normalize();\n\n\t\tfor ( j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n\t\t\tvar v = j / radialSegments * Math.PI * 2;\n\t\t\tvar cx = - tube * Math.cos( v );\n\t\t\tvar cy = tube * Math.sin( v );\n\n\t\t\t// now calculate the final vertex position.\n\t\t\t// first we orient the extrusion with our basis vectos, then we add it to the current position on the curve\n\n\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\n\t\t\tnormal.subVectors( vertex, P1 ).normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( i / tubularSegments );\n\t\t\tuvs.push( j / radialSegments );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( j = 1; j <= tubularSegments; j ++ ) {\n\n\t\tfor ( i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t// indices\n\n\t\t\tvar a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\tvar b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\tvar c = ( radialSegments + 1 ) * j + i;\n\t\t\tvar d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// this function calculates the current position on the torus curve\n\n\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\tvar cu = Math.cos( u );\n\t\tvar su = Math.sin( u );\n\t\tvar quOverP = q / p * u;\n\t\tvar cs = Math.cos( quOverP );\n\n\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t}\n\n}\n\nTorusKnotBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTorusKnotBufferGeometry.prototype.constructor = TorusKnotBufferGeometry;\n\n/**\n * @author oosmoxiecode\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// TorusGeometry\n\nfunction TorusGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TorusGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\tradialSegments: radialSegments,\n\t\ttubularSegments: tubularSegments,\n\t\tarc: arc\n\t};\n\n\tthis.fromBufferGeometry( new TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) );\n\tthis.mergeVertices();\n\n}\n\nTorusGeometry.prototype = Object.create( Geometry.prototype );\nTorusGeometry.prototype.constructor = TorusGeometry;\n\n// TorusBufferGeometry\n\nfunction TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TorusBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\tradialSegments: radialSegments,\n\t\ttubularSegments: tubularSegments,\n\t\tarc: arc\n\t};\n\n\tradius = radius || 1;\n\ttube = tube || 0.4;\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\ttubularSegments = Math.floor( tubularSegments ) || 6;\n\tarc = arc || Math.PI * 2;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar center = new Vector3();\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\n\tvar j, i;\n\n\t// generate vertices, normals and uvs\n\n\tfor ( j = 0; j <= radialSegments; j ++ ) {\n\n\t\tfor ( i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\tvar u = i / tubularSegments * arc;\n\t\t\tvar v = j / radialSegments * Math.PI * 2;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\tcenter.y = radius * Math.sin( u );\n\t\t\tnormal.subVectors( vertex, center ).normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( i / tubularSegments );\n\t\t\tuvs.push( j / radialSegments );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( j = 1; j <= radialSegments; j ++ ) {\n\n\t\tfor ( i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t// indices\n\n\t\t\tvar a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\tvar b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\tvar c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\tvar d = ( tubularSegments + 1 ) * j + i;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nTorusBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTorusBufferGeometry.prototype.constructor = TorusBufferGeometry;\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n * Port from https://github.com/mapbox/earcut (v2.1.2)\n */\n\nvar Earcut = {\n\n\ttriangulate: function ( data, holeIndices, dim ) {\n\n\t\tdim = dim || 2;\n\n\t\tvar hasHoles = holeIndices && holeIndices.length,\n\t\t\touterLen = hasHoles ? holeIndices[ 0 ] * dim : data.length,\n\t\t\touterNode = linkedList( data, 0, outerLen, dim, true ),\n\t\t\ttriangles = [];\n\n\t\tif ( ! outerNode ) return triangles;\n\n\t\tvar minX, minY, maxX, maxY, x, y, invSize;\n\n\t\tif ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim );\n\n\t\t// if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n\n\t\tif ( data.length > 80 * dim ) {\n\n\t\t\tminX = maxX = data[ 0 ];\n\t\t\tminY = maxY = data[ 1 ];\n\n\t\t\tfor ( var i = dim; i < outerLen; i += dim ) {\n\n\t\t\t\tx = data[ i ];\n\t\t\t\ty = data[ i + 1 ];\n\t\t\t\tif ( x < minX ) minX = x;\n\t\t\t\tif ( y < minY ) minY = y;\n\t\t\t\tif ( x > maxX ) maxX = x;\n\t\t\t\tif ( y > maxY ) maxY = y;\n\n\t\t\t}\n\n\t\t\t// minX, minY and invSize are later used to transform coords into integers for z-order calculation\n\n\t\t\tinvSize = Math.max( maxX - minX, maxY - minY );\n\t\t\tinvSize = invSize !== 0 ? 1 / invSize : 0;\n\n\t\t}\n\n\t\tearcutLinked( outerNode, triangles, dim, minX, minY, invSize );\n\n\t\treturn triangles;\n\n\t}\n\n};\n\n// create a circular doubly linked list from polygon points in the specified winding order\n\nfunction linkedList( data, start, end, dim, clockwise ) {\n\n\tvar i, last;\n\n\tif ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) {\n\n\t\tfor ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t} else {\n\n\t\tfor ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t}\n\n\tif ( last && equals( last, last.next ) ) {\n\n\t\tremoveNode( last );\n\t\tlast = last.next;\n\n\t}\n\n\treturn last;\n\n}\n\n// eliminate colinear or duplicate points\n\nfunction filterPoints( start, end ) {\n\n\tif ( ! start ) return start;\n\tif ( ! end ) end = start;\n\n\tvar p = start, again;\n\n\tdo {\n\n\t\tagain = false;\n\n\t\tif ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) {\n\n\t\t\tremoveNode( p );\n\t\t\tp = end = p.prev;\n\t\t\tif ( p === p.next ) break;\n\t\t\tagain = true;\n\n\t\t} else {\n\n\t\t\tp = p.next;\n\n\t\t}\n\n\t} while ( again || p !== end );\n\n\treturn end;\n\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\n\nfunction earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) {\n\n\tif ( ! ear ) return;\n\n\t// interlink polygon nodes in z-order\n\n\tif ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize );\n\n\tvar stop = ear, prev, next;\n\n\t// iterate through ears, slicing them one by one\n\n\twhile ( ear.prev !== ear.next ) {\n\n\t\tprev = ear.prev;\n\t\tnext = ear.next;\n\n\t\tif ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) {\n\n\t\t\t// cut off the triangle\n\t\t\ttriangles.push( prev.i / dim );\n\t\t\ttriangles.push( ear.i / dim );\n\t\t\ttriangles.push( next.i / dim );\n\n\t\t\tremoveNode( ear );\n\n\t\t\t// skipping the next vertice leads to less sliver triangles\n\t\t\tear = next.next;\n\t\t\tstop = next.next;\n\n\t\t\tcontinue;\n\n\t\t}\n\n\t\tear = next;\n\n\t\t// if we looped through the whole remaining polygon and can't find any more ears\n\n\t\tif ( ear === stop ) {\n\n\t\t\t// try filtering points and slicing again\n\n\t\t\tif ( ! pass ) {\n\n\t\t\t\tearcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 );\n\n\t\t\t\t// if this didn't work, try curing all small self-intersections locally\n\n\t\t\t} else if ( pass === 1 ) {\n\n\t\t\t\tear = cureLocalIntersections( ear, triangles, dim );\n\t\t\t\tearcutLinked( ear, triangles, dim, minX, minY, invSize, 2 );\n\n\t\t\t// as a last resort, try splitting the remaining polygon into two\n\n\t\t\t} else if ( pass === 2 ) {\n\n\t\t\t\tsplitEarcut( ear, triangles, dim, minX, minY, invSize );\n\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\n\nfunction isEar( ear ) {\n\n\tvar a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// now make sure we don't have other points inside the potential ear\n\tvar p = ear.next.next;\n\n\twhile ( p !== ear.prev ) {\n\n\t\tif ( pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) && area( p.prev, p, p.next ) >= 0 ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction isEarHashed( ear, minX, minY, invSize ) {\n\n\tvar a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// triangle bbox; min & max are calculated like this for speed\n\n\tvar minTX = a.x < b.x ? ( a.x < c.x ? a.x : c.x ) : ( b.x < c.x ? b.x : c.x ),\n\t\tminTY = a.y < b.y ? ( a.y < c.y ? a.y : c.y ) : ( b.y < c.y ? b.y : c.y ),\n\t\tmaxTX = a.x > b.x ? ( a.x > c.x ? a.x : c.x ) : ( b.x > c.x ? b.x : c.x ),\n\t\tmaxTY = a.y > b.y ? ( a.y > c.y ? a.y : c.y ) : ( b.y > c.y ? b.y : c.y );\n\n\t// z-order range for the current triangle bbox;\n\n\tvar minZ = zOrder( minTX, minTY, minX, minY, invSize ),\n\t\tmaxZ = zOrder( maxTX, maxTY, minX, minY, invSize );\n\n\t// first look for points inside the triangle in increasing z-order\n\n\tvar p = ear.nextZ;\n\n\twhile ( p && p.z <= maxZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.nextZ;\n\n\t}\n\n\t// then look for points in decreasing z-order\n\n\tp = ear.prevZ;\n\n\twhile ( p && p.z >= minZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\n\t\tp = p.prevZ;\n\n\t}\n\n\treturn true;\n\n}\n\n// go through all polygon nodes and cure small local self-intersections\n\nfunction cureLocalIntersections( start, triangles, dim ) {\n\n\tvar p = start;\n\n\tdo {\n\n\t\tvar a = p.prev, b = p.next.next;\n\n\t\tif ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) {\n\n\t\t\ttriangles.push( a.i / dim );\n\t\t\ttriangles.push( p.i / dim );\n\t\t\ttriangles.push( b.i / dim );\n\n\t\t\t// remove two nodes involved\n\n\t\t\tremoveNode( p );\n\t\t\tremoveNode( p.next );\n\n\t\t\tp = start = b;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn p;\n\n}\n\n// try splitting polygon into two and triangulate them independently\n\nfunction splitEarcut( start, triangles, dim, minX, minY, invSize ) {\n\n\t// look for a valid diagonal that divides the polygon into two\n\n\tvar a = start;\n\n\tdo {\n\n\t\tvar b = a.next.next;\n\n\t\twhile ( b !== a.prev ) {\n\n\t\t\tif ( a.i !== b.i && isValidDiagonal( a, b ) ) {\n\n\t\t\t\t// split the polygon in two by the diagonal\n\n\t\t\t\tvar c = splitPolygon( a, b );\n\n\t\t\t\t// filter colinear points around the cuts\n\n\t\t\t\ta = filterPoints( a, a.next );\n\t\t\t\tc = filterPoints( c, c.next );\n\n\t\t\t\t// run earcut on each half\n\n\t\t\t\tearcutLinked( a, triangles, dim, minX, minY, invSize );\n\t\t\t\tearcutLinked( c, triangles, dim, minX, minY, invSize );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tb = b.next;\n\n\t\t}\n\n\t\ta = a.next;\n\n\t} while ( a !== start );\n\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\n\nfunction eliminateHoles( data, holeIndices, outerNode, dim ) {\n\n\tvar queue = [], i, len, start, end, list;\n\n\tfor ( i = 0, len = holeIndices.length; i < len; i ++ ) {\n\n\t\tstart = holeIndices[ i ] * dim;\n\t\tend = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length;\n\t\tlist = linkedList( data, start, end, dim, false );\n\t\tif ( list === list.next ) list.steiner = true;\n\t\tqueue.push( getLeftmost( list ) );\n\n\t}\n\n\tqueue.sort( compareX );\n\n\t// process holes from left to right\n\n\tfor ( i = 0; i < queue.length; i ++ ) {\n\n\t\teliminateHole( queue[ i ], outerNode );\n\t\touterNode = filterPoints( outerNode, outerNode.next );\n\n\t}\n\n\treturn outerNode;\n\n}\n\nfunction compareX( a, b ) {\n\n\treturn a.x - b.x;\n\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\n\nfunction eliminateHole( hole, outerNode ) {\n\n\touterNode = findHoleBridge( hole, outerNode );\n\n\tif ( outerNode ) {\n\n\t\tvar b = splitPolygon( outerNode, hole );\n\n\t\tfilterPoints( b, b.next );\n\n\t}\n\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\n\nfunction findHoleBridge( hole, outerNode ) {\n\n\tvar p = outerNode,\n\t\thx = hole.x,\n\t\thy = hole.y,\n\t\tqx = - Infinity,\n\t\tm;\n\n\t// find a segment intersected by a ray from the hole's leftmost point to the left;\n\t// segment's endpoint with lesser x will be potential connection point\n\n\tdo {\n\n\t\tif ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) {\n\n\t\t\tvar x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y );\n\n\t\t\tif ( x <= hx && x > qx ) {\n\n\t\t\t\tqx = x;\n\n\t\t\t\tif ( x === hx ) {\n\n\t\t\t\t\tif ( hy === p.y ) return p;\n\t\t\t\t\tif ( hy === p.next.y ) return p.next;\n\n\t\t\t\t}\n\n\t\t\t\tm = p.x < p.next.x ? p : p.next;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== outerNode );\n\n\tif ( ! m ) return null;\n\n\tif ( hx === qx ) return m.prev; // hole touches outer segment; pick lower endpoint\n\n\t// look for points inside the triangle of hole point, segment intersection and endpoint;\n\t// if there are no points found, we have a valid connection;\n\t// otherwise choose the point of the minimum angle with the ray as connection point\n\n\tvar stop = m,\n\t\tmx = m.x,\n\t\tmy = m.y,\n\t\ttanMin = Infinity,\n\t\ttan;\n\n\tp = m.next;\n\n\twhile ( p !== stop ) {\n\n\t\tif ( hx >= p.x && p.x >= mx && hx !== p.x &&\n\t\t\t\t\t\tpointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) {\n\n\t\t\ttan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential\n\n\t\t\tif ( ( tan < tanMin || ( tan === tanMin && p.x > m.x ) ) && locallyInside( p, hole ) ) {\n\n\t\t\t\tm = p;\n\t\t\t\ttanMin = tan;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t}\n\n\treturn m;\n\n}\n\n// interlink polygon nodes in z-order\n\nfunction indexCurve( start, minX, minY, invSize ) {\n\n\tvar p = start;\n\n\tdo {\n\n\t\tif ( p.z === null ) p.z = zOrder( p.x, p.y, minX, minY, invSize );\n\t\tp.prevZ = p.prev;\n\t\tp.nextZ = p.next;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\tp.prevZ.nextZ = null;\n\tp.prevZ = null;\n\n\tsortLinked( p );\n\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\n\nfunction sortLinked( list ) {\n\n\tvar i, p, q, e, tail, numMerges, pSize, qSize, inSize = 1;\n\n\tdo {\n\n\t\tp = list;\n\t\tlist = null;\n\t\ttail = null;\n\t\tnumMerges = 0;\n\n\t\twhile ( p ) {\n\n\t\t\tnumMerges ++;\n\t\t\tq = p;\n\t\t\tpSize = 0;\n\n\t\t\tfor ( i = 0; i < inSize; i ++ ) {\n\n\t\t\t\tpSize ++;\n\t\t\t\tq = q.nextZ;\n\t\t\t\tif ( ! q ) break;\n\n\t\t\t}\n\n\t\t\tqSize = inSize;\n\n\t\t\twhile ( pSize > 0 || ( qSize > 0 && q ) ) {\n\n\t\t\t\tif ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) {\n\n\t\t\t\t\te = p;\n\t\t\t\t\tp = p.nextZ;\n\t\t\t\t\tpSize --;\n\n\t\t\t\t} else {\n\n\t\t\t\t\te = q;\n\t\t\t\t\tq = q.nextZ;\n\t\t\t\t\tqSize --;\n\n\t\t\t\t}\n\n\t\t\t\tif ( tail ) tail.nextZ = e;\n\t\t\t\telse list = e;\n\n\t\t\t\te.prevZ = tail;\n\t\t\t\ttail = e;\n\n\t\t\t}\n\n\t\t\tp = q;\n\n\t\t}\n\n\t\ttail.nextZ = null;\n\t\tinSize *= 2;\n\n\t} while ( numMerges > 1 );\n\n\treturn list;\n\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\n\nfunction zOrder( x, y, minX, minY, invSize ) {\n\n\t// coords are transformed into non-negative 15-bit integer range\n\n\tx = 32767 * ( x - minX ) * invSize;\n\ty = 32767 * ( y - minY ) * invSize;\n\n\tx = ( x | ( x << 8 ) ) & 0x00FF00FF;\n\tx = ( x | ( x << 4 ) ) & 0x0F0F0F0F;\n\tx = ( x | ( x << 2 ) ) & 0x33333333;\n\tx = ( x | ( x << 1 ) ) & 0x55555555;\n\n\ty = ( y | ( y << 8 ) ) & 0x00FF00FF;\n\ty = ( y | ( y << 4 ) ) & 0x0F0F0F0F;\n\ty = ( y | ( y << 2 ) ) & 0x33333333;\n\ty = ( y | ( y << 1 ) ) & 0x55555555;\n\n\treturn x | ( y << 1 );\n\n}\n\n// find the leftmost node of a polygon ring\n\nfunction getLeftmost( start ) {\n\n\tvar p = start, leftmost = start;\n\n\tdo {\n\n\t\tif ( p.x < leftmost.x ) leftmost = p;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn leftmost;\n\n}\n\n// check if a point lies within a convex triangle\n\nfunction pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) {\n\n\treturn ( cx - px ) * ( ay - py ) - ( ax - px ) * ( cy - py ) >= 0 &&\n\t ( ax - px ) * ( by - py ) - ( bx - px ) * ( ay - py ) >= 0 &&\n\t ( bx - px ) * ( cy - py ) - ( cx - px ) * ( by - py ) >= 0;\n\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\n\nfunction isValidDiagonal( a, b ) {\n\n\treturn a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) &&\n\t\tlocallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b );\n\n}\n\n// signed area of a triangle\n\nfunction area( p, q, r ) {\n\n\treturn ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y );\n\n}\n\n// check if two points are equal\n\nfunction equals( p1, p2 ) {\n\n\treturn p1.x === p2.x && p1.y === p2.y;\n\n}\n\n// check if two segments intersect\n\nfunction intersects( p1, q1, p2, q2 ) {\n\n\tif ( ( equals( p1, q1 ) && equals( p2, q2 ) ) ||\n\t\t\t( equals( p1, q2 ) && equals( p2, q1 ) ) ) return true;\n\n\treturn area( p1, q1, p2 ) > 0 !== area( p1, q1, q2 ) > 0 &&\n\t\t\t\t area( p2, q2, p1 ) > 0 !== area( p2, q2, q1 ) > 0;\n\n}\n\n// check if a polygon diagonal intersects any polygon segments\n\nfunction intersectsPolygon( a, b ) {\n\n\tvar p = a;\n\n\tdo {\n\n\t\tif ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n\t\t\t\t\t\tintersects( p, p.next, a, b ) ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn false;\n\n}\n\n// check if a polygon diagonal is locally inside the polygon\n\nfunction locallyInside( a, b ) {\n\n\treturn area( a.prev, a, a.next ) < 0 ?\n\t\tarea( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 :\n\t\tarea( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0;\n\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\n\nfunction middleInside( a, b ) {\n\n\tvar p = a,\n\t\tinside = false,\n\t\tpx = ( a.x + b.x ) / 2,\n\t\tpy = ( a.y + b.y ) / 2;\n\n\tdo {\n\n\t\tif ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y &&\n\t\t\t\t\t\t( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) ) {\n\n\t\t\tinside = ! inside;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn inside;\n\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\n\nfunction splitPolygon( a, b ) {\n\n\tvar a2 = new Node( a.i, a.x, a.y ),\n\t\tb2 = new Node( b.i, b.x, b.y ),\n\t\tan = a.next,\n\t\tbp = b.prev;\n\n\ta.next = b;\n\tb.prev = a;\n\n\ta2.next = an;\n\tan.prev = a2;\n\n\tb2.next = a2;\n\ta2.prev = b2;\n\n\tbp.next = b2;\n\tb2.prev = bp;\n\n\treturn b2;\n\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\n\nfunction insertNode( i, x, y, last ) {\n\n\tvar p = new Node( i, x, y );\n\n\tif ( ! last ) {\n\n\t\tp.prev = p;\n\t\tp.next = p;\n\n\t} else {\n\n\t\tp.next = last.next;\n\t\tp.prev = last;\n\t\tlast.next.prev = p;\n\t\tlast.next = p;\n\n\t}\n\n\treturn p;\n\n}\n\nfunction removeNode( p ) {\n\n\tp.next.prev = p.prev;\n\tp.prev.next = p.next;\n\n\tif ( p.prevZ ) p.prevZ.nextZ = p.nextZ;\n\tif ( p.nextZ ) p.nextZ.prevZ = p.prevZ;\n\n}\n\nfunction Node( i, x, y ) {\n\n\t// vertice index in coordinates array\n\tthis.i = i;\n\n\t// vertex coordinates\n\tthis.x = x;\n\tthis.y = y;\n\n\t// previous and next vertice nodes in a polygon ring\n\tthis.prev = null;\n\tthis.next = null;\n\n\t// z-order curve value\n\tthis.z = null;\n\n\t// previous and next nodes in z-order\n\tthis.prevZ = null;\n\tthis.nextZ = null;\n\n\t// indicates whether this is a steiner point\n\tthis.steiner = false;\n\n}\n\nfunction signedArea( data, start, end, dim ) {\n\n\tvar sum = 0;\n\n\tfor ( var i = start, j = end - dim; i < end; i += dim ) {\n\n\t\tsum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] );\n\t\tj = i;\n\n\t}\n\n\treturn sum;\n\n}\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n */\n\nvar ShapeUtils = {\n\n\t// calculate area of the contour polygon\n\n\tarea: function ( contour ) {\n\n\t\tvar n = contour.length;\n\t\tvar a = 0.0;\n\n\t\tfor ( var p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t}\n\n\t\treturn a * 0.5;\n\n\t},\n\n\tisClockWise: function ( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t},\n\n\ttriangulateShape: function ( contour, holes ) {\n\n\t\tvar vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\n\t\tvar holeIndices = []; // array of hole indices\n\t\tvar faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ]\n\n\t\tremoveDupEndPts( contour );\n\t\taddContour( vertices, contour );\n\n\t\t//\n\n\t\tvar holeIndex = contour.length;\n\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfor ( var i = 0; i < holes.length; i ++ ) {\n\n\t\t\tholeIndices.push( holeIndex );\n\t\t\tholeIndex += holes[ i ].length;\n\t\t\taddContour( vertices, holes[ i ] );\n\n\t\t}\n\n\t\t//\n\n\t\tvar triangles = Earcut.triangulate( vertices, holeIndices );\n\n\t\t//\n\n\t\tfor ( var i = 0; i < triangles.length; i += 3 ) {\n\n\t\t\tfaces.push( triangles.slice( i, i + 3 ) );\n\n\t\t}\n\n\t\treturn faces;\n\n\t}\n\n};\n\nfunction removeDupEndPts( points ) {\n\n\tvar l = points.length;\n\n\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\n\n\t\tpoints.pop();\n\n\t}\n\n}\n\nfunction addContour( vertices, contour ) {\n\n\tfor ( var i = 0; i < contour.length; i ++ ) {\n\n\t\tvertices.push( contour[ i ].x );\n\t\tvertices.push( contour[ i ].y );\n\n\t}\n\n}\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n * Creates extruded geometry from a path shape.\n *\n * parameters = {\n *\n *  curveSegments: <int>, // number of points on the curves\n *  steps: <int>, // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n *  depth: <float>, // Depth to extrude the shape\n *\n *  bevelEnabled: <bool>, // turn on bevel\n *  bevelThickness: <float>, // how deep into the original shape bevel goes\n *  bevelSize: <float>, // how far from shape outline is bevel\n *  bevelSegments: <int>, // number of bevel layers\n *\n *  extrudePath: <THREE.Curve> // curve to extrude shape along\n *\n *  UVGenerator: <Object> // object that provides UV generator functions\n *\n * }\n */\n\n// ExtrudeGeometry\n\nfunction ExtrudeGeometry( shapes, options ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ExtrudeGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\toptions: options\n\t};\n\n\tthis.fromBufferGeometry( new ExtrudeBufferGeometry( shapes, options ) );\n\tthis.mergeVertices();\n\n}\n\nExtrudeGeometry.prototype = Object.create( Geometry.prototype );\nExtrudeGeometry.prototype.constructor = ExtrudeGeometry;\n\nExtrudeGeometry.prototype.toJSON = function () {\n\n\tvar data = Geometry.prototype.toJSON.call( this );\n\n\tvar shapes = this.parameters.shapes;\n\tvar options = this.parameters.options;\n\n\treturn toJSON( shapes, options, data );\n\n};\n\n// ExtrudeBufferGeometry\n\nfunction ExtrudeBufferGeometry( shapes, options ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ExtrudeBufferGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\toptions: options\n\t};\n\n\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\tvar scope = this;\n\n\tvar verticesArray = [];\n\tvar uvArray = [];\n\n\tfor ( var i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\tvar shape = shapes[ i ];\n\t\taddShape( shape );\n\n\t}\n\n\t// build geometry\n\n\tthis.addAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) );\n\n\tthis.computeVertexNormals();\n\n\t// functions\n\n\tfunction addShape( shape ) {\n\n\t\tvar placeholder = [];\n\n\t\t// options\n\n\t\tvar curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\t\tvar steps = options.steps !== undefined ? options.steps : 1;\n\t\tvar depth = options.depth !== undefined ? options.depth : 100;\n\n\t\tvar bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\n\t\tvar bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 6;\n\t\tvar bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 2;\n\t\tvar bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\t\tvar extrudePath = options.extrudePath;\n\n\t\tvar uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator;\n\n\t\t// deprecated options\n\n\t\tif ( options.amount !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.ExtrudeBufferGeometry: amount has been renamed to depth.' );\n\t\t\tdepth = options.amount;\n\n\t\t}\n\n\t\t//\n\n\t\tvar extrudePts, extrudeByPath = false;\n\t\tvar splineTube, binormal, normal, position2;\n\n\t\tif ( extrudePath ) {\n\n\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\t\textrudeByPath = true;\n\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t\t// SETUP TNB variables\n\n\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\tsplineTube = extrudePath.computeFrenetFrames( steps, false );\n\n\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\tbinormal = new Vector3();\n\t\t\tnormal = new Vector3();\n\t\t\tposition2 = new Vector3();\n\n\t\t}\n\n\t\t// Safeguards if bevels are not enabled\n\n\t\tif ( ! bevelEnabled ) {\n\n\t\t\tbevelSegments = 0;\n\t\t\tbevelThickness = 0;\n\t\t\tbevelSize = 0;\n\n\t\t}\n\n\t\t// Variables initialization\n\n\t\tvar ahole, h, hl; // looping of holes\n\n\t\tvar shapePoints = shape.extractPoints( curveSegments );\n\n\t\tvar vertices = shapePoints.shape;\n\t\tvar holes = shapePoints.holes;\n\n\t\tvar reverse = ! ShapeUtils.isClockWise( vertices );\n\n\t\tif ( reverse ) {\n\n\t\t\tvertices = vertices.reverse();\n\n\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tahole = holes[ h ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tvar faces = ShapeUtils.triangulateShape( vertices, holes );\n\n\t\t/* Vertices */\n\n\t\tvar contour = vertices; // vertices has all points but contour has only points of circumference\n\n\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tahole = holes[ h ];\n\n\t\t\tvertices = vertices.concat( ahole );\n\n\t\t}\n\n\n\t\tfunction scalePt2( pt, vec, size ) {\n\n\t\t\tif ( ! vec ) console.error( \"THREE.ExtrudeGeometry: vec does not exist\" );\n\n\t\t\treturn vec.clone().multiplyScalar( size ).add( pt );\n\n\t\t}\n\n\t\tvar b, bs, t, z,\n\t\t\tvert, vlen = vertices.length,\n\t\t\tface, flen = faces.length;\n\n\n\t\t// Find directions for point movement\n\n\n\t\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t\t//   shifted by 1 unit (length of normalized vector) to the left\n\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t\t//\n\t\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t\t//  adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\t\tvar v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\n\n\t\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\t\tvar v_prev_x = inPt.x - inPrev.x,\n\t\t\t\tv_prev_y = inPt.y - inPrev.y;\n\t\t\tvar v_next_x = inNext.x - inPt.x,\n\t\t\t\tv_next_y = inNext.y - inPt.y;\n\n\t\t\tvar v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t\t// check for collinear edges\n\t\t\tvar collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t\t// not collinear\n\n\t\t\t\t// length of vectors for normalizing\n\n\t\t\t\tvar v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\t\tvar v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\t\tvar ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\t\tvar ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\t\tvar ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\t\tvar ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\t\tvar sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\t// vector from inPt to intersection point\n\n\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t//  but prevent crazy spikes\n\t\t\t\tvar v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\t\treturn new Vector2( v_trans_x, v_trans_y );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// handle special case of collinear edges\n\n\t\t\t\tvar direction_eq = false; // assumes: opposite\n\t\t\t\tif ( v_prev_x > Number.EPSILON ) {\n\n\t\t\t\t\tif ( v_next_x > Number.EPSILON ) {\n\n\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( direction_eq ) {\n\n\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t\t}\n\n\n\t\tvar contourMovements = [];\n\n\t\tfor ( var i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\tif ( j === il ) j = 0;\n\t\t\tif ( k === il ) k = 0;\n\n\t\t\t//  (j)---(i)---(k)\n\t\t\t// console.log('i,j,k', i, j , k)\n\n\t\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t\t}\n\n\t\tvar holesMovements = [],\n\t\t\toneHoleMovements, verticesMovements = contourMovements.concat();\n\n\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tahole = holes[ h ];\n\n\t\t\toneHoleMovements = [];\n\n\t\t\tfor ( i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t//  (j)---(i)---(k)\n\t\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t\t}\n\n\t\t\tholesMovements.push( oneHoleMovements );\n\t\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t\t}\n\n\n\t\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\t\tfor ( b = 0; b < bevelSegments; b ++ ) {\n\n\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\t\tt = b / bevelSegments;\n\t\t\tz = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\tbs = bevelSize * Math.sin( t * Math.PI / 2 );\n\n\t\t\t// contract shape\n\n\t\t\tfor ( i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\tvert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\n\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t}\n\n\t\t\t// expand holes\n\n\t\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tahole = holes[ h ];\n\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\tfor ( i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\tvert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tbs = bevelSize;\n\n\t\t// Back facing vertices\n\n\t\tfor ( i = 0; i < vlen; i ++ ) {\n\n\t\t\tvert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\tv( vert.x, vert.y, 0 );\n\n\t\t\t} else {\n\n\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\n\n\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Add stepped vertices...\n\t\t// Including front facing vertices\n\n\t\tvar s;\n\n\t\tfor ( s = 1; s <= steps; s ++ ) {\n\n\t\t\tfor ( i = 0; i < vlen; i ++ ) {\n\n\t\t\t\tvert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\tv( vert.x, vert.y, depth / steps * s );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// Add bevel segments planes\n\n\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\t\tfor ( b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\t\tt = b / bevelSegments;\n\t\t\tz = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\tbs = bevelSize * Math.sin( t * Math.PI / 2 );\n\n\t\t\t// contract shape\n\n\t\t\tfor ( i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\tvert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t}\n\n\t\t\t// expand holes\n\n\t\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tahole = holes[ h ];\n\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\tfor ( i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\tvert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t/* Faces */\n\n\t\t// Top and bottom faces\n\n\t\tbuildLidFaces();\n\n\t\t// Sides faces\n\n\t\tbuildSideFaces();\n\n\n\t\t/////  Internal functions\n\n\t\tfunction buildLidFaces() {\n\n\t\t\tvar start = verticesArray.length / 3;\n\n\t\t\tif ( bevelEnabled ) {\n\n\t\t\t\tvar layer = 0; // steps + 1\n\t\t\t\tvar offset = vlen * layer;\n\n\t\t\t\t// Bottom faces\n\n\t\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tface = faces[ i ];\n\t\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t\t}\n\n\t\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\t\toffset = vlen * layer;\n\n\t\t\t\t// Top faces\n\n\t\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tface = faces[ i ];\n\t\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// Bottom faces\n\n\t\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tface = faces[ i ];\n\t\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t\t}\n\n\t\t\t\t// Top faces\n\n\t\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tface = faces[ i ];\n\t\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 0 );\n\n\t\t}\n\n\t\t// Create faces for the z-sides of the shape\n\n\t\tfunction buildSideFaces() {\n\n\t\t\tvar start = verticesArray.length / 3;\n\t\t\tvar layeroffset = 0;\n\t\t\tsidewalls( contour, layeroffset );\n\t\t\tlayeroffset += contour.length;\n\n\t\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tahole = holes[ h ];\n\t\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t\t//, true\n\t\t\t\tlayeroffset += ahole.length;\n\n\t\t\t}\n\n\n\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 1 );\n\n\n\t\t}\n\n\t\tfunction sidewalls( contour, layeroffset ) {\n\n\t\t\tvar j, k;\n\t\t\ti = contour.length;\n\n\t\t\twhile ( -- i >= 0 ) {\n\n\t\t\t\tj = i;\n\t\t\t\tk = i - 1;\n\t\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\t\tvar s = 0,\n\t\t\t\t\tsl = steps + bevelSegments * 2;\n\n\t\t\t\tfor ( s = 0; s < sl; s ++ ) {\n\n\t\t\t\t\tvar slen1 = vlen * s;\n\t\t\t\t\tvar slen2 = vlen * ( s + 1 );\n\n\t\t\t\t\tvar a = layeroffset + j + slen1,\n\t\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\t\tf4( a, b, c, d );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction v( x, y, z ) {\n\n\t\t\tplaceholder.push( x );\n\t\t\tplaceholder.push( y );\n\t\t\tplaceholder.push( z );\n\n\t\t}\n\n\n\t\tfunction f3( a, b, c ) {\n\n\t\t\taddVertex( a );\n\t\t\taddVertex( b );\n\t\t\taddVertex( c );\n\n\t\t\tvar nextIndex = verticesArray.length / 3;\n\t\t\tvar uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\taddUV( uvs[ 0 ] );\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 2 ] );\n\n\t\t}\n\n\t\tfunction f4( a, b, c, d ) {\n\n\t\t\taddVertex( a );\n\t\t\taddVertex( b );\n\t\t\taddVertex( d );\n\n\t\t\taddVertex( b );\n\t\t\taddVertex( c );\n\t\t\taddVertex( d );\n\n\n\t\t\tvar nextIndex = verticesArray.length / 3;\n\t\t\tvar uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\taddUV( uvs[ 0 ] );\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 2 ] );\n\t\t\taddUV( uvs[ 3 ] );\n\n\t\t}\n\n\t\tfunction addVertex( index ) {\n\n\t\t\tverticesArray.push( placeholder[ index * 3 + 0 ] );\n\t\t\tverticesArray.push( placeholder[ index * 3 + 1 ] );\n\t\t\tverticesArray.push( placeholder[ index * 3 + 2 ] );\n\n\t\t}\n\n\n\t\tfunction addUV( vector2 ) {\n\n\t\t\tuvArray.push( vector2.x );\n\t\t\tuvArray.push( vector2.y );\n\n\t\t}\n\n\t}\n\n}\n\nExtrudeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nExtrudeBufferGeometry.prototype.constructor = ExtrudeBufferGeometry;\n\nExtrudeBufferGeometry.prototype.toJSON = function () {\n\n\tvar data = BufferGeometry.prototype.toJSON.call( this );\n\n\tvar shapes = this.parameters.shapes;\n\tvar options = this.parameters.options;\n\n\treturn toJSON( shapes, options, data );\n\n};\n\n//\n\nvar WorldUVGenerator = {\n\n\tgenerateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) {\n\n\t\tvar a_x = vertices[ indexA * 3 ];\n\t\tvar a_y = vertices[ indexA * 3 + 1 ];\n\t\tvar b_x = vertices[ indexB * 3 ];\n\t\tvar b_y = vertices[ indexB * 3 + 1 ];\n\t\tvar c_x = vertices[ indexC * 3 ];\n\t\tvar c_y = vertices[ indexC * 3 + 1 ];\n\n\t\treturn [\n\t\t\tnew Vector2( a_x, a_y ),\n\t\t\tnew Vector2( b_x, b_y ),\n\t\t\tnew Vector2( c_x, c_y )\n\t\t];\n\n\t},\n\n\tgenerateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) {\n\n\t\tvar a_x = vertices[ indexA * 3 ];\n\t\tvar a_y = vertices[ indexA * 3 + 1 ];\n\t\tvar a_z = vertices[ indexA * 3 + 2 ];\n\t\tvar b_x = vertices[ indexB * 3 ];\n\t\tvar b_y = vertices[ indexB * 3 + 1 ];\n\t\tvar b_z = vertices[ indexB * 3 + 2 ];\n\t\tvar c_x = vertices[ indexC * 3 ];\n\t\tvar c_y = vertices[ indexC * 3 + 1 ];\n\t\tvar c_z = vertices[ indexC * 3 + 2 ];\n\t\tvar d_x = vertices[ indexD * 3 ];\n\t\tvar d_y = vertices[ indexD * 3 + 1 ];\n\t\tvar d_z = vertices[ indexD * 3 + 2 ];\n\n\t\tif ( Math.abs( a_y - b_y ) < 0.01 ) {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_x, 1 - a_z ),\n\t\t\t\tnew Vector2( b_x, 1 - b_z ),\n\t\t\t\tnew Vector2( c_x, 1 - c_z ),\n\t\t\t\tnew Vector2( d_x, 1 - d_z )\n\t\t\t];\n\n\t\t} else {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_y, 1 - a_z ),\n\t\t\t\tnew Vector2( b_y, 1 - b_z ),\n\t\t\t\tnew Vector2( c_y, 1 - c_z ),\n\t\t\t\tnew Vector2( d_y, 1 - d_z )\n\t\t\t];\n\n\t\t}\n\n\t}\n};\n\nfunction toJSON( shapes, options, data ) {\n\n\t//\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( var i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tvar shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\t//\n\n\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\n\n\treturn data;\n\n}\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author alteredq / http://alteredqualia.com/\n *\n * Text = 3D Text\n *\n * parameters = {\n *  font: <THREE.Font>, // font\n *\n *  size: <float>, // size of the text\n *  height: <float>, // thickness to extrude text\n *  curveSegments: <int>, // number of points on the curves\n *\n *  bevelEnabled: <bool>, // turn on bevel\n *  bevelThickness: <float>, // how deep into text bevel goes\n *  bevelSize: <float> // how far from text outline is bevel\n * }\n */\n\n// TextGeometry\n\nfunction TextGeometry( text, parameters ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TextGeometry';\n\n\tthis.parameters = {\n\t\ttext: text,\n\t\tparameters: parameters\n\t};\n\n\tthis.fromBufferGeometry( new TextBufferGeometry( text, parameters ) );\n\tthis.mergeVertices();\n\n}\n\nTextGeometry.prototype = Object.create( Geometry.prototype );\nTextGeometry.prototype.constructor = TextGeometry;\n\n// TextBufferGeometry\n\nfunction TextBufferGeometry( text, parameters ) {\n\n\tparameters = parameters || {};\n\n\tvar font = parameters.font;\n\n\tif ( ! ( font && font.isFont ) ) {\n\n\t\tconsole.error( 'THREE.TextGeometry: font parameter is not an instance of THREE.Font.' );\n\t\treturn new Geometry();\n\n\t}\n\n\tvar shapes = font.generateShapes( text, parameters.size );\n\n\t// translate parameters to ExtrudeGeometry API\n\n\tparameters.depth = parameters.height !== undefined ? parameters.height : 50;\n\n\t// defaults\n\n\tif ( parameters.bevelThickness === undefined ) parameters.bevelThickness = 10;\n\tif ( parameters.bevelSize === undefined ) parameters.bevelSize = 8;\n\tif ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false;\n\n\tExtrudeBufferGeometry.call( this, shapes, parameters );\n\n\tthis.type = 'TextBufferGeometry';\n\n}\n\nTextBufferGeometry.prototype = Object.create( ExtrudeBufferGeometry.prototype );\nTextBufferGeometry.prototype.constructor = TextBufferGeometry;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author benaadams / https://twitter.com/ben_a_adams\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// SphereGeometry\n\nfunction SphereGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'SphereGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nSphereGeometry.prototype = Object.create( Geometry.prototype );\nSphereGeometry.prototype.constructor = SphereGeometry;\n\n// SphereBufferGeometry\n\nfunction SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'SphereBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tradius = radius || 1;\n\n\twidthSegments = Math.max( 3, Math.floor( widthSegments ) || 8 );\n\theightSegments = Math.max( 2, Math.floor( heightSegments ) || 6 );\n\n\tphiStart = phiStart !== undefined ? phiStart : 0;\n\tphiLength = phiLength !== undefined ? phiLength : Math.PI * 2;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI;\n\n\tvar thetaEnd = thetaStart + thetaLength;\n\n\tvar ix, iy;\n\n\tvar index = 0;\n\tvar grid = [];\n\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// generate vertices, normals and uvs\n\n\tfor ( iy = 0; iy <= heightSegments; iy ++ ) {\n\n\t\tvar verticesRow = [];\n\n\t\tvar v = iy / heightSegments;\n\n\t\tfor ( ix = 0; ix <= widthSegments; ix ++ ) {\n\n\t\t\tvar u = ix / widthSegments;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\tvertex.y = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\tvertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormal.set( vertex.x, vertex.y, vertex.z ).normalize();\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( u, 1 - v );\n\n\t\t\tverticesRow.push( index ++ );\n\n\t\t}\n\n\t\tgrid.push( verticesRow );\n\n\t}\n\n\t// indices\n\n\tfor ( iy = 0; iy < heightSegments; iy ++ ) {\n\n\t\tfor ( ix = 0; ix < widthSegments; ix ++ ) {\n\n\t\t\tvar a = grid[ iy ][ ix + 1 ];\n\t\t\tvar b = grid[ iy ][ ix ];\n\t\t\tvar c = grid[ iy + 1 ][ ix ];\n\t\t\tvar d = grid[ iy + 1 ][ ix + 1 ];\n\n\t\t\tif ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d );\n\t\t\tif ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nSphereBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nSphereBufferGeometry.prototype.constructor = SphereBufferGeometry;\n\n/**\n * @author Kaleb Murphy\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// RingGeometry\n\nfunction RingGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'RingGeometry';\n\n\tthis.parameters = {\n\t\tinnerRadius: innerRadius,\n\t\touterRadius: outerRadius,\n\t\tthetaSegments: thetaSegments,\n\t\tphiSegments: phiSegments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nRingGeometry.prototype = Object.create( Geometry.prototype );\nRingGeometry.prototype.constructor = RingGeometry;\n\n// RingBufferGeometry\n\nfunction RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'RingBufferGeometry';\n\n\tthis.parameters = {\n\t\tinnerRadius: innerRadius,\n\t\touterRadius: outerRadius,\n\t\tthetaSegments: thetaSegments,\n\t\tphiSegments: phiSegments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tinnerRadius = innerRadius || 0.5;\n\touterRadius = outerRadius || 1;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\tthetaSegments = thetaSegments !== undefined ? Math.max( 3, thetaSegments ) : 8;\n\tphiSegments = phiSegments !== undefined ? Math.max( 1, phiSegments ) : 1;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// some helper variables\n\n\tvar segment;\n\tvar radius = innerRadius;\n\tvar radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\tvar vertex = new Vector3();\n\tvar uv = new Vector2();\n\tvar j, i;\n\n\t// generate vertices, normals and uvs\n\n\tfor ( j = 0; j <= phiSegments; j ++ ) {\n\n\t\tfor ( i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\t// values are generate from the inside of the ring to the outside\n\n\t\t\tsegment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t// uv\n\n\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t}\n\n\t\t// increase the radius for next row of vertices\n\n\t\tradius += radiusStep;\n\n\t}\n\n\t// indices\n\n\tfor ( j = 0; j < phiSegments; j ++ ) {\n\n\t\tvar thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\tfor ( i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\tsegment = i + thetaSegmentLevel;\n\n\t\t\tvar a = segment;\n\t\t\tvar b = segment + thetaSegments + 1;\n\t\t\tvar c = segment + thetaSegments + 2;\n\t\t\tvar d = segment + 1;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nRingBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nRingBufferGeometry.prototype.constructor = RingBufferGeometry;\n\n/**\n * @author astrodud / http://astrodud.isgreat.org/\n * @author zz85 / https://github.com/zz85\n * @author bhouston / http://clara.io\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// LatheGeometry\n\nfunction LatheGeometry( points, segments, phiStart, phiLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'LatheGeometry';\n\n\tthis.parameters = {\n\t\tpoints: points,\n\t\tsegments: segments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength\n\t};\n\n\tthis.fromBufferGeometry( new LatheBufferGeometry( points, segments, phiStart, phiLength ) );\n\tthis.mergeVertices();\n\n}\n\nLatheGeometry.prototype = Object.create( Geometry.prototype );\nLatheGeometry.prototype.constructor = LatheGeometry;\n\n// LatheBufferGeometry\n\nfunction LatheBufferGeometry( points, segments, phiStart, phiLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'LatheBufferGeometry';\n\n\tthis.parameters = {\n\t\tpoints: points,\n\t\tsegments: segments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength\n\t};\n\n\tsegments = Math.floor( segments ) || 12;\n\tphiStart = phiStart || 0;\n\tphiLength = phiLength || Math.PI * 2;\n\n\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\n\tphiLength = _Math.clamp( phiLength, 0, Math.PI * 2 );\n\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar base;\n\tvar inverseSegments = 1.0 / segments;\n\tvar vertex = new Vector3();\n\tvar uv = new Vector2();\n\tvar i, j;\n\n\t// generate vertices and uvs\n\n\tfor ( i = 0; i <= segments; i ++ ) {\n\n\t\tvar phi = phiStart + i * inverseSegments * phiLength;\n\n\t\tvar sin = Math.sin( phi );\n\t\tvar cos = Math.cos( phi );\n\n\t\tfor ( j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\tvertex.y = points[ j ].y;\n\t\t\tvertex.z = points[ j ].x * cos;\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// uv\n\n\t\t\tuv.x = i / segments;\n\t\t\tuv.y = j / ( points.length - 1 );\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\n\t\t}\n\n\t}\n\n\t// indices\n\n\tfor ( i = 0; i < segments; i ++ ) {\n\n\t\tfor ( j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\tbase = j + i * points.length;\n\n\t\t\tvar a = base;\n\t\t\tvar b = base + points.length;\n\t\t\tvar c = base + points.length + 1;\n\t\t\tvar d = base + 1;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// generate normals\n\n\tthis.computeVertexNormals();\n\n\t// if the geometry is closed, we need to average the normals along the seam.\n\t// because the corresponding vertices are identical (but still have different UVs).\n\n\tif ( phiLength === Math.PI * 2 ) {\n\n\t\tvar normals = this.attributes.normal.array;\n\t\tvar n1 = new Vector3();\n\t\tvar n2 = new Vector3();\n\t\tvar n = new Vector3();\n\n\t\t// this is the buffer offset for the last line of vertices\n\n\t\tbase = segments * points.length * 3;\n\n\t\tfor ( i = 0, j = 0; i < points.length; i ++, j += 3 ) {\n\n\t\t\t// select the normal of the vertex in the first line\n\n\t\t\tn1.x = normals[ j + 0 ];\n\t\t\tn1.y = normals[ j + 1 ];\n\t\t\tn1.z = normals[ j + 2 ];\n\n\t\t\t// select the normal of the vertex in the last line\n\n\t\t\tn2.x = normals[ base + j + 0 ];\n\t\t\tn2.y = normals[ base + j + 1 ];\n\t\t\tn2.z = normals[ base + j + 2 ];\n\n\t\t\t// average normals\n\n\t\t\tn.addVectors( n1, n2 ).normalize();\n\n\t\t\t// assign the new values to both normals\n\n\t\t\tnormals[ j + 0 ] = normals[ base + j + 0 ] = n.x;\n\t\t\tnormals[ j + 1 ] = normals[ base + j + 1 ] = n.y;\n\t\t\tnormals[ j + 2 ] = normals[ base + j + 2 ] = n.z;\n\n\t\t}\n\n\t}\n\n}\n\nLatheBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nLatheBufferGeometry.prototype.constructor = LatheBufferGeometry;\n\n/**\n * @author jonobr1 / http://jonobr1.com\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// ShapeGeometry\n\nfunction ShapeGeometry( shapes, curveSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ShapeGeometry';\n\n\tif ( typeof curveSegments === 'object' ) {\n\n\t\tconsole.warn( 'THREE.ShapeGeometry: Options parameter has been removed.' );\n\n\t\tcurveSegments = curveSegments.curveSegments;\n\n\t}\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\tcurveSegments: curveSegments\n\t};\n\n\tthis.fromBufferGeometry( new ShapeBufferGeometry( shapes, curveSegments ) );\n\tthis.mergeVertices();\n\n}\n\nShapeGeometry.prototype = Object.create( Geometry.prototype );\nShapeGeometry.prototype.constructor = ShapeGeometry;\n\nShapeGeometry.prototype.toJSON = function () {\n\n\tvar data = Geometry.prototype.toJSON.call( this );\n\n\tvar shapes = this.parameters.shapes;\n\n\treturn toJSON$1( shapes, data );\n\n};\n\n// ShapeBufferGeometry\n\nfunction ShapeBufferGeometry( shapes, curveSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ShapeBufferGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\tcurveSegments: curveSegments\n\t};\n\n\tcurveSegments = curveSegments || 12;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar groupStart = 0;\n\tvar groupCount = 0;\n\n\t// allow single and array values for \"shapes\" parameter\n\n\tif ( Array.isArray( shapes ) === false ) {\n\n\t\taddShape( shapes );\n\n\t} else {\n\n\t\tfor ( var i = 0; i < shapes.length; i ++ ) {\n\n\t\t\taddShape( shapes[ i ] );\n\n\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\tgroupStart += groupCount;\n\t\t\tgroupCount = 0;\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\n\t// helper functions\n\n\tfunction addShape( shape ) {\n\n\t\tvar i, l, shapeHole;\n\n\t\tvar indexOffset = vertices.length / 3;\n\t\tvar points = shape.extractPoints( curveSegments );\n\n\t\tvar shapeVertices = points.shape;\n\t\tvar shapeHoles = points.holes;\n\n\t\t// check direction of vertices\n\n\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t\t// also check if holes are in the opposite direction\n\n\t\t\tfor ( i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tshapeHole = shapeHoles[ i ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t// join vertices of inner and outer paths to a single array\n\n\t\tfor ( i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\tshapeHole = shapeHoles[ i ];\n\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t}\n\n\t\t// vertices, normals, uvs\n\n\t\tfor ( i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\tvar vertex = shapeVertices[ i ];\n\n\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\tnormals.push( 0, 0, 1 );\n\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t}\n\n\t\t// incides\n\n\t\tfor ( i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tvar a = face[ 0 ] + indexOffset;\n\t\t\tvar b = face[ 1 ] + indexOffset;\n\t\t\tvar c = face[ 2 ] + indexOffset;\n\n\t\t\tindices.push( a, b, c );\n\t\t\tgroupCount += 3;\n\n\t\t}\n\n\t}\n\n}\n\nShapeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nShapeBufferGeometry.prototype.constructor = ShapeBufferGeometry;\n\nShapeBufferGeometry.prototype.toJSON = function () {\n\n\tvar data = BufferGeometry.prototype.toJSON.call( this );\n\n\tvar shapes = this.parameters.shapes;\n\n\treturn toJSON$1( shapes, data );\n\n};\n\n//\n\nfunction toJSON$1( shapes, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( var i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tvar shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\treturn data;\n\n}\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction EdgesGeometry( geometry, thresholdAngle ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'EdgesGeometry';\n\n\tthis.parameters = {\n\t\tthresholdAngle: thresholdAngle\n\t};\n\n\tthresholdAngle = ( thresholdAngle !== undefined ) ? thresholdAngle : 1;\n\n\t// buffer\n\n\tvar vertices = [];\n\n\t// helper variables\n\n\tvar thresholdDot = Math.cos( _Math.DEG2RAD * thresholdAngle );\n\tvar edge = [ 0, 0 ], edges = {}, edge1, edge2;\n\tvar key, keys = [ 'a', 'b', 'c' ];\n\n\t// prepare source geometry\n\n\tvar geometry2;\n\n\tif ( geometry.isBufferGeometry ) {\n\n\t\tgeometry2 = new Geometry();\n\t\tgeometry2.fromBufferGeometry( geometry );\n\n\t} else {\n\n\t\tgeometry2 = geometry.clone();\n\n\t}\n\n\tgeometry2.mergeVertices();\n\tgeometry2.computeFaceNormals();\n\n\tvar sourceVertices = geometry2.vertices;\n\tvar faces = geometry2.faces;\n\n\t// now create a data structure where each entry represents an edge with its adjoining faces\n\n\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\tvar face = faces[ i ];\n\n\t\tfor ( var j = 0; j < 3; j ++ ) {\n\n\t\t\tedge1 = face[ keys[ j ] ];\n\t\t\tedge2 = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\tedge[ 0 ] = Math.min( edge1, edge2 );\n\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\tkey = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ], face1: i, face2: undefined };\n\n\t\t\t} else {\n\n\t\t\t\tedges[ key ].face2 = i;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// generate vertices\n\n\tfor ( key in edges ) {\n\n\t\tvar e = edges[ key ];\n\n\t\t// an edge is only rendered if the angle (in degrees) between the face normals of the adjoining faces exceeds this value. default = 1 degree.\n\n\t\tif ( e.face2 === undefined || faces[ e.face1 ].normal.dot( faces[ e.face2 ].normal ) <= thresholdDot ) {\n\n\t\t\tvar vertex = sourceVertices[ e.index1 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\tvertex = sourceVertices[ e.index2 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n}\n\nEdgesGeometry.prototype = Object.create( BufferGeometry.prototype );\nEdgesGeometry.prototype.constructor = EdgesGeometry;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// CylinderGeometry\n\nfunction CylinderGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'CylinderGeometry';\n\n\tthis.parameters = {\n\t\tradiusTop: radiusTop,\n\t\tradiusBottom: radiusBottom,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nCylinderGeometry.prototype = Object.create( Geometry.prototype );\nCylinderGeometry.prototype.constructor = CylinderGeometry;\n\n// CylinderBufferGeometry\n\nfunction CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'CylinderBufferGeometry';\n\n\tthis.parameters = {\n\t\tradiusTop: radiusTop,\n\t\tradiusBottom: radiusBottom,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tvar scope = this;\n\n\tradiusTop = radiusTop !== undefined ? radiusTop : 1;\n\tradiusBottom = radiusBottom !== undefined ? radiusBottom : 1;\n\theight = height || 1;\n\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\theightSegments = Math.floor( heightSegments ) || 1;\n\n\topenEnded = openEnded !== undefined ? openEnded : false;\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0.0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar index = 0;\n\tvar indexArray = [];\n\tvar halfHeight = height / 2;\n\tvar groupStart = 0;\n\n\t// generate geometry\n\n\tgenerateTorso();\n\n\tif ( openEnded === false ) {\n\n\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\tfunction generateTorso() {\n\n\t\tvar x, y;\n\t\tvar normal = new Vector3();\n\t\tvar vertex = new Vector3();\n\n\t\tvar groupCount = 0;\n\n\t\t// this will be used to calculate the normal\n\t\tvar slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\tvar indexRow = [];\n\n\t\t\tvar v = y / heightSegments;\n\n\t\t\t// calculate the radius of the current row\n\n\t\t\tvar radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\tfor ( x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tvar u = x / radialSegments;\n\n\t\t\t\tvar theta = u * thetaLength + thetaStart;\n\n\t\t\t\tvar sinTheta = Math.sin( theta );\n\t\t\t\tvar cosTheta = Math.cos( theta );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( u, 1 - v );\n\n\t\t\t\t// save index of vertex in respective row\n\n\t\t\t\tindexRow.push( index ++ );\n\n\t\t\t}\n\n\t\t\t// now save vertices of the row in our index array\n\n\t\t\tindexArray.push( indexRow );\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( x = 0; x < radialSegments; x ++ ) {\n\n\t\t\tfor ( y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t// we use the index array to access the correct indices\n\n\t\t\t\tvar a = indexArray[ y ][ x ];\n\t\t\t\tvar b = indexArray[ y + 1 ][ x ];\n\t\t\t\tvar c = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\tvar d = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t// update group counter\n\n\t\t\t\tgroupCount += 6;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t// calculate new start value for groups\n\n\t\tgroupStart += groupCount;\n\n\t}\n\n\tfunction generateCap( top ) {\n\n\t\tvar x, centerIndexStart, centerIndexEnd;\n\n\t\tvar uv = new Vector2();\n\t\tvar vertex = new Vector3();\n\n\t\tvar groupCount = 0;\n\n\t\tvar radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\tvar sign = ( top === true ) ? 1 : - 1;\n\n\t\t// save the index of the first center vertex\n\t\tcenterIndexStart = index;\n\n\t\t// first we generate the center vertex data of the cap.\n\t\t// because the geometry needs one set of uvs per face,\n\t\t// we must generate a center vertex per face/segment\n\n\t\tfor ( x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t// vertex\n\n\t\t\tvertices.push( 0, halfHeight * sign, 0 );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( 0.5, 0.5 );\n\n\t\t\t// increase index\n\n\t\t\tindex ++;\n\n\t\t}\n\n\t\t// save the index of the last center vertex\n\n\t\tcenterIndexEnd = index;\n\n\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\tfor ( x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\tvar u = x / radialSegments;\n\t\t\tvar theta = u * thetaLength + thetaStart;\n\n\t\t\tvar cosTheta = Math.cos( theta );\n\t\t\tvar sinTheta = Math.sin( theta );\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * sinTheta;\n\t\t\tvertex.y = halfHeight * sign;\n\t\t\tvertex.z = radius * cosTheta;\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t// uv\n\n\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t// increase index\n\n\t\t\tindex ++;\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( x = 0; x < radialSegments; x ++ ) {\n\n\t\t\tvar c = centerIndexStart + x;\n\t\t\tvar i = centerIndexEnd + x;\n\n\t\t\tif ( top === true ) {\n\n\t\t\t\t// face top\n\n\t\t\t\tindices.push( i, i + 1, c );\n\n\t\t\t} else {\n\n\t\t\t\t// face bottom\n\n\t\t\t\tindices.push( i + 1, i, c );\n\n\t\t\t}\n\n\t\t\tgroupCount += 3;\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t// calculate new start value for groups\n\n\t\tgroupStart += groupCount;\n\n\t}\n\n}\n\nCylinderBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nCylinderBufferGeometry.prototype.constructor = CylinderBufferGeometry;\n\n/**\n * @author abelnation / http://github.com/abelnation\n */\n\n// ConeGeometry\n\nfunction ConeGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tCylinderGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\tthis.type = 'ConeGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n}\n\nConeGeometry.prototype = Object.create( CylinderGeometry.prototype );\nConeGeometry.prototype.constructor = ConeGeometry;\n\n// ConeBufferGeometry\n\nfunction ConeBufferGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tCylinderBufferGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\tthis.type = 'ConeBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n}\n\nConeBufferGeometry.prototype = Object.create( CylinderBufferGeometry.prototype );\nConeBufferGeometry.prototype.constructor = ConeBufferGeometry;\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n * @author Mugen87 / https://github.com/Mugen87\n * @author hughes\n */\n\n// CircleGeometry\n\nfunction CircleGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'CircleGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tsegments: segments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nCircleGeometry.prototype = Object.create( Geometry.prototype );\nCircleGeometry.prototype.constructor = CircleGeometry;\n\n// CircleBufferGeometry\n\nfunction CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'CircleBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tsegments: segments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tradius = radius || 1;\n\tsegments = segments !== undefined ? Math.max( 3, segments ) : 8;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar i, s;\n\tvar vertex = new Vector3();\n\tvar uv = new Vector2();\n\n\t// center point\n\n\tvertices.push( 0, 0, 0 );\n\tnormals.push( 0, 0, 1 );\n\tuvs.push( 0.5, 0.5 );\n\n\tfor ( s = 0, i = 3; s <= segments; s ++, i += 3 ) {\n\n\t\tvar segment = thetaStart + s / segments * thetaLength;\n\n\t\t// vertex\n\n\t\tvertex.x = radius * Math.cos( segment );\n\t\tvertex.y = radius * Math.sin( segment );\n\n\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t// normal\n\n\t\tnormals.push( 0, 0, 1 );\n\n\t\t// uvs\n\n\t\tuv.x = ( vertices[ i ] / radius + 1 ) / 2;\n\t\tuv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2;\n\n\t\tuvs.push( uv.x, uv.y );\n\n\t}\n\n\t// indices\n\n\tfor ( i = 1; i <= segments; i ++ ) {\n\n\t\tindices.push( i, i + 1, 0 );\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nCircleBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nCircleBufferGeometry.prototype.constructor = CircleBufferGeometry;\n\n\n\nvar Geometries = /*#__PURE__*/Object.freeze({\n\tWireframeGeometry: WireframeGeometry,\n\tParametricGeometry: ParametricGeometry,\n\tParametricBufferGeometry: ParametricBufferGeometry,\n\tTetrahedronGeometry: TetrahedronGeometry,\n\tTetrahedronBufferGeometry: TetrahedronBufferGeometry,\n\tOctahedronGeometry: OctahedronGeometry,\n\tOctahedronBufferGeometry: OctahedronBufferGeometry,\n\tIcosahedronGeometry: IcosahedronGeometry,\n\tIcosahedronBufferGeometry: IcosahedronBufferGeometry,\n\tDodecahedronGeometry: DodecahedronGeometry,\n\tDodecahedronBufferGeometry: DodecahedronBufferGeometry,\n\tPolyhedronGeometry: PolyhedronGeometry,\n\tPolyhedronBufferGeometry: PolyhedronBufferGeometry,\n\tTubeGeometry: TubeGeometry,\n\tTubeBufferGeometry: TubeBufferGeometry,\n\tTorusKnotGeometry: TorusKnotGeometry,\n\tTorusKnotBufferGeometry: TorusKnotBufferGeometry,\n\tTorusGeometry: TorusGeometry,\n\tTorusBufferGeometry: TorusBufferGeometry,\n\tTextGeometry: TextGeometry,\n\tTextBufferGeometry: TextBufferGeometry,\n\tSphereGeometry: SphereGeometry,\n\tSphereBufferGeometry: SphereBufferGeometry,\n\tRingGeometry: RingGeometry,\n\tRingBufferGeometry: RingBufferGeometry,\n\tPlaneGeometry: PlaneGeometry,\n\tPlaneBufferGeometry: PlaneBufferGeometry,\n\tLatheGeometry: LatheGeometry,\n\tLatheBufferGeometry: LatheBufferGeometry,\n\tShapeGeometry: ShapeGeometry,\n\tShapeBufferGeometry: ShapeBufferGeometry,\n\tExtrudeGeometry: ExtrudeGeometry,\n\tExtrudeBufferGeometry: ExtrudeBufferGeometry,\n\tEdgesGeometry: EdgesGeometry,\n\tConeGeometry: ConeGeometry,\n\tConeBufferGeometry: ConeBufferGeometry,\n\tCylinderGeometry: CylinderGeometry,\n\tCylinderBufferGeometry: CylinderBufferGeometry,\n\tCircleGeometry: CircleGeometry,\n\tCircleBufferGeometry: CircleBufferGeometry,\n\tBoxGeometry: BoxGeometry,\n\tBoxBufferGeometry: BoxBufferGeometry\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n *\n * parameters = {\n *  color: <THREE.Color>\n * }\n */\n\nfunction ShadowMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'ShadowMaterial';\n\n\tthis.color = new Color( 0x000000 );\n\tthis.transparent = true;\n\n\tthis.setValues( parameters );\n\n}\n\nShadowMaterial.prototype = Object.create( Material.prototype );\nShadowMaterial.prototype.constructor = ShadowMaterial;\n\nShadowMaterial.prototype.isShadowMaterial = true;\n\nShadowMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction RawShaderMaterial( parameters ) {\n\n\tShaderMaterial.call( this, parameters );\n\n\tthis.type = 'RawShaderMaterial';\n\n}\n\nRawShaderMaterial.prototype = Object.create( ShaderMaterial.prototype );\nRawShaderMaterial.prototype.constructor = RawShaderMaterial;\n\nRawShaderMaterial.prototype.isRawShaderMaterial = true;\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n *  color: <hex>,\n *  roughness: <float>,\n *  metalness: <float>,\n *  opacity: <float>,\n *\n *  map: new THREE.Texture( <Image> ),\n *\n *  lightMap: new THREE.Texture( <Image> ),\n *  lightMapIntensity: <float>\n *\n *  aoMap: new THREE.Texture( <Image> ),\n *  aoMapIntensity: <float>\n *\n *  emissive: <hex>,\n *  emissiveIntensity: <float>\n *  emissiveMap: new THREE.Texture( <Image> ),\n *\n *  bumpMap: new THREE.Texture( <Image> ),\n *  bumpScale: <float>,\n *\n *  normalMap: new THREE.Texture( <Image> ),\n *  normalMapType: THREE.TangentSpaceNormalMap,\n *  normalScale: <Vector2>,\n *\n *  displacementMap: new THREE.Texture( <Image> ),\n *  displacementScale: <float>,\n *  displacementBias: <float>,\n *\n *  roughnessMap: new THREE.Texture( <Image> ),\n *\n *  metalnessMap: new THREE.Texture( <Image> ),\n *\n *  alphaMap: new THREE.Texture( <Image> ),\n *\n *  envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n *  envMapIntensity: <float>\n *\n *  refractionRatio: <float>,\n *\n *  wireframe: <boolean>,\n *  wireframeLinewidth: <float>,\n *\n *  skinning: <bool>,\n *  morphTargets: <bool>,\n *  morphNormals: <bool>\n * }\n */\n\nfunction MeshStandardMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.type = 'MeshStandardMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.roughness = 0.5;\n\tthis.metalness = 0.5;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.roughnessMap = null;\n\n\tthis.metalnessMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.envMapIntensity = 1.0;\n\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshStandardMaterial.prototype = Object.create( Material.prototype );\nMeshStandardMaterial.prototype.constructor = MeshStandardMaterial;\n\nMeshStandardMaterial.prototype.isMeshStandardMaterial = true;\n\nMeshStandardMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.color.copy( source.color );\n\tthis.roughness = source.roughness;\n\tthis.metalness = source.metalness;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.roughnessMap = source.roughnessMap;\n\n\tthis.metalnessMap = source.metalnessMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.envMapIntensity = source.envMapIntensity;\n\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n *  reflectivity: <float>\n * }\n */\n\nfunction MeshPhysicalMaterial( parameters ) {\n\n\tMeshStandardMaterial.call( this );\n\n\tthis.defines = { 'PHYSICAL': '' };\n\n\tthis.type = 'MeshPhysicalMaterial';\n\n\tthis.reflectivity = 0.5; // maps to F0 = 0.04\n\n\tthis.clearCoat = 0.0;\n\tthis.clearCoatRoughness = 0.0;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhysicalMaterial.prototype = Object.create( MeshStandardMaterial.prototype );\nMeshPhysicalMaterial.prototype.constructor = MeshPhysicalMaterial;\n\nMeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true;\n\nMeshPhysicalMaterial.prototype.copy = function ( source ) {\n\n\tMeshStandardMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'PHYSICAL': '' };\n\n\tthis.reflectivity = source.reflectivity;\n\n\tthis.clearCoat = source.clearCoat;\n\tthis.clearCoatRoughness = source.clearCoatRoughness;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n *  color: <hex>,\n *  specular: <hex>,\n *  shininess: <float>,\n *  opacity: <float>,\n *\n *  map: new THREE.Texture( <Image> ),\n *\n *  lightMap: new THREE.Texture( <Image> ),\n *  lightMapIntensity: <float>\n *\n *  aoMap: new THREE.Texture( <Image> ),\n *  aoMapIntensity: <float>\n *\n *  emissive: <hex>,\n *  emissiveIntensity: <float>\n *  emissiveMap: new THREE.Texture( <Image> ),\n *\n *  bumpMap: new THREE.Texture( <Image> ),\n *  bumpScale: <float>,\n *\n *  normalMap: new THREE.Texture( <Image> ),\n *  normalMapType: THREE.TangentSpaceNormalMap,\n *  normalScale: <Vector2>,\n *\n *  displacementMap: new THREE.Texture( <Image> ),\n *  displacementScale: <float>,\n *  displacementBias: <float>,\n *\n *  specularMap: new THREE.Texture( <Image> ),\n *\n *  alphaMap: new THREE.Texture( <Image> ),\n *\n *  envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n *  combine: THREE.Multiply,\n *  reflectivity: <float>,\n *  refractionRatio: <float>,\n *\n *  wireframe: <boolean>,\n *  wireframeLinewidth: <float>,\n *\n *  skinning: <bool>,\n *  morphTargets: <bool>,\n *  morphNormals: <bool>\n * }\n */\n\nfunction MeshPhongMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshPhongMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.specular = new Color( 0x111111 );\n\tthis.shininess = 30;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhongMaterial.prototype = Object.create( Material.prototype );\nMeshPhongMaterial.prototype.constructor = MeshPhongMaterial;\n\nMeshPhongMaterial.prototype.isMeshPhongMaterial = true;\n\nMeshPhongMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\tthis.specular.copy( source.specular );\n\tthis.shininess = source.shininess;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author takahirox / http://github.com/takahirox\n *\n * parameters = {\n *  gradientMap: new THREE.Texture( <Image> )\n * }\n */\n\nfunction MeshToonMaterial( parameters ) {\n\n\tMeshPhongMaterial.call( this );\n\n\tthis.defines = { 'TOON': '' };\n\n\tthis.type = 'MeshToonMaterial';\n\n\tthis.gradientMap = null;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshToonMaterial.prototype = Object.create( MeshPhongMaterial.prototype );\nMeshToonMaterial.prototype.constructor = MeshToonMaterial;\n\nMeshToonMaterial.prototype.isMeshToonMaterial = true;\n\nMeshToonMaterial.prototype.copy = function ( source ) {\n\n\tMeshPhongMaterial.prototype.copy.call( this, source );\n\n\tthis.gradientMap = source.gradientMap;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n *  opacity: <float>,\n *\n *  bumpMap: new THREE.Texture( <Image> ),\n *  bumpScale: <float>,\n *\n *  normalMap: new THREE.Texture( <Image> ),\n *  normalMapType: THREE.TangentSpaceNormalMap,\n *  normalScale: <Vector2>,\n *\n *  displacementMap: new THREE.Texture( <Image> ),\n *  displacementScale: <float>,\n *  displacementBias: <float>,\n *\n *  wireframe: <boolean>,\n *  wireframeLinewidth: <float>\n *\n *  skinning: <bool>,\n *  morphTargets: <bool>,\n *  morphNormals: <bool>\n * }\n */\n\nfunction MeshNormalMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshNormalMaterial';\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\tthis.lights = false;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshNormalMaterial.prototype = Object.create( Material.prototype );\nMeshNormalMaterial.prototype.constructor = MeshNormalMaterial;\n\nMeshNormalMaterial.prototype.isMeshNormalMaterial = true;\n\nMeshNormalMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n *  color: <hex>,\n *  opacity: <float>,\n *\n *  map: new THREE.Texture( <Image> ),\n *\n *  lightMap: new THREE.Texture( <Image> ),\n *  lightMapIntensity: <float>\n *\n *  aoMap: new THREE.Texture( <Image> ),\n *  aoMapIntensity: <float>\n *\n *  emissive: <hex>,\n *  emissiveIntensity: <float>\n *  emissiveMap: new THREE.Texture( <Image> ),\n *\n *  specularMap: new THREE.Texture( <Image> ),\n *\n *  alphaMap: new THREE.Texture( <Image> ),\n *\n *  envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n *  combine: THREE.Multiply,\n *  reflectivity: <float>,\n *  refractionRatio: <float>,\n *\n *  wireframe: <boolean>,\n *  wireframeLinewidth: <float>,\n *\n *  skinning: <bool>,\n *  morphTargets: <bool>,\n *  morphNormals: <bool>\n * }\n */\n\nfunction MeshLambertMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshLambertMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshLambertMaterial.prototype = Object.create( Material.prototype );\nMeshLambertMaterial.prototype.constructor = MeshLambertMaterial;\n\nMeshLambertMaterial.prototype.isMeshLambertMaterial = true;\n\nMeshLambertMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n *  color: <hex>,\n *  opacity: <float>,\n *\n *  linewidth: <float>,\n *\n *  scale: <float>,\n *  dashSize: <float>,\n *  gapSize: <float>\n * }\n */\n\nfunction LineDashedMaterial( parameters ) {\n\n\tLineBasicMaterial.call( this );\n\n\tthis.type = 'LineDashedMaterial';\n\n\tthis.scale = 1;\n\tthis.dashSize = 3;\n\tthis.gapSize = 1;\n\n\tthis.setValues( parameters );\n\n}\n\nLineDashedMaterial.prototype = Object.create( LineBasicMaterial.prototype );\nLineDashedMaterial.prototype.constructor = LineDashedMaterial;\n\nLineDashedMaterial.prototype.isLineDashedMaterial = true;\n\nLineDashedMaterial.prototype.copy = function ( source ) {\n\n\tLineBasicMaterial.prototype.copy.call( this, source );\n\n\tthis.scale = source.scale;\n\tthis.dashSize = source.dashSize;\n\tthis.gapSize = source.gapSize;\n\n\treturn this;\n\n};\n\n\n\nvar Materials = /*#__PURE__*/Object.freeze({\n\tShadowMaterial: ShadowMaterial,\n\tSpriteMaterial: SpriteMaterial,\n\tRawShaderMaterial: RawShaderMaterial,\n\tShaderMaterial: ShaderMaterial,\n\tPointsMaterial: PointsMaterial,\n\tMeshPhysicalMaterial: MeshPhysicalMaterial,\n\tMeshStandardMaterial: MeshStandardMaterial,\n\tMeshPhongMaterial: MeshPhongMaterial,\n\tMeshToonMaterial: MeshToonMaterial,\n\tMeshNormalMaterial: MeshNormalMaterial,\n\tMeshLambertMaterial: MeshLambertMaterial,\n\tMeshDepthMaterial: MeshDepthMaterial,\n\tMeshDistanceMaterial: MeshDistanceMaterial,\n\tMeshBasicMaterial: MeshBasicMaterial,\n\tLineDashedMaterial: LineDashedMaterial,\n\tLineBasicMaterial: LineBasicMaterial,\n\tMaterial: Material\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar Cache = {\n\n\tenabled: false,\n\n\tfiles: {},\n\n\tadd: function ( key, file ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\tthis.files[ key ] = file;\n\n\t},\n\n\tget: function ( key ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\treturn this.files[ key ];\n\n\t},\n\n\tremove: function ( key ) {\n\n\t\tdelete this.files[ key ];\n\n\t},\n\n\tclear: function () {\n\n\t\tthis.files = {};\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LoadingManager( onLoad, onProgress, onError ) {\n\n\tvar scope = this;\n\n\tvar isLoading = false;\n\tvar itemsLoaded = 0;\n\tvar itemsTotal = 0;\n\tvar urlModifier = undefined;\n\n\tthis.onStart = undefined;\n\tthis.onLoad = onLoad;\n\tthis.onProgress = onProgress;\n\tthis.onError = onError;\n\n\tthis.itemStart = function ( url ) {\n\n\t\titemsTotal ++;\n\n\t\tif ( isLoading === false ) {\n\n\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tisLoading = true;\n\n\t};\n\n\tthis.itemEnd = function ( url ) {\n\n\t\titemsLoaded ++;\n\n\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t}\n\n\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\tisLoading = false;\n\n\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\tscope.onLoad();\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.itemError = function ( url ) {\n\n\t\tif ( scope.onError !== undefined ) {\n\n\t\t\tscope.onError( url );\n\n\t\t}\n\n\t};\n\n\tthis.resolveURL = function ( url ) {\n\n\t\tif ( urlModifier ) {\n\n\t\t\treturn urlModifier( url );\n\n\t\t}\n\n\t\treturn url;\n\n\t};\n\n\tthis.setURLModifier = function ( transform ) {\n\n\t\turlModifier = transform;\n\t\treturn this;\n\n\t};\n\n}\n\nvar DefaultLoadingManager = new LoadingManager();\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar loading = {};\n\nfunction FileLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( FileLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tvar scope = this;\n\n\t\tvar cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\t// Check if request is duplicate\n\n\t\tif ( loading[ url ] !== undefined ) {\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// Check for data: URI\n\t\tvar dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/;\n\t\tvar dataUriRegexResult = url.match( dataUriRegex );\n\n\t\t// Safari can not handle Data URIs through XMLHttpRequest so process manually\n\t\tif ( dataUriRegexResult ) {\n\n\t\t\tvar mimeType = dataUriRegexResult[ 1 ];\n\t\t\tvar isBase64 = !! dataUriRegexResult[ 2 ];\n\t\t\tvar data = dataUriRegexResult[ 3 ];\n\n\t\t\tdata = window.decodeURIComponent( data );\n\n\t\t\tif ( isBase64 ) data = window.atob( data );\n\n\t\t\ttry {\n\n\t\t\t\tvar response;\n\t\t\t\tvar responseType = ( this.responseType || '' ).toLowerCase();\n\n\t\t\t\tswitch ( responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t\tvar view = new Uint8Array( data.length );\n\n\t\t\t\t\t\tfor ( var i = 0; i < data.length; i ++ ) {\n\n\t\t\t\t\t\t\tview[ i ] = data.charCodeAt( i );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( responseType === 'blob' ) {\n\n\t\t\t\t\t\t\tresponse = new Blob( [ view.buffer ], { type: mimeType } );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tresponse = view.buffer;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\tvar parser = new DOMParser();\n\t\t\t\t\t\tresponse = parser.parseFromString( data, mimeType );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\tresponse = JSON.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault: // 'text' or other\n\n\t\t\t\t\t\tresponse = data;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\t// Wait for next browser tick like standard XMLHttpRequest event dispatching does\n\t\t\t\twindow.setTimeout( function () {\n\n\t\t\t\t\tif ( onLoad ) onLoad( response );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0 );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\t// Wait for next browser tick like standard XMLHttpRequest event dispatching does\n\t\t\t\twindow.setTimeout( function () {\n\n\t\t\t\t\tif ( onError ) onError( error );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\t\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t\t}, 0 );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Initialise array for duplicate requests\n\n\t\t\tloading[ url ] = [];\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\tvar request = new XMLHttpRequest();\n\n\t\t\trequest.open( 'GET', url, true );\n\n\t\t\trequest.addEventListener( 'load', function ( event ) {\n\n\t\t\t\tvar response = this.response;\n\n\t\t\t\tCache.add( url, response );\n\n\t\t\t\tvar callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tif ( this.status === 200 || this.status === 0 ) {\n\n\t\t\t\t\t// Some browsers return HTTP Status 0 when using non-http protocol\n\t\t\t\t\t// e.g. 'file://' or 'data://'. Handle as success.\n\n\t\t\t\t\tif ( this.status === 0 ) console.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\tfor ( var i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar callback = callbacks[ i ];\n\t\t\t\t\t\tif ( callback.onLoad ) callback.onLoad( response );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfor ( var i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar callback = callbacks[ i ];\n\t\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\t\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t\t}\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'progress', function ( event ) {\n\n\t\t\t\tvar callbacks = loading[ url ];\n\n\t\t\t\tfor ( var i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onProgress ) callback.onProgress( event );\n\n\t\t\t\t}\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'error', function ( event ) {\n\n\t\t\t\tvar callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( var i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemEnd( url );\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}, false );\n\n\t\t\tif ( this.responseType !== undefined ) request.responseType = this.responseType;\n\t\t\tif ( this.withCredentials !== undefined ) request.withCredentials = this.withCredentials;\n\n\t\t\tif ( request.overrideMimeType ) request.overrideMimeType( this.mimeType !== undefined ? this.mimeType : 'text/plain' );\n\n\t\t\tfor ( var header in this.requestHeader ) {\n\n\t\t\t\trequest.setRequestHeader( header, this.requestHeader[ header ] );\n\n\t\t\t}\n\n\t\t\trequest.send( null );\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\treturn request;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t},\n\n\tsetResponseType: function ( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t},\n\n\tsetWithCredentials: function ( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t},\n\n\tsetMimeType: function ( value ) {\n\n\t\tthis.mimeType = value;\n\t\treturn this;\n\n\t},\n\n\tsetRequestHeader: function ( value ) {\n\n\t\tthis.requestHeader = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n *\n * Abstract Base class to block based textures loader (dds, pvr, ...)\n */\n\nfunction CompressedTextureLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t// override in sub classes\n\tthis._parser = null;\n\n}\n\nObject.assign( CompressedTextureLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar images = [];\n\n\t\tvar texture = new CompressedTexture();\n\t\ttexture.image = images;\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\tvar texDatas = scope._parser( buffer, true );\n\n\t\t\t\timages[ i ] = {\n\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t};\n\n\t\t\t\tloaded += 1;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 )\n\t\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tif ( Array.isArray( url ) ) {\n\n\t\t\tvar loaded = 0;\n\n\t\t\tfor ( var i = 0, il = url.length; i < il; ++ i ) {\n\n\t\t\t\tloadTexture( i );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// compressed cubemap texture stored in a single DDS file\n\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tvar texDatas = scope._parser( buffer, true );\n\n\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\tvar faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\tfor ( var f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\timages[ f ] = { mipmaps: [] };\n\n\t\t\t\t\t\tfor ( var i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\treturn texture;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author Nikos M. / https://github.com/foo123/\n *\n * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n */\n\nfunction DataTextureLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t// override in sub classes\n\tthis._parser = null;\n\n}\n\nObject.assign( DataTextureLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar texture = new DataTexture();\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tvar texData = scope._parser( buffer );\n\n\t\t\tif ( ! texData ) return;\n\n\t\t\tif ( undefined !== texData.image ) {\n\n\t\t\t\ttexture.image = texData.image;\n\n\t\t\t} else if ( undefined !== texData.data ) {\n\n\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t}\n\n\t\t\ttexture.wrapS = undefined !== texData.wrapS ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\ttexture.wrapT = undefined !== texData.wrapT ? texData.wrapT : ClampToEdgeWrapping;\n\n\t\t\ttexture.magFilter = undefined !== texData.magFilter ? texData.magFilter : LinearFilter;\n\t\t\ttexture.minFilter = undefined !== texData.minFilter ? texData.minFilter : LinearMipMapLinearFilter;\n\n\t\t\ttexture.anisotropy = undefined !== texData.anisotropy ? texData.anisotropy : 1;\n\n\t\t\tif ( undefined !== texData.format ) {\n\n\t\t\t\ttexture.format = texData.format;\n\n\t\t\t}\n\t\t\tif ( undefined !== texData.type ) {\n\n\t\t\t\ttexture.type = texData.type;\n\n\t\t\t}\n\n\t\t\tif ( undefined !== texData.mipmaps ) {\n\n\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\n\t\t\t}\n\n\t\t\tif ( 1 === texData.mipmapCount ) {\n\n\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t}\n\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}, onProgress, onError );\n\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction ImageLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( ImageLoader.prototype, {\n\n\tcrossOrigin: 'anonymous',\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tvar scope = this;\n\n\t\tvar cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tvar image = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'img' );\n\n\t\tfunction onImageLoad() {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t\tCache.add( url, this );\n\n\t\t\tif ( onLoad ) onLoad( this );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction onImageError( event ) {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t\tif ( onError ) onError( event );\n\n\t\t\tscope.manager.itemEnd( url );\n\t\t\tscope.manager.itemError( url );\n\n\t\t}\n\n\t\timage.addEventListener( 'load', onImageLoad, false );\n\t\timage.addEventListener( 'error', onImageError, false );\n\n\t\tif ( url.substr( 0, 5 ) !== 'data:' ) {\n\n\t\t\tif ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\timage.src = url;\n\n\t\treturn image;\n\n\t},\n\n\tsetCrossOrigin: function ( value ) {\n\n\t\tthis.crossOrigin = value;\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction CubeTextureLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( CubeTextureLoader.prototype, {\n\n\tcrossOrigin: 'anonymous',\n\n\tload: function ( urls, onLoad, onProgress, onError ) {\n\n\t\tvar texture = new CubeTexture();\n\n\t\tvar loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tvar loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( urls[ i ], function ( image ) {\n\n\t\t\t\ttexture.images[ i ] = image;\n\n\t\t\t\tloaded ++;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, undefined, onError );\n\n\t\t}\n\n\t\tfor ( var i = 0; i < urls.length; ++ i ) {\n\n\t\t\tloadTexture( i );\n\n\t\t}\n\n\t\treturn texture;\n\n\t},\n\n\tsetCrossOrigin: function ( value ) {\n\n\t\tthis.crossOrigin = value;\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction TextureLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( TextureLoader.prototype, {\n\n\tcrossOrigin: 'anonymous',\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar texture = new Texture();\n\n\t\tvar loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tloader.load( url, function ( image ) {\n\n\t\t\ttexture.image = image;\n\n\t\t\t// JPEGs can't have an alpha channel, so memory can be saved by storing them as RGB.\n\t\t\tvar isJPEG = url.search( /\\.(jpg|jpeg)$/ ) > 0 || url.search( /^data\\:image\\/jpeg/ ) === 0;\n\n\t\t\ttexture.format = isJPEG ? RGBFormat : RGBAFormat;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t},\n\n\tsetCrossOrigin: function ( value ) {\n\n\t\tthis.crossOrigin = value;\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Extensible curve object\n *\n * Some common of curve methods:\n * .getPoint( t, optionalTarget ), .getTangent( t )\n * .getPointAt( u, optionalTarget ), .getTangentAt( u )\n * .getPoints(), .getSpacedPoints()\n * .getLength()\n * .updateArcLengths()\n *\n * This following curves inherit from THREE.Curve:\n *\n * -- 2D curves --\n * THREE.ArcCurve\n * THREE.CubicBezierCurve\n * THREE.EllipseCurve\n * THREE.LineCurve\n * THREE.QuadraticBezierCurve\n * THREE.SplineCurve\n *\n * -- 3D curves --\n * THREE.CatmullRomCurve3\n * THREE.CubicBezierCurve3\n * THREE.LineCurve3\n * THREE.QuadraticBezierCurve3\n *\n * A series of curves can be represented as a THREE.CurvePath.\n *\n **/\n\n/**************************************************************\n *\tAbstract Curve base class\n **************************************************************/\n\nfunction Curve() {\n\n\tthis.type = 'Curve';\n\n\tthis.arcLengthDivisions = 200;\n\n}\n\nObject.assign( Curve.prototype, {\n\n\t// Virtual base class method to overwrite and implement in subclasses\n\t//\t- t [0 .. 1]\n\n\tgetPoint: function ( /* t, optionalTarget */ ) {\n\n\t\tconsole.warn( 'THREE.Curve: .getPoint() not implemented.' );\n\t\treturn null;\n\n\t},\n\n\t// Get point at relative position in curve according to arc length\n\t// - u [0 .. 1]\n\n\tgetPointAt: function ( u, optionalTarget ) {\n\n\t\tvar t = this.getUtoTmapping( u );\n\t\treturn this.getPoint( t, optionalTarget );\n\n\t},\n\n\t// Get sequence of points using getPoint( t )\n\n\tgetPoints: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = 5;\n\n\t\tvar points = [];\n\n\t\tfor ( var d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get sequence of points using getPointAt( u )\n\n\tgetSpacedPoints: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = 5;\n\n\t\tvar points = [];\n\n\t\tfor ( var d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPointAt( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get total curve arc length\n\n\tgetLength: function () {\n\n\t\tvar lengths = this.getLengths();\n\t\treturn lengths[ lengths.length - 1 ];\n\n\t},\n\n\t// Get list of cumulative segment lengths\n\n\tgetLengths: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = this.arcLengthDivisions;\n\n\t\tif ( this.cacheArcLengths &&\n\t\t\t( this.cacheArcLengths.length === divisions + 1 ) &&\n\t\t\t! this.needsUpdate ) {\n\n\t\t\treturn this.cacheArcLengths;\n\n\t\t}\n\n\t\tthis.needsUpdate = false;\n\n\t\tvar cache = [];\n\t\tvar current, last = this.getPoint( 0 );\n\t\tvar p, sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( p = 1; p <= divisions; p ++ ) {\n\n\t\t\tcurrent = this.getPoint( p / divisions );\n\t\t\tsum += current.distanceTo( last );\n\t\t\tcache.push( sum );\n\t\t\tlast = current;\n\n\t\t}\n\n\t\tthis.cacheArcLengths = cache;\n\n\t\treturn cache; // { sums: cache, sum: sum }; Sum is in the last element.\n\n\t},\n\n\tupdateArcLengths: function () {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.getLengths();\n\n\t},\n\n\t// Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n\n\tgetUtoTmapping: function ( u, distance ) {\n\n\t\tvar arcLengths = this.getLengths();\n\n\t\tvar i = 0, il = arcLengths.length;\n\n\t\tvar targetArcLength; // The targeted u distance value to get\n\n\t\tif ( distance ) {\n\n\t\t\ttargetArcLength = distance;\n\n\t\t} else {\n\n\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t}\n\n\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\tvar low = 0, high = il - 1, comparison;\n\n\t\twhile ( low <= high ) {\n\n\t\t\ti = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\n\n\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\tlow = i + 1;\n\n\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\thigh = i - 1;\n\n\t\t\t} else {\n\n\t\t\t\thigh = i;\n\t\t\t\tbreak;\n\n\t\t\t\t// DONE\n\n\t\t\t}\n\n\t\t}\n\n\t\ti = high;\n\n\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\treturn i / ( il - 1 );\n\n\t\t}\n\n\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\tvar lengthBefore = arcLengths[ i ];\n\t\tvar lengthAfter = arcLengths[ i + 1 ];\n\n\t\tvar segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tvar segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tvar t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\treturn t;\n\n\t},\n\n\t// Returns a unit vector tangent at t\n\t// In case any sub curve does not implement its tangent derivation,\n\t// 2 points a small delta apart will be used to find its gradient\n\t// which seems to give a reasonable approximation\n\n\tgetTangent: function ( t ) {\n\n\t\tvar delta = 0.0001;\n\t\tvar t1 = t - delta;\n\t\tvar t2 = t + delta;\n\n\t\t// Capping in case of danger\n\n\t\tif ( t1 < 0 ) t1 = 0;\n\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\tvar pt1 = this.getPoint( t1 );\n\t\tvar pt2 = this.getPoint( t2 );\n\n\t\tvar vec = pt2.clone().sub( pt1 );\n\t\treturn vec.normalize();\n\n\t},\n\n\tgetTangentAt: function ( u ) {\n\n\t\tvar t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t );\n\n\t},\n\n\tcomputeFrenetFrames: function ( segments, closed ) {\n\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\tvar normal = new Vector3();\n\n\t\tvar tangents = [];\n\t\tvar normals = [];\n\t\tvar binormals = [];\n\n\t\tvar vec = new Vector3();\n\t\tvar mat = new Matrix4();\n\n\t\tvar i, u, theta;\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( i = 0; i <= segments; i ++ ) {\n\n\t\t\tu = i / segments;\n\n\t\t\ttangents[ i ] = this.getTangentAt( u );\n\t\t\ttangents[ i ].normalize();\n\n\t\t}\n\n\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t// and in the direction of the minimum tangent xyz component\n\n\t\tnormals[ 0 ] = new Vector3();\n\t\tbinormals[ 0 ] = new Vector3();\n\t\tvar min = Number.MAX_VALUE;\n\t\tvar tx = Math.abs( tangents[ 0 ].x );\n\t\tvar ty = Math.abs( tangents[ 0 ].y );\n\t\tvar tz = Math.abs( tangents[ 0 ].z );\n\n\t\tif ( tx <= min ) {\n\n\t\t\tmin = tx;\n\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t}\n\n\t\tif ( ty <= min ) {\n\n\t\t\tmin = ty;\n\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t}\n\n\t\tif ( tz <= min ) {\n\n\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t}\n\n\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\tfor ( i = 1; i <= segments; i ++ ) {\n\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\tvec.normalize();\n\n\t\t\t\ttheta = Math.acos( _Math.clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors\n\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\n\n\t\t\t}\n\n\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t}\n\n\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\tif ( closed === true ) {\n\n\t\t\ttheta = Math.acos( _Math.clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) );\n\t\t\ttheta /= segments;\n\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\n\n\t\t\t\ttheta = - theta;\n\n\t\t\t}\n\n\t\t\tfor ( i = 1; i <= segments; i ++ ) {\n\n\t\t\t\t// twist a little...\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttangents: tangents,\n\t\t\tnormals: normals,\n\t\t\tbinormals: binormals\n\t\t};\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.arcLengthDivisions = source.arcLengthDivisions;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Curve',\n\t\t\t\tgenerator: 'Curve.toJSON'\n\t\t\t}\n\t\t};\n\n\t\tdata.arcLengthDivisions = this.arcLengthDivisions;\n\t\tdata.type = this.type;\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tthis.arcLengthDivisions = json.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'EllipseCurve';\n\n\tthis.aX = aX || 0;\n\tthis.aY = aY || 0;\n\n\tthis.xRadius = xRadius || 1;\n\tthis.yRadius = yRadius || 1;\n\n\tthis.aStartAngle = aStartAngle || 0;\n\tthis.aEndAngle = aEndAngle || 2 * Math.PI;\n\n\tthis.aClockwise = aClockwise || false;\n\n\tthis.aRotation = aRotation || 0;\n\n}\n\nEllipseCurve.prototype = Object.create( Curve.prototype );\nEllipseCurve.prototype.constructor = EllipseCurve;\n\nEllipseCurve.prototype.isEllipseCurve = true;\n\nEllipseCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector2();\n\n\tvar twoPi = Math.PI * 2;\n\tvar deltaAngle = this.aEndAngle - this.aStartAngle;\n\tvar samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t// ensures that deltaAngle is 0 .. 2 PI\n\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\tif ( samePoints ) {\n\n\t\t\tdeltaAngle = 0;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = twoPi;\n\n\t\t}\n\n\t}\n\n\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\tdeltaAngle = - twoPi;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t}\n\n\t}\n\n\tvar angle = this.aStartAngle + t * deltaAngle;\n\tvar x = this.aX + this.xRadius * Math.cos( angle );\n\tvar y = this.aY + this.yRadius * Math.sin( angle );\n\n\tif ( this.aRotation !== 0 ) {\n\n\t\tvar cos = Math.cos( this.aRotation );\n\t\tvar sin = Math.sin( this.aRotation );\n\n\t\tvar tx = x - this.aX;\n\t\tvar ty = y - this.aY;\n\n\t\t// Rotate the point about the center of the ellipse.\n\t\tx = tx * cos - ty * sin + this.aX;\n\t\ty = tx * sin + ty * cos + this.aY;\n\n\t}\n\n\treturn point.set( x, y );\n\n};\n\nEllipseCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.aX = source.aX;\n\tthis.aY = source.aY;\n\n\tthis.xRadius = source.xRadius;\n\tthis.yRadius = source.yRadius;\n\n\tthis.aStartAngle = source.aStartAngle;\n\tthis.aEndAngle = source.aEndAngle;\n\n\tthis.aClockwise = source.aClockwise;\n\n\tthis.aRotation = source.aRotation;\n\n\treturn this;\n\n};\n\n\nEllipseCurve.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.aX = this.aX;\n\tdata.aY = this.aY;\n\n\tdata.xRadius = this.xRadius;\n\tdata.yRadius = this.yRadius;\n\n\tdata.aStartAngle = this.aStartAngle;\n\tdata.aEndAngle = this.aEndAngle;\n\n\tdata.aClockwise = this.aClockwise;\n\n\tdata.aRotation = this.aRotation;\n\n\treturn data;\n\n};\n\nEllipseCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.aX = json.aX;\n\tthis.aY = json.aY;\n\n\tthis.xRadius = json.xRadius;\n\tthis.yRadius = json.yRadius;\n\n\tthis.aStartAngle = json.aStartAngle;\n\tthis.aEndAngle = json.aEndAngle;\n\n\tthis.aClockwise = json.aClockwise;\n\n\tthis.aRotation = json.aRotation;\n\n\treturn this;\n\n};\n\nfunction ArcCurve( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\tEllipseCurve.call( this, aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\tthis.type = 'ArcCurve';\n\n}\n\nArcCurve.prototype = Object.create( EllipseCurve.prototype );\nArcCurve.prototype.constructor = ArcCurve;\n\nArcCurve.prototype.isArcCurve = true;\n\n/**\n * @author zz85 https://github.com/zz85\n *\n * Centripetal CatmullRom Curve - which is useful for avoiding\n * cusps and self-intersections in non-uniform catmull rom curves.\n * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n *\n * curve.type accepts centripetal(default), chordal and catmullrom\n * curve.tension is used for catmullrom which defaults to 0.5\n */\n\n\n/*\nBased on an optimized c++ solution in\n - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n - http://ideone.com/NoEbVM\n\nThis CubicPoly class could be used for reusing some variables and calculations,\nbut for three.js curve use, it could be possible inlined and flatten into a single function call\nwhich can be placed in CurveUtils.\n*/\n\nfunction CubicPoly() {\n\n\tvar c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n\n\t/*\n\t * Compute coefficients for a cubic polynomial\n\t *   p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t * such that\n\t *   p(0) = x0, p(1) = x1\n\t *  and\n\t *   p'(0) = t0, p'(1) = t1.\n\t */\n\tfunction init( x0, x1, t0, t1 ) {\n\n\t\tc0 = x0;\n\t\tc1 = t0;\n\t\tc2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\tc3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t}\n\n\treturn {\n\n\t\tinitCatmullRom: function ( x0, x1, x2, x3, tension ) {\n\n\t\t\tinit( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t\t},\n\n\t\tinitNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t\t// compute tangents when parameterized in [t1,t2]\n\t\t\tvar t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\t\tvar t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\n\n\t\t\t// rescale tangents for parametrization in [0,1]\n\t\t\tt1 *= dt1;\n\t\t\tt2 *= dt1;\n\n\t\t\tinit( x1, x2, t1, t2 );\n\n\t\t},\n\n\t\tcalc: function ( t ) {\n\n\t\t\tvar t2 = t * t;\n\t\t\tvar t3 = t2 * t;\n\t\t\treturn c0 + c1 * t + c2 * t2 + c3 * t3;\n\n\t\t}\n\n\t};\n\n}\n\n//\n\nvar tmp = new Vector3();\nvar px = new CubicPoly(), py = new CubicPoly(), pz = new CubicPoly();\n\nfunction CatmullRomCurve3( points, closed, curveType, tension ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CatmullRomCurve3';\n\n\tthis.points = points || [];\n\tthis.closed = closed || false;\n\tthis.curveType = curveType || 'centripetal';\n\tthis.tension = tension || 0.5;\n\n}\n\nCatmullRomCurve3.prototype = Object.create( Curve.prototype );\nCatmullRomCurve3.prototype.constructor = CatmullRomCurve3;\n\nCatmullRomCurve3.prototype.isCatmullRomCurve3 = true;\n\nCatmullRomCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector3();\n\n\tvar points = this.points;\n\tvar l = points.length;\n\n\tvar p = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\tvar intPoint = Math.floor( p );\n\tvar weight = p - intPoint;\n\n\tif ( this.closed ) {\n\n\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l;\n\n\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\tintPoint = l - 2;\n\t\tweight = 1;\n\n\t}\n\n\tvar p0, p1, p2, p3; // 4 points\n\n\tif ( this.closed || intPoint > 0 ) {\n\n\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t} else {\n\n\t\t// extrapolate first point\n\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\tp0 = tmp;\n\n\t}\n\n\tp1 = points[ intPoint % l ];\n\tp2 = points[ ( intPoint + 1 ) % l ];\n\n\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t} else {\n\n\t\t// extrapolate last point\n\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\tp3 = tmp;\n\n\t}\n\n\tif ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) {\n\n\t\t// init Centripetal / Chordal Catmull-Rom\n\t\tvar pow = this.curveType === 'chordal' ? 0.5 : 0.25;\n\t\tvar dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\tvar dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\tvar dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t// safety check for repeated points\n\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t} else if ( this.curveType === 'catmullrom' ) {\n\n\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension );\n\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension );\n\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension );\n\n\t}\n\n\tpoint.set(\n\t\tpx.calc( weight ),\n\t\tpy.calc( weight ),\n\t\tpz.calc( weight )\n\t);\n\n\treturn point;\n\n};\n\nCatmullRomCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.points = [];\n\n\tfor ( var i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\tvar point = source.points[ i ];\n\n\t\tthis.points.push( point.clone() );\n\n\t}\n\n\tthis.closed = source.closed;\n\tthis.curveType = source.curveType;\n\tthis.tension = source.tension;\n\n\treturn this;\n\n};\n\nCatmullRomCurve3.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.points = [];\n\n\tfor ( var i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\tvar point = this.points[ i ];\n\t\tdata.points.push( point.toArray() );\n\n\t}\n\n\tdata.closed = this.closed;\n\tdata.curveType = this.curveType;\n\tdata.tension = this.tension;\n\n\treturn data;\n\n};\n\nCatmullRomCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.points = [];\n\n\tfor ( var i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\tvar point = json.points[ i ];\n\t\tthis.points.push( new Vector3().fromArray( point ) );\n\n\t}\n\n\tthis.closed = json.closed;\n\tthis.curveType = json.curveType;\n\tthis.tension = json.tension;\n\n\treturn this;\n\n};\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n * Bezier Curves formulas obtained from\n * http://en.wikipedia.org/wiki/Bézier_curve\n */\n\nfunction CatmullRom( t, p0, p1, p2, p3 ) {\n\n\tvar v0 = ( p2 - p0 ) * 0.5;\n\tvar v1 = ( p3 - p1 ) * 0.5;\n\tvar t2 = t * t;\n\tvar t3 = t * t2;\n\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n}\n\n//\n\nfunction QuadraticBezierP0( t, p ) {\n\n\tvar k = 1 - t;\n\treturn k * k * p;\n\n}\n\nfunction QuadraticBezierP1( t, p ) {\n\n\treturn 2 * ( 1 - t ) * t * p;\n\n}\n\nfunction QuadraticBezierP2( t, p ) {\n\n\treturn t * t * p;\n\n}\n\nfunction QuadraticBezier( t, p0, p1, p2 ) {\n\n\treturn QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) +\n\t\tQuadraticBezierP2( t, p2 );\n\n}\n\n//\n\nfunction CubicBezierP0( t, p ) {\n\n\tvar k = 1 - t;\n\treturn k * k * k * p;\n\n}\n\nfunction CubicBezierP1( t, p ) {\n\n\tvar k = 1 - t;\n\treturn 3 * k * k * t * p;\n\n}\n\nfunction CubicBezierP2( t, p ) {\n\n\treturn 3 * ( 1 - t ) * t * t * p;\n\n}\n\nfunction CubicBezierP3( t, p ) {\n\n\treturn t * t * t * p;\n\n}\n\nfunction CubicBezier( t, p0, p1, p2, p3 ) {\n\n\treturn CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) +\n\t\tCubicBezierP3( t, p3 );\n\n}\n\nfunction CubicBezierCurve( v0, v1, v2, v3 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CubicBezierCurve';\n\n\tthis.v0 = v0 || new Vector2();\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\tthis.v3 = v3 || new Vector2();\n\n}\n\nCubicBezierCurve.prototype = Object.create( Curve.prototype );\nCubicBezierCurve.prototype.constructor = CubicBezierCurve;\n\nCubicBezierCurve.prototype.isCubicBezierCurve = true;\n\nCubicBezierCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector2();\n\n\tvar v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\tpoint.set(\n\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y )\n\t);\n\n\treturn point;\n\n};\n\nCubicBezierCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\tthis.v3.copy( source.v3 );\n\n\treturn this;\n\n};\n\nCubicBezierCurve.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\tdata.v3 = this.v3.toArray();\n\n\treturn data;\n\n};\n\nCubicBezierCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\tthis.v3.fromArray( json.v3 );\n\n\treturn this;\n\n};\n\nfunction CubicBezierCurve3( v0, v1, v2, v3 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CubicBezierCurve3';\n\n\tthis.v0 = v0 || new Vector3();\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\tthis.v3 = v3 || new Vector3();\n\n}\n\nCubicBezierCurve3.prototype = Object.create( Curve.prototype );\nCubicBezierCurve3.prototype.constructor = CubicBezierCurve3;\n\nCubicBezierCurve3.prototype.isCubicBezierCurve3 = true;\n\nCubicBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector3();\n\n\tvar v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\tpoint.set(\n\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y ),\n\t\tCubicBezier( t, v0.z, v1.z, v2.z, v3.z )\n\t);\n\n\treturn point;\n\n};\n\nCubicBezierCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\tthis.v3.copy( source.v3 );\n\n\treturn this;\n\n};\n\nCubicBezierCurve3.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\tdata.v3 = this.v3.toArray();\n\n\treturn data;\n\n};\n\nCubicBezierCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\tthis.v3.fromArray( json.v3 );\n\n\treturn this;\n\n};\n\nfunction LineCurve( v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'LineCurve';\n\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\n}\n\nLineCurve.prototype = Object.create( Curve.prototype );\nLineCurve.prototype.constructor = LineCurve;\n\nLineCurve.prototype.isLineCurve = true;\n\nLineCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector2();\n\n\tif ( t === 1 ) {\n\n\t\tpoint.copy( this.v2 );\n\n\t} else {\n\n\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t}\n\n\treturn point;\n\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve.prototype.getPointAt = function ( u, optionalTarget ) {\n\n\treturn this.getPoint( u, optionalTarget );\n\n};\n\nLineCurve.prototype.getTangent = function ( /* t */ ) {\n\n\tvar tangent = this.v2.clone().sub( this.v1 );\n\n\treturn tangent.normalize();\n\n};\n\nLineCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nLineCurve.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nLineCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction LineCurve3( v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'LineCurve3';\n\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\n}\n\nLineCurve3.prototype = Object.create( Curve.prototype );\nLineCurve3.prototype.constructor = LineCurve3;\n\nLineCurve3.prototype.isLineCurve3 = true;\n\nLineCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector3();\n\n\tif ( t === 1 ) {\n\n\t\tpoint.copy( this.v2 );\n\n\t} else {\n\n\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t}\n\n\treturn point;\n\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve3.prototype.getPointAt = function ( u, optionalTarget ) {\n\n\treturn this.getPoint( u, optionalTarget );\n\n};\n\nLineCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nLineCurve3.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nLineCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction QuadraticBezierCurve( v0, v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'QuadraticBezierCurve';\n\n\tthis.v0 = v0 || new Vector2();\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\n}\n\nQuadraticBezierCurve.prototype = Object.create( Curve.prototype );\nQuadraticBezierCurve.prototype.constructor = QuadraticBezierCurve;\n\nQuadraticBezierCurve.prototype.isQuadraticBezierCurve = true;\n\nQuadraticBezierCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector2();\n\n\tvar v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\tpoint.set(\n\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\tQuadraticBezier( t, v0.y, v1.y, v2.y )\n\t);\n\n\treturn point;\n\n};\n\nQuadraticBezierCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nQuadraticBezierCurve.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nQuadraticBezierCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction QuadraticBezierCurve3( v0, v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'QuadraticBezierCurve3';\n\n\tthis.v0 = v0 || new Vector3();\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\n}\n\nQuadraticBezierCurve3.prototype = Object.create( Curve.prototype );\nQuadraticBezierCurve3.prototype.constructor = QuadraticBezierCurve3;\n\nQuadraticBezierCurve3.prototype.isQuadraticBezierCurve3 = true;\n\nQuadraticBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector3();\n\n\tvar v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\tpoint.set(\n\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\tQuadraticBezier( t, v0.y, v1.y, v2.y ),\n\t\tQuadraticBezier( t, v0.z, v1.z, v2.z )\n\t);\n\n\treturn point;\n\n};\n\nQuadraticBezierCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nQuadraticBezierCurve3.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nQuadraticBezierCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction SplineCurve( points /* array of Vector2 */ ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'SplineCurve';\n\n\tthis.points = points || [];\n\n}\n\nSplineCurve.prototype = Object.create( Curve.prototype );\nSplineCurve.prototype.constructor = SplineCurve;\n\nSplineCurve.prototype.isSplineCurve = true;\n\nSplineCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector2();\n\n\tvar points = this.points;\n\tvar p = ( points.length - 1 ) * t;\n\n\tvar intPoint = Math.floor( p );\n\tvar weight = p - intPoint;\n\n\tvar p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\tvar p1 = points[ intPoint ];\n\tvar p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\tvar p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\tpoint.set(\n\t\tCatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),\n\t\tCatmullRom( weight, p0.y, p1.y, p2.y, p3.y )\n\t);\n\n\treturn point;\n\n};\n\nSplineCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.points = [];\n\n\tfor ( var i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\tvar point = source.points[ i ];\n\n\t\tthis.points.push( point.clone() );\n\n\t}\n\n\treturn this;\n\n};\n\nSplineCurve.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.points = [];\n\n\tfor ( var i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\tvar point = this.points[ i ];\n\t\tdata.points.push( point.toArray() );\n\n\t}\n\n\treturn data;\n\n};\n\nSplineCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.points = [];\n\n\tfor ( var i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\tvar point = json.points[ i ];\n\t\tthis.points.push( new Vector2().fromArray( point ) );\n\n\t}\n\n\treturn this;\n\n};\n\n\n\nvar Curves = /*#__PURE__*/Object.freeze({\n\tArcCurve: ArcCurve,\n\tCatmullRomCurve3: CatmullRomCurve3,\n\tCubicBezierCurve: CubicBezierCurve,\n\tCubicBezierCurve3: CubicBezierCurve3,\n\tEllipseCurve: EllipseCurve,\n\tLineCurve: LineCurve,\n\tLineCurve3: LineCurve3,\n\tQuadraticBezierCurve: QuadraticBezierCurve,\n\tQuadraticBezierCurve3: QuadraticBezierCurve3,\n\tSplineCurve: SplineCurve\n});\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n **/\n\n/**************************************************************\n *\tCurved Path - a curve path is simply a array of connected\n *  curves, but retains the api of a curve\n **************************************************************/\n\nfunction CurvePath() {\n\n\tCurve.call( this );\n\n\tthis.type = 'CurvePath';\n\n\tthis.curves = [];\n\tthis.autoClose = false; // Automatically closes the path\n\n}\n\nCurvePath.prototype = Object.assign( Object.create( Curve.prototype ), {\n\n\tconstructor: CurvePath,\n\n\tadd: function ( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t},\n\n\tclosePath: function () {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tvar startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tvar endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\tthis.curves.push( new LineCurve( endPoint, startPoint ) );\n\n\t\t}\n\n\t},\n\n\t// To get accurate point with reference to\n\t// entire path distance at time t,\n\t// following has to be done:\n\n\t// 1. Length of each sub path have to be known\n\t// 2. Locate and identify type of curve\n\t// 3. Get t for the curve\n\t// 4. Return curve.getPointAt(t')\n\n\tgetPoint: function ( t ) {\n\n\t\tvar d = t * this.getLength();\n\t\tvar curveLengths = this.getCurveLengths();\n\t\tvar i = 0;\n\n\t\t// To think about boundaries points.\n\n\t\twhile ( i < curveLengths.length ) {\n\n\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\tvar diff = curveLengths[ i ] - d;\n\t\t\t\tvar curve = this.curves[ i ];\n\n\t\t\t\tvar segmentLength = curve.getLength();\n\t\t\t\tvar u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\treturn curve.getPointAt( u );\n\n\t\t\t}\n\n\t\t\ti ++;\n\n\t\t}\n\n\t\treturn null;\n\n\t\t// loop where sum != 0, sum > d , sum+1 <d\n\n\t},\n\n\t// We cannot use the default THREE.Curve getPoint() with getLength() because in\n\t// THREE.Curve, getLength() depends on getPoint() but in THREE.CurvePath\n\t// getPoint() depends on getLength\n\n\tgetLength: function () {\n\n\t\tvar lens = this.getCurveLengths();\n\t\treturn lens[ lens.length - 1 ];\n\n\t},\n\n\t// cacheLengths must be recalculated.\n\tupdateArcLengths: function () {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.cacheLengths = null;\n\t\tthis.getCurveLengths();\n\n\t},\n\n\t// Compute lengths and cache them\n\t// We cannot overwrite getLengths() because UtoT mapping uses it.\n\n\tgetCurveLengths: function () {\n\n\t\t// We use cache values if curves and cache array are same length\n\n\t\tif ( this.cacheLengths && this.cacheLengths.length === this.curves.length ) {\n\n\t\t\treturn this.cacheLengths;\n\n\t\t}\n\n\t\t// Get length of sub-curve\n\t\t// Push sums into cached array\n\n\t\tvar lengths = [], sums = 0;\n\n\t\tfor ( var i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tsums += this.curves[ i ].getLength();\n\t\t\tlengths.push( sums );\n\n\t\t}\n\n\t\tthis.cacheLengths = lengths;\n\n\t\treturn lengths;\n\n\t},\n\n\tgetSpacedPoints: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = 40;\n\n\t\tvar points = [];\n\n\t\tfor ( var i = 0; i <= divisions; i ++ ) {\n\n\t\t\tpoints.push( this.getPoint( i / divisions ) );\n\n\t\t}\n\n\t\tif ( this.autoClose ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\tgetPoints: function ( divisions ) {\n\n\t\tdivisions = divisions || 12;\n\n\t\tvar points = [], last;\n\n\t\tfor ( var i = 0, curves = this.curves; i < curves.length; i ++ ) {\n\n\t\t\tvar curve = curves[ i ];\n\t\t\tvar resolution = ( curve && curve.isEllipseCurve ) ? divisions * 2\n\t\t\t\t: ( curve && ( curve.isLineCurve || curve.isLineCurve3 ) ) ? 1\n\t\t\t\t\t: ( curve && curve.isSplineCurve ) ? divisions * curve.points.length\n\t\t\t\t\t\t: divisions;\n\n\t\t\tvar pts = curve.getPoints( resolution );\n\n\t\t\tfor ( var j = 0; j < pts.length; j ++ ) {\n\n\t\t\t\tvar point = pts[ j ];\n\n\t\t\t\tif ( last && last.equals( point ) ) continue; // ensures no consecutive points are duplicates\n\n\t\t\t\tpoints.push( point );\n\t\t\t\tlast = point;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.autoClose && points.length > 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tCurve.prototype.copy.call( this, source );\n\n\t\tthis.curves = [];\n\n\t\tfor ( var i = 0, l = source.curves.length; i < l; i ++ ) {\n\n\t\t\tvar curve = source.curves[ i ];\n\n\t\t\tthis.curves.push( curve.clone() );\n\n\t\t}\n\n\t\tthis.autoClose = source.autoClose;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = Curve.prototype.toJSON.call( this );\n\n\t\tdata.autoClose = this.autoClose;\n\t\tdata.curves = [];\n\n\t\tfor ( var i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tvar curve = this.curves[ i ];\n\t\t\tdata.curves.push( curve.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tCurve.prototype.fromJSON.call( this, json );\n\n\t\tthis.autoClose = json.autoClose;\n\t\tthis.curves = [];\n\n\t\tfor ( var i = 0, l = json.curves.length; i < l; i ++ ) {\n\n\t\t\tvar curve = json.curves[ i ];\n\t\t\tthis.curves.push( new Curves[ curve.type ]().fromJSON( curve ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Creates free form 2d path using series of points, lines or curves.\n **/\n\nfunction Path( points ) {\n\n\tCurvePath.call( this );\n\n\tthis.type = 'Path';\n\n\tthis.currentPoint = new Vector2();\n\n\tif ( points ) {\n\n\t\tthis.setFromPoints( points );\n\n\t}\n\n}\n\nPath.prototype = Object.assign( Object.create( CurvePath.prototype ), {\n\n\tconstructor: Path,\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.moveTo( points[ 0 ].x, points[ 0 ].y );\n\n\t\tfor ( var i = 1, l = points.length; i < l; i ++ ) {\n\n\t\t\tthis.lineTo( points[ i ].x, points[ i ].y );\n\n\t\t}\n\n\t},\n\n\tmoveTo: function ( x, y ) {\n\n\t\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\n\n\t},\n\n\tlineTo: function ( x, y ) {\n\n\t\tvar curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( x, y );\n\n\t},\n\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\tvar curve = new QuadraticBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCPx, aCPy ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t},\n\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tvar curve = new CubicBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCP1x, aCP1y ),\n\t\t\tnew Vector2( aCP2x, aCP2y ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t},\n\n\tsplineThru: function ( pts /*Array of Vector*/ ) {\n\n\t\tvar npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tvar curve = new SplineCurve( npts );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t},\n\n\tarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tvar x0 = this.currentPoint.x;\n\t\tvar y0 = this.currentPoint.y;\n\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t},\n\n\tabsarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t},\n\n\tellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tvar x0 = this.currentPoint.x;\n\t\tvar y0 = this.currentPoint.y;\n\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t},\n\n\tabsellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tvar curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\tif ( this.curves.length > 0 ) {\n\n\t\t\t// if a previous curve is present, attempt to join\n\t\t\tvar firstPoint = curve.getPoint( 0 );\n\n\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\n\n\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.curves.push( curve );\n\n\t\tvar lastPoint = curve.getPoint( 1 );\n\t\tthis.currentPoint.copy( lastPoint );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tCurvePath.prototype.copy.call( this, source );\n\n\t\tthis.currentPoint.copy( source.currentPoint );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = CurvePath.prototype.toJSON.call( this );\n\n\t\tdata.currentPoint = this.currentPoint.toArray();\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tCurvePath.prototype.fromJSON.call( this, json );\n\n\t\tthis.currentPoint.fromArray( json.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Defines a 2d shape plane using paths.\n **/\n\n// STEP 1 Create a path.\n// STEP 2 Turn path into shape.\n// STEP 3 ExtrudeGeometry takes in Shape/Shapes\n// STEP 3a - Extract points from each shape, turn to vertices\n// STEP 3b - Triangulate each shape, add faces.\n\nfunction Shape( points ) {\n\n\tPath.call( this, points );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.type = 'Shape';\n\n\tthis.holes = [];\n\n}\n\nShape.prototype = Object.assign( Object.create( Path.prototype ), {\n\n\tconstructor: Shape,\n\n\tgetPointsHoles: function ( divisions ) {\n\n\t\tvar holesPts = [];\n\n\t\tfor ( var i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t}\n\n\t\treturn holesPts;\n\n\t},\n\n\t// get points of shape and holes (keypoints based on segments parameter)\n\n\textractPoints: function ( divisions ) {\n\n\t\treturn {\n\n\t\t\tshape: this.getPoints( divisions ),\n\t\t\tholes: this.getPointsHoles( divisions )\n\n\t\t};\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tPath.prototype.copy.call( this, source );\n\n\t\tthis.holes = [];\n\n\t\tfor ( var i = 0, l = source.holes.length; i < l; i ++ ) {\n\n\t\t\tvar hole = source.holes[ i ];\n\n\t\t\tthis.holes.push( hole.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = Path.prototype.toJSON.call( this );\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.holes = [];\n\n\t\tfor ( var i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tvar hole = this.holes[ i ];\n\t\t\tdata.holes.push( hole.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tPath.prototype.fromJSON.call( this, json );\n\n\t\tthis.uuid = json.uuid;\n\t\tthis.holes = [];\n\n\t\tfor ( var i = 0, l = json.holes.length; i < l; i ++ ) {\n\n\t\t\tvar hole = json.holes[ i ];\n\t\t\tthis.holes.push( new Path().fromJSON( hole ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Light( color, intensity ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Light';\n\n\tthis.color = new Color( color );\n\tthis.intensity = intensity !== undefined ? intensity : 1;\n\n\tthis.receiveShadow = undefined;\n\n}\n\nLight.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Light,\n\n\tisLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.color = this.color.getHex();\n\t\tdata.object.intensity = this.intensity;\n\n\t\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\n\n\t\tif ( this.distance !== undefined ) data.object.distance = this.distance;\n\t\tif ( this.angle !== undefined ) data.object.angle = this.angle;\n\t\tif ( this.decay !== undefined ) data.object.decay = this.decay;\n\t\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\n\n\t\tif ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction HemisphereLight( skyColor, groundColor, intensity ) {\n\n\tLight.call( this, skyColor, intensity );\n\n\tthis.type = 'HemisphereLight';\n\n\tthis.castShadow = undefined;\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.groundColor = new Color( groundColor );\n\n}\n\nHemisphereLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: HemisphereLight,\n\n\tisHemisphereLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.groundColor.copy( source.groundColor );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LightShadow( camera ) {\n\n\tthis.camera = camera;\n\n\tthis.bias = 0;\n\tthis.radius = 1;\n\n\tthis.mapSize = new Vector2( 512, 512 );\n\n\tthis.map = null;\n\tthis.matrix = new Matrix4();\n\n}\n\nObject.assign( LightShadow.prototype, {\n\n\tcopy: function ( source ) {\n\n\t\tthis.camera = source.camera.clone();\n\n\t\tthis.bias = source.bias;\n\t\tthis.radius = source.radius;\n\n\t\tthis.mapSize.copy( source.mapSize );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar object = {};\n\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction SpotLightShadow() {\n\n\tLightShadow.call( this, new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n}\n\nSpotLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: SpotLightShadow,\n\n\tisSpotLightShadow: true,\n\n\tupdate: function ( light ) {\n\n\t\tvar camera = this.camera;\n\n\t\tvar fov = _Math.RAD2DEG * 2 * light.angle;\n\t\tvar aspect = this.mapSize.width / this.mapSize.height;\n\t\tvar far = light.distance || camera.far;\n\n\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\tcamera.fov = fov;\n\t\t\tcamera.aspect = aspect;\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction SpotLight( color, intensity, distance, angle, penumbra, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'SpotLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\treturn this.intensity * Math.PI;\n\n\t\t},\n\t\tset: function ( power ) {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\tthis.intensity = power / Math.PI;\n\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.angle = ( angle !== undefined ) ? angle : Math.PI / 3;\n\tthis.penumbra = ( penumbra !== undefined ) ? penumbra : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new SpotLightShadow();\n\n}\n\nSpotLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: SpotLight,\n\n\tisSpotLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.angle = source.angle;\n\t\tthis.penumbra = source.penumbra;\n\t\tthis.decay = source.decay;\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction PointLight( color, intensity, distance, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'PointLight';\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\treturn this.intensity * 4 * Math.PI;\n\n\t\t},\n\t\tset: function ( power ) {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\tthis.intensity = power / ( 4 * Math.PI );\n\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new LightShadow( new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n}\n\nPointLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: PointLight,\n\n\tisPointLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.decay = source.decay;\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction DirectionalLightShadow( ) {\n\n\tLightShadow.call( this, new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n}\n\nDirectionalLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: DirectionalLightShadow\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction DirectionalLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'DirectionalLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tthis.shadow = new DirectionalLightShadow();\n\n}\n\nDirectionalLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: DirectionalLight,\n\n\tisDirectionalLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AmbientLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'AmbientLight';\n\n\tthis.castShadow = undefined;\n\n}\n\nAmbientLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: AmbientLight,\n\n\tisAmbientLight: true\n\n} );\n\n/**\n * @author abelnation / http://github.com/abelnation\n */\n\nfunction RectAreaLight( color, intensity, width, height ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'RectAreaLight';\n\n\tthis.width = ( width !== undefined ) ? width : 10;\n\tthis.height = ( height !== undefined ) ? height : 10;\n\n}\n\nRectAreaLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: RectAreaLight,\n\n\tisRectAreaLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Light.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.width = this.width;\n\t\tdata.object.height = this.height;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n *\n * A Track that interpolates Strings\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction StringKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nStringKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: StringKeyframeTrack,\n\n\tValueTypeName: 'string',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\n\tInterpolantFactoryMethodSmooth: undefined\n\n} );\n\n/**\n *\n * A Track of Boolean keyframe values.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction BooleanKeyframeTrack( name, times, values ) {\n\n\tKeyframeTrack.call( this, name, times, values );\n\n}\n\nBooleanKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: BooleanKeyframeTrack,\n\n\tValueTypeName: 'bool',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\tInterpolantFactoryMethodSmooth: undefined\n\n\t// Note: Actually this track could have a optimized / compressed\n\t// representation of a single value and a custom interpolant that\n\t// computes \"firstValue ^ isOdd( index )\".\n\n} );\n\n/**\n * Abstract base class of interpolants over parametric samples.\n *\n * The parameter domain is one dimensional, typically the time or a path\n * along a curve defined by the data.\n *\n * The sample values can have any dimensionality and derived classes may\n * apply special interpretations to the data.\n *\n * This class provides the interval seek in a Template Method, deferring\n * the actual interpolation to derived classes.\n *\n * Time complexity is O(1) for linear access crossing at most two points\n * and O(log N) for random access, where N is the number of positions.\n *\n * References:\n *\n * \t\thttp://www.oodesign.com/template-method-pattern.html\n *\n * @author tschw\n */\n\nfunction Interpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tthis.parameterPositions = parameterPositions;\n\tthis._cachedIndex = 0;\n\n\tthis.resultBuffer = resultBuffer !== undefined ?\n\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\tthis.sampleValues = sampleValues;\n\tthis.valueSize = sampleSize;\n\n}\n\nObject.assign( Interpolant.prototype, {\n\n\tevaluate: function ( t ) {\n\n\t\tvar pp = this.parameterPositions,\n\t\t\ti1 = this._cachedIndex,\n\n\t\t\tt1 = pp[ i1 ],\n\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\tvalidate_interval: {\n\n\t\t\tseek: {\n\n\t\t\t\tvar right;\n\n\t\t\t\tlinear_scan: {\n\n\t\t\t\t\t//- See http://jsperf.com/comparison-to-undefined/3\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\n\t\t\t\t\t//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\n\n\t\t\t\t\t\tfor ( var giveUpAt = i1 + 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\n\n\t\t\t\t\t\t\t\t// after end\n\n\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\treturn this.afterEnd_( i1 - 1, t, t0 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\n\n\t\t\t\t\t\t\tif ( t < t1 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the right side of the index\n\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\t\t\t\t\tif ( ! ( t >= t0 ) ) {\n\n\t\t\t\t\t\t// looping?\n\n\t\t\t\t\t\tvar t1global = pp[ 1 ];\n\n\t\t\t\t\t\tif ( t < t1global ) {\n\n\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\t\t\t\t\t\t\tt0 = t1global;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// linear reverse scan\n\n\t\t\t\t\t\tfor ( var giveUpAt = i1 - 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\t\t\t// before start\n\n\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\n\n\t\t\t\t\t\t\tif ( t >= t0 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the left side of the index\n\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the interval is valid\n\n\t\t\t\t\tbreak validate_interval;\n\n\t\t\t\t} // linear scan\n\n\t\t\t\t// binary search\n\n\t\t\t\twhile ( i1 < right ) {\n\n\t\t\t\t\tvar mid = ( i1 + right ) >>> 1;\n\n\t\t\t\t\tif ( t < pp[ mid ] ) {\n\n\t\t\t\t\t\tright = mid;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ti1 = mid + 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tt1 = pp[ i1 ];\n\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\t\t// check boundary cases, again\n\n\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\treturn this.afterEnd_( i1 - 1, t0, t );\n\n\t\t\t\t}\n\n\t\t\t} // seek\n\n\t\t\tthis._cachedIndex = i1;\n\n\t\t\tthis.intervalChanged_( i1, t0, t1 );\n\n\t\t} // validate_interval\n\n\t\treturn this.interpolate_( i1, t0, t, t1 );\n\n\t},\n\n\tsettings: null, // optional, subclass-specific settings structure\n\t// Note: The indirection allows central control of many interpolants.\n\n\t// --- Protected interface\n\n\tDefaultSettings_: {},\n\n\tgetSettings_: function () {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t},\n\n\tcopySampleValue_: function ( index ) {\n\n\t\t// copies a sample value to the result buffer\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = index * stride;\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// Template methods for derived classes:\n\n\tinterpolate_: function ( /* i1, t0, t, t1 */ ) {\n\n\t\tthrow new Error( 'call to abstract method' );\n\t\t// implementations shall return this.resultBuffer\n\n\t},\n\n\tintervalChanged_: function ( /* i1, t0, t1 */ ) {\n\n\t\t// empty\n\n\t}\n\n} );\n\n//!\\ DECLARE ALIAS AFTER assign prototype !\nObject.assign( Interpolant.prototype, {\n\n\t//( 0, t, t0 ), returns this.resultBuffer\n\tbeforeStart_: Interpolant.prototype.copySampleValue_,\n\n\t//( N-1, tN-1, t ), returns this.resultBuffer\n\tafterEnd_: Interpolant.prototype.copySampleValue_,\n\n} );\n\n/**\n * Spherical linear unit quaternion interpolant.\n *\n * @author tschw\n */\n\nfunction QuaternionLinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nQuaternionLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: QuaternionLinearInterpolant,\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset = i1 * stride,\n\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\tfor ( var end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\tQuaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n *\n * A Track of quaternion keyframe values.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction QuaternionKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nQuaternionKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: QuaternionKeyframeTrack,\n\n\tValueTypeName: 'quaternion',\n\n\t// ValueBufferType is inherited\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodLinear: function ( result ) {\n\n\t\treturn new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: undefined // not yet implemented\n\n} );\n\n/**\n *\n * A Track of keyframe values that represent color.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction ColorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nColorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: ColorKeyframeTrack,\n\n\tValueTypeName: 'color'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n\t// Note: Very basic implementation and nothing special yet.\n\t// However, this is the place for color space parameterization.\n\n} );\n\n/**\n *\n * A Track of numeric keyframe values.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction NumberKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nNumberKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: NumberKeyframeTrack,\n\n\tValueTypeName: 'number'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\n/**\n * Fast and simple cubic spline interpolant.\n *\n * It was derived from a Hermitian construction setting the first derivative\n * at each sample position to the linear slope between neighboring positions\n * over their parameter interval.\n *\n * @author tschw\n */\n\nfunction CubicInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\tthis._weightPrev = - 0;\n\tthis._offsetPrev = - 0;\n\tthis._weightNext = - 0;\n\tthis._offsetNext = - 0;\n\n}\n\nCubicInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: CubicInterpolant,\n\n\tDefaultSettings_: {\n\n\t\tendingStart: ZeroCurvatureEnding,\n\t\tendingEnd: ZeroCurvatureEnding\n\n\t},\n\n\tintervalChanged_: function ( i1, t0, t1 ) {\n\n\t\tvar pp = this.parameterPositions,\n\t\t\tiPrev = i1 - 2,\n\t\t\tiNext = i1 + 1,\n\n\t\t\ttPrev = pp[ iPrev ],\n\t\t\ttNext = pp[ iNext ];\n\n\t\tif ( tPrev === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = t1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tNext === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\tiNext = i1;\n\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiNext = 1;\n\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\ttNext = t0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar halfDt = ( t1 - t0 ) * 0.5,\n\t\t\tstride = this.valueSize;\n\n\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\n\t\tthis._weightNext = halfDt / ( tNext - t1 );\n\t\tthis._offsetPrev = iPrev * stride;\n\t\tthis._offsetNext = iNext * stride;\n\n\t},\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\n\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\n\t\t\twP = this._weightPrev,\twN = this._weightNext,\n\n\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tpp = p * p,\n\t\t\tppp = pp * p;\n\n\t\t// evaluate polynomials\n\n\t\tvar sP = - wP * ppp + 2 * wP * pp - wP * p;\n\t\tvar s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1;\n\t\tvar s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\n\t\tvar sN = wN * ppp - wN * pp;\n\n\t\t// combine data linearly\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n * @author tschw\n */\n\nfunction LinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: LinearInterpolant,\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset1 = i1 * stride,\n\t\t\toffset0 = offset1 - stride,\n\n\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tweight0 = 1 - weight1;\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n *\n * Interpolant that evaluates to the sample value at the position preceeding\n * the parameter.\n *\n * @author tschw\n */\n\nfunction DiscreteInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nDiscreteInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: DiscreteInterpolant,\n\n\tinterpolate_: function ( i1 /*, t0, t, t1 */ ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n} );\n\n/**\n * @author tschw\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n */\n\nvar AnimationUtils = {\n\n\t// same as Array.prototype.slice, but also works on typed arrays\n\tarraySlice: function ( array, from, to ) {\n\n\t\tif ( AnimationUtils.isTypedArray( array ) ) {\n\n\t\t\t// in ios9 array.subarray(from, undefined) will return empty array\n\t\t\t// but array.subarray(from) or array.subarray(from, len) is correct\n\t\t\treturn new array.constructor( array.subarray( from, to !== undefined ? to : array.length ) );\n\n\t\t}\n\n\t\treturn array.slice( from, to );\n\n\t},\n\n\t// converts an array to a specific type\n\tconvertArray: function ( array, type, forceClone ) {\n\n\t\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t\t\t! forceClone && array.constructor === type ) return array;\n\n\t\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\t\treturn new type( array ); // create typed array\n\n\t\t}\n\n\t\treturn Array.prototype.slice.call( array ); // create Array\n\n\t},\n\n\tisTypedArray: function ( object ) {\n\n\t\treturn ArrayBuffer.isView( object ) &&\n\t\t\t\t! ( object instanceof DataView );\n\n\t},\n\n\t// returns an array by which times and values can be sorted\n\tgetKeyframeOrder: function ( times ) {\n\n\t\tfunction compareTime( i, j ) {\n\n\t\t\treturn times[ i ] - times[ j ];\n\n\t\t}\n\n\t\tvar n = times.length;\n\t\tvar result = new Array( n );\n\t\tfor ( var i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\t\tresult.sort( compareTime );\n\n\t\treturn result;\n\n\t},\n\n\t// uses the array previously returned by 'getKeyframeOrder' to sort data\n\tsortedArray: function ( values, stride, order ) {\n\n\t\tvar nValues = values.length;\n\t\tvar result = new values.constructor( nValues );\n\n\t\tfor ( var i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\t\tvar srcOffset = order[ i ] * stride;\n\n\t\t\tfor ( var j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// function for parsing AOS keyframe formats\n\tflattenJSON: function ( jsonKeys, times, values, valuePropertyName ) {\n\n\t\tvar i = 1, key = jsonKeys[ 0 ];\n\n\t\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t}\n\n\t\tif ( key === undefined ) return; // no data\n\n\t\tvar value = key[ valuePropertyName ];\n\t\tif ( value === undefined ) return; // no data\n\n\t\tif ( Array.isArray( value ) ) {\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else if ( value.toArray !== undefined ) {\n\n\t\t\t// ...assume THREE.Math-ish\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else {\n\n\t\t\t// otherwise push as-is\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push( value );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t}\n\n\t}\n\n};\n\n/**\n *\n * A timed sequence of keyframes for a specific property.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction KeyframeTrack( name, times, values, interpolation ) {\n\n\tif ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' );\n\tif ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name );\n\n\tthis.name = name;\n\n\tthis.times = AnimationUtils.convertArray( times, this.TimeBufferType );\n\tthis.values = AnimationUtils.convertArray( values, this.ValueBufferType );\n\n\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n\tthis.validate();\n\tthis.optimize();\n\n}\n\n// Static methods:\n\nObject.assign( KeyframeTrack, {\n\n\t// Serialization (in static context, because of constructor invocation\n\t// and automatic invocation of .toJSON):\n\n\tparse: function ( json ) {\n\n\t\tif ( json.type === undefined ) {\n\n\t\t\tthrow new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' );\n\n\t\t}\n\n\t\tvar trackType = KeyframeTrack._getTrackTypeForValueTypeName( json.type );\n\n\t\tif ( json.times === undefined ) {\n\n\t\t\tvar times = [], values = [];\n\n\t\t\tAnimationUtils.flattenJSON( json.keys, times, values, 'value' );\n\n\t\t\tjson.times = times;\n\t\t\tjson.values = values;\n\n\t\t}\n\n\t\t// derived classes can define a static parse method\n\t\tif ( trackType.parse !== undefined ) {\n\n\t\t\treturn trackType.parse( json );\n\n\t\t} else {\n\n\t\t\t// by default, we assume a constructor compatible with the base\n\t\t\treturn new trackType( json.name, json.times, json.values, json.interpolation );\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( track ) {\n\n\t\tvar trackType = track.constructor;\n\n\t\tvar json;\n\n\t\t// derived classes can define a static toJSON method\n\t\tif ( trackType.toJSON !== undefined ) {\n\n\t\t\tjson = trackType.toJSON( track );\n\n\t\t} else {\n\n\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\tjson = {\n\n\t\t\t\t'name': track.name,\n\t\t\t\t'times': AnimationUtils.convertArray( track.times, Array ),\n\t\t\t\t'values': AnimationUtils.convertArray( track.values, Array )\n\n\t\t\t};\n\n\t\t\tvar interpolation = track.getInterpolation();\n\n\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\n\n\t\t\t\tjson.interpolation = interpolation;\n\n\t\t\t}\n\n\t\t}\n\n\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\treturn json;\n\n\t},\n\n\t_getTrackTypeForValueTypeName: function ( typeName ) {\n\n\t\tswitch ( typeName.toLowerCase() ) {\n\n\t\t\tcase 'scalar':\n\t\t\tcase 'double':\n\t\t\tcase 'float':\n\t\t\tcase 'number':\n\t\t\tcase 'integer':\n\n\t\t\t\treturn NumberKeyframeTrack;\n\n\t\t\tcase 'vector':\n\t\t\tcase 'vector2':\n\t\t\tcase 'vector3':\n\t\t\tcase 'vector4':\n\n\t\t\t\treturn VectorKeyframeTrack;\n\n\t\t\tcase 'color':\n\n\t\t\t\treturn ColorKeyframeTrack;\n\n\t\t\tcase 'quaternion':\n\n\t\t\t\treturn QuaternionKeyframeTrack;\n\n\t\t\tcase 'bool':\n\t\t\tcase 'boolean':\n\n\t\t\t\treturn BooleanKeyframeTrack;\n\n\t\t\tcase 'string':\n\n\t\t\t\treturn StringKeyframeTrack;\n\n\t\t}\n\n\t\tthrow new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName );\n\n\t}\n\n} );\n\nObject.assign( KeyframeTrack.prototype, {\n\n\tconstructor: KeyframeTrack,\n\n\tTimeBufferType: Float32Array,\n\n\tValueBufferType: Float32Array,\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodDiscrete: function ( result ) {\n\n\t\treturn new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodLinear: function ( result ) {\n\n\t\treturn new LinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: function ( result ) {\n\n\t\treturn new CubicInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tsetInterpolation: function ( interpolation ) {\n\n\t\tvar factoryMethod;\n\n\t\tswitch ( interpolation ) {\n\n\t\t\tcase InterpolateDiscrete:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateLinear:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateSmooth:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( factoryMethod === undefined ) {\n\n\t\t\tvar message = \"unsupported interpolation for \" +\n\t\t\t\tthis.ValueTypeName + \" keyframe track named \" + this.name;\n\n\t\t\tif ( this.createInterpolant === undefined ) {\n\n\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\n\n\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( message ); // fatal, in this case\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.KeyframeTrack:', message );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.createInterpolant = factoryMethod;\n\n\t},\n\n\tgetInterpolation: function () {\n\n\t\tswitch ( this.createInterpolant ) {\n\n\t\t\tcase this.InterpolantFactoryMethodDiscrete:\n\n\t\t\t\treturn InterpolateDiscrete;\n\n\t\t\tcase this.InterpolantFactoryMethodLinear:\n\n\t\t\t\treturn InterpolateLinear;\n\n\t\t\tcase this.InterpolantFactoryMethodSmooth:\n\n\t\t\t\treturn InterpolateSmooth;\n\n\t\t}\n\n\t},\n\n\tgetValueSize: function () {\n\n\t\treturn this.values.length / this.times.length;\n\n\t},\n\n\t// move all keyframes either forwards or backwards in time\n\tshift: function ( timeOffset ) {\n\n\t\tif ( timeOffset !== 0.0 ) {\n\n\t\t\tvar times = this.times;\n\n\t\t\tfor ( var i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] += timeOffset;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n\tscale: function ( timeScale ) {\n\n\t\tif ( timeScale !== 1.0 ) {\n\n\t\t\tvar times = this.times;\n\n\t\t\tfor ( var i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] *= timeScale;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// removes keyframes before and after animation without changing any values within the range [startTime, endTime].\n\t// IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values\n\ttrim: function ( startTime, endTime ) {\n\n\t\tvar times = this.times,\n\t\t\tnKeys = times.length,\n\t\t\tfrom = 0,\n\t\t\tto = nKeys - 1;\n\n\t\twhile ( from !== nKeys && times[ from ] < startTime ) {\n\n\t\t\t++ from;\n\n\t\t}\n\n\t\twhile ( to !== - 1 && times[ to ] > endTime ) {\n\n\t\t\t-- to;\n\n\t\t}\n\n\t\t++ to; // inclusive -> exclusive bound\n\n\t\tif ( from !== 0 || to !== nKeys ) {\n\n\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\tif ( from >= to ) to = Math.max( to, 1 ), from = to - 1;\n\n\t\t\tvar stride = this.getValueSize();\n\t\t\tthis.times = AnimationUtils.arraySlice( times, from, to );\n\t\t\tthis.values = AnimationUtils.arraySlice( this.values, from * stride, to * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n\tvalidate: function () {\n\n\t\tvar valid = true;\n\n\t\tvar valueSize = this.getValueSize();\n\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Invalid value size in track.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tvar times = this.times,\n\t\t\tvalues = this.values,\n\n\t\t\tnKeys = times.length;\n\n\t\tif ( nKeys === 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Track is empty.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tvar prevTime = null;\n\n\t\tfor ( var i = 0; i !== nKeys; i ++ ) {\n\n\t\t\tvar currTime = times[ i ];\n\n\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( prevTime !== null && prevTime > currTime ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tprevTime = currTime;\n\n\t\t}\n\n\t\tif ( values !== undefined ) {\n\n\t\t\tif ( AnimationUtils.isTypedArray( values ) ) {\n\n\t\t\t\tfor ( var i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\tvar value = values[ i ];\n\n\t\t\t\t\tif ( isNaN( value ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value );\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn valid;\n\n\t},\n\n\t// removes equivalent sequential keys as common in morph target sequences\n\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\toptimize: function () {\n\n\t\tvar times = this.times,\n\t\t\tvalues = this.values,\n\t\t\tstride = this.getValueSize(),\n\n\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\n\t\t\twriteIndex = 1,\n\t\t\tlastIndex = times.length - 1;\n\n\t\tfor ( var i = 1; i < lastIndex; ++ i ) {\n\n\t\t\tvar keep = false;\n\n\t\t\tvar time = times[ i ];\n\t\t\tvar timeNext = times[ i + 1 ];\n\n\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\tif ( time !== timeNext && ( i !== 1 || time !== time[ 0 ] ) ) {\n\n\t\t\t\tif ( ! smoothInterpolation ) {\n\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\n\t\t\t\t\tvar offset = i * stride,\n\t\t\t\t\t\toffsetP = offset - stride,\n\t\t\t\t\t\toffsetN = offset + stride;\n\n\t\t\t\t\tfor ( var j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvar value = values[ offset + j ];\n\n\t\t\t\t\t\tif ( value !== values[ offsetP + j ] ||\n\t\t\t\t\t\t\tvalue !== values[ offsetN + j ] ) {\n\n\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tkeep = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// in-place compaction\n\n\t\t\tif ( keep ) {\n\n\t\t\t\tif ( i !== writeIndex ) {\n\n\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\n\n\t\t\t\t\tvar readOffset = i * stride,\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\tfor ( var j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t++ writeIndex;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// flush last keyframe (compaction looks ahead)\n\n\t\tif ( lastIndex > 0 ) {\n\n\t\t\ttimes[ writeIndex ] = times[ lastIndex ];\n\n\t\t\tfor ( var readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t}\n\n\t\t\t++ writeIndex;\n\n\t\t}\n\n\t\tif ( writeIndex !== times.length ) {\n\n\t\t\tthis.times = AnimationUtils.arraySlice( times, 0, writeIndex );\n\t\t\tthis.values = AnimationUtils.arraySlice( values, 0, writeIndex * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n *\n * A Track of vectored keyframe values.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction VectorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nVectorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: VectorKeyframeTrack,\n\n\tValueTypeName: 'vector'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\n/**\n *\n * Reusable set of Tracks that represent an animation.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n */\n\nfunction AnimationClip( name, duration, tracks ) {\n\n\tthis.name = name;\n\tthis.tracks = tracks;\n\tthis.duration = ( duration !== undefined ) ? duration : - 1;\n\n\tthis.uuid = _Math.generateUUID();\n\n\t// this means it should figure out its duration by scanning the tracks\n\tif ( this.duration < 0 ) {\n\n\t\tthis.resetDuration();\n\n\t}\n\n\tthis.optimize();\n\n}\n\nObject.assign( AnimationClip, {\n\n\tparse: function ( json ) {\n\n\t\tvar tracks = [],\n\t\t\tjsonTracks = json.tracks,\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\tfor ( var i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.parse( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t}\n\n\t\treturn new AnimationClip( json.name, json.duration, tracks );\n\n\t},\n\n\ttoJSON: function ( clip ) {\n\n\t\tvar tracks = [],\n\t\t\tclipTracks = clip.tracks;\n\n\t\tvar json = {\n\n\t\t\t'name': clip.name,\n\t\t\t'duration': clip.duration,\n\t\t\t'tracks': tracks,\n\t\t\t'uuid': clip.uuid\n\n\t\t};\n\n\t\tfor ( var i = 0, n = clipTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\n\n\t\t}\n\n\t\treturn json;\n\n\t},\n\n\tCreateFromMorphTargetSequence: function ( name, morphTargetSequence, fps, noLoop ) {\n\n\t\tvar numMorphTargets = morphTargetSequence.length;\n\t\tvar tracks = [];\n\n\t\tfor ( var i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\tvar times = [];\n\t\t\tvar values = [];\n\n\t\t\ttimes.push(\n\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\n\t\t\t\ti,\n\t\t\t\t( i + 1 ) % numMorphTargets );\n\n\t\t\tvalues.push( 0, 1, 0 );\n\n\t\t\tvar order = AnimationUtils.getKeyframeOrder( times );\n\t\t\ttimes = AnimationUtils.sortedArray( times, 1, order );\n\t\t\tvalues = AnimationUtils.sortedArray( values, 1, order );\n\n\t\t\t// if there is a key at the first frame, duplicate it as the\n\t\t\t// last frame as well for perfect loop.\n\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\n\n\t\t\t\ttimes.push( numMorphTargets );\n\t\t\t\tvalues.push( values[ 0 ] );\n\n\t\t\t}\n\n\t\t\ttracks.push(\n\t\t\t\tnew NumberKeyframeTrack(\n\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\n\t\t\t\t\ttimes, values\n\t\t\t\t).scale( 1.0 / fps ) );\n\n\t\t}\n\n\t\treturn new AnimationClip( name, - 1, tracks );\n\n\t},\n\n\tfindByName: function ( objectOrClipArray, name ) {\n\n\t\tvar clipArray = objectOrClipArray;\n\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\tvar o = objectOrClipArray;\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t}\n\n\t\tfor ( var i = 0; i < clipArray.length; i ++ ) {\n\n\t\t\tif ( clipArray[ i ].name === name ) {\n\n\t\t\t\treturn clipArray[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\tCreateClipsFromMorphTargetSequences: function ( morphTargets, fps, noLoop ) {\n\n\t\tvar animationToMorphTargets = {};\n\n\t\t// tested with https://regex101.com/ on trick sequences\n\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\t\tvar pattern = /^([\\w-]*?)([\\d]+)$/;\n\n\t\t// sort morph target names into animation groups based\n\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\t\tfor ( var i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tvar morphTarget = morphTargets[ i ];\n\t\t\tvar parts = morphTarget.name.match( pattern );\n\n\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\tvar name = parts[ 1 ];\n\n\t\t\t\tvar animationMorphTargets = animationToMorphTargets[ name ];\n\t\t\t\tif ( ! animationMorphTargets ) {\n\n\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\n\n\t\t\t\t}\n\n\t\t\t\tanimationMorphTargets.push( morphTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar clips = [];\n\n\t\tfor ( var name in animationToMorphTargets ) {\n\n\t\t\tclips.push( AnimationClip.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) );\n\n\t\t}\n\n\t\treturn clips;\n\n\t},\n\n\t// parse the animation.hierarchy format\n\tparseAnimation: function ( animation, bones ) {\n\n\t\tif ( ! animation ) {\n\n\t\t\tconsole.error( 'THREE.AnimationClip: No animation in JSONLoader data.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tvar addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) {\n\n\t\t\t// only return track if there are actually keys.\n\t\t\tif ( animationKeys.length !== 0 ) {\n\n\t\t\t\tvar times = [];\n\t\t\t\tvar values = [];\n\n\t\t\t\tAnimationUtils.flattenJSON( animationKeys, times, values, propertyName );\n\n\t\t\t\t// empty keys are filtered out, so check again\n\t\t\t\tif ( times.length !== 0 ) {\n\n\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tvar tracks = [];\n\n\t\tvar clipName = animation.name || 'default';\n\t\t// automatic length determination in AnimationClip.\n\t\tvar duration = animation.length || - 1;\n\t\tvar fps = animation.fps || 30;\n\n\t\tvar hierarchyTracks = animation.hierarchy || [];\n\n\t\tfor ( var h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\tvar animationKeys = hierarchyTracks[ h ].keys;\n\n\t\t\t// skip empty tracks\n\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\n\n\t\t\t// process morph targets\n\t\t\tif ( animationKeys[ 0 ].morphTargets ) {\n\n\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\tvar morphTargetNames = {};\n\n\t\t\t\tfor ( var k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\tif ( animationKeys[ k ].morphTargets ) {\n\n\t\t\t\t\t\tfor ( var m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) {\n\n\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// create a track for each morph target with all zero\n\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t// the morphTarget is named.\n\t\t\t\tfor ( var morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\tvar times = [];\n\t\t\t\t\tvar values = [];\n\n\t\t\t\t\tfor ( var m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\tvar animationKey = animationKeys[ k ];\n\n\t\t\t\t\t\ttimes.push( animationKey.time );\n\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\n\n\t\t\t\t}\n\n\t\t\t\tduration = morphTargetNames.length * ( fps || 1.0 );\n\n\t\t\t} else {\n\n\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\tvar boneName = '.bones[' + bones[ h ].name + ']';\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.position',\n\t\t\t\t\tanimationKeys, 'pos', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tQuaternionKeyframeTrack, boneName + '.quaternion',\n\t\t\t\t\tanimationKeys, 'rot', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.scale',\n\t\t\t\t\tanimationKeys, 'scl', tracks );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tracks.length === 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tvar clip = new AnimationClip( clipName, duration, tracks );\n\n\t\treturn clip;\n\n\t}\n\n} );\n\nObject.assign( AnimationClip.prototype, {\n\n\tresetDuration: function () {\n\n\t\tvar tracks = this.tracks, duration = 0;\n\n\t\tfor ( var i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\tvar track = this.tracks[ i ];\n\n\t\t\tduration = Math.max( duration, track.times[ track.times.length - 1 ] );\n\n\t\t}\n\n\t\tthis.duration = duration;\n\n\t},\n\n\ttrim: function () {\n\n\t\tfor ( var i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].trim( 0, this.duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\toptimize: function () {\n\n\t\tfor ( var i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].optimize();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction MaterialLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\tthis.textures = {};\n\n}\n\nObject.assign( MaterialLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tsetTextures: function ( value ) {\n\n\t\tthis.textures = value;\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tvar textures = this.textures;\n\n\t\tfunction getTexture( name ) {\n\n\t\t\tif ( textures[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\n\n\t\t\t}\n\n\t\t\treturn textures[ name ];\n\n\t\t}\n\n\t\tvar material = new Materials[ json.type ]();\n\n\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\tif ( json.color !== undefined ) material.color.setHex( json.color );\n\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\tif ( json.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\n\t\tif ( json.clearCoat !== undefined ) material.clearCoat = json.clearCoat;\n\t\tif ( json.clearCoatRoughness !== undefined ) material.clearCoatRoughness = json.clearCoatRoughness;\n\t\tif ( json.uniforms !== undefined ) material.uniforms = json.uniforms;\n\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\t\tif ( json.vertexColors !== undefined ) material.vertexColors = json.vertexColors;\n\t\tif ( json.fog !== undefined ) material.fog = json.fog;\n\t\tif ( json.flatShading !== undefined ) material.flatShading = json.flatShading;\n\t\tif ( json.blending !== undefined ) material.blending = json.blending;\n\t\tif ( json.side !== undefined ) material.side = json.side;\n\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\n\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\n\t\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\n\t\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\n\t\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\n\t\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\n\t\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\n\t\tif ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;\n\t\tif ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;\n\n\t\tif ( json.rotation !== undefined ) material.rotation = json.rotation;\n\n\t\tif ( json.linewidth !== 1 ) material.linewidth = json.linewidth;\n\t\tif ( json.dashSize !== undefined ) material.dashSize = json.dashSize;\n\t\tif ( json.gapSize !== undefined ) material.gapSize = json.gapSize;\n\t\tif ( json.scale !== undefined ) material.scale = json.scale;\n\n\t\tif ( json.polygonOffset !== undefined ) material.polygonOffset = json.polygonOffset;\n\t\tif ( json.polygonOffsetFactor !== undefined ) material.polygonOffsetFactor = json.polygonOffsetFactor;\n\t\tif ( json.polygonOffsetUnits !== undefined ) material.polygonOffsetUnits = json.polygonOffsetUnits;\n\n\t\tif ( json.skinning !== undefined ) material.skinning = json.skinning;\n\t\tif ( json.morphTargets !== undefined ) material.morphTargets = json.morphTargets;\n\t\tif ( json.dithering !== undefined ) material.dithering = json.dithering;\n\n\t\tif ( json.visible !== undefined ) material.visible = json.visible;\n\t\tif ( json.userData !== undefined ) material.userData = json.userData;\n\n\t\t// Deprecated\n\n\t\tif ( json.shading !== undefined ) material.flatShading = json.shading === 1; // THREE.FlatShading\n\n\t\t// for PointsMaterial\n\n\t\tif ( json.size !== undefined ) material.size = json.size;\n\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\n\n\t\t// maps\n\n\t\tif ( json.map !== undefined ) material.map = getTexture( json.map );\n\n\t\tif ( json.alphaMap !== undefined ) {\n\n\t\t\tmaterial.alphaMap = getTexture( json.alphaMap );\n\t\t\tmaterial.transparent = true;\n\n\t\t}\n\n\t\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\n\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\n\n\t\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\n\t\tif ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType;\n\t\tif ( json.normalScale !== undefined ) {\n\n\t\t\tvar normalScale = json.normalScale;\n\n\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t}\n\n\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\n\n\t\t}\n\n\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\n\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\n\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\n\n\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\n\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\n\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\n\n\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\n\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\n\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\n\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\tif ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap );\n\n\t\treturn material;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction BufferGeometryLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( BufferGeometryLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tvar geometry = new BufferGeometry();\n\n\t\tvar index = json.data.index;\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tvar typedArray = new TYPED_ARRAYS[ index.type ]( index.array );\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t}\n\n\t\tvar attributes = json.data.attributes;\n\n\t\tfor ( var key in attributes ) {\n\n\t\t\tvar attribute = attributes[ key ];\n\t\t\tvar typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );\n\n\t\t\tgeometry.addAttribute( key, new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized ) );\n\n\t\t}\n\n\t\tvar groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\tif ( groups !== undefined ) {\n\n\t\t\tfor ( var i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\tvar group = groups[ i ];\n\n\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar boundingSphere = json.data.boundingSphere;\n\n\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\tvar center = new Vector3();\n\n\t\t\tif ( boundingSphere.center !== undefined ) {\n\n\t\t\t\tcenter.fromArray( boundingSphere.center );\n\n\t\t\t}\n\n\t\t\tgeometry.boundingSphere = new Sphere( center, boundingSphere.radius );\n\n\t\t}\n\n\t\treturn geometry;\n\n\t}\n\n} );\n\nvar TYPED_ARRAYS = {\n\tInt8Array: Int8Array,\n\tUint8Array: Uint8Array,\n\t// Workaround for IE11 pre KB2929437. See #11440\n\tUint8ClampedArray: typeof Uint8ClampedArray !== 'undefined' ? Uint8ClampedArray : Uint8Array,\n\tInt16Array: Int16Array,\n\tUint16Array: Uint16Array,\n\tInt32Array: Int32Array,\n\tUint32Array: Uint32Array,\n\tFloat32Array: Float32Array,\n\tFloat64Array: Float64Array\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Loader() {}\n\nLoader.Handlers = {\n\n\thandlers: [],\n\n\tadd: function ( regex, loader ) {\n\n\t\tthis.handlers.push( regex, loader );\n\n\t},\n\n\tget: function ( file ) {\n\n\t\tvar handlers = this.handlers;\n\n\t\tfor ( var i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\tvar regex = handlers[ i ];\n\t\t\tvar loader = handlers[ i + 1 ];\n\n\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\treturn loader;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n};\n\nObject.assign( Loader.prototype, {\n\n\tcrossOrigin: 'anonymous',\n\n\tonLoadStart: function () {},\n\n\tonLoadProgress: function () {},\n\n\tonLoadComplete: function () {},\n\n\tinitMaterials: function ( materials, texturePath, crossOrigin ) {\n\n\t\tvar array = [];\n\n\t\tfor ( var i = 0; i < materials.length; ++ i ) {\n\n\t\t\tarray[ i ] = this.createMaterial( materials[ i ], texturePath, crossOrigin );\n\n\t\t}\n\n\t\treturn array;\n\n\t},\n\n\tcreateMaterial: ( function () {\n\n\t\tvar BlendingMode = {\n\t\t\tNoBlending: NoBlending,\n\t\t\tNormalBlending: NormalBlending,\n\t\t\tAdditiveBlending: AdditiveBlending,\n\t\t\tSubtractiveBlending: SubtractiveBlending,\n\t\t\tMultiplyBlending: MultiplyBlending,\n\t\t\tCustomBlending: CustomBlending\n\t\t};\n\n\t\tvar color = new Color();\n\t\tvar textureLoader = new TextureLoader();\n\t\tvar materialLoader = new MaterialLoader();\n\n\t\treturn function createMaterial( m, texturePath, crossOrigin ) {\n\n\t\t\t// convert from old material format\n\n\t\t\tvar textures = {};\n\n\t\t\tfunction loadTexture( path, repeat, offset, wrap, anisotropy ) {\n\n\t\t\t\tvar fullPath = texturePath + path;\n\t\t\t\tvar loader = Loader.Handlers.get( fullPath );\n\n\t\t\t\tvar texture;\n\n\t\t\t\tif ( loader !== null ) {\n\n\t\t\t\t\ttexture = loader.load( fullPath );\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttextureLoader.setCrossOrigin( crossOrigin );\n\t\t\t\t\ttexture = textureLoader.load( fullPath );\n\n\t\t\t\t}\n\n\t\t\t\tif ( repeat !== undefined ) {\n\n\t\t\t\t\ttexture.repeat.fromArray( repeat );\n\n\t\t\t\t\tif ( repeat[ 0 ] !== 1 ) texture.wrapS = RepeatWrapping;\n\t\t\t\t\tif ( repeat[ 1 ] !== 1 ) texture.wrapT = RepeatWrapping;\n\n\t\t\t\t}\n\n\t\t\t\tif ( offset !== undefined ) {\n\n\t\t\t\t\ttexture.offset.fromArray( offset );\n\n\t\t\t\t}\n\n\t\t\t\tif ( wrap !== undefined ) {\n\n\t\t\t\t\tif ( wrap[ 0 ] === 'repeat' ) texture.wrapS = RepeatWrapping;\n\t\t\t\t\tif ( wrap[ 0 ] === 'mirror' ) texture.wrapS = MirroredRepeatWrapping;\n\n\t\t\t\t\tif ( wrap[ 1 ] === 'repeat' ) texture.wrapT = RepeatWrapping;\n\t\t\t\t\tif ( wrap[ 1 ] === 'mirror' ) texture.wrapT = MirroredRepeatWrapping;\n\n\t\t\t\t}\n\n\t\t\t\tif ( anisotropy !== undefined ) {\n\n\t\t\t\t\ttexture.anisotropy = anisotropy;\n\n\t\t\t\t}\n\n\t\t\t\tvar uuid = _Math.generateUUID();\n\n\t\t\t\ttextures[ uuid ] = texture;\n\n\t\t\t\treturn uuid;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tvar json = {\n\t\t\t\tuuid: _Math.generateUUID(),\n\t\t\t\ttype: 'MeshLambertMaterial'\n\t\t\t};\n\n\t\t\tfor ( var name in m ) {\n\n\t\t\t\tvar value = m[ name ];\n\n\t\t\t\tswitch ( name ) {\n\n\t\t\t\t\tcase 'DbgColor':\n\t\t\t\t\tcase 'DbgIndex':\n\t\t\t\t\tcase 'opticalDensity':\n\t\t\t\t\tcase 'illumination':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'DbgName':\n\t\t\t\t\t\tjson.name = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'blending':\n\t\t\t\t\t\tjson.blending = BlendingMode[ value ];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'colorAmbient':\n\t\t\t\t\tcase 'mapAmbient':\n\t\t\t\t\t\tconsole.warn( 'THREE.Loader.createMaterial:', name, 'is no longer supported.' );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'colorDiffuse':\n\t\t\t\t\t\tjson.color = color.fromArray( value ).getHex();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'colorSpecular':\n\t\t\t\t\t\tjson.specular = color.fromArray( value ).getHex();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'colorEmissive':\n\t\t\t\t\t\tjson.emissive = color.fromArray( value ).getHex();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'specularCoef':\n\t\t\t\t\t\tjson.shininess = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'shading':\n\t\t\t\t\t\tif ( value.toLowerCase() === 'basic' ) json.type = 'MeshBasicMaterial';\n\t\t\t\t\t\tif ( value.toLowerCase() === 'phong' ) json.type = 'MeshPhongMaterial';\n\t\t\t\t\t\tif ( value.toLowerCase() === 'standard' ) json.type = 'MeshStandardMaterial';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapDiffuse':\n\t\t\t\t\t\tjson.map = loadTexture( value, m.mapDiffuseRepeat, m.mapDiffuseOffset, m.mapDiffuseWrap, m.mapDiffuseAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapDiffuseRepeat':\n\t\t\t\t\tcase 'mapDiffuseOffset':\n\t\t\t\t\tcase 'mapDiffuseWrap':\n\t\t\t\t\tcase 'mapDiffuseAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapEmissive':\n\t\t\t\t\t\tjson.emissiveMap = loadTexture( value, m.mapEmissiveRepeat, m.mapEmissiveOffset, m.mapEmissiveWrap, m.mapEmissiveAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapEmissiveRepeat':\n\t\t\t\t\tcase 'mapEmissiveOffset':\n\t\t\t\t\tcase 'mapEmissiveWrap':\n\t\t\t\t\tcase 'mapEmissiveAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapLight':\n\t\t\t\t\t\tjson.lightMap = loadTexture( value, m.mapLightRepeat, m.mapLightOffset, m.mapLightWrap, m.mapLightAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapLightRepeat':\n\t\t\t\t\tcase 'mapLightOffset':\n\t\t\t\t\tcase 'mapLightWrap':\n\t\t\t\t\tcase 'mapLightAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapAO':\n\t\t\t\t\t\tjson.aoMap = loadTexture( value, m.mapAORepeat, m.mapAOOffset, m.mapAOWrap, m.mapAOAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapAORepeat':\n\t\t\t\t\tcase 'mapAOOffset':\n\t\t\t\t\tcase 'mapAOWrap':\n\t\t\t\t\tcase 'mapAOAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapBump':\n\t\t\t\t\t\tjson.bumpMap = loadTexture( value, m.mapBumpRepeat, m.mapBumpOffset, m.mapBumpWrap, m.mapBumpAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapBumpScale':\n\t\t\t\t\t\tjson.bumpScale = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapBumpRepeat':\n\t\t\t\t\tcase 'mapBumpOffset':\n\t\t\t\t\tcase 'mapBumpWrap':\n\t\t\t\t\tcase 'mapBumpAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapNormal':\n\t\t\t\t\t\tjson.normalMap = loadTexture( value, m.mapNormalRepeat, m.mapNormalOffset, m.mapNormalWrap, m.mapNormalAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapNormalFactor':\n\t\t\t\t\t\tjson.normalScale = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapNormalRepeat':\n\t\t\t\t\tcase 'mapNormalOffset':\n\t\t\t\t\tcase 'mapNormalWrap':\n\t\t\t\t\tcase 'mapNormalAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapSpecular':\n\t\t\t\t\t\tjson.specularMap = loadTexture( value, m.mapSpecularRepeat, m.mapSpecularOffset, m.mapSpecularWrap, m.mapSpecularAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapSpecularRepeat':\n\t\t\t\t\tcase 'mapSpecularOffset':\n\t\t\t\t\tcase 'mapSpecularWrap':\n\t\t\t\t\tcase 'mapSpecularAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapMetalness':\n\t\t\t\t\t\tjson.metalnessMap = loadTexture( value, m.mapMetalnessRepeat, m.mapMetalnessOffset, m.mapMetalnessWrap, m.mapMetalnessAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapMetalnessRepeat':\n\t\t\t\t\tcase 'mapMetalnessOffset':\n\t\t\t\t\tcase 'mapMetalnessWrap':\n\t\t\t\t\tcase 'mapMetalnessAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapRoughness':\n\t\t\t\t\t\tjson.roughnessMap = loadTexture( value, m.mapRoughnessRepeat, m.mapRoughnessOffset, m.mapRoughnessWrap, m.mapRoughnessAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapRoughnessRepeat':\n\t\t\t\t\tcase 'mapRoughnessOffset':\n\t\t\t\t\tcase 'mapRoughnessWrap':\n\t\t\t\t\tcase 'mapRoughnessAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapAlpha':\n\t\t\t\t\t\tjson.alphaMap = loadTexture( value, m.mapAlphaRepeat, m.mapAlphaOffset, m.mapAlphaWrap, m.mapAlphaAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapAlphaRepeat':\n\t\t\t\t\tcase 'mapAlphaOffset':\n\t\t\t\t\tcase 'mapAlphaWrap':\n\t\t\t\t\tcase 'mapAlphaAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'flipSided':\n\t\t\t\t\t\tjson.side = BackSide;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'doubleSided':\n\t\t\t\t\t\tjson.side = DoubleSide;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'transparency':\n\t\t\t\t\t\tconsole.warn( 'THREE.Loader.createMaterial: transparency has been renamed to opacity' );\n\t\t\t\t\t\tjson.opacity = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'depthTest':\n\t\t\t\t\tcase 'depthWrite':\n\t\t\t\t\tcase 'colorWrite':\n\t\t\t\t\tcase 'opacity':\n\t\t\t\t\tcase 'reflectivity':\n\t\t\t\t\tcase 'transparent':\n\t\t\t\t\tcase 'visible':\n\t\t\t\t\tcase 'wireframe':\n\t\t\t\t\t\tjson[ name ] = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'vertexColors':\n\t\t\t\t\t\tif ( value === true ) json.vertexColors = VertexColors;\n\t\t\t\t\t\tif ( value === 'face' ) json.vertexColors = FaceColors;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.error( 'THREE.Loader.createMaterial: Unsupported', name, value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( json.type === 'MeshBasicMaterial' ) delete json.emissive;\n\t\t\tif ( json.type !== 'MeshPhongMaterial' ) delete json.specular;\n\n\t\t\tif ( json.opacity < 1 ) json.transparent = true;\n\n\t\t\tmaterialLoader.setTextures( textures );\n\n\t\t\treturn materialLoader.parse( json );\n\n\t\t};\n\n\t} )()\n\n} );\n\n/**\n * @author Don McCurdy / https://www.donmccurdy.com\n */\n\nvar LoaderUtils = {\n\n\tdecodeText: function ( array ) {\n\n\t\tif ( typeof TextDecoder !== 'undefined' ) {\n\n\t\t\treturn new TextDecoder().decode( array );\n\n\t\t}\n\n\t\t// Avoid the String.fromCharCode.apply(null, array) shortcut, which\n\t\t// throws a \"maximum call stack size exceeded\" error for large arrays.\n\n\t\tvar s = '';\n\n\t\tfor ( var i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t// Implicitly assumes little-endian.\n\t\t\ts += String.fromCharCode( array[ i ] );\n\n\t\t}\n\n\t\t// Merges multi-byte utf-8 characters.\n\t\treturn decodeURIComponent( escape( s ) );\n\n\t},\n\n\textractUrlBase: function ( url ) {\n\n\t\tvar index = url.lastIndexOf( '/' );\n\n\t\tif ( index === - 1 ) return './';\n\n\t\treturn url.substr( 0, index + 1 );\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction JSONLoader( manager ) {\n\n\tif ( typeof manager === 'boolean' ) {\n\n\t\tconsole.warn( 'THREE.JSONLoader: showStatus parameter has been removed from constructor.' );\n\t\tmanager = undefined;\n\n\t}\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\tthis.withCredentials = false;\n\n}\n\nObject.assign( JSONLoader.prototype, {\n\n\tcrossOrigin: 'anonymous',\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar texturePath = this.texturePath && ( typeof this.texturePath === 'string' ) ? this.texturePath : LoaderUtils.extractUrlBase( url );\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tvar json = JSON.parse( text );\n\t\t\tvar metadata = json.metadata;\n\n\t\t\tif ( metadata !== undefined ) {\n\n\t\t\t\tvar type = metadata.type;\n\n\t\t\t\tif ( type !== undefined ) {\n\n\t\t\t\t\tif ( type.toLowerCase() === 'object' ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.JSONLoader: ' + url + ' should be loaded with THREE.ObjectLoader instead.' );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar object = scope.parse( json, texturePath );\n\t\t\tonLoad( object.geometry, object.materials );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tsetCrossOrigin: function ( value ) {\n\n\t\tthis.crossOrigin = value;\n\t\treturn this;\n\n\t},\n\n\tsetTexturePath: function ( value ) {\n\n\t\tthis.texturePath = value;\n\t\treturn this;\n\n\t},\n\n\tparse: ( function () {\n\n\t\tfunction parseModel( json, geometry ) {\n\n\t\t\tfunction isBitSet( value, position ) {\n\n\t\t\t\treturn value & ( 1 << position );\n\n\t\t\t}\n\n\t\t\tvar i, j, fi,\n\n\t\t\t\toffset, zLength,\n\n\t\t\t\tcolorIndex, normalIndex, uvIndex, materialIndex,\n\n\t\t\t\ttype,\n\t\t\t\tisQuad,\n\t\t\t\thasMaterial,\n\t\t\t\thasFaceVertexUv,\n\t\t\t\thasFaceNormal, hasFaceVertexNormal,\n\t\t\t\thasFaceColor, hasFaceVertexColor,\n\n\t\t\t\tvertex, face, faceA, faceB, hex, normal,\n\n\t\t\t\tuvLayer, uv, u, v,\n\n\t\t\t\tfaces = json.faces,\n\t\t\t\tvertices = json.vertices,\n\t\t\t\tnormals = json.normals,\n\t\t\t\tcolors = json.colors,\n\n\t\t\t\tscale = json.scale,\n\n\t\t\t\tnUvLayers = 0;\n\n\n\t\t\tif ( json.uvs !== undefined ) {\n\n\t\t\t\t// disregard empty arrays\n\n\t\t\t\tfor ( i = 0; i < json.uvs.length; i ++ ) {\n\n\t\t\t\t\tif ( json.uvs[ i ].length ) nUvLayers ++;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( i = 0; i < nUvLayers; i ++ ) {\n\n\t\t\t\t\tgeometry.faceVertexUvs[ i ] = [];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\toffset = 0;\n\t\t\tzLength = vertices.length;\n\n\t\t\twhile ( offset < zLength ) {\n\n\t\t\t\tvertex = new Vector3();\n\n\t\t\t\tvertex.x = vertices[ offset ++ ] * scale;\n\t\t\t\tvertex.y = vertices[ offset ++ ] * scale;\n\t\t\t\tvertex.z = vertices[ offset ++ ] * scale;\n\n\t\t\t\tgeometry.vertices.push( vertex );\n\n\t\t\t}\n\n\t\t\toffset = 0;\n\t\t\tzLength = faces.length;\n\n\t\t\twhile ( offset < zLength ) {\n\n\t\t\t\ttype = faces[ offset ++ ];\n\n\t\t\t\tisQuad = isBitSet( type, 0 );\n\t\t\t\thasMaterial = isBitSet( type, 1 );\n\t\t\t\thasFaceVertexUv = isBitSet( type, 3 );\n\t\t\t\thasFaceNormal = isBitSet( type, 4 );\n\t\t\t\thasFaceVertexNormal = isBitSet( type, 5 );\n\t\t\t\thasFaceColor = isBitSet( type, 6 );\n\t\t\t\thasFaceVertexColor = isBitSet( type, 7 );\n\n\t\t\t\t// console.log(\"type\", type, \"bits\", isQuad, hasMaterial, hasFaceVertexUv, hasFaceNormal, hasFaceVertexNormal, hasFaceColor, hasFaceVertexColor);\n\n\t\t\t\tif ( isQuad ) {\n\n\t\t\t\t\tfaceA = new Face3();\n\t\t\t\t\tfaceA.a = faces[ offset ];\n\t\t\t\t\tfaceA.b = faces[ offset + 1 ];\n\t\t\t\t\tfaceA.c = faces[ offset + 3 ];\n\n\t\t\t\t\tfaceB = new Face3();\n\t\t\t\t\tfaceB.a = faces[ offset + 1 ];\n\t\t\t\t\tfaceB.b = faces[ offset + 2 ];\n\t\t\t\t\tfaceB.c = faces[ offset + 3 ];\n\n\t\t\t\t\toffset += 4;\n\n\t\t\t\t\tif ( hasMaterial ) {\n\n\t\t\t\t\t\tmaterialIndex = faces[ offset ++ ];\n\t\t\t\t\t\tfaceA.materialIndex = materialIndex;\n\t\t\t\t\t\tfaceB.materialIndex = materialIndex;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// to get face <=> uv index correspondence\n\n\t\t\t\t\tfi = geometry.faces.length;\n\n\t\t\t\t\tif ( hasFaceVertexUv ) {\n\n\t\t\t\t\t\tfor ( i = 0; i < nUvLayers; i ++ ) {\n\n\t\t\t\t\t\t\tuvLayer = json.uvs[ i ];\n\n\t\t\t\t\t\t\tgeometry.faceVertexUvs[ i ][ fi ] = [];\n\t\t\t\t\t\t\tgeometry.faceVertexUvs[ i ][ fi + 1 ] = [];\n\n\t\t\t\t\t\t\tfor ( j = 0; j < 4; j ++ ) {\n\n\t\t\t\t\t\t\t\tuvIndex = faces[ offset ++ ];\n\n\t\t\t\t\t\t\t\tu = uvLayer[ uvIndex * 2 ];\n\t\t\t\t\t\t\t\tv = uvLayer[ uvIndex * 2 + 1 ];\n\n\t\t\t\t\t\t\t\tuv = new Vector2( u, v );\n\n\t\t\t\t\t\t\t\tif ( j !== 2 ) geometry.faceVertexUvs[ i ][ fi ].push( uv );\n\t\t\t\t\t\t\t\tif ( j !== 0 ) geometry.faceVertexUvs[ i ][ fi + 1 ].push( uv );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hasFaceNormal ) {\n\n\t\t\t\t\t\tnormalIndex = faces[ offset ++ ] * 3;\n\n\t\t\t\t\t\tfaceA.normal.set(\n\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\tnormals[ normalIndex ]\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tfaceB.normal.copy( faceA.normal );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hasFaceVertexNormal ) {\n\n\t\t\t\t\t\tfor ( i = 0; i < 4; i ++ ) {\n\n\t\t\t\t\t\t\tnormalIndex = faces[ offset ++ ] * 3;\n\n\t\t\t\t\t\t\tnormal = new Vector3(\n\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\tnormals[ normalIndex ]\n\t\t\t\t\t\t\t);\n\n\n\t\t\t\t\t\t\tif ( i !== 2 ) faceA.vertexNormals.push( normal );\n\t\t\t\t\t\t\tif ( i !== 0 ) faceB.vertexNormals.push( normal );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\n\t\t\t\t\tif ( hasFaceColor ) {\n\n\t\t\t\t\t\tcolorIndex = faces[ offset ++ ];\n\t\t\t\t\t\thex = colors[ colorIndex ];\n\n\t\t\t\t\t\tfaceA.color.setHex( hex );\n\t\t\t\t\t\tfaceB.color.setHex( hex );\n\n\t\t\t\t\t}\n\n\n\t\t\t\t\tif ( hasFaceVertexColor ) {\n\n\t\t\t\t\t\tfor ( i = 0; i < 4; i ++ ) {\n\n\t\t\t\t\t\t\tcolorIndex = faces[ offset ++ ];\n\t\t\t\t\t\t\thex = colors[ colorIndex ];\n\n\t\t\t\t\t\t\tif ( i !== 2 ) faceA.vertexColors.push( new Color( hex ) );\n\t\t\t\t\t\t\tif ( i !== 0 ) faceB.vertexColors.push( new Color( hex ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgeometry.faces.push( faceA );\n\t\t\t\t\tgeometry.faces.push( faceB );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tface = new Face3();\n\t\t\t\t\tface.a = faces[ offset ++ ];\n\t\t\t\t\tface.b = faces[ offset ++ ];\n\t\t\t\t\tface.c = faces[ offset ++ ];\n\n\t\t\t\t\tif ( hasMaterial ) {\n\n\t\t\t\t\t\tmaterialIndex = faces[ offset ++ ];\n\t\t\t\t\t\tface.materialIndex = materialIndex;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// to get face <=> uv index correspondence\n\n\t\t\t\t\tfi = geometry.faces.length;\n\n\t\t\t\t\tif ( hasFaceVertexUv ) {\n\n\t\t\t\t\t\tfor ( i = 0; i < nUvLayers; i ++ ) {\n\n\t\t\t\t\t\t\tuvLayer = json.uvs[ i ];\n\n\t\t\t\t\t\t\tgeometry.faceVertexUvs[ i ][ fi ] = [];\n\n\t\t\t\t\t\t\tfor ( j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t\t\tuvIndex = faces[ offset ++ ];\n\n\t\t\t\t\t\t\t\tu = uvLayer[ uvIndex * 2 ];\n\t\t\t\t\t\t\t\tv = uvLayer[ uvIndex * 2 + 1 ];\n\n\t\t\t\t\t\t\t\tuv = new Vector2( u, v );\n\n\t\t\t\t\t\t\t\tgeometry.faceVertexUvs[ i ][ fi ].push( uv );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hasFaceNormal ) {\n\n\t\t\t\t\t\tnormalIndex = faces[ offset ++ ] * 3;\n\n\t\t\t\t\t\tface.normal.set(\n\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\tnormals[ normalIndex ]\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hasFaceVertexNormal ) {\n\n\t\t\t\t\t\tfor ( i = 0; i < 3; i ++ ) {\n\n\t\t\t\t\t\t\tnormalIndex = faces[ offset ++ ] * 3;\n\n\t\t\t\t\t\t\tnormal = new Vector3(\n\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\tnormals[ normalIndex ]\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tface.vertexNormals.push( normal );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\n\t\t\t\t\tif ( hasFaceColor ) {\n\n\t\t\t\t\t\tcolorIndex = faces[ offset ++ ];\n\t\t\t\t\t\tface.color.setHex( colors[ colorIndex ] );\n\n\t\t\t\t\t}\n\n\n\t\t\t\t\tif ( hasFaceVertexColor ) {\n\n\t\t\t\t\t\tfor ( i = 0; i < 3; i ++ ) {\n\n\t\t\t\t\t\t\tcolorIndex = faces[ offset ++ ];\n\t\t\t\t\t\t\tface.vertexColors.push( new Color( colors[ colorIndex ] ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgeometry.faces.push( face );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseSkin( json, geometry ) {\n\n\t\t\tvar influencesPerVertex = ( json.influencesPerVertex !== undefined ) ? json.influencesPerVertex : 2;\n\n\t\t\tif ( json.skinWeights ) {\n\n\t\t\t\tfor ( var i = 0, l = json.skinWeights.length; i < l; i += influencesPerVertex ) {\n\n\t\t\t\t\tvar x = json.skinWeights[ i ];\n\t\t\t\t\tvar y = ( influencesPerVertex > 1 ) ? json.skinWeights[ i + 1 ] : 0;\n\t\t\t\t\tvar z = ( influencesPerVertex > 2 ) ? json.skinWeights[ i + 2 ] : 0;\n\t\t\t\t\tvar w = ( influencesPerVertex > 3 ) ? json.skinWeights[ i + 3 ] : 0;\n\n\t\t\t\t\tgeometry.skinWeights.push( new Vector4( x, y, z, w ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( json.skinIndices ) {\n\n\t\t\t\tfor ( var i = 0, l = json.skinIndices.length; i < l; i += influencesPerVertex ) {\n\n\t\t\t\t\tvar a = json.skinIndices[ i ];\n\t\t\t\t\tvar b = ( influencesPerVertex > 1 ) ? json.skinIndices[ i + 1 ] : 0;\n\t\t\t\t\tvar c = ( influencesPerVertex > 2 ) ? json.skinIndices[ i + 2 ] : 0;\n\t\t\t\t\tvar d = ( influencesPerVertex > 3 ) ? json.skinIndices[ i + 3 ] : 0;\n\n\t\t\t\t\tgeometry.skinIndices.push( new Vector4( a, b, c, d ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tgeometry.bones = json.bones;\n\n\t\t\tif ( geometry.bones && geometry.bones.length > 0 && ( geometry.skinWeights.length !== geometry.skinIndices.length || geometry.skinIndices.length !== geometry.vertices.length ) ) {\n\n\t\t\t\tconsole.warn( 'When skinning, number of vertices (' + geometry.vertices.length + '), skinIndices (' +\n\t\t\t\t\tgeometry.skinIndices.length + '), and skinWeights (' + geometry.skinWeights.length + ') should match.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseMorphing( json, geometry ) {\n\n\t\t\tvar scale = json.scale;\n\n\t\t\tif ( json.morphTargets !== undefined ) {\n\n\t\t\t\tfor ( var i = 0, l = json.morphTargets.length; i < l; i ++ ) {\n\n\t\t\t\t\tgeometry.morphTargets[ i ] = {};\n\t\t\t\t\tgeometry.morphTargets[ i ].name = json.morphTargets[ i ].name;\n\t\t\t\t\tgeometry.morphTargets[ i ].vertices = [];\n\n\t\t\t\t\tvar dstVertices = geometry.morphTargets[ i ].vertices;\n\t\t\t\t\tvar srcVertices = json.morphTargets[ i ].vertices;\n\n\t\t\t\t\tfor ( var v = 0, vl = srcVertices.length; v < vl; v += 3 ) {\n\n\t\t\t\t\t\tvar vertex = new Vector3();\n\t\t\t\t\t\tvertex.x = srcVertices[ v ] * scale;\n\t\t\t\t\t\tvertex.y = srcVertices[ v + 1 ] * scale;\n\t\t\t\t\t\tvertex.z = srcVertices[ v + 2 ] * scale;\n\n\t\t\t\t\t\tdstVertices.push( vertex );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( json.morphColors !== undefined && json.morphColors.length > 0 ) {\n\n\t\t\t\tconsole.warn( 'THREE.JSONLoader: \"morphColors\" no longer supported. Using them as face colors.' );\n\n\t\t\t\tvar faces = geometry.faces;\n\t\t\t\tvar morphColors = json.morphColors[ 0 ].colors;\n\n\t\t\t\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\t\tfaces[ i ].color.fromArray( morphColors, i * 3 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseAnimations( json, geometry ) {\n\n\t\t\tvar outputAnimations = [];\n\n\t\t\t// parse old style Bone/Hierarchy animations\n\t\t\tvar animations = [];\n\n\t\t\tif ( json.animation !== undefined ) {\n\n\t\t\t\tanimations.push( json.animation );\n\n\t\t\t}\n\n\t\t\tif ( json.animations !== undefined ) {\n\n\t\t\t\tif ( json.animations.length ) {\n\n\t\t\t\t\tanimations = animations.concat( json.animations );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tanimations.push( json.animations );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfor ( var i = 0; i < animations.length; i ++ ) {\n\n\t\t\t\tvar clip = AnimationClip.parseAnimation( animations[ i ], geometry.bones );\n\t\t\t\tif ( clip ) outputAnimations.push( clip );\n\n\t\t\t}\n\n\t\t\t// parse implicit morph animations\n\t\t\tif ( geometry.morphTargets ) {\n\n\t\t\t\t// TODO: Figure out what an appropraite FPS is for morph target animations -- defaulting to 10, but really it is completely arbitrary.\n\t\t\t\tvar morphAnimationClips = AnimationClip.CreateClipsFromMorphTargetSequences( geometry.morphTargets, 10 );\n\t\t\t\toutputAnimations = outputAnimations.concat( morphAnimationClips );\n\n\t\t\t}\n\n\t\t\tif ( outputAnimations.length > 0 ) geometry.animations = outputAnimations;\n\n\t\t}\n\n\t\treturn function parse( json, texturePath ) {\n\n\t\t\tif ( json.data !== undefined ) {\n\n\t\t\t\t// Geometry 4.0 spec\n\t\t\t\tjson = json.data;\n\n\t\t\t}\n\n\t\t\tif ( json.scale !== undefined ) {\n\n\t\t\t\tjson.scale = 1.0 / json.scale;\n\n\t\t\t} else {\n\n\t\t\t\tjson.scale = 1.0;\n\n\t\t\t}\n\n\t\t\tvar geometry = new Geometry();\n\n\t\t\tparseModel( json, geometry );\n\t\t\tparseSkin( json, geometry );\n\t\t\tparseMorphing( json, geometry );\n\t\t\tparseAnimations( json, geometry );\n\n\t\t\tgeometry.computeFaceNormals();\n\t\t\tgeometry.computeBoundingSphere();\n\n\t\t\tif ( json.materials === undefined || json.materials.length === 0 ) {\n\n\t\t\t\treturn { geometry: geometry };\n\n\t\t\t} else {\n\n\t\t\t\tvar materials = Loader.prototype.initMaterials( json.materials, texturePath, this.crossOrigin );\n\n\t\t\t\treturn { geometry: geometry, materials: materials };\n\n\t\t\t}\n\n\t\t};\n\n\t} )()\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ObjectLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\tthis.texturePath = '';\n\n}\n\nObject.assign( ObjectLoader.prototype, {\n\n\tcrossOrigin: 'anonymous',\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( this.texturePath === '' ) {\n\n\t\t\tthis.texturePath = url.substring( 0, url.lastIndexOf( '/' ) + 1 );\n\n\t\t}\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tvar json = null;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( error );\n\n\t\t\t\tconsole.error( 'THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tvar metadata = json.metadata;\n\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url + '. Use THREE.JSONLoader instead.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tscope.parse( json, onLoad );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tsetTexturePath: function ( value ) {\n\n\t\tthis.texturePath = value;\n\t\treturn this;\n\n\t},\n\n\tsetCrossOrigin: function ( value ) {\n\n\t\tthis.crossOrigin = value;\n\t\treturn this;\n\n\t},\n\n\tparse: function ( json, onLoad ) {\n\n\t\tvar shapes = this.parseShape( json.shapes );\n\t\tvar geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tvar images = this.parseImages( json.images, function () {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t} );\n\n\t\tvar textures = this.parseTextures( json.textures, images );\n\t\tvar materials = this.parseMaterials( json.materials, textures );\n\n\t\tvar object = this.parseObject( json.object, geometries, materials );\n\n\t\tif ( json.animations ) {\n\n\t\t\tobject.animations = this.parseAnimations( json.animations );\n\n\t\t}\n\n\t\tif ( json.images === undefined || json.images.length === 0 ) {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t},\n\n\tparseShape: function ( json ) {\n\n\t\tvar shapes = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar shape = new Shape().fromJSON( json[ i ] );\n\n\t\t\t\tshapes[ shape.uuid ] = shape;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn shapes;\n\n\t},\n\n\tparseGeometries: function ( json, shapes ) {\n\n\t\tvar geometries = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tvar geometryLoader = new JSONLoader();\n\t\t\tvar bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar geometry;\n\t\t\t\tvar data = json[ i ];\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase 'PlaneGeometry':\n\t\t\t\t\tcase 'PlaneBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BoxGeometry':\n\t\t\t\t\tcase 'BoxBufferGeometry':\n\t\t\t\t\tcase 'CubeGeometry': // backwards compatible\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.depth,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.depthSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CircleGeometry':\n\t\t\t\t\tcase 'CircleBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CylinderGeometry':\n\t\t\t\t\tcase 'CylinderBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radiusTop,\n\t\t\t\t\t\t\tdata.radiusBottom,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ConeGeometry':\n\t\t\t\t\tcase 'ConeBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'SphereGeometry':\n\t\t\t\t\tcase 'SphereBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'DodecahedronGeometry':\n\t\t\t\t\tcase 'DodecahedronBufferGeometry':\n\t\t\t\t\tcase 'IcosahedronGeometry':\n\t\t\t\t\tcase 'IcosahedronBufferGeometry':\n\t\t\t\t\tcase 'OctahedronGeometry':\n\t\t\t\t\tcase 'OctahedronBufferGeometry':\n\t\t\t\t\tcase 'TetrahedronGeometry':\n\t\t\t\t\tcase 'TetrahedronBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.detail\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'RingGeometry':\n\t\t\t\t\tcase 'RingBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.innerRadius,\n\t\t\t\t\t\t\tdata.outerRadius,\n\t\t\t\t\t\t\tdata.thetaSegments,\n\t\t\t\t\t\t\tdata.phiSegments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusGeometry':\n\t\t\t\t\tcase 'TorusBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.arc\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusKnotGeometry':\n\t\t\t\t\tcase 'TorusKnotBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.p,\n\t\t\t\t\t\t\tdata.q\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'LatheGeometry':\n\t\t\t\t\tcase 'LatheBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.points,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'PolyhedronGeometry':\n\t\t\t\t\tcase 'PolyhedronBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.vertices,\n\t\t\t\t\t\t\tdata.indices,\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.details\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ShapeGeometry':\n\t\t\t\t\tcase 'ShapeBufferGeometry':\n\n\t\t\t\t\t\tvar geometryShapes = [];\n\n\t\t\t\t\t\tfor ( var j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tvar shape = shapes[ data.shapes[ j ] ];\n\n\t\t\t\t\t\t\tgeometryShapes.push( shape );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tgeometryShapes,\n\t\t\t\t\t\t\tdata.curveSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\n\t\t\t\t\tcase 'ExtrudeGeometry':\n\t\t\t\t\tcase 'ExtrudeBufferGeometry':\n\n\t\t\t\t\t\tvar geometryShapes = [];\n\n\t\t\t\t\t\tfor ( var j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tvar shape = shapes[ data.shapes[ j ] ];\n\n\t\t\t\t\t\t\tgeometryShapes.push( shape );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar extrudePath = data.options.extrudePath;\n\n\t\t\t\t\t\tif ( extrudePath !== undefined ) {\n\n\t\t\t\t\t\t\tdata.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tgeometryShapes,\n\t\t\t\t\t\t\tdata.options\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BufferGeometry':\n\n\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Geometry':\n\n\t\t\t\t\t\tgeometry = geometryLoader.parse( data, this.texturePath ).geometry;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Unsupported geometry type \"' + data.type + '\"' );\n\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\t\t\t\tif ( geometry.isBufferGeometry === true && data.userData !== undefined ) geometry.userData = data.userData;\n\n\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometries;\n\n\t},\n\n\tparseMaterials: function ( json, textures ) {\n\n\t\tvar materials = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tvar loader = new MaterialLoader();\n\t\t\tloader.setTextures( textures );\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar data = json[ i ];\n\n\t\t\t\tif ( data.type === 'MultiMaterial' ) {\n\n\t\t\t\t\t// Deprecated\n\n\t\t\t\t\tvar array = [];\n\n\t\t\t\t\tfor ( var j = 0; j < data.materials.length; j ++ ) {\n\n\t\t\t\t\t\tarray.push( loader.parse( data.materials[ j ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = array;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tmaterials[ data.uuid ] = loader.parse( data );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materials;\n\n\t},\n\n\tparseAnimations: function ( json ) {\n\n\t\tvar animations = [];\n\n\t\tfor ( var i = 0; i < json.length; i ++ ) {\n\n\t\t\tvar data = json[ i ];\n\n\t\t\tvar clip = AnimationClip.parse( data );\n\n\t\t\tif ( data.uuid !== undefined ) clip.uuid = data.uuid;\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t},\n\n\tparseImages: function ( json, onLoad ) {\n\n\t\tvar scope = this;\n\t\tvar images = {};\n\n\t\tfunction loadImage( url ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn loader.load( url, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, undefined, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tvar manager = new LoadingManager( onLoad );\n\n\t\t\tvar loader = new ImageLoader( manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( var i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tvar image = json[ i ];\n\t\t\t\tvar url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\timages[ image.uuid ] = [];\n\n\t\t\t\t\tfor ( var j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tvar currentUrl = url[ j ];\n\n\t\t\t\t\t\tvar path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( currentUrl ) ? currentUrl : scope.texturePath + currentUrl;\n\n\t\t\t\t\t\timages[ image.uuid ].push( loadImage( path ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tvar path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( image.url ) ? image.url : scope.texturePath + image.url;\n\n\t\t\t\t\timages[ image.uuid ] = loadImage( path );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t},\n\n\tparseTextures: function ( json, images ) {\n\n\t\tfunction parseConstant( value, type ) {\n\n\t\t\tif ( typeof value === 'number' ) return value;\n\n\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\treturn type[ value ];\n\n\t\t}\n\n\t\tvar textures = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar data = json[ i ];\n\n\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t}\n\n\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t}\n\n\t\t\t\tvar texture;\n\n\t\t\t\tif ( Array.isArray( images[ data.image ] ) ) {\n\n\t\t\t\t\ttexture = new CubeTexture( images[ data.image ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture = new Texture( images[ data.image ] );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\n\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING );\n\n\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\n\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\n\t\t\t\tif ( data.center !== undefined ) texture.center.fromArray( data.center );\n\t\t\t\tif ( data.rotation !== undefined ) texture.rotation = data.rotation;\n\n\t\t\t\tif ( data.wrap !== undefined ) {\n\n\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING );\n\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.format !== undefined ) texture.format = data.format;\n\n\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\n\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\n\n\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textures;\n\n\t},\n\n\tparseObject: function ( data, geometries, materials ) {\n\n\t\tvar object;\n\n\t\tfunction getGeometry( name ) {\n\n\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t}\n\n\t\t\treturn geometries[ name ];\n\n\t\t}\n\n\t\tfunction getMaterial( name ) {\n\n\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\n\t\t\t\tvar array = [];\n\n\t\t\t\tfor ( var i = 0, l = name.length; i < l; i ++ ) {\n\n\t\t\t\t\tvar uuid = name[ i ];\n\n\t\t\t\t\tif ( materials[ uuid ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', uuid );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tarray.push( materials[ uuid ] );\n\n\t\t\t\t}\n\n\t\t\t\treturn array;\n\n\t\t\t}\n\n\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t}\n\n\t\t\treturn materials[ name ];\n\n\t\t}\n\n\t\tswitch ( data.type ) {\n\n\t\t\tcase 'Scene':\n\n\t\t\t\tobject = new Scene();\n\n\t\t\t\tif ( data.background !== undefined ) {\n\n\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\n\n\t\t\t\t\t\tobject.background = new Color( data.background );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.fog !== undefined ) {\n\n\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\n\n\t\t\t\t\t\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\n\n\t\t\t\t\t} else if ( data.fog.type === 'FogExp2' ) {\n\n\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'AmbientLight':\n\n\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'DirectionalLight':\n\n\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointLight':\n\n\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'RectAreaLight':\n\n\t\t\t\tobject = new RectAreaLight( data.color, data.intensity, data.width, data.height );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SpotLight':\n\n\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'HemisphereLight':\n\n\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SkinnedMesh':\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader.parseObject() does not support SkinnedMesh yet.' );\n\n\t\t\tcase 'Mesh':\n\n\t\t\t\tvar geometry = getGeometry( data.geometry );\n\t\t\t\tvar material = getMaterial( data.material );\n\n\t\t\t\tif ( geometry.bones && geometry.bones.length > 0 ) {\n\n\t\t\t\t\tobject = new SkinnedMesh( geometry, material );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LOD':\n\n\t\t\t\tobject = new LOD();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Line':\n\n\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ), data.mode );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineLoop':\n\n\t\t\t\tobject = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineSegments':\n\n\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointCloud':\n\t\t\tcase 'Points':\n\n\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Sprite':\n\n\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Group':\n\n\t\t\t\tobject = new Group();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tobject = new Object3D();\n\n\t\t}\n\n\t\tobject.uuid = data.uuid;\n\n\t\tif ( data.name !== undefined ) object.name = data.name;\n\n\t\tif ( data.matrix !== undefined ) {\n\n\t\t\tobject.matrix.fromArray( data.matrix );\n\n\t\t\tif ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate;\n\t\t\tif ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t} else {\n\n\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\n\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t}\n\n\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\tif ( data.shadow ) {\n\n\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\n\t\t\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\n\t\t\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\n\t\t\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\n\n\t\t}\n\n\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\tif ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled;\n\t\tif ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder;\n\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\t\tif ( data.layers !== undefined ) object.layers.mask = data.layers;\n\n\t\tif ( data.children !== undefined ) {\n\n\t\t\tvar children = data.children;\n\n\t\t\tfor ( var i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tobject.add( this.parseObject( children[ i ], geometries, materials ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.type === 'LOD' ) {\n\n\t\t\tvar levels = data.levels;\n\n\t\t\tfor ( var l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\tvar level = levels[ l ];\n\t\t\t\tvar child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\tobject.addLevel( child, level.distance );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n} );\n\nvar TEXTURE_MAPPING = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tSphericalReflectionMapping: SphericalReflectionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping,\n\tCubeUVRefractionMapping: CubeUVRefractionMapping\n};\n\nvar TEXTURE_WRAPPING = {\n\tRepeatWrapping: RepeatWrapping,\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\n};\n\nvar TEXTURE_FILTER = {\n\tNearestFilter: NearestFilter,\n\tNearestMipMapNearestFilter: NearestMipMapNearestFilter,\n\tNearestMipMapLinearFilter: NearestMipMapLinearFilter,\n\tLinearFilter: LinearFilter,\n\tLinearMipMapNearestFilter: LinearMipMapNearestFilter,\n\tLinearMipMapLinearFilter: LinearMipMapLinearFilter\n};\n\n/**\n * @author thespite / http://clicktorelease.com/\n */\n\n\nfunction ImageBitmapLoader( manager ) {\n\n\tif ( typeof createImageBitmap === 'undefined' ) {\n\n\t\tconsole.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );\n\n\t}\n\n\tif ( typeof fetch === 'undefined' ) {\n\n\t\tconsole.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );\n\n\t}\n\n\tthis.manager = manager !== undefined ? manager : DefaultLoadingManager;\n\tthis.options = undefined;\n\n}\n\nImageBitmapLoader.prototype = {\n\n\tconstructor: ImageBitmapLoader,\n\n\tsetOptions: function setOptions( options ) {\n\n\t\tthis.options = options;\n\n\t\treturn this;\n\n\t},\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tvar scope = this;\n\n\t\tvar cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tfetch( url ).then( function ( res ) {\n\n\t\t\treturn res.blob();\n\n\t\t} ).then( function ( blob ) {\n\n\t\t\treturn createImageBitmap( blob, scope.options );\n\n\t\t} ).then( function ( imageBitmap ) {\n\n\t\t\tCache.add( url, imageBitmap );\n\n\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} ).catch( function ( e ) {\n\n\t\t\tif ( onError ) onError( e );\n\n\t\t\tscope.manager.itemEnd( url );\n\t\t\tscope.manager.itemError( url );\n\n\t\t} );\n\n\t},\n\n\tsetCrossOrigin: function ( /* value */ ) {\n\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n};\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * minimal class for proxing functions to Path. Replaces old \"extractSubpaths()\"\n **/\n\nfunction ShapePath() {\n\n\tthis.type = 'ShapePath';\n\n\tthis.color = new Color();\n\n\tthis.subPaths = [];\n\tthis.currentPath = null;\n\n}\n\nObject.assign( ShapePath.prototype, {\n\n\tmoveTo: function ( x, y ) {\n\n\t\tthis.currentPath = new Path();\n\t\tthis.subPaths.push( this.currentPath );\n\t\tthis.currentPath.moveTo( x, y );\n\n\t},\n\n\tlineTo: function ( x, y ) {\n\n\t\tthis.currentPath.lineTo( x, y );\n\n\t},\n\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\n\n\t},\n\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\n\n\t},\n\n\tsplineThru: function ( pts ) {\n\n\t\tthis.currentPath.splineThru( pts );\n\n\t},\n\n\ttoShapes: function ( isCCW, noHoles ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tvar shapes = [];\n\n\t\t\tfor ( var i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tvar tmpPath = inSubpaths[ i ];\n\n\t\t\t\tvar tmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\tvar polyLen = inPolygon.length;\n\n\t\t\t// inPt on polygon contour => immediate success    or\n\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t//  with the horizontal line through inPt, left of inPt\n\t\t\t//  not counting lowerY endpoints of edges and whole edges on that line\n\t\t\tvar inside = false;\n\t\t\tfor ( var p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tvar edgeLowPt = inPolygon[ p ];\n\t\t\t\tvar edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tvar edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tvar edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tvar perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\n\t\t\t\t\t// continue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn\tinside;\n\n\t\t}\n\n\t\tvar isClockWise = ShapeUtils.isClockWise;\n\n\t\tvar subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tif ( noHoles === true )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tvar solid, tmpPath, tmpShape, shapes = [];\n\n\t\tif ( subPaths.length === 1 ) {\n\n\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\ttmpShape = new Shape();\n\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\tshapes.push( tmpShape );\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tvar holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tvar betterShapeHoles = [];\n\t\tvar newShapes = [];\n\t\tvar newShapeHoles = [];\n\t\tvar mainIdx = 0;\n\t\tvar tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( var i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\ttmpPath = subPaths[ i ];\n\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\tif ( solid ) {\n\n\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\n\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t//console.log('cw', i);\n\n\t\t\t} else {\n\n\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t//console.log('ccw', i);\n\n\t\t\t}\n\n\t\t}\n\n\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tif ( newShapes.length > 1 ) {\n\n\t\t\tvar ambiguous = false;\n\t\t\tvar toChange = [];\n\n\t\t\tfor ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tvar sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( var hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tvar ho = sho[ hIdx ];\n\t\t\t\t\tvar hole_unassigned = true;\n\n\t\t\t\t\tfor ( var s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange.push( { froms: sIdx, tos: s2Idx, hole: hIdx } );\n\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tambiguous = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t\t// console.log(\"ambiguous: \", ambiguous);\n\t\t\tif ( toChange.length > 0 ) {\n\n\t\t\t\t// console.log(\"to change: \", toChange);\n\t\t\t\tif ( ! ambiguous )\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar tmpHoles;\n\n\t\tfor ( var i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\tshapes.push( tmpShape );\n\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\tfor ( var j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//console.log(\"shape\", shapes);\n\n\t\treturn shapes;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction Font( data ) {\n\n\tthis.type = 'Font';\n\n\tthis.data = data;\n\n}\n\nObject.assign( Font.prototype, {\n\n\tisFont: true,\n\n\tgenerateShapes: function ( text, size ) {\n\n\t\tif ( size === undefined ) size = 100;\n\n\t\tvar shapes = [];\n\t\tvar paths = createPaths( text, size, this.data );\n\n\t\tfor ( var p = 0, pl = paths.length; p < pl; p ++ ) {\n\n\t\t\tArray.prototype.push.apply( shapes, paths[ p ].toShapes() );\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n} );\n\nfunction createPaths( text, size, data ) {\n\n\tvar chars = Array.from ? Array.from( text ) : String( text ).split( '' ); // see #13988\n\tvar scale = size / data.resolution;\n\tvar line_height = ( data.boundingBox.yMax - data.boundingBox.yMin + data.underlineThickness ) * scale;\n\n\tvar paths = [];\n\n\tvar offsetX = 0, offsetY = 0;\n\n\tfor ( var i = 0; i < chars.length; i ++ ) {\n\n\t\tvar char = chars[ i ];\n\n\t\tif ( char === '\\n' ) {\n\n\t\t\toffsetX = 0;\n\t\t\toffsetY -= line_height;\n\n\t\t} else {\n\n\t\t\tvar ret = createPath( char, scale, offsetX, offsetY, data );\n\t\t\toffsetX += ret.offsetX;\n\t\t\tpaths.push( ret.path );\n\n\t\t}\n\n\t}\n\n\treturn paths;\n\n}\n\nfunction createPath( char, scale, offsetX, offsetY, data ) {\n\n\tvar glyph = data.glyphs[ char ] || data.glyphs[ '?' ];\n\n\tif ( ! glyph ) return;\n\n\tvar path = new ShapePath();\n\n\tvar x, y, cpx, cpy, cpx1, cpy1, cpx2, cpy2;\n\n\tif ( glyph.o ) {\n\n\t\tvar outline = glyph._cachedOutline || ( glyph._cachedOutline = glyph.o.split( ' ' ) );\n\n\t\tfor ( var i = 0, l = outline.length; i < l; ) {\n\n\t\t\tvar action = outline[ i ++ ];\n\n\t\t\tswitch ( action ) {\n\n\t\t\t\tcase 'm': // moveTo\n\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.moveTo( x, y );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'l': // lineTo\n\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.lineTo( x, y );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'q': // quadraticCurveTo\n\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.quadraticCurveTo( cpx1, cpy1, cpx, cpy );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'b': // bezierCurveTo\n\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx2 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy2 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.bezierCurveTo( cpx1, cpy1, cpx2, cpy2, cpx, cpy );\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn { offsetX: glyph.ha * scale, path: path };\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction FontLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( FontLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tvar json;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tconsole.warn( 'THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead.' );\n\t\t\t\tjson = JSON.parse( text.substring( 65, text.length - 2 ) );\n\n\t\t\t}\n\n\t\t\tvar font = scope.parse( json );\n\n\t\t\tif ( onLoad ) onLoad( font );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\treturn new Font( json );\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar context;\n\nvar AudioContext = {\n\n\tgetContext: function () {\n\n\t\tif ( context === undefined ) {\n\n\t\t\tcontext = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t\t}\n\n\t\treturn context;\n\n\t},\n\n\tsetContext: function ( value ) {\n\n\t\tcontext = value;\n\n\t}\n\n};\n\n/**\n * @author Reece Aaron Lecrivain / http://reecenotes.com/\n */\n\nfunction AudioLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( AudioLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t// Create a copy of the buffer. The `decodeAudioData` method\n\t\t\t// detaches the buffer when complete, preventing reuse.\n\t\t\tvar bufferCopy = buffer.slice( 0 );\n\n\t\t\tvar context = AudioContext.getContext();\n\t\t\tcontext.decodeAudioData( bufferCopy, function ( audioBuffer ) {\n\n\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t} );\n\n\t\t}, onProgress, onError );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction StereoCamera() {\n\n\tthis.type = 'StereoCamera';\n\n\tthis.aspect = 1;\n\n\tthis.eyeSep = 0.064;\n\n\tthis.cameraL = new PerspectiveCamera();\n\tthis.cameraL.layers.enable( 1 );\n\tthis.cameraL.matrixAutoUpdate = false;\n\n\tthis.cameraR = new PerspectiveCamera();\n\tthis.cameraR.layers.enable( 2 );\n\tthis.cameraR.matrixAutoUpdate = false;\n\n}\n\nObject.assign( StereoCamera.prototype, {\n\n\tupdate: ( function () {\n\n\t\tvar instance, focus, fov, aspect, near, far, zoom, eyeSep;\n\n\t\tvar eyeRight = new Matrix4();\n\t\tvar eyeLeft = new Matrix4();\n\n\t\treturn function update( camera ) {\n\n\t\t\tvar needsUpdate = instance !== this || focus !== camera.focus || fov !== camera.fov ||\n\t\t\t\t\t\t\t\t\t\t\t\taspect !== camera.aspect * this.aspect || near !== camera.near ||\n\t\t\t\t\t\t\t\t\t\t\t\tfar !== camera.far || zoom !== camera.zoom || eyeSep !== this.eyeSep;\n\n\t\t\tif ( needsUpdate ) {\n\n\t\t\t\tinstance = this;\n\t\t\t\tfocus = camera.focus;\n\t\t\t\tfov = camera.fov;\n\t\t\t\taspect = camera.aspect * this.aspect;\n\t\t\t\tnear = camera.near;\n\t\t\t\tfar = camera.far;\n\t\t\t\tzoom = camera.zoom;\n\n\t\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\t\tvar projectionMatrix = camera.projectionMatrix.clone();\n\t\t\t\teyeSep = this.eyeSep / 2;\n\t\t\t\tvar eyeSepOnProjection = eyeSep * near / focus;\n\t\t\t\tvar ymax = ( near * Math.tan( _Math.DEG2RAD * fov * 0.5 ) ) / zoom;\n\t\t\t\tvar xmin, xmax;\n\n\t\t\t\t// translate xOffset\n\n\t\t\t\teyeLeft.elements[ 12 ] = - eyeSep;\n\t\t\t\teyeRight.elements[ 12 ] = eyeSep;\n\n\t\t\t\t// for left eye\n\n\t\t\t\txmin = - ymax * aspect + eyeSepOnProjection;\n\t\t\t\txmax = ymax * aspect + eyeSepOnProjection;\n\n\t\t\t\tprojectionMatrix.elements[ 0 ] = 2 * near / ( xmax - xmin );\n\t\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\t\tthis.cameraL.projectionMatrix.copy( projectionMatrix );\n\n\t\t\t\t// for right eye\n\n\t\t\t\txmin = - ymax * aspect - eyeSepOnProjection;\n\t\t\t\txmax = ymax * aspect - eyeSepOnProjection;\n\n\t\t\t\tprojectionMatrix.elements[ 0 ] = 2 * near / ( xmax - xmin );\n\t\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\t\tthis.cameraR.projectionMatrix.copy( projectionMatrix );\n\n\t\t\t}\n\n\t\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( eyeLeft );\n\t\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( eyeRight );\n\n\t\t};\n\n\t} )()\n\n} );\n\n/**\n * Camera for rendering cube maps\n *\t- renders scene into axis-aligned cube\n *\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction CubeCamera( near, far, cubeResolution ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'CubeCamera';\n\n\tvar fov = 90, aspect = 1;\n\n\tvar cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPX.up.set( 0, - 1, 0 );\n\tcameraPX.lookAt( new Vector3( 1, 0, 0 ) );\n\tthis.add( cameraPX );\n\n\tvar cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNX.up.set( 0, - 1, 0 );\n\tcameraNX.lookAt( new Vector3( - 1, 0, 0 ) );\n\tthis.add( cameraNX );\n\n\tvar cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPY.up.set( 0, 0, 1 );\n\tcameraPY.lookAt( new Vector3( 0, 1, 0 ) );\n\tthis.add( cameraPY );\n\n\tvar cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNY.up.set( 0, 0, - 1 );\n\tcameraNY.lookAt( new Vector3( 0, - 1, 0 ) );\n\tthis.add( cameraNY );\n\n\tvar cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPZ.up.set( 0, - 1, 0 );\n\tcameraPZ.lookAt( new Vector3( 0, 0, 1 ) );\n\tthis.add( cameraPZ );\n\n\tvar cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNZ.up.set( 0, - 1, 0 );\n\tcameraNZ.lookAt( new Vector3( 0, 0, - 1 ) );\n\tthis.add( cameraNZ );\n\n\tvar options = { format: RGBFormat, magFilter: LinearFilter, minFilter: LinearFilter };\n\n\tthis.renderTarget = new WebGLRenderTargetCube( cubeResolution, cubeResolution, options );\n\tthis.renderTarget.texture.name = \"CubeCamera\";\n\n\tthis.update = function ( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tvar renderTarget = this.renderTarget;\n\t\tvar generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\trenderTarget.activeCubeFace = 0;\n\t\trenderer.render( scene, cameraPX, renderTarget );\n\n\t\trenderTarget.activeCubeFace = 1;\n\t\trenderer.render( scene, cameraNX, renderTarget );\n\n\t\trenderTarget.activeCubeFace = 2;\n\t\trenderer.render( scene, cameraPY, renderTarget );\n\n\t\trenderTarget.activeCubeFace = 3;\n\t\trenderer.render( scene, cameraNY, renderTarget );\n\n\t\trenderTarget.activeCubeFace = 4;\n\t\trenderer.render( scene, cameraPZ, renderTarget );\n\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\trenderTarget.activeCubeFace = 5;\n\t\trenderer.render( scene, cameraNZ, renderTarget );\n\n\t\trenderer.setRenderTarget( null );\n\n\t};\n\n\tthis.clear = function ( renderer, color, depth, stencil ) {\n\n\t\tvar renderTarget = this.renderTarget;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\trenderTarget.activeCubeFace = i;\n\t\t\trenderer.setRenderTarget( renderTarget );\n\n\t\t\trenderer.clear( color, depth, stencil );\n\n\t\t}\n\n\t\trenderer.setRenderTarget( null );\n\n\t};\n\n}\n\nCubeCamera.prototype = Object.create( Object3D.prototype );\nCubeCamera.prototype.constructor = CubeCamera;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AudioListener() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'AudioListener';\n\n\tthis.context = AudioContext.getContext();\n\n\tthis.gain = this.context.createGain();\n\tthis.gain.connect( this.context.destination );\n\n\tthis.filter = null;\n\n}\n\nAudioListener.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: AudioListener,\n\n\tgetInput: function () {\n\n\t\treturn this.gain;\n\n\t},\n\n\tremoveFilter: function ( ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\tthis.gain.connect( this.context.destination );\n\t\t\tthis.filter = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilter: function () {\n\n\t\treturn this.filter;\n\n\t},\n\n\tsetFilter: function ( value ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t} else {\n\n\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t}\n\n\t\tthis.filter = value;\n\t\tthis.gain.connect( this.filter );\n\t\tthis.filter.connect( this.context.destination );\n\n\t\treturn this;\n\n\t},\n\n\tgetMasterVolume: function () {\n\n\t\treturn this.gain.gain.value;\n\n\t},\n\n\tsetMasterVolume: function ( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t},\n\n\tupdateMatrixWorld: ( function () {\n\n\t\tvar position = new Vector3();\n\t\tvar quaternion = new Quaternion();\n\t\tvar scale = new Vector3();\n\n\t\tvar orientation = new Vector3();\n\n\t\treturn function updateMatrixWorld( force ) {\n\n\t\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\t\tvar listener = this.context.listener;\n\t\t\tvar up = this.up;\n\n\t\t\tthis.matrixWorld.decompose( position, quaternion, scale );\n\n\t\t\torientation.set( 0, 0, - 1 ).applyQuaternion( quaternion );\n\n\t\t\tif ( listener.positionX ) {\n\n\t\t\t\tlistener.positionX.setValueAtTime( position.x, this.context.currentTime );\n\t\t\t\tlistener.positionY.setValueAtTime( position.y, this.context.currentTime );\n\t\t\t\tlistener.positionZ.setValueAtTime( position.z, this.context.currentTime );\n\t\t\t\tlistener.forwardX.setValueAtTime( orientation.x, this.context.currentTime );\n\t\t\t\tlistener.forwardY.setValueAtTime( orientation.y, this.context.currentTime );\n\t\t\t\tlistener.forwardZ.setValueAtTime( orientation.z, this.context.currentTime );\n\t\t\t\tlistener.upX.setValueAtTime( up.x, this.context.currentTime );\n\t\t\t\tlistener.upY.setValueAtTime( up.y, this.context.currentTime );\n\t\t\t\tlistener.upZ.setValueAtTime( up.z, this.context.currentTime );\n\n\t\t\t} else {\n\n\t\t\t\tlistener.setPosition( position.x, position.y, position.z );\n\t\t\t\tlistener.setOrientation( orientation.x, orientation.y, orientation.z, up.x, up.y, up.z );\n\n\t\t\t}\n\n\t\t};\n\n\t} )()\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Reece Aaron Lecrivain / http://reecenotes.com/\n */\n\nfunction Audio( listener ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Audio';\n\n\tthis.context = listener.context;\n\n\tthis.gain = this.context.createGain();\n\tthis.gain.connect( listener.getInput() );\n\n\tthis.autoplay = false;\n\n\tthis.buffer = null;\n\tthis.loop = false;\n\tthis.startTime = 0;\n\tthis.offset = 0;\n\tthis.playbackRate = 1;\n\tthis.isPlaying = false;\n\tthis.hasPlaybackControl = true;\n\tthis.sourceType = 'empty';\n\n\tthis.filters = [];\n\n}\n\nAudio.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Audio,\n\n\tgetOutput: function () {\n\n\t\treturn this.gain;\n\n\t},\n\n\tsetNodeSource: function ( audioNode ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'audioNode';\n\t\tthis.source = audioNode;\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetMediaElementSource: function ( mediaElement ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaNode';\n\t\tthis.source = this.context.createMediaElementSource( mediaElement );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetBuffer: function ( audioBuffer ) {\n\n\t\tthis.buffer = audioBuffer;\n\t\tthis.sourceType = 'buffer';\n\n\t\tif ( this.autoplay ) this.play();\n\n\t\treturn this;\n\n\t},\n\n\tplay: function () {\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar source = this.context.createBufferSource();\n\n\t\tsource.buffer = this.buffer;\n\t\tsource.loop = this.loop;\n\t\tsource.onended = this.onEnded.bind( this );\n\t\tsource.playbackRate.setValueAtTime( this.playbackRate, this.startTime );\n\t\tthis.startTime = this.context.currentTime;\n\t\tsource.start( this.startTime, this.offset );\n\n\t\tthis.isPlaying = true;\n\n\t\tthis.source = source;\n\n\t\treturn this.connect();\n\n\t},\n\n\tpause: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.stop();\n\t\t\tthis.offset += ( this.context.currentTime - this.startTime ) * this.playbackRate;\n\t\t\tthis.isPlaying = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tstop: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.source.stop();\n\t\tthis.offset = 0;\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t},\n\n\tconnect: function () {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\tfor ( var i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdisconnect: function () {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\tfor ( var i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilters: function () {\n\n\t\treturn this.filters;\n\n\t},\n\n\tsetFilters: function ( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value;\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilter: function () {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t},\n\n\tsetFilter: function ( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t},\n\n\tsetPlaybackRate: function ( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.playbackRate = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.playbackRate.setValueAtTime( this.playbackRate, this.context.currentTime );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetPlaybackRate: function () {\n\n\t\treturn this.playbackRate;\n\n\t},\n\n\tonEnded: function () {\n\n\t\tthis.isPlaying = false;\n\n\t},\n\n\tgetLoop: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn this.loop;\n\n\t},\n\n\tsetLoop: function ( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.loop = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.loop = this.loop;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetVolume: function () {\n\n\t\treturn this.gain.gain.value;\n\n\t},\n\n\tsetVolume: function ( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction PositionalAudio( listener ) {\n\n\tAudio.call( this, listener );\n\n\tthis.panner = this.context.createPanner();\n\tthis.panner.connect( this.gain );\n\n}\n\nPositionalAudio.prototype = Object.assign( Object.create( Audio.prototype ), {\n\n\tconstructor: PositionalAudio,\n\n\tgetOutput: function () {\n\n\t\treturn this.panner;\n\n\t},\n\n\tgetRefDistance: function () {\n\n\t\treturn this.panner.refDistance;\n\n\t},\n\n\tsetRefDistance: function ( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetRolloffFactor: function () {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t},\n\n\tsetRolloffFactor: function ( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetDistanceModel: function () {\n\n\t\treturn this.panner.distanceModel;\n\n\t},\n\n\tsetDistanceModel: function ( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetMaxDistance: function () {\n\n\t\treturn this.panner.maxDistance;\n\n\t},\n\n\tsetMaxDistance: function ( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t\treturn this;\n\n\t},\n\n\tsetDirectionalCone: function ( coneInnerAngle, coneOuterAngle, coneOuterGain ) {\n\n\t\tthis.panner.coneInnerAngle = coneInnerAngle;\n\t\tthis.panner.coneOuterAngle = coneOuterAngle;\n\t\tthis.panner.coneOuterGain = coneOuterGain;\n\n\t\treturn this;\n\n\t},\n\n\tupdateMatrixWorld: ( function () {\n\n\t\tvar position = new Vector3();\n\t\tvar quaternion = new Quaternion();\n\t\tvar scale = new Vector3();\n\n\t\tvar orientation = new Vector3();\n\n\t\treturn function updateMatrixWorld( force ) {\n\n\t\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\t\tvar panner = this.panner;\n\t\t\tthis.matrixWorld.decompose( position, quaternion, scale );\n\n\t\t\torientation.set( 0, 0, 1 ).applyQuaternion( quaternion );\n\n\t\t\tpanner.setPosition( position.x, position.y, position.z );\n\t\t\tpanner.setOrientation( orientation.x, orientation.y, orientation.z );\n\n\t\t};\n\n\t} )()\n\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AudioAnalyser( audio, fftSize ) {\n\n\tthis.analyser = audio.context.createAnalyser();\n\tthis.analyser.fftSize = fftSize !== undefined ? fftSize : 2048;\n\n\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\taudio.getOutput().connect( this.analyser );\n\n}\n\nObject.assign( AudioAnalyser.prototype, {\n\n\tgetFrequencyData: function () {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t},\n\n\tgetAverageFrequency: function () {\n\n\t\tvar value = 0, data = this.getFrequencyData();\n\n\t\tfor ( var i = 0; i < data.length; i ++ ) {\n\n\t\t\tvalue += data[ i ];\n\n\t\t}\n\n\t\treturn value / data.length;\n\n\t}\n\n} );\n\n/**\n *\n * Buffered scene graph property that allows weighted accumulation.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction PropertyMixer( binding, typeName, valueSize ) {\n\n\tthis.binding = binding;\n\tthis.valueSize = valueSize;\n\n\tvar bufferType = Float64Array,\n\t\tmixFunction;\n\n\tswitch ( typeName ) {\n\n\t\tcase 'quaternion':\n\t\t\tmixFunction = this._slerp;\n\t\t\tbreak;\n\n\t\tcase 'string':\n\t\tcase 'bool':\n\t\t\tbufferType = Array;\n\t\t\tmixFunction = this._select;\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tmixFunction = this._lerp;\n\n\t}\n\n\tthis.buffer = new bufferType( valueSize * 4 );\n\t// layout: [ incoming | accu0 | accu1 | orig ]\n\t//\n\t// interpolators can use .buffer as their .result\n\t// the data then goes to 'incoming'\n\t//\n\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t// the cumulative result and are compared to detect\n\t// changes\n\t//\n\t// 'orig' stores the original state of the property\n\n\tthis._mixBufferRegion = mixFunction;\n\n\tthis.cumulativeWeight = 0;\n\n\tthis.useCount = 0;\n\tthis.referenceCount = 0;\n\n}\n\nObject.assign( PropertyMixer.prototype, {\n\n\t// accumulate data in the 'incoming' region into 'accu<i>'\n\taccumulate: function ( accuIndex, weight ) {\n\n\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t// the weight and shouldn't have made the call in the first place\n\n\t\tvar buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tcurrentWeight = this.cumulativeWeight;\n\n\t\tif ( currentWeight === 0 ) {\n\n\t\t\t// accuN := incoming * weight\n\n\t\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\n\n\t\t\t}\n\n\t\t\tcurrentWeight = weight;\n\n\t\t} else {\n\n\t\t\t// accuN := accuN + incoming * weight\n\n\t\t\tcurrentWeight += weight;\n\t\t\tvar mix = weight / currentWeight;\n\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\n\n\t\t}\n\n\t\tthis.cumulativeWeight = currentWeight;\n\n\t},\n\n\t// apply the state of 'accu<i>' to the binding when accus differ\n\tapply: function ( accuIndex ) {\n\n\t\tvar stride = this.valueSize,\n\t\t\tbuffer = this.buffer,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tweight = this.cumulativeWeight,\n\n\t\t\tbinding = this.binding;\n\n\t\tthis.cumulativeWeight = 0;\n\n\t\tif ( weight < 1 ) {\n\n\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\tvar originalValueOffset = stride * 3;\n\n\t\t\tthis._mixBufferRegion(\n\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t}\n\n\t\tfor ( var i = stride, e = stride + stride; i !== e; ++ i ) {\n\n\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\n\n\t\t\t\t// value has changed -> update scene graph\n\n\t\t\t\tbinding.setValue( buffer, offset );\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remember the state of the bound property and copy it to both accus\n\tsaveOriginalState: function () {\n\n\t\tvar binding = this.binding;\n\n\t\tvar buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\n\t\t\toriginalValueOffset = stride * 3;\n\n\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\tfor ( var i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t}\n\n\t\tthis.cumulativeWeight = 0;\n\n\t},\n\n\t// apply the state previously taken via 'saveOriginalState' to the binding\n\trestoreOriginalState: function () {\n\n\t\tvar originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t},\n\n\n\t// mix functions\n\n\t_select: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tif ( t >= 0.5 ) {\n\n\t\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_slerp: function ( buffer, dstOffset, srcOffset, t ) {\n\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t );\n\n\t},\n\n\t_lerp: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tvar s = 1 - t;\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tvar j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n *\n * A reference to a real property in the scene graph.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\n// Characters [].:/ are reserved for track binding syntax.\nvar RESERVED_CHARS_RE = '\\\\[\\\\]\\\\.:\\\\/';\n\nfunction Composite( targetGroup, path, optionalParsedPath ) {\n\n\tvar parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path );\n\n\tthis._targetGroup = targetGroup;\n\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n}\n\nObject.assign( Composite.prototype, {\n\n\tgetValue: function ( array, offset ) {\n\n\t\tthis.bind(); // bind all binding\n\n\t\tvar firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\tbinding = this._bindings[ firstValidIndex ];\n\n\t\t// and only call .getValue on the first\n\t\tif ( binding !== undefined ) binding.getValue( array, offset );\n\n\t},\n\n\tsetValue: function ( array, offset ) {\n\n\t\tvar bindings = this._bindings;\n\n\t\tfor ( var i = this._targetGroup.nCachedObjects_,\n\t\t\t\t  n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].setValue( array, offset );\n\n\t\t}\n\n\t},\n\n\tbind: function () {\n\n\t\tvar bindings = this._bindings;\n\n\t\tfor ( var i = this._targetGroup.nCachedObjects_,\n\t\t\t\t  n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].bind();\n\n\t\t}\n\n\t},\n\n\tunbind: function () {\n\n\t\tvar bindings = this._bindings;\n\n\t\tfor ( var i = this._targetGroup.nCachedObjects_,\n\t\t\t\t  n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].unbind();\n\n\t\t}\n\n\t}\n\n} );\n\n\nfunction PropertyBinding( rootNode, path, parsedPath ) {\n\n\tthis.path = path;\n\tthis.parsedPath = parsedPath || PropertyBinding.parseTrackName( path );\n\n\tthis.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName ) || rootNode;\n\n\tthis.rootNode = rootNode;\n\n}\n\nObject.assign( PropertyBinding, {\n\n\tComposite: Composite,\n\n\tcreate: function ( root, path, parsedPath ) {\n\n\t\tif ( ! ( root && root.isAnimationObjectGroup ) ) {\n\n\t\t\treturn new PropertyBinding( root, path, parsedPath );\n\n\t\t} else {\n\n\t\t\treturn new PropertyBinding.Composite( root, path, parsedPath );\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Replaces spaces with underscores and removes unsupported characters from\n\t * node names, to ensure compatibility with parseTrackName().\n\t *\n\t * @param  {string} name Node name to be sanitized.\n\t * @return {string}\n\t */\n\tsanitizeNodeName: ( function () {\n\n\t\tvar reservedRe = new RegExp( '[' + RESERVED_CHARS_RE + ']', 'g' );\n\n\t\treturn function sanitizeNodeName( name ) {\n\n\t\t\treturn name.replace( /\\s/g, '_' ).replace( reservedRe, '' );\n\n\t\t};\n\n\t}() ),\n\n\tparseTrackName: function () {\n\n\t\t// Attempts to allow node names from any language. ES5's `\\w` regexp matches\n\t\t// only latin characters, and the unicode \\p{L} is not yet supported. So\n\t\t// instead, we exclude reserved characters and match everything else.\n\t\tvar wordChar = '[^' + RESERVED_CHARS_RE + ']';\n\t\tvar wordCharOrDot = '[^' + RESERVED_CHARS_RE.replace( '\\\\.', '' ) + ']';\n\n\t\t// Parent directories, delimited by '/' or ':'. Currently unused, but must\n\t\t// be matched to parse the rest of the track name.\n\t\tvar directoryRe = /((?:WC+[\\/:])*)/.source.replace( 'WC', wordChar );\n\n\t\t// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\n\t\tvar nodeRe = /(WCOD+)?/.source.replace( 'WCOD', wordCharOrDot );\n\n\t\t// Object on target node, and accessor. May not contain reserved\n\t\t// characters. Accessor may contain any character except closing bracket.\n\t\tvar objectRe = /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace( 'WC', wordChar );\n\n\t\t// Property and accessor. May not contain reserved characters. Accessor may\n\t\t// contain any non-bracket characters.\n\t\tvar propertyRe = /\\.(WC+)(?:\\[(.+)\\])?/.source.replace( 'WC', wordChar );\n\n\t\tvar trackRe = new RegExp( ''\n\t\t\t+ '^'\n\t\t\t+ directoryRe\n\t\t\t+ nodeRe\n\t\t\t+ objectRe\n\t\t\t+ propertyRe\n\t\t\t+ '$'\n\t\t);\n\n\t\tvar supportedObjectNames = [ 'material', 'materials', 'bones' ];\n\n\t\treturn function parseTrackName( trackName ) {\n\n\t\t\tvar matches = trackRe.exec( trackName );\n\n\t\t\tif ( ! matches ) {\n\n\t\t\t\tthrow new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName );\n\n\t\t\t}\n\n\t\t\tvar results = {\n\t\t\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\t\t\tnodeName: matches[ 2 ],\n\t\t\t\tobjectName: matches[ 3 ],\n\t\t\t\tobjectIndex: matches[ 4 ],\n\t\t\t\tpropertyName: matches[ 5 ], // required\n\t\t\t\tpropertyIndex: matches[ 6 ]\n\t\t\t};\n\n\t\t\tvar lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' );\n\n\t\t\tif ( lastDot !== undefined && lastDot !== - 1 ) {\n\n\t\t\t\tvar objectName = results.nodeName.substring( lastDot + 1 );\n\n\t\t\t\t// Object names must be checked against a whitelist. Otherwise, there\n\t\t\t\t// is no way to parse 'foo.bar.baz': 'baz' must be a property, but\n\t\t\t\t// 'bar' could be the objectName, or part of a nodeName (which can\n\t\t\t\t// include '.' characters).\n\t\t\t\tif ( supportedObjectNames.indexOf( objectName ) !== - 1 ) {\n\n\t\t\t\t\tresults.nodeName = results.nodeName.substring( 0, lastDot );\n\t\t\t\t\tresults.objectName = objectName;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\t\t\tthrow new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName );\n\n\t\t\t}\n\n\t\t\treturn results;\n\n\t\t};\n\n\t}(),\n\n\tfindNode: function ( root, nodeName ) {\n\n\t\tif ( ! nodeName || nodeName === \"\" || nodeName === \"root\" || nodeName === \".\" || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid ) {\n\n\t\t\treturn root;\n\n\t\t}\n\n\t\t// search into skeleton bones.\n\t\tif ( root.skeleton ) {\n\n\t\t\tvar bone = root.skeleton.getBoneByName( nodeName );\n\n\t\t\tif ( bone !== undefined ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// search into node subtree.\n\t\tif ( root.children ) {\n\n\t\t\tvar searchNodeSubtree = function ( children ) {\n\n\t\t\t\tfor ( var i = 0; i < children.length; i ++ ) {\n\n\t\t\t\t\tvar childNode = children[ i ];\n\n\t\t\t\t\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\n\n\t\t\t\t\t\treturn childNode;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar result = searchNodeSubtree( childNode.children );\n\n\t\t\t\t\tif ( result ) return result;\n\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\n\t\t\t};\n\n\t\t\tvar subTreeNode = searchNodeSubtree( root.children );\n\n\t\t\tif ( subTreeNode ) {\n\n\t\t\t\treturn subTreeNode;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n} );\n\nObject.assign( PropertyBinding.prototype, { // prototype, continued\n\n\t// these are used to \"bind\" a nonexistent property\n\t_getValue_unavailable: function () {},\n\t_setValue_unavailable: function () {},\n\n\tBindingType: {\n\t\tDirect: 0,\n\t\tEntireArray: 1,\n\t\tArrayElement: 2,\n\t\tHasFromToArray: 3\n\t},\n\n\tVersioning: {\n\t\tNone: 0,\n\t\tNeedsUpdate: 1,\n\t\tMatrixWorldNeedsUpdate: 2\n\t},\n\n\tGetterByBindingType: [\n\n\t\tfunction getValue_direct( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.node[ this.propertyName ];\n\n\t\t},\n\n\t\tfunction getValue_array( buffer, offset ) {\n\n\t\t\tvar source = this.resolvedProperty;\n\n\t\t\tfor ( var i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t\t}\n\n\t\t},\n\n\t\tfunction getValue_arrayElement( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t\t},\n\n\t\tfunction getValue_toArray( buffer, offset ) {\n\n\t\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t\t}\n\n\t],\n\n\tSetterByBindingTypeAndVersioning: [\n\n\t\t[\n\t\t\t// Direct\n\n\t\t\tfunction setValue_direct( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// EntireArray\n\n\t\t\tfunction setValue_array( buffer, offset ) {\n\n\t\t\t\tvar dest = this.resolvedProperty;\n\n\t\t\t\tfor ( var i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tvar dest = this.resolvedProperty;\n\n\t\t\t\tfor ( var i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tvar dest = this.resolvedProperty;\n\n\t\t\t\tfor ( var i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// ArrayElement\n\n\t\t\tfunction setValue_arrayElement( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// HasToFromArray\n\n\t\t\tfunction setValue_fromArray( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t]\n\n\t],\n\n\tgetValue: function getValue_unbound( targetArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.getValue( targetArray, offset );\n\n\t\t// Note: This class uses a State pattern on a per-method basis:\n\t\t// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n\t\t// prototype version of these methods with one that represents\n\t\t// the bound state. When the property is not found, the methods\n\t\t// become no-ops.\n\n\t},\n\n\tsetValue: function getValue_unbound( sourceArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.setValue( sourceArray, offset );\n\n\t},\n\n\t// create getter / setter pair for a property in the scene graph\n\tbind: function () {\n\n\t\tvar targetObject = this.node,\n\t\t\tparsedPath = this.parsedPath,\n\n\t\t\tobjectName = parsedPath.objectName,\n\t\t\tpropertyName = parsedPath.propertyName,\n\t\t\tpropertyIndex = parsedPath.propertyIndex;\n\n\t\tif ( ! targetObject ) {\n\n\t\t\ttargetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName ) || this.rootNode;\n\n\t\t\tthis.node = targetObject;\n\n\t\t}\n\n\t\t// set fail state so we can just 'return' on error\n\t\tthis.getValue = this._getValue_unavailable;\n\t\tthis.setValue = this._setValue_unavailable;\n\n\t\t// ensure there is a value node\n\t\tif ( ! targetObject ) {\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\\'t found.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( objectName ) {\n\n\t\t\tvar objectIndex = parsedPath.objectIndex;\n\n\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\n\t\t\tswitch ( objectName ) {\n\n\t\t\t\tcase 'materials':\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.materials ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.materials;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bones':\n\n\t\t\t\t\tif ( ! targetObject.skeleton ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t// and convert the integer string to a true integer.\n\n\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\n\n\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\tfor ( var i = 0; i < targetObject.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\n\n\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[ objectName ];\n\n\t\t\t}\n\n\n\t\t\tif ( objectIndex !== undefined ) {\n\n\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\ttargetObject = targetObject[ objectIndex ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// resolve property\n\t\tvar nodeProperty = targetObject[ propertyName ];\n\n\t\tif ( nodeProperty === undefined ) {\n\n\t\t\tvar nodeName = parsedPath.nodeName;\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +\n\t\t\t\t'.' + propertyName + ' but it wasn\\'t found.', targetObject );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// determine versioning scheme\n\t\tvar versioning = this.Versioning.None;\n\n\t\tif ( targetObject.needsUpdate !== undefined ) { // material\n\n\t\t\tversioning = this.Versioning.NeedsUpdate;\n\t\t\tthis.targetObject = targetObject;\n\n\t\t} else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform\n\n\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\t\t\tthis.targetObject = targetObject;\n\n\t\t}\n\n\t\t// determine how the property gets bound\n\t\tvar bindingType = this.BindingType.Direct;\n\n\t\tif ( propertyIndex !== undefined ) {\n\n\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\n\t\t\tif ( propertyName === \"morphTargetInfluences\" ) {\n\n\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\n\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\tif ( ! targetObject.geometry ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( targetObject.geometry.isBufferGeometry ) {\n\n\t\t\t\t\tif ( ! targetObject.geometry.morphAttributes ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( var i = 0; i < this.node.geometry.morphAttributes.position.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject.geometry.morphAttributes.position[ i ].name === propertyIndex ) {\n\n\t\t\t\t\t\t\tpropertyIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( ! targetObject.geometry.morphTargets ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphTargets.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( var i = 0; i < this.node.geometry.morphTargets.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject.geometry.morphTargets[ i ].name === propertyIndex ) {\n\n\t\t\t\t\t\t\tpropertyIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\n\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else if ( Array.isArray( nodeProperty ) ) {\n\n\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else {\n\n\t\t\tthis.propertyName = propertyName;\n\n\t\t}\n\n\t\t// select getter / setter\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t},\n\n\tunbind: function () {\n\n\t\tthis.node = null;\n\n\t\t// back to the prototype version of getValue / setValue\n\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n} );\n\n//!\\ DECLARE ALIAS AFTER assign prototype !\nObject.assign( PropertyBinding.prototype, {\n\n\t// initial state of these methods that calls 'bind'\n\t_getValue_unbound: PropertyBinding.prototype.getValue,\n\t_setValue_unbound: PropertyBinding.prototype.setValue,\n\n} );\n\n/**\n *\n * A group of objects that receives a shared animation state.\n *\n * Usage:\n *\n * \t-\tAdd objects you would otherwise pass as 'root' to the\n * \t\tconstructor or the .clipAction method of AnimationMixer.\n *\n * \t-\tInstead pass this object as 'root'.\n *\n * \t-\tYou can also add and remove objects later when the mixer\n * \t\tis running.\n *\n * Note:\n *\n *  \tObjects of this class appear as one object to the mixer,\n *  \tso cache control of the individual objects must be done\n *  \ton the group.\n *\n * Limitation:\n *\n * \t- \tThe animated properties must be compatible among the\n * \t\tall objects in the group.\n *\n *  -\tA single property can either be controlled through a\n *  \ttarget group or directly, but not both.\n *\n * @author tschw\n */\n\nfunction AnimationObjectGroup() {\n\n\tthis.uuid = _Math.generateUUID();\n\n\t// cached objects followed by the active ones\n\tthis._objects = Array.prototype.slice.call( arguments );\n\n\tthis.nCachedObjects_ = 0;\t\t\t// threshold\n\t// note: read by PropertyBinding.Composite\n\n\tvar indices = {};\n\tthis._indicesByUUID = indices;\t\t// for bookkeeping\n\n\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t}\n\n\tthis._paths = [];\t\t\t\t\t// inside: string\n\tthis._parsedPaths = [];\t\t\t\t// inside: { we don't care, here }\n\tthis._bindings = []; \t\t\t\t// inside: Array< PropertyBinding >\n\tthis._bindingsIndicesByPath = {}; \t// inside: indices in these arrays\n\n\tvar scope = this;\n\n\tthis.stats = {\n\n\t\tobjects: {\n\t\t\tget total() {\n\n\t\t\t\treturn scope._objects.length;\n\n\t\t\t},\n\t\t\tget inUse() {\n\n\t\t\t\treturn this.total - scope.nCachedObjects_;\n\n\t\t\t}\n\t\t},\n\t\tget bindingsPerObject() {\n\n\t\t\treturn scope._bindings.length;\n\n\t\t}\n\n\t};\n\n}\n\nObject.assign( AnimationObjectGroup.prototype, {\n\n\tisAnimationObjectGroup: true,\n\n\tadd: function () {\n\n\t\tvar objects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tpaths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length,\n\t\t\tknownObject = undefined;\n\n\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tvar object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index === undefined ) {\n\n\t\t\t\t// unknown object -> add it to the ACTIVE region\n\n\t\t\t\tindex = nObjects ++;\n\t\t\t\tindicesByUUID[ uuid ] = index;\n\t\t\t\tobjects.push( object );\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tbindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) );\n\n\t\t\t\t}\n\n\t\t\t} else if ( index < nCachedObjects ) {\n\n\t\t\t\tknownObject = objects[ index ];\n\n\t\t\t\t// move existing object to the ACTIVE region\n\n\t\t\t\tvar firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\n\n\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\n\t\t\t\tobjects[ firstActiveIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tvar bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\n\t\t\t\t\tif ( binding === undefined ) {\n\n\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t// or may not exist\n\n\t\t\t\t\t\tbinding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t} else if ( objects[ index ] !== knownObject ) {\n\n\t\t\t\tconsole.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' +\n\t\t\t\t\t\t'detected. Clean the caches or recreate your infrastructure when reloading scenes.' );\n\n\t\t\t} // else the object is already where we want it to be\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\tremove: function () {\n\n\t\tvar objects = this._objects,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tvar object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\n\n\t\t\t\t// move existing object into the CACHED region\n\n\t\t\t\tvar lastCachedIndex = nCachedObjects ++,\n\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\n\n\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = firstActiveObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\n\t\t\t\tobjects[ lastCachedIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tvar bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = firstActive;\n\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// remove & forget\n\tuncache: function () {\n\n\t\tvar objects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tvar object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tdelete indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index < nCachedObjects ) {\n\n\t\t\t\t\t// object is cached, shrink the CACHED region\n\n\t\t\t\t\tvar firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\n\t\t\t\t\t\tlastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t// last cached object takes this object's place\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\t// last object goes to the activated slot and pop\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\n\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tvar bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\tlast = bindingsForPath[ lastIndex ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// object is active, just swap with the last and pop\n\n\t\t\t\t\tvar lastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tvar bindingsForPath = bindings[ j ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} // cached or active\n\n\t\t\t} // if object is known\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// Internal interface used by befriended PropertyBinding.Composite:\n\n\tsubscribe_: function ( path, parsedPath ) {\n\n\t\t// returns an array of bindings for the given path that is changed\n\t\t// according to the contained objects in the group\n\n\t\tvar indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ],\n\t\t\tbindings = this._bindings;\n\n\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\tvar paths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tobjects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tbindingsForPath = new Array( nObjects );\n\n\t\tindex = bindings.length;\n\n\t\tindicesByPath[ path ] = index;\n\n\t\tpaths.push( path );\n\t\tparsedPaths.push( parsedPath );\n\t\tbindings.push( bindingsForPath );\n\n\t\tfor ( var i = nCachedObjects, n = objects.length; i !== n; ++ i ) {\n\n\t\t\tvar object = objects[ i ];\n\t\t\tbindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath );\n\n\t\t}\n\n\t\treturn bindingsForPath;\n\n\t},\n\n\tunsubscribe_: function ( path ) {\n\n\t\t// tells the group to forget about a property path and no longer\n\t\t// update the array previously obtained with 'subscribe_'\n\n\t\tvar indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ];\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tvar paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\tbindings[ index ] = lastBindings;\n\t\t\tbindings.pop();\n\n\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\tparsedPaths.pop();\n\n\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\tpaths.pop();\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n *\n * Action provided by AnimationMixer for scheduling clip playback on specific\n * objects.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n *\n */\n\nfunction AnimationAction( mixer, clip, localRoot ) {\n\n\tthis._mixer = mixer;\n\tthis._clip = clip;\n\tthis._localRoot = localRoot || null;\n\n\tvar tracks = clip.tracks,\n\t\tnTracks = tracks.length,\n\t\tinterpolants = new Array( nTracks );\n\n\tvar interpolantSettings = {\n\t\tendingStart: ZeroCurvatureEnding,\n\t\tendingEnd: ZeroCurvatureEnding\n\t};\n\n\tfor ( var i = 0; i !== nTracks; ++ i ) {\n\n\t\tvar interpolant = tracks[ i ].createInterpolant( null );\n\t\tinterpolants[ i ] = interpolant;\n\t\tinterpolant.settings = interpolantSettings;\n\n\t}\n\n\tthis._interpolantSettings = interpolantSettings;\n\n\tthis._interpolants = interpolants;\t// bound by the mixer\n\n\t// inside: PropertyMixer (managed by the mixer)\n\tthis._propertyBindings = new Array( nTracks );\n\n\tthis._cacheIndex = null;\t\t\t// for the memory manager\n\tthis._byClipCacheIndex = null;\t\t// for the memory manager\n\n\tthis._timeScaleInterpolant = null;\n\tthis._weightInterpolant = null;\n\n\tthis.loop = LoopRepeat;\n\tthis._loopCount = - 1;\n\n\t// global mixer time when the action is to be started\n\t// it's set back to 'null' upon start of the action\n\tthis._startTime = null;\n\n\t// scaled local time of the action\n\t// gets clamped or wrapped to 0..clip.duration according to loop\n\tthis.time = 0;\n\n\tthis.timeScale = 1;\n\tthis._effectiveTimeScale = 1;\n\n\tthis.weight = 1;\n\tthis._effectiveWeight = 1;\n\n\tthis.repetitions = Infinity; \t\t// no. of repetitions when looping\n\n\tthis.paused = false;\t\t\t\t// true -> zero effective time scale\n\tthis.enabled = true;\t\t\t\t// false -> zero effective weight\n\n\tthis.clampWhenFinished \t= false;\t// keep feeding the last frame?\n\n\tthis.zeroSlopeAtStart \t= true;\t\t// for smooth interpolation w/o separate\n\tthis.zeroSlopeAtEnd\t\t= true;\t\t// clips for start, loop and end\n\n}\n\nObject.assign( AnimationAction.prototype, {\n\n\t// State & Scheduling\n\n\tplay: function () {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t},\n\n\tstop: function () {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t},\n\n\treset: function () {\n\n\t\tthis.paused = false;\n\t\tthis.enabled = true;\n\n\t\tthis.time = 0;\t\t\t// restart clip\n\t\tthis._loopCount = - 1;\t// forget previous loops\n\t\tthis._startTime = null;\t// forget scheduling\n\n\t\treturn this.stopFading().stopWarping();\n\n\t},\n\n\tisRunning: function () {\n\n\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t},\n\n\t// return true when play has been called\n\tisScheduled: function () {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t},\n\n\tstartAt: function ( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t},\n\n\tsetLoop: function ( mode, repetitions ) {\n\n\t\tthis.loop = mode;\n\t\tthis.repetitions = repetitions;\n\n\t\treturn this;\n\n\t},\n\n\t// Weight\n\n\t// set the weight stopping any scheduled fading\n\t// although .enabled = false yields an effective weight of zero, this\n\t// method does *not* change .enabled, because it would be confusing\n\tsetEffectiveWeight: function ( weight ) {\n\n\t\tthis.weight = weight;\n\n\t\t// note: same logic as when updated at runtime\n\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\treturn this.stopFading();\n\n\t},\n\n\t// return the weight considering fading and .enabled\n\tgetEffectiveWeight: function () {\n\n\t\treturn this._effectiveWeight;\n\n\t},\n\n\tfadeIn: function ( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t},\n\n\tfadeOut: function ( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t},\n\n\tcrossFadeFrom: function ( fadeOutAction, duration, warp ) {\n\n\t\tfadeOutAction.fadeOut( duration );\n\t\tthis.fadeIn( duration );\n\n\t\tif ( warp ) {\n\n\t\t\tvar fadeInDuration = this._clip.duration,\n\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcrossFadeTo: function ( fadeInAction, duration, warp ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t},\n\n\tstopFading: function () {\n\n\t\tvar weightInterpolant = this._weightInterpolant;\n\n\t\tif ( weightInterpolant !== null ) {\n\n\t\t\tthis._weightInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Time Scale Control\n\n\t// set the time scale stopping any scheduled warping\n\t// although .paused = true yields an effective time scale of zero, this\n\t// method does *not* change .paused, because it would be confusing\n\tsetEffectiveTimeScale: function ( timeScale ) {\n\n\t\tthis.timeScale = timeScale;\n\t\tthis._effectiveTimeScale = this.paused ? 0 : timeScale;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\t// return the time scale considering warping and .paused\n\tgetEffectiveTimeScale: function () {\n\n\t\treturn this._effectiveTimeScale;\n\n\t},\n\n\tsetDuration: function ( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\tsyncWith: function ( action ) {\n\n\t\tthis.time = action.time;\n\t\tthis.timeScale = action.timeScale;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\thalt: function ( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t},\n\n\twarp: function ( startTimeScale, endTimeScale, duration ) {\n\n\t\tvar mixer = this._mixer, now = mixer.time,\n\t\t\tinterpolant = this._timeScaleInterpolant,\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._timeScaleInterpolant = interpolant;\n\n\t\t}\n\n\t\tvar times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\ttimes[ 1 ] = now + duration;\n\n\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\treturn this;\n\n\t},\n\n\tstopWarping: function () {\n\n\t\tvar timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\tthis._timeScaleInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Object Accessors\n\n\tgetMixer: function () {\n\n\t\treturn this._mixer;\n\n\t},\n\n\tgetClip: function () {\n\n\t\treturn this._clip;\n\n\t},\n\n\tgetRoot: function () {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t},\n\n\t// Interna\n\n\t_update: function ( time, deltaTime, timeDirection, accuIndex ) {\n\n\t\t// called by the mixer\n\n\t\tif ( ! this.enabled ) {\n\n\t\t\t// call ._updateWeight() to update ._effectiveWeight\n\n\t\t\tthis._updateWeight( time );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar startTime = this._startTime;\n\n\t\tif ( startTime !== null ) {\n\n\t\t\t// check for scheduled start of action\n\n\t\t\tvar timeRunning = ( time - startTime ) * timeDirection;\n\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\treturn; // yet to come / don't decide when delta = 0\n\n\t\t\t}\n\n\t\t\t// start\n\n\t\t\tthis._startTime = null; // unschedule\n\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t}\n\n\t\t// apply time scale and advance time\n\n\t\tdeltaTime *= this._updateTimeScale( time );\n\t\tvar clipTime = this._updateTime( deltaTime );\n\n\t\t// note: _updateTime may disable the action resulting in\n\t\t// an effective weight of 0\n\n\t\tvar weight = this._updateWeight( time );\n\n\t\tif ( weight > 0 ) {\n\n\t\t\tvar interpolants = this._interpolants;\n\t\t\tvar propertyMixers = this._propertyBindings;\n\n\t\t\tfor ( var j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_updateWeight: function ( time ) {\n\n\t\tvar weight = 0;\n\n\t\tif ( this.enabled ) {\n\n\t\t\tweight = this.weight;\n\t\t\tvar interpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tvar interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\tthis.enabled = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveWeight = weight;\n\t\treturn weight;\n\n\t},\n\n\t_updateTimeScale: function ( time ) {\n\n\t\tvar timeScale = 0;\n\n\t\tif ( ! this.paused ) {\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\t\tvar interpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tvar interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\tthis.timeScale = timeScale;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveTimeScale = timeScale;\n\t\treturn timeScale;\n\n\t},\n\n\t_updateTime: function ( deltaTime ) {\n\n\t\tvar time = this.time + deltaTime;\n\n\t\tif ( deltaTime === 0 ) return time;\n\n\t\tvar duration = this._clip.duration,\n\n\t\t\tloop = this.loop,\n\t\t\tloopCount = this._loopCount;\n\n\t\tif ( loop === LoopOnce ) {\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tthis._loopCount = 0;\n\t\t\t\tthis._setEndings( true, true, false );\n\n\t\t\t}\n\n\t\t\thandle_stop: {\n\n\t\t\t\tif ( time >= duration ) {\n\n\t\t\t\t\ttime = duration;\n\n\t\t\t\t} else if ( time < 0 ) {\n\n\t\t\t\t\ttime = 0;\n\n\t\t\t\t} else break handle_stop;\n\n\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\telse this.enabled = false;\n\n\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\tdirection: deltaTime < 0 ? - 1 : 1\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else { // repetitive Repeat or PingPong\n\n\t\t\tvar pingPong = ( loop === LoopPingPong );\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tif ( deltaTime >= 0 ) {\n\n\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\tthis._setEndings( true, this.repetitions === 0, pingPong );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t// so leave loopCount at -1\n\n\t\t\t\t\tthis._setEndings( this.repetitions === 0, true, pingPong );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( time >= duration || time < 0 ) {\n\n\t\t\t\t// wrap around\n\n\t\t\t\tvar loopDelta = Math.floor( time / duration ); // signed\n\t\t\t\ttime -= duration * loopDelta;\n\n\t\t\t\tloopCount += Math.abs( loopDelta );\n\n\t\t\t\tvar pending = this.repetitions - loopCount;\n\n\t\t\t\tif ( pending <= 0 ) {\n\n\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\n\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : - 1\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// keep running\n\n\t\t\t\t\tif ( pending === 1 ) {\n\n\t\t\t\t\t\t// entering the last round\n\n\t\t\t\t\t\tvar atStart = deltaTime < 0;\n\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\n\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\tthis.time = time;\n\t\t\t\treturn duration - time;\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.time = time;\n\t\treturn time;\n\n\t},\n\n\t_setEndings: function ( atStart, atEnd, pingPong ) {\n\n\t\tvar settings = this._interpolantSettings;\n\n\t\tif ( pingPong ) {\n\n\t\t\tsettings.endingStart \t= ZeroSlopeEnding;\n\t\t\tsettings.endingEnd\t\t= ZeroSlopeEnding;\n\n\t\t} else {\n\n\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\tif ( atStart ) {\n\n\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t\tif ( atEnd ) {\n\n\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_scheduleFading: function ( duration, weightNow, weightThen ) {\n\n\t\tvar mixer = this._mixer, now = mixer.time,\n\t\t\tinterpolant = this._weightInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._weightInterpolant = interpolant;\n\n\t\t}\n\n\t\tvar times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now; \t\t\t\tvalues[ 0 ] = weightNow;\n\t\ttimes[ 1 ] = now + duration;\tvalues[ 1 ] = weightThen;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n *\n * Player for AnimationClips.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction AnimationMixer( root ) {\n\n\tthis._root = root;\n\tthis._initMemoryManager();\n\tthis._accuIndex = 0;\n\n\tthis.time = 0;\n\n\tthis.timeScale = 1.0;\n\n}\n\nAnimationMixer.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: AnimationMixer,\n\n\t_bindAction: function ( action, prototypeAction ) {\n\n\t\tvar root = action._localRoot || this._root,\n\t\t\ttracks = action._clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tbindings = action._propertyBindings,\n\t\t\tinterpolants = action._interpolants,\n\t\t\trootUuid = root.uuid,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingsByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingsByName === undefined ) {\n\n\t\t\tbindingsByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\n\n\t\t}\n\n\t\tfor ( var i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tvar track = tracks[ i ],\n\t\t\t\ttrackName = track.name,\n\t\t\t\tbinding = bindingsByName[ trackName ];\n\n\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t} else {\n\n\t\t\t\tbinding = bindings[ i ];\n\n\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\t// existing binding, make sure the cache knows\n\n\t\t\t\t\tif ( binding._cacheIndex === null ) {\n\n\t\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tvar path = prototypeAction && prototypeAction.\n\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\n\n\t\t\t\tbinding = new PropertyMixer(\n\t\t\t\t\tPropertyBinding.create( root, trackName, path ),\n\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t}\n\n\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\n\n\t\t}\n\n\t},\n\n\t_activateAction: function ( action ) {\n\n\t\tif ( ! this._isActiveAction( action ) ) {\n\n\t\t\tif ( action._cacheIndex === null ) {\n\n\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t// appears to be still using it -> rebind\n\n\t\t\t\tvar rootUuid = ( action._localRoot || this._root ).uuid,\n\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\t\tthis._bindAction( action,\n\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\n\n\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\n\n\t\t\t}\n\n\t\t\tvar bindings = action._propertyBindings;\n\n\t\t\t// increment reference counts / sort out state\n\t\t\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tvar binding = bindings[ i ];\n\n\t\t\t\tif ( binding.useCount ++ === 0 ) {\n\n\t\t\t\t\tthis._lendBinding( binding );\n\t\t\t\t\tbinding.saveOriginalState();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._lendAction( action );\n\n\t\t}\n\n\t},\n\n\t_deactivateAction: function ( action ) {\n\n\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\tvar bindings = action._propertyBindings;\n\n\t\t\t// decrement reference counts / sort out state\n\t\t\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tvar binding = bindings[ i ];\n\n\t\t\t\tif ( -- binding.useCount === 0 ) {\n\n\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\tthis._takeBackBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._takeBackAction( action );\n\n\t\t}\n\n\t},\n\n\t// Memory manager\n\n\t_initMemoryManager: function () {\n\n\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\t\tthis._nActiveActions = 0;\n\n\t\tthis._actionsByClip = {};\n\t\t// inside:\n\t\t// {\n\t\t// \t\tknownActions: Array< AnimationAction >\t- used as prototypes\n\t\t// \t\tactionByRoot: AnimationAction\t\t\t- lookup\n\t\t// }\n\n\n\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\t\tthis._nActiveBindings = 0;\n\n\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\n\t\tthis._controlInterpolants = []; // same game as above\n\t\tthis._nActiveControlInterpolants = 0;\n\n\t\tvar scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tactions: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._actions.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveActions;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tbindings: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._bindings.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveBindings;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tcontrolInterpolants: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._controlInterpolants.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveControlInterpolants;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t},\n\n\t// Memory management for AnimationAction objects\n\n\t_isActiveAction: function ( action ) {\n\n\t\tvar index = action._cacheIndex;\n\t\treturn index !== null && index < this._nActiveActions;\n\n\t},\n\n\t_addInactiveAction: function ( action, clipUuid, rootUuid ) {\n\n\t\tvar actions = this._actions,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip === undefined ) {\n\n\t\t\tactionsForClip = {\n\n\t\t\t\tknownActions: [ action ],\n\t\t\t\tactionByRoot: {}\n\n\t\t\t};\n\n\t\t\taction._byClipCacheIndex = 0;\n\n\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\n\n\t\t} else {\n\n\t\t\tvar knownActions = actionsForClip.knownActions;\n\n\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\tknownActions.push( action );\n\n\t\t}\n\n\t\taction._cacheIndex = actions.length;\n\t\tactions.push( action );\n\n\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\n\n\t},\n\n\t_removeInactiveAction: function ( action ) {\n\n\t\tvar actions = this._actions,\n\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\n\t\t\tcacheIndex = action._cacheIndex;\n\n\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\tactions.pop();\n\n\t\taction._cacheIndex = null;\n\n\n\t\tvar clipUuid = action._clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ],\n\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\n\t\t\tlastKnownAction =\n\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\n\n\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\n\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\n\t\tknownActionsForClip.pop();\n\n\t\taction._byClipCacheIndex = null;\n\n\n\t\tvar actionByRoot = actionsForClip.actionByRoot,\n\t\t\trootUuid = ( action._localRoot || this._root ).uuid;\n\n\t\tdelete actionByRoot[ rootUuid ];\n\n\t\tif ( knownActionsForClip.length === 0 ) {\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t\tthis._removeInactiveBindingsForAction( action );\n\n\t},\n\n\t_removeInactiveBindingsForAction: function ( action ) {\n\n\t\tvar bindings = action._propertyBindings;\n\t\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tvar binding = bindings[ i ];\n\n\t\t\tif ( -- binding.referenceCount === 0 ) {\n\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_lendAction: function ( action ) {\n\n\t\t// [ active actions |  inactive actions  ]\n\t\t// [  active actions >| inactive actions ]\n\t\t//                 s        a\n\t\t//                  <-swap->\n\t\t//                 a        s\n\n\t\tvar actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveActions ++,\n\n\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\n\n\t\taction._cacheIndex = lastActiveIndex;\n\t\tactions[ lastActiveIndex ] = action;\n\n\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = firstInactiveAction;\n\n\t},\n\n\t_takeBackAction: function ( action ) {\n\n\t\t// [  active actions  | inactive actions ]\n\t\t// [ active actions |< inactive actions  ]\n\t\t//        a        s\n\t\t//         <-swap->\n\t\t//        s        a\n\n\t\tvar actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveActions,\n\n\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\n\n\t\taction._cacheIndex = firstInactiveIndex;\n\t\tactions[ firstInactiveIndex ] = action;\n\n\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = lastActiveAction;\n\n\t},\n\n\t// Memory management for PropertyMixer objects\n\n\t_addInactiveBinding: function ( binding, rootUuid, trackName ) {\n\n\t\tvar bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tbindings = this._bindings;\n\n\t\tif ( bindingByName === undefined ) {\n\n\t\t\tbindingByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\n\n\t\t}\n\n\t\tbindingByName[ trackName ] = binding;\n\n\t\tbinding._cacheIndex = bindings.length;\n\t\tbindings.push( binding );\n\n\t},\n\n\t_removeInactiveBinding: function ( binding ) {\n\n\t\tvar bindings = this._bindings,\n\t\t\tpropBinding = binding.binding,\n\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\ttrackName = propBinding.path,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\n\t\t\tcacheIndex = binding._cacheIndex;\n\n\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\tbindings[ cacheIndex ] = lastInactiveBinding;\n\t\tbindings.pop();\n\n\t\tdelete bindingByName[ trackName ];\n\n\t\tremove_empty_map: {\n\n\t\t\tfor ( var _ in bindingByName ) break remove_empty_map; // eslint-disable-line no-unused-vars\n\n\t\t\tdelete bindingsByRoot[ rootUuid ];\n\n\t\t}\n\n\t},\n\n\t_lendBinding: function ( binding ) {\n\n\t\tvar bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveBindings ++,\n\n\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\n\n\t\tbinding._cacheIndex = lastActiveIndex;\n\t\tbindings[ lastActiveIndex ] = binding;\n\n\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = firstInactiveBinding;\n\n\t},\n\n\t_takeBackBinding: function ( binding ) {\n\n\t\tvar bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\n\n\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\n\n\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\tbindings[ firstInactiveIndex ] = binding;\n\n\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = lastActiveBinding;\n\n\t},\n\n\n\t// Memory management of Interpolants for weight and time scale\n\n\t_lendControlInterpolant: function () {\n\n\t\tvar interpolants = this._controlInterpolants,\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++,\n\t\t\tinterpolant = interpolants[ lastActiveIndex ];\n\n\t\tif ( interpolant === undefined ) {\n\n\t\t\tinterpolant = new LinearInterpolant(\n\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\n\t\t\t\t1, this._controlInterpolantsResultBuffer );\n\n\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\n\n\t\t}\n\n\t\treturn interpolant;\n\n\t},\n\n\t_takeBackControlInterpolant: function ( interpolant ) {\n\n\t\tvar interpolants = this._controlInterpolants,\n\t\t\tprevIndex = interpolant.__cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\n\n\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\n\n\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\tinterpolants[ firstInactiveIndex ] = interpolant;\n\n\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\n\n\t},\n\n\t_controlInterpolantsResultBuffer: new Float32Array( 1 ),\n\n\t// return an action for a clip optionally using a custom root target\n\t// object (this method allocates a lot of dynamic memory in case a\n\t// previously unknown clip/root combination is specified)\n\tclipAction: function ( clip, optionalRoot ) {\n\n\t\tvar root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject !== null ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ],\n\t\t\tprototypeAction = null;\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\tvar existingAction =\n\t\t\t\t\tactionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\tif ( existingAction !== undefined ) {\n\n\t\t\t\treturn existingAction;\n\n\t\t\t}\n\n\t\t\t// we know the clip, so we don't have to parse all\n\t\t\t// the bindings again but can just copy\n\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\n\n\t\t\t// also, take the clip from the prototype action\n\t\t\tif ( clipObject === null )\n\t\t\t\tclipObject = prototypeAction._clip;\n\n\t\t}\n\n\t\t// clip must be known when specified via string\n\t\tif ( clipObject === null ) return null;\n\n\t\t// allocate all resources required to run it\n\t\tvar newAction = new AnimationAction( this, clipObject, optionalRoot );\n\n\t\tthis._bindAction( newAction, prototypeAction );\n\n\t\t// and make the action known to the memory manager\n\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\n\n\t\treturn newAction;\n\n\t},\n\n\t// get an existing action\n\texistingAction: function ( clip, optionalRoot ) {\n\n\t\tvar root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\t// deactivates all previously scheduled actions\n\tstopAllAction: function () {\n\n\t\tvar actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tthis._nActiveActions = 0;\n\t\tthis._nActiveBindings = 0;\n\n\t\tfor ( var i = 0; i !== nActions; ++ i ) {\n\n\t\t\tactions[ i ].reset();\n\n\t\t}\n\n\t\tfor ( var i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].useCount = 0;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// advance the time and update apply the animation\n\tupdate: function ( deltaTime ) {\n\n\t\tdeltaTime *= this.timeScale;\n\n\t\tvar actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\n\t\t\ttime = this.time += deltaTime,\n\t\t\ttimeDirection = Math.sign( deltaTime ),\n\n\t\t\taccuIndex = this._accuIndex ^= 1;\n\n\t\t// run active actions\n\n\t\tfor ( var i = 0; i !== nActions; ++ i ) {\n\n\t\t\tvar action = actions[ i ];\n\n\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\n\n\t\t}\n\n\t\t// update scene graph\n\n\t\tvar bindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tfor ( var i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].apply( accuIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// return this mixer's root target object\n\tgetRoot: function () {\n\n\t\treturn this._root;\n\n\t},\n\n\t// free all resources specific to a particular clip\n\tuncacheClip: function ( clip ) {\n\n\t\tvar actions = this._actions,\n\t\t\tclipUuid = clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t// iteration state and also require updating the state we can\n\t\t\t// just throw away\n\n\t\t\tvar actionsToRemove = actionsForClip.knownActions;\n\n\t\t\tfor ( var i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\tvar action = actionsToRemove[ i ];\n\n\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\tvar cacheIndex = action._cacheIndex,\n\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\n\n\t\t\t\taction._cacheIndex = null;\n\t\t\t\taction._byClipCacheIndex = null;\n\n\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\t\tactions.pop();\n\n\t\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t\t}\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t},\n\n\t// free all resources specific to a particular root target object\n\tuncacheRoot: function ( root ) {\n\n\t\tvar rootUuid = root.uuid,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tfor ( var clipUuid in actionsByClip ) {\n\n\t\t\tvar actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\n\t\t\t\taction = actionByRoot[ rootUuid ];\n\n\t\t\tif ( action !== undefined ) {\n\n\t\t\t\tthis._deactivateAction( action );\n\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName !== undefined ) {\n\n\t\t\tfor ( var trackName in bindingByName ) {\n\n\t\t\t\tvar binding = bindingByName[ trackName ];\n\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remove a targeted clip from the cache\n\tuncacheAction: function ( clip, optionalRoot ) {\n\n\t\tvar action = this.existingAction( clip, optionalRoot );\n\n\t\tif ( action !== null ) {\n\n\t\t\tthis._deactivateAction( action );\n\t\t\tthis._removeInactiveAction( action );\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Uniform( value ) {\n\n\tif ( typeof value === 'string' ) {\n\n\t\tconsole.warn( 'THREE.Uniform: Type parameter is no longer needed.' );\n\t\tvalue = arguments[ 1 ];\n\n\t}\n\n\tthis.value = value;\n\n}\n\nUniform.prototype.clone = function () {\n\n\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\n\n};\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedBufferGeometry() {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'InstancedBufferGeometry';\n\tthis.maxInstancedCount = undefined;\n\n}\n\nInstancedBufferGeometry.prototype = Object.assign( Object.create( BufferGeometry.prototype ), {\n\n\tconstructor: InstancedBufferGeometry,\n\n\tisInstancedBufferGeometry: true,\n\n\tcopy: function ( source ) {\n\n\t\tBufferGeometry.prototype.copy.call( this, source );\n\n\t\tthis.maxInstancedCount = source.maxInstancedCount;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n} );\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InterleavedBufferAttribute( interleavedBuffer, itemSize, offset, normalized ) {\n\n\tthis.data = interleavedBuffer;\n\tthis.itemSize = itemSize;\n\tthis.offset = offset;\n\n\tthis.normalized = normalized === true;\n\n}\n\nObject.defineProperties( InterleavedBufferAttribute.prototype, {\n\n\tcount: {\n\n\t\tget: function () {\n\n\t\t\treturn this.data.count;\n\n\t\t}\n\n\t},\n\n\tarray: {\n\n\t\tget: function () {\n\n\t\t\treturn this.data.array;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( InterleavedBufferAttribute.prototype, {\n\n\tisInterleavedBufferAttribute: true,\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset ];\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\t\tthis.data.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InterleavedBuffer( array, stride ) {\n\n\tthis.array = array;\n\tthis.stride = stride;\n\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\tthis.dynamic = false;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n}\n\nObject.defineProperty( InterleavedBuffer.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nObject.assign( InterleavedBuffer.prototype, {\n\n\tisInterleavedBuffer: true,\n\n\tonUploadCallback: function () {},\n\n\tsetArray: function ( array ) {\n\n\t\tif ( Array.isArray( array ) ) {\n\n\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t}\n\n\t\tthis.count = array !== undefined ? array.length / this.stride : 0;\n\t\tthis.array = array;\n\n\t\treturn this;\n\n\t},\n\n\tsetDynamic: function ( value ) {\n\n\t\tthis.dynamic = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.count = source.count;\n\t\tthis.stride = source.stride;\n\t\tthis.dynamic = source.dynamic;\n\n\t\treturn this;\n\n\t},\n\n\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.stride;\n\t\tindex2 *= attribute.stride;\n\n\t\tfor ( var i = 0, l = this.stride; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tonUpload: function ( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedInterleavedBuffer( array, stride, meshPerAttribute ) {\n\n\tInterleavedBuffer.call( this, array, stride );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedInterleavedBuffer.prototype = Object.assign( Object.create( InterleavedBuffer.prototype ), {\n\n\tconstructor: InstancedInterleavedBuffer,\n\n\tisInstancedInterleavedBuffer: true,\n\n\tcopy: function ( source ) {\n\n\t\tInterleavedBuffer.prototype.copy.call( this, source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedBufferAttribute( array, itemSize, meshPerAttribute ) {\n\n\tBufferAttribute.call( this, array, itemSize );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedBufferAttribute.prototype = Object.assign( Object.create( BufferAttribute.prototype ), {\n\n\tconstructor: InstancedBufferAttribute,\n\n\tisInstancedBufferAttribute: true,\n\n\tcopy: function ( source ) {\n\n\t\tBufferAttribute.prototype.copy.call( this, source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author bhouston / http://clara.io/\n * @author stephomi / http://stephaneginier.com/\n */\n\nfunction Raycaster( origin, direction, near, far ) {\n\n\tthis.ray = new Ray( origin, direction );\n\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\tthis.near = near || 0;\n\tthis.far = far || Infinity;\n\n\tthis.params = {\n\t\tMesh: {},\n\t\tLine: {},\n\t\tLOD: {},\n\t\tPoints: { threshold: 1 },\n\t\tSprite: {}\n\t};\n\n\tObject.defineProperties( this.params, {\n\t\tPointCloud: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.Raycaster: params.PointCloud has been renamed to params.Points.' );\n\t\t\t\treturn this.Points;\n\n\t\t\t}\n\t\t}\n\t} );\n\n}\n\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersectObject( object, raycaster, intersects, recursive ) {\n\n\tif ( object.visible === false ) return;\n\n\tobject.raycast( raycaster, intersects );\n\n\tif ( recursive === true ) {\n\n\t\tvar children = object.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\nObject.assign( Raycaster.prototype, {\n\n\tlinePrecision: 1,\n\n\tset: function ( origin, direction ) {\n\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.ray.set( origin, direction );\n\n\t},\n\n\tsetFromCamera: function ( coords, camera ) {\n\n\t\tif ( ( camera && camera.isPerspectiveCamera ) ) {\n\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\n\t\t} else if ( ( camera && camera.isOrthographicCamera ) ) {\n\n\t\t\tthis.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera\n\t\t\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type.' );\n\n\t\t}\n\n\t},\n\n\tintersectObject: function ( object, recursive, optionalTarget ) {\n\n\t\tvar intersects = optionalTarget || [];\n\n\t\tintersectObject( object, this, intersects, recursive );\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t},\n\n\tintersectObjects: function ( objects, recursive, optionalTarget ) {\n\n\t\tvar intersects = optionalTarget || [];\n\n\t\tif ( Array.isArray( objects ) === false ) {\n\n\t\t\tconsole.warn( 'THREE.Raycaster.intersectObjects: objects is not an Array.' );\n\t\t\treturn intersects;\n\n\t\t}\n\n\t\tfor ( var i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( objects[ i ], this, intersects, recursive );\n\n\t\t}\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Clock( autoStart ) {\n\n\tthis.autoStart = ( autoStart !== undefined ) ? autoStart : true;\n\n\tthis.startTime = 0;\n\tthis.oldTime = 0;\n\tthis.elapsedTime = 0;\n\n\tthis.running = false;\n\n}\n\nObject.assign( Clock.prototype, {\n\n\tstart: function () {\n\n\t\tthis.startTime = ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t},\n\n\tstop: function () {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\t\tthis.autoStart = false;\n\n\t},\n\n\tgetElapsedTime: function () {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t},\n\n\tgetDelta: function () {\n\n\t\tvar diff = 0;\n\n\t\tif ( this.autoStart && ! this.running ) {\n\n\t\t\tthis.start();\n\t\t\treturn 0;\n\n\t\t}\n\n\t\tif ( this.running ) {\n\n\t\t\tvar newTime = ( typeof performance === 'undefined' ? Date : performance ).now();\n\n\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\tthis.oldTime = newTime;\n\n\t\t\tthis.elapsedTime += diff;\n\n\t\t}\n\n\t\treturn diff;\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n *\n * The poles (phi) are at the positive and negative y axis.\n * The equator starts at positive z.\n */\n\nfunction Spherical( radius, phi, theta ) {\n\n\tthis.radius = ( radius !== undefined ) ? radius : 1.0;\n\tthis.phi = ( phi !== undefined ) ? phi : 0; // up / down towards top and bottom pole\n\tthis.theta = ( theta !== undefined ) ? theta : 0; // around the equator of the sphere\n\n\treturn this;\n\n}\n\nObject.assign( Spherical.prototype, {\n\n\tset: function ( radius, phi, theta ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi;\n\t\tthis.theta = theta;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.phi = other.phi;\n\t\tthis.theta = other.theta;\n\n\t\treturn this;\n\n\t},\n\n\t// restrict phi to be betwee EPS and PI-EPS\n\tmakeSafe: function () {\n\n\t\tvar EPS = 0.000001;\n\t\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromVector3: function ( vec3 ) {\n\n\t\tthis.radius = vec3.length();\n\n\t\tif ( this.radius === 0 ) {\n\n\t\t\tthis.theta = 0;\n\t\t\tthis.phi = 0;\n\n\t\t} else {\n\n\t\t\tthis.theta = Math.atan2( vec3.x, vec3.z ); // equator angle around y-up axis\n\t\t\tthis.phi = Math.acos( _Math.clamp( vec3.y / this.radius, - 1, 1 ) ); // polar angle\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n *\n * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\n *\n */\n\nfunction Cylindrical( radius, theta, y ) {\n\n\tthis.radius = ( radius !== undefined ) ? radius : 1.0; // distance from the origin to a point in the x-z plane\n\tthis.theta = ( theta !== undefined ) ? theta : 0; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\n\tthis.y = ( y !== undefined ) ? y : 0; // height above the x-z plane\n\n\treturn this;\n\n}\n\nObject.assign( Cylindrical.prototype, {\n\n\tset: function ( radius, theta, y ) {\n\n\t\tthis.radius = radius;\n\t\tthis.theta = theta;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.theta = other.theta;\n\t\tthis.y = other.y;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromVector3: function ( vec3 ) {\n\n\t\tthis.radius = Math.sqrt( vec3.x * vec3.x + vec3.z * vec3.z );\n\t\tthis.theta = Math.atan2( vec3.x, vec3.z );\n\t\tthis.y = vec3.y;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Box2( min, max ) {\n\n\tthis.min = ( min !== undefined ) ? min : new Vector2( + Infinity, + Infinity );\n\tthis.max = ( max !== undefined ) ? max : new Vector2( - Infinity, - Infinity );\n\n}\n\nObject.assign( Box2.prototype, {\n\n\tset: function ( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCenterAndSize: function () {\n\n\t\tvar v1 = new Vector2();\n\n\t\treturn function setFromCenterAndSize( center, size ) {\n\n\t\t\tvar halfSize = v1.copy( size ).multiplyScalar( 0.5 );\n\t\t\tthis.min.copy( center ).sub( halfSize );\n\t\t\tthis.max.copy( center ).add( halfSize );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.min.x = this.min.y = + Infinity;\n\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getCenter() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t},\n\n\tgetSize: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getSize() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t},\n\n\texpandByPoint: function ( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t},\n\n\texpandByVector: function ( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t},\n\n\texpandByScalar: function ( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ? false : true;\n\n\t},\n\n\tcontainsBox: function ( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y;\n\n\t},\n\n\tgetParameter: function ( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getParameter() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\n\t\t);\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\t// using 4 splitting planes to rule out intersections\n\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ? false : true;\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t},\n\n\tdistanceToPoint: function () {\n\n\t\tvar v1 = new Vector2();\n\n\t\treturn function distanceToPoint( point ) {\n\n\t\t\tvar clampedPoint = v1.copy( point ).clamp( this.min, this.max );\n\t\t\treturn clampedPoint.sub( point ).length();\n\n\t\t};\n\n\t}(),\n\n\tintersect: function ( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tunion: function ( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction ImmediateRenderObject( material ) {\n\n\tObject3D.call( this );\n\n\tthis.material = material;\n\tthis.render = function ( /* renderCallback */ ) {};\n\n}\n\nImmediateRenderObject.prototype = Object.create( Object3D.prototype );\nImmediateRenderObject.prototype.constructor = ImmediateRenderObject;\n\nImmediateRenderObject.prototype.isImmediateRenderObject = true;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction VertexNormalsHelper( object, size, hex, linewidth ) {\n\n\tthis.object = object;\n\n\tthis.size = ( size !== undefined ) ? size : 1;\n\n\tvar color = ( hex !== undefined ) ? hex : 0xff0000;\n\n\tvar width = ( linewidth !== undefined ) ? linewidth : 1;\n\n\t//\n\n\tvar nNormals = 0;\n\n\tvar objGeometry = this.object.geometry;\n\n\tif ( objGeometry && objGeometry.isGeometry ) {\n\n\t\tnNormals = objGeometry.faces.length * 3;\n\n\t} else if ( objGeometry && objGeometry.isBufferGeometry ) {\n\n\t\tnNormals = objGeometry.attributes.normal.count;\n\n\t}\n\n\t//\n\n\tvar geometry = new BufferGeometry();\n\n\tvar positions = new Float32BufferAttribute( nNormals * 2 * 3, 3 );\n\n\tgeometry.addAttribute( 'position', positions );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, linewidth: width } ) );\n\n\t//\n\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n}\n\nVertexNormalsHelper.prototype = Object.create( LineSegments.prototype );\nVertexNormalsHelper.prototype.constructor = VertexNormalsHelper;\n\nVertexNormalsHelper.prototype.update = ( function () {\n\n\tvar v1 = new Vector3();\n\tvar v2 = new Vector3();\n\tvar normalMatrix = new Matrix3();\n\n\treturn function update() {\n\n\t\tvar keys = [ 'a', 'b', 'c' ];\n\n\t\tthis.object.updateMatrixWorld( true );\n\n\t\tnormalMatrix.getNormalMatrix( this.object.matrixWorld );\n\n\t\tvar matrixWorld = this.object.matrixWorld;\n\n\t\tvar position = this.geometry.attributes.position;\n\n\t\t//\n\n\t\tvar objGeometry = this.object.geometry;\n\n\t\tif ( objGeometry && objGeometry.isGeometry ) {\n\n\t\t\tvar vertices = objGeometry.vertices;\n\n\t\t\tvar faces = objGeometry.faces;\n\n\t\t\tvar idx = 0;\n\n\t\t\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\tvar face = faces[ i ];\n\n\t\t\t\tfor ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar vertex = vertices[ face[ keys[ j ] ] ];\n\n\t\t\t\t\tvar normal = face.vertexNormals[ j ];\n\n\t\t\t\t\tv1.copy( vertex ).applyMatrix4( matrixWorld );\n\n\t\t\t\t\tv2.copy( normal ).applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 );\n\n\t\t\t\t\tposition.setXYZ( idx, v1.x, v1.y, v1.z );\n\n\t\t\t\t\tidx = idx + 1;\n\n\t\t\t\t\tposition.setXYZ( idx, v2.x, v2.y, v2.z );\n\n\t\t\t\t\tidx = idx + 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( objGeometry && objGeometry.isBufferGeometry ) {\n\n\t\t\tvar objPos = objGeometry.attributes.position;\n\n\t\t\tvar objNorm = objGeometry.attributes.normal;\n\n\t\t\tvar idx = 0;\n\n\t\t\t// for simplicity, ignore index and drawcalls, and render every normal\n\n\t\t\tfor ( var j = 0, jl = objPos.count; j < jl; j ++ ) {\n\n\t\t\t\tv1.set( objPos.getX( j ), objPos.getY( j ), objPos.getZ( j ) ).applyMatrix4( matrixWorld );\n\n\t\t\t\tv2.set( objNorm.getX( j ), objNorm.getY( j ), objNorm.getZ( j ) );\n\n\t\t\t\tv2.applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 );\n\n\t\t\t\tposition.setXYZ( idx, v1.x, v1.y, v1.z );\n\n\t\t\t\tidx = idx + 1;\n\n\t\t\t\tposition.setXYZ( idx, v2.x, v2.y, v2.z );\n\n\t\t\t\tidx = idx + 1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tposition.needsUpdate = true;\n\n\t};\n\n}() );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction SpotLightHelper( light, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tvar geometry = new BufferGeometry();\n\n\tvar positions = [\n\t\t0, 0, 0, \t0, 0, 1,\n\t\t0, 0, 0, \t1, 0, 1,\n\t\t0, 0, 0,\t- 1, 0, 1,\n\t\t0, 0, 0, \t0, 1, 1,\n\t\t0, 0, 0, \t0, - 1, 1\n\t];\n\n\tfor ( var i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\tvar p1 = ( i / l ) * Math.PI * 2;\n\t\tvar p2 = ( j / l ) * Math.PI * 2;\n\n\t\tpositions.push(\n\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t);\n\n\t}\n\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\tvar material = new LineBasicMaterial( { fog: false } );\n\n\tthis.cone = new LineSegments( geometry, material );\n\tthis.add( this.cone );\n\n\tthis.update();\n\n}\n\nSpotLightHelper.prototype = Object.create( Object3D.prototype );\nSpotLightHelper.prototype.constructor = SpotLightHelper;\n\nSpotLightHelper.prototype.dispose = function () {\n\n\tthis.cone.geometry.dispose();\n\tthis.cone.material.dispose();\n\n};\n\nSpotLightHelper.prototype.update = function () {\n\n\tvar vector = new Vector3();\n\tvar vector2 = new Vector3();\n\n\treturn function update() {\n\n\t\tthis.light.updateMatrixWorld();\n\n\t\tvar coneLength = this.light.distance ? this.light.distance : 1000;\n\t\tvar coneWidth = coneLength * Math.tan( this.light.angle );\n\n\t\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t\tvector.setFromMatrixPosition( this.light.matrixWorld );\n\t\tvector2.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\t\tthis.cone.lookAt( vector2.sub( vector ) );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.cone.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.cone.material.color.copy( this.light.color );\n\n\t\t}\n\n\t};\n\n}();\n\n/**\n * @author Sean Griffin / http://twitter.com/sgrif\n * @author Michael Guerrero / http://realitymeltdown.com\n * @author mrdoob / http://mrdoob.com/\n * @author ikerr / http://verold.com\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction getBoneList( object ) {\n\n\tvar boneList = [];\n\n\tif ( object && object.isBone ) {\n\n\t\tboneList.push( object );\n\n\t}\n\n\tfor ( var i = 0; i < object.children.length; i ++ ) {\n\n\t\tboneList.push.apply( boneList, getBoneList( object.children[ i ] ) );\n\n\t}\n\n\treturn boneList;\n\n}\n\nfunction SkeletonHelper( object ) {\n\n\tvar bones = getBoneList( object );\n\n\tvar geometry = new BufferGeometry();\n\n\tvar vertices = [];\n\tvar colors = [];\n\n\tvar color1 = new Color( 0, 0, 1 );\n\tvar color2 = new Color( 0, 1, 0 );\n\n\tfor ( var i = 0; i < bones.length; i ++ ) {\n\n\t\tvar bone = bones[ i ];\n\n\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tcolors.push( color1.r, color1.g, color1.b );\n\t\t\tcolors.push( color2.r, color2.g, color2.b );\n\n\t\t}\n\n\t}\n\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tvar material = new LineBasicMaterial( { vertexColors: VertexColors, depthTest: false, depthWrite: false, transparent: true } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.root = object;\n\tthis.bones = bones;\n\n\tthis.matrix = object.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n}\n\nSkeletonHelper.prototype = Object.create( LineSegments.prototype );\nSkeletonHelper.prototype.constructor = SkeletonHelper;\n\nSkeletonHelper.prototype.updateMatrixWorld = function () {\n\n\tvar vector = new Vector3();\n\n\tvar boneMatrix = new Matrix4();\n\tvar matrixWorldInv = new Matrix4();\n\n\treturn function updateMatrixWorld( force ) {\n\n\t\tvar bones = this.bones;\n\n\t\tvar geometry = this.geometry;\n\t\tvar position = geometry.getAttribute( 'position' );\n\n\t\tmatrixWorldInv.getInverse( this.root.matrixWorld );\n\n\t\tfor ( var i = 0, j = 0; i < bones.length; i ++ ) {\n\n\t\t\tvar bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\tboneMatrix.multiplyMatrices( matrixWorldInv, bone.matrixWorld );\n\t\t\t\tvector.setFromMatrixPosition( boneMatrix );\n\t\t\t\tposition.setXYZ( j, vector.x, vector.y, vector.z );\n\n\t\t\t\tboneMatrix.multiplyMatrices( matrixWorldInv, bone.parent.matrixWorld );\n\t\t\t\tvector.setFromMatrixPosition( boneMatrix );\n\t\t\t\tposition.setXYZ( j + 1, vector.x, vector.y, vector.z );\n\n\t\t\t\tj += 2;\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t};\n\n}();\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction PointLightHelper( light, sphereSize, color ) {\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.color = color;\n\n\tvar geometry = new SphereBufferGeometry( sphereSize, 4, 2 );\n\tvar material = new MeshBasicMaterial( { wireframe: true, fog: false } );\n\n\tMesh.call( this, geometry, material );\n\n\tthis.matrix = this.light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n\n\t/*\n\tvar distanceGeometry = new THREE.IcosahedronGeometry( 1, 2 );\n\tvar distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\n\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\n\tvar d = light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\n\tthis.add( this.lightDistance );\n\t*/\n\n}\n\nPointLightHelper.prototype = Object.create( Mesh.prototype );\nPointLightHelper.prototype.constructor = PointLightHelper;\n\nPointLightHelper.prototype.dispose = function () {\n\n\tthis.geometry.dispose();\n\tthis.material.dispose();\n\n};\n\nPointLightHelper.prototype.update = function () {\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.material.color.copy( this.light.color );\n\n\t}\n\n\t/*\n\tvar d = this.light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.visible = true;\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\t*/\n\n};\n\n/**\n * @author abelnation / http://github.com/abelnation\n * @author Mugen87 / http://github.com/Mugen87\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction RectAreaLightHelper( light, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tvar material = new LineBasicMaterial( { fog: false } );\n\n\tvar geometry = new BufferGeometry();\n\n\tgeometry.addAttribute( 'position', new BufferAttribute( new Float32Array( 5 * 3 ), 3 ) );\n\n\tthis.line = new Line( geometry, material );\n\tthis.add( this.line );\n\n\n\tthis.update();\n\n}\n\nRectAreaLightHelper.prototype = Object.create( Object3D.prototype );\nRectAreaLightHelper.prototype.constructor = RectAreaLightHelper;\n\nRectAreaLightHelper.prototype.dispose = function () {\n\n\tthis.children[ 0 ].geometry.dispose();\n\tthis.children[ 0 ].material.dispose();\n\n};\n\nRectAreaLightHelper.prototype.update = function () {\n\n\t// calculate new dimensions of the helper\n\n\tvar hx = this.light.width * 0.5;\n\tvar hy = this.light.height * 0.5;\n\n\tvar position = this.line.geometry.attributes.position;\n\tvar array = position.array;\n\n\t// update vertices\n\n\tarray[ 0 ] = hx; array[ 1 ] = - hy; array[ 2 ] = 0;\n\tarray[ 3 ] = hx; array[ 4 ] = hy; array[ 5 ] = 0;\n\tarray[ 6 ] = - hx; array[ 7 ] = hy; array[ 8 ] = 0;\n\tarray[ 9 ] = - hx; array[ 10 ] = - hy; array[ 11 ] = 0;\n\tarray[ 12 ] = hx; array[ 13 ] = - hy; array[ 14 ] = 0;\n\n\tposition.needsUpdate = true;\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.line.material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.line.material.color.copy( this.light.color );\n\n\t}\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction HemisphereLightHelper( light, size, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tvar geometry = new OctahedronBufferGeometry( size );\n\tgeometry.rotateY( Math.PI * 0.5 );\n\n\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false } );\n\tif ( this.color === undefined ) this.material.vertexColors = VertexColors;\n\n\tvar position = geometry.getAttribute( 'position' );\n\tvar colors = new Float32Array( position.count * 3 );\n\n\tgeometry.addAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\tthis.add( new Mesh( geometry, this.material ) );\n\n\tthis.update();\n\n}\n\nHemisphereLightHelper.prototype = Object.create( Object3D.prototype );\nHemisphereLightHelper.prototype.constructor = HemisphereLightHelper;\n\nHemisphereLightHelper.prototype.dispose = function () {\n\n\tthis.children[ 0 ].geometry.dispose();\n\tthis.children[ 0 ].material.dispose();\n\n};\n\nHemisphereLightHelper.prototype.update = function () {\n\n\tvar vector = new Vector3();\n\n\tvar color1 = new Color();\n\tvar color2 = new Color();\n\n\treturn function update() {\n\n\t\tvar mesh = this.children[ 0 ];\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tvar colors = mesh.geometry.getAttribute( 'color' );\n\n\t\t\tcolor1.copy( this.light.color );\n\t\t\tcolor2.copy( this.light.groundColor );\n\n\t\t\tfor ( var i = 0, l = colors.count; i < l; i ++ ) {\n\n\t\t\t\tvar color = ( i < ( l / 2 ) ) ? color1 : color2;\n\n\t\t\t\tcolors.setXYZ( i, color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t\tcolors.needsUpdate = true;\n\n\t\t}\n\n\t\tmesh.lookAt( vector.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\n\t};\n\n}();\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction GridHelper( size, divisions, color1, color2 ) {\n\n\tsize = size || 10;\n\tdivisions = divisions || 10;\n\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\n\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\n\n\tvar center = divisions / 2;\n\tvar step = size / divisions;\n\tvar halfSize = size / 2;\n\n\tvar vertices = [], colors = [];\n\n\tfor ( var i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) {\n\n\t\tvertices.push( - halfSize, 0, k, halfSize, 0, k );\n\t\tvertices.push( k, 0, - halfSize, k, 0, halfSize );\n\n\t\tvar color = i === center ? color1 : color2;\n\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\n\t}\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tvar material = new LineBasicMaterial( { vertexColors: VertexColors } );\n\n\tLineSegments.call( this, geometry, material );\n\n}\n\nGridHelper.prototype = Object.create( LineSegments.prototype );\nGridHelper.prototype.constructor = GridHelper;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / http://github.com/Mugen87\n * @author Hectate / http://www.github.com/Hectate\n */\n\nfunction PolarGridHelper( radius, radials, circles, divisions, color1, color2 ) {\n\n\tradius = radius || 10;\n\tradials = radials || 16;\n\tcircles = circles || 8;\n\tdivisions = divisions || 64;\n\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\n\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\n\n\tvar vertices = [];\n\tvar colors = [];\n\n\tvar x, z;\n\tvar v, i, j, r, color;\n\n\t// create the radials\n\n\tfor ( i = 0; i <= radials; i ++ ) {\n\n\t\tv = ( i / radials ) * ( Math.PI * 2 );\n\n\t\tx = Math.sin( v ) * radius;\n\t\tz = Math.cos( v ) * radius;\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tvertices.push( x, 0, z );\n\n\t\tcolor = ( i & 1 ) ? color1 : color2;\n\n\t\tcolors.push( color.r, color.g, color.b );\n\t\tcolors.push( color.r, color.g, color.b );\n\n\t}\n\n\t// create the circles\n\n\tfor ( i = 0; i <= circles; i ++ ) {\n\n\t\tcolor = ( i & 1 ) ? color1 : color2;\n\n\t\tr = radius - ( radius / circles * i );\n\n\t\tfor ( j = 0; j < divisions; j ++ ) {\n\n\t\t\t// first vertex\n\n\t\t\tv = ( j / divisions ) * ( Math.PI * 2 );\n\n\t\t\tx = Math.sin( v ) * r;\n\t\t\tz = Math.cos( v ) * r;\n\n\t\t\tvertices.push( x, 0, z );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t// second vertex\n\n\t\t\tv = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 );\n\n\t\t\tx = Math.sin( v ) * r;\n\t\t\tz = Math.cos( v ) * r;\n\n\t\t\tvertices.push( x, 0, z );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t}\n\n\t}\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tvar material = new LineBasicMaterial( { vertexColors: VertexColors } );\n\n\tLineSegments.call( this, geometry, material );\n\n}\n\nPolarGridHelper.prototype = Object.create( LineSegments.prototype );\nPolarGridHelper.prototype.constructor = PolarGridHelper;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction FaceNormalsHelper( object, size, hex, linewidth ) {\n\n\t// FaceNormalsHelper only supports THREE.Geometry\n\n\tthis.object = object;\n\n\tthis.size = ( size !== undefined ) ? size : 1;\n\n\tvar color = ( hex !== undefined ) ? hex : 0xffff00;\n\n\tvar width = ( linewidth !== undefined ) ? linewidth : 1;\n\n\t//\n\n\tvar nNormals = 0;\n\n\tvar objGeometry = this.object.geometry;\n\n\tif ( objGeometry && objGeometry.isGeometry ) {\n\n\t\tnNormals = objGeometry.faces.length;\n\n\t} else {\n\n\t\tconsole.warn( 'THREE.FaceNormalsHelper: only THREE.Geometry is supported. Use THREE.VertexNormalsHelper, instead.' );\n\n\t}\n\n\t//\n\n\tvar geometry = new BufferGeometry();\n\n\tvar positions = new Float32BufferAttribute( nNormals * 2 * 3, 3 );\n\n\tgeometry.addAttribute( 'position', positions );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, linewidth: width } ) );\n\n\t//\n\n\tthis.matrixAutoUpdate = false;\n\tthis.update();\n\n}\n\nFaceNormalsHelper.prototype = Object.create( LineSegments.prototype );\nFaceNormalsHelper.prototype.constructor = FaceNormalsHelper;\n\nFaceNormalsHelper.prototype.update = ( function () {\n\n\tvar v1 = new Vector3();\n\tvar v2 = new Vector3();\n\tvar normalMatrix = new Matrix3();\n\n\treturn function update() {\n\n\t\tthis.object.updateMatrixWorld( true );\n\n\t\tnormalMatrix.getNormalMatrix( this.object.matrixWorld );\n\n\t\tvar matrixWorld = this.object.matrixWorld;\n\n\t\tvar position = this.geometry.attributes.position;\n\n\t\t//\n\n\t\tvar objGeometry = this.object.geometry;\n\n\t\tvar vertices = objGeometry.vertices;\n\n\t\tvar faces = objGeometry.faces;\n\n\t\tvar idx = 0;\n\n\t\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tvar normal = face.normal;\n\n\t\t\tv1.copy( vertices[ face.a ] )\n\t\t\t\t.add( vertices[ face.b ] )\n\t\t\t\t.add( vertices[ face.c ] )\n\t\t\t\t.divideScalar( 3 )\n\t\t\t\t.applyMatrix4( matrixWorld );\n\n\t\t\tv2.copy( normal ).applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 );\n\n\t\t\tposition.setXYZ( idx, v1.x, v1.y, v1.z );\n\n\t\t\tidx = idx + 1;\n\n\t\t\tposition.setXYZ( idx, v2.x, v2.y, v2.z );\n\n\t\t\tidx = idx + 1;\n\n\t\t}\n\n\t\tposition.needsUpdate = true;\n\n\t};\n\n}() );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction DirectionalLightHelper( light, size, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tif ( size === undefined ) size = 1;\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( [\n\t\t- size, size, 0,\n\t\tsize, size, 0,\n\t\tsize, - size, 0,\n\t\t- size, - size, 0,\n\t\t- size, size, 0\n\t], 3 ) );\n\n\tvar material = new LineBasicMaterial( { fog: false } );\n\n\tthis.lightPlane = new Line( geometry, material );\n\tthis.add( this.lightPlane );\n\n\tgeometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\tthis.targetLine = new Line( geometry, material );\n\tthis.add( this.targetLine );\n\n\tthis.update();\n\n}\n\nDirectionalLightHelper.prototype = Object.create( Object3D.prototype );\nDirectionalLightHelper.prototype.constructor = DirectionalLightHelper;\n\nDirectionalLightHelper.prototype.dispose = function () {\n\n\tthis.lightPlane.geometry.dispose();\n\tthis.lightPlane.material.dispose();\n\tthis.targetLine.geometry.dispose();\n\tthis.targetLine.material.dispose();\n\n};\n\nDirectionalLightHelper.prototype.update = function () {\n\n\tvar v1 = new Vector3();\n\tvar v2 = new Vector3();\n\tvar v3 = new Vector3();\n\n\treturn function update() {\n\n\t\tv1.setFromMatrixPosition( this.light.matrixWorld );\n\t\tv2.setFromMatrixPosition( this.light.target.matrixWorld );\n\t\tv3.subVectors( v2, v1 );\n\n\t\tthis.lightPlane.lookAt( v3 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.lightPlane.material.color.set( this.color );\n\t\t\tthis.targetLine.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.lightPlane.material.color.copy( this.light.color );\n\t\t\tthis.targetLine.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\tthis.targetLine.lookAt( v3 );\n\t\tthis.targetLine.scale.z = v3.length();\n\n\t};\n\n}();\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author Mugen87 / https://github.com/Mugen87\n *\n *\t- shows frustum, line of sight and up of the camera\n *\t- suitable for fast updates\n * \t- based on frustum visualization in lightgl.js shadowmap example\n *\t\thttp://evanw.github.com/lightgl.js/tests/shadowmap.html\n */\n\nfunction CameraHelper( camera ) {\n\n\tvar geometry = new BufferGeometry();\n\tvar material = new LineBasicMaterial( { color: 0xffffff, vertexColors: FaceColors } );\n\n\tvar vertices = [];\n\tvar colors = [];\n\n\tvar pointMap = {};\n\n\t// colors\n\n\tvar colorFrustum = new Color( 0xffaa00 );\n\tvar colorCone = new Color( 0xff0000 );\n\tvar colorUp = new Color( 0x00aaff );\n\tvar colorTarget = new Color( 0xffffff );\n\tvar colorCross = new Color( 0x333333 );\n\n\t// near\n\n\taddLine( 'n1', 'n2', colorFrustum );\n\taddLine( 'n2', 'n4', colorFrustum );\n\taddLine( 'n4', 'n3', colorFrustum );\n\taddLine( 'n3', 'n1', colorFrustum );\n\n\t// far\n\n\taddLine( 'f1', 'f2', colorFrustum );\n\taddLine( 'f2', 'f4', colorFrustum );\n\taddLine( 'f4', 'f3', colorFrustum );\n\taddLine( 'f3', 'f1', colorFrustum );\n\n\t// sides\n\n\taddLine( 'n1', 'f1', colorFrustum );\n\taddLine( 'n2', 'f2', colorFrustum );\n\taddLine( 'n3', 'f3', colorFrustum );\n\taddLine( 'n4', 'f4', colorFrustum );\n\n\t// cone\n\n\taddLine( 'p', 'n1', colorCone );\n\taddLine( 'p', 'n2', colorCone );\n\taddLine( 'p', 'n3', colorCone );\n\taddLine( 'p', 'n4', colorCone );\n\n\t// up\n\n\taddLine( 'u1', 'u2', colorUp );\n\taddLine( 'u2', 'u3', colorUp );\n\taddLine( 'u3', 'u1', colorUp );\n\n\t// target\n\n\taddLine( 'c', 't', colorTarget );\n\taddLine( 'p', 'c', colorCross );\n\n\t// cross\n\n\taddLine( 'cn1', 'cn2', colorCross );\n\taddLine( 'cn3', 'cn4', colorCross );\n\n\taddLine( 'cf1', 'cf2', colorCross );\n\taddLine( 'cf3', 'cf4', colorCross );\n\n\tfunction addLine( a, b, color ) {\n\n\t\taddPoint( a, color );\n\t\taddPoint( b, color );\n\n\t}\n\n\tfunction addPoint( id, color ) {\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tcolors.push( color.r, color.g, color.b );\n\n\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\tpointMap[ id ] = [];\n\n\t\t}\n\n\t\tpointMap[ id ].push( ( vertices.length / 3 ) - 1 );\n\n\t}\n\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.camera = camera;\n\tif ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\tthis.matrix = camera.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.pointMap = pointMap;\n\n\tthis.update();\n\n}\n\nCameraHelper.prototype = Object.create( LineSegments.prototype );\nCameraHelper.prototype.constructor = CameraHelper;\n\nCameraHelper.prototype.update = function () {\n\n\tvar geometry, pointMap;\n\n\tvar vector = new Vector3();\n\tvar camera = new Camera();\n\n\tfunction setPoint( point, x, y, z ) {\n\n\t\tvector.set( x, y, z ).unproject( camera );\n\n\t\tvar points = pointMap[ point ];\n\n\t\tif ( points !== undefined ) {\n\n\t\t\tvar position = geometry.getAttribute( 'position' );\n\n\t\t\tfor ( var i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\t\tposition.setXYZ( points[ i ], vector.x, vector.y, vector.z );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn function update() {\n\n\t\tgeometry = this.geometry;\n\t\tpointMap = this.pointMap;\n\n\t\tvar w = 1, h = 1;\n\n\t\t// we need just camera projection matrix\n\t\t// world matrix must be identity\n\n\t\tcamera.projectionMatrix.copy( this.camera.projectionMatrix );\n\n\t\t// center / target\n\n\t\tsetPoint( 'c', 0, 0, - 1 );\n\t\tsetPoint( 't', 0, 0, 1 );\n\n\t\t// near\n\n\t\tsetPoint( 'n1', - w, - h, - 1 );\n\t\tsetPoint( 'n2', w, - h, - 1 );\n\t\tsetPoint( 'n3', - w, h, - 1 );\n\t\tsetPoint( 'n4', w, h, - 1 );\n\n\t\t// far\n\n\t\tsetPoint( 'f1', - w, - h, 1 );\n\t\tsetPoint( 'f2', w, - h, 1 );\n\t\tsetPoint( 'f3', - w, h, 1 );\n\t\tsetPoint( 'f4', w, h, 1 );\n\n\t\t// up\n\n\t\tsetPoint( 'u1', w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u2', - w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u3', 0, h * 2, - 1 );\n\n\t\t// cross\n\n\t\tsetPoint( 'cf1', - w, 0, 1 );\n\t\tsetPoint( 'cf2', w, 0, 1 );\n\t\tsetPoint( 'cf3', 0, - h, 1 );\n\t\tsetPoint( 'cf4', 0, h, 1 );\n\n\t\tsetPoint( 'cn1', - w, 0, - 1 );\n\t\tsetPoint( 'cn2', w, 0, - 1 );\n\t\tsetPoint( 'cn3', 0, - h, - 1 );\n\t\tsetPoint( 'cn4', 0, h, - 1 );\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t};\n\n}();\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / http://github.com/Mugen87\n */\n\nfunction BoxHelper( object, color ) {\n\n\tthis.object = object;\n\n\tif ( color === undefined ) color = 0xffff00;\n\n\tvar indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\tvar positions = new Float32Array( 8 * 3 );\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\tgeometry.addAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color } ) );\n\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n}\n\nBoxHelper.prototype = Object.create( LineSegments.prototype );\nBoxHelper.prototype.constructor = BoxHelper;\n\nBoxHelper.prototype.update = ( function () {\n\n\tvar box = new Box3();\n\n\treturn function update( object ) {\n\n\t\tif ( object !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BoxHelper: .update() has no longer arguments.' );\n\n\t\t}\n\n\t\tif ( this.object !== undefined ) {\n\n\t\t\tbox.setFromObject( this.object );\n\n\t\t}\n\n\t\tif ( box.isEmpty() ) return;\n\n\t\tvar min = box.min;\n\t\tvar max = box.max;\n\n\t\t/*\n\t\t  5____4\n\t\t1/___0/|\n\t\t| 6__|_7\n\t\t2/___3/\n\n\t\t0: max.x, max.y, max.z\n\t\t1: min.x, max.y, max.z\n\t\t2: min.x, min.y, max.z\n\t\t3: max.x, min.y, max.z\n\t\t4: max.x, max.y, min.z\n\t\t5: min.x, max.y, min.z\n\t\t6: min.x, min.y, min.z\n\t\t7: max.x, min.y, min.z\n\t\t*/\n\n\t\tvar position = this.geometry.attributes.position;\n\t\tvar array = position.array;\n\n\t\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\t\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\t\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\t\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\t\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\t\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\t\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\t\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\t\tposition.needsUpdate = true;\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t};\n\n} )();\n\nBoxHelper.prototype.setFromObject = function ( object ) {\n\n\tthis.object = object;\n\tthis.update();\n\n\treturn this;\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Box3Helper( box, hex ) {\n\n\tthis.type = 'Box3Helper';\n\n\tthis.box = box;\n\n\tvar color = ( hex !== undefined ) ? hex : 0xffff00;\n\n\tvar indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\n\tvar positions = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, - 1, - 1, 1, - 1, - 1, - 1, - 1, 1, - 1, - 1 ];\n\n\tvar geometry = new BufferGeometry();\n\n\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color } ) );\n\n\tthis.geometry.computeBoundingSphere();\n\n}\n\nBox3Helper.prototype = Object.create( LineSegments.prototype );\nBox3Helper.prototype.constructor = Box3Helper;\n\nBox3Helper.prototype.updateMatrixWorld = function ( force ) {\n\n\tvar box = this.box;\n\n\tif ( box.isEmpty() ) return;\n\n\tbox.getCenter( this.position );\n\n\tbox.getSize( this.scale );\n\n\tthis.scale.multiplyScalar( 0.5 );\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction PlaneHelper( plane, size, hex ) {\n\n\tthis.type = 'PlaneHelper';\n\n\tthis.plane = plane;\n\n\tthis.size = ( size === undefined ) ? 1 : size;\n\n\tvar color = ( hex !== undefined ) ? hex : 0xffff00;\n\n\tvar positions = [ 1, - 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0 ];\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\tgeometry.computeBoundingSphere();\n\n\tLine.call( this, geometry, new LineBasicMaterial( { color: color } ) );\n\n\t//\n\n\tvar positions2 = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, - 1, 1, 1, - 1, 1 ];\n\n\tvar geometry2 = new BufferGeometry();\n\tgeometry2.addAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\tgeometry2.computeBoundingSphere();\n\n\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false } ) ) );\n\n}\n\nPlaneHelper.prototype = Object.create( Line.prototype );\nPlaneHelper.prototype.constructor = PlaneHelper;\n\nPlaneHelper.prototype.updateMatrixWorld = function ( force ) {\n\n\tvar scale = - this.plane.constant;\n\n\tif ( Math.abs( scale ) < 1e-8 ) scale = 1e-8; // sign does not matter\n\n\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, scale );\n\n\tthis.children[ 0 ].material.side = ( scale < 0 ) ? BackSide : FrontSide; // renderer flips side when determinant < 0; flipping not wanted here\n\n\tthis.lookAt( this.plane.normal );\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n * @author zz85 / http://github.com/zz85\n * @author bhouston / http://clara.io\n *\n * Creates an arrow for visualizing directions\n *\n * Parameters:\n *  dir - Vector3\n *  origin - Vector3\n *  length - Number\n *  color - color in hex value\n *  headLength - Number\n *  headWidth - Number\n */\n\nvar lineGeometry, coneGeometry;\n\nfunction ArrowHelper( dir, origin, length, color, headLength, headWidth ) {\n\n\t// dir is assumed to be normalized\n\n\tObject3D.call( this );\n\n\tif ( color === undefined ) color = 0xffff00;\n\tif ( length === undefined ) length = 1;\n\tif ( headLength === undefined ) headLength = 0.2 * length;\n\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\tif ( lineGeometry === undefined ) {\n\n\t\tlineGeometry = new BufferGeometry();\n\t\tlineGeometry.addAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\n\t\tconeGeometry = new CylinderBufferGeometry( 0, 0.5, 1, 5, 1 );\n\t\tconeGeometry.translate( 0, - 0.5, 0 );\n\n\t}\n\n\tthis.position.copy( origin );\n\n\tthis.line = new Line( lineGeometry, new LineBasicMaterial( { color: color } ) );\n\tthis.line.matrixAutoUpdate = false;\n\tthis.add( this.line );\n\n\tthis.cone = new Mesh( coneGeometry, new MeshBasicMaterial( { color: color } ) );\n\tthis.cone.matrixAutoUpdate = false;\n\tthis.add( this.cone );\n\n\tthis.setDirection( dir );\n\tthis.setLength( length, headLength, headWidth );\n\n}\n\nArrowHelper.prototype = Object.create( Object3D.prototype );\nArrowHelper.prototype.constructor = ArrowHelper;\n\nArrowHelper.prototype.setDirection = ( function () {\n\n\tvar axis = new Vector3();\n\tvar radians;\n\n\treturn function setDirection( dir ) {\n\n\t\t// dir is assumed to be normalized\n\n\t\tif ( dir.y > 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t\t} else if ( dir.y < - 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t\t} else {\n\n\t\t\taxis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\t\tradians = Math.acos( dir.y );\n\n\t\t\tthis.quaternion.setFromAxisAngle( axis, radians );\n\n\t\t}\n\n\t};\n\n}() );\n\nArrowHelper.prototype.setLength = function ( length, headLength, headWidth ) {\n\n\tif ( headLength === undefined ) headLength = 0.2 * length;\n\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\tthis.line.scale.set( 1, Math.max( 0, length - headLength ), 1 );\n\tthis.line.updateMatrix();\n\n\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\tthis.cone.position.y = length;\n\tthis.cone.updateMatrix();\n\n};\n\nArrowHelper.prototype.setColor = function ( color ) {\n\n\tthis.line.material.color.copy( color );\n\tthis.cone.material.color.copy( color );\n\n};\n\n/**\n * @author sroucheray / http://sroucheray.org/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AxesHelper( size ) {\n\n\tsize = size || 1;\n\n\tvar vertices = [\n\t\t0, 0, 0,\tsize, 0, 0,\n\t\t0, 0, 0,\t0, size, 0,\n\t\t0, 0, 0,\t0, 0, size\n\t];\n\n\tvar colors = [\n\t\t1, 0, 0,\t1, 0.6, 0,\n\t\t0, 1, 0,\t0.6, 1, 0,\n\t\t0, 0, 1,\t0, 0.6, 1\n\t];\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tvar material = new LineBasicMaterial( { vertexColors: VertexColors } );\n\n\tLineSegments.call( this, geometry, material );\n\n}\n\nAxesHelper.prototype = Object.create( LineSegments.prototype );\nAxesHelper.prototype.constructor = AxesHelper;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Face4( a, b, c, d, normal, color, materialIndex ) {\n\n\tconsole.warn( 'THREE.Face4 has been removed. A THREE.Face3 will be created instead.' );\n\treturn new Face3( a, b, c, normal, color, materialIndex );\n\n}\n\nvar LineStrip = 0;\n\nvar LinePieces = 1;\n\nfunction MeshFaceMaterial( materials ) {\n\n\tconsole.warn( 'THREE.MeshFaceMaterial has been removed. Use an Array instead.' );\n\treturn materials;\n\n}\n\nfunction MultiMaterial( materials ) {\n\n\tif ( materials === undefined ) materials = [];\n\n\tconsole.warn( 'THREE.MultiMaterial has been removed. Use an Array instead.' );\n\tmaterials.isMultiMaterial = true;\n\tmaterials.materials = materials;\n\tmaterials.clone = function () {\n\n\t\treturn materials.slice();\n\n\t};\n\treturn materials;\n\n}\n\nfunction PointCloud( geometry, material ) {\n\n\tconsole.warn( 'THREE.PointCloud has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction Particle( material ) {\n\n\tconsole.warn( 'THREE.Particle has been renamed to THREE.Sprite.' );\n\treturn new Sprite( material );\n\n}\n\nfunction ParticleSystem( geometry, material ) {\n\n\tconsole.warn( 'THREE.ParticleSystem has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction PointCloudMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleBasicMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleSystemMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction Vertex( x, y, z ) {\n\n\tconsole.warn( 'THREE.Vertex has been removed. Use THREE.Vector3 instead.' );\n\treturn new Vector3( x, y, z );\n\n}\n\n//\n\nfunction DynamicBufferAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setDynamic( true ) instead.' );\n\treturn new BufferAttribute( array, itemSize ).setDynamic( true );\n\n}\n\nfunction Int8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.' );\n\treturn new Int8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.' );\n\treturn new Uint8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8ClampedAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.' );\n\treturn new Uint8ClampedBufferAttribute( array, itemSize );\n\n}\n\nfunction Int16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.' );\n\treturn new Int16BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.' );\n\treturn new Uint16BufferAttribute( array, itemSize );\n\n}\n\nfunction Int32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.' );\n\treturn new Int32BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.' );\n\treturn new Uint32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.' );\n\treturn new Float32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float64Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.' );\n\treturn new Float64BufferAttribute( array, itemSize );\n\n}\n\n//\n\nCurve.create = function ( construct, getPoint ) {\n\n\tconsole.log( 'THREE.Curve.create() has been deprecated' );\n\n\tconstruct.prototype = Object.create( Curve.prototype );\n\tconstruct.prototype.constructor = construct;\n\tconstruct.prototype.getPoint = getPoint;\n\n\treturn construct;\n\n};\n\n//\n\nObject.assign( CurvePath.prototype, {\n\n\tcreatePointsGeometry: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\t// generate geometry from path points (for Line or Points objects)\n\n\t\tvar pts = this.getPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\tcreateSpacedPointsGeometry: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\t// generate geometry from equidistant sampling along the path\n\n\t\tvar pts = this.getSpacedPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\tcreateGeometry: function ( points ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\tvar geometry = new Geometry();\n\n\t\tfor ( var i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tvar point = points[ i ];\n\t\t\tgeometry.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\n\n\t\t}\n\n\t\treturn geometry;\n\n\t}\n\n} );\n\n//\n\nObject.assign( Path.prototype, {\n\n\tfromPoints: function ( points ) {\n\n\t\tconsole.warn( 'THREE.Path: .fromPoints() has been renamed to .setFromPoints().' );\n\t\tthis.setFromPoints( points );\n\n\t}\n\n} );\n\n//\n\nfunction ClosedSplineCurve3( points ) {\n\n\tconsole.warn( 'THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\tthis.closed = true;\n\n}\n\nClosedSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n//\n\nfunction SplineCurve3( points ) {\n\n\tconsole.warn( 'THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\n}\n\nSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n//\n\nfunction Spline( points ) {\n\n\tconsole.warn( 'THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\n}\n\nSpline.prototype = Object.create( CatmullRomCurve3.prototype );\n\nObject.assign( Spline.prototype, {\n\n\tinitFromArray: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .initFromArray() has been removed.' );\n\n\t},\n\tgetControlPointsArray: function ( /* optionalTarget */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .getControlPointsArray() has been removed.' );\n\n\t},\n\treparametrizeByArcLength: function ( /* samplingCoef */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .reparametrizeByArcLength() has been removed.' );\n\n\t}\n\n} );\n\n//\n\nfunction AxisHelper( size ) {\n\n\tconsole.warn( 'THREE.AxisHelper has been renamed to THREE.AxesHelper.' );\n\treturn new AxesHelper( size );\n\n}\n\nfunction BoundingBoxHelper( object, color ) {\n\n\tconsole.warn( 'THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.' );\n\treturn new BoxHelper( object, color );\n\n}\n\nfunction EdgesHelper( object, hex ) {\n\n\tconsole.warn( 'THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.' );\n\treturn new LineSegments( new EdgesGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n}\n\nGridHelper.prototype.setColors = function () {\n\n\tconsole.error( 'THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.' );\n\n};\n\nSkeletonHelper.prototype.update = function () {\n\n\tconsole.error( 'THREE.SkeletonHelper: update() no longer needs to be called.' );\n\n};\n\nfunction WireframeHelper( object, hex ) {\n\n\tconsole.warn( 'THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.' );\n\treturn new LineSegments( new WireframeGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n}\n\n//\n\nObject.assign( Loader.prototype, {\n\n\textractUrlBase: function ( url ) {\n\n\t\tconsole.warn( 'THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.' );\n\t\treturn LoaderUtils.extractUrlBase( url );\n\n\t}\n\n} );\n\nfunction XHRLoader( manager ) {\n\n\tconsole.warn( 'THREE.XHRLoader has been renamed to THREE.FileLoader.' );\n\treturn new FileLoader( manager );\n\n}\n\nfunction BinaryTextureLoader( manager ) {\n\n\tconsole.warn( 'THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.' );\n\treturn new DataTextureLoader( manager );\n\n}\n\n//\n\nObject.assign( Box2.prototype, {\n\n\tcenter: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box2: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\n\t},\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Box2: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tsize: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box2: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\n\t}\n} );\n\nObject.assign( Box3.prototype, {\n\n\tcenter: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box3: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\n\t},\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Box3: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\n\t},\n\tsize: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box3: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\n\t}\n} );\n\nLine3.prototype.center = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Line3: .center() has been renamed to .getCenter().' );\n\treturn this.getCenter( optionalTarget );\n\n};\n\nObject.assign( _Math, {\n\n\trandom16: function () {\n\n\t\tconsole.warn( 'THREE.Math: .random16() has been deprecated. Use Math.random() instead.' );\n\t\treturn Math.random();\n\n\t},\n\n\tnearestPowerOfTwo: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Math: .nearestPowerOfTwo() has been renamed to .floorPowerOfTwo().' );\n\t\treturn _Math.floorPowerOfTwo( value );\n\n\t},\n\n\tnextPowerOfTwo: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Math: .nextPowerOfTwo() has been renamed to .ceilPowerOfTwo().' );\n\t\treturn _Math.ceilPowerOfTwo( value );\n\n\t}\n\n} );\n\nObject.assign( Matrix3.prototype, {\n\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\" );\n\t\treturn this.toArray( array, offset );\n\n\t},\n\tmultiplyVector3: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' );\n\t\treturn vector.applyMatrix3( this );\n\n\t},\n\tmultiplyVector3Array: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Matrix3: .multiplyVector3Array() has been removed.' );\n\n\t},\n\tapplyToBuffer: function ( buffer /*, offset, length */ ) {\n\n\t\tconsole.warn( 'THREE.Matrix3: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.' );\n\t\treturn this.applyToBufferAttribute( buffer );\n\n\t},\n\tapplyToVector3Array: function ( /* array, offset, length */ ) {\n\n\t\tconsole.error( 'THREE.Matrix3: .applyToVector3Array() has been removed.' );\n\n\t}\n\n} );\n\nObject.assign( Matrix4.prototype, {\n\n\textractPosition: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' );\n\t\treturn this.copyPosition( m );\n\n\t},\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\" );\n\t\treturn this.toArray( array, offset );\n\n\t},\n\tgetPosition: function () {\n\n\t\tvar v1;\n\n\t\treturn function getPosition() {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\t\t\tconsole.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' );\n\t\t\treturn v1.setFromMatrixColumn( this, 3 );\n\n\t\t};\n\n\t}(),\n\tsetRotationFromQuaternion: function ( q ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' );\n\t\treturn this.makeRotationFromQuaternion( q );\n\n\t},\n\tmultiplyToArray: function () {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyToArray() has been removed.' );\n\n\t},\n\tmultiplyVector3: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\tmultiplyVector4: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\tmultiplyVector3Array: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Matrix4: .multiplyVector3Array() has been removed.' );\n\n\t},\n\trotateAxis: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' );\n\t\tv.transformDirection( this );\n\n\t},\n\tcrossVector: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\ttranslate: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .translate() has been removed.' );\n\n\t},\n\trotateX: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateX() has been removed.' );\n\n\t},\n\trotateY: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateY() has been removed.' );\n\n\t},\n\trotateZ: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateZ() has been removed.' );\n\n\t},\n\trotateByAxis: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateByAxis() has been removed.' );\n\n\t},\n\tapplyToBuffer: function ( buffer /*, offset, length */ ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.' );\n\t\treturn this.applyToBufferAttribute( buffer );\n\n\t},\n\tapplyToVector3Array: function ( /* array, offset, length */ ) {\n\n\t\tconsole.error( 'THREE.Matrix4: .applyToVector3Array() has been removed.' );\n\n\t},\n\tmakeFrustum: function ( left, right, bottom, top, near, far ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.' );\n\t\treturn this.makePerspective( left, right, top, bottom, near, far );\n\n\t}\n\n} );\n\nPlane.prototype.isIntersectionLine = function ( line ) {\n\n\tconsole.warn( 'THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().' );\n\treturn this.intersectsLine( line );\n\n};\n\nQuaternion.prototype.multiplyVector3 = function ( vector ) {\n\n\tconsole.warn( 'THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.' );\n\treturn vector.applyQuaternion( this );\n\n};\n\nObject.assign( Ray.prototype, {\n\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tisIntersectionPlane: function ( plane ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().' );\n\t\treturn this.intersectsPlane( plane );\n\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\n\t}\n\n} );\n\nObject.assign( Triangle.prototype, {\n\n\tarea: function () {\n\n\t\tconsole.warn( 'THREE.Triangle: .area() has been renamed to .getArea().' );\n\t\treturn this.getArea();\n\n\t},\n\tbarycoordFromPoint: function ( point, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\t\treturn this.getBarycoord( point, target );\n\n\t},\n\tmidpoint: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .midpoint() has been renamed to .getMidpoint().' );\n\t\treturn this.getMidpoint( target );\n\n\t},\n\tnormal: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\t\treturn this.getNormal( target );\n\n\t},\n\tplane: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .plane() has been renamed to .getPlane().' );\n\t\treturn this.getPlane( target );\n\n\t}\n\n} );\n\nObject.assign( Triangle, {\n\n\tbarycoordFromPoint: function ( point, a, b, c, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\t\treturn Triangle.getBarycoord( point, a, b, c, target );\n\n\t},\n\tnormal: function ( a, b, c, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\t\treturn Triangle.getNormal( a, b, c, target );\n\n\t}\n\n} );\n\nObject.assign( Shape.prototype, {\n\n\textractAllPoints: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.' );\n\t\treturn this.extractPoints( divisions );\n\n\t},\n\textrude: function ( options ) {\n\n\t\tconsole.warn( 'THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.' );\n\t\treturn new ExtrudeGeometry( this, options );\n\n\t},\n\tmakeGeometry: function ( options ) {\n\n\t\tconsole.warn( 'THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.' );\n\t\treturn new ShapeGeometry( this, options );\n\n\t}\n\n} );\n\nObject.assign( Vector2.prototype, {\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tdistanceToManhattan: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\t\treturn this.manhattanDistanceTo( v );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\nObject.assign( Vector3.prototype, {\n\n\tsetEulerFromRotationMatrix: function () {\n\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' );\n\n\t},\n\tsetEulerFromQuaternion: function () {\n\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' );\n\n\t},\n\tgetPositionFromMatrix: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' );\n\t\treturn this.setFromMatrixPosition( m );\n\n\t},\n\tgetScaleFromMatrix: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' );\n\t\treturn this.setFromMatrixScale( m );\n\n\t},\n\tgetColumnFromMatrix: function ( index, matrix ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' );\n\t\treturn this.setFromMatrixColumn( matrix, index );\n\n\t},\n\tapplyProjection: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.' );\n\t\treturn this.applyMatrix4( m );\n\n\t},\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tdistanceToManhattan: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\t\treturn this.manhattanDistanceTo( v );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\nObject.assign( Vector4.prototype, {\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\n//\n\nObject.assign( Geometry.prototype, {\n\n\tcomputeTangents: function () {\n\n\t\tconsole.error( 'THREE.Geometry: .computeTangents() has been removed.' );\n\n\t},\n\tcomputeLineDistances: function () {\n\n\t\tconsole.error( 'THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.' );\n\n\t}\n\n} );\n\nObject.assign( Object3D.prototype, {\n\n\tgetChildByName: function ( name ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' );\n\t\treturn this.getObjectByName( name );\n\n\t},\n\trenderDepth: function () {\n\n\t\tconsole.warn( 'THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.' );\n\n\t},\n\ttranslate: function ( distance, axis ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' );\n\t\treturn this.translateOnAxis( axis, distance );\n\n\t},\n\tgetWorldRotation: function () {\n\n\t\tconsole.error( 'THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.' );\n\n\t}\n\n} );\n\nObject.defineProperties( Object3D.prototype, {\n\n\teulerOrder: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\treturn this.rotation.order;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\tthis.rotation.order = value;\n\n\t\t}\n\t},\n\tuseQuaternion: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( LOD.prototype, {\n\n\tobjects: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.LOD: .objects has been renamed to .levels.' );\n\t\t\treturn this.levels;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperty( Skeleton.prototype, 'useVertexTexture', {\n\n\tget: function () {\n\n\t\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\n\n\t},\n\tset: function () {\n\n\t\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\n\n\t}\n\n} );\n\nObject.defineProperty( Curve.prototype, '__arcLengthDivisions', {\n\n\tget: function () {\n\n\t\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\n\t\treturn this.arcLengthDivisions;\n\n\t},\n\tset: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\n\t\tthis.arcLengthDivisions = value;\n\n\t}\n\n} );\n\n//\n\nPerspectiveCamera.prototype.setLens = function ( focalLength, filmGauge ) {\n\n\tconsole.warn( \"THREE.PerspectiveCamera.setLens is deprecated. \" +\n\t\t\t\"Use .setFocalLength and .filmGauge for a photographic setup.\" );\n\n\tif ( filmGauge !== undefined ) this.filmGauge = filmGauge;\n\tthis.setFocalLength( focalLength );\n\n};\n\n//\n\nObject.defineProperties( Light.prototype, {\n\tonlyShadow: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .onlyShadow has been removed.' );\n\n\t\t}\n\t},\n\tshadowCameraFov: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFov is now .shadow.camera.fov.' );\n\t\t\tthis.shadow.camera.fov = value;\n\n\t\t}\n\t},\n\tshadowCameraLeft: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraLeft is now .shadow.camera.left.' );\n\t\t\tthis.shadow.camera.left = value;\n\n\t\t}\n\t},\n\tshadowCameraRight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraRight is now .shadow.camera.right.' );\n\t\t\tthis.shadow.camera.right = value;\n\n\t\t}\n\t},\n\tshadowCameraTop: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraTop is now .shadow.camera.top.' );\n\t\t\tthis.shadow.camera.top = value;\n\n\t\t}\n\t},\n\tshadowCameraBottom: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.' );\n\t\t\tthis.shadow.camera.bottom = value;\n\n\t\t}\n\t},\n\tshadowCameraNear: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraNear is now .shadow.camera.near.' );\n\t\t\tthis.shadow.camera.near = value;\n\n\t\t}\n\t},\n\tshadowCameraFar: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFar is now .shadow.camera.far.' );\n\t\t\tthis.shadow.camera.far = value;\n\n\t\t}\n\t},\n\tshadowCameraVisible: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.' );\n\n\t\t}\n\t},\n\tshadowBias: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowBias is now .shadow.bias.' );\n\t\t\tthis.shadow.bias = value;\n\n\t\t}\n\t},\n\tshadowDarkness: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowDarkness has been removed.' );\n\n\t\t}\n\t},\n\tshadowMapWidth: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.' );\n\t\t\tthis.shadow.mapSize.width = value;\n\n\t\t}\n\t},\n\tshadowMapHeight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.' );\n\t\t\tthis.shadow.mapSize.height = value;\n\n\t\t}\n\t}\n} );\n\n//\n\nObject.defineProperties( BufferAttribute.prototype, {\n\n\tlength: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .length has been deprecated. Use .count instead.' );\n\t\t\treturn this.array.length;\n\n\t\t}\n\t},\n\tcopyIndicesArray: function ( /* indices */ ) {\n\n\t\tconsole.error( 'THREE.BufferAttribute: .copyIndicesArray() has been removed.' );\n\n\t}\n\n} );\n\nObject.assign( BufferGeometry.prototype, {\n\n\taddIndex: function ( index ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().' );\n\t\tthis.setIndex( index );\n\n\t},\n\taddDrawCall: function ( start, count, indexOffset ) {\n\n\t\tif ( indexOffset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.' );\n\n\t\t}\n\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() is now .addGroup().' );\n\t\tthis.addGroup( start, count );\n\n\t},\n\tclearDrawCalls: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().' );\n\t\tthis.clearGroups();\n\n\t},\n\tcomputeTangents: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeTangents() has been removed.' );\n\n\t},\n\tcomputeOffsets: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeOffsets() has been removed.' );\n\n\t}\n\n} );\n\nObject.defineProperties( BufferGeometry.prototype, {\n\n\tdrawcalls: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .drawcalls has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t},\n\toffsets: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .offsets has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.assign( ExtrudeBufferGeometry.prototype, {\n\n\tgetArrays: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .getArrays() has been removed.' );\n\n\t},\n\n\taddShapeList: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .addShapeList() has been removed.' );\n\n\t},\n\n\taddShape: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .addShape() has been removed.' );\n\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Uniform.prototype, {\n\n\tdynamic: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.' );\n\n\t\t}\n\t},\n\tonUpdate: {\n\t\tvalue: function () {\n\n\t\t\tconsole.warn( 'THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.' );\n\t\t\treturn this;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Material.prototype, {\n\n\twrapAround: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t}\n\t},\n\twrapRGB: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapRGB has been removed.' );\n\t\t\treturn new Color();\n\n\t\t}\n\t},\n\n\tshading: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\tthis.flatShading = ( value === FlatShading );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( MeshPhongMaterial.prototype, {\n\n\tmetal: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead' );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( ShaderMaterial.prototype, {\n\n\tderivatives: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\treturn this.extensions.derivatives;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\tthis.extensions.derivatives = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.assign( WebGLRenderer.prototype, {\n\n\tanimate: function ( callback ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .animate() is now .setAnimationLoop().' );\n\t\tthis.setAnimationLoop( callback );\n\n\t},\n\n\tgetCurrentRenderTarget: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().' );\n\t\treturn this.getRenderTarget();\n\n\t},\n\n\tgetMaxAnisotropy: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().' );\n\t\treturn this.capabilities.getMaxAnisotropy();\n\n\t},\n\n\tgetPrecision: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.' );\n\t\treturn this.capabilities.precision;\n\n\t},\n\n\tresetGLState: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .resetGLState() is now .state.reset().' );\n\t\treturn this.state.reset();\n\n\t},\n\n\tsupportsFloatTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \\'OES_texture_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_float' );\n\n\t},\n\tsupportsHalfFloatTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \\'OES_texture_half_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_half_float' );\n\n\t},\n\tsupportsStandardDerivatives: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \\'OES_standard_derivatives\\' ).' );\n\t\treturn this.extensions.get( 'OES_standard_derivatives' );\n\n\t},\n\tsupportsCompressedTextureS3TC: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \\'WEBGL_compressed_texture_s3tc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t},\n\tsupportsCompressedTexturePVRTC: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \\'WEBGL_compressed_texture_pvrtc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t},\n\tsupportsBlendMinMax: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \\'EXT_blend_minmax\\' ).' );\n\t\treturn this.extensions.get( 'EXT_blend_minmax' );\n\n\t},\n\tsupportsVertexTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.' );\n\t\treturn this.capabilities.vertexTextures;\n\n\t},\n\tsupportsInstancedArrays: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \\'ANGLE_instanced_arrays\\' ).' );\n\t\treturn this.extensions.get( 'ANGLE_instanced_arrays' );\n\n\t},\n\tenableScissorTest: function ( boolean ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().' );\n\t\tthis.setScissorTest( boolean );\n\n\t},\n\tinitMaterial: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' );\n\n\t},\n\taddPrePlugin: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' );\n\n\t},\n\taddPostPlugin: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' );\n\n\t},\n\tupdateShadowMap: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' );\n\n\t},\n\tsetFaceCulling: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setFaceCulling() has been removed.' );\n\n\t}\n\n} );\n\nObject.defineProperties( WebGLRenderer.prototype, {\n\n\tshadowMapEnabled: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.enabled;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.' );\n\t\t\tthis.shadowMap.enabled = value;\n\n\t\t}\n\t},\n\tshadowMapType: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.' );\n\t\t\tthis.shadowMap.type = value;\n\n\t\t}\n\t},\n\tshadowMapCullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t}\n} );\n\nObject.defineProperties( WebGLShadowMap.prototype, {\n\n\tcullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* cullFace */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderReverseSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderSingleSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( WebGLRenderTarget.prototype, {\n\n\twrapS: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\treturn this.texture.wrapS;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\tthis.texture.wrapS = value;\n\n\t\t}\n\t},\n\twrapT: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\treturn this.texture.wrapT;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\tthis.texture.wrapT = value;\n\n\t\t}\n\t},\n\tmagFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\treturn this.texture.magFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\tthis.texture.magFilter = value;\n\n\t\t}\n\t},\n\tminFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\treturn this.texture.minFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\tthis.texture.minFilter = value;\n\n\t\t}\n\t},\n\tanisotropy: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\treturn this.texture.anisotropy;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\tthis.texture.anisotropy = value;\n\n\t\t}\n\t},\n\toffset: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\treturn this.texture.offset;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\tthis.texture.offset = value;\n\n\t\t}\n\t},\n\trepeat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\treturn this.texture.repeat;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\tthis.texture.repeat = value;\n\n\t\t}\n\t},\n\tformat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\treturn this.texture.format;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\tthis.texture.format = value;\n\n\t\t}\n\t},\n\ttype: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\treturn this.texture.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\tthis.texture.type = value;\n\n\t\t}\n\t},\n\tgenerateMipmaps: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\treturn this.texture.generateMipmaps;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\tthis.texture.generateMipmaps = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( WebVRManager.prototype, {\n\n\tstanding: {\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebVRManager: .standing has been removed.' );\n\n\t\t}\n\t}\n\n} );\n\n//\n\nAudio.prototype.load = function ( file ) {\n\n\tconsole.warn( 'THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.' );\n\tvar scope = this;\n\tvar audioLoader = new AudioLoader();\n\taudioLoader.load( file, function ( buffer ) {\n\n\t\tscope.setBuffer( buffer );\n\n\t} );\n\treturn this;\n\n};\n\nAudioAnalyser.prototype.getData = function () {\n\n\tconsole.warn( 'THREE.AudioAnalyser: .getData() is now .getFrequencyData().' );\n\treturn this.getFrequencyData();\n\n};\n\n//\n\nCubeCamera.prototype.updateCubeMap = function ( renderer, scene ) {\n\n\tconsole.warn( 'THREE.CubeCamera: .updateCubeMap() is now .update().' );\n\treturn this.update( renderer, scene );\n\n};\n\n//\n\nvar GeometryUtils = {\n\n\tmerge: function ( geometry1, geometry2, materialIndexOffset ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.' );\n\t\tvar matrix;\n\n\t\tif ( geometry2.isMesh ) {\n\n\t\t\tgeometry2.matrixAutoUpdate && geometry2.updateMatrix();\n\n\t\t\tmatrix = geometry2.matrix;\n\t\t\tgeometry2 = geometry2.geometry;\n\n\t\t}\n\n\t\tgeometry1.merge( geometry2, matrix, materialIndexOffset );\n\n\t},\n\n\tcenter: function ( geometry ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.' );\n\t\treturn geometry.center();\n\n\t}\n\n};\n\nvar ImageUtils = {\n\n\tcrossOrigin: undefined,\n\n\tloadTexture: function ( url, mapping, onLoad, onError ) {\n\n\t\tconsole.warn( 'THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.' );\n\n\t\tvar loader = new TextureLoader();\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\tvar texture = loader.load( url, onLoad, undefined, onError );\n\n\t\tif ( mapping ) texture.mapping = mapping;\n\n\t\treturn texture;\n\n\t},\n\n\tloadTextureCube: function ( urls, mapping, onLoad, onError ) {\n\n\t\tconsole.warn( 'THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.' );\n\n\t\tvar loader = new CubeTextureLoader();\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\tvar texture = loader.load( urls, onLoad, undefined, onError );\n\n\t\tif ( mapping ) texture.mapping = mapping;\n\n\t\treturn texture;\n\n\t},\n\n\tloadCompressedTexture: function () {\n\n\t\tconsole.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' );\n\n\t},\n\n\tloadCompressedTextureCube: function () {\n\n\t\tconsole.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' );\n\n\t}\n\n};\n\n//\n\nfunction Projector() {\n\n\tconsole.error( 'THREE.Projector has been moved to /examples/js/renderers/Projector.js.' );\n\n\tthis.projectVector = function ( vector, camera ) {\n\n\t\tconsole.warn( 'THREE.Projector: .projectVector() is now vector.project().' );\n\t\tvector.project( camera );\n\n\t};\n\n\tthis.unprojectVector = function ( vector, camera ) {\n\n\t\tconsole.warn( 'THREE.Projector: .unprojectVector() is now vector.unproject().' );\n\t\tvector.unproject( camera );\n\n\t};\n\n\tthis.pickingRay = function () {\n\n\t\tconsole.error( 'THREE.Projector: .pickingRay() is now raycaster.setFromCamera().' );\n\n\t};\n\n}\n\n//\n\nfunction CanvasRenderer() {\n\n\tconsole.error( 'THREE.CanvasRenderer has been moved to /examples/js/renderers/CanvasRenderer.js' );\n\n\tthis.domElement = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\tthis.clear = function () {};\n\tthis.render = function () {};\n\tthis.setClearColor = function () {};\n\tthis.setSize = function () {};\n\n}\n\n//\n\nvar SceneUtils = {\n\n\tcreateMultiMaterialObject: function ( /* geometry, materials */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js' );\n\n\t},\n\n\tdetach: function ( /* child, parent, scene */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js' );\n\n\t},\n\n\tattach: function ( /* child, scene, parent */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js' );\n\n\t}\n\n};\n\n//\n\nfunction LensFlare() {\n\n\tconsole.error( 'THREE.LensFlare has been moved to /examples/js/objects/Lensflare.js' );\n\n}\n\nexport { WebGLRenderTargetCube, WebGLRenderTarget, WebGLRenderer, ShaderLib, UniformsLib, UniformsUtils, ShaderChunk, FogExp2, Fog, Scene, Sprite, LOD, SkinnedMesh, Skeleton, Bone, Mesh, LineSegments, LineLoop, Line, Points, Group, VideoTexture, DataTexture, CompressedTexture, CubeTexture, CanvasTexture, DepthTexture, Texture, CompressedTextureLoader, DataTextureLoader, CubeTextureLoader, TextureLoader, ObjectLoader, MaterialLoader, BufferGeometryLoader, DefaultLoadingManager, LoadingManager, JSONLoader, ImageLoader, ImageBitmapLoader, FontLoader, FileLoader, Loader, LoaderUtils, Cache, AudioLoader, SpotLightShadow, SpotLight, PointLight, RectAreaLight, HemisphereLight, DirectionalLightShadow, DirectionalLight, AmbientLight, LightShadow, Light, StereoCamera, PerspectiveCamera, OrthographicCamera, CubeCamera, ArrayCamera, Camera, AudioListener, PositionalAudio, AudioContext, AudioAnalyser, Audio, VectorKeyframeTrack, StringKeyframeTrack, QuaternionKeyframeTrack, NumberKeyframeTrack, ColorKeyframeTrack, BooleanKeyframeTrack, PropertyMixer, PropertyBinding, KeyframeTrack, AnimationUtils, AnimationObjectGroup, AnimationMixer, AnimationClip, Uniform, InstancedBufferGeometry, BufferGeometry, Geometry, InterleavedBufferAttribute, InstancedInterleavedBuffer, InterleavedBuffer, InstancedBufferAttribute, Face3, Object3D, Raycaster, Layers, EventDispatcher, Clock, QuaternionLinearInterpolant, LinearInterpolant, DiscreteInterpolant, CubicInterpolant, Interpolant, Triangle, _Math as Math, Spherical, Cylindrical, Plane, Frustum, Sphere, Ray, Matrix4, Matrix3, Box3, Box2, Line3, Euler, Vector4, Vector3, Vector2, Quaternion, Color, ImmediateRenderObject, VertexNormalsHelper, SpotLightHelper, SkeletonHelper, PointLightHelper, RectAreaLightHelper, HemisphereLightHelper, GridHelper, PolarGridHelper, FaceNormalsHelper, DirectionalLightHelper, CameraHelper, BoxHelper, Box3Helper, PlaneHelper, ArrowHelper, AxesHelper, Shape, Path, ShapePath, Font, CurvePath, Curve, ShapeUtils, WebGLUtils, WireframeGeometry, ParametricGeometry, ParametricBufferGeometry, TetrahedronGeometry, TetrahedronBufferGeometry, OctahedronGeometry, OctahedronBufferGeometry, IcosahedronGeometry, IcosahedronBufferGeometry, DodecahedronGeometry, DodecahedronBufferGeometry, PolyhedronGeometry, PolyhedronBufferGeometry, TubeGeometry, TubeBufferGeometry, TorusKnotGeometry, TorusKnotBufferGeometry, TorusGeometry, TorusBufferGeometry, TextGeometry, TextBufferGeometry, SphereGeometry, SphereBufferGeometry, RingGeometry, RingBufferGeometry, PlaneGeometry, PlaneBufferGeometry, LatheGeometry, LatheBufferGeometry, ShapeGeometry, ShapeBufferGeometry, ExtrudeGeometry, ExtrudeBufferGeometry, EdgesGeometry, ConeGeometry, ConeBufferGeometry, CylinderGeometry, CylinderBufferGeometry, CircleGeometry, CircleBufferGeometry, BoxGeometry, BoxBufferGeometry, ShadowMaterial, SpriteMaterial, RawShaderMaterial, ShaderMaterial, PointsMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshPhongMaterial, MeshToonMaterial, MeshNormalMaterial, MeshLambertMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshBasicMaterial, LineDashedMaterial, LineBasicMaterial, Material, Float64BufferAttribute, Float32BufferAttribute, Uint32BufferAttribute, Int32BufferAttribute, Uint16BufferAttribute, Int16BufferAttribute, Uint8ClampedBufferAttribute, Uint8BufferAttribute, Int8BufferAttribute, BufferAttribute, ArcCurve, CatmullRomCurve3, CubicBezierCurve, CubicBezierCurve3, EllipseCurve, LineCurve, LineCurve3, QuadraticBezierCurve, QuadraticBezierCurve3, SplineCurve, 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, 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, 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, BoxGeometry as CubeGeometry, Face4, LineStrip, LinePieces, MeshFaceMaterial, MultiMaterial, PointCloud, Particle, ParticleSystem, PointCloudMaterial, ParticleBasicMaterial, ParticleSystemMaterial, Vertex, DynamicBufferAttribute, Int8Attribute, Uint8Attribute, Uint8ClampedAttribute, Int16Attribute, Uint16Attribute, Int32Attribute, Uint32Attribute, Float32Attribute, Float64Attribute, ClosedSplineCurve3, SplineCurve3, Spline, AxisHelper, BoundingBoxHelper, EdgesHelper, WireframeHelper, XHRLoader, BinaryTextureLoader, GeometryUtils, ImageUtils, Projector, CanvasRenderer, SceneUtils, LensFlare };\n","// Polyfills\n\nif ( Number.EPSILON === undefined ) {\n\n\tNumber.EPSILON = Math.pow( 2, - 52 );\n\n}\n\nif ( Number.isInteger === undefined ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger\n\n\tNumber.isInteger = function ( value ) {\n\n\t\treturn typeof value === 'number' && isFinite( value ) && Math.floor( value ) === value;\n\n\t};\n\n}\n\n//\n\nif ( Math.sign === undefined ) {\n\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign\n\n\tMath.sign = function ( x ) {\n\n\t\treturn ( x < 0 ) ? - 1 : ( x > 0 ) ? 1 : + x;\n\n\t};\n\n}\n\nif ( 'name' in Function.prototype === false ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name\n\n\tObject.defineProperty( Function.prototype, 'name', {\n\n\t\tget: function () {\n\n\t\t\treturn this.toString().match( /^\\s*function\\s*([^\\(\\s]*)/ )[ 1 ];\n\n\t\t}\n\n\t} );\n\n}\n\nif ( Object.assign === undefined ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n\n\t( function () {\n\n\t\tObject.assign = function ( target ) {\n\n\t\t\tif ( target === undefined || target === null ) {\n\n\t\t\t\tthrow new TypeError( 'Cannot convert undefined or null to object' );\n\n\t\t\t}\n\n\t\t\tvar output = Object( target );\n\n\t\t\tfor ( var index = 1; index < arguments.length; index ++ ) {\n\n\t\t\t\tvar source = arguments[ index ];\n\n\t\t\t\tif ( source !== undefined && source !== null ) {\n\n\t\t\t\t\tfor ( var nextKey in source ) {\n\n\t\t\t\t\t\tif ( Object.prototype.hasOwnProperty.call( source, nextKey ) ) {\n\n\t\t\t\t\t\t\toutput[ nextKey ] = source[ nextKey ];\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn output;\n\n\t\t};\n\n\t} )();\n\n}\n\n/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nfunction EventDispatcher() {}\n\nObject.assign( EventDispatcher.prototype, {\n\n\taddEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\tvar listeners = this._listeners;\n\n\t\tif ( listeners[ type ] === undefined ) {\n\n\t\t\tlisteners[ type ] = [];\n\n\t\t}\n\n\t\tif ( listeners[ type ].indexOf( listener ) === - 1 ) {\n\n\t\t\tlisteners[ type ].push( listener );\n\n\t\t}\n\n\t},\n\n\thasEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return false;\n\n\t\tvar listeners = this._listeners;\n\n\t\treturn listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;\n\n\t},\n\n\tremoveEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tvar listeners = this._listeners;\n\t\tvar listenerArray = listeners[ type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tvar index = listenerArray.indexOf( listener );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\tlistenerArray.splice( index, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tdispatchEvent: function ( event ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tvar listeners = this._listeners;\n\t\tvar listenerArray = listeners[ event.type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tevent.target = this;\n\n\t\t\tvar array = listenerArray.slice( 0 );\n\n\t\t\tfor ( var i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\nvar REVISION = '95';\nvar MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2 };\nvar CullFaceNone = 0;\nvar CullFaceBack = 1;\nvar CullFaceFront = 2;\nvar CullFaceFrontBack = 3;\nvar FrontFaceDirectionCW = 0;\nvar FrontFaceDirectionCCW = 1;\nvar BasicShadowMap = 0;\nvar PCFShadowMap = 1;\nvar PCFSoftShadowMap = 2;\nvar FrontSide = 0;\nvar BackSide = 1;\nvar DoubleSide = 2;\nvar FlatShading = 1;\nvar SmoothShading = 2;\nvar NoColors = 0;\nvar FaceColors = 1;\nvar VertexColors = 2;\nvar NoBlending = 0;\nvar NormalBlending = 1;\nvar AdditiveBlending = 2;\nvar SubtractiveBlending = 3;\nvar MultiplyBlending = 4;\nvar CustomBlending = 5;\nvar AddEquation = 100;\nvar SubtractEquation = 101;\nvar ReverseSubtractEquation = 102;\nvar MinEquation = 103;\nvar MaxEquation = 104;\nvar ZeroFactor = 200;\nvar OneFactor = 201;\nvar SrcColorFactor = 202;\nvar OneMinusSrcColorFactor = 203;\nvar SrcAlphaFactor = 204;\nvar OneMinusSrcAlphaFactor = 205;\nvar DstAlphaFactor = 206;\nvar OneMinusDstAlphaFactor = 207;\nvar DstColorFactor = 208;\nvar OneMinusDstColorFactor = 209;\nvar SrcAlphaSaturateFactor = 210;\nvar NeverDepth = 0;\nvar AlwaysDepth = 1;\nvar LessDepth = 2;\nvar LessEqualDepth = 3;\nvar EqualDepth = 4;\nvar GreaterEqualDepth = 5;\nvar GreaterDepth = 6;\nvar NotEqualDepth = 7;\nvar MultiplyOperation = 0;\nvar MixOperation = 1;\nvar AddOperation = 2;\nvar NoToneMapping = 0;\nvar LinearToneMapping = 1;\nvar ReinhardToneMapping = 2;\nvar Uncharted2ToneMapping = 3;\nvar CineonToneMapping = 4;\nvar UVMapping = 300;\nvar CubeReflectionMapping = 301;\nvar CubeRefractionMapping = 302;\nvar EquirectangularReflectionMapping = 303;\nvar EquirectangularRefractionMapping = 304;\nvar SphericalReflectionMapping = 305;\nvar CubeUVReflectionMapping = 306;\nvar CubeUVRefractionMapping = 307;\nvar RepeatWrapping = 1000;\nvar ClampToEdgeWrapping = 1001;\nvar MirroredRepeatWrapping = 1002;\nvar NearestFilter = 1003;\nvar NearestMipMapNearestFilter = 1004;\nvar NearestMipMapLinearFilter = 1005;\nvar LinearFilter = 1006;\nvar LinearMipMapNearestFilter = 1007;\nvar LinearMipMapLinearFilter = 1008;\nvar UnsignedByteType = 1009;\nvar ByteType = 1010;\nvar ShortType = 1011;\nvar UnsignedShortType = 1012;\nvar IntType = 1013;\nvar UnsignedIntType = 1014;\nvar FloatType = 1015;\nvar HalfFloatType = 1016;\nvar UnsignedShort4444Type = 1017;\nvar UnsignedShort5551Type = 1018;\nvar UnsignedShort565Type = 1019;\nvar UnsignedInt248Type = 1020;\nvar AlphaFormat = 1021;\nvar RGBFormat = 1022;\nvar RGBAFormat = 1023;\nvar LuminanceFormat = 1024;\nvar LuminanceAlphaFormat = 1025;\nvar RGBEFormat = RGBAFormat;\nvar DepthFormat = 1026;\nvar DepthStencilFormat = 1027;\nvar RGB_S3TC_DXT1_Format = 33776;\nvar RGBA_S3TC_DXT1_Format = 33777;\nvar RGBA_S3TC_DXT3_Format = 33778;\nvar RGBA_S3TC_DXT5_Format = 33779;\nvar RGB_PVRTC_4BPPV1_Format = 35840;\nvar RGB_PVRTC_2BPPV1_Format = 35841;\nvar RGBA_PVRTC_4BPPV1_Format = 35842;\nvar RGBA_PVRTC_2BPPV1_Format = 35843;\nvar RGB_ETC1_Format = 36196;\nvar RGBA_ASTC_4x4_Format = 37808;\nvar RGBA_ASTC_5x4_Format = 37809;\nvar RGBA_ASTC_5x5_Format = 37810;\nvar RGBA_ASTC_6x5_Format = 37811;\nvar RGBA_ASTC_6x6_Format = 37812;\nvar RGBA_ASTC_8x5_Format = 37813;\nvar RGBA_ASTC_8x6_Format = 37814;\nvar RGBA_ASTC_8x8_Format = 37815;\nvar RGBA_ASTC_10x5_Format = 37816;\nvar RGBA_ASTC_10x6_Format = 37817;\nvar RGBA_ASTC_10x8_Format = 37818;\nvar RGBA_ASTC_10x10_Format = 37819;\nvar RGBA_ASTC_12x10_Format = 37820;\nvar RGBA_ASTC_12x12_Format = 37821;\nvar LoopOnce = 2200;\nvar LoopRepeat = 2201;\nvar LoopPingPong = 2202;\nvar InterpolateDiscrete = 2300;\nvar InterpolateLinear = 2301;\nvar InterpolateSmooth = 2302;\nvar ZeroCurvatureEnding = 2400;\nvar ZeroSlopeEnding = 2401;\nvar WrapAroundEnding = 2402;\nvar TrianglesDrawMode = 0;\nvar TriangleStripDrawMode = 1;\nvar TriangleFanDrawMode = 2;\nvar LinearEncoding = 3000;\nvar sRGBEncoding = 3001;\nvar GammaEncoding = 3007;\nvar RGBEEncoding = 3002;\nvar LogLuvEncoding = 3003;\nvar RGBM7Encoding = 3004;\nvar RGBM16Encoding = 3005;\nvar RGBDEncoding = 3006;\nvar BasicDepthPacking = 3200;\nvar RGBADepthPacking = 3201;\nvar TangentSpaceNormalMap = 0;\nvar ObjectSpaceNormalMap = 1;\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar _Math = {\n\n\tDEG2RAD: Math.PI / 180,\n\tRAD2DEG: 180 / Math.PI,\n\n\tgenerateUUID: ( function () {\n\n\t\t// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\n\n\t\tvar lut = [];\n\n\t\tfor ( var i = 0; i < 256; i ++ ) {\n\n\t\t\tlut[ i ] = ( i < 16 ? '0' : '' ) + ( i ).toString( 16 );\n\n\t\t}\n\n\t\treturn function generateUUID() {\n\n\t\t\tvar d0 = Math.random() * 0xffffffff | 0;\n\t\t\tvar d1 = Math.random() * 0xffffffff | 0;\n\t\t\tvar d2 = Math.random() * 0xffffffff | 0;\n\t\t\tvar d3 = Math.random() * 0xffffffff | 0;\n\t\t\tvar uuid = lut[ d0 & 0xff ] + lut[ d0 >> 8 & 0xff ] + lut[ d0 >> 16 & 0xff ] + lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t\tlut[ d1 & 0xff ] + lut[ d1 >> 8 & 0xff ] + '-' + lut[ d1 >> 16 & 0x0f | 0x40 ] + lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t\tlut[ d2 & 0x3f | 0x80 ] + lut[ d2 >> 8 & 0xff ] + '-' + lut[ d2 >> 16 & 0xff ] + lut[ d2 >> 24 & 0xff ] +\n\t\t\t\tlut[ d3 & 0xff ] + lut[ d3 >> 8 & 0xff ] + lut[ d3 >> 16 & 0xff ] + lut[ d3 >> 24 & 0xff ];\n\n\t\t\t// .toUpperCase() here flattens concatenated strings to save heap memory space.\n\t\t\treturn uuid.toUpperCase();\n\n\t\t};\n\n\t} )(),\n\n\tclamp: function ( value, min, max ) {\n\n\t\treturn Math.max( min, Math.min( max, value ) );\n\n\t},\n\n\t// compute euclidian modulo of m % n\n\t// https://en.wikipedia.org/wiki/Modulo_operation\n\n\teuclideanModulo: function ( n, m ) {\n\n\t\treturn ( ( n % m ) + m ) % m;\n\n\t},\n\n\t// Linear mapping from range <a1, a2> to range <b1, b2>\n\n\tmapLinear: function ( x, a1, a2, b1, b2 ) {\n\n\t\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n\t},\n\n\t// https://en.wikipedia.org/wiki/Linear_interpolation\n\n\tlerp: function ( x, y, t ) {\n\n\t\treturn ( 1 - t ) * x + t * y;\n\n\t},\n\n\t// http://en.wikipedia.org/wiki/Smoothstep\n\n\tsmoothstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * ( 3 - 2 * x );\n\n\t},\n\n\tsmootherstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n\t},\n\n\t// Random integer from <low, high> interval\n\n\trandInt: function ( low, high ) {\n\n\t\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n\t},\n\n\t// Random float from <low, high> interval\n\n\trandFloat: function ( low, high ) {\n\n\t\treturn low + Math.random() * ( high - low );\n\n\t},\n\n\t// Random float from <-range/2, range/2> interval\n\n\trandFloatSpread: function ( range ) {\n\n\t\treturn range * ( 0.5 - Math.random() );\n\n\t},\n\n\tdegToRad: function ( degrees ) {\n\n\t\treturn degrees * _Math.DEG2RAD;\n\n\t},\n\n\tradToDeg: function ( radians ) {\n\n\t\treturn radians * _Math.RAD2DEG;\n\n\t},\n\n\tisPowerOfTwo: function ( value ) {\n\n\t\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n\t},\n\n\tceilPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n\t},\n\n\tfloorPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author philogb / http://blog.thejit.org/\n * @author egraether / http://egraether.com/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n */\n\nfunction Vector2( x, y ) {\n\n\tthis.x = x || 0;\n\tthis.y = y || 0;\n\n}\n\nObject.defineProperties( Vector2.prototype, {\n\n\t\"width\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.x = value;\n\n\t\t}\n\n\t},\n\n\t\"height\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.y = value;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Vector2.prototype, {\n\n\tisVector2: true,\n\n\tset: function ( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tdivide: function ( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tvar x = this.x, y = this.y;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\n\n\t\treturn this;\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function () {\n\n\t\tvar min = new Vector2();\n\t\tvar max = new Vector2();\n\n\t\treturn function clampScalar( minVal, maxVal ) {\n\n\t\t\tmin.set( minVal, minVal );\n\t\t\tmax.set( maxVal, maxVal );\n\n\t\t\treturn this.clamp( min, max );\n\n\t\t};\n\n\t}(),\n\n\tclampLength: function ( min, max ) {\n\n\t\tvar length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t},\n\n\tcross: function ( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tangle: function () {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tvar angle = Math.atan2( this.y, this.x );\n\n\t\tif ( angle < 0 ) angle += 2 * Math.PI;\n\n\t\treturn angle;\n\n\t},\n\n\tdistanceTo: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( v ) {\n\n\t\tvar dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t},\n\n\tmanhattanDistanceTo: function ( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\n\t\treturn this;\n\n\t},\n\n\trotateAround: function ( center, angle ) {\n\n\t\tvar c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tvar x = this.x - center.x;\n\t\tvar y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author philogb / http://blog.thejit.org/\n * @author jordi_ros / http://plattsoft.com\n * @author D1plo1d / http://github.com/D1plo1d\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author timknip / http://www.floorplanner.com/\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Matrix4() {\n\n\tthis.elements = [\n\n\t\t1, 0, 0, 0,\n\t\t0, 1, 0, 0,\n\t\t0, 0, 1, 0,\n\t\t0, 0, 0, 1\n\n\t];\n\n\tif ( arguments.length > 0 ) {\n\n\t\tconsole.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' );\n\n\t}\n\n}\n\nObject.assign( Matrix4.prototype, {\n\n\tisMatrix4: true,\n\n\tset: function ( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t},\n\n\tcopy: function ( m ) {\n\n\t\tvar te = this.elements;\n\t\tvar me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\n\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\n\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\n\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\n\n\t\treturn this;\n\n\t},\n\n\tcopyPosition: function ( m ) {\n\n\t\tvar te = this.elements, me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\textractBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t},\n\n\tmakeBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\textractRotation: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function extractRotation( m ) {\n\n\t\t\t// this method does not support reflection matrices\n\n\t\t\tvar te = this.elements;\n\t\t\tvar me = m.elements;\n\n\t\t\tvar scaleX = 1 / v1.setFromMatrixColumn( m, 0 ).length();\n\t\t\tvar scaleY = 1 / v1.setFromMatrixColumn( m, 1 ).length();\n\t\t\tvar scaleZ = 1 / v1.setFromMatrixColumn( m, 2 ).length();\n\n\t\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\t\t\tte[ 3 ] = 0;\n\n\t\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\t\t\tte[ 7 ] = 0;\n\n\t\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\t\t\tte[ 11 ] = 0;\n\n\t\t\tte[ 12 ] = 0;\n\t\t\tte[ 13 ] = 0;\n\t\t\tte[ 14 ] = 0;\n\t\t\tte[ 15 ] = 1;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tmakeRotationFromEuler: function ( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tvar te = this.elements;\n\n\t\tvar x = euler.x, y = euler.y, z = euler.z;\n\t\tvar a = Math.cos( x ), b = Math.sin( x );\n\t\tvar c = Math.cos( y ), d = Math.sin( y );\n\t\tvar e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tvar ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tvar ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tvar ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tvar ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tvar ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tvar ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// bottom row\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// last column\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationFromQuaternion: function () {\n\n\t\tvar zero = new Vector3( 0, 0, 0 );\n\t\tvar one = new Vector3( 1, 1, 1 );\n\n\t\treturn function makeRotationFromQuaternion( q ) {\n\n\t\t\treturn this.compose( zero, q, one );\n\n\t\t};\n\n\t}(),\n\n\tlookAt: function () {\n\n\t\tvar x = new Vector3();\n\t\tvar y = new Vector3();\n\t\tvar z = new Vector3();\n\n\t\treturn function lookAt( eye, target, up ) {\n\n\t\t\tvar te = this.elements;\n\n\t\t\tz.subVectors( eye, target );\n\n\t\t\tif ( z.lengthSq() === 0 ) {\n\n\t\t\t\t// eye and target are in the same position\n\n\t\t\t\tz.z = 1;\n\n\t\t\t}\n\n\t\t\tz.normalize();\n\t\t\tx.crossVectors( up, z );\n\n\t\t\tif ( x.lengthSq() === 0 ) {\n\n\t\t\t\t// up and z are parallel\n\n\t\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t\tz.x += 0.0001;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz.z += 0.0001;\n\n\t\t\t\t}\n\n\t\t\t\tz.normalize();\n\t\t\t\tx.crossVectors( up, z );\n\n\t\t\t}\n\n\t\t\tx.normalize();\n\t\t\ty.crossVectors( z, x );\n\n\t\t\tte[ 0 ] = x.x; te[ 4 ] = y.x; te[ 8 ] = z.x;\n\t\t\tte[ 1 ] = x.y; te[ 5 ] = y.y; te[ 9 ] = z.y;\n\t\t\tte[ 2 ] = x.z; te[ 6 ] = y.z; te[ 10 ] = z.z;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tmultiply: function ( m, n ) {\n\n\t\tif ( n !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' );\n\t\t\treturn this.multiplyMatrices( m, n );\n\n\t\t}\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t},\n\n\tpremultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t},\n\n\tmultiplyMatrices: function ( a, b ) {\n\n\t\tvar ae = a.elements;\n\t\tvar be = b.elements;\n\t\tvar te = this.elements;\n\n\t\tvar a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tvar a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tvar a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tvar a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tvar b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tvar b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tvar b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tvar b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t},\n\n\tapplyToBufferAttribute: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function applyToBufferAttribute( attribute ) {\n\n\t\t\tfor ( var i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\t\tv1.x = attribute.getX( i );\n\t\t\t\tv1.y = attribute.getY( i );\n\t\t\t\tv1.z = attribute.getZ( i );\n\n\t\t\t\tv1.applyMatrix4( this );\n\n\t\t\t\tattribute.setXYZ( i, v1.x, v1.y, v1.z );\n\n\t\t\t}\n\n\t\t\treturn attribute;\n\n\t\t};\n\n\t}(),\n\n\tdeterminant: function () {\n\n\t\tvar te = this.elements;\n\n\t\tvar n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tvar n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tvar n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tvar n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t},\n\n\ttranspose: function () {\n\n\t\tvar te = this.elements;\n\t\tvar tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t},\n\n\tsetPosition: function ( v ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 12 ] = v.x;\n\t\tte[ 13 ] = v.y;\n\t\tte[ 14 ] = v.z;\n\n\t\treturn this;\n\n\t},\n\n\tgetInverse: function ( m, throwOnDegenerate ) {\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tvar te = this.elements,\n\t\t\tme = m.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ], n41 = me[ 3 ],\n\t\t\tn12 = me[ 4 ], n22 = me[ 5 ], n32 = me[ 6 ], n42 = me[ 7 ],\n\t\t\tn13 = me[ 8 ], n23 = me[ 9 ], n33 = me[ 10 ], n43 = me[ 11 ],\n\t\t\tn14 = me[ 12 ], n24 = me[ 13 ], n34 = me[ 14 ], n44 = me[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tvar det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) {\n\n\t\t\tvar msg = \"THREE.Matrix4: .getInverse() can't invert matrix, determinant is 0\";\n\n\t\t\tif ( throwOnDegenerate === true ) {\n\n\t\t\t\tthrow new Error( msg );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( msg );\n\n\t\t\t}\n\n\t\t\treturn this.identity();\n\n\t\t}\n\n\t\tvar detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( v ) {\n\n\t\tvar te = this.elements;\n\t\tvar x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t},\n\n\tgetMaxScaleOnAxis: function () {\n\n\t\tvar te = this.elements;\n\n\t\tvar scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tvar scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tvar scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t},\n\n\tmakeTranslation: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, x,\n\t\t\t0, 1, 0, y,\n\t\t\t0, 0, 1, z,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationX: function ( theta ) {\n\n\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationY: function ( theta ) {\n\n\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationZ: function ( theta ) {\n\n\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationAxis: function ( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tvar c = Math.cos( angle );\n\t\tvar s = Math.sin( angle );\n\t\tvar t = 1 - c;\n\t\tvar x = axis.x, y = axis.y, z = axis.z;\n\t\tvar tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\t return this;\n\n\t},\n\n\tmakeScale: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeShear: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, y, z, 0,\n\t\t\tx, 1, z, 0,\n\t\t\tx, y, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tcompose: function ( position, quaternion, scale ) {\n\n\t\tvar te = this.elements;\n\n\t\tvar x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n\t\tvar x2 = x + x,\ty2 = y + y, z2 = z + z;\n\t\tvar xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tvar yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tvar wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tvar sx = scale.x, sy = scale.y, sz = scale.z;\n\n\t        te[ 0 ] = ( 1 - ( yy + zz ) ) * sx;\n\t        te[ 1 ] = ( xy + wz ) * sx;\n\t        te[ 2 ] = ( xz - wy ) * sx;\n\t        te[ 3 ] = 0;\n\n\t        te[ 4 ] = ( xy - wz ) * sy;\n\t        te[ 5 ] = ( 1 - ( xx + zz ) ) * sy;\n\t        te[ 6 ] = ( yz + wx ) * sy;\n\t        te[ 7 ] = 0;\n\n\t        te[ 8 ] = ( xz + wy ) * sz;\n\t        te[ 9 ] = ( yz - wx ) * sz;\n\t        te[ 10 ] = ( 1 - ( xx + yy ) ) * sz;\n\t        te[ 11 ] = 0;\n\n\t        te[ 12 ] = position.x;\n\t        te[ 13 ] = position.y;\n\t        te[ 14 ] = position.z;\n\t        te[ 15 ] = 1;\n\n\t        return this;\n\n\t},\n\n\tdecompose: function () {\n\n\t\tvar vector = new Vector3();\n\t\tvar matrix = new Matrix4();\n\n\t\treturn function decompose( position, quaternion, scale ) {\n\n\t\t\tvar te = this.elements;\n\n\t\t\tvar sx = vector.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\t\tvar sy = vector.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\t\tvar sz = vector.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t\t// if determine is negative, we need to invert one scale\n\t\t\tvar det = this.determinant();\n\t\t\tif ( det < 0 ) sx = - sx;\n\n\t\t\tposition.x = te[ 12 ];\n\t\t\tposition.y = te[ 13 ];\n\t\t\tposition.z = te[ 14 ];\n\n\t\t\t// scale the rotation part\n\t\t\tmatrix.copy( this );\n\n\t\t\tvar invSX = 1 / sx;\n\t\t\tvar invSY = 1 / sy;\n\t\t\tvar invSZ = 1 / sz;\n\n\t\t\tmatrix.elements[ 0 ] *= invSX;\n\t\t\tmatrix.elements[ 1 ] *= invSX;\n\t\t\tmatrix.elements[ 2 ] *= invSX;\n\n\t\t\tmatrix.elements[ 4 ] *= invSY;\n\t\t\tmatrix.elements[ 5 ] *= invSY;\n\t\t\tmatrix.elements[ 6 ] *= invSY;\n\n\t\t\tmatrix.elements[ 8 ] *= invSZ;\n\t\t\tmatrix.elements[ 9 ] *= invSZ;\n\t\t\tmatrix.elements[ 10 ] *= invSZ;\n\n\t\t\tquaternion.setFromRotationMatrix( matrix );\n\n\t\t\tscale.x = sx;\n\t\t\tscale.y = sy;\n\t\t\tscale.z = sz;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tmakePerspective: function ( left, right, top, bottom, near, far ) {\n\n\t\tif ( far === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.' );\n\n\t\t}\n\n\t\tvar te = this.elements;\n\t\tvar x = 2 * near / ( right - left );\n\t\tvar y = 2 * near / ( top - bottom );\n\n\t\tvar a = ( right + left ) / ( right - left );\n\t\tvar b = ( top + bottom ) / ( top - bottom );\n\t\tvar c = - ( far + near ) / ( far - near );\n\t\tvar d = - 2 * far * near / ( far - near );\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a;\tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b;\tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c;\tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t},\n\n\tmakeOrthographic: function ( left, right, top, bottom, near, far ) {\n\n\t\tvar te = this.elements;\n\t\tvar w = 1.0 / ( right - left );\n\t\tvar h = 1.0 / ( top - bottom );\n\t\tvar p = 1.0 / ( far - near );\n\n\t\tvar x = ( right + left ) * w;\n\t\tvar y = ( top + bottom ) * h;\n\t\tvar z = ( far + near ) * p;\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\tte[ 8 ] = 0;\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0;\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = - 2 * p;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = 0;\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( matrix ) {\n\n\t\tvar te = this.elements;\n\t\tvar me = matrix.elements;\n\n\t\tfor ( var i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tfor ( var i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tvar te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n */\n\nfunction Quaternion( x, y, z, w ) {\n\n\tthis._x = x || 0;\n\tthis._y = y || 0;\n\tthis._z = z || 0;\n\tthis._w = ( w !== undefined ) ? w : 1;\n\n}\n\nObject.assign( Quaternion, {\n\n\tslerp: function ( qa, qb, qm, t ) {\n\n\t\treturn qm.copy( qa ).slerp( qb, t );\n\n\t},\n\n\tslerpFlat: function ( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tvar x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ],\n\n\t\t\tx1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tvar s = 1 - t,\n\n\t\t\t\tcos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tvar sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tvar tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tvar f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t}\n\n} );\n\nObject.defineProperties( Quaternion.prototype, {\n\n\tx: {\n\n\t\tget: function () {\n\n\t\t\treturn this._x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._x = value;\n\t\t\tthis.onChangeCallback();\n\n\t\t}\n\n\t},\n\n\ty: {\n\n\t\tget: function () {\n\n\t\t\treturn this._y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._y = value;\n\t\t\tthis.onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tz: {\n\n\t\tget: function () {\n\n\t\t\treturn this._z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._z = value;\n\t\t\tthis.onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tw: {\n\n\t\tget: function () {\n\n\t\t\treturn this._w;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._w = value;\n\t\t\tthis.onChangeCallback();\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Quaternion.prototype, {\n\n\tset: function ( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t},\n\n\tcopy: function ( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromEuler: function ( euler, update ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tthrow new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tvar x = euler._x, y = euler._y, z = euler._z, order = euler.order;\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tvar cos = Math.cos;\n\t\tvar sin = Math.sin;\n\n\t\tvar c1 = cos( x / 2 );\n\t\tvar c2 = cos( y / 2 );\n\t\tvar c3 = cos( z / 2 );\n\n\t\tvar s1 = sin( x / 2 );\n\t\tvar s2 = sin( y / 2 );\n\t\tvar s3 = sin( z / 2 );\n\n\t\tif ( order === 'XYZ' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\n\t\t} else if ( order === 'YXZ' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\n\t\t} else if ( order === 'ZXY' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\n\t\t} else if ( order === 'ZYX' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\n\t\t} else if ( order === 'YZX' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\n\t\t} else if ( order === 'XZY' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\n\t\t}\n\n\t\tif ( update !== false ) this.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromAxisAngle: function ( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\n\n\t\tvar halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromRotationMatrix: function ( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tvar te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33,\n\t\t\ts;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\ts = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\ts = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\ts = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\ts = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromUnitVectors: function () {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tvar v1 = new Vector3();\n\t\tvar r;\n\n\t\tvar EPS = 0.000001;\n\n\t\treturn function setFromUnitVectors( vFrom, vTo ) {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\n\t\t\tr = vFrom.dot( vTo ) + 1;\n\n\t\t\tif ( r < EPS ) {\n\n\t\t\t\tr = 0;\n\n\t\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\t\tv1.set( - vFrom.y, vFrom.x, 0 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tv1.set( 0, - vFrom.z, vFrom.y );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tv1.crossVectors( vFrom, vTo );\n\n\t\t\t}\n\n\t\t\tthis._x = v1.x;\n\t\t\tthis._y = v1.y;\n\t\t\tthis._z = v1.z;\n\t\t\tthis._w = r;\n\n\t\t\treturn this.normalize();\n\n\t\t};\n\n\t}(),\n\n\tangleTo: function ( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( _Math.clamp( this.dot( q ), - 1, 1 ) ) );\n\n\t},\n\n\trotateTowards: function ( q, step ) {\n\n\t\tvar angle = this.angleTo( q );\n\n\t\tif ( angle === 0 ) return this;\n\n\t\tvar t = Math.min( 1, step / angle );\n\n\t\tthis.slerp( q, t );\n\n\t\treturn this;\n\n\t},\n\n\tinverse: function () {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t},\n\n\tconjugate: function () {\n\n\t\tthis._x *= - 1;\n\t\tthis._y *= - 1;\n\t\tthis._z *= - 1;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t},\n\n\tnormalize: function () {\n\n\t\tvar l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( q, p ) {\n\n\t\tif ( p !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' );\n\t\t\treturn this.multiplyQuaternions( q, p );\n\n\t\t}\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t},\n\n\tpremultiply: function ( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t},\n\n\tmultiplyQuaternions: function ( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tvar qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tvar qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tslerp: function ( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tvar x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tvar cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvar sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\n\n\t\t\tvar s = 1 - t;\n\t\t\tthis._w = s * w + t * this._w;\n\t\t\tthis._x = s * x + t * this._x;\n\t\t\tthis._y = s * y + t * this._y;\n\t\t\tthis._z = s * z + t * this._z;\n\n\t\t\treturn this.normalize();\n\n\t\t}\n\n\t\tvar sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\n\t\tvar halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tvar ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t},\n\n\tonChange: function ( callback ) {\n\n\t\tthis.onChangeCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\tonChangeCallback: function () {}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author kile / http://kile.stravaganza.org/\n * @author philogb / http://blog.thejit.org/\n * @author mikael emtinger / http://gomo.se/\n * @author egraether / http://egraether.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Vector3( x, y, z ) {\n\n\tthis.x = x || 0;\n\tthis.y = y || 0;\n\tthis.z = z || 0;\n\n}\n\nObject.assign( Vector3.prototype, {\n\n\tisVector3: true,\n\n\tset: function ( x, y, z ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' );\n\t\t\treturn this.multiplyVectors( v, w );\n\n\t\t}\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyVectors: function ( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t},\n\n\tapplyEuler: function () {\n\n\t\tvar quaternion = new Quaternion();\n\n\t\treturn function applyEuler( euler ) {\n\n\t\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\t\tconsole.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t\t}\n\n\t\t\treturn this.applyQuaternion( quaternion.setFromEuler( euler ) );\n\n\t\t};\n\n\t}(),\n\n\tapplyAxisAngle: function () {\n\n\t\tvar quaternion = new Quaternion();\n\n\t\treturn function applyAxisAngle( axis, angle ) {\n\n\t\t\treturn this.applyQuaternion( quaternion.setFromAxisAngle( axis, angle ) );\n\n\t\t};\n\n\t}(),\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\n\t\tvar w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\n\n\t\treturn this;\n\n\t},\n\n\tapplyQuaternion: function ( q ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// calculate quat * vector\n\n\t\tvar ix = qw * x + qy * z - qz * y;\n\t\tvar iy = qw * y + qz * x - qx * z;\n\t\tvar iz = qw * z + qx * y - qy * x;\n\t\tvar iw = - qx * x - qy * y - qz * z;\n\n\t\t// calculate result * inverse quat\n\n\t\tthis.x = ix * qw + iw * - qx + iy * - qz - iz * - qy;\n\t\tthis.y = iy * qw + iw * - qy + iz * - qx - ix * - qz;\n\t\tthis.z = iz * qw + iw * - qz + ix * - qy - iy * - qx;\n\n\t\treturn this;\n\n\t},\n\n\tproject: function () {\n\n\t\tvar matrix = new Matrix4();\n\n\t\treturn function project( camera ) {\n\n\t\t\tmatrix.multiplyMatrices( camera.projectionMatrix, matrix.getInverse( camera.matrixWorld ) );\n\t\t\treturn this.applyMatrix4( matrix );\n\n\t\t};\n\n\t}(),\n\n\tunproject: function () {\n\n\t\tvar matrix = new Matrix4();\n\n\t\treturn function unproject( camera ) {\n\n\t\t\tmatrix.multiplyMatrices( camera.matrixWorld, matrix.getInverse( camera.projectionMatrix ) );\n\t\t\treturn this.applyMatrix4( matrix );\n\n\t\t};\n\n\t}(),\n\n\ttransformDirection: function ( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t},\n\n\tdivide: function ( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function () {\n\n\t\tvar min = new Vector3();\n\t\tvar max = new Vector3();\n\n\t\treturn function clampScalar( minVal, maxVal ) {\n\n\t\t\tmin.set( minVal, minVal, minVal );\n\t\t\tmax.set( maxVal, maxVal, maxVal );\n\n\t\t\treturn this.clamp( min, max );\n\n\t\t};\n\n\t}(),\n\n\tclampLength: function ( min, max ) {\n\n\t\tvar length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t},\n\n\t// TODO lengthSquared?\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t},\n\n\tcross: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' );\n\t\t\treturn this.crossVectors( v, w );\n\n\t\t}\n\n\t\treturn this.crossVectors( this, v );\n\n\t},\n\n\tcrossVectors: function ( a, b ) {\n\n\t\tvar ax = a.x, ay = a.y, az = a.z;\n\t\tvar bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t},\n\n\tprojectOnVector: function ( vector ) {\n\n\t\tvar scalar = vector.dot( this ) / vector.lengthSq();\n\n\t\treturn this.copy( vector ).multiplyScalar( scalar );\n\n\t},\n\n\tprojectOnPlane: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function projectOnPlane( planeNormal ) {\n\n\t\t\tv1.copy( this ).projectOnVector( planeNormal );\n\n\t\t\treturn this.sub( v1 );\n\n\t\t};\n\n\t}(),\n\n\treflect: function () {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function reflect( normal ) {\n\n\t\t\treturn this.sub( v1.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t\t};\n\n\t}(),\n\n\tangleTo: function ( v ) {\n\n\t\tvar theta = this.dot( v ) / ( Math.sqrt( this.lengthSq() * v.lengthSq() ) );\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( _Math.clamp( theta, - 1, 1 ) );\n\n\t},\n\n\tdistanceTo: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( v ) {\n\n\t\tvar dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t},\n\n\tmanhattanDistanceTo: function ( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t},\n\n\tsetFromSpherical: function ( s ) {\n\n\t\tvar sinPhiRadius = Math.sin( s.phi ) * s.radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( s.theta );\n\t\tthis.y = Math.cos( s.phi ) * s.radius;\n\t\tthis.z = sinPhiRadius * Math.cos( s.theta );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCylindrical: function ( c ) {\n\n\t\tthis.x = c.radius * Math.sin( c.theta );\n\t\tthis.y = c.y;\n\t\tthis.z = c.radius * Math.cos( c.theta );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixPosition: function ( m ) {\n\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixScale: function ( m ) {\n\n\t\tvar sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tvar sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tvar sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixColumn: function ( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n * @author tschw\n */\n\nfunction Matrix3() {\n\n\tthis.elements = [\n\n\t\t1, 0, 0,\n\t\t0, 1, 0,\n\t\t0, 0, 1\n\n\t];\n\n\tif ( arguments.length > 0 ) {\n\n\t\tconsole.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' );\n\n\t}\n\n}\n\nObject.assign( Matrix3.prototype, {\n\n\tisMatrix3: true,\n\n\tset: function ( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t},\n\n\tcopy: function ( m ) {\n\n\t\tvar te = this.elements;\n\t\tvar me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\n\t\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\n\t\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrix4: function ( m ) {\n\n\t\tvar me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tapplyToBufferAttribute: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function applyToBufferAttribute( attribute ) {\n\n\t\t\tfor ( var i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\t\tv1.x = attribute.getX( i );\n\t\t\t\tv1.y = attribute.getY( i );\n\t\t\t\tv1.z = attribute.getZ( i );\n\n\t\t\t\tv1.applyMatrix3( this );\n\n\t\t\t\tattribute.setXYZ( i, v1.x, v1.y, v1.z );\n\n\t\t\t}\n\n\t\t\treturn attribute;\n\n\t\t};\n\n\t}(),\n\n\tmultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t},\n\n\tpremultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t},\n\n\tmultiplyMatrices: function ( a, b ) {\n\n\t\tvar ae = a.elements;\n\t\tvar be = b.elements;\n\t\tvar te = this.elements;\n\n\t\tvar a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\n\t\tvar a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\n\t\tvar a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\n\n\t\tvar b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\n\t\tvar b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\n\t\tvar b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\n\t\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\n\t\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\n\t\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\n\t\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\n\t\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\n\t\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t},\n\n\tdeterminant: function () {\n\n\t\tvar te = this.elements;\n\n\t\tvar a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t},\n\n\tgetInverse: function ( matrix, throwOnDegenerate ) {\n\n\t\tif ( matrix && matrix.isMatrix4 ) {\n\n\t\t\tconsole.error( \"THREE.Matrix3: .getInverse() no longer takes a Matrix4 argument.\" );\n\n\t\t}\n\n\t\tvar me = matrix.elements,\n\t\t\tte = this.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ],\n\t\t\tn12 = me[ 3 ], n22 = me[ 4 ], n32 = me[ 5 ],\n\t\t\tn13 = me[ 6 ], n23 = me[ 7 ], n33 = me[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) {\n\n\t\t\tvar msg = \"THREE.Matrix3: .getInverse() can't invert matrix, determinant is 0\";\n\n\t\t\tif ( throwOnDegenerate === true ) {\n\n\t\t\t\tthrow new Error( msg );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( msg );\n\n\t\t\t}\n\n\t\t\treturn this.identity();\n\n\t\t}\n\n\t\tvar detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t},\n\n\ttranspose: function () {\n\n\t\tvar tmp, m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t},\n\n\tgetNormalMatrix: function ( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).getInverse( this ).transpose();\n\n\t},\n\n\ttransposeIntoArray: function ( r ) {\n\n\t\tvar m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\tsetUvTransform: function ( tx, ty, sx, sy, rotation, cx, cy ) {\n\n\t\tvar c = Math.cos( rotation );\n\t\tvar s = Math.sin( rotation );\n\n\t\tthis.set(\n\t\t\tsx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx,\n\t\t\t- sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty,\n\t\t\t0, 0, 1\n\t\t);\n\n\t},\n\n\tscale: function ( sx, sy ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] *= sx; te[ 3 ] *= sx; te[ 6 ] *= sx;\n\t\tte[ 1 ] *= sy; te[ 4 ] *= sy; te[ 7 ] *= sy;\n\n\t\treturn this;\n\n\t},\n\n\trotate: function ( theta ) {\n\n\t\tvar c = Math.cos( theta );\n\t\tvar s = Math.sin( theta );\n\n\t\tvar te = this.elements;\n\n\t\tvar a11 = te[ 0 ], a12 = te[ 3 ], a13 = te[ 6 ];\n\t\tvar a21 = te[ 1 ], a22 = te[ 4 ], a23 = te[ 7 ];\n\n\t\tte[ 0 ] = c * a11 + s * a21;\n\t\tte[ 3 ] = c * a12 + s * a22;\n\t\tte[ 6 ] = c * a13 + s * a23;\n\n\t\tte[ 1 ] = - s * a11 + c * a21;\n\t\tte[ 4 ] = - s * a12 + c * a22;\n\t\tte[ 7 ] = - s * a13 + c * a23;\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( tx, ty ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] += tx * te[ 2 ]; te[ 3 ] += tx * te[ 5 ]; te[ 6 ] += tx * te[ 8 ];\n\t\tte[ 1 ] += ty * te[ 2 ]; te[ 4 ] += ty * te[ 5 ]; te[ 7 ] += ty * te[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( matrix ) {\n\n\t\tvar te = this.elements;\n\t\tvar me = matrix.elements;\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tvar te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n */\n\nvar ImageUtils = {\n\n\tgetDataURL: function ( image ) {\n\n\t\tvar canvas;\n\n\t\tif ( image instanceof HTMLCanvasElement ) {\n\n\t\t\tcanvas = image;\n\n\t\t} else {\n\n\t\t\tif ( typeof OffscreenCanvas !== 'undefined' ) {\n\n\t\t\t\tcanvas = new OffscreenCanvas( image.width, image.height );\n\n\t\t\t} else {\n\n\t\t\t\tcanvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\t\t\t\tcanvas.width = image.width;\n\t\t\t\tcanvas.height = image.height;\n\n\t\t\t}\n\n\t\t\tvar context = canvas.getContext( '2d' );\n\n\t\t\tif ( image instanceof ImageData ) {\n\n\t\t\t\tcontext.putImageData( image, 0, 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\n\n\t\t\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\n\n\t\t} else {\n\n\t\t\treturn canvas.toDataURL( 'image/png' );\n\n\t\t}\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n */\n\nvar textureId = 0;\n\nfunction Texture( image, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\tObject.defineProperty( this, 'id', { value: textureId ++ } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\n\tthis.image = image !== undefined ? image : Texture.DEFAULT_IMAGE;\n\tthis.mipmaps = [];\n\n\tthis.mapping = mapping !== undefined ? mapping : Texture.DEFAULT_MAPPING;\n\n\tthis.wrapS = wrapS !== undefined ? wrapS : ClampToEdgeWrapping;\n\tthis.wrapT = wrapT !== undefined ? wrapT : ClampToEdgeWrapping;\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : LinearMipMapLinearFilter;\n\n\tthis.anisotropy = anisotropy !== undefined ? anisotropy : 1;\n\n\tthis.format = format !== undefined ? format : RGBAFormat;\n\tthis.type = type !== undefined ? type : UnsignedByteType;\n\n\tthis.offset = new Vector2( 0, 0 );\n\tthis.repeat = new Vector2( 1, 1 );\n\tthis.center = new Vector2( 0, 0 );\n\tthis.rotation = 0;\n\n\tthis.matrixAutoUpdate = true;\n\tthis.matrix = new Matrix3();\n\n\tthis.generateMipmaps = true;\n\tthis.premultiplyAlpha = false;\n\tthis.flipY = true;\n\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n\t// Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap.\n\t//\n\t// Also changing the encoding after already used by a Material will not automatically make the Material\n\t// update.  You need to explicitly call Material.needsUpdate to trigger it to recompile.\n\tthis.encoding = encoding !== undefined ? encoding : LinearEncoding;\n\n\tthis.version = 0;\n\tthis.onUpdate = null;\n\n}\n\nTexture.DEFAULT_IMAGE = undefined;\nTexture.DEFAULT_MAPPING = UVMapping;\n\nTexture.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Texture,\n\n\tisTexture: true,\n\n\tupdateMatrix: function () {\n\n\t\tthis.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.image = source.image;\n\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\tthis.mapping = source.mapping;\n\n\t\tthis.wrapS = source.wrapS;\n\t\tthis.wrapT = source.wrapT;\n\n\t\tthis.magFilter = source.magFilter;\n\t\tthis.minFilter = source.minFilter;\n\n\t\tthis.anisotropy = source.anisotropy;\n\n\t\tthis.format = source.format;\n\t\tthis.type = source.type;\n\n\t\tthis.offset.copy( source.offset );\n\t\tthis.repeat.copy( source.repeat );\n\t\tthis.center.copy( source.center );\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrix.copy( source.matrix );\n\n\t\tthis.generateMipmaps = source.generateMipmaps;\n\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\n\t\tthis.flipY = source.flipY;\n\t\tthis.unpackAlignment = source.unpackAlignment;\n\t\tthis.encoding = source.encoding;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.textures[ this.uuid ];\n\n\t\t}\n\n\t\tvar output = {\n\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Texture',\n\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t},\n\n\t\t\tuuid: this.uuid,\n\t\t\tname: this.name,\n\n\t\t\tmapping: this.mapping,\n\n\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\n\t\t\toffset: [ this.offset.x, this.offset.y ],\n\t\t\tcenter: [ this.center.x, this.center.y ],\n\t\t\trotation: this.rotation,\n\n\t\t\twrap: [ this.wrapS, this.wrapT ],\n\n\t\t\tformat: this.format,\n\t\t\tminFilter: this.minFilter,\n\t\t\tmagFilter: this.magFilter,\n\t\t\tanisotropy: this.anisotropy,\n\n\t\t\tflipY: this.flipY\n\n\t\t};\n\n\t\tif ( this.image !== undefined ) {\n\n\t\t\t// TODO: Move to THREE.Image\n\n\t\t\tvar image = this.image;\n\n\t\t\tif ( image.uuid === undefined ) {\n\n\t\t\t\timage.uuid = _Math.generateUUID(); // UGH\n\n\t\t\t}\n\n\t\t\tif ( ! isRootObject && meta.images[ image.uuid ] === undefined ) {\n\n\t\t\t\tvar url;\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\t// process array of images e.g. CubeTexture\n\n\t\t\t\t\turl = [];\n\n\t\t\t\t\tfor ( var i = 0, l = image.length; i < l; i ++ ) {\n\n\t\t\t\t\t\turl.push( ImageUtils.getDataURL( image[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// process single image\n\n\t\t\t\t\turl = ImageUtils.getDataURL( image );\n\n\t\t\t\t}\n\n\t\t\t\tmeta.images[ image.uuid ] = {\n\t\t\t\t\tuuid: image.uuid,\n\t\t\t\t\turl: url\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\toutput.image = image.uuid;\n\n\t\t}\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.textures[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t},\n\n\ttransformUv: function ( uv ) {\n\n\t\tif ( this.mapping !== UVMapping ) return;\n\n\t\tuv.applyMatrix3( this.matrix );\n\n\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.flipY ) {\n\n\t\t\tuv.y = 1 - uv.y;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.defineProperty( Texture.prototype, \"needsUpdate\", {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\n/**\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author philogb / http://blog.thejit.org/\n * @author mikael emtinger / http://gomo.se/\n * @author egraether / http://egraether.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Vector4( x, y, z, w ) {\n\n\tthis.x = x || 0;\n\tthis.y = y || 0;\n\tthis.z = z || 0;\n\tthis.w = ( w !== undefined ) ? w : 1;\n\n}\n\nObject.assign( Vector4.prototype, {\n\n\tisVector4: true,\n\n\tset: function ( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetW: function ( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\t\tthis.w *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tsetAxisAngleFromQuaternion: function ( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tvar s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\tthis.x = 1;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t} else {\n\n\t\t\tthis.x = q.x / s;\n\t\t\tthis.y = q.y / s;\n\t\t\tthis.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetAxisAngleFromRotationMatrix: function ( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tvar angle, x, y, z,\t\t// variables for result\n\t\t\tepsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t     ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t     ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t     ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t     ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t     ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tvar xx = ( m11 + 1 ) / 2;\n\t\t\tvar yy = ( m22 + 1 ) / 2;\n\t\t\tvar zz = ( m33 + 1 ) / 2;\n\t\t\tvar xy = ( m12 + m21 ) / 4;\n\t\t\tvar xz = ( m13 + m31 ) / 4;\n\t\t\tvar yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tvar s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t                   ( m13 - m31 ) * ( m13 - m31 ) +\n\t\t                   ( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function () {\n\n\t\tvar min, max;\n\n\t\treturn function clampScalar( minVal, maxVal ) {\n\n\t\t\tif ( min === undefined ) {\n\n\t\t\t\tmin = new Vector4();\n\t\t\t\tmax = new Vector4();\n\n\t\t\t}\n\n\t\t\tmin.set( minVal, minVal, minVal, minVal );\n\t\t\tmax.set( maxVal, maxVal, maxVal, maxVal );\n\n\t\t\treturn this.clamp( min, max );\n\n\t\t};\n\n\t}(),\n\n\tclampLength: function ( min, max ) {\n\n\t\tvar length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\t\tthis.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\t\tthis.w = attribute.getW( index );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author szimek / https://github.com/szimek/\n * @author alteredq / http://alteredqualia.com/\n * @author Marius Kintel / https://github.com/kintel\n */\n\n/*\n In options, we can specify:\n * Texture parameters for an auto-generated target texture\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n*/\nfunction WebGLRenderTarget( width, height, options ) {\n\n\tthis.width = width;\n\tthis.height = height;\n\n\tthis.scissor = new Vector4( 0, 0, width, height );\n\tthis.scissorTest = false;\n\n\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\toptions = options || {};\n\n\tif ( options.minFilter === undefined ) options.minFilter = LinearFilter;\n\n\tthis.texture = new Texture( undefined, undefined, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\n\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : true;\n\n\tthis.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\n\tthis.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : true;\n\tthis.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;\n\n}\n\nWebGLRenderTarget.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: WebGLRenderTarget,\n\n\tisWebGLRenderTarget: true,\n\n\tsetSize: function ( width, height ) {\n\n\t\tif ( this.width !== width || this.height !== height ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.texture = source.texture.clone();\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\t\tthis.depthTexture = source.depthTexture;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com\n */\n\nfunction WebGLRenderTargetCube( width, height, options ) {\n\n\tWebGLRenderTarget.call( this, width, height, options );\n\n\tthis.activeCubeFace = 0; // PX 0, NX 1, PY 2, NY 3, PZ 4, NZ 5\n\tthis.activeMipMapLevel = 0;\n\n}\n\nWebGLRenderTargetCube.prototype = Object.create( WebGLRenderTarget.prototype );\nWebGLRenderTargetCube.prototype.constructor = WebGLRenderTargetCube;\n\nWebGLRenderTargetCube.prototype.isWebGLRenderTargetCube = true;\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction DataTexture( data, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { data: data, width: width, height: height };\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\tthis.unpackAlignment = 1;\n\n}\n\nDataTexture.prototype = Object.create( Texture.prototype );\nDataTexture.prototype.constructor = DataTexture;\n\nDataTexture.prototype.isDataTexture = true;\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Box3( min, max ) {\n\n\tthis.min = ( min !== undefined ) ? min : new Vector3( + Infinity, + Infinity, + Infinity );\n\tthis.max = ( max !== undefined ) ? max : new Vector3( - Infinity, - Infinity, - Infinity );\n\n}\n\nObject.assign( Box3.prototype, {\n\n\tisBox3: true,\n\n\tset: function ( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromArray: function ( array ) {\n\n\t\tvar minX = + Infinity;\n\t\tvar minY = + Infinity;\n\t\tvar minZ = + Infinity;\n\n\t\tvar maxX = - Infinity;\n\t\tvar maxY = - Infinity;\n\t\tvar maxZ = - Infinity;\n\n\t\tfor ( var i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\tvar x = array[ i ];\n\t\t\tvar y = array[ i + 1 ];\n\t\t\tvar z = array[ i + 2 ];\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromBufferAttribute: function ( attribute ) {\n\n\t\tvar minX = + Infinity;\n\t\tvar minY = + Infinity;\n\t\tvar minZ = + Infinity;\n\n\t\tvar maxX = - Infinity;\n\t\tvar maxY = - Infinity;\n\t\tvar maxZ = - Infinity;\n\n\t\tfor ( var i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\tvar x = attribute.getX( i );\n\t\t\tvar y = attribute.getY( i );\n\t\t\tvar z = attribute.getZ( i );\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCenterAndSize: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function setFromCenterAndSize( center, size ) {\n\n\t\t\tvar halfSize = v1.copy( size ).multiplyScalar( 0.5 );\n\n\t\t\tthis.min.copy( center ).sub( halfSize );\n\t\t\tthis.max.copy( center ).add( halfSize );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tsetFromObject: function ( object ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getCenter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t},\n\n\tgetSize: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getSize() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t},\n\n\texpandByPoint: function ( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t},\n\n\texpandByVector: function ( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t},\n\n\texpandByScalar: function ( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t},\n\n\texpandByObject: function () {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tvar scope, i, l;\n\n\t\tvar v1 = new Vector3();\n\n\t\tfunction traverse( node ) {\n\n\t\t\tvar geometry = node.geometry;\n\n\t\t\tif ( geometry !== undefined ) {\n\n\t\t\t\tif ( geometry.isGeometry ) {\n\n\t\t\t\t\tvar vertices = geometry.vertices;\n\n\t\t\t\t\tfor ( i = 0, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tv1.copy( vertices[ i ] );\n\t\t\t\t\t\tv1.applyMatrix4( node.matrixWorld );\n\n\t\t\t\t\t\tscope.expandByPoint( v1 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( geometry.isBufferGeometry ) {\n\n\t\t\t\t\tvar attribute = geometry.attributes.position;\n\n\t\t\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\t\t\tfor ( i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\t\t\t\t\tv1.fromBufferAttribute( attribute, i ).applyMatrix4( node.matrixWorld );\n\n\t\t\t\t\t\t\tscope.expandByPoint( v1 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn function expandByObject( object ) {\n\n\t\t\tscope = this;\n\n\t\t\tobject.updateMatrixWorld( true );\n\n\t\t\tobject.traverse( traverse );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ||\n\t\t\tpoint.z < this.min.z || point.z > this.max.z ? false : true;\n\n\t},\n\n\tcontainsBox: function ( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\n\t\t\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\n\n\t},\n\n\tgetParameter: function ( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getParameter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ||\n\t\t\tbox.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n\n\t},\n\n\tintersectsSphere: ( function () {\n\n\t\tvar closestPoint = new Vector3();\n\n\t\treturn function intersectsSphere( sphere ) {\n\n\t\t\t// Find the point on the AABB closest to the sphere center.\n\t\t\tthis.clampPoint( sphere.center, closestPoint );\n\n\t\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\t\treturn closestPoint.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t\t};\n\n\t} )(),\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tvar min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= plane.constant && max >= plane.constant );\n\n\t},\n\n\tintersectsTriangle: ( function () {\n\n\t\t// triangle centered vertices\n\t\tvar v0 = new Vector3();\n\t\tvar v1 = new Vector3();\n\t\tvar v2 = new Vector3();\n\n\t\t// triangle edge vectors\n\t\tvar f0 = new Vector3();\n\t\tvar f1 = new Vector3();\n\t\tvar f2 = new Vector3();\n\n\t\tvar testAxis = new Vector3();\n\n\t\tvar center = new Vector3();\n\t\tvar extents = new Vector3();\n\n\t\tvar triangleNormal = new Vector3();\n\n\t\tfunction satForAxes( axes ) {\n\n\t\t\tvar i, j;\n\n\t\t\tfor ( i = 0, j = axes.length - 3; i <= j; i += 3 ) {\n\n\t\t\t\ttestAxis.fromArray( axes, i );\n\t\t\t\t// project the aabb onto the seperating axis\n\t\t\t\tvar r = extents.x * Math.abs( testAxis.x ) + extents.y * Math.abs( testAxis.y ) + extents.z * Math.abs( testAxis.z );\n\t\t\t\t// project all 3 vertices of the triangle onto the seperating axis\n\t\t\t\tvar p0 = v0.dot( testAxis );\n\t\t\t\tvar p1 = v1.dot( testAxis );\n\t\t\t\tvar p2 = v2.dot( testAxis );\n\t\t\t\t// actual test, basically see if either of the most extreme of the triangle points intersects r\n\t\t\t\tif ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) {\n\n\t\t\t\t\t// points of the projected triangle are outside the projected half-length of the aabb\n\t\t\t\t\t// the axis is seperating and we can exit\n\t\t\t\t\treturn false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn function intersectsTriangle( triangle ) {\n\n\t\t\tif ( this.isEmpty() ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t\t// compute box center and extents\n\t\t\tthis.getCenter( center );\n\t\t\textents.subVectors( this.max, center );\n\n\t\t\t// translate triangle to aabb origin\n\t\t\tv0.subVectors( triangle.a, center );\n\t\t\tv1.subVectors( triangle.b, center );\n\t\t\tv2.subVectors( triangle.c, center );\n\n\t\t\t// compute edge vectors for triangle\n\t\t\tf0.subVectors( v1, v0 );\n\t\t\tf1.subVectors( v2, v1 );\n\t\t\tf2.subVectors( v0, v2 );\n\n\t\t\t// test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb\n\t\t\t// make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation\n\t\t\t// axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned)\n\t\t\tvar axes = [\n\t\t\t\t0, - f0.z, f0.y, 0, - f1.z, f1.y, 0, - f2.z, f2.y,\n\t\t\t\tf0.z, 0, - f0.x, f1.z, 0, - f1.x, f2.z, 0, - f2.x,\n\t\t\t\t- f0.y, f0.x, 0, - f1.y, f1.x, 0, - f2.y, f2.x, 0\n\t\t\t];\n\t\t\tif ( ! satForAxes( axes ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t\t// test 3 face normals from the aabb\n\t\t\taxes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n\t\t\tif ( ! satForAxes( axes ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t\t// finally testing the face normal of the triangle\n\t\t\t// use already existing triangle edge vectors here\n\t\t\ttriangleNormal.crossVectors( f0, f1 );\n\t\t\taxes = [ triangleNormal.x, triangleNormal.y, triangleNormal.z ];\n\t\t\treturn satForAxes( axes );\n\n\t\t};\n\n\t} )(),\n\n\tclampPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t},\n\n\tdistanceToPoint: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function distanceToPoint( point ) {\n\n\t\t\tvar clampedPoint = v1.copy( point ).clamp( this.min, this.max );\n\t\t\treturn clampedPoint.sub( point ).length();\n\n\t\t};\n\n\t}(),\n\n\tgetBoundingSphere: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function getBoundingSphere( target ) {\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Box3: .getBoundingSphere() target is now required' );\n\t\t\t\ttarget = new Sphere();\n\n\t\t\t}\n\n\t\t\tthis.getCenter( target.center );\n\n\t\t\ttarget.radius = this.getSize( v1 ).length() * 0.5;\n\n\t\t\treturn target;\n\n\t\t};\n\n\t}(),\n\n\tintersect: function ( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\t// ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t},\n\n\tunion: function ( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\t// transform of empty box is an empty box.\n\t\tif ( this.isEmpty( ) ) return this;\n\n\t\tvar m = matrix.elements;\n\n\t\tvar xax = m[ 0 ] * this.min.x, xay = m[ 1 ] * this.min.x, xaz = m[ 2 ] * this.min.x;\n\t\tvar xbx = m[ 0 ] * this.max.x, xby = m[ 1 ] * this.max.x, xbz = m[ 2 ] * this.max.x;\n\t\tvar yax = m[ 4 ] * this.min.y, yay = m[ 5 ] * this.min.y, yaz = m[ 6 ] * this.min.y;\n\t\tvar ybx = m[ 4 ] * this.max.y, yby = m[ 5 ] * this.max.y, ybz = m[ 6 ] * this.max.y;\n\t\tvar zax = m[ 8 ] * this.min.z, zay = m[ 9 ] * this.min.z, zaz = m[ 10 ] * this.min.z;\n\t\tvar zbx = m[ 8 ] * this.max.z, zby = m[ 9 ] * this.max.z, zbz = m[ 10 ] * this.max.z;\n\n\t\tthis.min.x = Math.min( xax, xbx ) + Math.min( yax, ybx ) + Math.min( zax, zbx ) + m[ 12 ];\n\t\tthis.min.y = Math.min( xay, xby ) + Math.min( yay, yby ) + Math.min( zay, zby ) + m[ 13 ];\n\t\tthis.min.z = Math.min( xaz, xbz ) + Math.min( yaz, ybz ) + Math.min( zaz, zbz ) + m[ 14 ];\n\t\tthis.max.x = Math.max( xax, xbx ) + Math.max( yax, ybx ) + Math.max( zax, zbx ) + m[ 12 ];\n\t\tthis.max.y = Math.max( xay, xby ) + Math.max( yay, yby ) + Math.max( zay, zby ) + m[ 13 ];\n\t\tthis.max.z = Math.max( xaz, xbz ) + Math.max( yaz, ybz ) + Math.max( zaz, zbz ) + m[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Sphere( center, radius ) {\n\n\tthis.center = ( center !== undefined ) ? center : new Vector3();\n\tthis.radius = ( radius !== undefined ) ? radius : 0;\n\n}\n\nObject.assign( Sphere.prototype, {\n\n\tset: function ( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function () {\n\n\t\tvar box = new Box3();\n\n\t\treturn function setFromPoints( points, optionalCenter ) {\n\n\t\t\tvar center = this.center;\n\n\t\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\t\tcenter.copy( optionalCenter );\n\n\t\t\t} else {\n\n\t\t\t\tbox.setFromPoints( points ).getCenter( center );\n\n\t\t\t}\n\n\t\t\tvar maxRadiusSq = 0;\n\n\t\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t\t}\n\n\t\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t},\n\n\tempty: function () {\n\n\t\treturn ( this.radius <= 0 );\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\tvar radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tvar deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Sphere: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\ttarget.sub( this.center ).normalize();\n\t\t\ttarget.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn target;\n\n\t},\n\n\tgetBoundingBox: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Sphere: .getBoundingBox() target is now required' );\n\t\t\ttarget = new Box3();\n\n\t\t}\n\n\t\ttarget.set( this.center, this.center );\n\t\ttarget.expandByScalar( this.radius );\n\n\t\treturn target;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Plane( normal, constant ) {\n\n\t// normal is assumed to be normalized\n\n\tthis.normal = ( normal !== undefined ) ? normal : new Vector3( 1, 0, 0 );\n\tthis.constant = ( constant !== undefined ) ? constant : 0;\n\n}\n\nObject.assign( Plane.prototype, {\n\n\tset: function ( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponents: function ( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromNormalAndCoplanarPoint: function ( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCoplanarPoints: function () {\n\n\t\tvar v1 = new Vector3();\n\t\tvar v2 = new Vector3();\n\n\t\treturn function setFromCoplanarPoints( a, b, c ) {\n\n\t\t\tvar normal = v1.subVectors( c, b ).cross( v2.subVectors( a, b ) ).normalize();\n\n\t\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t},\n\n\tnormalize: function () {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tvar inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t},\n\n\tdistanceToSphere: function ( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t},\n\n\tprojectPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .projectPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.distanceToPoint( point ) ).add( point );\n\n\t},\n\n\tintersectLine: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function intersectLine( line, target ) {\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Plane: .intersectLine() target is now required' );\n\t\t\t\ttarget = new Vector3();\n\n\t\t\t}\n\n\t\t\tvar direction = line.delta( v1 );\n\n\t\t\tvar denominator = this.normal.dot( direction );\n\n\t\t\tif ( denominator === 0 ) {\n\n\t\t\t\t// line is coplanar, return origin\n\t\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\t\treturn target.copy( line.start );\n\n\t\t\t\t}\n\n\t\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\t\treturn undefined;\n\n\t\t\t}\n\n\t\t\tvar t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\t\treturn undefined;\n\n\t\t\t}\n\n\t\t\treturn target.copy( direction ).multiplyScalar( t ).add( line.start );\n\n\t\t};\n\n\t}(),\n\n\tintersectsLine: function ( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tvar startSign = this.distanceToPoint( line.start );\n\t\tvar endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t},\n\n\tcoplanarPoint: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .coplanarPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t},\n\n\tapplyMatrix4: function () {\n\n\t\tvar v1 = new Vector3();\n\t\tvar m1 = new Matrix3();\n\n\t\treturn function applyMatrix4( matrix, optionalNormalMatrix ) {\n\n\t\t\tvar normalMatrix = optionalNormalMatrix || m1.getNormalMatrix( matrix );\n\n\t\t\tvar referencePoint = this.coplanarPoint( v1 ).applyMatrix4( matrix );\n\n\t\t\tvar normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author bhouston / http://clara.io\n */\n\nfunction Frustum( p0, p1, p2, p3, p4, p5 ) {\n\n\tthis.planes = [\n\n\t\t( p0 !== undefined ) ? p0 : new Plane(),\n\t\t( p1 !== undefined ) ? p1 : new Plane(),\n\t\t( p2 !== undefined ) ? p2 : new Plane(),\n\t\t( p3 !== undefined ) ? p3 : new Plane(),\n\t\t( p4 !== undefined ) ? p4 : new Plane(),\n\t\t( p5 !== undefined ) ? p5 : new Plane()\n\n\t];\n\n}\n\nObject.assign( Frustum.prototype, {\n\n\tset: function ( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tvar planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( frustum ) {\n\n\t\tvar planes = this.planes;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrix: function ( m ) {\n\n\t\tvar planes = this.planes;\n\t\tvar me = m.elements;\n\t\tvar me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tvar me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tvar me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tvar me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\treturn this;\n\n\t},\n\n\tintersectsObject: function () {\n\n\t\tvar sphere = new Sphere();\n\n\t\treturn function intersectsObject( object ) {\n\n\t\t\tvar geometry = object.geometry;\n\n\t\t\tif ( geometry.boundingSphere === null )\n\t\t\t\tgeometry.computeBoundingSphere();\n\n\t\t\tsphere.copy( geometry.boundingSphere )\n\t\t\t\t.applyMatrix4( object.matrixWorld );\n\n\t\t\treturn this.intersectsSphere( sphere );\n\n\t\t};\n\n\t}(),\n\n\tintersectsSprite: function () {\n\n\t\tvar sphere = new Sphere();\n\n\t\treturn function intersectsSprite( sprite ) {\n\n\t\t\tsphere.center.set( 0, 0, 0 );\n\t\t\tsphere.radius = 0.7071067811865476;\n\t\t\tsphere.applyMatrix4( sprite.matrixWorld );\n\n\t\t\treturn this.intersectsSphere( sphere );\n\n\t\t};\n\n\t}(),\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\tvar planes = this.planes;\n\t\tvar center = sphere.center;\n\t\tvar negRadius = - sphere.radius;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\tvar distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tintersectsBox: function () {\n\n\t\tvar p = new Vector3();\n\n\t\treturn function intersectsBox( box ) {\n\n\t\t\tvar planes = this.planes;\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\tvar plane = planes[ i ];\n\n\t\t\t\t// corner at max distance\n\n\t\t\t\tp.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t\tp.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t\tp.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\t\tif ( plane.distanceToPoint( p ) < 0 ) {\n\n\t\t\t\t\treturn false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t};\n\n\t}(),\n\n\tcontainsPoint: function ( point ) {\n\n\t\tvar planes = this.planes;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n} );\n\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\\n#endif\\n\";\n\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\\n\";\n\nvar alphatest_fragment = \"#ifdef ALPHATEST\\n\\tif ( diffuseColor.a < ALPHATEST ) discard;\\n#endif\\n\";\n\nvar aomap_fragment = \"#ifdef USE_AOMAP\\n\\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\\n\\treflectedLight.indirectDiffuse *= ambientOcclusion;\\n\\t#if defined( USE_ENVMAP ) && defined( PHYSICAL )\\n\\t\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\t\\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.specularRoughness );\\n\\t#endif\\n#endif\\n\";\n\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\\tuniform sampler2D aoMap;\\n\\tuniform float aoMapIntensity;\\n#endif\";\n\nvar begin_vertex = \"\\nvec3 transformed = vec3( position );\\n\";\n\nvar beginnormal_vertex = \"\\nvec3 objectNormal = vec3( normal );\\n\";\n\nvar bsdfs = \"float punctualLightIntensityToIrradianceFactor( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n\\tif( decayExponent > 0.0 ) {\\n#if defined ( PHYSICALLY_CORRECT_LIGHTS )\\n\\t\\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\\t\\tfloat maxDistanceCutoffFactor = pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\\t\\treturn distanceFalloff * maxDistanceCutoffFactor;\\n#else\\n\\t\\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\\n#endif\\n\\t}\\n\\treturn 1.0;\\n}\\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\\n\\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\\n\\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\\n\\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\\n}\\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\treturn 1.0 / ( gl * gv );\\n}\\nfloat G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\treturn 0.5 / max( gv + gl, EPSILON );\\n}\\nfloat D_GGX( const in float alpha, const in float dotNH ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\\n\\treturn RECIPROCAL_PI * a2 / pow2( denom );\\n}\\nvec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\\n\\tfloat dotNL = saturate( dot( geometry.normal, incidentLight.direction ) );\\n\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\\n\\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, dotLH );\\n\\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\tfloat D = D_GGX( alpha, dotNH );\\n\\treturn F * ( G * D );\\n}\\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\\n\\tconst float LUT_SIZE  = 64.0;\\n\\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\\n\\tconst float LUT_BIAS  = 0.5 / LUT_SIZE;\\n\\tfloat dotNV = saturate( dot( N, V ) );\\n\\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\\n\\tuv = uv * LUT_SCALE + LUT_BIAS;\\n\\treturn uv;\\n}\\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\\n\\tfloat l = length( f );\\n\\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\\n}\\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\\n\\tfloat x = dot( v1, v2 );\\n\\tfloat y = abs( x );\\n\\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\\n\\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\\n\\tfloat v = a / b;\\n\\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\\n\\treturn cross( v1, v2 ) * theta_sintheta;\\n}\\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\\n\\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\\n\\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\\n\\tvec3 lightNormal = cross( v1, v2 );\\n\\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\\n\\tvec3 T1, T2;\\n\\tT1 = normalize( V - N * dot( V, N ) );\\n\\tT2 = - cross( N, T1 );\\n\\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\\n\\tvec3 coords[ 4 ];\\n\\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\\n\\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\\n\\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\\n\\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\\n\\tcoords[ 0 ] = normalize( coords[ 0 ] );\\n\\tcoords[ 1 ] = normalize( coords[ 1 ] );\\n\\tcoords[ 2 ] = normalize( coords[ 2 ] );\\n\\tcoords[ 3 ] = normalize( coords[ 3 ] );\\n\\tvec3 vectorFormFactor = vec3( 0.0 );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\\n\\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\\n\\treturn vec3( result );\\n}\\nvec3 BRDF_Specular_GGX_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\\n\\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\\n\\tvec4 r = roughness * c0 + c1;\\n\\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\\n\\tvec2 AB = vec2( -1.04, 1.04 ) * a004 + r.zw;\\n\\treturn specularColor * AB.x + AB.y;\\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\";\n\nvar 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\\n\";\n\nvar clipping_planes_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvec4 plane;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\tplane = clippingPlanes[ i ];\\n\\t\\tif ( dot( vViewPosition, plane.xyz ) > plane.w ) discard;\\n\\t}\\n\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\tbool clipped = true;\\n\\t\\t#pragma unroll_loop\\n\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tclipped = ( dot( vViewPosition, plane.xyz ) > plane.w ) && clipped;\\n\\t\\t}\\n\\t\\tif ( clipped ) discard;\\n\\t#endif\\n#endif\\n\";\n\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\t#if ! defined( PHYSICAL ) && ! defined( PHONG )\\n\\t\\tvarying vec3 vViewPosition;\\n\\t#endif\\n\\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\\n\";\n\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n\";\n\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\\n\";\n\nvar color_fragment = \"#ifdef USE_COLOR\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\";\n\nvar color_pars_fragment = \"#ifdef USE_COLOR\\n\\tvarying vec3 vColor;\\n#endif\\n\";\n\nvar color_pars_vertex = \"#ifdef USE_COLOR\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_vertex = \"#ifdef USE_COLOR\\n\\tvColor.xyz = color.xyz;\\n#endif\";\n\nvar common = \"#define PI 3.14159265359\\n#define PI2 6.28318530718\\n#define PI_HALF 1.5707963267949\\n#define RECIPROCAL_PI 0.31830988618\\n#define RECIPROCAL_PI2 0.15915494\\n#define LOG2 1.442695\\n#define EPSILON 1e-6\\n#define saturate(a) clamp( a, 0.0, 1.0 )\\n#define whiteCompliment(a) ( 1.0 - saturate( a ) )\\nfloat pow2( const in float x ) { return x*x; }\\nfloat pow3( const in float x ) { return x*x*x; }\\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\\nhighp float rand( const in vec2 uv ) {\\n\\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\\n\\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\\n\\treturn fract(sin(sn) * c);\\n}\\nstruct IncidentLight {\\n\\tvec3 color;\\n\\tvec3 direction;\\n\\tbool visible;\\n};\\nstruct ReflectedLight {\\n\\tvec3 directDiffuse;\\n\\tvec3 directSpecular;\\n\\tvec3 indirectDiffuse;\\n\\tvec3 indirectSpecular;\\n};\\nstruct GeometricContext {\\n\\tvec3 position;\\n\\tvec3 normal;\\n\\tvec3 viewDir;\\n};\\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\\n}\\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\\n}\\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\tfloat distance = dot( planeNormal, point - pointOnPlane );\\n\\treturn - distance * planeNormal + point;\\n}\\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\treturn sign( dot( point - pointOnPlane, planeNormal ) );\\n}\\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\\n}\\nmat3 transposeMat3( const in mat3 m ) {\\n\\tmat3 tmp;\\n\\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\\n\\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\\n\\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\\n\\treturn tmp;\\n}\\nfloat linearToRelativeLuminance( const in vec3 color ) {\\n\\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\\n\\treturn dot( weights, color.rgb );\\n}\\n\";\n\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n#define cubeUV_textureSize (1024.0)\\nint getFaceFromDirection(vec3 direction) {\\n\\tvec3 absDirection = abs(direction);\\n\\tint face = -1;\\n\\tif( absDirection.x > absDirection.z ) {\\n\\t\\tif(absDirection.x > absDirection.y )\\n\\t\\t\\tface = direction.x > 0.0 ? 0 : 3;\\n\\t\\telse\\n\\t\\t\\tface = direction.y > 0.0 ? 1 : 4;\\n\\t}\\n\\telse {\\n\\t\\tif(absDirection.z > absDirection.y )\\n\\t\\t\\tface = direction.z > 0.0 ? 2 : 5;\\n\\t\\telse\\n\\t\\t\\tface = direction.y > 0.0 ? 1 : 4;\\n\\t}\\n\\treturn face;\\n}\\n#define cubeUV_maxLods1  (log2(cubeUV_textureSize*0.25) - 1.0)\\n#define cubeUV_rangeClamp (exp2((6.0 - 1.0) * 2.0))\\nvec2 MipLevelInfo( vec3 vec, float roughnessLevel, float roughness ) {\\n\\tfloat scale = exp2(cubeUV_maxLods1 - roughnessLevel);\\n\\tfloat dxRoughness = dFdx(roughness);\\n\\tfloat dyRoughness = dFdy(roughness);\\n\\tvec3 dx = dFdx( vec * scale * dxRoughness );\\n\\tvec3 dy = dFdy( vec * scale * dyRoughness );\\n\\tfloat d = max( dot( dx, dx ), dot( dy, dy ) );\\n\\td = clamp(d, 1.0, cubeUV_rangeClamp);\\n\\tfloat mipLevel = 0.5 * log2(d);\\n\\treturn vec2(floor(mipLevel), fract(mipLevel));\\n}\\n#define cubeUV_maxLods2 (log2(cubeUV_textureSize*0.25) - 2.0)\\n#define cubeUV_rcpTextureSize (1.0 / cubeUV_textureSize)\\nvec2 getCubeUV(vec3 direction, float roughnessLevel, float mipLevel) {\\n\\tmipLevel = roughnessLevel > cubeUV_maxLods2 - 3.0 ? 0.0 : mipLevel;\\n\\tfloat a = 16.0 * cubeUV_rcpTextureSize;\\n\\tvec2 exp2_packed = exp2( vec2( roughnessLevel, mipLevel ) );\\n\\tvec2 rcp_exp2_packed = vec2( 1.0 ) / exp2_packed;\\n\\tfloat powScale = exp2_packed.x * exp2_packed.y;\\n\\tfloat scale = rcp_exp2_packed.x * rcp_exp2_packed.y * 0.25;\\n\\tfloat mipOffset = 0.75*(1.0 - rcp_exp2_packed.y) * rcp_exp2_packed.x;\\n\\tbool bRes = mipLevel == 0.0;\\n\\tscale =  bRes && (scale < a) ? a : scale;\\n\\tvec3 r;\\n\\tvec2 offset;\\n\\tint face = getFaceFromDirection(direction);\\n\\tfloat rcpPowScale = 1.0 / powScale;\\n\\tif( face == 0) {\\n\\t\\tr = vec3(direction.x, -direction.z, direction.y);\\n\\t\\toffset = vec2(0.0+mipOffset,0.75 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\\n\\t}\\n\\telse if( face == 1) {\\n\\t\\tr = vec3(direction.y, direction.x, direction.z);\\n\\t\\toffset = vec2(scale+mipOffset, 0.75 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\\n\\t}\\n\\telse if( face == 2) {\\n\\t\\tr = vec3(direction.z, direction.x, direction.y);\\n\\t\\toffset = vec2(2.0*scale+mipOffset, 0.75 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\\n\\t}\\n\\telse if( face == 3) {\\n\\t\\tr = vec3(direction.x, direction.z, direction.y);\\n\\t\\toffset = vec2(0.0+mipOffset,0.5 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\\n\\t}\\n\\telse if( face == 4) {\\n\\t\\tr = vec3(direction.y, direction.x, -direction.z);\\n\\t\\toffset = vec2(scale+mipOffset, 0.5 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\\n\\t}\\n\\telse {\\n\\t\\tr = vec3(direction.z, -direction.x, direction.y);\\n\\t\\toffset = vec2(2.0*scale+mipOffset, 0.5 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\\n\\t}\\n\\tr = normalize(r);\\n\\tfloat texelOffset = 0.5 * cubeUV_rcpTextureSize;\\n\\tvec2 s = ( r.yz / abs( r.x ) + vec2( 1.0 ) ) * 0.5;\\n\\tvec2 base = offset + vec2( texelOffset );\\n\\treturn base + s * ( scale - 2.0 * texelOffset );\\n}\\n#define cubeUV_maxLods3 (log2(cubeUV_textureSize*0.25) - 3.0)\\nvec4 textureCubeUV( sampler2D envMap, vec3 reflectedDirection, float roughness ) {\\n\\tfloat roughnessVal = roughness* cubeUV_maxLods3;\\n\\tfloat r1 = floor(roughnessVal);\\n\\tfloat r2 = r1 + 1.0;\\n\\tfloat t = fract(roughnessVal);\\n\\tvec2 mipInfo = MipLevelInfo(reflectedDirection, r1, roughness);\\n\\tfloat s = mipInfo.y;\\n\\tfloat level0 = mipInfo.x;\\n\\tfloat level1 = level0 + 1.0;\\n\\tlevel1 = level1 > 5.0 ? 5.0 : level1;\\n\\tlevel0 += min( floor( s + 0.5 ), 5.0 );\\n\\tvec2 uv_10 = getCubeUV(reflectedDirection, r1, level0);\\n\\tvec4 color10 = envMapTexelToLinear(texture2D(envMap, uv_10));\\n\\tvec2 uv_20 = getCubeUV(reflectedDirection, r2, level0);\\n\\tvec4 color20 = envMapTexelToLinear(texture2D(envMap, uv_20));\\n\\tvec4 result = mix(color10, color20, t);\\n\\treturn vec4(result.rgb, 1.0);\\n}\\n#endif\\n\";\n\nvar defaultnormal_vertex = \"vec3 transformedNormal = normalMatrix * objectNormal;\\n#ifdef FLIP_SIDED\\n\\ttransformedNormal = - transformedNormal;\\n#endif\\n\";\n\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\tuniform sampler2D displacementMap;\\n\\tuniform float displacementScale;\\n\\tuniform float displacementBias;\\n#endif\\n\";\n\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, uv ).x * displacementScale + displacementBias );\\n#endif\\n\";\n\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\\n\\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\\n\";\n\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\\n\";\n\nvar encodings_fragment = \"  gl_FragColor = linearToOutputTexel( gl_FragColor );\\n\";\n\nvar 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.xyz, vec3( gammaFactor ) ), value.w );\\n}\\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\\n\\treturn vec4( pow( value.xyz, vec3( 1.0 / gammaFactor ) ), value.w );\\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.w );\\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.w );\\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.xyz * value.w * maxRange, 1.0 );\\n}\\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\\n\\tfloat maxRGB = max( value.x, 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.x, max( value.g, value.b ) );\\n\\tfloat D      = max( maxRange / maxRGB, 1.0 );\\n\\tD            = min( floor( D ) / 255.0, 1.0 );\\n\\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\\n}\\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\\nvec4 LinearToLogLuv( in vec4 value )  {\\n\\tvec3 Xp_Y_XYZp = value.rgb * cLogLuvM;\\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 = Xp_Y_XYZp.rgb * cLogLuvInverseM;\\n\\treturn vec4( max(vRGB, 0.0), 1.0 );\\n}\\n\";\n\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\n\\t\\tvec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\\n\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( cameraToVertex, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( cameraToVertex, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#else\\n\\t\\tvec3 reflectVec = vReflect;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\n\\t#elif defined( ENVMAP_TYPE_EQUIREC )\\n\\t\\tvec2 sampleUV;\\n\\t\\treflectVec = normalize( reflectVec );\\n\\t\\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\t\\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\\n\\t\\tvec4 envColor = texture2D( envMap, sampleUV );\\n\\t#elif defined( ENVMAP_TYPE_SPHERE )\\n\\t\\treflectVec = normalize( reflectVec );\\n\\t\\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) );\\n\\t\\tvec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 );\\n\\t#else\\n\\t\\tvec4 envColor = vec4( 0.0 );\\n\\t#endif\\n\\tenvColor = envMapTexelToLinear( envColor );\\n\\t#ifdef ENVMAP_BLENDING_MULTIPLY\\n\\t\\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_MIX )\\n\\t\\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_ADD )\\n\\t\\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\\n\\t#endif\\n#endif\\n\";\n\nvar envmap_pars_fragment = \"#if defined( USE_ENVMAP ) || defined( PHYSICAL )\\n\\tuniform float reflectivity;\\n\\tuniform float envMapIntensity;\\n#endif\\n#ifdef USE_ENVMAP\\n\\t#if ! defined( PHYSICAL ) && ( defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) )\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tuniform samplerCube envMap;\\n\\t#else\\n\\t\\tuniform sampler2D envMap;\\n\\t#endif\\n\\tuniform float flipEnvMap;\\n\\tuniform int maxMipLevel;\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( PHYSICAL )\\n\\t\\tuniform float refractionRatio;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t#endif\\n#endif\\n\";\n\nvar envmap_pars_vertex = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n#endif\\n\";\n\nvar envmap_vertex = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\n\\t\\tvWorldPosition = worldPosition.xyz;\\n\\t#else\\n\\t\\tvec3 cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\\n\\t\\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvReflect = reflect( cameraToVertex, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#endif\\n#endif\\n\";\n\nvar fog_vertex = \"\\n#ifdef USE_FOG\\nfogDepth = -mvPosition.z;\\n#endif\";\n\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n  varying float fogDepth;\\n#endif\\n\";\n\nvar fog_fragment = \"#ifdef USE_FOG\\n\\t#ifdef FOG_EXP2\\n\\t\\tfloat fogFactor = whiteCompliment( exp2( - fogDensity * fogDensity * fogDepth * fogDepth * LOG2 ) );\\n\\t#else\\n\\t\\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\\n\\t#endif\\n\\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\n#endif\\n\";\n\nvar 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\\n\";\n\nvar gradientmap_pars_fragment = \"#ifdef TOON\\n\\tuniform sampler2D gradientMap;\\n\\tvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\\n\\t\\tfloat dotNL = dot( normal, lightDirection );\\n\\t\\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\\n\\t\\t#ifdef USE_GRADIENTMAP\\n\\t\\t\\treturn texture2D( gradientMap, coord ).rgb;\\n\\t\\t#else\\n\\t\\t\\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\\n\\t\\t#endif\\n\\t}\\n#endif\\n\";\n\nvar lightmap_fragment = \"#ifdef USE_LIGHTMAP\\n\\treflectedLight.indirectDiffuse += PI * texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\\n#endif\\n\";\n\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\";\n\nvar lights_lambert_vertex = \"vec3 diffuse = vec3( 1.0 );\\nGeometricContext geometry;\\ngeometry.position = mvPosition.xyz;\\ngeometry.normal = normalize( transformedNormal );\\ngeometry.viewDir = normalize( -mvPosition.xyz );\\nGeometricContext backGeometry;\\nbackGeometry.position = geometry.position;\\nbackGeometry.normal = -geometry.normal;\\nbackGeometry.viewDir = geometry.viewDir;\\nvLightFront = vec3( 0.0 );\\n#ifdef DOUBLE_SIDED\\n\\tvLightBack = vec3( 0.0 );\\n#endif\\nIncidentLight directLight;\\nfloat dotNL;\\nvec3 directLightColor_Diffuse;\\n#if NUM_POINT_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n#endif\\n#if NUM_DIR_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\tvLightFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\\n\\t\\t#endif\\n\\t}\\n#endif\\n\";\n\nvar lights_pars_begin = \"uniform vec3 ambientLightColor;\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\\tvec3 irradiance = ambientLightColor;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\treturn irradiance;\\n}\\n#if NUM_DIR_LIGHTS > 0\\n\\tstruct DirectionalLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tint shadow;\\n\\t\\tfloat shadowBias;\\n\\t\\tfloat shadowRadius;\\n\\t\\tvec2 shadowMapSize;\\n\\t};\\n\\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\\n\\tvoid getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tdirectLight.color = directionalLight.color;\\n\\t\\tdirectLight.direction = directionalLight.direction;\\n\\t\\tdirectLight.visible = true;\\n\\t}\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\tstruct PointLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tint shadow;\\n\\t\\tfloat shadowBias;\\n\\t\\tfloat shadowRadius;\\n\\t\\tvec2 shadowMapSize;\\n\\t\\tfloat shadowCameraNear;\\n\\t\\tfloat shadowCameraFar;\\n\\t};\\n\\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\\n\\tvoid getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tvec3 lVector = pointLight.position - geometry.position;\\n\\t\\tdirectLight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tdirectLight.color = pointLight.color;\\n\\t\\tdirectLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );\\n\\t\\tdirectLight.visible = ( directLight.color != vec3( 0.0 ) );\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\tstruct SpotLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tfloat coneCos;\\n\\t\\tfloat penumbraCos;\\n\\t\\tint shadow;\\n\\t\\tfloat shadowBias;\\n\\t\\tfloat shadowRadius;\\n\\t\\tvec2 shadowMapSize;\\n\\t};\\n\\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\\n\\tvoid getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight  ) {\\n\\t\\tvec3 lVector = spotLight.position - geometry.position;\\n\\t\\tdirectLight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tfloat angleCos = dot( directLight.direction, spotLight.direction );\\n\\t\\tif ( angleCos > spotLight.coneCos ) {\\n\\t\\t\\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\\t\\t\\tdirectLight.color = spotLight.color;\\n\\t\\t\\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\\n\\t\\t\\tdirectLight.visible = true;\\n\\t\\t} else {\\n\\t\\t\\tdirectLight.color = vec3( 0.0 );\\n\\t\\t\\tdirectLight.visible = false;\\n\\t\\t}\\n\\t}\\n#endif\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tstruct RectAreaLight {\\n\\t\\tvec3 color;\\n\\t\\tvec3 position;\\n\\t\\tvec3 halfWidth;\\n\\t\\tvec3 halfHeight;\\n\\t};\\n\\tuniform sampler2D ltc_1;\\tuniform sampler2D ltc_2;\\n\\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\tstruct HemisphereLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 skyColor;\\n\\t\\tvec3 groundColor;\\n\\t};\\n\\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\\n\\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\\n\\t\\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\\n\\t\\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\\t\\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\\t\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\t\\tirradiance *= PI;\\n\\t\\t#endif\\n\\t\\treturn irradiance;\\n\\t}\\n#endif\\n\";\n\nvar envmap_physical_pars_fragment = \"#if defined( USE_ENVMAP ) && defined( PHYSICAL )\\n\\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\\n\\t\\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\t\\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, queryVec, 1.0 );\\n\\t\\t#else\\n\\t\\t\\tvec4 envMapColor = vec4( 0.0 );\\n\\t\\t#endif\\n\\t\\treturn PI * envMapColor.rgb * envMapIntensity;\\n\\t}\\n\\tfloat getSpecularMIPLevel( const in float blinnShininessExponent, const in int maxMIPLevel ) {\\n\\t\\tfloat maxMIPLevelScalar = float( maxMIPLevel );\\n\\t\\tfloat desiredMIPLevel = maxMIPLevelScalar + 0.79248 - 0.5 * log2( pow2( blinnShininessExponent ) + 1.0 );\\n\\t\\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\\n\\t}\\n\\tvec3 getLightProbeIndirectRadiance( const in GeometricContext geometry, const in float blinnShininessExponent, const in int maxMIPLevel ) {\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( -geometry.viewDir, geometry.normal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( -geometry.viewDir, geometry.normal, refractionRatio );\\n\\t\\t#endif\\n\\t\\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\\t\\tfloat specularMIPLevel = getSpecularMIPLevel( blinnShininessExponent, maxMIPLevel );\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\t\\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, queryReflectVec, BlinnExponentToGGXRoughness(blinnShininessExponent ));\\n\\t\\t#elif defined( ENVMAP_TYPE_EQUIREC )\\n\\t\\t\\tvec2 sampleUV;\\n\\t\\t\\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\t\\t\\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#elif defined( ENVMAP_TYPE_SPHERE )\\n\\t\\t\\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0,0.0,1.0 ) );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = texture2DLodEXT( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#endif\\n\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t}\\n#endif\\n\";\n\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\\n\";\n\nvar lights_phong_pars_fragment = \"varying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\nstruct BlinnPhongMaterial {\\n\\tvec3\\tdiffuseColor;\\n\\tvec3\\tspecularColor;\\n\\tfloat\\tspecularShininess;\\n\\tfloat\\tspecularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t#ifdef TOON\\n\\t\\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\\n\\t#else\\n\\t\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\t\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#endif\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n\\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_BlinnPhong\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_BlinnPhong\\n#define Material_LightProbeLOD( material )\\t(0)\\n\";\n\nvar lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nmaterial.specularRoughness = clamp( roughnessFactor, 0.04, 1.0 );\\n#ifdef STANDARD\\n\\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\\n#else\\n\\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\\n\\tmaterial.clearCoat = saturate( clearCoat );\\tmaterial.clearCoatRoughness = clamp( clearCoatRoughness, 0.04, 1.0 );\\n#endif\\n\";\n\nvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\\tvec3\\tdiffuseColor;\\n\\tfloat\\tspecularRoughness;\\n\\tvec3\\tspecularColor;\\n\\t#ifndef STANDARD\\n\\t\\tfloat clearCoat;\\n\\t\\tfloat clearCoatRoughness;\\n\\t#endif\\n};\\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\\nfloat clearCoatDHRApprox( const in float roughness, const in float dotNL ) {\\n\\treturn DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );\\n}\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t\\tvec3 normal = geometry.normal;\\n\\t\\tvec3 viewDir = geometry.viewDir;\\n\\t\\tvec3 position = geometry.position;\\n\\t\\tvec3 lightPos = rectAreaLight.position;\\n\\t\\tvec3 halfWidth = rectAreaLight.halfWidth;\\n\\t\\tvec3 halfHeight = rectAreaLight.halfHeight;\\n\\t\\tvec3 lightColor = rectAreaLight.color;\\n\\t\\tfloat roughness = material.specularRoughness;\\n\\t\\tvec3 rectCoords[ 4 ];\\n\\t\\trectCoords[ 0 ] = lightPos - halfWidth - halfHeight;\\t\\trectCoords[ 1 ] = lightPos + halfWidth - halfHeight;\\n\\t\\trectCoords[ 2 ] = lightPos + halfWidth + halfHeight;\\n\\t\\trectCoords[ 3 ] = lightPos - halfWidth + halfHeight;\\n\\t\\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\\n\\t\\tvec4 t1 = texture2D( ltc_1, uv );\\n\\t\\tvec4 t2 = texture2D( ltc_2, uv );\\n\\t\\tmat3 mInv = mat3(\\n\\t\\t\\tvec3( t1.x, 0, t1.y ),\\n\\t\\t\\tvec3(    0, 1,    0 ),\\n\\t\\t\\tvec3( t1.z, 0, t1.w )\\n\\t\\t);\\n\\t\\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\\n\\t\\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\\n\\t\\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\\n\\t}\\n#endif\\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\t#ifndef STANDARD\\n\\t\\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\\n\\t#else\\n\\t\\tfloat clearCoatDHR = 0.0;\\n\\t#endif\\n\\treflectedLight.directSpecular += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry, material.specularColor, material.specularRoughness );\\n\\treflectedLight.directDiffuse += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n\\t#ifndef STANDARD\\n\\t\\treflectedLight.directSpecular += irradiance * material.clearCoat * BRDF_Specular_GGX( directLight, geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\\n\\t#endif\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 clearCoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t#ifndef STANDARD\\n\\t\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\t\\tfloat dotNL = dotNV;\\n\\t\\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\\n\\t#else\\n\\t\\tfloat clearCoatDHR = 0.0;\\n\\t#endif\\n\\treflectedLight.indirectSpecular += ( 1.0 - clearCoatDHR ) * radiance * BRDF_Specular_GGX_Environment( geometry, material.specularColor, material.specularRoughness );\\n\\t#ifndef STANDARD\\n\\t\\treflectedLight.indirectSpecular += clearCoatRadiance * material.clearCoat * BRDF_Specular_GGX_Environment( geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\\n\\t#endif\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Physical\\n#define RE_Direct_RectArea\\t\\tRE_Direct_RectArea_Physical\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Physical\\n#define RE_IndirectSpecular\\t\\tRE_IndirectSpecular_Physical\\n#define Material_BlinnShininessExponent( material )   GGXRoughnessToBlinnExponent( material.specularRoughness )\\n#define Material_ClearCoat_BlinnShininessExponent( material )   GGXRoughnessToBlinnExponent( material.clearCoatRoughness )\\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\\n\\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\\n}\\n\";\n\nvar lights_fragment_begin = \"\\nGeometricContext geometry;\\ngeometry.position = - vViewPosition;\\ngeometry.normal = normal;\\ngeometry.viewDir = normalize( vViewPosition );\\nIncidentLight directLight;\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tPointLight pointLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\\n\\t\\t#ifdef USE_SHADOWMAP\\n\\t\\tdirectLight.color *= all( bvec2( pointLight.shadow, directLight.visible ) ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tSpotLight spotLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\\n\\t\\t#ifdef USE_SHADOWMAP\\n\\t\\tdirectLight.color *= all( bvec2( spotLight.shadow, directLight.visible ) ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n#endif\\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tDirectionalLight directionalLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLights[ i ];\\n\\t\\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\\n\\t\\t#ifdef USE_SHADOWMAP\\n\\t\\tdirectLight.color *= all( bvec2( directionalLight.shadow, directLight.visible ) ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n#endif\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\n\\tRectAreaLight rectAreaLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\\n\\t\\trectAreaLight = rectAreaLights[ i ];\\n\\t\\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\\n\\t}\\n#endif\\n#if defined( RE_IndirectDiffuse )\\n\\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\n\\t#if ( NUM_HEMI_LIGHTS > 0 )\\n\\t\\t#pragma unroll_loop\\n\\t\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\t\\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\\n\\t\\t}\\n\\t#endif\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tvec3 radiance = vec3( 0.0 );\\n\\tvec3 clearCoatRadiance = vec3( 0.0 );\\n#endif\\n\";\n\nvar lights_fragment_maps = \"#if defined( RE_IndirectDiffuse )\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec3 lightMapIrradiance = texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\\n\\t\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\t\\tlightMapIrradiance *= PI;\\n\\t\\t#endif\\n\\t\\tirradiance += lightMapIrradiance;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( PHYSICAL ) && defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tirradiance += getLightProbeIndirectIrradiance( geometry, maxMipLevel );\\n\\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\\tradiance += getLightProbeIndirectRadiance( geometry, Material_BlinnShininessExponent( material ), maxMipLevel );\\n\\t#ifndef STANDARD\\n\\t\\tclearCoatRadiance += getLightProbeIndirectRadiance( geometry, Material_ClearCoat_BlinnShininessExponent( material ), maxMipLevel );\\n\\t#endif\\n#endif\\n\";\n\nvar 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, clearCoatRadiance, geometry, material, reflectedLight );\\n#endif\\n\";\n\nvar logdepthbuf_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tgl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\\n#endif\";\n\nvar logdepthbuf_pars_fragment = \"#ifdef USE_LOGDEPTHBUF\\n\\tuniform float logDepthBufFC;\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvarying float vFragDepth;\\n\\t#endif\\n#endif\\n\";\n\nvar logdepthbuf_pars_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvarying float vFragDepth;\\n\\t#endif\\n\\tuniform float logDepthBufFC;\\n#endif\";\n\nvar logdepthbuf_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvFragDepth = 1.0 + gl_Position.w;\\n\\t#else\\n\\t\\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\\n\\t\\tgl_Position.z *= gl_Position.w;\\n\\t#endif\\n#endif\\n\";\n\nvar map_fragment = \"#ifdef USE_MAP\\n\\tvec4 texelColor = texture2D( map, vUv );\\n\\ttexelColor = mapTexelToLinear( texelColor );\\n\\tdiffuseColor *= texelColor;\\n#endif\\n\";\n\nvar map_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\\n\";\n\nvar map_particle_fragment = \"#ifdef USE_MAP\\n\\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\\n\\tvec4 mapTexel = texture2D( map, uv );\\n\\tdiffuseColor *= mapTexelToLinear( mapTexel );\\n#endif\\n\";\n\nvar map_particle_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform mat3 uvTransform;\\n\\tuniform sampler2D map;\\n#endif\\n\";\n\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\\n\\tmetalnessFactor *= texelMetalness.b;\\n#endif\\n\";\n\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\\tuniform sampler2D metalnessMap;\\n#endif\";\n\nvar morphnormal_vertex = \"#ifdef USE_MORPHNORMALS\\n\\tobjectNormal += ( morphNormal0 - normal ) * morphTargetInfluences[ 0 ];\\n\\tobjectNormal += ( morphNormal1 - normal ) * morphTargetInfluences[ 1 ];\\n\\tobjectNormal += ( morphNormal2 - normal ) * morphTargetInfluences[ 2 ];\\n\\tobjectNormal += ( morphNormal3 - normal ) * morphTargetInfluences[ 3 ];\\n#endif\\n\";\n\nvar morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\\t#ifndef USE_MORPHNORMALS\\n\\tuniform float morphTargetInfluences[ 8 ];\\n\\t#else\\n\\tuniform float morphTargetInfluences[ 4 ];\\n\\t#endif\\n#endif\";\n\nvar morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\\ttransformed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ];\\n\\ttransformed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ];\\n\\ttransformed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ];\\n\\ttransformed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ];\\n\\t#ifndef USE_MORPHNORMALS\\n\\ttransformed += ( morphTarget4 - position ) * morphTargetInfluences[ 4 ];\\n\\ttransformed += ( morphTarget5 - position ) * morphTargetInfluences[ 5 ];\\n\\ttransformed += ( morphTarget6 - position ) * morphTargetInfluences[ 6 ];\\n\\ttransformed += ( morphTarget7 - position ) * morphTargetInfluences[ 7 ];\\n\\t#endif\\n#endif\\n\";\n\nvar 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#endif\\n\";\n\nvar normal_fragment_maps = \"#ifdef USE_NORMALMAP\\n\\t#ifdef OBJECTSPACE_NORMALMAP\\n\\t\\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\t\\t#ifdef FLIP_SIDED\\n\\t\\t\\tnormal = - normal;\\n\\t\\t#endif\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\t#endif\\n\\t\\tnormal = normalize( normalMatrix * normal );\\n\\t#else\\n\\t\\tnormal = perturbNormal2Arb( -vViewPosition, normal );\\n\\t#endif\\n#elif defined( USE_BUMPMAP )\\n\\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\\n#endif\\n\";\n\nvar normalmap_pars_fragment = \"#ifdef USE_NORMALMAP\\n\\tuniform sampler2D normalMap;\\n\\tuniform vec2 normalScale;\\n\\t#ifdef OBJECTSPACE_NORMALMAP\\n\\t\\tuniform mat3 normalMatrix;\\n\\t#else\\n\\t\\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm ) {\\n\\t\\t\\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\\n\\t\\t\\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\\n\\t\\t\\tvec2 st0 = dFdx( vUv.st );\\n\\t\\t\\tvec2 st1 = dFdy( vUv.st );\\n\\t\\t\\tfloat scale = sign( st1.t * st0.s - st0.t * st1.s );\\n\\t\\t\\tvec3 S = normalize( ( q0 * st1.t - q1 * st0.t ) * scale );\\n\\t\\t\\tvec3 T = normalize( ( - q0 * st1.s + q1 * st0.s ) * scale );\\n\\t\\t\\tvec3 N = normalize( surf_norm );\\n\\t\\t\\tmat3 tsn = mat3( S, T, N );\\n\\t\\t\\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\t\\t\\tmapN.xy *= normalScale;\\n\\t\\t\\tmapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\t\\treturn normalize( tsn * mapN );\\n\\t\\t}\\n\\t#endif\\n#endif\\n\";\n\nvar packing = \"vec3 packNormalToRGB( const in vec3 normal ) {\\n\\treturn normalize( normal ) * 0.5 + 0.5;\\n}\\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\\n\\treturn 2.0 * rgb.xyz - 1.0;\\n}\\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256.,  256. );\\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\\nconst float ShiftRight8 = 1. / 256.;\\nvec4 packDepthToRGBA( const in float v ) {\\n\\tvec4 r = vec4( fract( v * PackFactors ), v );\\n\\tr.yzw -= r.xyz * ShiftRight8;\\treturn r * PackUpscale;\\n}\\nfloat unpackRGBAToDepth( const in vec4 v ) {\\n\\treturn dot( v, UnpackFactors );\\n}\\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( viewZ + near ) / ( near - far );\\n}\\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\\n\\treturn linearClipZ * ( near - far ) - near;\\n}\\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn (( near + viewZ ) * far ) / (( far - near ) * viewZ );\\n}\\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\\n\\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\\n}\\n\";\n\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\\n\";\n\nvar project_vertex = \"vec4 mvPosition = modelViewMatrix * vec4( transformed, 1.0 );\\ngl_Position = projectionMatrix * mvPosition;\\n\";\n\nvar dithering_fragment = \"#if defined( DITHERING )\\n  gl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\\n\";\n\nvar dithering_pars_fragment = \"#if defined( DITHERING )\\n\\tvec3 dithering( vec3 color ) {\\n\\t\\tfloat grid_position = rand( gl_FragCoord.xy );\\n\\t\\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\\n\\t\\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\\n\\t\\treturn color + dither_shift_RGB;\\n\\t}\\n#endif\\n\";\n\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\\n\\troughnessFactor *= texelRoughness.g;\\n#endif\\n\";\n\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\\tuniform sampler2D roughnessMap;\\n#endif\";\n\nvar shadowmap_pars_fragment = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHTS > 0\\n\\t\\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHTS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHTS > 0\\n\\t\\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHTS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHTS > 0\\n\\t\\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHTS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\\n\\t#endif\\n\\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\\n\\t\\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\\n\\t}\\n\\tfloat texture2DShadowLerp( sampler2D depths, vec2 size, vec2 uv, float compare ) {\\n\\t\\tconst vec2 offset = vec2( 0.0, 1.0 );\\n\\t\\tvec2 texelSize = vec2( 1.0 ) / size;\\n\\t\\tvec2 centroidUV = floor( uv * size + 0.5 ) / size;\\n\\t\\tfloat lb = texture2DCompare( depths, centroidUV + texelSize * offset.xx, compare );\\n\\t\\tfloat lt = texture2DCompare( depths, centroidUV + texelSize * offset.xy, compare );\\n\\t\\tfloat rb = texture2DCompare( depths, centroidUV + texelSize * offset.yx, compare );\\n\\t\\tfloat rt = texture2DCompare( depths, centroidUV + texelSize * offset.yy, compare );\\n\\t\\tvec2 f = fract( uv * size + 0.5 );\\n\\t\\tfloat a = mix( lb, lt, f.y );\\n\\t\\tfloat b = mix( rb, rt, f.y );\\n\\t\\tfloat c = mix( a, b, f.x );\\n\\t\\treturn c;\\n\\t}\\n\\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\\n\\t\\tfloat shadow = 1.0;\\n\\t\\tshadowCoord.xyz /= shadowCoord.w;\\n\\t\\tshadowCoord.z += shadowBias;\\n\\t\\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\\n\\t\\tbool inFrustum = all( inFrustumVec );\\n\\t\\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\\n\\t\\tbool frustumTest = all( frustumTestVec );\\n\\t\\tif ( frustumTest ) {\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx0 = - texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy0 = - texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx1 = + texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy1 = + texelSize.y * shadowRadius;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx0 = - texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy0 = - texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx1 = + texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy1 = + texelSize.y * shadowRadius;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#else\\n\\t\\t\\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#endif\\n\\t\\t}\\n\\t\\treturn shadow;\\n\\t}\\n\\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\\n\\t\\tvec3 absV = abs( v );\\n\\t\\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\\n\\t\\tabsV *= scaleToCube;\\n\\t\\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\\n\\t\\tvec2 planar = v.xy;\\n\\t\\tfloat almostATexel = 1.5 * texelSizeY;\\n\\t\\tfloat almostOne = 1.0 - almostATexel;\\n\\t\\tif ( absV.z >= almostOne ) {\\n\\t\\t\\tif ( v.z > 0.0 )\\n\\t\\t\\t\\tplanar.x = 4.0 - v.x;\\n\\t\\t} else if ( absV.x >= almostOne ) {\\n\\t\\t\\tfloat signX = sign( v.x );\\n\\t\\t\\tplanar.x = v.z * signX + 2.0 * signX;\\n\\t\\t} else if ( absV.y >= almostOne ) {\\n\\t\\t\\tfloat signY = sign( v.y );\\n\\t\\t\\tplanar.x = v.x + 2.0 * signY + 2.0;\\n\\t\\t\\tplanar.y = v.z * signY - 2.0;\\n\\t\\t}\\n\\t\\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\\n\\t}\\n\\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\\n\\t\\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\\n\\t\\tvec3 lightToPosition = shadowCoord.xyz;\\n\\t\\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\\t\\tdp += shadowBias;\\n\\t\\tvec3 bd3D = normalize( lightToPosition );\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\\t\\t\\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\\n\\t\\t\\treturn (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#else\\n\\t\\t\\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\\n\\t\\t#endif\\n\\t}\\n#endif\\n\";\n\nvar shadowmap_pars_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHTS > 0\\n\\t\\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHTS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHTS > 0\\n\\t\\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHTS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHTS > 0\\n\\t\\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHTS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\\n\\t#endif\\n#endif\\n\";\n\nvar shadowmap_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * worldPosition;\\n\\t}\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * worldPosition;\\n\\t}\\n\\t#endif\\n\\t#if NUM_POINT_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * worldPosition;\\n\\t}\\n\\t#endif\\n#endif\\n\";\n\nvar shadowmask_pars_fragment = \"float getShadowMask() {\\n\\tfloat shadow = 1.0;\\n\\t#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHTS > 0\\n\\tDirectionalLight directionalLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLights[ i ];\\n\\t\\tshadow *= bool( directionalLight.shadow ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHTS > 0\\n\\tSpotLight spotLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tshadow *= bool( spotLight.shadow ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#endif\\n\\t#if NUM_POINT_LIGHTS > 0\\n\\tPointLight pointLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tshadow *= bool( pointLight.shadow ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t}\\n\\t#endif\\n\\t#endif\\n\\treturn shadow;\\n}\\n\";\n\nvar 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\";\n\nvar skinning_pars_vertex = \"#ifdef USE_SKINNING\\n\\tuniform mat4 bindMatrix;\\n\\tuniform mat4 bindMatrixInverse;\\n\\t#ifdef BONE_TEXTURE\\n\\t\\tuniform sampler2D boneTexture;\\n\\t\\tuniform int boneTextureSize;\\n\\t\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\t\\tfloat j = i * 4.0;\\n\\t\\t\\tfloat x = mod( j, float( boneTextureSize ) );\\n\\t\\t\\tfloat y = floor( j / float( boneTextureSize ) );\\n\\t\\t\\tfloat dx = 1.0 / float( boneTextureSize );\\n\\t\\t\\tfloat dy = 1.0 / float( boneTextureSize );\\n\\t\\t\\ty = dy * ( y + 0.5 );\\n\\t\\t\\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\\n\\t\\t\\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\\n\\t\\t\\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\\n\\t\\t\\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\\n\\t\\t\\tmat4 bone = mat4( v1, v2, v3, v4 );\\n\\t\\t\\treturn bone;\\n\\t\\t}\\n\\t#else\\n\\t\\tuniform mat4 boneMatrices[ MAX_BONES ];\\n\\t\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\t\\tmat4 bone = boneMatrices[ int(i) ];\\n\\t\\t\\treturn bone;\\n\\t\\t}\\n\\t#endif\\n#endif\\n\";\n\nvar 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\\n\";\n\nvar 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#endif\\n\";\n\nvar 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\";\n\nvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\\tuniform sampler2D specularMap;\\n#endif\";\n\nvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n  gl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\\n\";\n\nvar tonemapping_pars_fragment = \"#ifndef saturate\\n\\t#define saturate(a) clamp( a, 0.0, 1.0 )\\n#endif\\nuniform float toneMappingExposure;\\nuniform float toneMappingWhitePoint;\\nvec3 LinearToneMapping( vec3 color ) {\\n\\treturn toneMappingExposure * color;\\n}\\nvec3 ReinhardToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( color / ( vec3( 1.0 ) + color ) );\\n}\\n#define Uncharted2Helper( x ) max( ( ( x * ( 0.15 * x + 0.10 * 0.50 ) + 0.20 * 0.02 ) / ( x * ( 0.15 * x + 0.50 ) + 0.20 * 0.30 ) ) - 0.02 / 0.30, vec3( 0.0 ) )\\nvec3 Uncharted2ToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( Uncharted2Helper( color ) / Uncharted2Helper( vec3( toneMappingWhitePoint ) ) );\\n}\\nvec3 OptimizedCineonToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = max( vec3( 0.0 ), color - 0.004 );\\n\\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\\n}\\n\";\n\nvar uv_pars_fragment = \"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\\n\\tvarying vec2 vUv;\\n#endif\";\n\nvar uv_pars_vertex = \"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\\n\\tvarying vec2 vUv;\\n\\tuniform mat3 uvTransform;\\n#endif\\n\";\n\nvar uv_vertex = \"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n#endif\";\n\nvar uv2_pars_fragment = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvarying vec2 vUv2;\\n#endif\";\n\nvar uv2_pars_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tattribute vec2 uv2;\\n\\tvarying vec2 vUv2;\\n#endif\";\n\nvar uv2_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvUv2 = uv2;\\n#endif\";\n\nvar worldpos_vertex = \"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\\n\\tvec4 worldPosition = modelMatrix * vec4( transformed, 1.0 );\\n#endif\\n\";\n\nvar cube_frag = \"uniform samplerCube tCube;\\nuniform float tFlip;\\nuniform float opacity;\\nvarying vec3 vWorldPosition;\\nvoid main() {\\n\\tgl_FragColor = textureCube( tCube, vec3( tFlip * vWorldPosition.x, vWorldPosition.yz ) );\\n\\tgl_FragColor.a *= opacity;\\n}\\n\";\n\nvar cube_vert = \"varying vec3 vWorldPosition;\\n#include <common>\\nvoid main() {\\n\\tvWorldPosition = transformDirection( position, modelMatrix );\\n\\t#include <begin_vertex>\\n\\t#include <project_vertex>\\n\\tgl_Position.z = gl_Position.w;\\n}\\n\";\n\nvar depth_frag = \"#if DEPTH_PACKING == 3200\\n\\tuniform float opacity;\\n#endif\\n#include <common>\\n#include <packing>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tdiffuseColor.a = opacity;\\n\\t#endif\\n\\t#include <map_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <logdepthbuf_fragment>\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tgl_FragColor = vec4( vec3( 1.0 - gl_FragCoord.z ), opacity );\\n\\t#elif DEPTH_PACKING == 3201\\n\\t\\tgl_FragColor = packDepthToRGBA( gl_FragCoord.z );\\n\\t#endif\\n}\\n\";\n\nvar depth_vert = \"#include <common>\\n#include <uv_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include <beginnormal_vertex>\\n\\t\\t#include <morphnormal_vertex>\\n\\t\\t#include <skinnormal_vertex>\\n\\t#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n}\\n\";\n\nvar distanceRGBA_frag = \"#define DISTANCE\\nuniform vec3 referencePosition;\\nuniform float nearDistance;\\nuniform float farDistance;\\nvarying vec3 vWorldPosition;\\n#include <common>\\n#include <packing>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main () {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include <map_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\tfloat dist = length( vWorldPosition - referencePosition );\\n\\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\\n\\tdist = saturate( dist );\\n\\tgl_FragColor = packDepthToRGBA( dist );\\n}\\n\";\n\nvar distanceRGBA_vert = \"#define DISTANCE\\nvarying vec3 vWorldPosition;\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include <beginnormal_vertex>\\n\\t\\t#include <morphnormal_vertex>\\n\\t\\t#include <skinnormal_vertex>\\n\\t#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\tvWorldPosition = worldPosition.xyz;\\n}\\n\";\n\nvar equirect_frag = \"uniform sampler2D tEquirect;\\nvarying vec3 vWorldPosition;\\n#include <common>\\nvoid main() {\\n\\tvec3 direction = normalize( vWorldPosition );\\n\\tvec2 sampleUV;\\n\\tsampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\\n\\tgl_FragColor = texture2D( tEquirect, sampleUV );\\n}\\n\";\n\nvar equirect_vert = \"varying vec3 vWorldPosition;\\n#include <common>\\nvoid main() {\\n\\tvWorldPosition = transformDirection( position, modelMatrix );\\n\\t#include <begin_vertex>\\n\\t#include <project_vertex>\\n}\\n\";\n\nvar linedashed_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\nuniform float dashSize;\\nuniform float totalSize;\\nvarying float vLineDistance;\\n#include <common>\\n#include <color_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\\n\\t\\tdiscard;\\n\\t}\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <color_fragment>\\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n}\\n\";\n\nvar linedashed_vert = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include <common>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <color_vertex>\\n\\tvLineDistance = scale * lineDistance;\\n\\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\\n\\tgl_Position = projectionMatrix * mvPosition;\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <fog_vertex>\\n}\\n\";\n\nvar meshbasic_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include <common>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <specularmap_fragment>\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\treflectedLight.indirectDiffuse += texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vec3( 1.0 );\\n\\t#endif\\n\\t#include <aomap_fragment>\\n\\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\\n\\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\\n\\t#include <envmap_fragment>\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n}\\n\";\n\nvar meshbasic_vert = \"#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <envmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <uv2_vertex>\\n\\t#include <color_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#ifdef USE_ENVMAP\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n\\t#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <envmap_vertex>\\n\\t#include <fog_vertex>\\n}\\n\";\n\nvar meshlambert_frag = \"uniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\nvarying vec3 vLightFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n#endif\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <fog_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <shadowmask_pars_fragment>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <specularmap_fragment>\\n\\t#include <emissivemap_fragment>\\n\\treflectedLight.indirectDiffuse = getAmbientLightIrradiance( ambientLightColor );\\n\\t#include <lightmap_fragment>\\n\\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\\n\\t#else\\n\\t\\treflectedLight.directDiffuse = vLightFront;\\n\\t#endif\\n\\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\\n\\t#include <aomap_fragment>\\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include <envmap_fragment>\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\\n\";\n\nvar meshlambert_vert = \"#define LAMBERT\\nvarying vec3 vLightFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <envmap_pars_vertex>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <uv2_vertex>\\n\\t#include <color_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <envmap_vertex>\\n\\t#include <lights_lambert_vertex>\\n\\t#include <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n}\\n\";\n\nvar meshphong_frag = \"#define PHONG\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform vec3 specular;\\nuniform float shininess;\\nuniform float opacity;\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <gradientmap_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <lights_phong_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <specularmap_fragment>\\n\\t#include <normal_fragment_begin>\\n\\t#include <normal_fragment_maps>\\n\\t#include <emissivemap_fragment>\\n\\t#include <lights_phong_fragment>\\n\\t#include <lights_fragment_begin>\\n\\t#include <lights_fragment_maps>\\n\\t#include <lights_fragment_end>\\n\\t#include <aomap_fragment>\\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\t#include <envmap_fragment>\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\\n\";\n\nvar meshphong_vert = \"#define PHONG\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <envmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <uv2_vertex>\\n\\t#include <color_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include <worldpos_vertex>\\n\\t#include <envmap_vertex>\\n\\t#include <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n}\\n\";\n\nvar meshphysical_frag = \"#define PHYSICAL\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifndef STANDARD\\n\\tuniform float clearCoat;\\n\\tuniform float clearCoatRoughness;\\n#endif\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <bsdfs>\\n#include <cube_uv_reflection_fragment>\\n#include <envmap_pars_fragment>\\n#include <envmap_physical_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <lights_pars_begin>\\n#include <lights_physical_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <roughnessmap_pars_fragment>\\n#include <metalnessmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <roughnessmap_fragment>\\n\\t#include <metalnessmap_fragment>\\n\\t#include <normal_fragment_begin>\\n\\t#include <normal_fragment_maps>\\n\\t#include <emissivemap_fragment>\\n\\t#include <lights_physical_fragment>\\n\\t#include <lights_fragment_begin>\\n\\t#include <lights_fragment_maps>\\n\\t#include <lights_fragment_end>\\n\\t#include <aomap_fragment>\\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\\n\";\n\nvar meshphysical_vert = \"#define PHYSICAL\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <uv2_vertex>\\n\\t#include <color_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include <worldpos_vertex>\\n\\t#include <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n}\\n\";\n\nvar normal_frag = \"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include <packing>\\n#include <uv_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\nvoid main() {\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <normal_fragment_begin>\\n\\t#include <normal_fragment_maps>\\n\\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\\n}\\n\";\n\nvar normal_vert = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include <uv_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\\n\";\n\nvar points_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include <common>\\n#include <color_pars_fragment>\\n#include <map_particle_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_particle_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphatest_fragment>\\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n}\\n\";\n\nvar points_vert = \"uniform float size;\\nuniform float scale;\\n#include <common>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <color_vertex>\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <project_vertex>\\n\\t#ifdef USE_SIZEATTENUATION\\n\\t\\tgl_PointSize = size * ( scale / - mvPosition.z );\\n\\t#else\\n\\t\\tgl_PointSize = size;\\n\\t#endif\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <fog_vertex>\\n}\\n\";\n\nvar shadow_frag = \"uniform vec3 color;\\nuniform float opacity;\\n#include <common>\\n#include <packing>\\n#include <fog_pars_fragment>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <shadowmap_pars_fragment>\\n#include <shadowmask_pars_fragment>\\nvoid main() {\\n\\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\\n\\t#include <fog_fragment>\\n}\\n\";\n\nvar shadow_vert = \"#include <fog_pars_vertex>\\n#include <shadowmap_pars_vertex>\\nvoid main() {\\n\\t#include <begin_vertex>\\n\\t#include <project_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n}\\n\";\n\nvar sprite_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include <common>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <alphatest_fragment>\\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n}\\n\";\n\nvar sprite_vert = \"uniform float rotation;\\nuniform vec2 center;\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\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\\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\\tvec4 mvPosition;\\n\\tmvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\\n\\tmvPosition.xy += rotatedPosition;\\n\\tgl_Position = projectionMatrix * mvPosition;\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <fog_vertex>\\n}\\n\";\n\nvar ShaderChunk = {\n\talphamap_fragment: alphamap_fragment,\n\talphamap_pars_fragment: alphamap_pars_fragment,\n\talphatest_fragment: alphatest_fragment,\n\taomap_fragment: aomap_fragment,\n\taomap_pars_fragment: aomap_pars_fragment,\n\tbegin_vertex: begin_vertex,\n\tbeginnormal_vertex: beginnormal_vertex,\n\tbsdfs: bsdfs,\n\tbumpmap_pars_fragment: bumpmap_pars_fragment,\n\tclipping_planes_fragment: clipping_planes_fragment,\n\tclipping_planes_pars_fragment: clipping_planes_pars_fragment,\n\tclipping_planes_pars_vertex: clipping_planes_pars_vertex,\n\tclipping_planes_vertex: clipping_planes_vertex,\n\tcolor_fragment: color_fragment,\n\tcolor_pars_fragment: color_pars_fragment,\n\tcolor_pars_vertex: color_pars_vertex,\n\tcolor_vertex: color_vertex,\n\tcommon: common,\n\tcube_uv_reflection_fragment: cube_uv_reflection_fragment,\n\tdefaultnormal_vertex: defaultnormal_vertex,\n\tdisplacementmap_pars_vertex: displacementmap_pars_vertex,\n\tdisplacementmap_vertex: displacementmap_vertex,\n\temissivemap_fragment: emissivemap_fragment,\n\temissivemap_pars_fragment: emissivemap_pars_fragment,\n\tencodings_fragment: encodings_fragment,\n\tencodings_pars_fragment: encodings_pars_fragment,\n\tenvmap_fragment: envmap_fragment,\n\tenvmap_pars_fragment: envmap_pars_fragment,\n\tenvmap_pars_vertex: envmap_pars_vertex,\n\tenvmap_physical_pars_fragment: envmap_physical_pars_fragment,\n\tenvmap_vertex: envmap_vertex,\n\tfog_vertex: fog_vertex,\n\tfog_pars_vertex: fog_pars_vertex,\n\tfog_fragment: fog_fragment,\n\tfog_pars_fragment: fog_pars_fragment,\n\tgradientmap_pars_fragment: gradientmap_pars_fragment,\n\tlightmap_fragment: lightmap_fragment,\n\tlightmap_pars_fragment: lightmap_pars_fragment,\n\tlights_lambert_vertex: lights_lambert_vertex,\n\tlights_pars_begin: lights_pars_begin,\n\tlights_phong_fragment: lights_phong_fragment,\n\tlights_phong_pars_fragment: lights_phong_pars_fragment,\n\tlights_physical_fragment: lights_physical_fragment,\n\tlights_physical_pars_fragment: lights_physical_pars_fragment,\n\tlights_fragment_begin: lights_fragment_begin,\n\tlights_fragment_maps: lights_fragment_maps,\n\tlights_fragment_end: lights_fragment_end,\n\tlogdepthbuf_fragment: logdepthbuf_fragment,\n\tlogdepthbuf_pars_fragment: logdepthbuf_pars_fragment,\n\tlogdepthbuf_pars_vertex: logdepthbuf_pars_vertex,\n\tlogdepthbuf_vertex: logdepthbuf_vertex,\n\tmap_fragment: map_fragment,\n\tmap_pars_fragment: map_pars_fragment,\n\tmap_particle_fragment: map_particle_fragment,\n\tmap_particle_pars_fragment: map_particle_pars_fragment,\n\tmetalnessmap_fragment: metalnessmap_fragment,\n\tmetalnessmap_pars_fragment: metalnessmap_pars_fragment,\n\tmorphnormal_vertex: morphnormal_vertex,\n\tmorphtarget_pars_vertex: morphtarget_pars_vertex,\n\tmorphtarget_vertex: morphtarget_vertex,\n\tnormal_fragment_begin: normal_fragment_begin,\n\tnormal_fragment_maps: normal_fragment_maps,\n\tnormalmap_pars_fragment: normalmap_pars_fragment,\n\tpacking: packing,\n\tpremultiplied_alpha_fragment: premultiplied_alpha_fragment,\n\tproject_vertex: project_vertex,\n\tdithering_fragment: dithering_fragment,\n\tdithering_pars_fragment: dithering_pars_fragment,\n\troughnessmap_fragment: roughnessmap_fragment,\n\troughnessmap_pars_fragment: roughnessmap_pars_fragment,\n\tshadowmap_pars_fragment: shadowmap_pars_fragment,\n\tshadowmap_pars_vertex: shadowmap_pars_vertex,\n\tshadowmap_vertex: shadowmap_vertex,\n\tshadowmask_pars_fragment: shadowmask_pars_fragment,\n\tskinbase_vertex: skinbase_vertex,\n\tskinning_pars_vertex: skinning_pars_vertex,\n\tskinning_vertex: skinning_vertex,\n\tskinnormal_vertex: skinnormal_vertex,\n\tspecularmap_fragment: specularmap_fragment,\n\tspecularmap_pars_fragment: specularmap_pars_fragment,\n\ttonemapping_fragment: tonemapping_fragment,\n\ttonemapping_pars_fragment: tonemapping_pars_fragment,\n\tuv_pars_fragment: uv_pars_fragment,\n\tuv_pars_vertex: uv_pars_vertex,\n\tuv_vertex: uv_vertex,\n\tuv2_pars_fragment: uv2_pars_fragment,\n\tuv2_pars_vertex: uv2_pars_vertex,\n\tuv2_vertex: uv2_vertex,\n\tworldpos_vertex: worldpos_vertex,\n\n\tcube_frag: cube_frag,\n\tcube_vert: cube_vert,\n\tdepth_frag: depth_frag,\n\tdepth_vert: depth_vert,\n\tdistanceRGBA_frag: distanceRGBA_frag,\n\tdistanceRGBA_vert: distanceRGBA_vert,\n\tequirect_frag: equirect_frag,\n\tequirect_vert: equirect_vert,\n\tlinedashed_frag: linedashed_frag,\n\tlinedashed_vert: linedashed_vert,\n\tmeshbasic_frag: meshbasic_frag,\n\tmeshbasic_vert: meshbasic_vert,\n\tmeshlambert_frag: meshlambert_frag,\n\tmeshlambert_vert: meshlambert_vert,\n\tmeshphong_frag: meshphong_frag,\n\tmeshphong_vert: meshphong_vert,\n\tmeshphysical_frag: meshphysical_frag,\n\tmeshphysical_vert: meshphysical_vert,\n\tnormal_frag: normal_frag,\n\tnormal_vert: normal_vert,\n\tpoints_frag: points_frag,\n\tpoints_vert: points_vert,\n\tshadow_frag: shadow_frag,\n\tshadow_vert: shadow_vert,\n\tsprite_frag: sprite_frag,\n\tsprite_vert: sprite_vert\n};\n\n/**\n * Uniform Utilities\n */\n\nvar UniformsUtils = {\n\n\tmerge: function ( uniforms ) {\n\n\t\tvar merged = {};\n\n\t\tfor ( var u = 0; u < uniforms.length; u ++ ) {\n\n\t\t\tvar tmp = this.clone( uniforms[ u ] );\n\n\t\t\tfor ( var p in tmp ) {\n\n\t\t\t\tmerged[ p ] = tmp[ p ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn merged;\n\n\t},\n\n\tclone: function ( uniforms_src ) {\n\n\t\tvar uniforms_dst = {};\n\n\t\tfor ( var u in uniforms_src ) {\n\n\t\t\tuniforms_dst[ u ] = {};\n\n\t\t\tfor ( var p in uniforms_src[ u ] ) {\n\n\t\t\t\tvar parameter_src = uniforms_src[ u ][ p ];\n\n\t\t\t\tif ( parameter_src && ( parameter_src.isColor ||\n\t\t\t\t\tparameter_src.isMatrix3 || parameter_src.isMatrix4 ||\n\t\t\t\t\tparameter_src.isVector2 || parameter_src.isVector3 || parameter_src.isVector4 ||\n\t\t\t\t\tparameter_src.isTexture ) ) {\n\n\t\t\t\t\tuniforms_dst[ u ][ p ] = parameter_src.clone();\n\n\t\t\t\t} else if ( Array.isArray( parameter_src ) ) {\n\n\t\t\t\t\tuniforms_dst[ u ][ p ] = parameter_src.slice();\n\n\t\t\t\t} else {\n\n\t\t\t\t\tuniforms_dst[ u ][ p ] = parameter_src;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn uniforms_dst;\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar ColorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\nfunction Color( r, g, b ) {\n\n\tif ( g === undefined && b === undefined ) {\n\n\t\t// r is THREE.Color, hex or string\n\t\treturn this.set( r );\n\n\t}\n\n\treturn this.setRGB( r, g, b );\n\n}\n\nObject.assign( Color.prototype, {\n\n\tisColor: true,\n\n\tr: 1, g: 1, b: 1,\n\n\tset: function ( value ) {\n\n\t\tif ( value && value.isColor ) {\n\n\t\t\tthis.copy( value );\n\n\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\tthis.setHex( value );\n\n\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\tthis.setStyle( value );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetHex: function ( hex ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\treturn this;\n\n\t},\n\n\tsetRGB: function ( r, g, b ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\treturn this;\n\n\t},\n\n\tsetHSL: function () {\n\n\t\tfunction hue2rgb( p, q, t ) {\n\n\t\t\tif ( t < 0 ) t += 1;\n\t\t\tif ( t > 1 ) t -= 1;\n\t\t\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\t\t\tif ( t < 1 / 2 ) return q;\n\t\t\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\t\t\treturn p;\n\n\t\t}\n\n\t\treturn function setHSL( h, s, l ) {\n\n\t\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\t\th = _Math.euclideanModulo( h, 1 );\n\t\t\ts = _Math.clamp( s, 0, 1 );\n\t\t\tl = _Math.clamp( l, 0, 1 );\n\n\t\t\tif ( s === 0 ) {\n\n\t\t\t\tthis.r = this.g = this.b = l;\n\n\t\t\t} else {\n\n\t\t\t\tvar p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\t\tvar q = ( 2 * l ) - p;\n\n\t\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tsetStyle: function ( style ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tvar m;\n\n\t\tif ( m = /^((?:rgb|hsl)a?)\\(\\s*([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tvar color;\n\t\t\tvar name = m[ 1 ];\n\t\t\tvar components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^([0-9]*\\.?[0-9]+)\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\t\t\t\t\t\tvar h = parseFloat( color[ 1 ] ) / 360;\n\t\t\t\t\t\tvar s = parseInt( color[ 2 ], 10 ) / 100;\n\t\t\t\t\t\tvar l = parseInt( color[ 3 ], 10 ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this.setHSL( h, s, l );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f0-9]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tvar hex = m[ 1 ];\n\t\t\tvar size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( style && style.length > 0 ) {\n\n\t\t\t// color keywords\n\t\t\tvar hex = ColorKeywords[ style ];\n\n\t\t\tif ( hex !== undefined ) {\n\n\t\t\t\t// red\n\t\t\t\tthis.setHex( hex );\n\n\t\t\t} else {\n\n\t\t\t\t// unknown color\n\t\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t},\n\n\tcopy: function ( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t},\n\n\tcopyGammaToLinear: function ( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tthis.r = Math.pow( color.r, gammaFactor );\n\t\tthis.g = Math.pow( color.g, gammaFactor );\n\t\tthis.b = Math.pow( color.b, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tcopyLinearToGamma: function ( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tvar safeInverse = ( gammaFactor > 0 ) ? ( 1.0 / gammaFactor ) : 1.0;\n\n\t\tthis.r = Math.pow( color.r, safeInverse );\n\t\tthis.g = Math.pow( color.g, safeInverse );\n\t\tthis.b = Math.pow( color.b, safeInverse );\n\n\t\treturn this;\n\n\t},\n\n\tconvertGammaToLinear: function ( gammaFactor ) {\n\n\t\tthis.copyGammaToLinear( this, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tconvertLinearToGamma: function ( gammaFactor ) {\n\n\t\tthis.copyLinearToGamma( this, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tcopySRGBToLinear: function () {\n\n\t\tfunction SRGBToLinear( c ) {\n\n\t\t\treturn ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );\n\n\t\t}\n\n\t\treturn function copySRGBToLinear( color ) {\n\n\t\t\tthis.r = SRGBToLinear( color.r );\n\t\t\tthis.g = SRGBToLinear( color.g );\n\t\t\tthis.b = SRGBToLinear( color.b );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tcopyLinearToSRGB: function () {\n\n\t\tfunction LinearToSRGB( c ) {\n\n\t\t\treturn ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;\n\n\t\t}\n\n\t\treturn function copyLinearToSRGB( color ) {\n\n\t\t\tthis.r = LinearToSRGB( color.r );\n\t\t\tthis.g = LinearToSRGB( color.g );\n\t\t\tthis.b = LinearToSRGB( color.b );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tconvertSRGBToLinear: function () {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t},\n\n\tconvertLinearToSRGB: function () {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t},\n\n\tgetHex: function () {\n\n\t\treturn ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;\n\n\t},\n\n\tgetHexString: function () {\n\n\t\treturn ( '000000' + this.getHex().toString( 16 ) ).slice( - 6 );\n\n\t},\n\n\tgetHSL: function ( target ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Color: .getHSL() target is now required' );\n\t\t\ttarget = { h: 0, s: 0, l: 0 };\n\n\t\t}\n\n\t\tvar r = this.r, g = this.g, b = this.b;\n\n\t\tvar max = Math.max( r, g, b );\n\t\tvar min = Math.min( r, g, b );\n\n\t\tvar hue, saturation;\n\t\tvar lightness = ( min + max ) / 2.0;\n\n\t\tif ( min === max ) {\n\n\t\t\thue = 0;\n\t\t\tsaturation = 0;\n\n\t\t} else {\n\n\t\t\tvar delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\ttarget.h = hue;\n\t\ttarget.s = saturation;\n\t\ttarget.l = lightness;\n\n\t\treturn target;\n\n\t},\n\n\tgetStyle: function () {\n\n\t\treturn 'rgb(' + ( ( this.r * 255 ) | 0 ) + ',' + ( ( this.g * 255 ) | 0 ) + ',' + ( ( this.b * 255 ) | 0 ) + ')';\n\n\t},\n\n\toffsetHSL: function () {\n\n\t\tvar hsl = {};\n\n\t\treturn function ( h, s, l ) {\n\n\t\t\tthis.getHSL( hsl );\n\n\t\t\thsl.h += h; hsl.s += s; hsl.l += l;\n\n\t\t\tthis.setHSL( hsl.h, hsl.s, hsl.l );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tadd: function ( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t},\n\n\taddColors: function ( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t},\n\n\tlerp: function ( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\treturn this.getHex();\n\n\t}\n\n} );\n\n/**\n * Uniforms library for shared webgl shaders\n */\n\nvar UniformsLib = {\n\n\tcommon: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\n\t\tmap: { value: null },\n\t\tuvTransform: { value: new Matrix3() },\n\n\t\talphaMap: { value: null },\n\n\t},\n\n\tspecularmap: {\n\n\t\tspecularMap: { value: null },\n\n\t},\n\n\tenvmap: {\n\n\t\tenvMap: { value: null },\n\t\tflipEnvMap: { value: - 1 },\n\t\treflectivity: { value: 1.0 },\n\t\trefractionRatio: { value: 0.98 },\n\t\tmaxMipLevel: { value: 0 }\n\n\t},\n\n\taomap: {\n\n\t\taoMap: { value: null },\n\t\taoMapIntensity: { value: 1 }\n\n\t},\n\n\tlightmap: {\n\n\t\tlightMap: { value: null },\n\t\tlightMapIntensity: { value: 1 }\n\n\t},\n\n\temissivemap: {\n\n\t\temissiveMap: { value: null }\n\n\t},\n\n\tbumpmap: {\n\n\t\tbumpMap: { value: null },\n\t\tbumpScale: { value: 1 }\n\n\t},\n\n\tnormalmap: {\n\n\t\tnormalMap: { value: null },\n\t\tnormalScale: { value: new Vector2( 1, 1 ) }\n\n\t},\n\n\tdisplacementmap: {\n\n\t\tdisplacementMap: { value: null },\n\t\tdisplacementScale: { value: 1 },\n\t\tdisplacementBias: { value: 0 }\n\n\t},\n\n\troughnessmap: {\n\n\t\troughnessMap: { value: null }\n\n\t},\n\n\tmetalnessmap: {\n\n\t\tmetalnessMap: { value: null }\n\n\t},\n\n\tgradientmap: {\n\n\t\tgradientMap: { value: null }\n\n\t},\n\n\tfog: {\n\n\t\tfogDensity: { value: 0.00025 },\n\t\tfogNear: { value: 1 },\n\t\tfogFar: { value: 2000 },\n\t\tfogColor: { value: new Color( 0xffffff ) }\n\n\t},\n\n\tlights: {\n\n\t\tambientLightColor: { value: [] },\n\n\t\tdirectionalLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tcolor: {},\n\n\t\t\tshadow: {},\n\t\t\tshadowBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tdirectionalShadowMap: { value: [] },\n\t\tdirectionalShadowMatrix: { value: [] },\n\n\t\tspotLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdirection: {},\n\t\t\tdistance: {},\n\t\t\tconeCos: {},\n\t\t\tpenumbraCos: {},\n\t\t\tdecay: {},\n\n\t\t\tshadow: {},\n\t\t\tshadowBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tspotShadowMap: { value: [] },\n\t\tspotShadowMatrix: { value: [] },\n\n\t\tpointLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdecay: {},\n\t\t\tdistance: {},\n\n\t\t\tshadow: {},\n\t\t\tshadowBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {},\n\t\t\tshadowCameraNear: {},\n\t\t\tshadowCameraFar: {}\n\t\t} },\n\n\t\tpointShadowMap: { value: [] },\n\t\tpointShadowMatrix: { value: [] },\n\n\t\themisphereLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tskyColor: {},\n\t\t\tgroundColor: {}\n\t\t} },\n\n\t\t// TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\n\t\trectAreaLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\twidth: {},\n\t\t\theight: {}\n\t\t} }\n\n\t},\n\n\tpoints: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\t\tsize: { value: 1.0 },\n\t\tscale: { value: 1.0 },\n\t\tmap: { value: null },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t},\n\n\tsprite: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\t\tcenter: { value: new Vector2( 0.5, 0.5 ) },\n\t\trotation: { value: 0.0 },\n\t\tmap: { value: null },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t}\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n */\n\nvar ShaderLib = {\n\n\tbasic: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshbasic_vert,\n\t\tfragmentShader: ShaderChunk.meshbasic_frag\n\n\t},\n\n\tlambert: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshlambert_vert,\n\t\tfragmentShader: ShaderChunk.meshlambert_frag\n\n\t},\n\n\tphong: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.gradientmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\tspecular: { value: new Color( 0x111111 ) },\n\t\t\t\tshininess: { value: 30 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphong_vert,\n\t\tfragmentShader: ShaderChunk.meshphong_frag\n\n\t},\n\n\tstandard: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.roughnessmap,\n\t\t\tUniformsLib.metalnessmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\troughness: { value: 0.5 },\n\t\t\t\tmetalness: { value: 0.5 },\n\t\t\t\tenvMapIntensity: { value: 1 } // temporary\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphysical_vert,\n\t\tfragmentShader: ShaderChunk.meshphysical_frag\n\n\t},\n\n\tpoints: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\t\t\tUniformsLib.points,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.points_vert,\n\t\tfragmentShader: ShaderChunk.points_frag\n\n\t},\n\n\tdashed: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tscale: { value: 1 },\n\t\t\t\tdashSize: { value: 1 },\n\t\t\t\ttotalSize: { value: 2 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.linedashed_vert,\n\t\tfragmentShader: ShaderChunk.linedashed_frag\n\n\t},\n\n\tdepth: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.depth_vert,\n\t\tfragmentShader: ShaderChunk.depth_frag\n\n\t},\n\n\tnormal: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.normal_vert,\n\t\tfragmentShader: ShaderChunk.normal_frag\n\n\t},\n\n\tsprite: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\t\t\tUniformsLib.sprite,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.sprite_vert,\n\t\tfragmentShader: ShaderChunk.sprite_frag\n\n\t},\n\n\t/* -------------------------------------------------------------------------\n\t//\tCube map shader\n\t ------------------------------------------------------------------------- */\n\n\tcube: {\n\n\t\tuniforms: {\n\t\t\ttCube: { value: null },\n\t\t\ttFlip: { value: - 1 },\n\t\t\topacity: { value: 1.0 }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.cube_vert,\n\t\tfragmentShader: ShaderChunk.cube_frag\n\n\t},\n\n\tequirect: {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.equirect_vert,\n\t\tfragmentShader: ShaderChunk.equirect_frag\n\n\t},\n\n\tdistanceRGBA: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\treferencePosition: { value: new Vector3() },\n\t\t\t\tnearDistance: { value: 1 },\n\t\t\t\tfarDistance: { value: 1000 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.distanceRGBA_vert,\n\t\tfragmentShader: ShaderChunk.distanceRGBA_frag\n\n\t},\n\n\tshadow: {\n\n\t\tuniforms: UniformsUtils.merge( [\n\t\t\tUniformsLib.lights,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tcolor: { value: new Color( 0x00000 ) },\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t},\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.shadow_vert,\n\t\tfragmentShader: ShaderChunk.shadow_frag\n\n\t}\n\n};\n\nShaderLib.physical = {\n\n\tuniforms: UniformsUtils.merge( [\n\t\tShaderLib.standard.uniforms,\n\t\t{\n\t\t\tclearCoat: { value: 0 },\n\t\t\tclearCoatRoughness: { value: 0 }\n\t\t}\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLAnimation() {\n\n\tvar context = null;\n\tvar isAnimating = false;\n\tvar animationLoop = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tif ( isAnimating === false ) return;\n\n\t\tanimationLoop( time, frame );\n\n\t\tcontext.requestAnimationFrame( onAnimationFrame );\n\n\t}\n\n\treturn {\n\n\t\tstart: function () {\n\n\t\t\tif ( isAnimating === true ) return;\n\t\t\tif ( animationLoop === null ) return;\n\n\t\t\tcontext.requestAnimationFrame( onAnimationFrame );\n\n\t\t\tisAnimating = true;\n\n\t\t},\n\n\t\tstop: function () {\n\n\t\t\tisAnimating = false;\n\n\t\t},\n\n\t\tsetAnimationLoop: function ( callback ) {\n\n\t\t\tanimationLoop = callback;\n\n\t\t},\n\n\t\tsetContext: function ( value ) {\n\n\t\t\tcontext = value;\n\n\t\t}\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLAttributes( gl ) {\n\n\tvar buffers = new WeakMap();\n\n\tfunction createBuffer( attribute, bufferType ) {\n\n\t\tvar array = attribute.array;\n\t\tvar usage = attribute.dynamic ? gl.DYNAMIC_DRAW : gl.STATIC_DRAW;\n\n\t\tvar buffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\t\tgl.bufferData( bufferType, array, usage );\n\n\t\tattribute.onUploadCallback();\n\n\t\tvar type = gl.FLOAT;\n\n\t\tif ( array instanceof Float32Array ) {\n\n\t\t\ttype = gl.FLOAT;\n\n\t\t} else if ( array instanceof Float64Array ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.' );\n\n\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\ttype = gl.UNSIGNED_SHORT;\n\n\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\ttype = gl.SHORT;\n\n\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\ttype = gl.UNSIGNED_INT;\n\n\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\ttype = gl.INT;\n\n\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\ttype = gl.BYTE;\n\n\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\ttype = gl.UNSIGNED_BYTE;\n\n\t\t}\n\n\t\treturn {\n\t\t\tbuffer: buffer,\n\t\t\ttype: type,\n\t\t\tbytesPerElement: array.BYTES_PER_ELEMENT,\n\t\t\tversion: attribute.version\n\t\t};\n\n\t}\n\n\tfunction updateBuffer( buffer, attribute, bufferType ) {\n\n\t\tvar array = attribute.array;\n\t\tvar updateRange = attribute.updateRange;\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\n\t\tif ( attribute.dynamic === false ) {\n\n\t\t\tgl.bufferData( bufferType, array, gl.STATIC_DRAW );\n\n\t\t} else if ( updateRange.count === - 1 ) {\n\n\t\t\t// Not using update ranges\n\n\t\t\tgl.bufferSubData( bufferType, 0, array );\n\n\t\t} else if ( updateRange.count === 0 ) {\n\n\t\t\tconsole.error( 'THREE.WebGLObjects.updateBuffer: dynamic THREE.BufferAttribute marked as needsUpdate but updateRange.count is 0, ensure you are using set methods or updating manually.' );\n\n\t\t} else {\n\n\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\tarray.subarray( updateRange.offset, updateRange.offset + updateRange.count ) );\n\n\t\t\tupdateRange.count = - 1; // reset range\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction get( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\treturn buffers.get( attribute );\n\n\t}\n\n\tfunction remove( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tvar data = buffers.get( attribute );\n\n\t\tif ( data ) {\n\n\t\t\tgl.deleteBuffer( data.buffer );\n\n\t\t\tbuffers.delete( attribute );\n\n\t\t}\n\n\t}\n\n\tfunction update( attribute, bufferType ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tvar data = buffers.get( attribute );\n\n\t\tif ( data === undefined ) {\n\n\t\t\tbuffers.set( attribute, createBuffer( attribute, bufferType ) );\n\n\t\t} else if ( data.version < attribute.version ) {\n\n\t\t\tupdateBuffer( data.buffer, attribute, bufferType );\n\n\t\t\tdata.version = attribute.version;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n */\n\nfunction Euler( x, y, z, order ) {\n\n\tthis._x = x || 0;\n\tthis._y = y || 0;\n\tthis._z = z || 0;\n\tthis._order = order || Euler.DefaultOrder;\n\n}\n\nEuler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ];\n\nEuler.DefaultOrder = 'XYZ';\n\nObject.defineProperties( Euler.prototype, {\n\n\tx: {\n\n\t\tget: function () {\n\n\t\t\treturn this._x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._x = value;\n\t\t\tthis.onChangeCallback();\n\n\t\t}\n\n\t},\n\n\ty: {\n\n\t\tget: function () {\n\n\t\t\treturn this._y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._y = value;\n\t\t\tthis.onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tz: {\n\n\t\tget: function () {\n\n\t\t\treturn this._z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._z = value;\n\t\t\tthis.onChangeCallback();\n\n\t\t}\n\n\t},\n\n\torder: {\n\n\t\tget: function () {\n\n\t\t\treturn this._order;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._order = value;\n\t\t\tthis.onChangeCallback();\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Euler.prototype, {\n\n\tisEuler: true,\n\n\tset: function ( x, y, z, order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order || this._order;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t},\n\n\tcopy: function ( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromRotationMatrix: function ( m, order, update ) {\n\n\t\tvar clamp = _Math.clamp;\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tvar te = m.elements;\n\t\tvar m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tvar m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tvar m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\torder = order || this._order;\n\n\t\tif ( order === 'XYZ' ) {\n\n\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m13 ) < 0.99999 ) {\n\n\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\tthis._z = 0;\n\n\t\t\t}\n\n\t\t} else if ( order === 'YXZ' ) {\n\n\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m23 ) < 0.99999 ) {\n\n\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\tthis._z = 0;\n\n\t\t\t}\n\n\t\t} else if ( order === 'ZXY' ) {\n\n\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m32 ) < 0.99999 ) {\n\n\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._y = 0;\n\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t}\n\n\t\t} else if ( order === 'ZYX' ) {\n\n\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m31 ) < 0.99999 ) {\n\n\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t}\n\n\t\t} else if ( order === 'YZX' ) {\n\n\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m21 ) < 0.99999 ) {\n\n\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t}\n\n\t\t} else if ( order === 'XZY' ) {\n\n\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m12 ) < 0.99999 ) {\n\n\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\tthis._y = 0;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() given unsupported order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update !== false ) this.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromQuaternion: function () {\n\n\t\tvar matrix = new Matrix4();\n\n\t\treturn function setFromQuaternion( q, order, update ) {\n\n\t\t\tmatrix.makeRotationFromQuaternion( q );\n\n\t\t\treturn this.setFromRotationMatrix( matrix, order, update );\n\n\t\t};\n\n\t}(),\n\n\tsetFromVector3: function ( v, order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order || this._order );\n\n\t},\n\n\treorder: function () {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\tvar q = new Quaternion();\n\n\t\treturn function reorder( newOrder ) {\n\n\t\t\tq.setFromEuler( this );\n\n\t\t\treturn this.setFromQuaternion( q, newOrder );\n\n\t\t};\n\n\t}(),\n\n\tequals: function ( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t},\n\n\tfromArray: function ( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._order;\n\n\t\treturn array;\n\n\t},\n\n\ttoVector3: function ( optionalResult ) {\n\n\t\tif ( optionalResult ) {\n\n\t\t\treturn optionalResult.set( this._x, this._y, this._z );\n\n\t\t} else {\n\n\t\t\treturn new Vector3( this._x, this._y, this._z );\n\n\t\t}\n\n\t},\n\n\tonChange: function ( callback ) {\n\n\t\tthis.onChangeCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\tonChangeCallback: function () {}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Layers() {\n\n\tthis.mask = 1 | 0;\n\n}\n\nObject.assign( Layers.prototype, {\n\n\tset: function ( channel ) {\n\n\t\tthis.mask = 1 << channel | 0;\n\n\t},\n\n\tenable: function ( channel ) {\n\n\t\tthis.mask |= 1 << channel | 0;\n\n\t},\n\n\ttoggle: function ( channel ) {\n\n\t\tthis.mask ^= 1 << channel | 0;\n\n\t},\n\n\tdisable: function ( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel | 0 );\n\n\t},\n\n\ttest: function ( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author elephantatwork / www.elephantatwork.ch\n */\n\nvar object3DId = 0;\n\nfunction Object3D() {\n\n\tObject.defineProperty( this, 'id', { value: object3DId ++ } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Object3D';\n\n\tthis.parent = null;\n\tthis.children = [];\n\n\tthis.up = Object3D.DefaultUp.clone();\n\n\tvar position = new Vector3();\n\tvar rotation = new Euler();\n\tvar quaternion = new Quaternion();\n\tvar scale = new Vector3( 1, 1, 1 );\n\n\tfunction onRotationChange() {\n\n\t\tquaternion.setFromEuler( rotation, false );\n\n\t}\n\n\tfunction onQuaternionChange() {\n\n\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t}\n\n\trotation.onChange( onRotationChange );\n\tquaternion.onChange( onQuaternionChange );\n\n\tObject.defineProperties( this, {\n\t\tposition: {\n\t\t\tenumerable: true,\n\t\t\tvalue: position\n\t\t},\n\t\trotation: {\n\t\t\tenumerable: true,\n\t\t\tvalue: rotation\n\t\t},\n\t\tquaternion: {\n\t\t\tenumerable: true,\n\t\t\tvalue: quaternion\n\t\t},\n\t\tscale: {\n\t\t\tenumerable: true,\n\t\t\tvalue: scale\n\t\t},\n\t\tmodelViewMatrix: {\n\t\t\tvalue: new Matrix4()\n\t\t},\n\t\tnormalMatrix: {\n\t\t\tvalue: new Matrix3()\n\t\t}\n\t} );\n\n\tthis.matrix = new Matrix4();\n\tthis.matrixWorld = new Matrix4();\n\n\tthis.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate;\n\tthis.matrixWorldNeedsUpdate = false;\n\n\tthis.layers = new Layers();\n\tthis.visible = true;\n\n\tthis.castShadow = false;\n\tthis.receiveShadow = false;\n\n\tthis.frustumCulled = true;\n\tthis.renderOrder = 0;\n\n\tthis.userData = {};\n\n}\n\nObject3D.DefaultUp = new Vector3( 0, 1, 0 );\nObject3D.DefaultMatrixAutoUpdate = true;\n\nObject3D.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Object3D,\n\n\tisObject3D: true,\n\n\tonBeforeRender: function () {},\n\tonAfterRender: function () {},\n\n\tapplyMatrix: function ( matrix ) {\n\n\t\tthis.matrix.multiplyMatrices( matrix, this.matrix );\n\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t},\n\n\tapplyQuaternion: function ( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t},\n\n\tsetRotationFromAxisAngle: function ( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t},\n\n\tsetRotationFromEuler: function ( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t},\n\n\tsetRotationFromMatrix: function ( m ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t},\n\n\tsetRotationFromQuaternion: function ( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t},\n\n\trotateOnAxis: function () {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\tvar q1 = new Quaternion();\n\n\t\treturn function rotateOnAxis( axis, angle ) {\n\n\t\t\tq1.setFromAxisAngle( axis, angle );\n\n\t\t\tthis.quaternion.multiply( q1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateOnWorldAxis: function () {\n\n\t\t// rotate object on axis in world space\n\t\t// axis is assumed to be normalized\n\t\t// method assumes no rotated parent\n\n\t\tvar q1 = new Quaternion();\n\n\t\treturn function rotateOnWorldAxis( axis, angle ) {\n\n\t\t\tq1.setFromAxisAngle( axis, angle );\n\n\t\t\tthis.quaternion.premultiply( q1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateX: function () {\n\n\t\tvar v1 = new Vector3( 1, 0, 0 );\n\n\t\treturn function rotateX( angle ) {\n\n\t\t\treturn this.rotateOnAxis( v1, angle );\n\n\t\t};\n\n\t}(),\n\n\trotateY: function () {\n\n\t\tvar v1 = new Vector3( 0, 1, 0 );\n\n\t\treturn function rotateY( angle ) {\n\n\t\t\treturn this.rotateOnAxis( v1, angle );\n\n\t\t};\n\n\t}(),\n\n\trotateZ: function () {\n\n\t\tvar v1 = new Vector3( 0, 0, 1 );\n\n\t\treturn function rotateZ( angle ) {\n\n\t\t\treturn this.rotateOnAxis( v1, angle );\n\n\t\t};\n\n\t}(),\n\n\ttranslateOnAxis: function () {\n\n\t\t// translate object by distance along axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function translateOnAxis( axis, distance ) {\n\n\t\t\tv1.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\t\tthis.position.add( v1.multiplyScalar( distance ) );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslateX: function () {\n\n\t\tvar v1 = new Vector3( 1, 0, 0 );\n\n\t\treturn function translateX( distance ) {\n\n\t\t\treturn this.translateOnAxis( v1, distance );\n\n\t\t};\n\n\t}(),\n\n\ttranslateY: function () {\n\n\t\tvar v1 = new Vector3( 0, 1, 0 );\n\n\t\treturn function translateY( distance ) {\n\n\t\t\treturn this.translateOnAxis( v1, distance );\n\n\t\t};\n\n\t}(),\n\n\ttranslateZ: function () {\n\n\t\tvar v1 = new Vector3( 0, 0, 1 );\n\n\t\treturn function translateZ( distance ) {\n\n\t\t\treturn this.translateOnAxis( v1, distance );\n\n\t\t};\n\n\t}(),\n\n\tlocalToWorld: function ( vector ) {\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t},\n\n\tworldToLocal: function () {\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function worldToLocal( vector ) {\n\n\t\t\treturn vector.applyMatrix4( m1.getInverse( this.matrixWorld ) );\n\n\t\t};\n\n\t}(),\n\n\tlookAt: function () {\n\n\t\t// This method does not support objects with rotated and/or translated parent(s)\n\n\t\tvar m1 = new Matrix4();\n\t\tvar vector = new Vector3();\n\n\t\treturn function lookAt( x, y, z ) {\n\n\t\t\tif ( x.isVector3 ) {\n\n\t\t\t\tvector.copy( x );\n\n\t\t\t} else {\n\n\t\t\t\tvector.set( x, y, z );\n\n\t\t\t}\n\n\t\t\tif ( this.isCamera ) {\n\n\t\t\t\tm1.lookAt( this.position, vector, this.up );\n\n\t\t\t} else {\n\n\t\t\t\tm1.lookAt( vector, this.position, this.up );\n\n\t\t\t}\n\n\t\t\tthis.quaternion.setFromRotationMatrix( m1 );\n\n\t\t};\n\n\t}(),\n\n\tadd: function ( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( var i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object === this ) {\n\n\t\t\tconsole.error( \"THREE.Object3D.add: object can't be added as a child of itself.\", object );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( ( object && object.isObject3D ) ) {\n\n\t\t\tif ( object.parent !== null ) {\n\n\t\t\t\tobject.parent.remove( object );\n\n\t\t\t}\n\n\t\t\tobject.parent = this;\n\t\t\tobject.dispatchEvent( { type: 'added' } );\n\n\t\t\tthis.children.push( object );\n\n\t\t} else {\n\n\t\t\tconsole.error( \"THREE.Object3D.add: object not an instance of THREE.Object3D.\", object );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tremove: function ( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( var i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvar index = this.children.indexOf( object );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tobject.parent = null;\n\n\t\t\tobject.dispatchEvent( { type: 'removed' } );\n\n\t\t\tthis.children.splice( index, 1 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetObjectById: function ( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t},\n\n\tgetObjectByName: function ( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t},\n\n\tgetObjectByProperty: function ( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( var i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tvar child = this.children[ i ];\n\t\t\tvar object = child.getObjectByProperty( name, value );\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t},\n\n\tgetWorldPosition: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldPosition() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t},\n\n\tgetWorldQuaternion: function () {\n\n\t\tvar position = new Vector3();\n\t\tvar scale = new Vector3();\n\n\t\treturn function getWorldQuaternion( target ) {\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Object3D: .getWorldQuaternion() target is now required' );\n\t\t\t\ttarget = new Quaternion();\n\n\t\t\t}\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.matrixWorld.decompose( position, target, scale );\n\n\t\t\treturn target;\n\n\t\t};\n\n\t}(),\n\n\tgetWorldScale: function () {\n\n\t\tvar position = new Vector3();\n\t\tvar quaternion = new Quaternion();\n\n\t\treturn function getWorldScale( target ) {\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Object3D: .getWorldScale() target is now required' );\n\t\t\t\ttarget = new Vector3();\n\n\t\t\t}\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.matrixWorld.decompose( position, quaternion, target );\n\n\t\t\treturn target;\n\n\t\t};\n\n\t}(),\n\n\tgetWorldDirection: function () {\n\n\t\tvar quaternion = new Quaternion();\n\n\t\treturn function getWorldDirection( target ) {\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Object3D: .getWorldDirection() target is now required' );\n\t\t\t\ttarget = new Vector3();\n\n\t\t\t}\n\n\t\t\tthis.getWorldQuaternion( quaternion );\n\n\t\t\treturn target.set( 0, 0, 1 ).applyQuaternion( quaternion );\n\n\t\t};\n\n\t}(),\n\n\traycast: function () {},\n\n\ttraverse: function ( callback ) {\n\n\t\tcallback( this );\n\n\t\tvar children = this.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverse( callback );\n\n\t\t}\n\n\t},\n\n\ttraverseVisible: function ( callback ) {\n\n\t\tif ( this.visible === false ) return;\n\n\t\tcallback( this );\n\n\t\tvar children = this.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t}\n\n\t},\n\n\ttraverseAncestors: function ( callback ) {\n\n\t\tvar parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tcallback( parent );\n\n\t\t\tparent.traverseAncestors( callback );\n\n\t\t}\n\n\t},\n\n\tupdateMatrix: function () {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldNeedsUpdate || force ) {\n\n\t\t\tif ( this.parent === null ) {\n\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\n\t\t}\n\n\t\t// update children\n\n\t\tvar children = this.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].updateMatrixWorld( force );\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\t// meta is a string when called from JSON.stringify\n\t\tvar isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tvar output = {};\n\n\t\t// meta is a hash used to collect geometries, materials.\n\t\t// not providing it implies that this is the root object\n\t\t// being serialized.\n\t\tif ( isRootObject ) {\n\n\t\t\t// initialize meta obj\n\t\t\tmeta = {\n\t\t\t\tgeometries: {},\n\t\t\t\tmaterials: {},\n\t\t\t\ttextures: {},\n\t\t\t\timages: {},\n\t\t\t\tshapes: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Object',\n\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t};\n\n\t\t}\n\n\t\t// standard Object3D serialization\n\n\t\tvar object = {};\n\n\t\tobject.uuid = this.uuid;\n\t\tobject.type = this.type;\n\n\t\tif ( this.name !== '' ) object.name = this.name;\n\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\tif ( this.visible === false ) object.visible = false;\n\t\tif ( this.frustumCulled === false ) object.frustumCulled = false;\n\t\tif ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData;\n\n\t\tobject.layers = this.layers.mask;\n\t\tobject.matrix = this.matrix.toArray();\n\n\t\tif ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;\n\n\t\t//\n\n\t\tfunction serialize( library, element ) {\n\n\t\t\tif ( library[ element.uuid ] === undefined ) {\n\n\t\t\t\tlibrary[ element.uuid ] = element.toJSON( meta );\n\n\t\t\t}\n\n\t\t\treturn element.uuid;\n\n\t\t}\n\n\t\tif ( this.isMesh || this.isLine || this.isPoints ) {\n\n\t\t\tobject.geometry = serialize( meta.geometries, this.geometry );\n\n\t\t\tvar parameters = this.geometry.parameters;\n\n\t\t\tif ( parameters !== undefined && parameters.shapes !== undefined ) {\n\n\t\t\t\tvar shapes = parameters.shapes;\n\n\t\t\t\tif ( Array.isArray( shapes ) ) {\n\n\t\t\t\t\tfor ( var i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tvar shape = shapes[ i ];\n\n\t\t\t\t\t\tserialize( meta.shapes, shape );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tserialize( meta.shapes, shapes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( Array.isArray( this.material ) ) {\n\n\t\t\t\tvar uuids = [];\n\n\t\t\t\tfor ( var i = 0, l = this.material.length; i < l; i ++ ) {\n\n\t\t\t\t\tuuids.push( serialize( meta.materials, this.material[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tobject.material = uuids;\n\n\t\t\t} else {\n\n\t\t\t\tobject.material = serialize( meta.materials, this.material );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.children.length > 0 ) {\n\n\t\t\tobject.children = [];\n\n\t\t\tfor ( var i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tvar geometries = extractFromCache( meta.geometries );\n\t\t\tvar materials = extractFromCache( meta.materials );\n\t\t\tvar textures = extractFromCache( meta.textures );\n\t\t\tvar images = extractFromCache( meta.images );\n\t\t\tvar shapes = extractFromCache( meta.shapes );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\t\t\tif ( shapes.length > 0 ) output.shapes = shapes;\n\n\t\t}\n\n\t\toutput.object = object;\n\n\t\treturn output;\n\n\t\t// extract data from the cache hash\n\t\t// remove metadata on each item\n\t\t// and return as array\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tvar values = [];\n\t\t\tfor ( var key in cache ) {\n\n\t\t\t\tvar data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\t\t\treturn values;\n\n\t\t}\n\n\t},\n\n\tclone: function ( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t},\n\n\tcopy: function ( source, recursive ) {\n\n\t\tif ( recursive === undefined ) recursive = true;\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.layers.mask = source.layers.mask;\n\t\tthis.visible = source.visible;\n\n\t\tthis.castShadow = source.castShadow;\n\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\tthis.frustumCulled = source.frustumCulled;\n\t\tthis.renderOrder = source.renderOrder;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( var i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tvar child = source.children[ i ];\n\t\t\t\tthis.add( child.clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n * @author WestLangley / http://github.com/WestLangley\n*/\n\nfunction Camera() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Camera';\n\n\tthis.matrixWorldInverse = new Matrix4();\n\tthis.projectionMatrix = new Matrix4();\n\n}\n\nCamera.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Camera,\n\n\tisCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tObject3D.prototype.copy.call( this, source, recursive );\n\n\t\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\t\tthis.projectionMatrix.copy( source.projectionMatrix );\n\n\t\treturn this;\n\n\t},\n\n\tgetWorldDirection: function () {\n\n\t\tvar quaternion = new Quaternion();\n\n\t\treturn function getWorldDirection( target ) {\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Camera: .getWorldDirection() target is now required' );\n\t\t\t\ttarget = new Vector3();\n\n\t\t\t}\n\n\t\t\tthis.getWorldQuaternion( quaternion );\n\n\t\t\treturn target.set( 0, 0, - 1 ).applyQuaternion( quaternion );\n\n\t\t};\n\n\t}(),\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tthis.matrixWorldInverse.getInverse( this.matrixWorld );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author arose / http://github.com/arose\n */\n\nfunction OrthographicCamera( left, right, top, bottom, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'OrthographicCamera';\n\n\tthis.zoom = 1;\n\tthis.view = null;\n\n\tthis.left = left;\n\tthis.right = right;\n\tthis.top = top;\n\tthis.bottom = bottom;\n\n\tthis.near = ( near !== undefined ) ? near : 0.1;\n\tthis.far = ( far !== undefined ) ? far : 2000;\n\n\tthis.updateProjectionMatrix();\n\n}\n\nOrthographicCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: OrthographicCamera,\n\n\tisOrthographicCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tCamera.prototype.copy.call( this, source, recursive );\n\n\t\tthis.left = source.left;\n\t\tthis.right = source.right;\n\t\tthis.top = source.top;\n\t\tthis.bottom = source.bottom;\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\n\t\tthis.zoom = source.zoom;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\treturn this;\n\n\t},\n\n\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tclearViewOffset: function () {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tupdateProjectionMatrix: function () {\n\n\t\tvar dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\tvar dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\tvar cx = ( this.right + this.left ) / 2;\n\t\tvar cy = ( this.top + this.bottom ) / 2;\n\n\t\tvar left = cx - dx;\n\t\tvar right = cx + dx;\n\t\tvar top = cy + dy;\n\t\tvar bottom = cy - dy;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tvar zoomW = this.zoom / ( this.view.width / this.view.fullWidth );\n\t\t\tvar zoomH = this.zoom / ( this.view.height / this.view.fullHeight );\n\t\t\tvar scaleW = ( this.right - this.left ) / this.view.width;\n\t\t\tvar scaleH = ( this.top - this.bottom ) / this.view.height;\n\n\t\t\tleft += scaleW * ( this.view.offsetX / zoomW );\n\t\t\tright = left + scaleW * ( this.view.width / zoomW );\n\t\t\ttop -= scaleH * ( this.view.offsetY / zoomH );\n\t\t\tbottom = top - scaleH * ( this.view.height / zoomH );\n\n\t\t}\n\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.zoom = this.zoom;\n\t\tdata.object.left = this.left;\n\t\tdata.object.right = this.right;\n\t\tdata.object.top = this.top;\n\t\tdata.object.bottom = this.bottom;\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Face3( a, b, c, normal, color, materialIndex ) {\n\n\tthis.a = a;\n\tthis.b = b;\n\tthis.c = c;\n\n\tthis.normal = ( normal && normal.isVector3 ) ? normal : new Vector3();\n\tthis.vertexNormals = Array.isArray( normal ) ? normal : [];\n\n\tthis.color = ( color && color.isColor ) ? color : new Color();\n\tthis.vertexColors = Array.isArray( color ) ? color : [];\n\n\tthis.materialIndex = materialIndex !== undefined ? materialIndex : 0;\n\n}\n\nObject.assign( Face3.prototype, {\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.a = source.a;\n\t\tthis.b = source.b;\n\t\tthis.c = source.c;\n\n\t\tthis.normal.copy( source.normal );\n\t\tthis.color.copy( source.color );\n\n\t\tthis.materialIndex = source.materialIndex;\n\n\t\tfor ( var i = 0, il = source.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexNormals[ i ] = source.vertexNormals[ i ].clone();\n\n\t\t}\n\n\t\tfor ( var i = 0, il = source.vertexColors.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexColors[ i ] = source.vertexColors[ i ].clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author kile / http://kile.stravaganza.org/\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author bhouston / http://clara.io\n */\n\nvar geometryId = 0; // Geometry uses even numbers as Id\n\nfunction Geometry() {\n\n\tObject.defineProperty( this, 'id', { value: geometryId += 2 } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Geometry';\n\n\tthis.vertices = [];\n\tthis.colors = [];\n\tthis.faces = [];\n\tthis.faceVertexUvs = [[]];\n\n\tthis.morphTargets = [];\n\tthis.morphNormals = [];\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\tthis.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.elementsNeedUpdate = false;\n\tthis.verticesNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.lineDistancesNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Geometry,\n\n\tisGeometry: true,\n\n\tapplyMatrix: function ( matrix ) {\n\n\t\tvar normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\tfor ( var i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tvar vertex = this.vertices[ i ];\n\t\t\tvertex.applyMatrix4( matrix );\n\n\t\t}\n\n\t\tfor ( var i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tvar face = this.faces[ i ];\n\t\t\tface.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\tfor ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tface.vertexNormals[ j ].applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\tthis.verticesNeedUpdate = true;\n\t\tthis.normalsNeedUpdate = true;\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function () {\n\n\t\t// rotate geometry around world x-axis\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function rotateX( angle ) {\n\n\t\t\tm1.makeRotationX( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateY: function () {\n\n\t\t// rotate geometry around world y-axis\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function rotateY( angle ) {\n\n\t\t\tm1.makeRotationY( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateZ: function () {\n\n\t\t// rotate geometry around world z-axis\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function rotateZ( angle ) {\n\n\t\t\tm1.makeRotationZ( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslate: function () {\n\n\t\t// translate geometry\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function translate( x, y, z ) {\n\n\t\t\tm1.makeTranslation( x, y, z );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tscale: function () {\n\n\t\t// scale geometry\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function scale( x, y, z ) {\n\n\t\t\tm1.makeScale( x, y, z );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tlookAt: function () {\n\n\t\tvar obj = new Object3D();\n\n\t\treturn function lookAt( vector ) {\n\n\t\t\tobj.lookAt( vector );\n\n\t\t\tobj.updateMatrix();\n\n\t\t\tthis.applyMatrix( obj.matrix );\n\n\t\t};\n\n\t}(),\n\n\tfromBufferGeometry: function ( geometry ) {\n\n\t\tvar scope = this;\n\n\t\tvar indices = geometry.index !== null ? geometry.index.array : undefined;\n\t\tvar attributes = geometry.attributes;\n\n\t\tvar positions = attributes.position.array;\n\t\tvar normals = attributes.normal !== undefined ? attributes.normal.array : undefined;\n\t\tvar colors = attributes.color !== undefined ? attributes.color.array : undefined;\n\t\tvar uvs = attributes.uv !== undefined ? attributes.uv.array : undefined;\n\t\tvar uvs2 = attributes.uv2 !== undefined ? attributes.uv2.array : undefined;\n\n\t\tif ( uvs2 !== undefined ) this.faceVertexUvs[ 1 ] = [];\n\n\t\tvar tempNormals = [];\n\t\tvar tempUVs = [];\n\t\tvar tempUVs2 = [];\n\n\t\tfor ( var i = 0, j = 0; i < positions.length; i += 3, j += 2 ) {\n\n\t\t\tscope.vertices.push( new Vector3( positions[ i ], positions[ i + 1 ], positions[ i + 2 ] ) );\n\n\t\t\tif ( normals !== undefined ) {\n\n\t\t\t\ttempNormals.push( new Vector3( normals[ i ], normals[ i + 1 ], normals[ i + 2 ] ) );\n\n\t\t\t}\n\n\t\t\tif ( colors !== undefined ) {\n\n\t\t\t\tscope.colors.push( new Color( colors[ i ], colors[ i + 1 ], colors[ i + 2 ] ) );\n\n\t\t\t}\n\n\t\t\tif ( uvs !== undefined ) {\n\n\t\t\t\ttempUVs.push( new Vector2( uvs[ j ], uvs[ j + 1 ] ) );\n\n\t\t\t}\n\n\t\t\tif ( uvs2 !== undefined ) {\n\n\t\t\t\ttempUVs2.push( new Vector2( uvs2[ j ], uvs2[ j + 1 ] ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction addFace( a, b, c, materialIndex ) {\n\n\t\t\tvar vertexNormals = normals !== undefined ? [ tempNormals[ a ].clone(), tempNormals[ b ].clone(), tempNormals[ c ].clone() ] : [];\n\t\t\tvar vertexColors = colors !== undefined ? [ scope.colors[ a ].clone(), scope.colors[ b ].clone(), scope.colors[ c ].clone() ] : [];\n\n\t\t\tvar face = new Face3( a, b, c, vertexNormals, vertexColors, materialIndex );\n\n\t\t\tscope.faces.push( face );\n\n\t\t\tif ( uvs !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 0 ].push( [ tempUVs[ a ].clone(), tempUVs[ b ].clone(), tempUVs[ c ].clone() ] );\n\n\t\t\t}\n\n\t\t\tif ( uvs2 !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 1 ].push( [ tempUVs2[ a ].clone(), tempUVs2[ b ].clone(), tempUVs2[ c ].clone() ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar groups = geometry.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tfor ( var i = 0; i < groups.length; i ++ ) {\n\n\t\t\t\tvar group = groups[ i ];\n\n\t\t\t\tvar start = group.start;\n\t\t\t\tvar count = group.count;\n\n\t\t\t\tfor ( var j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\t\tif ( indices !== undefined ) {\n\n\t\t\t\t\t\taddFace( indices[ j ], indices[ j + 1 ], indices[ j + 2 ], group.materialIndex );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\taddFace( j, j + 1, j + 2, group.materialIndex );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( indices !== undefined ) {\n\n\t\t\t\tfor ( var i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t\t\taddFace( indices[ i ], indices[ i + 1 ], indices[ i + 2 ] );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( var i = 0; i < positions.length / 3; i += 3 ) {\n\n\t\t\t\t\taddFace( i, i + 1, i + 2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeFaceNormals();\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcenter: function () {\n\n\t\tvar offset = new Vector3();\n\n\t\treturn function center() {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t\tthis.boundingBox.getCenter( offset ).negate();\n\n\t\t\tthis.translate( offset.x, offset.y, offset.z );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tnormalize: function () {\n\n\t\tthis.computeBoundingSphere();\n\n\t\tvar center = this.boundingSphere.center;\n\t\tvar radius = this.boundingSphere.radius;\n\n\t\tvar s = radius === 0 ? 1 : 1.0 / radius;\n\n\t\tvar matrix = new Matrix4();\n\t\tmatrix.set(\n\t\t\ts, 0, 0, - s * center.x,\n\t\t\t0, s, 0, - s * center.y,\n\t\t\t0, 0, s, - s * center.z,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\tthis.applyMatrix( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tcomputeFaceNormals: function () {\n\n\t\tvar cb = new Vector3(), ab = new Vector3();\n\n\t\tfor ( var f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tvar face = this.faces[ f ];\n\n\t\t\tvar vA = this.vertices[ face.a ];\n\t\t\tvar vB = this.vertices[ face.b ];\n\t\t\tvar vC = this.vertices[ face.c ];\n\n\t\t\tcb.subVectors( vC, vB );\n\t\t\tab.subVectors( vA, vB );\n\t\t\tcb.cross( ab );\n\n\t\t\tcb.normalize();\n\n\t\t\tface.normal.copy( cb );\n\n\t\t}\n\n\t},\n\n\tcomputeVertexNormals: function ( areaWeighted ) {\n\n\t\tif ( areaWeighted === undefined ) areaWeighted = true;\n\n\t\tvar v, vl, f, fl, face, vertices;\n\n\t\tvertices = new Array( this.vertices.length );\n\n\t\tfor ( v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ] = new Vector3();\n\n\t\t}\n\n\t\tif ( areaWeighted ) {\n\n\t\t\t// vertex normals weighted by triangle areas\n\t\t\t// http://www.iquilezles.org/www/articles/normals/normals.htm\n\n\t\t\tvar vA, vB, vC;\n\t\t\tvar cb = new Vector3(), ab = new Vector3();\n\n\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\tvA = this.vertices[ face.a ];\n\t\t\t\tvB = this.vertices[ face.b ];\n\t\t\t\tvC = this.vertices[ face.c ];\n\n\t\t\t\tcb.subVectors( vC, vB );\n\t\t\t\tab.subVectors( vA, vB );\n\t\t\t\tcb.cross( ab );\n\n\t\t\t\tvertices[ face.a ].add( cb );\n\t\t\t\tvertices[ face.b ].add( cb );\n\t\t\t\tvertices[ face.c ].add( cb );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.computeFaceNormals();\n\n\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\tvertices[ face.a ].add( face.normal );\n\t\t\t\tvertices[ face.b ].add( face.normal );\n\t\t\t\tvertices[ face.c ].add( face.normal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ].normalize();\n\n\t\t}\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( vertices[ face.a ] );\n\t\t\t\tvertexNormals[ 1 ].copy( vertices[ face.b ] );\n\t\t\t\tvertexNormals[ 2 ].copy( vertices[ face.c ] );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = vertices[ face.a ].clone();\n\t\t\t\tvertexNormals[ 1 ] = vertices[ face.b ].clone();\n\t\t\t\tvertexNormals[ 2 ] = vertices[ face.c ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeFlatVertexNormals: function () {\n\n\t\tvar f, fl, face;\n\n\t\tthis.computeFaceNormals();\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 1 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 2 ].copy( face.normal );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 1 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 2 ] = face.normal.clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeMorphNormals: function () {\n\n\t\tvar i, il, f, fl, face;\n\n\t\t// save original normals\n\t\t// - create temp variables on first access\n\t\t//   otherwise just copy (for faster repeated calls)\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tif ( ! face.__originalFaceNormal ) {\n\n\t\t\t\tface.__originalFaceNormal = face.normal.clone();\n\n\t\t\t} else {\n\n\t\t\t\tface.__originalFaceNormal.copy( face.normal );\n\n\t\t\t}\n\n\t\t\tif ( ! face.__originalVertexNormals ) face.__originalVertexNormals = [];\n\n\t\t\tfor ( i = 0, il = face.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\t\tif ( ! face.__originalVertexNormals[ i ] ) {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ] = face.vertexNormals[ i ].clone();\n\n\t\t\t\t} else {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ].copy( face.vertexNormals[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// use temp geometry to compute face and vertex normals for each morph\n\n\t\tvar tmpGeo = new Geometry();\n\t\ttmpGeo.faces = this.faces;\n\n\t\tfor ( i = 0, il = this.morphTargets.length; i < il; i ++ ) {\n\n\t\t\t// create on first access\n\n\t\t\tif ( ! this.morphNormals[ i ] ) {\n\n\t\t\t\tthis.morphNormals[ i ] = {};\n\t\t\t\tthis.morphNormals[ i ].faceNormals = [];\n\t\t\t\tthis.morphNormals[ i ].vertexNormals = [];\n\n\t\t\t\tvar dstNormalsFace = this.morphNormals[ i ].faceNormals;\n\t\t\t\tvar dstNormalsVertex = this.morphNormals[ i ].vertexNormals;\n\n\t\t\t\tvar faceNormal, vertexNormals;\n\n\t\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\t\tfaceNormal = new Vector3();\n\t\t\t\t\tvertexNormals = { a: new Vector3(), b: new Vector3(), c: new Vector3() };\n\n\t\t\t\t\tdstNormalsFace.push( faceNormal );\n\t\t\t\t\tdstNormalsVertex.push( vertexNormals );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar morphNormals = this.morphNormals[ i ];\n\n\t\t\t// set vertices to morph target\n\n\t\t\ttmpGeo.vertices = this.morphTargets[ i ].vertices;\n\n\t\t\t// compute morph normals\n\n\t\t\ttmpGeo.computeFaceNormals();\n\t\t\ttmpGeo.computeVertexNormals();\n\n\t\t\t// store morph normals\n\n\t\t\tvar faceNormal, vertexNormals;\n\n\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\tfaceNormal = morphNormals.faceNormals[ f ];\n\t\t\t\tvertexNormals = morphNormals.vertexNormals[ f ];\n\n\t\t\t\tfaceNormal.copy( face.normal );\n\n\t\t\t\tvertexNormals.a.copy( face.vertexNormals[ 0 ] );\n\t\t\t\tvertexNormals.b.copy( face.vertexNormals[ 1 ] );\n\t\t\t\tvertexNormals.c.copy( face.vertexNormals[ 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// restore original normals\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tface.normal = face.__originalFaceNormal;\n\t\t\tface.vertexNormals = face.__originalVertexNormals;\n\n\t\t}\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tthis.boundingBox.setFromPoints( this.vertices );\n\n\t},\n\n\tcomputeBoundingSphere: function () {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.setFromPoints( this.vertices );\n\n\t},\n\n\tmerge: function ( geometry, matrix, materialIndexOffset ) {\n\n\t\tif ( ! ( geometry && geometry.isGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar normalMatrix,\n\t\t\tvertexOffset = this.vertices.length,\n\t\t\tvertices1 = this.vertices,\n\t\t\tvertices2 = geometry.vertices,\n\t\t\tfaces1 = this.faces,\n\t\t\tfaces2 = geometry.faces,\n\t\t\tuvs1 = this.faceVertexUvs[ 0 ],\n\t\t\tuvs2 = geometry.faceVertexUvs[ 0 ],\n\t\t\tcolors1 = this.colors,\n\t\t\tcolors2 = geometry.colors;\n\n\t\tif ( materialIndexOffset === undefined ) materialIndexOffset = 0;\n\n\t\tif ( matrix !== undefined ) {\n\n\t\t\tnormalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t}\n\n\t\t// vertices\n\n\t\tfor ( var i = 0, il = vertices2.length; i < il; i ++ ) {\n\n\t\t\tvar vertex = vertices2[ i ];\n\n\t\t\tvar vertexCopy = vertex.clone();\n\n\t\t\tif ( matrix !== undefined ) vertexCopy.applyMatrix4( matrix );\n\n\t\t\tvertices1.push( vertexCopy );\n\n\t\t}\n\n\t\t// colors\n\n\t\tfor ( var i = 0, il = colors2.length; i < il; i ++ ) {\n\n\t\t\tcolors1.push( colors2[ i ].clone() );\n\n\t\t}\n\n\t\t// faces\n\n\t\tfor ( i = 0, il = faces2.length; i < il; i ++ ) {\n\n\t\t\tvar face = faces2[ i ], faceCopy, normal, color,\n\t\t\t\tfaceVertexNormals = face.vertexNormals,\n\t\t\t\tfaceVertexColors = face.vertexColors;\n\n\t\t\tfaceCopy = new Face3( face.a + vertexOffset, face.b + vertexOffset, face.c + vertexOffset );\n\t\t\tfaceCopy.normal.copy( face.normal );\n\n\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\tfaceCopy.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t\tfor ( var j = 0, jl = faceVertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tnormal = faceVertexNormals[ j ].clone();\n\n\t\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\t\tnormal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t\t}\n\n\t\t\t\tfaceCopy.vertexNormals.push( normal );\n\n\t\t\t}\n\n\t\t\tfaceCopy.color.copy( face.color );\n\n\t\t\tfor ( var j = 0, jl = faceVertexColors.length; j < jl; j ++ ) {\n\n\t\t\t\tcolor = faceVertexColors[ j ];\n\t\t\t\tfaceCopy.vertexColors.push( color.clone() );\n\n\t\t\t}\n\n\t\t\tfaceCopy.materialIndex = face.materialIndex + materialIndexOffset;\n\n\t\t\tfaces1.push( faceCopy );\n\n\t\t}\n\n\t\t// uvs\n\n\t\tfor ( i = 0, il = uvs2.length; i < il; i ++ ) {\n\n\t\t\tvar uv = uvs2[ i ], uvCopy = [];\n\n\t\t\tif ( uv === undefined ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tfor ( var j = 0, jl = uv.length; j < jl; j ++ ) {\n\n\t\t\t\tuvCopy.push( uv[ j ].clone() );\n\n\t\t\t}\n\n\t\t\tuvs1.push( uvCopy );\n\n\t\t}\n\n\t},\n\n\tmergeMesh: function ( mesh ) {\n\n\t\tif ( ! ( mesh && mesh.isMesh ) ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.', mesh );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( mesh.matrixAutoUpdate ) mesh.updateMatrix();\n\n\t\tthis.merge( mesh.geometry, mesh.matrix );\n\n\t},\n\n\t/*\n\t * Checks for duplicate vertices with hashmap.\n\t * Duplicated vertices are removed\n\t * and faces' vertices are updated.\n\t */\n\n\tmergeVertices: function () {\n\n\t\tvar verticesMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique)\n\t\tvar unique = [], changes = [];\n\n\t\tvar v, key;\n\t\tvar precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001\n\t\tvar precision = Math.pow( 10, precisionPoints );\n\t\tvar i, il, face;\n\t\tvar indices, j, jl;\n\n\t\tfor ( i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tv = this.vertices[ i ];\n\t\t\tkey = Math.round( v.x * precision ) + '_' + Math.round( v.y * precision ) + '_' + Math.round( v.z * precision );\n\n\t\t\tif ( verticesMap[ key ] === undefined ) {\n\n\t\t\t\tverticesMap[ key ] = i;\n\t\t\t\tunique.push( this.vertices[ i ] );\n\t\t\t\tchanges[ i ] = unique.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\t//console.log('Duplicate vertex found. ', i, ' could be using ', verticesMap[key]);\n\t\t\t\tchanges[ i ] = changes[ verticesMap[ key ] ];\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// if faces are completely degenerate after merging vertices, we\n\t\t// have to remove them from the geometry.\n\t\tvar faceIndicesToRemove = [];\n\n\t\tfor ( i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tface = this.faces[ i ];\n\n\t\t\tface.a = changes[ face.a ];\n\t\t\tface.b = changes[ face.b ];\n\t\t\tface.c = changes[ face.c ];\n\n\t\t\tindices = [ face.a, face.b, face.c ];\n\n\t\t\t// if any duplicate vertices are found in a Face3\n\t\t\t// we have to remove the face as nothing can be saved\n\t\t\tfor ( var n = 0; n < 3; n ++ ) {\n\n\t\t\t\tif ( indices[ n ] === indices[ ( n + 1 ) % 3 ] ) {\n\n\t\t\t\t\tfaceIndicesToRemove.push( i );\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( i = faceIndicesToRemove.length - 1; i >= 0; i -- ) {\n\n\t\t\tvar idx = faceIndicesToRemove[ i ];\n\n\t\t\tthis.faces.splice( idx, 1 );\n\n\t\t\tfor ( j = 0, jl = this.faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tthis.faceVertexUvs[ j ].splice( idx, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Use unique set of vertices\n\n\t\tvar diff = this.vertices.length - unique.length;\n\t\tthis.vertices = unique;\n\t\treturn diff;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.vertices = [];\n\n\t\tfor ( var i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tvar point = points[ i ];\n\t\t\tthis.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsortFacesByMaterialIndex: function () {\n\n\t\tvar faces = this.faces;\n\t\tvar length = faces.length;\n\n\t\t// tag faces\n\n\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\tfaces[ i ]._id = i;\n\n\t\t}\n\n\t\t// sort faces\n\n\t\tfunction materialIndexSort( a, b ) {\n\n\t\t\treturn a.materialIndex - b.materialIndex;\n\n\t\t}\n\n\t\tfaces.sort( materialIndexSort );\n\n\t\t// sort uvs\n\n\t\tvar uvs1 = this.faceVertexUvs[ 0 ];\n\t\tvar uvs2 = this.faceVertexUvs[ 1 ];\n\n\t\tvar newUvs1, newUvs2;\n\n\t\tif ( uvs1 && uvs1.length === length ) newUvs1 = [];\n\t\tif ( uvs2 && uvs2.length === length ) newUvs2 = [];\n\n\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\tvar id = faces[ i ]._id;\n\n\t\t\tif ( newUvs1 ) newUvs1.push( uvs1[ id ] );\n\t\t\tif ( newUvs2 ) newUvs2.push( uvs2[ id ] );\n\n\t\t}\n\n\t\tif ( newUvs1 ) this.faceVertexUvs[ 0 ] = newUvs1;\n\t\tif ( newUvs2 ) this.faceVertexUvs[ 1 ] = newUvs2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Geometry',\n\t\t\t\tgenerator: 'Geometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Geometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tvar parameters = this.parameters;\n\n\t\t\tfor ( var key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tvar vertices = [];\n\n\t\tfor ( var i = 0; i < this.vertices.length; i ++ ) {\n\n\t\t\tvar vertex = this.vertices[ i ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tvar faces = [];\n\t\tvar normals = [];\n\t\tvar normalsHash = {};\n\t\tvar colors = [];\n\t\tvar colorsHash = {};\n\t\tvar uvs = [];\n\t\tvar uvsHash = {};\n\n\t\tfor ( var i = 0; i < this.faces.length; i ++ ) {\n\n\t\t\tvar face = this.faces[ i ];\n\n\t\t\tvar hasMaterial = true;\n\t\t\tvar hasFaceUv = false; // deprecated\n\t\t\tvar hasFaceVertexUv = this.faceVertexUvs[ 0 ][ i ] !== undefined;\n\t\t\tvar hasFaceNormal = face.normal.length() > 0;\n\t\t\tvar hasFaceVertexNormal = face.vertexNormals.length > 0;\n\t\t\tvar hasFaceColor = face.color.r !== 1 || face.color.g !== 1 || face.color.b !== 1;\n\t\t\tvar hasFaceVertexColor = face.vertexColors.length > 0;\n\n\t\t\tvar faceType = 0;\n\n\t\t\tfaceType = setBit( faceType, 0, 0 ); // isQuad\n\t\t\tfaceType = setBit( faceType, 1, hasMaterial );\n\t\t\tfaceType = setBit( faceType, 2, hasFaceUv );\n\t\t\tfaceType = setBit( faceType, 3, hasFaceVertexUv );\n\t\t\tfaceType = setBit( faceType, 4, hasFaceNormal );\n\t\t\tfaceType = setBit( faceType, 5, hasFaceVertexNormal );\n\t\t\tfaceType = setBit( faceType, 6, hasFaceColor );\n\t\t\tfaceType = setBit( faceType, 7, hasFaceVertexColor );\n\n\t\t\tfaces.push( faceType );\n\t\t\tfaces.push( face.a, face.b, face.c );\n\t\t\tfaces.push( face.materialIndex );\n\n\t\t\tif ( hasFaceVertexUv ) {\n\n\t\t\t\tvar faceVertexUvs = this.faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 0 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 1 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceNormal ) {\n\n\t\t\t\tfaces.push( getNormalIndex( face.normal ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexNormal ) {\n\n\t\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 0 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 1 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceColor ) {\n\n\t\t\t\tfaces.push( getColorIndex( face.color ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexColor ) {\n\n\t\t\t\tvar vertexColors = face.vertexColors;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetColorIndex( vertexColors[ 0 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 1 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction setBit( value, position, enabled ) {\n\n\t\t\treturn enabled ? value | ( 1 << position ) : value & ( ~ ( 1 << position ) );\n\n\t\t}\n\n\t\tfunction getNormalIndex( normal ) {\n\n\t\t\tvar hash = normal.x.toString() + normal.y.toString() + normal.z.toString();\n\n\t\t\tif ( normalsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn normalsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tnormalsHash[ hash ] = normals.length / 3;\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\treturn normalsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getColorIndex( color ) {\n\n\t\t\tvar hash = color.r.toString() + color.g.toString() + color.b.toString();\n\n\t\t\tif ( colorsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn colorsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tcolorsHash[ hash ] = colors.length;\n\t\t\tcolors.push( color.getHex() );\n\n\t\t\treturn colorsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getUvIndex( uv ) {\n\n\t\t\tvar hash = uv.x.toString() + uv.y.toString();\n\n\t\t\tif ( uvsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn uvsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tuvsHash[ hash ] = uvs.length / 2;\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\treturn uvsHash[ hash ];\n\n\t\t}\n\n\t\tdata.data = {};\n\n\t\tdata.data.vertices = vertices;\n\t\tdata.data.normals = normals;\n\t\tif ( colors.length > 0 ) data.data.colors = colors;\n\t\tif ( uvs.length > 0 ) data.data.uvs = [ uvs ]; // temporal backward compatibility\n\t\tdata.data.faces = faces;\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t // Handle primitives\n\n\t\t var parameters = this.parameters;\n\n\t\t if ( parameters !== undefined ) {\n\n\t\t var values = [];\n\n\t\t for ( var key in parameters ) {\n\n\t\t values.push( parameters[ key ] );\n\n\t\t }\n\n\t\t var geometry = Object.create( this.constructor.prototype );\n\t\t this.constructor.apply( geometry, values );\n\t\t return geometry;\n\n\t\t }\n\n\t\t return new this.constructor().copy( this );\n\t\t */\n\n\t\treturn new Geometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tvar i, il, j, jl, k, kl;\n\n\t\t// reset\n\n\t\tthis.vertices = [];\n\t\tthis.colors = [];\n\t\tthis.faces = [];\n\t\tthis.faceVertexUvs = [[]];\n\t\tthis.morphTargets = [];\n\t\tthis.morphNormals = [];\n\t\tthis.skinWeights = [];\n\t\tthis.skinIndices = [];\n\t\tthis.lineDistances = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// vertices\n\n\t\tvar vertices = source.vertices;\n\n\t\tfor ( i = 0, il = vertices.length; i < il; i ++ ) {\n\n\t\t\tthis.vertices.push( vertices[ i ].clone() );\n\n\t\t}\n\n\t\t// colors\n\n\t\tvar colors = source.colors;\n\n\t\tfor ( i = 0, il = colors.length; i < il; i ++ ) {\n\n\t\t\tthis.colors.push( colors[ i ].clone() );\n\n\t\t}\n\n\t\t// faces\n\n\t\tvar faces = source.faces;\n\n\t\tfor ( i = 0, il = faces.length; i < il; i ++ ) {\n\n\t\t\tthis.faces.push( faces[ i ].clone() );\n\n\t\t}\n\n\t\t// face vertex uvs\n\n\t\tfor ( i = 0, il = source.faceVertexUvs.length; i < il; i ++ ) {\n\n\t\t\tvar faceVertexUvs = source.faceVertexUvs[ i ];\n\n\t\t\tif ( this.faceVertexUvs[ i ] === undefined ) {\n\n\t\t\t\tthis.faceVertexUvs[ i ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( j = 0, jl = faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tvar uvs = faceVertexUvs[ j ], uvsCopy = [];\n\n\t\t\t\tfor ( k = 0, kl = uvs.length; k < kl; k ++ ) {\n\n\t\t\t\t\tvar uv = uvs[ k ];\n\n\t\t\t\t\tuvsCopy.push( uv.clone() );\n\n\t\t\t\t}\n\n\t\t\t\tthis.faceVertexUvs[ i ].push( uvsCopy );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tvar morphTargets = source.morphTargets;\n\n\t\tfor ( i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tvar morphTarget = {};\n\t\t\tmorphTarget.name = morphTargets[ i ].name;\n\n\t\t\t// vertices\n\n\t\t\tif ( morphTargets[ i ].vertices !== undefined ) {\n\n\t\t\t\tmorphTarget.vertices = [];\n\n\t\t\t\tfor ( j = 0, jl = morphTargets[ i ].vertices.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphTarget.vertices.push( morphTargets[ i ].vertices[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// normals\n\n\t\t\tif ( morphTargets[ i ].normals !== undefined ) {\n\n\t\t\t\tmorphTarget.normals = [];\n\n\t\t\t\tfor ( j = 0, jl = morphTargets[ i ].normals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphTarget.normals.push( morphTargets[ i ].normals[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.push( morphTarget );\n\n\t\t}\n\n\t\t// morph normals\n\n\t\tvar morphNormals = source.morphNormals;\n\n\t\tfor ( i = 0, il = morphNormals.length; i < il; i ++ ) {\n\n\t\t\tvar morphNormal = {};\n\n\t\t\t// vertex normals\n\n\t\t\tif ( morphNormals[ i ].vertexNormals !== undefined ) {\n\n\t\t\t\tmorphNormal.vertexNormals = [];\n\n\t\t\t\tfor ( j = 0, jl = morphNormals[ i ].vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar srcVertexNormal = morphNormals[ i ].vertexNormals[ j ];\n\t\t\t\t\tvar destVertexNormal = {};\n\n\t\t\t\t\tdestVertexNormal.a = srcVertexNormal.a.clone();\n\t\t\t\t\tdestVertexNormal.b = srcVertexNormal.b.clone();\n\t\t\t\t\tdestVertexNormal.c = srcVertexNormal.c.clone();\n\n\t\t\t\t\tmorphNormal.vertexNormals.push( destVertexNormal );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// face normals\n\n\t\t\tif ( morphNormals[ i ].faceNormals !== undefined ) {\n\n\t\t\t\tmorphNormal.faceNormals = [];\n\n\t\t\t\tfor ( j = 0, jl = morphNormals[ i ].faceNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphNormal.faceNormals.push( morphNormals[ i ].faceNormals[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.morphNormals.push( morphNormal );\n\n\t\t}\n\n\t\t// skin weights\n\n\t\tvar skinWeights = source.skinWeights;\n\n\t\tfor ( i = 0, il = skinWeights.length; i < il; i ++ ) {\n\n\t\t\tthis.skinWeights.push( skinWeights[ i ].clone() );\n\n\t\t}\n\n\t\t// skin indices\n\n\t\tvar skinIndices = source.skinIndices;\n\n\t\tfor ( i = 0, il = skinIndices.length; i < il; i ++ ) {\n\n\t\t\tthis.skinIndices.push( skinIndices[ i ].clone() );\n\n\t\t}\n\n\t\t// line distances\n\n\t\tvar lineDistances = source.lineDistances;\n\n\t\tfor ( i = 0, il = lineDistances.length; i < il; i ++ ) {\n\n\t\t\tthis.lineDistances.push( lineDistances[ i ] );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tvar boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tvar boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// update flags\n\n\t\tthis.elementsNeedUpdate = source.elementsNeedUpdate;\n\t\tthis.verticesNeedUpdate = source.verticesNeedUpdate;\n\t\tthis.uvsNeedUpdate = source.uvsNeedUpdate;\n\t\tthis.normalsNeedUpdate = source.normalsNeedUpdate;\n\t\tthis.colorsNeedUpdate = source.colorsNeedUpdate;\n\t\tthis.lineDistancesNeedUpdate = source.lineDistancesNeedUpdate;\n\t\tthis.groupsNeedUpdate = source.groupsNeedUpdate;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction BufferAttribute( array, itemSize, normalized ) {\n\n\tif ( Array.isArray( array ) ) {\n\n\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t}\n\n\tthis.name = '';\n\n\tthis.array = array;\n\tthis.itemSize = itemSize;\n\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\tthis.normalized = normalized === true;\n\n\tthis.dynamic = false;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n}\n\nObject.defineProperty( BufferAttribute.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nObject.assign( BufferAttribute.prototype, {\n\n\tisBufferAttribute: true,\n\n\tonUploadCallback: function () {},\n\n\tsetArray: function ( array ) {\n\n\t\tif ( Array.isArray( array ) ) {\n\n\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t}\n\n\t\tthis.count = array !== undefined ? array.length / this.itemSize : 0;\n\t\tthis.array = array;\n\n\t\treturn this;\n\n\t},\n\n\tsetDynamic: function ( value ) {\n\n\t\tthis.dynamic = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.itemSize = source.itemSize;\n\t\tthis.count = source.count;\n\t\tthis.normalized = source.normalized;\n\n\t\tthis.dynamic = source.dynamic;\n\n\t\treturn this;\n\n\t},\n\n\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.itemSize;\n\t\tindex2 *= attribute.itemSize;\n\n\t\tfor ( var i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyArray: function ( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t},\n\n\tcopyColorsArray: function ( colors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = colors.length; i < l; i ++ ) {\n\n\t\t\tvar color = colors[ i ];\n\n\t\t\tif ( color === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyColorsArray(): color is undefined', i );\n\t\t\t\tcolor = new Color();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = color.r;\n\t\t\tarray[ offset ++ ] = color.g;\n\t\t\tarray[ offset ++ ] = color.b;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector2sArray: function ( vectors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tvar vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector2();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector3sArray: function ( vectors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tvar vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector3();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector4sArray: function ( vectors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tvar vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector4();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\t\t\tarray[ offset ++ ] = vector.w;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize ];\n\n\t},\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 1 ];\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 2 ];\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 3 ];\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\t\tthis.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tonUpload: function ( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\n\n\t}\n\n} );\n\n//\n\nfunction Int8BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int8Array( array ), itemSize, normalized );\n\n}\n\nInt8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt8BufferAttribute.prototype.constructor = Int8BufferAttribute;\n\n\nfunction Uint8BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint8Array( array ), itemSize, normalized );\n\n}\n\nUint8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint8BufferAttribute.prototype.constructor = Uint8BufferAttribute;\n\n\nfunction Uint8ClampedBufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint8ClampedArray( array ), itemSize, normalized );\n\n}\n\nUint8ClampedBufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint8ClampedBufferAttribute.prototype.constructor = Uint8ClampedBufferAttribute;\n\n\nfunction Int16BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int16Array( array ), itemSize, normalized );\n\n}\n\nInt16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt16BufferAttribute.prototype.constructor = Int16BufferAttribute;\n\n\nfunction Uint16BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint16Array( array ), itemSize, normalized );\n\n}\n\nUint16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint16BufferAttribute.prototype.constructor = Uint16BufferAttribute;\n\n\nfunction Int32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int32Array( array ), itemSize, normalized );\n\n}\n\nInt32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt32BufferAttribute.prototype.constructor = Int32BufferAttribute;\n\n\nfunction Uint32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint32Array( array ), itemSize, normalized );\n\n}\n\nUint32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint32BufferAttribute.prototype.constructor = Uint32BufferAttribute;\n\n\nfunction Float32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Float32Array( array ), itemSize, normalized );\n\n}\n\nFloat32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nFloat32BufferAttribute.prototype.constructor = Float32BufferAttribute;\n\n\nfunction Float64BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Float64Array( array ), itemSize, normalized );\n\n}\n\nFloat64BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nFloat64BufferAttribute.prototype.constructor = Float64BufferAttribute;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction DirectGeometry() {\n\n\tthis.vertices = [];\n\tthis.normals = [];\n\tthis.colors = [];\n\tthis.uvs = [];\n\tthis.uvs2 = [];\n\n\tthis.groups = [];\n\n\tthis.morphTargets = {};\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\t// this.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.verticesNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nObject.assign( DirectGeometry.prototype, {\n\n\tcomputeGroups: function ( geometry ) {\n\n\t\tvar group;\n\t\tvar groups = [];\n\t\tvar materialIndex = undefined;\n\n\t\tvar faces = geometry.faces;\n\n\t\tfor ( var i = 0; i < faces.length; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\t// materials\n\n\t\t\tif ( face.materialIndex !== materialIndex ) {\n\n\t\t\t\tmaterialIndex = face.materialIndex;\n\n\t\t\t\tif ( group !== undefined ) {\n\n\t\t\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\t\t\tgroups.push( group );\n\n\t\t\t\t}\n\n\t\t\t\tgroup = {\n\t\t\t\t\tstart: i * 3,\n\t\t\t\t\tmaterialIndex: materialIndex\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( group !== undefined ) {\n\n\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\tgroups.push( group );\n\n\t\t}\n\n\t\tthis.groups = groups;\n\n\t},\n\n\tfromGeometry: function ( geometry ) {\n\n\t\tvar faces = geometry.faces;\n\t\tvar vertices = geometry.vertices;\n\t\tvar faceVertexUvs = geometry.faceVertexUvs;\n\n\t\tvar hasFaceVertexUv = faceVertexUvs[ 0 ] && faceVertexUvs[ 0 ].length > 0;\n\t\tvar hasFaceVertexUv2 = faceVertexUvs[ 1 ] && faceVertexUvs[ 1 ].length > 0;\n\n\t\t// morphs\n\n\t\tvar morphTargets = geometry.morphTargets;\n\t\tvar morphTargetsLength = morphTargets.length;\n\n\t\tvar morphTargetsPosition;\n\n\t\tif ( morphTargetsLength > 0 ) {\n\n\t\t\tmorphTargetsPosition = [];\n\n\t\t\tfor ( var i = 0; i < morphTargetsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsPosition[ i ] = [];\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.position = morphTargetsPosition;\n\n\t\t}\n\n\t\tvar morphNormals = geometry.morphNormals;\n\t\tvar morphNormalsLength = morphNormals.length;\n\n\t\tvar morphTargetsNormal;\n\n\t\tif ( morphNormalsLength > 0 ) {\n\n\t\t\tmorphTargetsNormal = [];\n\n\t\t\tfor ( var i = 0; i < morphNormalsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsNormal[ i ] = [];\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.normal = morphTargetsNormal;\n\n\t\t}\n\n\t\t// skins\n\n\t\tvar skinIndices = geometry.skinIndices;\n\t\tvar skinWeights = geometry.skinWeights;\n\n\t\tvar hasSkinIndices = skinIndices.length === vertices.length;\n\t\tvar hasSkinWeights = skinWeights.length === vertices.length;\n\n\t\t//\n\n\t\tif ( vertices.length > 0 && faces.length === 0 ) {\n\n\t\t\tconsole.error( 'THREE.DirectGeometry: Faceless geometries are not supported.' );\n\n\t\t}\n\n\t\tfor ( var i = 0; i < faces.length; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tthis.vertices.push( vertices[ face.a ], vertices[ face.b ], vertices[ face.c ] );\n\n\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tthis.normals.push( vertexNormals[ 0 ], vertexNormals[ 1 ], vertexNormals[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tvar normal = face.normal;\n\n\t\t\t\tthis.normals.push( normal, normal, normal );\n\n\t\t\t}\n\n\t\t\tvar vertexColors = face.vertexColors;\n\n\t\t\tif ( vertexColors.length === 3 ) {\n\n\t\t\t\tthis.colors.push( vertexColors[ 0 ], vertexColors[ 1 ], vertexColors[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tvar color = face.color;\n\n\t\t\t\tthis.colors.push( color, color, color );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv === true ) {\n\n\t\t\t\tvar vertexUvs = faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ', i );\n\n\t\t\t\t\tthis.uvs.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv2 === true ) {\n\n\t\t\t\tvar vertexUvs = faceVertexUvs[ 1 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs2.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ', i );\n\n\t\t\t\t\tthis.uvs2.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// morphs\n\n\t\t\tfor ( var j = 0; j < morphTargetsLength; j ++ ) {\n\n\t\t\t\tvar morphTarget = morphTargets[ j ].vertices;\n\n\t\t\t\tmorphTargetsPosition[ j ].push( morphTarget[ face.a ], morphTarget[ face.b ], morphTarget[ face.c ] );\n\n\t\t\t}\n\n\t\t\tfor ( var j = 0; j < morphNormalsLength; j ++ ) {\n\n\t\t\t\tvar morphNormal = morphNormals[ j ].vertexNormals[ i ];\n\n\t\t\t\tmorphTargetsNormal[ j ].push( morphNormal.a, morphNormal.b, morphNormal.c );\n\n\t\t\t}\n\n\t\t\t// skins\n\n\t\t\tif ( hasSkinIndices ) {\n\n\t\t\t\tthis.skinIndices.push( skinIndices[ face.a ], skinIndices[ face.b ], skinIndices[ face.c ] );\n\n\t\t\t}\n\n\t\t\tif ( hasSkinWeights ) {\n\n\t\t\t\tthis.skinWeights.push( skinWeights[ face.a ], skinWeights[ face.b ], skinWeights[ face.c ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeGroups( geometry );\n\n\t\tthis.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\tthis.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\tthis.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\tthis.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\tthis.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction arrayMax( array ) {\n\n\tif ( array.length === 0 ) return - Infinity;\n\n\tvar max = array[ 0 ];\n\n\tfor ( var i = 1, l = array.length; i < l; ++ i ) {\n\n\t\tif ( array[ i ] > max ) max = array[ i ];\n\n\t}\n\n\treturn max;\n\n}\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar bufferGeometryId = 1; // BufferGeometry uses odd numbers as Id\n\nfunction BufferGeometry() {\n\n\tObject.defineProperty( this, 'id', { value: bufferGeometryId += 2 } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'BufferGeometry';\n\n\tthis.index = null;\n\tthis.attributes = {};\n\n\tthis.morphAttributes = {};\n\n\tthis.groups = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\tthis.drawRange = { start: 0, count: Infinity };\n\n\tthis.userData = {};\n\n}\n\nBufferGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: BufferGeometry,\n\n\tisBufferGeometry: true,\n\n\tgetIndex: function () {\n\n\t\treturn this.index;\n\n\t},\n\n\tsetIndex: function ( index ) {\n\n\t\tif ( Array.isArray( index ) ) {\n\n\t\t\tthis.index = new ( arrayMax( index ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\n\n\t\t} else {\n\n\t\t\tthis.index = index;\n\n\t\t}\n\n\t},\n\n\taddAttribute: function ( name, attribute ) {\n\n\t\tif ( ! ( attribute && attribute.isBufferAttribute ) && ! ( attribute && attribute.isInterleavedBufferAttribute ) ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' );\n\n\t\t\treturn this.addAttribute( name, new BufferAttribute( arguments[ 1 ], arguments[ 2 ] ) );\n\n\t\t}\n\n\t\tif ( name === 'index' ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.' );\n\t\t\tthis.setIndex( attribute );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t},\n\n\tgetAttribute: function ( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t},\n\n\tremoveAttribute: function ( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t},\n\n\taddGroup: function ( start, count, materialIndex ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex !== undefined ? materialIndex : 0\n\n\t\t} );\n\n\t},\n\n\tclearGroups: function () {\n\n\t\tthis.groups = [];\n\n\t},\n\n\tsetDrawRange: function ( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t},\n\n\tapplyMatrix: function ( matrix ) {\n\n\t\tvar position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tmatrix.applyToBufferAttribute( position );\n\t\t\tposition.needsUpdate = true;\n\n\t\t}\n\n\t\tvar normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tvar normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tnormalMatrix.applyToBufferAttribute( normal );\n\t\t\tnormal.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function () {\n\n\t\t// rotate geometry around world x-axis\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function rotateX( angle ) {\n\n\t\t\tm1.makeRotationX( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateY: function () {\n\n\t\t// rotate geometry around world y-axis\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function rotateY( angle ) {\n\n\t\t\tm1.makeRotationY( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateZ: function () {\n\n\t\t// rotate geometry around world z-axis\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function rotateZ( angle ) {\n\n\t\t\tm1.makeRotationZ( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslate: function () {\n\n\t\t// translate geometry\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function translate( x, y, z ) {\n\n\t\t\tm1.makeTranslation( x, y, z );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tscale: function () {\n\n\t\t// scale geometry\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function scale( x, y, z ) {\n\n\t\t\tm1.makeScale( x, y, z );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tlookAt: function () {\n\n\t\tvar obj = new Object3D();\n\n\t\treturn function lookAt( vector ) {\n\n\t\t\tobj.lookAt( vector );\n\n\t\t\tobj.updateMatrix();\n\n\t\t\tthis.applyMatrix( obj.matrix );\n\n\t\t};\n\n\t}(),\n\n\tcenter: function () {\n\n\t\tvar offset = new Vector3();\n\n\t\treturn function center() {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t\tthis.boundingBox.getCenter( offset ).negate();\n\n\t\t\tthis.translate( offset.x, offset.y, offset.z );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tsetFromObject: function ( object ) {\n\n\t\t// console.log( 'THREE.BufferGeometry.setFromObject(). Converting', object, this );\n\n\t\tvar geometry = object.geometry;\n\n\t\tif ( object.isPoints || object.isLine ) {\n\n\t\t\tvar positions = new Float32BufferAttribute( geometry.vertices.length * 3, 3 );\n\t\t\tvar colors = new Float32BufferAttribute( geometry.colors.length * 3, 3 );\n\n\t\t\tthis.addAttribute( 'position', positions.copyVector3sArray( geometry.vertices ) );\n\t\t\tthis.addAttribute( 'color', colors.copyColorsArray( geometry.colors ) );\n\n\t\t\tif ( geometry.lineDistances && geometry.lineDistances.length === geometry.vertices.length ) {\n\n\t\t\t\tvar lineDistances = new Float32BufferAttribute( geometry.lineDistances.length, 1 );\n\n\t\t\t\tthis.addAttribute( 'lineDistance', lineDistances.copyArray( geometry.lineDistances ) );\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t\t}\n\n\t\t} else if ( object.isMesh ) {\n\n\t\t\tif ( geometry && geometry.isGeometry ) {\n\n\t\t\t\tthis.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tvar position = [];\n\n\t\tfor ( var i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tvar point = points[ i ];\n\t\t\tposition.push( point.x, point.y, point.z || 0 );\n\n\t\t}\n\n\t\tthis.addAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\n\n\t\treturn this;\n\n\t},\n\n\tupdateFromObject: function ( object ) {\n\n\t\tvar geometry = object.geometry;\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tvar direct = geometry.__directGeometry;\n\n\t\t\tif ( geometry.elementsNeedUpdate === true ) {\n\n\t\t\t\tdirect = undefined;\n\t\t\t\tgeometry.elementsNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( direct === undefined ) {\n\n\t\t\t\treturn this.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t\tdirect.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\t\tdirect.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\t\tdirect.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\t\tdirect.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\t\tdirect.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\t\t\tgeometry.normalsNeedUpdate = false;\n\t\t\tgeometry.colorsNeedUpdate = false;\n\t\t\tgeometry.uvsNeedUpdate = false;\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t\tgeometry = direct;\n\n\t\t}\n\n\t\tvar attribute;\n\n\t\tif ( geometry.verticesNeedUpdate === true ) {\n\n\t\t\tattribute = this.attributes.position;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.vertices );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.normalsNeedUpdate === true ) {\n\n\t\t\tattribute = this.attributes.normal;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.normals );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.normalsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.colorsNeedUpdate === true ) {\n\n\t\t\tattribute = this.attributes.color;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyColorsArray( geometry.colors );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.colorsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.uvsNeedUpdate ) {\n\n\t\t\tattribute = this.attributes.uv;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector2sArray( geometry.uvs );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.uvsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.lineDistancesNeedUpdate ) {\n\n\t\t\tattribute = this.attributes.lineDistance;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyArray( geometry.lineDistances );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.lineDistancesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.groupsNeedUpdate ) {\n\n\t\t\tgeometry.computeGroups( object.geometry );\n\t\t\tthis.groups = geometry.groups;\n\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tfromGeometry: function ( geometry ) {\n\n\t\tgeometry.__directGeometry = new DirectGeometry().fromGeometry( geometry );\n\n\t\treturn this.fromDirectGeometry( geometry.__directGeometry );\n\n\t},\n\n\tfromDirectGeometry: function ( geometry ) {\n\n\t\tvar positions = new Float32Array( geometry.vertices.length * 3 );\n\t\tthis.addAttribute( 'position', new BufferAttribute( positions, 3 ).copyVector3sArray( geometry.vertices ) );\n\n\t\tif ( geometry.normals.length > 0 ) {\n\n\t\t\tvar normals = new Float32Array( geometry.normals.length * 3 );\n\t\t\tthis.addAttribute( 'normal', new BufferAttribute( normals, 3 ).copyVector3sArray( geometry.normals ) );\n\n\t\t}\n\n\t\tif ( geometry.colors.length > 0 ) {\n\n\t\t\tvar colors = new Float32Array( geometry.colors.length * 3 );\n\t\t\tthis.addAttribute( 'color', new BufferAttribute( colors, 3 ).copyColorsArray( geometry.colors ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs.length > 0 ) {\n\n\t\t\tvar uvs = new Float32Array( geometry.uvs.length * 2 );\n\t\t\tthis.addAttribute( 'uv', new BufferAttribute( uvs, 2 ).copyVector2sArray( geometry.uvs ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs2.length > 0 ) {\n\n\t\t\tvar uvs2 = new Float32Array( geometry.uvs2.length * 2 );\n\t\t\tthis.addAttribute( 'uv2', new BufferAttribute( uvs2, 2 ).copyVector2sArray( geometry.uvs2 ) );\n\n\t\t}\n\n\t\t// groups\n\n\t\tthis.groups = geometry.groups;\n\n\t\t// morphs\n\n\t\tfor ( var name in geometry.morphTargets ) {\n\n\t\t\tvar array = [];\n\t\t\tvar morphTargets = geometry.morphTargets[ name ];\n\n\t\t\tfor ( var i = 0, l = morphTargets.length; i < l; i ++ ) {\n\n\t\t\t\tvar morphTarget = morphTargets[ i ];\n\n\t\t\t\tvar attribute = new Float32BufferAttribute( morphTarget.length * 3, 3 );\n\n\t\t\t\tarray.push( attribute.copyVector3sArray( morphTarget ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\t// skinning\n\n\t\tif ( geometry.skinIndices.length > 0 ) {\n\n\t\t\tvar skinIndices = new Float32BufferAttribute( geometry.skinIndices.length * 4, 4 );\n\t\t\tthis.addAttribute( 'skinIndex', skinIndices.copyVector4sArray( geometry.skinIndices ) );\n\n\t\t}\n\n\t\tif ( geometry.skinWeights.length > 0 ) {\n\n\t\t\tvar skinWeights = new Float32BufferAttribute( geometry.skinWeights.length * 4, 4 );\n\t\t\tthis.addAttribute( 'skinWeight', skinWeights.copyVector4sArray( geometry.skinWeights ) );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tvar position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tthis.boundingBox.setFromBufferAttribute( position );\n\n\t\t} else {\n\n\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t}\n\n\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t}\n\n\t},\n\n\tcomputeBoundingSphere: function () {\n\n\t\tvar box = new Box3();\n\t\tvar vector = new Vector3();\n\n\t\treturn function computeBoundingSphere() {\n\n\t\t\tif ( this.boundingSphere === null ) {\n\n\t\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t\t}\n\n\t\t\tvar position = this.attributes.position;\n\n\t\t\tif ( position ) {\n\n\t\t\t\tvar center = this.boundingSphere.center;\n\n\t\t\t\tbox.setFromBufferAttribute( position );\n\t\t\t\tbox.getCenter( center );\n\n\t\t\t\t// hoping to find a boundingSphere with a radius smaller than the\n\t\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\t\tvar maxRadiusSq = 0;\n\n\t\t\t\tfor ( var i = 0, il = position.count; i < il; i ++ ) {\n\n\t\t\t\t\tvector.x = position.getX( i );\n\t\t\t\t\tvector.y = position.getY( i );\n\t\t\t\t\tvector.z = position.getZ( i );\n\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( vector ) );\n\n\t\t\t\t}\n\n\t\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}(),\n\n\tcomputeFaceNormals: function () {\n\n\t\t// backwards compatibility\n\n\t},\n\n\tcomputeVertexNormals: function () {\n\n\t\tvar index = this.index;\n\t\tvar attributes = this.attributes;\n\t\tvar groups = this.groups;\n\n\t\tif ( attributes.position ) {\n\n\t\t\tvar positions = attributes.position.array;\n\n\t\t\tif ( attributes.normal === undefined ) {\n\n\t\t\t\tthis.addAttribute( 'normal', new BufferAttribute( new Float32Array( positions.length ), 3 ) );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tvar array = attributes.normal.array;\n\n\t\t\t\tfor ( var i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t\t\tarray[ i ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar normals = attributes.normal.array;\n\n\t\t\tvar vA, vB, vC;\n\t\t\tvar pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n\t\t\tvar cb = new Vector3(), ab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tvar indices = index.array;\n\n\t\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\t\tthis.addGroup( 0, indices.length );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var j = 0, jl = groups.length; j < jl; ++ j ) {\n\n\t\t\t\t\tvar group = groups[ j ];\n\n\t\t\t\t\tvar start = group.start;\n\t\t\t\t\tvar count = group.count;\n\n\t\t\t\t\tfor ( var i = start, il = start + count; i < il; i += 3 ) {\n\n\t\t\t\t\t\tvA = indices[ i + 0 ] * 3;\n\t\t\t\t\t\tvB = indices[ i + 1 ] * 3;\n\t\t\t\t\t\tvC = indices[ i + 2 ] * 3;\n\n\t\t\t\t\t\tpA.fromArray( positions, vA );\n\t\t\t\t\t\tpB.fromArray( positions, vB );\n\t\t\t\t\t\tpC.fromArray( positions, vC );\n\n\t\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\t\tnormals[ vA ] += cb.x;\n\t\t\t\t\t\tnormals[ vA + 1 ] += cb.y;\n\t\t\t\t\t\tnormals[ vA + 2 ] += cb.z;\n\n\t\t\t\t\t\tnormals[ vB ] += cb.x;\n\t\t\t\t\t\tnormals[ vB + 1 ] += cb.y;\n\t\t\t\t\t\tnormals[ vB + 2 ] += cb.z;\n\n\t\t\t\t\t\tnormals[ vC ] += cb.x;\n\t\t\t\t\t\tnormals[ vC + 1 ] += cb.y;\n\t\t\t\t\t\tnormals[ vC + 2 ] += cb.z;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\tfor ( var i = 0, il = positions.length; i < il; i += 9 ) {\n\n\t\t\t\t\tpA.fromArray( positions, i );\n\t\t\t\t\tpB.fromArray( positions, i + 3 );\n\t\t\t\t\tpC.fromArray( positions, i + 6 );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormals[ i ] = cb.x;\n\t\t\t\t\tnormals[ i + 1 ] = cb.y;\n\t\t\t\t\tnormals[ i + 2 ] = cb.z;\n\n\t\t\t\t\tnormals[ i + 3 ] = cb.x;\n\t\t\t\t\tnormals[ i + 4 ] = cb.y;\n\t\t\t\t\tnormals[ i + 5 ] = cb.z;\n\n\t\t\t\t\tnormals[ i + 6 ] = cb.x;\n\t\t\t\t\tnormals[ i + 7 ] = cb.y;\n\t\t\t\t\tnormals[ i + 8 ] = cb.z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tattributes.normal.needsUpdate = true;\n\n\t\t}\n\n\t},\n\n\tmerge: function ( geometry, offset ) {\n\n\t\tif ( ! ( geometry && geometry.isBufferGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( offset === undefined ) {\n\n\t\t\toffset = 0;\n\n\t\t\tconsole.warn(\n\t\t\t\t'THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. '\n\t\t\t\t+ 'Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge.'\n\t\t\t);\n\n\t\t}\n\n\t\tvar attributes = this.attributes;\n\n\t\tfor ( var key in attributes ) {\n\n\t\t\tif ( geometry.attributes[ key ] === undefined ) continue;\n\n\t\t\tvar attribute1 = attributes[ key ];\n\t\t\tvar attributeArray1 = attribute1.array;\n\n\t\t\tvar attribute2 = geometry.attributes[ key ];\n\t\t\tvar attributeArray2 = attribute2.array;\n\n\t\t\tvar attributeSize = attribute2.itemSize;\n\n\t\t\tfor ( var i = 0, j = attributeSize * offset; i < attributeArray2.length; i ++, j ++ ) {\n\n\t\t\t\tattributeArray1[ j ] = attributeArray2[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tnormalizeNormals: function () {\n\n\t\tvar vector = new Vector3();\n\n\t\treturn function normalizeNormals() {\n\n\t\t\tvar normals = this.attributes.normal;\n\n\t\t\tfor ( var i = 0, il = normals.count; i < il; i ++ ) {\n\n\t\t\t\tvector.x = normals.getX( i );\n\t\t\t\tvector.y = normals.getY( i );\n\t\t\t\tvector.z = normals.getZ( i );\n\n\t\t\t\tvector.normalize();\n\n\t\t\t\tnormals.setXYZ( i, vector.x, vector.y, vector.z );\n\n\t\t\t}\n\n\t\t};\n\n\t}(),\n\n\ttoNonIndexed: function () {\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvar geometry2 = new BufferGeometry();\n\n\t\tvar indices = this.index.array;\n\t\tvar attributes = this.attributes;\n\n\t\tfor ( var name in attributes ) {\n\n\t\t\tvar attribute = attributes[ name ];\n\n\t\t\tvar array = attribute.array;\n\t\t\tvar itemSize = attribute.itemSize;\n\n\t\t\tvar array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tvar index = 0, index2 = 0;\n\n\t\t\tfor ( var i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\tfor ( var j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tgeometry2.addAttribute( name, new BufferAttribute( array2, itemSize ) );\n\n\t\t}\n\n\t\tvar groups = this.groups;\n\n\t\tfor ( var i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tvar group = groups[ i ];\n\t\t\tgeometry2.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard BufferGeometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tvar parameters = this.parameters;\n\n\t\t\tfor ( var key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tdata.data = { attributes: {} };\n\n\t\tvar index = this.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tvar array = Array.prototype.slice.call( index.array );\n\n\t\t\tdata.data.index = {\n\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\tarray: array\n\t\t\t};\n\n\t\t}\n\n\t\tvar attributes = this.attributes;\n\n\t\tfor ( var key in attributes ) {\n\n\t\t\tvar attribute = attributes[ key ];\n\n\t\t\tvar array = Array.prototype.slice.call( attribute.array );\n\n\t\t\tdata.data.attributes[ key ] = {\n\t\t\t\titemSize: attribute.itemSize,\n\t\t\t\ttype: attribute.array.constructor.name,\n\t\t\t\tarray: array,\n\t\t\t\tnormalized: attribute.normalized\n\t\t\t};\n\n\t\t}\n\n\t\tvar groups = this.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t}\n\n\t\tvar boundingSphere = this.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tdata.data.boundingSphere = {\n\t\t\t\tcenter: boundingSphere.center.toArray(),\n\t\t\t\tradius: boundingSphere.radius\n\t\t\t};\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t // Handle primitives\n\n\t\t var parameters = this.parameters;\n\n\t\t if ( parameters !== undefined ) {\n\n\t\t var values = [];\n\n\t\t for ( var key in parameters ) {\n\n\t\t values.push( parameters[ key ] );\n\n\t\t }\n\n\t\t var geometry = Object.create( this.constructor.prototype );\n\t\t this.constructor.apply( geometry, values );\n\t\t return geometry;\n\n\t\t }\n\n\t\t return new this.constructor().copy( this );\n\t\t */\n\n\t\treturn new BufferGeometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tvar name, i, l;\n\n\t\t// reset\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\t\tthis.morphAttributes = {};\n\t\tthis.groups = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// index\n\n\t\tvar index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone() );\n\n\t\t}\n\n\t\t// attributes\n\n\t\tvar attributes = source.attributes;\n\n\t\tfor ( name in attributes ) {\n\n\t\t\tvar attribute = attributes[ name ];\n\t\t\tthis.addAttribute( name, attribute.clone() );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tvar morphAttributes = source.morphAttributes;\n\n\t\tfor ( name in morphAttributes ) {\n\n\t\t\tvar array = [];\n\t\t\tvar morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( i = 0, l = morphAttribute.length; i < l; i ++ ) {\n\n\t\t\t\tarray.push( morphAttribute[ i ].clone() );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\t// groups\n\n\t\tvar groups = source.groups;\n\n\t\tfor ( i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tvar group = groups[ i ];\n\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tvar boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tvar boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// draw range\n\n\t\tthis.drawRange.start = source.drawRange.start;\n\t\tthis.drawRange.count = source.drawRange.count;\n\n\t\t// user data\n\n\t\tthis.userData = source.userData;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// BoxGeometry\n\nfunction BoxGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'BoxGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\tdepth: depth,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tdepthSegments: depthSegments\n\t};\n\n\tthis.fromBufferGeometry( new BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) );\n\tthis.mergeVertices();\n\n}\n\nBoxGeometry.prototype = Object.create( Geometry.prototype );\nBoxGeometry.prototype.constructor = BoxGeometry;\n\n// BoxBufferGeometry\n\nfunction BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'BoxBufferGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\tdepth: depth,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tdepthSegments: depthSegments\n\t};\n\n\tvar scope = this;\n\n\twidth = width || 1;\n\theight = height || 1;\n\tdepth = depth || 1;\n\n\t// segments\n\n\twidthSegments = Math.floor( widthSegments ) || 1;\n\theightSegments = Math.floor( heightSegments ) || 1;\n\tdepthSegments = Math.floor( depthSegments ) || 1;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar numberOfVertices = 0;\n\tvar groupStart = 0;\n\n\t// build each side of the box geometry\n\n\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\tbuildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\tbuildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\tbuildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\tvar segmentWidth = width / gridX;\n\t\tvar segmentHeight = height / gridY;\n\n\t\tvar widthHalf = width / 2;\n\t\tvar heightHalf = height / 2;\n\t\tvar depthHalf = depth / 2;\n\n\t\tvar gridX1 = gridX + 1;\n\t\tvar gridY1 = gridY + 1;\n\n\t\tvar vertexCounter = 0;\n\t\tvar groupCount = 0;\n\n\t\tvar ix, iy;\n\n\t\tvar vector = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\tvar y = iy * segmentHeight - heightHalf;\n\n\t\t\tfor ( ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\tvar x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t// set values to correct vector component\n\n\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t// now apply vector to vertex buffer\n\n\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t// set values to correct vector component\n\n\t\t\t\tvector[ u ] = 0;\n\t\t\t\tvector[ v ] = 0;\n\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\n\n\t\t\t\t// now apply vector to normal buffer\n\n\t\t\t\tnormals.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t// uvs\n\n\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t\t// counters\n\n\t\t\t\tvertexCounter += 1;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// indices\n\n\t\t// 1. you need three indices to draw a single face\n\t\t// 2. a single segment consists of two faces\n\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\tfor ( iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\tfor ( ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\tvar a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\tvar b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\tvar c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\tvar d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t// increase counter\n\n\t\t\t\tgroupCount += 6;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t// calculate new start value for groups\n\n\t\tgroupStart += groupCount;\n\n\t\t// update total number of vertices\n\n\t\tnumberOfVertices += vertexCounter;\n\n\t}\n\n}\n\nBoxBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nBoxBufferGeometry.prototype.constructor = BoxBufferGeometry;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// PlaneGeometry\n\nfunction PlaneGeometry( width, height, widthSegments, heightSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'PlaneGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments\n\t};\n\n\tthis.fromBufferGeometry( new PlaneBufferGeometry( width, height, widthSegments, heightSegments ) );\n\tthis.mergeVertices();\n\n}\n\nPlaneGeometry.prototype = Object.create( Geometry.prototype );\nPlaneGeometry.prototype.constructor = PlaneGeometry;\n\n// PlaneBufferGeometry\n\nfunction PlaneBufferGeometry( width, height, widthSegments, heightSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'PlaneBufferGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments\n\t};\n\n\twidth = width || 1;\n\theight = height || 1;\n\n\tvar width_half = width / 2;\n\tvar height_half = height / 2;\n\n\tvar gridX = Math.floor( widthSegments ) || 1;\n\tvar gridY = Math.floor( heightSegments ) || 1;\n\n\tvar gridX1 = gridX + 1;\n\tvar gridY1 = gridY + 1;\n\n\tvar segment_width = width / gridX;\n\tvar segment_height = height / gridY;\n\n\tvar ix, iy;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// generate vertices, normals and uvs\n\n\tfor ( iy = 0; iy < gridY1; iy ++ ) {\n\n\t\tvar y = iy * segment_height - height_half;\n\n\t\tfor ( ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\tvar x = ix * segment_width - width_half;\n\n\t\t\tvertices.push( x, - y, 0 );\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\tuvs.push( ix / gridX );\n\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t}\n\n\t}\n\n\t// indices\n\n\tfor ( iy = 0; iy < gridY; iy ++ ) {\n\n\t\tfor ( ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\tvar a = ix + gridX1 * iy;\n\t\t\tvar b = ix + gridX1 * ( iy + 1 );\n\t\t\tvar c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\tvar d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nPlaneBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nPlaneBufferGeometry.prototype.constructor = PlaneBufferGeometry;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nvar materialId = 0;\n\nfunction Material() {\n\n\tObject.defineProperty( this, 'id', { value: materialId ++ } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Material';\n\n\tthis.fog = true;\n\tthis.lights = true;\n\n\tthis.blending = NormalBlending;\n\tthis.side = FrontSide;\n\tthis.flatShading = false;\n\tthis.vertexColors = NoColors; // THREE.NoColors, THREE.VertexColors, THREE.FaceColors\n\n\tthis.opacity = 1;\n\tthis.transparent = false;\n\n\tthis.blendSrc = SrcAlphaFactor;\n\tthis.blendDst = OneMinusSrcAlphaFactor;\n\tthis.blendEquation = AddEquation;\n\tthis.blendSrcAlpha = null;\n\tthis.blendDstAlpha = null;\n\tthis.blendEquationAlpha = null;\n\n\tthis.depthFunc = LessEqualDepth;\n\tthis.depthTest = true;\n\tthis.depthWrite = true;\n\n\tthis.clippingPlanes = null;\n\tthis.clipIntersection = false;\n\tthis.clipShadows = false;\n\n\tthis.shadowSide = null;\n\n\tthis.colorWrite = true;\n\n\tthis.precision = null; // override the renderer's default precision for this material\n\n\tthis.polygonOffset = false;\n\tthis.polygonOffsetFactor = 0;\n\tthis.polygonOffsetUnits = 0;\n\n\tthis.dithering = false;\n\n\tthis.alphaTest = 0;\n\tthis.premultipliedAlpha = false;\n\n\tthis.overdraw = 0; // Overdrawn pixels (typically between 0 and 1) for fixing antialiasing gaps in CanvasRenderer\n\n\tthis.visible = true;\n\n\tthis.userData = {};\n\n\tthis.needsUpdate = true;\n\n}\n\nMaterial.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Material,\n\n\tisMaterial: true,\n\n\tonBeforeCompile: function () {},\n\n\tsetValues: function ( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( var key in values ) {\n\n\t\t\tvar newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.Material: '\" + key + \"' parameter is undefined.\" );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t// for backward compatability if shading is set in the constructor\n\t\t\tif ( key === 'shading' ) {\n\n\t\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\t\tthis.flatShading = ( newValue === FlatShading ) ? true : false;\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tvar currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.\" + this.type + \": '\" + key + \"' is not a property of this material.\" );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( currentValue && currentValue.isColor ) {\n\n\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t} else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else if ( key === 'overdraw' ) {\n\n\t\t\t\t// ensure overdraw is backwards-compatible with legacy boolean type\n\t\t\t\tthis[ key ] = Number( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar isRoot = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( isRoot ) {\n\n\t\t\tmeta = {\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t}\n\n\t\tvar data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Material',\n\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Material serialization\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.color && this.color.isColor ) data.color = this.color.getHex();\n\n\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\tif ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex();\n\t\tif ( this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity;\n\n\t\tif ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex();\n\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\t\tif ( this.clearCoat !== undefined ) data.clearCoat = this.clearCoat;\n\t\tif ( this.clearCoatRoughness !== undefined ) data.clearCoatRoughness = this.clearCoatRoughness;\n\n\t\tif ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid;\n\t\tif ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\t\tif ( this.lightMap && this.lightMap.isTexture ) data.lightMap = this.lightMap.toJSON( meta ).uuid;\n\n\t\tif ( this.aoMap && this.aoMap.isTexture ) {\n\n\t\t\tdata.aoMap = this.aoMap.toJSON( meta ).uuid;\n\t\t\tdata.aoMapIntensity = this.aoMapIntensity;\n\n\t\t}\n\n\t\tif ( this.bumpMap && this.bumpMap.isTexture ) {\n\n\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t}\n\n\t\tif ( this.normalMap && this.normalMap.isTexture ) {\n\n\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\tdata.normalMapType = this.normalMapType;\n\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.displacementMap && this.displacementMap.isTexture ) {\n\n\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t}\n\n\t\tif ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\tif ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\tif ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\tif ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\n\t\tif ( this.envMap && this.envMap.isTexture ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\t\t\tdata.reflectivity = this.reflectivity; // Scale behind envMap\n\n\t\t}\n\n\t\tif ( this.gradientMap && this.gradientMap.isTexture ) {\n\n\t\t\tdata.gradientMap = this.gradientMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\n\t\tif ( this.flatShading === true ) data.flatShading = this.flatShading;\n\t\tif ( this.side !== FrontSide ) data.side = this.side;\n\t\tif ( this.vertexColors !== NoColors ) data.vertexColors = this.vertexColors;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.transparent === true ) data.transparent = this.transparent;\n\n\t\tdata.depthFunc = this.depthFunc;\n\t\tdata.depthTest = this.depthTest;\n\t\tdata.depthWrite = this.depthWrite;\n\n\t\t// rotation (SpriteMaterial)\n\t\tif ( this.rotation !== 0 ) data.rotation = this.rotation;\n\n\t\tif ( this.linewidth !== 1 ) data.linewidth = this.linewidth;\n\t\tif ( this.dashSize !== undefined ) data.dashSize = this.dashSize;\n\t\tif ( this.gapSize !== undefined ) data.gapSize = this.gapSize;\n\t\tif ( this.scale !== undefined ) data.scale = this.scale;\n\n\t\tif ( this.dithering === true ) data.dithering = true;\n\n\t\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha;\n\n\t\tif ( this.wireframe === true ) data.wireframe = this.wireframe;\n\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\n\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\n\n\t\tif ( this.morphTargets === true ) data.morphTargets = true;\n\t\tif ( this.skinning === true ) data.skinning = true;\n\n\t\tif ( this.visible === false ) data.visible = false;\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) data.userData = this.userData;\n\n\t\t// TODO: Copied from Object3D.toJSON\n\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tvar values = [];\n\n\t\t\tfor ( var key in cache ) {\n\n\t\t\t\tvar data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t\tif ( isRoot ) {\n\n\t\t\tvar textures = extractFromCache( meta.textures );\n\t\t\tvar images = extractFromCache( meta.images );\n\n\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.fog = source.fog;\n\t\tthis.lights = source.lights;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\n\t\tthis.flatShading = source.flatShading;\n\t\tthis.vertexColors = source.vertexColors;\n\n\t\tthis.opacity = source.opacity;\n\t\tthis.transparent = source.transparent;\n\n\t\tthis.blendSrc = source.blendSrc;\n\t\tthis.blendDst = source.blendDst;\n\t\tthis.blendEquation = source.blendEquation;\n\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\n\t\tthis.depthFunc = source.depthFunc;\n\t\tthis.depthTest = source.depthTest;\n\t\tthis.depthWrite = source.depthWrite;\n\n\t\tthis.colorWrite = source.colorWrite;\n\n\t\tthis.precision = source.precision;\n\n\t\tthis.polygonOffset = source.polygonOffset;\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\tthis.dithering = source.dithering;\n\n\t\tthis.alphaTest = source.alphaTest;\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\n\t\tthis.overdraw = source.overdraw;\n\n\t\tthis.visible = source.visible;\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tthis.clipShadows = source.clipShadows;\n\t\tthis.clipIntersection = source.clipIntersection;\n\n\t\tvar srcPlanes = source.clippingPlanes,\n\t\t\tdstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tvar n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( var i = 0; i !== n; ++ i )\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\n\t\tthis.shadowSide = source.shadowSide;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n *  color: <hex>,\n *  opacity: <float>,\n *  map: new THREE.Texture( <Image> ),\n *\n *  lightMap: new THREE.Texture( <Image> ),\n *  lightMapIntensity: <float>\n *\n *  aoMap: new THREE.Texture( <Image> ),\n *  aoMapIntensity: <float>\n *\n *  specularMap: new THREE.Texture( <Image> ),\n *\n *  alphaMap: new THREE.Texture( <Image> ),\n *\n *  envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n *  combine: THREE.Multiply,\n *  reflectivity: <float>,\n *  refractionRatio: <float>,\n *\n *  depthTest: <bool>,\n *  depthWrite: <bool>,\n *\n *  wireframe: <boolean>,\n *  wireframeLinewidth: <float>,\n *\n *  skinning: <bool>,\n *  morphTargets: <bool>\n * }\n */\n\nfunction MeshBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshBasicMaterial';\n\n\tthis.color = new Color( 0xffffff ); // emissive\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshBasicMaterial.prototype = Object.create( Material.prototype );\nMeshBasicMaterial.prototype.constructor = MeshBasicMaterial;\n\nMeshBasicMaterial.prototype.isMeshBasicMaterial = true;\n\nMeshBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n *  defines: { \"label\" : \"value\" },\n *  uniforms: { \"parameter1\": { value: 1.0 }, \"parameter2\": { value2: 2 } },\n *\n *  fragmentShader: <string>,\n *  vertexShader: <string>,\n *\n *  wireframe: <boolean>,\n *  wireframeLinewidth: <float>,\n *\n *  lights: <bool>,\n *\n *  skinning: <bool>,\n *  morphTargets: <bool>,\n *  morphNormals: <bool>\n * }\n */\n\nfunction ShaderMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'ShaderMaterial';\n\n\tthis.defines = {};\n\tthis.uniforms = {};\n\n\tthis.vertexShader = 'void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}';\n\tthis.fragmentShader = 'void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}';\n\n\tthis.linewidth = 1;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false; // set to use scene fog\n\tthis.lights = false; // set to use scene lights\n\tthis.clipping = false; // set to use user-defined clipping planes\n\n\tthis.skinning = false; // set to use skinning attribute streams\n\tthis.morphTargets = false; // set to use morph targets\n\tthis.morphNormals = false; // set to use morph normals\n\n\tthis.extensions = {\n\t\tderivatives: false, // set to use derivatives\n\t\tfragDepth: false, // set to use fragment depth values\n\t\tdrawBuffers: false, // set to use draw buffers\n\t\tshaderTextureLOD: false // set to use shader texture LOD\n\t};\n\n\t// When rendered geometry doesn't include these attributes but the material does,\n\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\tthis.defaultAttributeValues = {\n\t\t'color': [ 1, 1, 1 ],\n\t\t'uv': [ 0, 0 ],\n\t\t'uv2': [ 0, 0 ]\n\t};\n\n\tthis.index0AttributeName = undefined;\n\tthis.uniformsNeedUpdate = false;\n\n\tif ( parameters !== undefined ) {\n\n\t\tif ( parameters.attributes !== undefined ) {\n\n\t\t\tconsole.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n}\n\nShaderMaterial.prototype = Object.create( Material.prototype );\nShaderMaterial.prototype.constructor = ShaderMaterial;\n\nShaderMaterial.prototype.isShaderMaterial = true;\n\nShaderMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.fragmentShader = source.fragmentShader;\n\tthis.vertexShader = source.vertexShader;\n\n\tthis.uniforms = UniformsUtils.clone( source.uniforms );\n\n\tthis.defines = Object.assign( {}, source.defines );\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\tthis.lights = source.lights;\n\tthis.clipping = source.clipping;\n\n\tthis.skinning = source.skinning;\n\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\tthis.extensions = source.extensions;\n\n\treturn this;\n\n};\n\nShaderMaterial.prototype.toJSON = function ( meta ) {\n\n\tvar data = Material.prototype.toJSON.call( this, meta );\n\n\tdata.uniforms = this.uniforms;\n\tdata.vertexShader = this.vertexShader;\n\tdata.fragmentShader = this.fragmentShader;\n\n\treturn data;\n\n};\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Ray( origin, direction ) {\n\n\tthis.origin = ( origin !== undefined ) ? origin : new Vector3();\n\tthis.direction = ( direction !== undefined ) ? direction : new Vector3();\n\n}\n\nObject.assign( Ray.prototype, {\n\n\tset: function ( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t},\n\n\tat: function ( t, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Ray: .at() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( t ).add( this.origin );\n\n\t},\n\n\tlookAt: function ( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t},\n\n\trecast: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function recast( t ) {\n\n\t\t\tthis.origin.copy( this.at( t, v1 ) );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclosestPointToPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Ray: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.subVectors( point, this.origin );\n\n\t\tvar directionDistance = target.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn target.copy( this.origin );\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t},\n\n\tdistanceSqToPoint: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function distanceSqToPoint( point ) {\n\n\t\t\tvar directionDistance = v1.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t\t// point behind the ray\n\n\t\t\tif ( directionDistance < 0 ) {\n\n\t\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t\t}\n\n\t\t\tv1.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t\t\treturn v1.distanceToSquared( point );\n\n\t\t};\n\n\t}(),\n\n\tdistanceSqToSegment: function () {\n\n\t\tvar segCenter = new Vector3();\n\t\tvar segDir = new Vector3();\n\t\tvar diff = new Vector3();\n\n\t\treturn function distanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t\t// It returns the min distance between the ray and the segment\n\t\t\t// defined by v0 and v1\n\t\t\t// It can also set two optional targets :\n\t\t\t// - The closest point on the ray\n\t\t\t// - The closest point on the segment\n\n\t\t\tsegCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t\tsegDir.copy( v1 ).sub( v0 ).normalize();\n\t\t\tdiff.copy( this.origin ).sub( segCenter );\n\n\t\t\tvar segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\t\tvar a01 = - this.direction.dot( segDir );\n\t\t\tvar b0 = diff.dot( this.direction );\n\t\t\tvar b1 = - diff.dot( segDir );\n\t\t\tvar c = diff.lengthSq();\n\t\t\tvar det = Math.abs( 1 - a01 * a01 );\n\t\t\tvar s0, s1, sqrDist, extDet;\n\n\t\t\tif ( det > 0 ) {\n\n\t\t\t\t// The ray and segment are not parallel.\n\n\t\t\t\ts0 = a01 * b1 - b0;\n\t\t\t\ts1 = a01 * b0 - b1;\n\t\t\t\textDet = segExtent * det;\n\n\t\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\t\tvar invDet = 1 / det;\n\t\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 5\n\n\t\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t\t// region 4\n\n\t\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 3\n\n\t\t\t\t\t\ts0 = 0;\n\t\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 2\n\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// Ray and segment are parallel.\n\n\t\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t}\n\n\t\t\tif ( optionalPointOnRay ) {\n\n\t\t\t\toptionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin );\n\n\t\t\t}\n\n\t\t\tif ( optionalPointOnSegment ) {\n\n\t\t\t\toptionalPointOnSegment.copy( segDir ).multiplyScalar( s1 ).add( segCenter );\n\n\t\t\t}\n\n\t\t\treturn sqrDist;\n\n\t\t};\n\n\t}(),\n\n\tintersectSphere: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function intersectSphere( sphere, target ) {\n\n\t\t\tv1.subVectors( sphere.center, this.origin );\n\t\t\tvar tca = v1.dot( this.direction );\n\t\t\tvar d2 = v1.dot( v1 ) - tca * tca;\n\t\t\tvar radius2 = sphere.radius * sphere.radius;\n\n\t\t\tif ( d2 > radius2 ) return null;\n\n\t\t\tvar thc = Math.sqrt( radius2 - d2 );\n\n\t\t\t// t0 = first intersect point - entrance on front of sphere\n\t\t\tvar t0 = tca - thc;\n\n\t\t\t// t1 = second intersect point - exit point on back of sphere\n\t\t\tvar t1 = tca + thc;\n\n\t\t\t// test to see if both t0 and t1 are behind the ray - if so, return null\n\t\t\tif ( t0 < 0 && t1 < 0 ) return null;\n\n\t\t\t// test to see if t0 is behind the ray:\n\t\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t\t// in order to always return an intersect point that is in front of the ray.\n\t\t\tif ( t0 < 0 ) return this.at( t1, target );\n\n\t\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\t\treturn this.at( t0, target );\n\n\t\t};\n\n\t}(),\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) <= sphere.radius;\n\n\t},\n\n\tdistanceToPlane: function ( plane ) {\n\n\t\tvar denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tvar t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t},\n\n\tintersectPlane: function ( plane, target ) {\n\n\t\tvar t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, target );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tvar distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tvar denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t},\n\n\tintersectBox: function ( box, target ) {\n\n\t\tvar tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tvar invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tvar origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\t// These lines also handle the case where tmin or tmax is NaN\n\t\t// (result of 0 * Infinity). x !== x returns true if x is NaN\n\n\t\tif ( tymin > tmin || tmin !== tmin ) tmin = tymin;\n\n\t\tif ( tymax < tmax || tmax !== tmax ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, target );\n\n\t},\n\n\tintersectsBox: ( function () {\n\n\t\tvar v = new Vector3();\n\n\t\treturn function intersectsBox( box ) {\n\n\t\t\treturn this.intersectBox( box, v ) !== null;\n\n\t\t};\n\n\t} )(),\n\n\tintersectTriangle: function () {\n\n\t\t// Compute the offset origin, edges, and normal.\n\t\tvar diff = new Vector3();\n\t\tvar edge1 = new Vector3();\n\t\tvar edge2 = new Vector3();\n\t\tvar normal = new Vector3();\n\n\t\treturn function intersectTriangle( a, b, c, backfaceCulling, target ) {\n\n\t\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t\tedge1.subVectors( b, a );\n\t\t\tedge2.subVectors( c, a );\n\t\t\tnormal.crossVectors( edge1, edge2 );\n\n\t\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t\t//   |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t\t//   |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t\t//   |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\t\tvar DdN = this.direction.dot( normal );\n\t\t\tvar sign;\n\n\t\t\tif ( DdN > 0 ) {\n\n\t\t\t\tif ( backfaceCulling ) return null;\n\t\t\t\tsign = 1;\n\n\t\t\t} else if ( DdN < 0 ) {\n\n\t\t\t\tsign = - 1;\n\t\t\t\tDdN = - DdN;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tdiff.subVectors( this.origin, a );\n\t\t\tvar DdQxE2 = sign * this.direction.dot( edge2.crossVectors( diff, edge2 ) );\n\n\t\t\t// b1 < 0, no intersection\n\t\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tvar DdE1xQ = sign * this.direction.dot( edge1.cross( diff ) );\n\n\t\t\t// b2 < 0, no intersection\n\t\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\t// b1+b2 > 1, no intersection\n\t\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\t// Line intersects triangle, check if ray does.\n\t\t\tvar QdN = - sign * diff.dot( normal );\n\n\t\t\t// t < 0, no intersection\n\t\t\tif ( QdN < 0 ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\t// Ray intersects triangle.\n\t\t\treturn this.at( QdN / DdN, target );\n\n\t\t};\n\n\t}(),\n\n\tapplyMatrix4: function ( matrix4 ) {\n\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.transformDirection( matrix4 );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Triangle( a, b, c ) {\n\n\tthis.a = ( a !== undefined ) ? a : new Vector3();\n\tthis.b = ( b !== undefined ) ? b : new Vector3();\n\tthis.c = ( c !== undefined ) ? c : new Vector3();\n\n}\n\nObject.assign( Triangle, {\n\n\tgetNormal: function () {\n\n\t\tvar v0 = new Vector3();\n\n\t\treturn function getNormal( a, b, c, target ) {\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Triangle: .getNormal() target is now required' );\n\t\t\t\ttarget = new Vector3();\n\n\t\t\t}\n\n\t\t\ttarget.subVectors( c, b );\n\t\t\tv0.subVectors( a, b );\n\t\t\ttarget.cross( v0 );\n\n\t\t\tvar targetLengthSq = target.lengthSq();\n\t\t\tif ( targetLengthSq > 0 ) {\n\n\t\t\t\treturn target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) );\n\n\t\t\t}\n\n\t\t\treturn target.set( 0, 0, 0 );\n\n\t\t};\n\n\t}(),\n\n\t// static/instance method to calculate barycentric coordinates\n\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n\tgetBarycoord: function () {\n\n\t\tvar v0 = new Vector3();\n\t\tvar v1 = new Vector3();\n\t\tvar v2 = new Vector3();\n\n\t\treturn function getBarycoord( point, a, b, c, target ) {\n\n\t\t\tv0.subVectors( c, a );\n\t\t\tv1.subVectors( b, a );\n\t\t\tv2.subVectors( point, a );\n\n\t\t\tvar dot00 = v0.dot( v0 );\n\t\t\tvar dot01 = v0.dot( v1 );\n\t\t\tvar dot02 = v0.dot( v2 );\n\t\t\tvar dot11 = v1.dot( v1 );\n\t\t\tvar dot12 = v1.dot( v2 );\n\n\t\t\tvar denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Triangle: .getBarycoord() target is now required' );\n\t\t\t\ttarget = new Vector3();\n\n\t\t\t}\n\n\t\t\t// collinear or singular triangle\n\t\t\tif ( denom === 0 ) {\n\n\t\t\t\t// arbitrary location outside of triangle?\n\t\t\t\t// not sure if this is the best idea, maybe should be returning undefined\n\t\t\t\treturn target.set( - 2, - 1, - 1 );\n\n\t\t\t}\n\n\t\t\tvar invDenom = 1 / denom;\n\t\t\tvar u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\t\tvar v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t\t// barycentric coordinates must always sum to 1\n\t\t\treturn target.set( 1 - u - v, v, u );\n\n\t\t};\n\n\t}(),\n\n\tcontainsPoint: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function containsPoint( point, a, b, c ) {\n\n\t\t\tTriangle.getBarycoord( point, a, b, c, v1 );\n\n\t\t\treturn ( v1.x >= 0 ) && ( v1.y >= 0 ) && ( ( v1.x + v1.y ) <= 1 );\n\n\t\t};\n\n\t}()\n\n} );\n\nObject.assign( Triangle.prototype, {\n\n\tset: function ( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPointsAndIndices: function ( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t},\n\n\tgetArea: function () {\n\n\t\tvar v0 = new Vector3();\n\t\tvar v1 = new Vector3();\n\n\t\treturn function getArea() {\n\n\t\t\tv0.subVectors( this.c, this.b );\n\t\t\tv1.subVectors( this.a, this.b );\n\n\t\t\treturn v0.cross( v1 ).length() * 0.5;\n\n\t\t};\n\n\t}(),\n\n\tgetMidpoint: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getMidpoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t},\n\n\tgetNormal: function ( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t},\n\n\tgetPlane: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getPlane() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t},\n\n\tgetBarycoord: function ( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t},\n\n\tclosestPointToPoint: function () {\n\n\t\tvar vab = new Vector3();\n\t\tvar vac = new Vector3();\n\t\tvar vbc = new Vector3();\n\t\tvar vap = new Vector3();\n\t\tvar vbp = new Vector3();\n\t\tvar vcp = new Vector3();\n\n\t\treturn function closestPointToPoint( p, target ) {\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Triangle: .closestPointToPoint() target is now required' );\n\t\t\t\ttarget = new Vector3();\n\n\t\t\t}\n\n\t\t\tvar a = this.a, b = this.b, c = this.c;\n\t\t\tvar v, w;\n\n\t\t\t// algorithm thanks to Real-Time Collision Detection by Christer Ericson,\n\t\t\t// published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc.,\n\t\t\t// under the accompanying license; see chapter 5.1.5 for detailed explanation.\n\t\t\t// basically, we're distinguishing which of the voronoi regions of the triangle\n\t\t\t// the point lies in with the minimum amount of redundant computation.\n\n\t\t\tvab.subVectors( b, a );\n\t\t\tvac.subVectors( c, a );\n\t\t\tvap.subVectors( p, a );\n\t\t\tvar d1 = vab.dot( vap );\n\t\t\tvar d2 = vac.dot( vap );\n\t\t\tif ( d1 <= 0 && d2 <= 0 ) {\n\n\t\t\t\t// vertex region of A; barycentric coords (1, 0, 0)\n\t\t\t\treturn target.copy( a );\n\n\t\t\t}\n\n\t\t\tvbp.subVectors( p, b );\n\t\t\tvar d3 = vab.dot( vbp );\n\t\t\tvar d4 = vac.dot( vbp );\n\t\t\tif ( d3 >= 0 && d4 <= d3 ) {\n\n\t\t\t\t// vertex region of B; barycentric coords (0, 1, 0)\n\t\t\t\treturn target.copy( b );\n\n\t\t\t}\n\n\t\t\tvar vc = d1 * d4 - d3 * d2;\n\t\t\tif ( vc <= 0 && d1 >= 0 && d3 <= 0 ) {\n\n\t\t\t\tv = d1 / ( d1 - d3 );\n\t\t\t\t// edge region of AB; barycentric coords (1-v, v, 0)\n\t\t\t\treturn target.copy( a ).addScaledVector( vab, v );\n\n\t\t\t}\n\n\t\t\tvcp.subVectors( p, c );\n\t\t\tvar d5 = vab.dot( vcp );\n\t\t\tvar d6 = vac.dot( vcp );\n\t\t\tif ( d6 >= 0 && d5 <= d6 ) {\n\n\t\t\t\t// vertex region of C; barycentric coords (0, 0, 1)\n\t\t\t\treturn target.copy( c );\n\n\t\t\t}\n\n\t\t\tvar vb = d5 * d2 - d1 * d6;\n\t\t\tif ( vb <= 0 && d2 >= 0 && d6 <= 0 ) {\n\n\t\t\t\tw = d2 / ( d2 - d6 );\n\t\t\t\t// edge region of AC; barycentric coords (1-w, 0, w)\n\t\t\t\treturn target.copy( a ).addScaledVector( vac, w );\n\n\t\t\t}\n\n\t\t\tvar va = d3 * d6 - d5 * d4;\n\t\t\tif ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) {\n\n\t\t\t\tvbc.subVectors( c, b );\n\t\t\t\tw = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) );\n\t\t\t\t// edge region of BC; barycentric coords (0, 1-w, w)\n\t\t\t\treturn target.copy( b ).addScaledVector( vbc, w ); // edge region of BC\n\n\t\t\t}\n\n\t\t\t// face region\n\t\t\tvar denom = 1 / ( va + vb + vc );\n\t\t\t// u = va * denom\n\t\t\tv = vb * denom;\n\t\t\tw = vc * denom;\n\t\t\treturn target.copy( a ).addScaledVector( vab, v ).addScaledVector( vac, w );\n\n\t\t};\n\n\t}(),\n\n\tequals: function ( triangle ) {\n\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author jonobr1 / http://jonobr1.com/\n */\n\nfunction Mesh( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Mesh';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new MeshBasicMaterial( { color: Math.random() * 0xffffff } );\n\n\tthis.drawMode = TrianglesDrawMode;\n\n\tthis.updateMorphTargets();\n\n}\n\nMesh.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Mesh,\n\n\tisMesh: true,\n\n\tsetDrawMode: function ( value ) {\n\n\t\tthis.drawMode = value;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.drawMode = source.drawMode;\n\n\t\tif ( source.morphTargetInfluences !== undefined ) {\n\n\t\t\tthis.morphTargetInfluences = source.morphTargetInfluences.slice();\n\n\t\t}\n\n\t\tif ( source.morphTargetDictionary !== undefined ) {\n\n\t\t\tthis.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tvar geometry = this.geometry;\n\t\tvar m, ml, name;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tvar morphAttributes = geometry.morphAttributes;\n\t\t\tvar keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tvar morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tname = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tvar morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( m = 0, ml = morphTargets.length; m < ml; m ++ ) {\n\n\t\t\t\t\tname = morphTargets[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\traycast: ( function () {\n\n\t\tvar inverseMatrix = new Matrix4();\n\t\tvar ray = new Ray();\n\t\tvar sphere = new Sphere();\n\n\t\tvar vA = new Vector3();\n\t\tvar vB = new Vector3();\n\t\tvar vC = new Vector3();\n\n\t\tvar tempA = new Vector3();\n\t\tvar tempB = new Vector3();\n\t\tvar tempC = new Vector3();\n\n\t\tvar uvA = new Vector2();\n\t\tvar uvB = new Vector2();\n\t\tvar uvC = new Vector2();\n\n\t\tvar barycoord = new Vector3();\n\n\t\tvar intersectionPoint = new Vector3();\n\t\tvar intersectionPointWorld = new Vector3();\n\n\t\tfunction uvIntersection( point, p1, p2, p3, uv1, uv2, uv3 ) {\n\n\t\t\tTriangle.getBarycoord( point, p1, p2, p3, barycoord );\n\n\t\t\tuv1.multiplyScalar( barycoord.x );\n\t\t\tuv2.multiplyScalar( barycoord.y );\n\t\t\tuv3.multiplyScalar( barycoord.z );\n\n\t\t\tuv1.add( uv2 ).add( uv3 );\n\n\t\t\treturn uv1.clone();\n\n\t\t}\n\n\t\tfunction checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) {\n\n\t\t\tvar intersect;\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t\t\t} else {\n\n\t\t\t\tintersect = ray.intersectTriangle( pA, pB, pC, material.side !== DoubleSide, point );\n\n\t\t\t}\n\n\t\t\tif ( intersect === null ) return null;\n\n\t\t\tintersectionPointWorld.copy( point );\n\t\t\tintersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\t\t\tvar distance = raycaster.ray.origin.distanceTo( intersectionPointWorld );\n\n\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\t\t\treturn {\n\t\t\t\tdistance: distance,\n\t\t\t\tpoint: intersectionPointWorld.clone(),\n\t\t\t\tobject: object\n\t\t\t};\n\n\t\t}\n\n\t\tfunction checkBufferGeometryIntersection( object, material, raycaster, ray, position, uv, a, b, c ) {\n\n\t\t\tvA.fromBufferAttribute( position, a );\n\t\t\tvB.fromBufferAttribute( position, b );\n\t\t\tvC.fromBufferAttribute( position, c );\n\n\t\t\tvar intersection = checkIntersection( object, material, raycaster, ray, vA, vB, vC, intersectionPoint );\n\n\t\t\tif ( intersection ) {\n\n\t\t\t\tif ( uv ) {\n\n\t\t\t\t\tuvA.fromBufferAttribute( uv, a );\n\t\t\t\t\tuvB.fromBufferAttribute( uv, b );\n\t\t\t\t\tuvC.fromBufferAttribute( uv, c );\n\n\t\t\t\t\tintersection.uv = uvIntersection( intersectionPoint, vA, vB, vC, uvA, uvB, uvC );\n\n\t\t\t\t}\n\n\t\t\t\tvar face = new Face3( a, b, c );\n\t\t\t\tTriangle.getNormal( vA, vB, vC, face.normal );\n\n\t\t\t\tintersection.face = face;\n\n\t\t\t}\n\n\t\t\treturn intersection;\n\n\t\t}\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tvar geometry = this.geometry;\n\t\t\tvar material = this.material;\n\t\t\tvar matrixWorld = this.matrixWorld;\n\n\t\t\tif ( material === undefined ) return;\n\n\t\t\t// Checking boundingSphere distance to ray\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\tsphere.copy( geometry.boundingSphere );\n\t\t\tsphere.applyMatrix4( matrixWorld );\n\n\t\t\tif ( raycaster.ray.intersectsSphere( sphere ) === false ) return;\n\n\t\t\t//\n\n\t\t\tinverseMatrix.getInverse( matrixWorld );\n\t\t\tray.copy( raycaster.ray ).applyMatrix4( inverseMatrix );\n\n\t\t\t// Check boundingBox before continuing\n\n\t\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\t\tif ( ray.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t\t}\n\n\t\t\tvar intersection;\n\n\t\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t\tvar a, b, c;\n\t\t\t\tvar index = geometry.index;\n\t\t\t\tvar position = geometry.attributes.position;\n\t\t\t\tvar uv = geometry.attributes.uv;\n\t\t\t\tvar groups = geometry.groups;\n\t\t\t\tvar drawRange = geometry.drawRange;\n\t\t\t\tvar i, j, il, jl;\n\t\t\t\tvar group, groupMaterial;\n\t\t\t\tvar start, end;\n\n\t\t\t\tif ( index !== null ) {\n\n\t\t\t\t\t// indexed buffer geometry\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tfor ( i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\tgroup = groups[ i ];\n\t\t\t\t\t\t\tgroupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\tstart = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\t\tend = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\t\tfor ( j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\t\ta = index.getX( j );\n\t\t\t\t\t\t\t\tb = index.getX( j + 1 );\n\t\t\t\t\t\t\t\tc = index.getX( j + 2 );\n\n\t\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, ray, position, uv, a, b, c );\n\n\t\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstart = Math.max( 0, drawRange.start );\n\t\t\t\t\t\tend = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\tfor ( i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\t\ta = index.getX( i );\n\t\t\t\t\t\t\tb = index.getX( i + 1 );\n\t\t\t\t\t\t\tc = index.getX( i + 2 );\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, ray, position, uv, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( position !== undefined ) {\n\n\t\t\t\t\t// non-indexed buffer geometry\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tfor ( i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\tgroup = groups[ i ];\n\t\t\t\t\t\t\tgroupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\tstart = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\t\tend = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\t\tfor ( j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\t\ta = j;\n\t\t\t\t\t\t\t\tb = j + 1;\n\t\t\t\t\t\t\t\tc = j + 2;\n\n\t\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, ray, position, uv, a, b, c );\n\n\t\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstart = Math.max( 0, drawRange.start );\n\t\t\t\t\t\tend = Math.min( position.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\tfor ( i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\t\ta = i;\n\t\t\t\t\t\t\tb = i + 1;\n\t\t\t\t\t\t\tc = i + 2;\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, ray, position, uv, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\t\tvar fvA, fvB, fvC;\n\t\t\t\tvar isMultiMaterial = Array.isArray( material );\n\n\t\t\t\tvar vertices = geometry.vertices;\n\t\t\t\tvar faces = geometry.faces;\n\t\t\t\tvar uvs;\n\n\t\t\t\tvar faceVertexUvs = geometry.faceVertexUvs[ 0 ];\n\t\t\t\tif ( faceVertexUvs.length > 0 ) uvs = faceVertexUvs;\n\n\t\t\t\tfor ( var f = 0, fl = faces.length; f < fl; f ++ ) {\n\n\t\t\t\t\tvar face = faces[ f ];\n\t\t\t\t\tvar faceMaterial = isMultiMaterial ? material[ face.materialIndex ] : material;\n\n\t\t\t\t\tif ( faceMaterial === undefined ) continue;\n\n\t\t\t\t\tfvA = vertices[ face.a ];\n\t\t\t\t\tfvB = vertices[ face.b ];\n\t\t\t\t\tfvC = vertices[ face.c ];\n\n\t\t\t\t\tif ( faceMaterial.morphTargets === true ) {\n\n\t\t\t\t\t\tvar morphTargets = geometry.morphTargets;\n\t\t\t\t\t\tvar morphInfluences = this.morphTargetInfluences;\n\n\t\t\t\t\t\tvA.set( 0, 0, 0 );\n\t\t\t\t\t\tvB.set( 0, 0, 0 );\n\t\t\t\t\t\tvC.set( 0, 0, 0 );\n\n\t\t\t\t\t\tfor ( var t = 0, tl = morphTargets.length; t < tl; t ++ ) {\n\n\t\t\t\t\t\t\tvar influence = morphInfluences[ t ];\n\n\t\t\t\t\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t\t\t\t\tvar targets = morphTargets[ t ].vertices;\n\n\t\t\t\t\t\t\tvA.addScaledVector( tempA.subVectors( targets[ face.a ], fvA ), influence );\n\t\t\t\t\t\t\tvB.addScaledVector( tempB.subVectors( targets[ face.b ], fvB ), influence );\n\t\t\t\t\t\t\tvC.addScaledVector( tempC.subVectors( targets[ face.c ], fvC ), influence );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvA.add( fvA );\n\t\t\t\t\t\tvB.add( fvB );\n\t\t\t\t\t\tvC.add( fvC );\n\n\t\t\t\t\t\tfvA = vA;\n\t\t\t\t\t\tfvB = vB;\n\t\t\t\t\t\tfvC = vC;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tintersection = checkIntersection( this, faceMaterial, raycaster, ray, fvA, fvB, fvC, intersectionPoint );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tif ( uvs && uvs[ f ] ) {\n\n\t\t\t\t\t\t\tvar uvs_f = uvs[ f ];\n\t\t\t\t\t\t\tuvA.copy( uvs_f[ 0 ] );\n\t\t\t\t\t\t\tuvB.copy( uvs_f[ 1 ] );\n\t\t\t\t\t\t\tuvC.copy( uvs_f[ 2 ] );\n\n\t\t\t\t\t\t\tintersection.uv = uvIntersection( intersectionPoint, fvA, fvB, fvC, uvA, uvB, uvC );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tintersection.face = face;\n\t\t\t\t\t\tintersection.faceIndex = f;\n\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}() ),\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLBackground( renderer, state, objects, premultipliedAlpha ) {\n\n\tvar clearColor = new Color( 0x000000 );\n\tvar clearAlpha = 0;\n\n\tvar planeCamera, planeMesh;\n\tvar boxMesh;\n\n\tfunction render( renderList, scene, camera, forceClear ) {\n\n\t\tvar background = scene.background;\n\n\t\tif ( background === null ) {\n\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tsetClear( background, 1 );\n\t\t\tforceClear = true;\n\n\t\t}\n\n\t\tif ( renderer.autoClear || forceClear ) {\n\n\t\t\trenderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\n\t\t}\n\n\t\tif ( background && background.isCubeTexture ) {\n\n\t\t\tif ( boxMesh === undefined ) {\n\n\t\t\t\tboxMesh = new Mesh(\n\t\t\t\t\tnew BoxBufferGeometry( 1, 1, 1 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tuniforms: ShaderLib.cube.uniforms,\n\t\t\t\t\t\tvertexShader: ShaderLib.cube.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.cube.fragmentShader,\n\t\t\t\t\t\tside: BackSide,\n\t\t\t\t\t\tdepthTest: true,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tboxMesh.geometry.removeAttribute( 'normal' );\n\t\t\t\tboxMesh.geometry.removeAttribute( 'uv' );\n\n\t\t\t\tboxMesh.onBeforeRender = function ( renderer, scene, camera ) {\n\n\t\t\t\t\tthis.matrixWorld.copyPosition( camera.matrixWorld );\n\n\t\t\t\t};\n\n\t\t\t\tobjects.update( boxMesh );\n\n\t\t\t}\n\n\t\t\tboxMesh.material.uniforms.tCube.value = background;\n\n\t\t\trenderList.push( boxMesh, boxMesh.geometry, boxMesh.material, 0, null );\n\n\t\t} else if ( background && background.isTexture ) {\n\n\t\t\tif ( planeCamera === undefined ) {\n\n\t\t\t\tplaneCamera = new OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );\n\n\t\t\t\tplaneMesh = new Mesh(\n\t\t\t\t\tnew PlaneBufferGeometry( 2, 2 ),\n\t\t\t\t\tnew MeshBasicMaterial( { depthTest: false, depthWrite: false, fog: false } )\n\t\t\t\t);\n\n\t\t\t\tobjects.update( planeMesh );\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.map = background;\n\n\t\t\t// TODO Push this to renderList\n\n\t\t\trenderer.renderBufferDirect( planeCamera, null, planeMesh.geometry, planeMesh.material, planeMesh, null );\n\n\t\t}\n\n\t}\n\n\tfunction setClear( color, alpha ) {\n\n\t\tstate.buffers.color.setClear( color.r, color.g, color.b, alpha, premultipliedAlpha );\n\n\t}\n\n\treturn {\n\n\t\tgetClearColor: function () {\n\n\t\t\treturn clearColor;\n\n\t\t},\n\t\tsetClearColor: function ( color, alpha ) {\n\n\t\t\tclearColor.set( color );\n\t\t\tclearAlpha = alpha !== undefined ? alpha : 1;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\tgetClearAlpha: function () {\n\n\t\t\treturn clearAlpha;\n\n\t\t},\n\t\tsetClearAlpha: function ( alpha ) {\n\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\trender: render\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tvar mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawArrays( mode, start, count );\n\n\t\tinfo.update( count, mode );\n\n\t}\n\n\tfunction renderInstances( geometry, start, count ) {\n\n\t\tvar extension;\n\n\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\textension = gl;\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ capabilities.isWebGL2 ? 'drawArraysInstanced' : 'drawArraysInstancedANGLE' ]( mode, start, count, geometry.maxInstancedCount );\n\n\t\tinfo.update( count, mode, geometry.maxInstancedCount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLCapabilities( gl, extensions, parameters ) {\n\n\tvar maxAnisotropy;\n\n\tfunction getMaxAnisotropy() {\n\n\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\tvar extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tmaxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT );\n\n\t\t} else {\n\n\t\t\tmaxAnisotropy = 0;\n\n\t\t}\n\n\t\treturn maxAnisotropy;\n\n\t}\n\n\tfunction getMaxPrecision( precision ) {\n\n\t\tif ( precision === 'highp' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.HIGH_FLOAT ).precision > 0 &&\n\t\t\t     gl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.HIGH_FLOAT ).precision > 0 ) {\n\n\t\t\t\treturn 'highp';\n\n\t\t\t}\n\n\t\t\tprecision = 'mediump';\n\n\t\t}\n\n\t\tif ( precision === 'mediump' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.MEDIUM_FLOAT ).precision > 0 &&\n\t\t\t     gl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT ).precision > 0 ) {\n\n\t\t\t\treturn 'mediump';\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn 'lowp';\n\n\t}\n\n\tvar isWebGL2 = typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext;\n\n\tvar precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\tvar maxPrecision = getMaxPrecision( precision );\n\n\tif ( maxPrecision !== precision ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' );\n\t\tprecision = maxPrecision;\n\n\t}\n\n\tvar logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n\n\tvar maxTextures = gl.getParameter( gl.MAX_TEXTURE_IMAGE_UNITS );\n\tvar maxVertexTextures = gl.getParameter( gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS );\n\tvar maxTextureSize = gl.getParameter( gl.MAX_TEXTURE_SIZE );\n\tvar maxCubemapSize = gl.getParameter( gl.MAX_CUBE_MAP_TEXTURE_SIZE );\n\n\tvar maxAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );\n\tvar maxVertexUniforms = gl.getParameter( gl.MAX_VERTEX_UNIFORM_VECTORS );\n\tvar maxVaryings = gl.getParameter( gl.MAX_VARYING_VECTORS );\n\tvar maxFragmentUniforms = gl.getParameter( gl.MAX_FRAGMENT_UNIFORM_VECTORS );\n\n\tvar vertexTextures = maxVertexTextures > 0;\n\tvar floatFragmentTextures = isWebGL2 || !! extensions.get( 'OES_texture_float' );\n\tvar floatVertexTextures = vertexTextures && floatFragmentTextures;\n\n\treturn {\n\n\t\tisWebGL2: isWebGL2,\n\n\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\tgetMaxPrecision: getMaxPrecision,\n\n\t\tprecision: precision,\n\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\tmaxTextures: maxTextures,\n\t\tmaxVertexTextures: maxVertexTextures,\n\t\tmaxTextureSize: maxTextureSize,\n\t\tmaxCubemapSize: maxCubemapSize,\n\n\t\tmaxAttributes: maxAttributes,\n\t\tmaxVertexUniforms: maxVertexUniforms,\n\t\tmaxVaryings: maxVaryings,\n\t\tmaxFragmentUniforms: maxFragmentUniforms,\n\n\t\tvertexTextures: vertexTextures,\n\t\tfloatFragmentTextures: floatFragmentTextures,\n\t\tfloatVertexTextures: floatVertexTextures\n\n\t};\n\n}\n\n/**\n * @author tschw\n */\n\nfunction WebGLClipping() {\n\n\tvar scope = this,\n\n\t\tglobalState = null,\n\t\tnumGlobalPlanes = 0,\n\t\tlocalClippingEnabled = false,\n\t\trenderingShadows = false,\n\n\t\tplane = new Plane(),\n\t\tviewNormalMatrix = new Matrix3(),\n\n\t\tuniform = { value: null, needsUpdate: false };\n\n\tthis.uniform = uniform;\n\tthis.numPlanes = 0;\n\tthis.numIntersection = 0;\n\n\tthis.init = function ( planes, enableLocalClipping, camera ) {\n\n\t\tvar enabled =\n\t\t\tplanes.length !== 0 ||\n\t\t\tenableLocalClipping ||\n\t\t\t// enable state of previous frame - the clipping code has to\n\t\t\t// run another frame in order to reset the state:\n\t\t\tnumGlobalPlanes !== 0 ||\n\t\t\tlocalClippingEnabled;\n\n\t\tlocalClippingEnabled = enableLocalClipping;\n\n\t\tglobalState = projectPlanes( planes, camera, 0 );\n\t\tnumGlobalPlanes = planes.length;\n\n\t\treturn enabled;\n\n\t};\n\n\tthis.beginShadows = function () {\n\n\t\trenderingShadows = true;\n\t\tprojectPlanes( null );\n\n\t};\n\n\tthis.endShadows = function () {\n\n\t\trenderingShadows = false;\n\t\tresetGlobalState();\n\n\t};\n\n\tthis.setState = function ( planes, clipIntersection, clipShadows, camera, cache, fromCache ) {\n\n\t\tif ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) {\n\n\t\t\t// there's no local clipping\n\n\t\t\tif ( renderingShadows ) {\n\n\t\t\t\t// there's no global clipping\n\n\t\t\t\tprojectPlanes( null );\n\n\t\t\t} else {\n\n\t\t\t\tresetGlobalState();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tvar nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\tlGlobal = nGlobal * 4,\n\n\t\t\t\tdstArray = cache.clippingState || null;\n\n\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, fromCache );\n\n\t\t\tfor ( var i = 0; i !== lGlobal; ++ i ) {\n\n\t\t\t\tdstArray[ i ] = globalState[ i ];\n\n\t\t\t}\n\n\t\t\tcache.clippingState = dstArray;\n\t\t\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\n\t\t\tthis.numPlanes += nGlobal;\n\n\t\t}\n\n\n\t};\n\n\tfunction resetGlobalState() {\n\n\t\tif ( uniform.value !== globalState ) {\n\n\t\t\tuniform.value = globalState;\n\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\n\n\t\t}\n\n\t\tscope.numPlanes = numGlobalPlanes;\n\t\tscope.numIntersection = 0;\n\n\t}\n\n\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\n\n\t\tvar nPlanes = planes !== null ? planes.length : 0,\n\t\t\tdstArray = null;\n\n\t\tif ( nPlanes !== 0 ) {\n\n\t\t\tdstArray = uniform.value;\n\n\t\t\tif ( skipTransform !== true || dstArray === null ) {\n\n\t\t\t\tvar flatSize = dstOffset + nPlanes * 4,\n\t\t\t\t\tviewMatrix = camera.matrixWorldInverse;\n\n\t\t\t\tviewNormalMatrix.getNormalMatrix( viewMatrix );\n\n\t\t\t\tif ( dstArray === null || dstArray.length < flatSize ) {\n\n\t\t\t\t\tdstArray = new Float32Array( flatSize );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) {\n\n\t\t\t\t\tplane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix );\n\n\t\t\t\t\tplane.normal.toArray( dstArray, i4 );\n\t\t\t\t\tdstArray[ i4 + 3 ] = plane.constant;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tuniform.value = dstArray;\n\t\t\tuniform.needsUpdate = true;\n\n\t\t}\n\n\t\tscope.numPlanes = nPlanes;\n\n\t\treturn dstArray;\n\n\t}\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLExtensions( gl ) {\n\n\tvar extensions = {};\n\n\treturn {\n\n\t\tget: function ( name ) {\n\n\t\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\t\treturn extensions[ name ];\n\n\t\t\t}\n\n\t\t\tvar extension;\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'WEBGL_depth_texture':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'EXT_texture_filter_anisotropic':\n\t\t\t\t\textension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_s3tc':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\textension = gl.getExtension( name );\n\n\t\t\t}\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\n\n\t\t\t}\n\n\t\t\textensions[ name ] = extension;\n\n\t\t\treturn extension;\n\n\t\t}\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLGeometries( gl, attributes, info ) {\n\n\tvar geometries = {};\n\tvar wireframeAttributes = {};\n\n\tfunction onGeometryDispose( event ) {\n\n\t\tvar geometry = event.target;\n\t\tvar buffergeometry = geometries[ geometry.id ];\n\n\t\tif ( buffergeometry.index !== null ) {\n\n\t\t\tattributes.remove( buffergeometry.index );\n\n\t\t}\n\n\t\tfor ( var name in buffergeometry.attributes ) {\n\n\t\t\tattributes.remove( buffergeometry.attributes[ name ] );\n\n\t\t}\n\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\tdelete geometries[ geometry.id ];\n\n\t\tvar attribute = wireframeAttributes[ buffergeometry.id ];\n\n\t\tif ( attribute ) {\n\n\t\t\tattributes.remove( attribute );\n\t\t\tdelete wireframeAttributes[ buffergeometry.id ];\n\n\t\t}\n\n\t\t//\n\n\t\tinfo.memory.geometries --;\n\n\t}\n\n\tfunction get( object, geometry ) {\n\n\t\tvar buffergeometry = geometries[ geometry.id ];\n\n\t\tif ( buffergeometry ) return buffergeometry;\n\n\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tbuffergeometry = geometry;\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tif ( geometry._bufferGeometry === undefined ) {\n\n\t\t\t\tgeometry._bufferGeometry = new BufferGeometry().setFromObject( object );\n\n\t\t\t}\n\n\t\t\tbuffergeometry = geometry._bufferGeometry;\n\n\t\t}\n\n\t\tgeometries[ geometry.id ] = buffergeometry;\n\n\t\tinfo.memory.geometries ++;\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction update( geometry ) {\n\n\t\tvar index = geometry.index;\n\t\tvar geometryAttributes = geometry.attributes;\n\n\t\tif ( index !== null ) {\n\n\t\t\tattributes.update( index, gl.ELEMENT_ARRAY_BUFFER );\n\n\t\t}\n\n\t\tfor ( var name in geometryAttributes ) {\n\n\t\t\tattributes.update( geometryAttributes[ name ], gl.ARRAY_BUFFER );\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tvar morphAttributes = geometry.morphAttributes;\n\n\t\tfor ( var name in morphAttributes ) {\n\n\t\t\tvar array = morphAttributes[ name ];\n\n\t\t\tfor ( var i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.update( array[ i ], gl.ARRAY_BUFFER );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction getWireframeAttribute( geometry ) {\n\n\t\tvar attribute = wireframeAttributes[ geometry.id ];\n\n\t\tif ( attribute ) return attribute;\n\n\t\tvar indices = [];\n\n\t\tvar geometryIndex = geometry.index;\n\t\tvar geometryAttributes = geometry.attributes;\n\n\t\t// console.time( 'wireframe' );\n\n\t\tif ( geometryIndex !== null ) {\n\n\t\t\tvar array = geometryIndex.array;\n\n\t\t\tfor ( var i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\tvar a = array[ i + 0 ];\n\t\t\t\tvar b = array[ i + 1 ];\n\t\t\t\tvar c = array[ i + 2 ];\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tvar array = geometryAttributes.position.array;\n\n\t\t\tfor ( var i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\n\n\t\t\t\tvar a = i + 0;\n\t\t\t\tvar b = i + 1;\n\t\t\t\tvar c = i + 2;\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// console.timeEnd( 'wireframe' );\n\n\t\tattribute = new ( arrayMax( indices ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );\n\n\t\tattributes.update( attribute, gl.ELEMENT_ARRAY_BUFFER );\n\n\t\twireframeAttributes[ geometry.id ] = attribute;\n\n\t\treturn attribute;\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tupdate: update,\n\n\t\tgetWireframeAttribute: getWireframeAttribute\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tvar mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tvar type, bytesPerElement;\n\n\tfunction setIndex( value ) {\n\n\t\ttype = value.type;\n\t\tbytesPerElement = value.bytesPerElement;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawElements( mode, count, type, start * bytesPerElement );\n\n\t\tinfo.update( count, mode );\n\n\t}\n\n\tfunction renderInstances( geometry, start, count ) {\n\n\t\tvar extension;\n\n\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\textension = gl;\n\n\t\t} else {\n\n\t\t\tvar extension = extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ capabilities.isWebGL2 ? 'drawElementsInstanced' : 'drawElementsInstancedANGLE' ]( mode, count, type, start * bytesPerElement, geometry.maxInstancedCount );\n\n\t\tinfo.update( count, mode, geometry.maxInstancedCount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.setIndex = setIndex;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WebGLInfo( gl ) {\n\n\tvar memory = {\n\t\tgeometries: 0,\n\t\ttextures: 0\n\t};\n\n\tvar render = {\n\t\tframe: 0,\n\t\tcalls: 0,\n\t\ttriangles: 0,\n\t\tpoints: 0,\n\t\tlines: 0\n\t};\n\n\tfunction update( count, mode, instanceCount ) {\n\n\t\tinstanceCount = instanceCount || 1;\n\n\t\trender.calls ++;\n\n\t\tswitch ( mode ) {\n\n\t\t\tcase gl.TRIANGLES:\n\t\t\t\trender.triangles += instanceCount * ( count / 3 );\n\t\t\t\tbreak;\n\n\t\t\tcase gl.TRIANGLE_STRIP:\n\t\t\tcase gl.TRIANGLE_FAN:\n\t\t\t\trender.triangles += instanceCount * ( count - 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase gl.LINES:\n\t\t\t\trender.lines += instanceCount * ( count / 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase gl.LINE_STRIP:\n\t\t\t\trender.lines += instanceCount * ( count - 1 );\n\t\t\t\tbreak;\n\n\t\t\tcase gl.LINE_LOOP:\n\t\t\t\trender.lines += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tcase gl.POINTS:\n\t\t\t\trender.points += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.error( 'THREE.WebGLInfo: Unknown draw mode:', mode );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\trender.frame ++;\n\t\trender.calls = 0;\n\t\trender.triangles = 0;\n\t\trender.points = 0;\n\t\trender.lines = 0;\n\n\t}\n\n\treturn {\n\t\tmemory: memory,\n\t\trender: render,\n\t\tprograms: null,\n\t\tautoReset: true,\n\t\treset: reset,\n\t\tupdate: update\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction absNumericalSort( a, b ) {\n\n\treturn Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] );\n\n}\n\nfunction WebGLMorphtargets( gl ) {\n\n\tvar influencesList = {};\n\tvar morphInfluences = new Float32Array( 8 );\n\n\tfunction update( object, geometry, material, program ) {\n\n\t\tvar objectInfluences = object.morphTargetInfluences;\n\n\t\tvar length = objectInfluences.length;\n\n\t\tvar influences = influencesList[ geometry.id ];\n\n\t\tif ( influences === undefined ) {\n\n\t\t\t// initialise list\n\n\t\t\tinfluences = [];\n\n\t\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\t\tinfluences[ i ] = [ i, 0 ];\n\n\t\t\t}\n\n\t\t\tinfluencesList[ geometry.id ] = influences;\n\n\t\t}\n\n\t\tvar morphTargets = material.morphTargets && geometry.morphAttributes.position;\n\t\tvar morphNormals = material.morphNormals && geometry.morphAttributes.normal;\n\n\t\t// Remove current morphAttributes\n\n\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\tvar influence = influences[ i ];\n\n\t\t\tif ( influence[ 1 ] !== 0 ) {\n\n\t\t\t\tif ( morphTargets ) geometry.removeAttribute( 'morphTarget' + i );\n\t\t\t\tif ( morphNormals ) geometry.removeAttribute( 'morphNormal' + i );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Collect influences\n\n\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\tvar influence = influences[ i ];\n\n\t\t\tinfluence[ 0 ] = i;\n\t\t\tinfluence[ 1 ] = objectInfluences[ i ];\n\n\t\t}\n\n\t\tinfluences.sort( absNumericalSort );\n\n\t\t// Add morphAttributes\n\n\t\tfor ( var i = 0; i < 8; i ++ ) {\n\n\t\t\tvar influence = influences[ i ];\n\n\t\t\tif ( influence ) {\n\n\t\t\t\tvar index = influence[ 0 ];\n\t\t\t\tvar value = influence[ 1 ];\n\n\t\t\t\tif ( value ) {\n\n\t\t\t\t\tif ( morphTargets ) geometry.addAttribute( 'morphTarget' + i, morphTargets[ index ] );\n\t\t\t\t\tif ( morphNormals ) geometry.addAttribute( 'morphNormal' + i, morphNormals[ index ] );\n\n\t\t\t\t\tmorphInfluences[ i ] = value;\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tmorphInfluences[ i ] = 0;\n\n\t\t}\n\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLObjects( geometries, info ) {\n\n\tvar updateList = {};\n\n\tfunction update( object ) {\n\n\t\tvar frame = info.render.frame;\n\n\t\tvar geometry = object.geometry;\n\t\tvar buffergeometry = geometries.get( object, geometry );\n\n\t\t// Update once per frame\n\n\t\tif ( updateList[ buffergeometry.id ] !== frame ) {\n\n\t\t\tif ( geometry.isGeometry ) {\n\n\t\t\t\tbuffergeometry.updateFromObject( object );\n\n\t\t\t}\n\n\t\t\tgeometries.update( buffergeometry );\n\n\t\t\tupdateList[ buffergeometry.id ] = frame;\n\n\t\t}\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tupdateList = {};\n\n\t}\n\n\treturn {\n\n\t\tupdate: update,\n\t\tdispose: dispose\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CubeTexture( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\timages = images !== undefined ? images : [];\n\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\n\tTexture.call( this, images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.flipY = false;\n\n}\n\nCubeTexture.prototype = Object.create( Texture.prototype );\nCubeTexture.prototype.constructor = CubeTexture;\n\nCubeTexture.prototype.isCubeTexture = true;\n\nObject.defineProperty( CubeTexture.prototype, 'images', {\n\n\tget: function () {\n\n\t\treturn this.image;\n\n\t},\n\n\tset: function ( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n} );\n\n/**\n * @author tschw\n * @author Mugen87 / https://github.com/Mugen87\n * @author mrdoob / http://mrdoob.com/\n *\n * Uniforms of a program.\n * Those form a tree structure with a special top-level container for the root,\n * which you get by calling 'new WebGLUniforms( gl, program, renderer )'.\n *\n *\n * Properties of inner nodes including the top-level container:\n *\n * .seq - array of nested uniforms\n * .map - nested uniforms by name\n *\n *\n * Methods of all nodes except the top-level container:\n *\n * .setValue( gl, value, [renderer] )\n *\n * \t\tuploads a uniform value(s)\n *  \tthe 'renderer' parameter is needed for sampler uniforms\n *\n *\n * Static methods of the top-level container (renderer factorizations):\n *\n * .upload( gl, seq, values, renderer )\n *\n * \t\tsets uniforms in 'seq' to 'values[id].value'\n *\n * .seqWithValue( seq, values ) : filteredSeq\n *\n * \t\tfilters 'seq' entries with corresponding entry in values\n *\n *\n * Methods of the top-level container (renderer factorizations):\n *\n * .setValue( gl, name, value )\n *\n * \t\tsets uniform with  name 'name' to 'value'\n *\n * .set( gl, obj, prop )\n *\n * \t\tsets uniform from object and property with same name than uniform\n *\n * .setOptional( gl, obj, prop )\n *\n * \t\tlike .set for an optional property of the object\n *\n */\n\nvar emptyTexture = new Texture();\nvar emptyCubeTexture = new CubeTexture();\n\n// --- Base for inner nodes (including the root) ---\n\nfunction UniformContainer() {\n\n\tthis.seq = [];\n\tthis.map = {};\n\n}\n\n// --- Utilities ---\n\n// Array Caches (provide typed arrays for temporary by size)\n\nvar arrayCacheF32 = [];\nvar arrayCacheI32 = [];\n\n// Float32Array caches used for uploading Matrix uniforms\n\nvar mat4array = new Float32Array( 16 );\nvar mat3array = new Float32Array( 9 );\nvar mat2array = new Float32Array( 4 );\n\n// Flattening for arrays of vectors and matrices\n\nfunction flatten( array, nBlocks, blockSize ) {\n\n\tvar firstElem = array[ 0 ];\n\n\tif ( firstElem <= 0 || firstElem > 0 ) return array;\n\t// unoptimized: ! isNaN( firstElem )\n\t// see http://jacksondunstan.com/articles/983\n\n\tvar n = nBlocks * blockSize,\n\t\tr = arrayCacheF32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Float32Array( n );\n\t\tarrayCacheF32[ n ] = r;\n\n\t}\n\n\tif ( nBlocks !== 0 ) {\n\n\t\tfirstElem.toArray( r, 0 );\n\n\t\tfor ( var i = 1, offset = 0; i !== nBlocks; ++ i ) {\n\n\t\t\toffset += blockSize;\n\t\t\tarray[ i ].toArray( r, offset );\n\n\t\t}\n\n\t}\n\n\treturn r;\n\n}\n\nfunction arraysEqual( a, b ) {\n\n\tif ( a.length !== b.length ) return false;\n\n\tfor ( var i = 0, l = a.length; i < l; i ++ ) {\n\n\t\tif ( a[ i ] !== b[ i ] ) return false;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction copyArray( a, b ) {\n\n\tfor ( var i = 0, l = b.length; i < l; i ++ ) {\n\n\t\ta[ i ] = b[ i ];\n\n\t}\n\n}\n\n// Texture unit allocation\n\nfunction allocTexUnits( renderer, n ) {\n\n\tvar r = arrayCacheI32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Int32Array( n );\n\t\tarrayCacheI32[ n ] = r;\n\n\t}\n\n\tfor ( var i = 0; i !== n; ++ i )\n\t\tr[ i ] = renderer.allocTextureUnit();\n\n\treturn r;\n\n}\n\n// --- Setters ---\n\n// Note: Defining these methods externally, because they come in a bunch\n// and this way their names minify.\n\n// Single scalar\n\nfunction setValue1f( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1f( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\nfunction setValue1i( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1i( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single float vector (from flat array or THREE.VectorN)\n\nfunction setValue2fv( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2f( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValue3fv( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3f( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else if ( v.r !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.r || cache[ 1 ] !== v.g || cache[ 2 ] !== v.b ) {\n\n\t\t\tgl.uniform3f( this.addr, v.r, v.g, v.b );\n\n\t\t\tcache[ 0 ] = v.r;\n\t\t\tcache[ 1 ] = v.g;\n\t\t\tcache[ 2 ] = v.b;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValue4fv( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4f( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single matrix (from flat array or MatrixN)\n\nfunction setValue2fm( gl, v ) {\n\n\tvar cache = this.cache;\n\tvar elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix2fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat2array.set( elements );\n\n\t\tgl.uniformMatrix2fv( this.addr, false, mat2array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValue3fm( gl, v ) {\n\n\tvar cache = this.cache;\n\tvar elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix3fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat3array.set( elements );\n\n\t\tgl.uniformMatrix3fv( this.addr, false, mat3array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValue4fm( gl, v ) {\n\n\tvar cache = this.cache;\n\tvar elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix4fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat4array.set( elements );\n\n\t\tgl.uniformMatrix4fv( this.addr, false, mat4array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\n// Single texture (2D / Cube)\n\nfunction setValueT1( gl, v, renderer ) {\n\n\tvar cache = this.cache;\n\tvar unit = renderer.allocTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\trenderer.setTexture2D( v || emptyTexture, unit );\n\n}\n\nfunction setValueT6( gl, v, renderer ) {\n\n\tvar cache = this.cache;\n\tvar unit = renderer.allocTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\trenderer.setTextureCube( v || emptyCubeTexture, unit );\n\n}\n\n// Integer / Boolean vectors or arrays thereof (always flat arrays)\n\nfunction setValue2iv( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform2iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValue3iv( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform3iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValue4iv( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform4iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\n// Helper to pick the right setter for the singular case\n\nfunction getSingularSetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValue1f; // FLOAT\n\t\tcase 0x8b50: return setValue2fv; // _VEC2\n\t\tcase 0x8b51: return setValue3fv; // _VEC3\n\t\tcase 0x8b52: return setValue4fv; // _VEC4\n\n\t\tcase 0x8b5a: return setValue2fm; // _MAT2\n\t\tcase 0x8b5b: return setValue3fm; // _MAT3\n\t\tcase 0x8b5c: return setValue4fm; // _MAT4\n\n\t\tcase 0x8b5e: case 0x8d66: return setValueT1; // SAMPLER_2D, SAMPLER_EXTERNAL_OES\n\t\tcase 0x8b60: return setValueT6; // SAMPLER_CUBE\n\n\t\tcase 0x1404: case 0x8b56: return setValue1i; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValue2iv; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValue3iv; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValue4iv; // _VEC4\n\n\t}\n\n}\n\n// Array of scalars\n\nfunction setValue1fv( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform1fv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\nfunction setValue1iv( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform1iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\n// Array of vectors (flat or from THREE classes)\n\nfunction setValueV2a( gl, v ) {\n\n\tvar cache = this.cache;\n\tvar data = flatten( v, this.size, 2 );\n\n\tif ( arraysEqual( cache, data ) ) return;\n\n\tgl.uniform2fv( this.addr, data );\n\n\tthis.updateCache( data );\n\n}\n\nfunction setValueV3a( gl, v ) {\n\n\tvar cache = this.cache;\n\tvar data = flatten( v, this.size, 3 );\n\n\tif ( arraysEqual( cache, data ) ) return;\n\n\tgl.uniform3fv( this.addr, data );\n\n\tthis.updateCache( data );\n\n}\n\nfunction setValueV4a( gl, v ) {\n\n\tvar cache = this.cache;\n\tvar data = flatten( v, this.size, 4 );\n\n\tif ( arraysEqual( cache, data ) ) return;\n\n\tgl.uniform4fv( this.addr, data );\n\n\tthis.updateCache( data );\n\n}\n\n// Array of matrices (flat or from THREE clases)\n\nfunction setValueM2a( gl, v ) {\n\n\tvar cache = this.cache;\n\tvar data = flatten( v, this.size, 4 );\n\n\tif ( arraysEqual( cache, data ) ) return;\n\n\tgl.uniformMatrix2fv( this.addr, false, data );\n\n\tthis.updateCache( data );\n\n}\n\nfunction setValueM3a( gl, v ) {\n\n\tvar cache = this.cache;\n\tvar data = flatten( v, this.size, 9 );\n\n\tif ( arraysEqual( cache, data ) ) return;\n\n\tgl.uniformMatrix3fv( this.addr, false, data );\n\n\tthis.updateCache( data );\n\n}\n\nfunction setValueM4a( gl, v ) {\n\n\tvar cache = this.cache;\n\tvar data = flatten( v, this.size, 16 );\n\n\tif ( arraysEqual( cache, data ) ) return;\n\n\tgl.uniformMatrix4fv( this.addr, false, data );\n\n\tthis.updateCache( data );\n\n}\n\n// Array of textures (2D / Cube)\n\nfunction setValueT1a( gl, v, renderer ) {\n\n\tvar cache = this.cache;\n\tvar n = v.length;\n\n\tvar units = allocTexUnits( renderer, n );\n\n\tif ( arraysEqual( cache, units ) === false ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( var i = 0; i !== n; ++ i ) {\n\n\t\trenderer.setTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT6a( gl, v, renderer ) {\n\n\tvar cache = this.cache;\n\tvar n = v.length;\n\n\tvar units = allocTexUnits( renderer, n );\n\n\tif ( arraysEqual( cache, units ) === false ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( var i = 0; i !== n; ++ i ) {\n\n\t\trenderer.setTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t}\n\n}\n\n// Helper to pick the right setter for a pure (bottom-level) array\n\nfunction getPureArraySetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValue1fv; // FLOAT\n\t\tcase 0x8b50: return setValueV2a; // _VEC2\n\t\tcase 0x8b51: return setValueV3a; // _VEC3\n\t\tcase 0x8b52: return setValueV4a; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2a; // _MAT2\n\t\tcase 0x8b5b: return setValueM3a; // _MAT3\n\t\tcase 0x8b5c: return setValueM4a; // _MAT4\n\n\t\tcase 0x8b5e: return setValueT1a; // SAMPLER_2D\n\t\tcase 0x8b60: return setValueT6a; // SAMPLER_CUBE\n\n\t\tcase 0x1404: case 0x8b56: return setValue1iv; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValue2iv; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValue3iv; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValue4iv; // _VEC4\n\n\t}\n\n}\n\n// --- Uniform Classes ---\n\nfunction SingleUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nfunction PureArrayUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.size = activeInfo.size;\n\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nPureArrayUniform.prototype.updateCache = function ( data ) {\n\n\tvar cache = this.cache;\n\n\tif ( data instanceof Float32Array && cache.length !== data.length ) {\n\n\t\tthis.cache = new Float32Array( data.length );\n\n\t}\n\n\tcopyArray( cache, data );\n\n};\n\nfunction StructuredUniform( id ) {\n\n\tthis.id = id;\n\n\tUniformContainer.call( this ); // mix-in\n\n}\n\nStructuredUniform.prototype.setValue = function ( gl, value, renderer ) {\n\n\tvar seq = this.seq;\n\n\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tvar u = seq[ i ];\n\t\tu.setValue( gl, value[ u.id ], renderer );\n\n\t}\n\n};\n\n// --- Top-level ---\n\n// Parser - builds up the property tree from the path strings\n\nvar RePathPart = /([\\w\\d_]+)(\\])?(\\[|\\.)?/g;\n\n// extracts\n// \t- the identifier (member name or array index)\n//  - followed by an optional right bracket (found when array index)\n//  - followed by an optional left bracket or dot (type of subscript)\n//\n// Note: These portions can be read in a non-overlapping fashion and\n// allow straightforward parsing of the hierarchy that WebGL encodes\n// in the uniform names.\n\nfunction addUniform( container, uniformObject ) {\n\n\tcontainer.seq.push( uniformObject );\n\tcontainer.map[ uniformObject.id ] = uniformObject;\n\n}\n\nfunction parseUniform( activeInfo, addr, container ) {\n\n\tvar path = activeInfo.name,\n\t\tpathLength = path.length;\n\n\t// reset RegExp object, because of the early exit of a previous run\n\tRePathPart.lastIndex = 0;\n\n\twhile ( true ) {\n\n\t\tvar match = RePathPart.exec( path ),\n\t\t\tmatchEnd = RePathPart.lastIndex,\n\n\t\t\tid = match[ 1 ],\n\t\t\tidIsIndex = match[ 2 ] === ']',\n\t\t\tsubscript = match[ 3 ];\n\n\t\tif ( idIsIndex ) id = id | 0; // convert to integer\n\n\t\tif ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) {\n\n\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\n\n\t\t\taddUniform( container, subscript === undefined ?\n\t\t\t\tnew SingleUniform( id, activeInfo, addr ) :\n\t\t\t\tnew PureArrayUniform( id, activeInfo, addr ) );\n\n\t\t\tbreak;\n\n\t\t} else {\n\n\t\t\t// step into inner node / create it in case it doesn't exist\n\n\t\t\tvar map = container.map, next = map[ id ];\n\n\t\t\tif ( next === undefined ) {\n\n\t\t\t\tnext = new StructuredUniform( id );\n\t\t\t\taddUniform( container, next );\n\n\t\t\t}\n\n\t\t\tcontainer = next;\n\n\t\t}\n\n\t}\n\n}\n\n// Root Container\n\nfunction WebGLUniforms( gl, program, renderer ) {\n\n\tUniformContainer.call( this );\n\n\tthis.renderer = renderer;\n\n\tvar n = gl.getProgramParameter( program, gl.ACTIVE_UNIFORMS );\n\n\tfor ( var i = 0; i < n; ++ i ) {\n\n\t\tvar info = gl.getActiveUniform( program, i ),\n\t\t\taddr = gl.getUniformLocation( program, info.name );\n\n\t\tparseUniform( info, addr, this );\n\n\t}\n\n}\n\nWebGLUniforms.prototype.setValue = function ( gl, name, value ) {\n\n\tvar u = this.map[ name ];\n\n\tif ( u !== undefined ) u.setValue( gl, value, this.renderer );\n\n};\n\nWebGLUniforms.prototype.setOptional = function ( gl, object, name ) {\n\n\tvar v = object[ name ];\n\n\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n};\n\n\n// Static interface\n\nWebGLUniforms.upload = function ( gl, seq, values, renderer ) {\n\n\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tvar u = seq[ i ],\n\t\t\tv = values[ u.id ];\n\n\t\tif ( v.needsUpdate !== false ) {\n\n\t\t\t// note: always updating when .needsUpdate is undefined\n\t\t\tu.setValue( gl, v.value, renderer );\n\n\t\t}\n\n\t}\n\n};\n\nWebGLUniforms.seqWithValue = function ( seq, values ) {\n\n\tvar r = [];\n\n\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tvar u = seq[ i ];\n\t\tif ( u.id in values ) r.push( u );\n\n\t}\n\n\treturn r;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction addLineNumbers( string ) {\n\n\tvar lines = string.split( '\\n' );\n\n\tfor ( var i = 0; i < lines.length; i ++ ) {\n\n\t\tlines[ i ] = ( i + 1 ) + ': ' + lines[ i ];\n\n\t}\n\n\treturn lines.join( '\\n' );\n\n}\n\nfunction WebGLShader( gl, type, string ) {\n\n\tvar shader = gl.createShader( type );\n\n\tgl.shaderSource( shader, string );\n\tgl.compileShader( shader );\n\n\tif ( gl.getShaderParameter( shader, gl.COMPILE_STATUS ) === false ) {\n\n\t\tconsole.error( 'THREE.WebGLShader: Shader couldn\\'t compile.' );\n\n\t}\n\n\tif ( gl.getShaderInfoLog( shader ) !== '' ) {\n\n\t\tconsole.warn( 'THREE.WebGLShader: gl.getShaderInfoLog()', type === gl.VERTEX_SHADER ? 'vertex' : 'fragment', gl.getShaderInfoLog( shader ), addLineNumbers( string ) );\n\n\t}\n\n\t// --enable-privileged-webgl-extension\n\t// console.log( type, gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\treturn shader;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar programIdCount = 0;\n\nfunction getEncodingComponents( encoding ) {\n\n\tswitch ( encoding ) {\n\n\t\tcase LinearEncoding:\n\t\t\treturn [ 'Linear', '( value )' ];\n\t\tcase sRGBEncoding:\n\t\t\treturn [ 'sRGB', '( value )' ];\n\t\tcase RGBEEncoding:\n\t\t\treturn [ 'RGBE', '( value )' ];\n\t\tcase RGBM7Encoding:\n\t\t\treturn [ 'RGBM', '( value, 7.0 )' ];\n\t\tcase RGBM16Encoding:\n\t\t\treturn [ 'RGBM', '( value, 16.0 )' ];\n\t\tcase RGBDEncoding:\n\t\t\treturn [ 'RGBD', '( value, 256.0 )' ];\n\t\tcase GammaEncoding:\n\t\t\treturn [ 'Gamma', '( value, float( GAMMA_FACTOR ) )' ];\n\t\tdefault:\n\t\t\tthrow new Error( 'unsupported encoding: ' + encoding );\n\n\t}\n\n}\n\nfunction getTexelDecodingFunction( functionName, encoding ) {\n\n\tvar components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return ' + components[ 0 ] + 'ToLinear' + components[ 1 ] + '; }';\n\n}\n\nfunction getTexelEncodingFunction( functionName, encoding ) {\n\n\tvar components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[ 0 ] + components[ 1 ] + '; }';\n\n}\n\nfunction getToneMappingFunction( functionName, toneMapping ) {\n\n\tvar toneMappingName;\n\n\tswitch ( toneMapping ) {\n\n\t\tcase LinearToneMapping:\n\t\t\ttoneMappingName = 'Linear';\n\t\t\tbreak;\n\n\t\tcase ReinhardToneMapping:\n\t\t\ttoneMappingName = 'Reinhard';\n\t\t\tbreak;\n\n\t\tcase Uncharted2ToneMapping:\n\t\t\ttoneMappingName = 'Uncharted2';\n\t\t\tbreak;\n\n\t\tcase CineonToneMapping:\n\t\t\ttoneMappingName = 'OptimizedCineon';\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tthrow new Error( 'unsupported toneMapping: ' + toneMapping );\n\n\t}\n\n\treturn 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }';\n\n}\n\nfunction generateExtensions( extensions, parameters, rendererExtensions ) {\n\n\textensions = extensions || {};\n\n\tvar chunks = [\n\t\t( extensions.derivatives || parameters.envMapCubeUV || parameters.bumpMap || ( parameters.normalMap && ! parameters.objectSpaceNormalMap ) || parameters.flatShading ) ? '#extension GL_OES_standard_derivatives : enable' : '',\n\t\t( extensions.fragDepth || parameters.logarithmicDepthBuffer ) && rendererExtensions.get( 'EXT_frag_depth' ) ? '#extension GL_EXT_frag_depth : enable' : '',\n\t\t( extensions.drawBuffers ) && rendererExtensions.get( 'WEBGL_draw_buffers' ) ? '#extension GL_EXT_draw_buffers : require' : '',\n\t\t( extensions.shaderTextureLOD || parameters.envMap ) && rendererExtensions.get( 'EXT_shader_texture_lod' ) ? '#extension GL_EXT_shader_texture_lod : enable' : ''\n\t];\n\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n}\n\nfunction generateDefines( defines ) {\n\n\tvar chunks = [];\n\n\tfor ( var name in defines ) {\n\n\t\tvar value = defines[ name ];\n\n\t\tif ( value === false ) continue;\n\n\t\tchunks.push( '#define ' + name + ' ' + value );\n\n\t}\n\n\treturn chunks.join( '\\n' );\n\n}\n\nfunction fetchAttributeLocations( gl, program ) {\n\n\tvar attributes = {};\n\n\tvar n = gl.getProgramParameter( program, gl.ACTIVE_ATTRIBUTES );\n\n\tfor ( var i = 0; i < n; i ++ ) {\n\n\t\tvar info = gl.getActiveAttrib( program, i );\n\t\tvar name = info.name;\n\n\t\t// console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );\n\n\t\tattributes[ name ] = gl.getAttribLocation( program, name );\n\n\t}\n\n\treturn attributes;\n\n}\n\nfunction filterEmptyLine( string ) {\n\n\treturn string !== '';\n\n}\n\nfunction replaceLightNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )\n\t\t.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )\n\t\t.replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights )\n\t\t.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )\n\t\t.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights );\n\n}\n\nfunction replaceClippingPlaneNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes )\n\t\t.replace( /UNION_CLIPPING_PLANES/g, ( parameters.numClippingPlanes - parameters.numClipIntersection ) );\n\n}\n\nfunction parseIncludes( string ) {\n\n\tvar pattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\n\n\tfunction replace( match, include ) {\n\n\t\tvar replace = ShaderChunk[ include ];\n\n\t\tif ( replace === undefined ) {\n\n\t\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t\t}\n\n\t\treturn parseIncludes( replace );\n\n\t}\n\n\treturn string.replace( pattern, replace );\n\n}\n\nfunction unrollLoops( string ) {\n\n\tvar pattern = /#pragma unroll_loop[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}/g;\n\n\tfunction replace( match, start, end, snippet ) {\n\n\t\tvar unroll = '';\n\n\t\tfor ( var i = parseInt( start ); i < parseInt( end ); i ++ ) {\n\n\t\t\tunroll += snippet.replace( /\\[ i \\]/g, '[ ' + i + ' ]' );\n\n\t\t}\n\n\t\treturn unroll;\n\n\t}\n\n\treturn string.replace( pattern, replace );\n\n}\n\nfunction WebGLProgram( renderer, extensions, code, material, shader, parameters, capabilities ) {\n\n\tvar gl = renderer.context;\n\n\tvar defines = material.defines;\n\n\tvar vertexShader = shader.vertexShader;\n\tvar fragmentShader = shader.fragmentShader;\n\n\tvar shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\n\n\tif ( parameters.shadowMapType === PCFShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\n\n\t} else if ( parameters.shadowMapType === PCFSoftShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\n\n\t}\n\n\tvar envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\tvar envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\tvar envMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( material.envMap.mapping ) {\n\n\t\t\tcase CubeReflectionMapping:\n\t\t\tcase CubeRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\t\tbreak;\n\n\t\t\tcase CubeUVReflectionMapping:\n\t\t\tcase CubeUVRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\tbreak;\n\n\t\t\tcase EquirectangularReflectionMapping:\n\t\t\tcase EquirectangularRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_EQUIREC';\n\t\t\t\tbreak;\n\n\t\t\tcase SphericalReflectionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_SPHERE';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tswitch ( material.envMap.mapping ) {\n\n\t\t\tcase CubeRefractionMapping:\n\t\t\tcase EquirectangularRefractionMapping:\n\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tswitch ( material.combine ) {\n\n\t\t\tcase MultiplyOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\t\t\t\tbreak;\n\n\t\t\tcase MixOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\n\t\t\t\tbreak;\n\n\t\t\tcase AddOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tvar gammaFactorDefine = ( renderer.gammaFactor > 0 ) ? renderer.gammaFactor : 1.0;\n\n\t// console.log( 'building new program ' );\n\n\t//\n\n\tvar customExtensions = capabilities.isWebGL2 ? '' : generateExtensions( material.extensions, parameters, extensions );\n\n\tvar customDefines = generateDefines( defines );\n\n\t//\n\n\tvar program = gl.createProgram();\n\n\tvar prefixVertex, prefixFragment;\n\n\tif ( material.isRawShaderMaterial ) {\n\n\t\tprefixVertex = [\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixVertex.length > 0 ) {\n\n\t\t\tprefixVertex += '\\n';\n\n\t\t}\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixFragment.length > 0 ) {\n\n\t\t\tprefixFragment += '\\n';\n\n\t\t}\n\n\t} else {\n\n\t\tprefixVertex = [\n\n\t\t\t'precision ' + parameters.precision + ' float;',\n\t\t\t'precision ' + parameters.precision + ' int;',\n\n\t\t\t'#define SHADER_NAME ' + shader.name,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '',\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t'#define MAX_BONES ' + parameters.maxBones,\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\tparameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.skinning ? '#define USE_SKINNING' : '',\n\t\t\tparameters.useVertexTexture ? '#define BONE_TEXTURE' : '',\n\n\t\t\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\n\t\t\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\tparameters.logarithmicDepthBuffer && ( capabilities.isWebGL2 || extensions.get( 'EXT_frag_depth' ) ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 modelMatrix;',\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform mat3 normalMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\n\t\t\t'attribute vec3 position;',\n\t\t\t'attribute vec3 normal;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'#ifdef USE_COLOR',\n\n\t\t\t'\tattribute vec3 color;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_MORPHTARGETS',\n\n\t\t\t'\tattribute vec3 morphTarget0;',\n\t\t\t'\tattribute vec3 morphTarget1;',\n\t\t\t'\tattribute vec3 morphTarget2;',\n\t\t\t'\tattribute vec3 morphTarget3;',\n\n\t\t\t'\t#ifdef USE_MORPHNORMALS',\n\n\t\t\t'\t\tattribute vec3 morphNormal0;',\n\t\t\t'\t\tattribute vec3 morphNormal1;',\n\t\t\t'\t\tattribute vec3 morphNormal2;',\n\t\t\t'\t\tattribute vec3 morphNormal3;',\n\n\t\t\t'\t#else',\n\n\t\t\t'\t\tattribute vec3 morphTarget4;',\n\t\t\t'\t\tattribute vec3 morphTarget5;',\n\t\t\t'\t\tattribute vec3 morphTarget6;',\n\t\t\t'\t\tattribute vec3 morphTarget7;',\n\n\t\t\t'\t#endif',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_SKINNING',\n\n\t\t\t'\tattribute vec4 skinIndex;',\n\t\t\t'\tattribute vec4 skinWeight;',\n\n\t\t\t'#endif',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\n\t\t\t'precision ' + parameters.precision + ' float;',\n\t\t\t'precision ' + parameters.precision + ' int;',\n\n\t\t\t'#define SHADER_NAME ' + shader.name,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.alphaTest ? '#define ALPHATEST ' + parameters.alphaTest + ( parameters.alphaTest % 1 ? '' : '.0' ) : '', // add '.0' if integer\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapTypeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapBlendingDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\n\t\t\tparameters.gradientMap ? '#define USE_GRADIENTMAP' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '',\n\n\t\t\tparameters.physicallyCorrectLights ? '#define PHYSICALLY_CORRECT_LIGHTS' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\tparameters.logarithmicDepthBuffer && ( capabilities.isWebGL2 || extensions.get( 'EXT_frag_depth' ) ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\tparameters.envMap && ( capabilities.isWebGL2 || extensions.get( 'EXT_shader_texture_lod' ) ) ? '#define TEXTURE_LOD_EXT' : '',\n\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '',\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '',\n\n\t\t\tparameters.dithering ? '#define DITHERING' : '',\n\n\t\t\t( parameters.outputEncoding || parameters.mapEncoding || parameters.envMapEncoding || parameters.emissiveMapEncoding ) ? ShaderChunk[ 'encodings_pars_fragment' ] : '', // this code is required here because it is used by the various encoding/decoding function defined below\n\t\t\tparameters.mapEncoding ? getTexelDecodingFunction( 'mapTexelToLinear', parameters.mapEncoding ) : '',\n\t\t\tparameters.envMapEncoding ? getTexelDecodingFunction( 'envMapTexelToLinear', parameters.envMapEncoding ) : '',\n\t\t\tparameters.emissiveMapEncoding ? getTexelDecodingFunction( 'emissiveMapTexelToLinear', parameters.emissiveMapEncoding ) : '',\n\t\t\tparameters.outputEncoding ? getTexelEncodingFunction( 'linearToOutputTexel', parameters.outputEncoding ) : '',\n\n\t\t\tparameters.depthPacking ? '#define DEPTH_PACKING ' + material.depthPacking : '',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t}\n\n\tvertexShader = parseIncludes( vertexShader );\n\tvertexShader = replaceLightNums( vertexShader, parameters );\n\tvertexShader = replaceClippingPlaneNums( vertexShader, parameters );\n\n\tfragmentShader = parseIncludes( fragmentShader );\n\tfragmentShader = replaceLightNums( fragmentShader, parameters );\n\tfragmentShader = replaceClippingPlaneNums( fragmentShader, parameters );\n\n\tvertexShader = unrollLoops( vertexShader );\n\tfragmentShader = unrollLoops( fragmentShader );\n\n\tif ( capabilities.isWebGL2 && ! material.isRawShaderMaterial ) {\n\n\t\tvar isGLSL3ShaderMaterial = false;\n\n\t\tvar versionRegex = /^\\s*#version\\s+300\\s+es\\s*\\n/;\n\n\t\tif ( material.isShaderMaterial &&\n\t\t\tvertexShader.match( versionRegex ) !== null &&\n\t\t\tfragmentShader.match( versionRegex ) !== null ) {\n\n\t\t\tisGLSL3ShaderMaterial = true;\n\n\t\t\tvertexShader = vertexShader.replace( versionRegex, '' );\n\t\t\tfragmentShader = fragmentShader.replace( versionRegex, '' );\n\n\t\t}\n\n\t\t// GLSL 3.0 conversion\n\t\tprefixVertex = [\n\t\t\t'#version 300 es\\n',\n\t\t\t'#define attribute in',\n\t\t\t'#define varying out',\n\t\t\t'#define texture2D texture'\n\t\t].join( '\\n' ) + '\\n' + prefixVertex;\n\n\t\tprefixFragment = [\n\t\t\t'#version 300 es\\n',\n\t\t\t'#define varying in',\n\t\t\tisGLSL3ShaderMaterial ? '' : 'out highp vec4 pc_fragColor;',\n\t\t\tisGLSL3ShaderMaterial ? '' : '#define gl_FragColor pc_fragColor',\n\t\t\t'#define gl_FragDepthEXT gl_FragDepth',\n\t\t\t'#define texture2D texture',\n\t\t\t'#define textureCube texture',\n\t\t\t'#define texture2DProj textureProj',\n\t\t\t'#define texture2DLodEXT textureLod',\n\t\t\t'#define texture2DProjLodEXT textureProjLod',\n\t\t\t'#define textureCubeLodEXT textureLod',\n\t\t\t'#define texture2DGradEXT textureGrad',\n\t\t\t'#define texture2DProjGradEXT textureProjGrad',\n\t\t\t'#define textureCubeGradEXT textureGrad'\n\t\t].join( '\\n' ) + '\\n' + prefixFragment;\n\n\t}\n\n\tvar vertexGlsl = prefixVertex + vertexShader;\n\tvar fragmentGlsl = prefixFragment + fragmentShader;\n\n\t// console.log( '*VERTEX*', vertexGlsl );\n\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\tvar glVertexShader = WebGLShader( gl, gl.VERTEX_SHADER, vertexGlsl );\n\tvar glFragmentShader = WebGLShader( gl, gl.FRAGMENT_SHADER, fragmentGlsl );\n\n\tgl.attachShader( program, glVertexShader );\n\tgl.attachShader( program, glFragmentShader );\n\n\t// Force a particular attribute to index 0.\n\n\tif ( material.index0AttributeName !== undefined ) {\n\n\t\tgl.bindAttribLocation( program, 0, material.index0AttributeName );\n\n\t} else if ( parameters.morphTargets === true ) {\n\n\t\t// programs with morphTargets displace position out of attribute 0\n\t\tgl.bindAttribLocation( program, 0, 'position' );\n\n\t}\n\n\tgl.linkProgram( program );\n\n\tvar programLog = gl.getProgramInfoLog( program ).trim();\n\tvar vertexLog = gl.getShaderInfoLog( glVertexShader ).trim();\n\tvar fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim();\n\n\tvar runnable = true;\n\tvar haveDiagnostics = true;\n\n\t// console.log( '**VERTEX**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( glVertexShader ) );\n\t// console.log( '**FRAGMENT**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( glFragmentShader ) );\n\n\tif ( gl.getProgramParameter( program, gl.LINK_STATUS ) === false ) {\n\n\t\trunnable = false;\n\n\t\tconsole.error( 'THREE.WebGLProgram: shader error: ', gl.getError(), 'gl.VALIDATE_STATUS', gl.getProgramParameter( program, gl.VALIDATE_STATUS ), 'gl.getProgramInfoLog', programLog, vertexLog, fragmentLog );\n\n\t} else if ( programLog !== '' ) {\n\n\t\tconsole.warn( 'THREE.WebGLProgram: gl.getProgramInfoLog()', programLog );\n\n\t} else if ( vertexLog === '' || fragmentLog === '' ) {\n\n\t\thaveDiagnostics = false;\n\n\t}\n\n\tif ( haveDiagnostics ) {\n\n\t\tthis.diagnostics = {\n\n\t\t\trunnable: runnable,\n\t\t\tmaterial: material,\n\n\t\t\tprogramLog: programLog,\n\n\t\t\tvertexShader: {\n\n\t\t\t\tlog: vertexLog,\n\t\t\t\tprefix: prefixVertex\n\n\t\t\t},\n\n\t\t\tfragmentShader: {\n\n\t\t\t\tlog: fragmentLog,\n\t\t\t\tprefix: prefixFragment\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t// clean up\n\n\tgl.deleteShader( glVertexShader );\n\tgl.deleteShader( glFragmentShader );\n\n\t// set up caching for uniform locations\n\n\tvar cachedUniforms;\n\n\tthis.getUniforms = function () {\n\n\t\tif ( cachedUniforms === undefined ) {\n\n\t\t\tcachedUniforms = new WebGLUniforms( gl, program, renderer );\n\n\t\t}\n\n\t\treturn cachedUniforms;\n\n\t};\n\n\t// set up caching for attribute locations\n\n\tvar cachedAttributes;\n\n\tthis.getAttributes = function () {\n\n\t\tif ( cachedAttributes === undefined ) {\n\n\t\t\tcachedAttributes = fetchAttributeLocations( gl, program );\n\n\t\t}\n\n\t\treturn cachedAttributes;\n\n\t};\n\n\t// free resource\n\n\tthis.destroy = function () {\n\n\t\tgl.deleteProgram( program );\n\t\tthis.program = undefined;\n\n\t};\n\n\t// DEPRECATED\n\n\tObject.defineProperties( this, {\n\n\t\tuniforms: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram: .uniforms is now .getUniforms().' );\n\t\t\t\treturn this.getUniforms();\n\n\t\t\t}\n\t\t},\n\n\t\tattributes: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram: .attributes is now .getAttributes().' );\n\t\t\t\treturn this.getAttributes();\n\n\t\t\t}\n\t\t}\n\n\t} );\n\n\n\t//\n\n\tthis.name = shader.name;\n\tthis.id = programIdCount ++;\n\tthis.code = code;\n\tthis.usedTimes = 1;\n\tthis.program = program;\n\tthis.vertexShader = glVertexShader;\n\tthis.fragmentShader = glFragmentShader;\n\n\treturn this;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLPrograms( renderer, extensions, capabilities ) {\n\n\tvar programs = [];\n\n\tvar shaderIDs = {\n\t\tMeshDepthMaterial: 'depth',\n\t\tMeshDistanceMaterial: 'distanceRGBA',\n\t\tMeshNormalMaterial: 'normal',\n\t\tMeshBasicMaterial: 'basic',\n\t\tMeshLambertMaterial: 'lambert',\n\t\tMeshPhongMaterial: 'phong',\n\t\tMeshToonMaterial: 'phong',\n\t\tMeshStandardMaterial: 'physical',\n\t\tMeshPhysicalMaterial: 'physical',\n\t\tLineBasicMaterial: 'basic',\n\t\tLineDashedMaterial: 'dashed',\n\t\tPointsMaterial: 'points',\n\t\tShadowMaterial: 'shadow',\n\t\tSpriteMaterial: 'sprite'\n\t};\n\n\tvar parameterNames = [\n\t\t\"precision\", \"supportsVertexTextures\", \"map\", \"mapEncoding\", \"envMap\", \"envMapMode\", \"envMapEncoding\",\n\t\t\"lightMap\", \"aoMap\", \"emissiveMap\", \"emissiveMapEncoding\", \"bumpMap\", \"normalMap\", \"objectSpaceNormalMap\", \"displacementMap\", \"specularMap\",\n\t\t\"roughnessMap\", \"metalnessMap\", \"gradientMap\",\n\t\t\"alphaMap\", \"combine\", \"vertexColors\", \"fog\", \"useFog\", \"fogExp\",\n\t\t\"flatShading\", \"sizeAttenuation\", \"logarithmicDepthBuffer\", \"skinning\",\n\t\t\"maxBones\", \"useVertexTexture\", \"morphTargets\", \"morphNormals\",\n\t\t\"maxMorphTargets\", \"maxMorphNormals\", \"premultipliedAlpha\",\n\t\t\"numDirLights\", \"numPointLights\", \"numSpotLights\", \"numHemiLights\", \"numRectAreaLights\",\n\t\t\"shadowMapEnabled\", \"shadowMapType\", \"toneMapping\", 'physicallyCorrectLights',\n\t\t\"alphaTest\", \"doubleSided\", \"flipSided\", \"numClippingPlanes\", \"numClipIntersection\", \"depthPacking\", \"dithering\"\n\t];\n\n\n\tfunction allocateBones( object ) {\n\n\t\tvar skeleton = object.skeleton;\n\t\tvar bones = skeleton.bones;\n\n\t\tif ( capabilities.floatVertexTextures ) {\n\n\t\t\treturn 1024;\n\n\t\t} else {\n\n\t\t\t// default for when object is not specified\n\t\t\t// ( for example when prebuilding shader to be used with multiple objects )\n\t\t\t//\n\t\t\t//  - leave some extra space for other uniforms\n\t\t\t//  - limit here is ANGLE's 254 max uniform vectors\n\t\t\t//    (up to 54 should be safe)\n\n\t\t\tvar nVertexUniforms = capabilities.maxVertexUniforms;\n\t\t\tvar nVertexMatrices = Math.floor( ( nVertexUniforms - 20 ) / 4 );\n\n\t\t\tvar maxBones = Math.min( nVertexMatrices, bones.length );\n\n\t\t\tif ( maxBones < bones.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Skeleton has ' + bones.length + ' bones. This GPU supports ' + maxBones + '.' );\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\treturn maxBones;\n\n\t\t}\n\n\t}\n\n\tfunction getTextureEncodingFromMap( map, gammaOverrideLinear ) {\n\n\t\tvar encoding;\n\n\t\tif ( ! map ) {\n\n\t\t\tencoding = LinearEncoding;\n\n\t\t} else if ( map.isTexture ) {\n\n\t\t\tencoding = map.encoding;\n\n\t\t} else if ( map.isWebGLRenderTarget ) {\n\n\t\t\tconsole.warn( \"THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\tencoding = map.texture.encoding;\n\n\t\t}\n\n\t\t// add backwards compatibility for WebGLRenderer.gammaInput/gammaOutput parameter, should probably be removed at some point.\n\t\tif ( encoding === LinearEncoding && gammaOverrideLinear ) {\n\n\t\t\tencoding = GammaEncoding;\n\n\t\t}\n\n\t\treturn encoding;\n\n\t}\n\n\tthis.getParameters = function ( material, lights, shadows, fog, nClipPlanes, nClipIntersection, object ) {\n\n\t\tvar shaderID = shaderIDs[ material.type ];\n\n\t\t// heuristics to create shader parameters according to lights in the scene\n\t\t// (not to blow over maxLights budget)\n\n\t\tvar maxBones = object.isSkinnedMesh ? allocateBones( object ) : 0;\n\t\tvar precision = capabilities.precision;\n\n\t\tif ( material.precision !== null ) {\n\n\t\t\tprecision = capabilities.getMaxPrecision( material.precision );\n\n\t\t\tif ( precision !== material.precision ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar currentRenderTarget = renderer.getRenderTarget();\n\n\t\tvar parameters = {\n\n\t\t\tshaderID: shaderID,\n\n\t\t\tprecision: precision,\n\t\t\tsupportsVertexTextures: capabilities.vertexTextures,\n\t\t\toutputEncoding: getTextureEncodingFromMap( ( ! currentRenderTarget ) ? null : currentRenderTarget.texture, renderer.gammaOutput ),\n\t\t\tmap: !! material.map,\n\t\t\tmapEncoding: getTextureEncodingFromMap( material.map, renderer.gammaInput ),\n\t\t\tenvMap: !! material.envMap,\n\t\t\tenvMapMode: material.envMap && material.envMap.mapping,\n\t\t\tenvMapEncoding: getTextureEncodingFromMap( material.envMap, renderer.gammaInput ),\n\t\t\tenvMapCubeUV: ( !! material.envMap ) && ( ( material.envMap.mapping === CubeUVReflectionMapping ) || ( material.envMap.mapping === CubeUVRefractionMapping ) ),\n\t\t\tlightMap: !! material.lightMap,\n\t\t\taoMap: !! material.aoMap,\n\t\t\temissiveMap: !! material.emissiveMap,\n\t\t\temissiveMapEncoding: getTextureEncodingFromMap( material.emissiveMap, renderer.gammaInput ),\n\t\t\tbumpMap: !! material.bumpMap,\n\t\t\tnormalMap: !! material.normalMap,\n\t\t\tobjectSpaceNormalMap: material.normalMapType === ObjectSpaceNormalMap,\n\t\t\tdisplacementMap: !! material.displacementMap,\n\t\t\troughnessMap: !! material.roughnessMap,\n\t\t\tmetalnessMap: !! material.metalnessMap,\n\t\t\tspecularMap: !! material.specularMap,\n\t\t\talphaMap: !! material.alphaMap,\n\n\t\t\tgradientMap: !! material.gradientMap,\n\n\t\t\tcombine: material.combine,\n\n\t\t\tvertexColors: material.vertexColors,\n\n\t\t\tfog: !! fog,\n\t\t\tuseFog: material.fog,\n\t\t\tfogExp: ( fog && fog.isFogExp2 ),\n\n\t\t\tflatShading: material.flatShading,\n\n\t\t\tsizeAttenuation: material.sizeAttenuation,\n\t\t\tlogarithmicDepthBuffer: capabilities.logarithmicDepthBuffer,\n\n\t\t\tskinning: material.skinning && maxBones > 0,\n\t\t\tmaxBones: maxBones,\n\t\t\tuseVertexTexture: capabilities.floatVertexTextures,\n\n\t\t\tmorphTargets: material.morphTargets,\n\t\t\tmorphNormals: material.morphNormals,\n\t\t\tmaxMorphTargets: renderer.maxMorphTargets,\n\t\t\tmaxMorphNormals: renderer.maxMorphNormals,\n\n\t\t\tnumDirLights: lights.directional.length,\n\t\t\tnumPointLights: lights.point.length,\n\t\t\tnumSpotLights: lights.spot.length,\n\t\t\tnumRectAreaLights: lights.rectArea.length,\n\t\t\tnumHemiLights: lights.hemi.length,\n\n\t\t\tnumClippingPlanes: nClipPlanes,\n\t\t\tnumClipIntersection: nClipIntersection,\n\n\t\t\tdithering: material.dithering,\n\n\t\t\tshadowMapEnabled: renderer.shadowMap.enabled && object.receiveShadow && shadows.length > 0,\n\t\t\tshadowMapType: renderer.shadowMap.type,\n\n\t\t\ttoneMapping: renderer.toneMapping,\n\t\t\tphysicallyCorrectLights: renderer.physicallyCorrectLights,\n\n\t\t\tpremultipliedAlpha: material.premultipliedAlpha,\n\n\t\t\talphaTest: material.alphaTest,\n\t\t\tdoubleSided: material.side === DoubleSide,\n\t\t\tflipSided: material.side === BackSide,\n\n\t\t\tdepthPacking: ( material.depthPacking !== undefined ) ? material.depthPacking : false\n\n\t\t};\n\n\t\treturn parameters;\n\n\t};\n\n\tthis.getProgramCode = function ( material, parameters ) {\n\n\t\tvar array = [];\n\n\t\tif ( parameters.shaderID ) {\n\n\t\t\tarray.push( parameters.shaderID );\n\n\t\t} else {\n\n\t\t\tarray.push( material.fragmentShader );\n\t\t\tarray.push( material.vertexShader );\n\n\t\t}\n\n\t\tif ( material.defines !== undefined ) {\n\n\t\t\tfor ( var name in material.defines ) {\n\n\t\t\t\tarray.push( name );\n\t\t\t\tarray.push( material.defines[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( var i = 0; i < parameterNames.length; i ++ ) {\n\n\t\t\tarray.push( parameters[ parameterNames[ i ] ] );\n\n\t\t}\n\n\t\tarray.push( material.onBeforeCompile.toString() );\n\n\t\tarray.push( renderer.gammaOutput );\n\n\t\treturn array.join();\n\n\t};\n\n\tthis.acquireProgram = function ( material, shader, parameters, code ) {\n\n\t\tvar program;\n\n\t\t// Check if code has been already compiled\n\t\tfor ( var p = 0, pl = programs.length; p < pl; p ++ ) {\n\n\t\t\tvar programInfo = programs[ p ];\n\n\t\t\tif ( programInfo.code === code ) {\n\n\t\t\t\tprogram = programInfo;\n\t\t\t\t++ program.usedTimes;\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( program === undefined ) {\n\n\t\t\tprogram = new WebGLProgram( renderer, extensions, code, material, shader, parameters, capabilities );\n\t\t\tprograms.push( program );\n\n\t\t}\n\n\t\treturn program;\n\n\t};\n\n\tthis.releaseProgram = function ( program ) {\n\n\t\tif ( -- program.usedTimes === 0 ) {\n\n\t\t\t// Remove from unordered set\n\t\t\tvar i = programs.indexOf( program );\n\t\t\tprograms[ i ] = programs[ programs.length - 1 ];\n\t\t\tprograms.pop();\n\n\t\t\t// Free WebGL resources\n\t\t\tprogram.destroy();\n\n\t\t}\n\n\t};\n\n\t// Exposed for resource monitoring & error feedback via renderer.info:\n\tthis.programs = programs;\n\n}\n\n/**\n * @author fordacious / fordacious.github.io\n */\n\nfunction WebGLProperties() {\n\n\tvar properties = new WeakMap();\n\n\tfunction get( object ) {\n\n\t\tvar map = properties.get( object );\n\n\t\tif ( map === undefined ) {\n\n\t\t\tmap = {};\n\t\t\tproperties.set( object, map );\n\n\t\t}\n\n\t\treturn map;\n\n\t}\n\n\tfunction remove( object ) {\n\n\t\tproperties.delete( object );\n\n\t}\n\n\tfunction update( object, key, value ) {\n\n\t\tproperties.get( object )[ key ] = value;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tproperties = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction painterSortStable( a, b ) {\n\n\tif ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.program && b.program && a.program !== b.program ) {\n\n\t\treturn a.program.id - b.program.id;\n\n\t} else if ( a.material.id !== b.material.id ) {\n\n\t\treturn a.material.id - b.material.id;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn a.z - b.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\nfunction reversePainterSortStable( a, b ) {\n\n\tif ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} if ( a.z !== b.z ) {\n\n\t\treturn b.z - a.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\n\nfunction WebGLRenderList() {\n\n\tvar renderItems = [];\n\tvar renderItemsIndex = 0;\n\n\tvar opaque = [];\n\tvar transparent = [];\n\n\tfunction init() {\n\n\t\trenderItemsIndex = 0;\n\n\t\topaque.length = 0;\n\t\ttransparent.length = 0;\n\n\t}\n\n\tfunction push( object, geometry, material, z, group ) {\n\n\t\tvar renderItem = renderItems[ renderItemsIndex ];\n\n\t\tif ( renderItem === undefined ) {\n\n\t\t\trenderItem = {\n\t\t\t\tid: object.id,\n\t\t\t\tobject: object,\n\t\t\t\tgeometry: geometry,\n\t\t\t\tmaterial: material,\n\t\t\t\tprogram: material.program,\n\t\t\t\trenderOrder: object.renderOrder,\n\t\t\t\tz: z,\n\t\t\t\tgroup: group\n\t\t\t};\n\n\t\t\trenderItems[ renderItemsIndex ] = renderItem;\n\n\t\t} else {\n\n\t\t\trenderItem.id = object.id;\n\t\t\trenderItem.object = object;\n\t\t\trenderItem.geometry = geometry;\n\t\t\trenderItem.material = material;\n\t\t\trenderItem.program = material.program;\n\t\t\trenderItem.renderOrder = object.renderOrder;\n\t\t\trenderItem.z = z;\n\t\t\trenderItem.group = group;\n\n\t\t}\n\n\n\t\t( material.transparent === true ? transparent : opaque ).push( renderItem );\n\n\t\trenderItemsIndex ++;\n\n\t}\n\n\tfunction sort() {\n\n\t\tif ( opaque.length > 1 ) opaque.sort( painterSortStable );\n\t\tif ( transparent.length > 1 ) transparent.sort( reversePainterSortStable );\n\n\t}\n\n\treturn {\n\t\topaque: opaque,\n\t\ttransparent: transparent,\n\n\t\tinit: init,\n\t\tpush: push,\n\n\t\tsort: sort\n\t};\n\n}\n\nfunction WebGLRenderLists() {\n\n\tvar lists = {};\n\n\tfunction get( scene, camera ) {\n\n\t\tvar hash = scene.id + ',' + camera.id;\n\t\tvar list = lists[ hash ];\n\n\t\tif ( list === undefined ) {\n\n\t\t\t// console.log( 'THREE.WebGLRenderLists:', hash );\n\n\t\t\tlist = new WebGLRenderList();\n\t\t\tlists[ hash ] = list;\n\n\t\t}\n\n\t\treturn list;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tlists = {};\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction UniformsCache() {\n\n\tvar lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tvar uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\n\t\t\t\t\t\tshadow: false,\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tconeCos: 0,\n\t\t\t\t\t\tpenumbraCos: 0,\n\t\t\t\t\t\tdecay: 0,\n\n\t\t\t\t\t\tshadow: false,\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tdecay: 0,\n\n\t\t\t\t\t\tshadow: false,\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2(),\n\t\t\t\t\t\tshadowCameraNear: 1,\n\t\t\t\t\t\tshadowCameraFar: 1000\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tskyColor: new Color(),\n\t\t\t\t\t\tgroundColor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'RectAreaLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\thalfWidth: new Vector3(),\n\t\t\t\t\t\thalfHeight: new Vector3()\n\t\t\t\t\t\t// TODO (abelnation): set RectAreaLight shadow uniforms\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\nvar count = 0;\n\nfunction WebGLLights() {\n\n\tvar cache = new UniformsCache();\n\n\tvar state = {\n\n\t\tid: count ++,\n\n\t\thash: {\n\t\t\tstateID: - 1,\n\t\t\tdirectionalLength: - 1,\n\t\t\tpointLength: - 1,\n\t\t\tspotLength: - 1,\n\t\t\trectAreaLength: - 1,\n\t\t\themiLength: - 1,\n\t\t\tshadowsLength: - 1\n\t\t},\n\n\t\tambient: [ 0, 0, 0 ],\n\t\tdirectional: [],\n\t\tdirectionalShadowMap: [],\n\t\tdirectionalShadowMatrix: [],\n\t\tspot: [],\n\t\tspotShadowMap: [],\n\t\tspotShadowMatrix: [],\n\t\trectArea: [],\n\t\tpoint: [],\n\t\tpointShadowMap: [],\n\t\tpointShadowMatrix: [],\n\t\themi: []\n\n\t};\n\n\tvar vector3 = new Vector3();\n\tvar matrix4 = new Matrix4();\n\tvar matrix42 = new Matrix4();\n\n\tfunction setup( lights, shadows, camera ) {\n\n\t\tvar r = 0, g = 0, b = 0;\n\n\t\tvar directionalLength = 0;\n\t\tvar pointLength = 0;\n\t\tvar spotLength = 0;\n\t\tvar rectAreaLength = 0;\n\t\tvar hemiLength = 0;\n\n\t\tvar viewMatrix = camera.matrixWorldInverse;\n\n\t\tfor ( var i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tvar light = lights[ i ];\n\n\t\t\tvar color = light.color;\n\t\t\tvar intensity = light.intensity;\n\t\t\tvar distance = light.distance;\n\n\t\t\tvar shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\n\n\t\t\tif ( light.isAmbientLight ) {\n\n\t\t\t\tr += color.r * intensity;\n\t\t\t\tg += color.g * intensity;\n\t\t\t\tb += color.b * intensity;\n\n\t\t\t} else if ( light.isDirectionalLight ) {\n\n\t\t\t\tvar uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tuniforms.shadow = light.castShadow;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tvar shadow = light.shadow;\n\n\t\t\t\t\tuniforms.shadowBias = shadow.bias;\n\t\t\t\t\tuniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tuniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t}\n\n\t\t\t\tstate.directionalShadowMap[ directionalLength ] = shadowMap;\n\t\t\t\tstate.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\n\t\t\t\tstate.directional[ directionalLength ] = uniforms;\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tvar uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.distance = distance;\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tuniforms.coneCos = Math.cos( light.angle );\n\t\t\t\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\n\t\t\t\tuniforms.decay = ( light.distance === 0 ) ? 0.0 : light.decay;\n\n\t\t\t\tuniforms.shadow = light.castShadow;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tvar shadow = light.shadow;\n\n\t\t\t\t\tuniforms.shadowBias = shadow.bias;\n\t\t\t\t\tuniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tuniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t}\n\n\t\t\t\tstate.spotShadowMap[ spotLength ] = shadowMap;\n\t\t\t\tstate.spotShadowMatrix[ spotLength ] = light.shadow.matrix;\n\t\t\t\tstate.spot[ spotLength ] = uniforms;\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tvar uniforms = cache.get( light );\n\n\t\t\t\t// (a) intensity is the total visible light emitted\n\t\t\t\t//uniforms.color.copy( color ).multiplyScalar( intensity / ( light.width * light.height * Math.PI ) );\n\n\t\t\t\t// (b) intensity is the brightness of the light\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\t// extract local rotation of light to derive width/height half vectors\n\t\t\t\tmatrix42.identity();\n\t\t\t\tmatrix4.copy( light.matrixWorld );\n\t\t\t\tmatrix4.premultiply( viewMatrix );\n\t\t\t\tmatrix42.extractRotation( matrix4 );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tuniforms.halfWidth.applyMatrix4( matrix42 );\n\t\t\t\tuniforms.halfHeight.applyMatrix4( matrix42 );\n\n\t\t\t\t// TODO (abelnation): RectAreaLight distance?\n\t\t\t\t// uniforms.distance = distance;\n\n\t\t\t\tstate.rectArea[ rectAreaLength ] = uniforms;\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tvar uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\tuniforms.decay = ( light.distance === 0 ) ? 0.0 : light.decay;\n\n\t\t\t\tuniforms.shadow = light.castShadow;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tvar shadow = light.shadow;\n\n\t\t\t\t\tuniforms.shadowBias = shadow.bias;\n\t\t\t\t\tuniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tuniforms.shadowMapSize = shadow.mapSize;\n\t\t\t\t\tuniforms.shadowCameraNear = shadow.camera.near;\n\t\t\t\t\tuniforms.shadowCameraFar = shadow.camera.far;\n\n\t\t\t\t}\n\n\t\t\t\tstate.pointShadowMap[ pointLength ] = shadowMap;\n\t\t\t\tstate.pointShadowMatrix[ pointLength ] = light.shadow.matrix;\n\t\t\t\tstate.point[ pointLength ] = uniforms;\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tvar uniforms = cache.get( light );\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\t\t\t\tuniforms.direction.normalize();\n\n\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity );\n\n\t\t\t\tstate.hemi[ hemiLength ] = uniforms;\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.ambient[ 0 ] = r;\n\t\tstate.ambient[ 1 ] = g;\n\t\tstate.ambient[ 2 ] = b;\n\n\t\tstate.directional.length = directionalLength;\n\t\tstate.spot.length = spotLength;\n\t\tstate.rectArea.length = rectAreaLength;\n\t\tstate.point.length = pointLength;\n\t\tstate.hemi.length = hemiLength;\n\n\t\tstate.hash.stateID = state.id;\n\t\tstate.hash.directionalLength = directionalLength;\n\t\tstate.hash.pointLength = pointLength;\n\t\tstate.hash.spotLength = spotLength;\n\t\tstate.hash.rectAreaLength = rectAreaLength;\n\t\tstate.hash.hemiLength = hemiLength;\n\t\tstate.hash.shadowsLength = shadows.length;\n\n\t}\n\n\treturn {\n\t\tsetup: setup,\n\t\tstate: state\n\t};\n\n}\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WebGLRenderState() {\n\n\tvar lights = new WebGLLights();\n\n\tvar lightsArray = [];\n\tvar shadowsArray = [];\n\n\tfunction init() {\n\n\t\tlightsArray.length = 0;\n\t\tshadowsArray.length = 0;\n\n\t}\n\n\tfunction pushLight( light ) {\n\n\t\tlightsArray.push( light );\n\n\t}\n\n\tfunction pushShadow( shadowLight ) {\n\n\t\tshadowsArray.push( shadowLight );\n\n\t}\n\n\tfunction setupLights( camera ) {\n\n\t\tlights.setup( lightsArray, shadowsArray, camera );\n\n\t}\n\n\tvar state = {\n\t\tlightsArray: lightsArray,\n\t\tshadowsArray: shadowsArray,\n\n\t\tlights: lights\n\t};\n\n\treturn {\n\t\tinit: init,\n\t\tstate: state,\n\t\tsetupLights: setupLights,\n\n\t\tpushLight: pushLight,\n\t\tpushShadow: pushShadow\n\t};\n\n}\n\nfunction WebGLRenderStates() {\n\n\tvar renderStates = {};\n\n\tfunction get( scene, camera ) {\n\n\t\tvar renderState;\n\n\t\tif ( renderStates[ scene.id ] === undefined ) {\n\n\t\t\trenderState = new WebGLRenderState();\n\t\t\trenderStates[ scene.id ] = {};\n\t\t\trenderStates[ scene.id ][ camera.id ] = renderState;\n\n\t\t} else {\n\n\t\t\tif ( renderStates[ scene.id ][ camera.id ] === undefined ) {\n\n\t\t\t\trenderState = new WebGLRenderState();\n\t\t\t\trenderStates[ scene.id ][ camera.id ] = renderState;\n\n\t\t\t} else {\n\n\t\t\t\trenderState = renderStates[ scene.id ][ camera.id ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn renderState;\n\n\t}\n\n\tfunction dispose() {\n\n\t\trenderStates = {};\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author bhouston / https://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n *\n *  opacity: <float>,\n *\n *  map: new THREE.Texture( <Image> ),\n *\n *  alphaMap: new THREE.Texture( <Image> ),\n *\n *  displacementMap: new THREE.Texture( <Image> ),\n *  displacementScale: <float>,\n *  displacementBias: <float>,\n *\n *  wireframe: <boolean>,\n *  wireframeLinewidth: <float>\n * }\n */\n\nfunction MeshDepthMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshDepthMaterial';\n\n\tthis.depthPacking = BasicDepthPacking;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshDepthMaterial.prototype = Object.create( Material.prototype );\nMeshDepthMaterial.prototype.constructor = MeshDepthMaterial;\n\nMeshDepthMaterial.prototype.isMeshDepthMaterial = true;\n\nMeshDepthMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.depthPacking = source.depthPacking;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\treturn this;\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n *\n *  referencePosition: <float>,\n *  nearDistance: <float>,\n *  farDistance: <float>,\n *\n *  skinning: <bool>,\n *  morphTargets: <bool>,\n *\n *  map: new THREE.Texture( <Image> ),\n *\n *  alphaMap: new THREE.Texture( <Image> ),\n *\n *  displacementMap: new THREE.Texture( <Image> ),\n *  displacementScale: <float>,\n *  displacementBias: <float>\n *\n * }\n */\n\nfunction MeshDistanceMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshDistanceMaterial';\n\n\tthis.referencePosition = new Vector3();\n\tthis.nearDistance = 1;\n\tthis.farDistance = 1000;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.fog = false;\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshDistanceMaterial.prototype = Object.create( Material.prototype );\nMeshDistanceMaterial.prototype.constructor = MeshDistanceMaterial;\n\nMeshDistanceMaterial.prototype.isMeshDistanceMaterial = true;\n\nMeshDistanceMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.referencePosition.copy( source.referencePosition );\n\tthis.nearDistance = source.nearDistance;\n\tthis.farDistance = source.farDistance;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\treturn this;\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLShadowMap( _renderer, _objects, maxTextureSize ) {\n\n\tvar _frustum = new Frustum(),\n\t\t_projScreenMatrix = new Matrix4(),\n\n\t\t_shadowMapSize = new Vector2(),\n\t\t_maxShadowMapSize = new Vector2( maxTextureSize, maxTextureSize ),\n\n\t\t_lookTarget = new Vector3(),\n\t\t_lightPositionWorld = new Vector3(),\n\n\t\t_MorphingFlag = 1,\n\t\t_SkinningFlag = 2,\n\n\t\t_NumberOfMaterialVariants = ( _MorphingFlag | _SkinningFlag ) + 1,\n\n\t\t_depthMaterials = new Array( _NumberOfMaterialVariants ),\n\t\t_distanceMaterials = new Array( _NumberOfMaterialVariants ),\n\n\t\t_materialCache = {};\n\n\tvar shadowSide = { 0: BackSide, 1: FrontSide, 2: DoubleSide };\n\n\tvar cubeDirections = [\n\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\n\t];\n\n\tvar cubeUps = [\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\n\t];\n\n\tvar cube2DViewPorts = [\n\t\tnew Vector4(), new Vector4(), new Vector4(),\n\t\tnew Vector4(), new Vector4(), new Vector4()\n\t];\n\n\t// init\n\n\tfor ( var i = 0; i !== _NumberOfMaterialVariants; ++ i ) {\n\n\t\tvar useMorphing = ( i & _MorphingFlag ) !== 0;\n\t\tvar useSkinning = ( i & _SkinningFlag ) !== 0;\n\n\t\tvar depthMaterial = new MeshDepthMaterial( {\n\n\t\t\tdepthPacking: RGBADepthPacking,\n\n\t\t\tmorphTargets: useMorphing,\n\t\t\tskinning: useSkinning\n\n\t\t} );\n\n\t\t_depthMaterials[ i ] = depthMaterial;\n\n\t\t//\n\n\t\tvar distanceMaterial = new MeshDistanceMaterial( {\n\n\t\t\tmorphTargets: useMorphing,\n\t\t\tskinning: useSkinning\n\n\t\t} );\n\n\t\t_distanceMaterials[ i ] = distanceMaterial;\n\n\t}\n\n\t//\n\n\tvar scope = this;\n\n\tthis.enabled = false;\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis.type = PCFShadowMap;\n\n\tthis.render = function ( lights, scene, camera ) {\n\n\t\tif ( scope.enabled === false ) return;\n\t\tif ( scope.autoUpdate === false && scope.needsUpdate === false ) return;\n\n\t\tif ( lights.length === 0 ) return;\n\n\t\t// TODO Clean up (needed in case of contextlost)\n\t\tvar _gl = _renderer.context;\n\t\tvar _state = _renderer.state;\n\n\t\t// Set GL state for depth map.\n\t\t_state.disable( _gl.BLEND );\n\t\t_state.buffers.color.setClear( 1, 1, 1, 1 );\n\t\t_state.buffers.depth.setTest( true );\n\t\t_state.setScissorTest( false );\n\n\t\t// render depth map\n\n\t\tvar faceCount;\n\n\t\tfor ( var i = 0, il = lights.length; i < il; i ++ ) {\n\n\t\t\tvar light = lights[ i ];\n\t\t\tvar shadow = light.shadow;\n\t\t\tvar isPointLight = light && light.isPointLight;\n\n\t\t\tif ( shadow === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tvar shadowCamera = shadow.camera;\n\n\t\t\t_shadowMapSize.copy( shadow.mapSize );\n\t\t\t_shadowMapSize.min( _maxShadowMapSize );\n\n\t\t\tif ( isPointLight ) {\n\n\t\t\t\tvar vpWidth = _shadowMapSize.x;\n\t\t\t\tvar vpHeight = _shadowMapSize.y;\n\n\t\t\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t\t\t// following orientation:\n\t\t\t\t//\n\t\t\t\t//  xzXZ\n\t\t\t\t//   y Y\n\t\t\t\t//\n\t\t\t\t// X - Positive x direction\n\t\t\t\t// x - Negative x direction\n\t\t\t\t// Y - Positive y direction\n\t\t\t\t// y - Negative y direction\n\t\t\t\t// Z - Positive z direction\n\t\t\t\t// z - Negative z direction\n\n\t\t\t\t// positive X\n\t\t\t\tcube2DViewPorts[ 0 ].set( vpWidth * 2, vpHeight, vpWidth, vpHeight );\n\t\t\t\t// negative X\n\t\t\t\tcube2DViewPorts[ 1 ].set( 0, vpHeight, vpWidth, vpHeight );\n\t\t\t\t// positive Z\n\t\t\t\tcube2DViewPorts[ 2 ].set( vpWidth * 3, vpHeight, vpWidth, vpHeight );\n\t\t\t\t// negative Z\n\t\t\t\tcube2DViewPorts[ 3 ].set( vpWidth, vpHeight, vpWidth, vpHeight );\n\t\t\t\t// positive Y\n\t\t\t\tcube2DViewPorts[ 4 ].set( vpWidth * 3, 0, vpWidth, vpHeight );\n\t\t\t\t// negative Y\n\t\t\t\tcube2DViewPorts[ 5 ].set( vpWidth, 0, vpWidth, vpHeight );\n\n\t\t\t\t_shadowMapSize.x *= 4.0;\n\t\t\t\t_shadowMapSize.y *= 2.0;\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null ) {\n\n\t\t\t\tvar pars = { minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat };\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + \".shadowMap\";\n\n\t\t\t\tshadowCamera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\tif ( shadow.isSpotLightShadow ) {\n\n\t\t\t\tshadow.update( light );\n\n\t\t\t}\n\n\t\t\tvar shadowMap = shadow.map;\n\t\t\tvar shadowMatrix = shadow.matrix;\n\n\t\t\t_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\t\tshadowCamera.position.copy( _lightPositionWorld );\n\n\t\t\tif ( isPointLight ) {\n\n\t\t\t\tfaceCount = 6;\n\n\t\t\t\t// for point lights we set the shadow matrix to be a translation-only matrix\n\t\t\t\t// equal to inverse of the light's position\n\n\t\t\t\tshadowMatrix.makeTranslation( - _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z );\n\n\t\t\t} else {\n\n\t\t\t\tfaceCount = 1;\n\n\t\t\t\t_lookTarget.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tshadowCamera.lookAt( _lookTarget );\n\t\t\t\tshadowCamera.updateMatrixWorld();\n\n\t\t\t\t// compute shadow matrix\n\n\t\t\t\tshadowMatrix.set(\n\t\t\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t\t\t);\n\n\t\t\t\tshadowMatrix.multiply( shadowCamera.projectionMatrix );\n\t\t\t\tshadowMatrix.multiply( shadowCamera.matrixWorldInverse );\n\n\t\t\t}\n\n\t\t\t_renderer.setRenderTarget( shadowMap );\n\t\t\t_renderer.clear();\n\n\t\t\t// render shadow map for each cube face (if omni-directional) or\n\t\t\t// run a single pass if not\n\n\t\t\tfor ( var face = 0; face < faceCount; face ++ ) {\n\n\t\t\t\tif ( isPointLight ) {\n\n\t\t\t\t\t_lookTarget.copy( shadowCamera.position );\n\t\t\t\t\t_lookTarget.add( cubeDirections[ face ] );\n\t\t\t\t\tshadowCamera.up.copy( cubeUps[ face ] );\n\t\t\t\t\tshadowCamera.lookAt( _lookTarget );\n\t\t\t\t\tshadowCamera.updateMatrixWorld();\n\n\t\t\t\t\tvar vpDimensions = cube2DViewPorts[ face ];\n\t\t\t\t\t_state.viewport( vpDimensions );\n\n\t\t\t\t}\n\n\t\t\t\t// update camera matrices and frustum\n\n\t\t\t\t_projScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\t\t\t_frustum.setFromMatrix( _projScreenMatrix );\n\n\t\t\t\t// set object matrices & frustum culling\n\n\t\t\t\trenderObject( scene, camera, shadowCamera, isPointLight );\n\n\t\t\t}\n\n\t\t}\n\n\t\tscope.needsUpdate = false;\n\n\t};\n\n\tfunction getDepthMaterial( object, material, isPointLight, lightPositionWorld, shadowCameraNear, shadowCameraFar ) {\n\n\t\tvar geometry = object.geometry;\n\n\t\tvar result = null;\n\n\t\tvar materialVariants = _depthMaterials;\n\t\tvar customMaterial = object.customDepthMaterial;\n\n\t\tif ( isPointLight ) {\n\n\t\t\tmaterialVariants = _distanceMaterials;\n\t\t\tcustomMaterial = object.customDistanceMaterial;\n\n\t\t}\n\n\t\tif ( ! customMaterial ) {\n\n\t\t\tvar useMorphing = false;\n\n\t\t\tif ( material.morphTargets ) {\n\n\t\t\t\tif ( geometry && geometry.isBufferGeometry ) {\n\n\t\t\t\t\tuseMorphing = geometry.morphAttributes && geometry.morphAttributes.position && geometry.morphAttributes.position.length > 0;\n\n\t\t\t\t} else if ( geometry && geometry.isGeometry ) {\n\n\t\t\t\t\tuseMorphing = geometry.morphTargets && geometry.morphTargets.length > 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( object.isSkinnedMesh && material.skinning === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:', object );\n\n\t\t\t}\n\n\t\t\tvar useSkinning = object.isSkinnedMesh && material.skinning;\n\n\t\t\tvar variantIndex = 0;\n\n\t\t\tif ( useMorphing ) variantIndex |= _MorphingFlag;\n\t\t\tif ( useSkinning ) variantIndex |= _SkinningFlag;\n\n\t\t\tresult = materialVariants[ variantIndex ];\n\n\t\t} else {\n\n\t\t\tresult = customMaterial;\n\n\t\t}\n\n\t\tif ( _renderer.localClippingEnabled &&\n\t\t\t\tmaterial.clipShadows === true &&\n\t\t\t\tmaterial.clippingPlanes.length !== 0 ) {\n\n\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t// appropriate state\n\n\t\t\tvar keyA = result.uuid, keyB = material.uuid;\n\n\t\t\tvar materialsForVariant = _materialCache[ keyA ];\n\n\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t}\n\n\t\t\tvar cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\n\t\t\t}\n\n\t\t\tresult = cachedMaterial;\n\n\t\t}\n\n\t\tresult.visible = material.visible;\n\t\tresult.wireframe = material.wireframe;\n\n\t\tresult.side = ( material.shadowSide != null ) ? material.shadowSide : shadowSide[ material.side ];\n\n\t\tresult.clipShadows = material.clipShadows;\n\t\tresult.clippingPlanes = material.clippingPlanes;\n\t\tresult.clipIntersection = material.clipIntersection;\n\n\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\n\t\tresult.linewidth = material.linewidth;\n\n\t\tif ( isPointLight && result.isMeshDistanceMaterial ) {\n\n\t\t\tresult.referencePosition.copy( lightPositionWorld );\n\t\t\tresult.nearDistance = shadowCameraNear;\n\t\t\tresult.farDistance = shadowCameraFar;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tfunction renderObject( object, camera, shadowCamera, isPointLight ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tvar visible = object.layers.test( camera.layers );\n\n\t\tif ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {\n\n\t\t\tif ( object.castShadow && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) {\n\n\t\t\t\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\n\n\t\t\t\tvar geometry = _objects.update( object );\n\t\t\t\tvar material = object.material;\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tvar groups = geometry.groups;\n\n\t\t\t\t\tfor ( var k = 0, kl = groups.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\tvar group = groups[ k ];\n\t\t\t\t\t\tvar groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\tvar depthMaterial = getDepthMaterial( object, groupMaterial, isPointLight, _lightPositionWorld, shadowCamera.near, shadowCamera.far );\n\t\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\tvar depthMaterial = getDepthMaterial( object, material, isPointLight, _lightPositionWorld, shadowCamera.near, shadowCamera.far );\n\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar children = object.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\trenderObject( children[ i ], camera, shadowCamera, isPointLight );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLState( gl, extensions, utils, capabilities ) {\n\n\tfunction ColorBuffer() {\n\n\t\tvar locked = false;\n\n\t\tvar color = new Vector4();\n\t\tvar currentColorMask = null;\n\t\tvar currentColorClear = new Vector4( 0, 0, 0, 0 );\n\n\t\treturn {\n\n\t\t\tsetMask: function ( colorMask ) {\n\n\t\t\t\tif ( currentColorMask !== colorMask && ! locked ) {\n\n\t\t\t\t\tgl.colorMask( colorMask, colorMask, colorMask, colorMask );\n\t\t\t\t\tcurrentColorMask = colorMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( r, g, b, a, premultipliedAlpha ) {\n\n\t\t\t\tif ( premultipliedAlpha === true ) {\n\n\t\t\t\t\tr *= a; g *= a; b *= a;\n\n\t\t\t\t}\n\n\t\t\t\tcolor.set( r, g, b, a );\n\n\t\t\t\tif ( currentColorClear.equals( color ) === false ) {\n\n\t\t\t\t\tgl.clearColor( r, g, b, a );\n\t\t\t\t\tcurrentColorClear.copy( color );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentColorMask = null;\n\t\t\t\tcurrentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction DepthBuffer() {\n\n\t\tvar locked = false;\n\n\t\tvar currentDepthMask = null;\n\t\tvar currentDepthFunc = null;\n\t\tvar currentDepthClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( depthTest ) {\n\n\t\t\t\tif ( depthTest ) {\n\n\t\t\t\t\tenable( gl.DEPTH_TEST );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( gl.DEPTH_TEST );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( depthMask ) {\n\n\t\t\t\tif ( currentDepthMask !== depthMask && ! locked ) {\n\n\t\t\t\t\tgl.depthMask( depthMask );\n\t\t\t\t\tcurrentDepthMask = depthMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( depthFunc ) {\n\n\t\t\t\tif ( currentDepthFunc !== depthFunc ) {\n\n\t\t\t\t\tif ( depthFunc ) {\n\n\t\t\t\t\t\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\t\tcase NeverDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.NEVER );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase AlwaysDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.ALWAYS );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.LESS );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase EqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.EQUAL );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.GEQUAL );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.GREATER );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase NotEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.NOTEQUAL );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentDepthFunc = depthFunc;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( depth ) {\n\n\t\t\t\tif ( currentDepthClear !== depth ) {\n\n\t\t\t\t\tgl.clearDepth( depth );\n\t\t\t\t\tcurrentDepthClear = depth;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentDepthMask = null;\n\t\t\t\tcurrentDepthFunc = null;\n\t\t\t\tcurrentDepthClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction StencilBuffer() {\n\n\t\tvar locked = false;\n\n\t\tvar currentStencilMask = null;\n\t\tvar currentStencilFunc = null;\n\t\tvar currentStencilRef = null;\n\t\tvar currentStencilFuncMask = null;\n\t\tvar currentStencilFail = null;\n\t\tvar currentStencilZFail = null;\n\t\tvar currentStencilZPass = null;\n\t\tvar currentStencilClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( stencilTest ) {\n\n\t\t\t\tif ( stencilTest ) {\n\n\t\t\t\t\tenable( gl.STENCIL_TEST );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( gl.STENCIL_TEST );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( stencilMask ) {\n\n\t\t\t\tif ( currentStencilMask !== stencilMask && ! locked ) {\n\n\t\t\t\t\tgl.stencilMask( stencilMask );\n\t\t\t\t\tcurrentStencilMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( stencilFunc, stencilRef, stencilMask ) {\n\n\t\t\t\tif ( currentStencilFunc !== stencilFunc ||\n\t\t\t\t     currentStencilRef \t!== stencilRef \t||\n\t\t\t\t     currentStencilFuncMask !== stencilMask ) {\n\n\t\t\t\t\tgl.stencilFunc( stencilFunc, stencilRef, stencilMask );\n\n\t\t\t\t\tcurrentStencilFunc = stencilFunc;\n\t\t\t\t\tcurrentStencilRef = stencilRef;\n\t\t\t\t\tcurrentStencilFuncMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetOp: function ( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\t\t\tif ( currentStencilFail\t !== stencilFail \t||\n\t\t\t\t     currentStencilZFail !== stencilZFail ||\n\t\t\t\t     currentStencilZPass !== stencilZPass ) {\n\n\t\t\t\t\tgl.stencilOp( stencilFail, stencilZFail, stencilZPass );\n\n\t\t\t\t\tcurrentStencilFail = stencilFail;\n\t\t\t\t\tcurrentStencilZFail = stencilZFail;\n\t\t\t\t\tcurrentStencilZPass = stencilZPass;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( stencil ) {\n\n\t\t\t\tif ( currentStencilClear !== stencil ) {\n\n\t\t\t\t\tgl.clearStencil( stencil );\n\t\t\t\t\tcurrentStencilClear = stencil;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentStencilMask = null;\n\t\t\t\tcurrentStencilFunc = null;\n\t\t\t\tcurrentStencilRef = null;\n\t\t\t\tcurrentStencilFuncMask = null;\n\t\t\t\tcurrentStencilFail = null;\n\t\t\t\tcurrentStencilZFail = null;\n\t\t\t\tcurrentStencilZPass = null;\n\t\t\t\tcurrentStencilClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t//\n\n\tvar colorBuffer = new ColorBuffer();\n\tvar depthBuffer = new DepthBuffer();\n\tvar stencilBuffer = new StencilBuffer();\n\n\tvar maxVertexAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );\n\tvar newAttributes = new Uint8Array( maxVertexAttributes );\n\tvar enabledAttributes = new Uint8Array( maxVertexAttributes );\n\tvar attributeDivisors = new Uint8Array( maxVertexAttributes );\n\n\tvar enabledCapabilities = {};\n\n\tvar compressedTextureFormats = null;\n\n\tvar currentProgram = null;\n\n\tvar currentBlending = null;\n\tvar currentBlendEquation = null;\n\tvar currentBlendSrc = null;\n\tvar currentBlendDst = null;\n\tvar currentBlendEquationAlpha = null;\n\tvar currentBlendSrcAlpha = null;\n\tvar currentBlendDstAlpha = null;\n\tvar currentPremultipledAlpha = false;\n\n\tvar currentFlipSided = null;\n\tvar currentCullFace = null;\n\n\tvar currentLineWidth = null;\n\n\tvar currentPolygonOffsetFactor = null;\n\tvar currentPolygonOffsetUnits = null;\n\n\tvar maxTextures = gl.getParameter( gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS );\n\n\tvar lineWidthAvailable = false;\n\tvar version = 0;\n\tvar glVersion = gl.getParameter( gl.VERSION );\n\n\tif ( glVersion.indexOf( 'WebGL' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^WebGL\\ ([0-9])/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 1.0 );\n\n\t} else if ( glVersion.indexOf( 'OpenGL ES' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^OpenGL\\ ES\\ ([0-9])/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 2.0 );\n\n\t}\n\n\tvar currentTextureSlot = null;\n\tvar currentBoundTextures = {};\n\n\tvar currentScissor = new Vector4();\n\tvar currentViewport = new Vector4();\n\n\tfunction createTexture( type, target, count ) {\n\n\t\tvar data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\n\t\tvar texture = gl.createTexture();\n\n\t\tgl.bindTexture( type, texture );\n\t\tgl.texParameteri( type, gl.TEXTURE_MIN_FILTER, gl.NEAREST );\n\t\tgl.texParameteri( type, gl.TEXTURE_MAG_FILTER, gl.NEAREST );\n\n\t\tfor ( var i = 0; i < count; i ++ ) {\n\n\t\t\tgl.texImage2D( target + i, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, data );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tvar emptyTextures = {};\n\temptyTextures[ gl.TEXTURE_2D ] = createTexture( gl.TEXTURE_2D, gl.TEXTURE_2D, 1 );\n\temptyTextures[ gl.TEXTURE_CUBE_MAP ] = createTexture( gl.TEXTURE_CUBE_MAP, gl.TEXTURE_CUBE_MAP_POSITIVE_X, 6 );\n\n\t// init\n\n\tcolorBuffer.setClear( 0, 0, 0, 1 );\n\tdepthBuffer.setClear( 1 );\n\tstencilBuffer.setClear( 0 );\n\n\tenable( gl.DEPTH_TEST );\n\tdepthBuffer.setFunc( LessEqualDepth );\n\n\tsetFlipSided( false );\n\tsetCullFace( CullFaceBack );\n\tenable( gl.CULL_FACE );\n\n\tenable( gl.BLEND );\n\tsetBlending( NormalBlending );\n\n\t//\n\n\tfunction initAttributes() {\n\n\t\tfor ( var i = 0, l = newAttributes.length; i < l; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\tfunction enableAttribute( attribute ) {\n\n\t\tenableAttributeAndDivisor( attribute, 0 );\n\n\t}\n\n\tfunction enableAttributeAndDivisor( attribute, meshPerAttribute ) {\n\n\t\tnewAttributes[ attribute ] = 1;\n\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t}\n\n\t\tif ( attributeDivisors[ attribute ] !== meshPerAttribute ) {\n\n\t\t\tvar extension = capabilities.isWebGL2 ? gl : extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\textension[ capabilities.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( attribute, meshPerAttribute );\n\t\t\tattributeDivisors[ attribute ] = meshPerAttribute;\n\n\t\t}\n\n\t}\n\n\tfunction disableUnusedAttributes() {\n\n\t\tfor ( var i = 0, l = enabledAttributes.length; i !== l; ++ i ) {\n\n\t\t\tif ( enabledAttributes[ i ] !== newAttributes[ i ] ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction enable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== true ) {\n\n\t\t\tgl.enable( id );\n\t\t\tenabledCapabilities[ id ] = true;\n\n\t\t}\n\n\t}\n\n\tfunction disable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== false ) {\n\n\t\t\tgl.disable( id );\n\t\t\tenabledCapabilities[ id ] = false;\n\n\t\t}\n\n\t}\n\n\tfunction getCompressedTextureFormats() {\n\n\t\tif ( compressedTextureFormats === null ) {\n\n\t\t\tcompressedTextureFormats = [];\n\n\t\t\tif ( extensions.get( 'WEBGL_compressed_texture_pvrtc' ) ||\n\t\t\t     extensions.get( 'WEBGL_compressed_texture_s3tc' ) ||\n\t\t\t     extensions.get( 'WEBGL_compressed_texture_etc1' ) ||\n\t\t\t     extensions.get( 'WEBGL_compressed_texture_astc' ) ) {\n\n\t\t\t\tvar formats = gl.getParameter( gl.COMPRESSED_TEXTURE_FORMATS );\n\n\t\t\t\tfor ( var i = 0; i < formats.length; i ++ ) {\n\n\t\t\t\t\tcompressedTextureFormats.push( formats[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn compressedTextureFormats;\n\n\t}\n\n\tfunction useProgram( program ) {\n\n\t\tif ( currentProgram !== program ) {\n\n\t\t\tgl.useProgram( program );\n\n\t\t\tcurrentProgram = program;\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) {\n\n\t\tif ( blending !== NoBlending ) {\n\n\t\t\tenable( gl.BLEND );\n\n\t\t} else {\n\n\t\t\tdisable( gl.BLEND );\n\n\t\t}\n\n\t\tif ( blending !== CustomBlending ) {\n\n\t\t\tif ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {\n\n\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\tcase AdditiveBlending:\n\n\t\t\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ONE, gl.ONE, gl.ONE, gl.ONE );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgl.blendEquation( gl.FUNC_ADD );\n\t\t\t\t\t\t\tgl.blendFunc( gl.SRC_ALPHA, gl.ONE );\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase SubtractiveBlending:\n\n\t\t\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ONE_MINUS_SRC_ALPHA );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgl.blendEquation( gl.FUNC_ADD );\n\t\t\t\t\t\t\tgl.blendFunc( gl.ZERO, gl.ONE_MINUS_SRC_COLOR );\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase MultiplyBlending:\n\n\t\t\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.SRC_COLOR, gl.ZERO, gl.SRC_ALPHA );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgl.blendEquation( gl.FUNC_ADD );\n\t\t\t\t\t\t\tgl.blendFunc( gl.ZERO, gl.SRC_COLOR );\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ONE, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tcurrentBlendEquation = null;\n\t\t\tcurrentBlendSrc = null;\n\t\t\tcurrentBlendDst = null;\n\t\t\tcurrentBlendEquationAlpha = null;\n\t\t\tcurrentBlendSrcAlpha = null;\n\t\t\tcurrentBlendDstAlpha = null;\n\n\t\t} else {\n\n\t\t\tblendEquationAlpha = blendEquationAlpha || blendEquation;\n\t\t\tblendSrcAlpha = blendSrcAlpha || blendSrc;\n\t\t\tblendDstAlpha = blendDstAlpha || blendDst;\n\n\t\t\tif ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) {\n\n\t\t\t\tgl.blendEquationSeparate( utils.convert( blendEquation ), utils.convert( blendEquationAlpha ) );\n\n\t\t\t\tcurrentBlendEquation = blendEquation;\n\t\t\t\tcurrentBlendEquationAlpha = blendEquationAlpha;\n\n\t\t\t}\n\n\t\t\tif ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) {\n\n\t\t\t\tgl.blendFuncSeparate( utils.convert( blendSrc ), utils.convert( blendDst ), utils.convert( blendSrcAlpha ), utils.convert( blendDstAlpha ) );\n\n\t\t\t\tcurrentBlendSrc = blendSrc;\n\t\t\t\tcurrentBlendDst = blendDst;\n\t\t\t\tcurrentBlendSrcAlpha = blendSrcAlpha;\n\t\t\t\tcurrentBlendDstAlpha = blendDstAlpha;\n\n\t\t\t}\n\n\t\t}\n\n\t\tcurrentBlending = blending;\n\t\tcurrentPremultipledAlpha = premultipliedAlpha;\n\n\t}\n\n\tfunction setMaterial( material, frontFaceCW ) {\n\n\t\tmaterial.side === DoubleSide\n\t\t\t? disable( gl.CULL_FACE )\n\t\t\t: enable( gl.CULL_FACE );\n\n\t\tvar flipSided = ( material.side === BackSide );\n\t\tif ( frontFaceCW ) flipSided = ! flipSided;\n\n\t\tsetFlipSided( flipSided );\n\n\t\t( material.blending === NormalBlending && material.transparent === false )\n\t\t\t? setBlending( NoBlending )\n\t\t\t: setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha );\n\n\t\tdepthBuffer.setFunc( material.depthFunc );\n\t\tdepthBuffer.setTest( material.depthTest );\n\t\tdepthBuffer.setMask( material.depthWrite );\n\t\tcolorBuffer.setMask( material.colorWrite );\n\n\t\tsetPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\n\n\t}\n\n\t//\n\n\tfunction setFlipSided( flipSided ) {\n\n\t\tif ( currentFlipSided !== flipSided ) {\n\n\t\t\tif ( flipSided ) {\n\n\t\t\t\tgl.frontFace( gl.CW );\n\n\t\t\t} else {\n\n\t\t\t\tgl.frontFace( gl.CCW );\n\n\t\t\t}\n\n\t\t\tcurrentFlipSided = flipSided;\n\n\t\t}\n\n\t}\n\n\tfunction setCullFace( cullFace ) {\n\n\t\tif ( cullFace !== CullFaceNone ) {\n\n\t\t\tenable( gl.CULL_FACE );\n\n\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\tif ( cullFace === CullFaceBack ) {\n\n\t\t\t\t\tgl.cullFace( gl.BACK );\n\n\t\t\t\t} else if ( cullFace === CullFaceFront ) {\n\n\t\t\t\t\tgl.cullFace( gl.FRONT );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.cullFace( gl.FRONT_AND_BACK );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( gl.CULL_FACE );\n\n\t\t}\n\n\t\tcurrentCullFace = cullFace;\n\n\t}\n\n\tfunction setLineWidth( width ) {\n\n\t\tif ( width !== currentLineWidth ) {\n\n\t\t\tif ( lineWidthAvailable ) gl.lineWidth( width );\n\n\t\t\tcurrentLineWidth = width;\n\n\t\t}\n\n\t}\n\n\tfunction setPolygonOffset( polygonOffset, factor, units ) {\n\n\t\tif ( polygonOffset ) {\n\n\t\t\tenable( gl.POLYGON_OFFSET_FILL );\n\n\t\t\tif ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) {\n\n\t\t\t\tgl.polygonOffset( factor, units );\n\n\t\t\t\tcurrentPolygonOffsetFactor = factor;\n\t\t\t\tcurrentPolygonOffsetUnits = units;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( gl.POLYGON_OFFSET_FILL );\n\n\t\t}\n\n\t}\n\n\tfunction setScissorTest( scissorTest ) {\n\n\t\tif ( scissorTest ) {\n\n\t\t\tenable( gl.SCISSOR_TEST );\n\n\t\t} else {\n\n\t\t\tdisable( gl.SCISSOR_TEST );\n\n\t\t}\n\n\t}\n\n\t// texture\n\n\tfunction activeTexture( webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) webglSlot = gl.TEXTURE0 + maxTextures - 1;\n\n\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\tgl.activeTexture( webglSlot );\n\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t}\n\n\t}\n\n\tfunction bindTexture( webglType, webglTexture ) {\n\n\t\tif ( currentTextureSlot === null ) {\n\n\t\t\tactiveTexture();\n\n\t\t}\n\n\t\tvar boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture === undefined ) {\n\n\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\tcurrentBoundTextures[ currentTextureSlot ] = boundTexture;\n\n\t\t}\n\n\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\n\n\t\t\tgl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );\n\n\t\t\tboundTexture.type = webglType;\n\t\t\tboundTexture.texture = webglTexture;\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction scissor( scissor ) {\n\n\t\tif ( currentScissor.equals( scissor ) === false ) {\n\n\t\t\tgl.scissor( scissor.x, scissor.y, scissor.z, scissor.w );\n\t\t\tcurrentScissor.copy( scissor );\n\n\t\t}\n\n\t}\n\n\tfunction viewport( viewport ) {\n\n\t\tif ( currentViewport.equals( viewport ) === false ) {\n\n\t\t\tgl.viewport( viewport.x, viewport.y, viewport.z, viewport.w );\n\t\t\tcurrentViewport.copy( viewport );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction reset() {\n\n\t\tfor ( var i = 0; i < enabledAttributes.length; i ++ ) {\n\n\t\t\tif ( enabledAttributes[ i ] === 1 ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tenabledCapabilities = {};\n\n\t\tcompressedTextureFormats = null;\n\n\t\tcurrentTextureSlot = null;\n\t\tcurrentBoundTextures = {};\n\n\t\tcurrentProgram = null;\n\n\t\tcurrentBlending = null;\n\n\t\tcurrentFlipSided = null;\n\t\tcurrentCullFace = null;\n\n\t\tcolorBuffer.reset();\n\t\tdepthBuffer.reset();\n\t\tstencilBuffer.reset();\n\n\t}\n\n\treturn {\n\n\t\tbuffers: {\n\t\t\tcolor: colorBuffer,\n\t\t\tdepth: depthBuffer,\n\t\t\tstencil: stencilBuffer\n\t\t},\n\n\t\tinitAttributes: initAttributes,\n\t\tenableAttribute: enableAttribute,\n\t\tenableAttributeAndDivisor: enableAttributeAndDivisor,\n\t\tdisableUnusedAttributes: disableUnusedAttributes,\n\t\tenable: enable,\n\t\tdisable: disable,\n\t\tgetCompressedTextureFormats: getCompressedTextureFormats,\n\n\t\tuseProgram: useProgram,\n\n\t\tsetBlending: setBlending,\n\t\tsetMaterial: setMaterial,\n\n\t\tsetFlipSided: setFlipSided,\n\t\tsetCullFace: setCullFace,\n\n\t\tsetLineWidth: setLineWidth,\n\t\tsetPolygonOffset: setPolygonOffset,\n\n\t\tsetScissorTest: setScissorTest,\n\n\t\tactiveTexture: activeTexture,\n\t\tbindTexture: bindTexture,\n\t\tcompressedTexImage2D: compressedTexImage2D,\n\t\ttexImage2D: texImage2D,\n\n\t\tscissor: scissor,\n\t\tviewport: viewport,\n\n\t\treset: reset\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {\n\n\tvar _videoTextures = {};\n\tvar _canvas;\n\n\t//\n\n\tfunction clampToMaxSize( image, maxSize ) {\n\n\t\tif ( image.width > maxSize || image.height > maxSize ) {\n\n\t\t\tif ( 'data' in image ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: image in DataTexture is too big (' + image.width + 'x' + image.height + ').' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\t// Warning: Scaling through the canvas will only work with images that use\n\t\t\t// premultiplied alpha.\n\n\t\t\tvar scale = maxSize / Math.max( image.width, image.height );\n\n\t\t\tvar canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\t\t\tcanvas.width = Math.floor( image.width * scale );\n\t\t\tcanvas.height = Math.floor( image.height * scale );\n\n\t\t\tvar context = canvas.getContext( '2d' );\n\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height, 0, 0, canvas.width, canvas.height );\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: image is too big (' + image.width + 'x' + image.height + '). Resized to ' + canvas.width + 'x' + canvas.height );\n\n\t\t\treturn canvas;\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction isPowerOfTwo( image ) {\n\n\t\treturn _Math.isPowerOfTwo( image.width ) && _Math.isPowerOfTwo( image.height );\n\n\t}\n\n\tfunction makePowerOfTwo( image ) {\n\n\t\tif ( image instanceof HTMLImageElement || image instanceof HTMLCanvasElement || image instanceof ImageBitmap ) {\n\n\t\t\tif ( _canvas === undefined ) _canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\n\t\t\t_canvas.width = _Math.floorPowerOfTwo( image.width );\n\t\t\t_canvas.height = _Math.floorPowerOfTwo( image.height );\n\n\t\t\tvar context = _canvas.getContext( '2d' );\n\t\t\tcontext.drawImage( image, 0, 0, _canvas.width, _canvas.height );\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: image is not power of two (' + image.width + 'x' + image.height + '). Resized to ' + _canvas.width + 'x' + _canvas.height );\n\n\t\t\treturn _canvas;\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction textureNeedsPowerOfTwo( texture ) {\n\n\t\tif ( capabilities.isWebGL2 ) return false;\n\n\t\treturn ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) ||\n\t\t\t( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter );\n\n\t}\n\n\tfunction textureNeedsGenerateMipmaps( texture, isPowerOfTwo ) {\n\n\t\treturn texture.generateMipmaps && isPowerOfTwo &&\n\t\t\ttexture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n\n\t}\n\n\tfunction generateMipmap( target, texture, width, height ) {\n\n\t\t_gl.generateMipmap( target );\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\t// Note: Math.log( x ) * Math.LOG2E used instead of Math.log2( x ) which is not supported by IE11\n\t\ttextureProperties.__maxMipLevel = Math.log( Math.max( width, height ) ) * Math.LOG2E;\n\n\t}\n\n\tfunction getInternalFormat( glFormat, glType ) {\n\n\t\tif ( ! capabilities.isWebGL2 ) return glFormat;\n\n\t\tif ( glFormat === _gl.RGB ) {\n\n\t\t\tif ( glType === _gl.FLOAT ) return _gl.RGB32F;\n\t\t\tif ( glType === _gl.HALF_FLOAT ) return _gl.RGB16F;\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) return _gl.RGB8;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RGBA ) {\n\n\t\t\tif ( glType === _gl.FLOAT ) return _gl.RGBA32F;\n\t\t\tif ( glType === _gl.HALF_FLOAT ) return _gl.RGBA16F;\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) return _gl.RGBA8;\n\n\t\t}\n\n\t\treturn glFormat;\n\n\t}\n\n\t// Fallback filters for non-power-of-2 textures\n\n\tfunction filterFallback( f ) {\n\n\t\tif ( f === NearestFilter || f === NearestMipMapNearestFilter || f === NearestMipMapLinearFilter ) {\n\n\t\t\treturn _gl.NEAREST;\n\n\t\t}\n\n\t\treturn _gl.LINEAR;\n\n\t}\n\n\t//\n\n\tfunction onTextureDispose( event ) {\n\n\t\tvar texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tdeallocateTexture( texture );\n\n\t\tif ( texture.isVideoTexture ) {\n\n\t\t\tdelete _videoTextures[ texture.id ];\n\n\t\t}\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\tfunction onRenderTargetDispose( event ) {\n\n\t\tvar renderTarget = event.target;\n\n\t\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tdeallocateRenderTarget( renderTarget );\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\t//\n\n\tfunction deallocateTexture( texture ) {\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\tif ( texture.image && textureProperties.__image__webglTextureCube ) {\n\n\t\t\t// cube texture\n\n\t\t\t_gl.deleteTexture( textureProperties.__image__webglTextureCube );\n\n\t\t} else {\n\n\t\t\t// 2D texture\n\n\t\t\tif ( textureProperties.__webglInit === undefined ) return;\n\n\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t}\n\n\t\t// remove all webgl properties\n\t\tproperties.remove( texture );\n\n\t}\n\n\tfunction deallocateRenderTarget( renderTarget ) {\n\n\t\tvar renderTargetProperties = properties.get( renderTarget );\n\t\tvar textureProperties = properties.get( renderTarget.texture );\n\n\t\tif ( ! renderTarget ) return;\n\n\t\tif ( textureProperties.__webglTexture !== undefined ) {\n\n\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t}\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\trenderTarget.depthTexture.dispose();\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLRenderTargetCube ) {\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\n\n\t\t}\n\n\t\tproperties.remove( renderTarget.texture );\n\t\tproperties.remove( renderTarget );\n\n\t}\n\n\t//\n\n\n\n\tfunction setTexture2D( texture, slot ) {\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\tif ( texture.isVideoTexture ) updateVideoTexture( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tvar image = texture.image;\n\n\t\t\tif ( image === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is undefined' );\n\n\t\t\t} else if ( image.complete === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' );\n\n\t\t\t} else {\n\n\t\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\tstate.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTextureCube( texture, slot ) {\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\tif ( texture.image.length === 6 ) {\n\n\t\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\t\tif ( ! textureProperties.__image__webglTextureCube ) {\n\n\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\ttextureProperties.__image__webglTextureCube = _gl.createTexture();\n\n\t\t\t\t\tinfo.memory.textures ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__image__webglTextureCube );\n\n\t\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );\n\n\t\t\t\tvar isCompressed = ( texture && texture.isCompressedTexture );\n\t\t\t\tvar isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );\n\n\t\t\t\tvar cubeImage = [];\n\n\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\t\t\tcubeImage[ i ] = clampToMaxSize( texture.image[ i ], capabilities.maxCubemapSize );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tvar image = cubeImage[ 0 ],\n\t\t\t\t\tisPowerOfTwoImage = isPowerOfTwo( image ),\n\t\t\t\t\tglFormat = utils.convert( texture.format ),\n\t\t\t\t\tglType = utils.convert( texture.type ),\n\t\t\t\t\tglInternalFormat = getInternalFormat( glFormat, glType );\n\n\t\t\t\tsetTextureParameters( _gl.TEXTURE_CUBE_MAP, texture, isPowerOfTwoImage );\n\n\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( ! isCompressed ) {\n\n\t\t\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tvar mipmap, mipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\t\t\tfor ( var j = 0, jl = mipmaps.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tmipmap = mipmaps[ j ];\n\n\t\t\t\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\t\t\t\tif ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! isCompressed ) {\n\n\t\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t\t}\n\n\t\t\t\tif ( textureNeedsGenerateMipmaps( texture, isPowerOfTwoImage ) ) {\n\n\t\t\t\t\t// We assume images for cube map have the same size.\n\t\t\t\t\tgenerateMipmap( _gl.TEXTURE_CUBE_MAP, texture, image.width, image.height );\n\n\t\t\t\t}\n\n\t\t\t\ttextureProperties.__version = texture.version;\n\n\t\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t\t} else {\n\n\t\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__image__webglTextureCube );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction setTextureCubeDynamic( texture, slot ) {\n\n\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, properties.get( texture ).__webglTexture );\n\n\t}\n\n\tfunction setTextureParameters( textureType, texture, isPowerOfTwoImage ) {\n\n\t\tvar extension;\n\n\t\tif ( isPowerOfTwoImage ) {\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, utils.convert( texture.wrapS ) );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_T, utils.convert( texture.wrapT ) );\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MAG_FILTER, utils.convert( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MIN_FILTER, utils.convert( texture.minFilter ) );\n\n\t\t} else {\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, _gl.CLAMP_TO_EDGE );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_T, _gl.CLAMP_TO_EDGE );\n\n\t\t\tif ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.' );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MAG_FILTER, filterFallback( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MIN_FILTER, filterFallback( texture.minFilter ) );\n\n\t\t\tif ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\textension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension ) {\n\n\t\t\tif ( texture.type === FloatType && extensions.get( 'OES_texture_float_linear' ) === null ) return;\n\t\t\tif ( texture.type === HalfFloatType && ( capabilities.isWebGL2 || extensions.get( 'OES_texture_half_float_linear' ) ) === null ) return;\n\n\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\n\n\t\t\t\t_gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );\n\t\t\t\tproperties.get( texture ).__currentAnisotropy = texture.anisotropy;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\tif ( textureProperties.__webglInit === undefined ) {\n\n\t\t\ttextureProperties.__webglInit = true;\n\n\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\tinfo.memory.textures ++;\n\n\t\t}\n\n\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\tstate.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture );\n\n\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );\n\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha );\n\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, texture.unpackAlignment );\n\n\t\tvar image = clampToMaxSize( texture.image, capabilities.maxTextureSize );\n\n\t\tif ( textureNeedsPowerOfTwo( texture ) && isPowerOfTwo( image ) === false ) {\n\n\t\t\timage = makePowerOfTwo( image );\n\n\t\t}\n\n\t\tvar isPowerOfTwoImage = isPowerOfTwo( image ),\n\t\t\tglFormat = utils.convert( texture.format ),\n\t\t\tglType = utils.convert( texture.type ),\n\t\t\tglInternalFormat = getInternalFormat( glFormat, glType );\n\n\t\tsetTextureParameters( _gl.TEXTURE_2D, texture, isPowerOfTwoImage );\n\n\t\tvar mipmap, mipmaps = texture.mipmaps;\n\n\t\tif ( texture.isDepthTexture ) {\n\n\t\t\t// populate depth texture with dummy data\n\n\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT;\n\n\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\tif ( ! capabilities.isWebGL2 ) throw new Error( 'Float Depth Texture only supported in WebGL2.0' );\n\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT32F;\n\n\t\t\t} else if ( capabilities.isWebGL2 ) {\n\n\t\t\t\t// WebGL 2.0 requires signed internalformat for glTexImage2D\n\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT16;\n\n\t\t\t}\n\n\t\t\tif ( texture.format === DepthFormat && glInternalFormat === _gl.DEPTH_COMPONENT ) {\n\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t// DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tif ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' );\n\n\t\t\t\t\ttexture.type = UnsignedShortType;\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Depth stencil textures need the DEPTH_STENCIL internal format\n\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\tif ( texture.format === DepthStencilFormat ) {\n\n\t\t\t\tglInternalFormat = _gl.DEPTH_STENCIL;\n\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t// DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL.\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tif ( texture.type !== UnsignedInt248Type ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' );\n\n\t\t\t\t\ttexture.type = UnsignedInt248Type;\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t} else if ( texture.isDataTexture ) {\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && isPowerOfTwoImage ) {\n\n\t\t\t\tfor ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data );\n\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t}\n\n\t\t} else if ( texture.isCompressedTexture ) {\n\n\t\t\tfor ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\tif ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) {\n\n\t\t\t\t\t\tstate.compressedTexImage2D( _gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t} else {\n\n\t\t\t// regular Texture (image, video, canvas)\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && isPowerOfTwoImage ) {\n\n\t\t\t\tfor ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, glFormat, glType, mipmap );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glInternalFormat, glFormat, glType, image );\n\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, isPowerOfTwoImage ) ) {\n\n\t\t\tgenerateMipmap( _gl.TEXTURE_2D, texture, image.width, image.height );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t}\n\n\t// Render targets\n\n\t// Setup storage for target texture and bind it to correct framebuffer\n\tfunction setupFrameBufferTexture( framebuffer, renderTarget, attachment, textureTarget ) {\n\n\t\tvar glFormat = utils.convert( renderTarget.texture.format );\n\t\tvar glType = utils.convert( renderTarget.texture.type );\n\t\tvar glInternalFormat = getInternalFormat( glFormat, glType );\n\t\tstate.texImage2D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null );\n\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, attachment, textureTarget, properties.get( renderTarget.texture ).__webglTexture, 0 );\n\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t}\n\n\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n\tfunction setupRenderBufferStorage( renderbuffer, renderTarget ) {\n\n\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, renderbuffer );\n\n\t\tif ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {\n\n\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.DEPTH_COMPONENT16, renderTarget.width, renderTarget.height );\n\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer );\n\n\t\t} else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) {\n\n\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.DEPTH_STENCIL, renderTarget.width, renderTarget.height );\n\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer );\n\n\t\t} else {\n\n\t\t\t// FIXME: We don't support !depth !stencil\n\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.RGBA4, renderTarget.width, renderTarget.height );\n\n\t\t}\n\n\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, null );\n\n\t}\n\n\t// Setup resources for a Depth Texture for a FBO (needs an extension)\n\tfunction setupDepthTexture( framebuffer, renderTarget ) {\n\n\t\tvar isCube = ( renderTarget && renderTarget.isWebGLRenderTargetCube );\n\t\tif ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' );\n\n\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\tif ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) {\n\n\t\t\tthrow new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' );\n\n\t\t}\n\n\t\t// upload an empty depth texture with framebuffer size\n\t\tif ( ! properties.get( renderTarget.depthTexture ).__webglTexture ||\n\t\t\t\trenderTarget.depthTexture.image.width !== renderTarget.width ||\n\t\t\t\trenderTarget.depthTexture.image.height !== renderTarget.height ) {\n\n\t\t\trenderTarget.depthTexture.image.width = renderTarget.width;\n\t\t\trenderTarget.depthTexture.image.height = renderTarget.height;\n\t\t\trenderTarget.depthTexture.needsUpdate = true;\n\n\t\t}\n\n\t\tsetTexture2D( renderTarget.depthTexture, 0 );\n\n\t\tvar webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;\n\n\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0 );\n\n\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0 );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Unknown depthTexture format' );\n\n\t\t}\n\n\t}\n\n\t// Setup GL resources for a non-texture depth buffer\n\tfunction setupDepthRenderbuffer( renderTarget ) {\n\n\t\tvar renderTargetProperties = properties.get( renderTarget );\n\n\t\tvar isCube = ( renderTarget.isWebGLRenderTargetCube === true );\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\tif ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' );\n\n\t\t\tsetupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );\n\n\t\t} else {\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = [];\n\n\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t}\n\n\t// Set up GL resources for the render target\n\tfunction setupRenderTarget( renderTarget ) {\n\n\t\tvar renderTargetProperties = properties.get( renderTarget );\n\t\tvar textureProperties = properties.get( renderTarget.texture );\n\n\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\n\n\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\tinfo.memory.textures ++;\n\n\t\tvar isCube = ( renderTarget.isWebGLRenderTargetCube === true );\n\t\tvar isTargetPowerOfTwo = isPowerOfTwo( renderTarget );\n\n\t\t// Setup framebuffer\n\n\t\tif ( isCube ) {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t}\n\n\t\t// Setup color buffer\n\n\t\tif ( isCube ) {\n\n\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( _gl.TEXTURE_CUBE_MAP, renderTarget.texture, isTargetPowerOfTwo );\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i );\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( renderTarget.texture, isTargetPowerOfTwo ) ) {\n\n\t\t\t\tgenerateMipmap( _gl.TEXTURE_CUBE_MAP, renderTarget.texture, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, null );\n\n\t\t} else {\n\n\t\t\tstate.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( _gl.TEXTURE_2D, renderTarget.texture, isTargetPowerOfTwo );\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D );\n\n\t\t\tif ( textureNeedsGenerateMipmaps( renderTarget.texture, isTargetPowerOfTwo ) ) {\n\n\t\t\t\tgenerateMipmap( _gl.TEXTURE_2D, renderTarget.texture, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( _gl.TEXTURE_2D, null );\n\n\t\t}\n\n\t\t// Setup depth and stencil buffers\n\n\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\tfunction updateRenderTargetMipmap( renderTarget ) {\n\n\t\tvar texture = renderTarget.texture;\n\t\tvar isTargetPowerOfTwo = isPowerOfTwo( renderTarget );\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, isTargetPowerOfTwo ) ) {\n\n\t\t\tvar target = renderTarget.isWebGLRenderTargetCube ? _gl.TEXTURE_CUBE_MAP : _gl.TEXTURE_2D;\n\t\t\tvar webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\tstate.bindTexture( target, webglTexture );\n\t\t\tgenerateMipmap( target, texture, renderTarget.width, renderTarget.height );\n\t\t\tstate.bindTexture( target, null );\n\n\t\t}\n\n\t}\n\n\tfunction updateVideoTexture( texture ) {\n\n\t\tvar id = texture.id;\n\t\tvar frame = info.render.frame;\n\n\t\t// Check the last frame we updated the VideoTexture\n\n\t\tif ( _videoTextures[ id ] !== frame ) {\n\n\t\t\t_videoTextures[ id ] = frame;\n\t\t\ttexture.update();\n\n\t\t}\n\n\t}\n\n\tthis.setTexture2D = setTexture2D;\n\tthis.setTextureCube = setTextureCube;\n\tthis.setTextureCubeDynamic = setTextureCubeDynamic;\n\tthis.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\n}\n\n/**\n * @author thespite / http://www.twitter.com/thespite\n */\n\nfunction WebGLUtils( gl, extensions, capabilities ) {\n\n\tfunction convert( p ) {\n\n\t\tvar extension;\n\n\t\tif ( p === RepeatWrapping ) return gl.REPEAT;\n\t\tif ( p === ClampToEdgeWrapping ) return gl.CLAMP_TO_EDGE;\n\t\tif ( p === MirroredRepeatWrapping ) return gl.MIRRORED_REPEAT;\n\n\t\tif ( p === NearestFilter ) return gl.NEAREST;\n\t\tif ( p === NearestMipMapNearestFilter ) return gl.NEAREST_MIPMAP_NEAREST;\n\t\tif ( p === NearestMipMapLinearFilter ) return gl.NEAREST_MIPMAP_LINEAR;\n\n\t\tif ( p === LinearFilter ) return gl.LINEAR;\n\t\tif ( p === LinearMipMapNearestFilter ) return gl.LINEAR_MIPMAP_NEAREST;\n\t\tif ( p === LinearMipMapLinearFilter ) return gl.LINEAR_MIPMAP_LINEAR;\n\n\t\tif ( p === UnsignedByteType ) return gl.UNSIGNED_BYTE;\n\t\tif ( p === UnsignedShort4444Type ) return gl.UNSIGNED_SHORT_4_4_4_4;\n\t\tif ( p === UnsignedShort5551Type ) return gl.UNSIGNED_SHORT_5_5_5_1;\n\t\tif ( p === UnsignedShort565Type ) return gl.UNSIGNED_SHORT_5_6_5;\n\n\t\tif ( p === ByteType ) return gl.BYTE;\n\t\tif ( p === ShortType ) return gl.SHORT;\n\t\tif ( p === UnsignedShortType ) return gl.UNSIGNED_SHORT;\n\t\tif ( p === IntType ) return gl.INT;\n\t\tif ( p === UnsignedIntType ) return gl.UNSIGNED_INT;\n\t\tif ( p === FloatType ) return gl.FLOAT;\n\n\t\tif ( p === HalfFloatType ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) return gl.HALF_FLOAT;\n\n\t\t\textension = extensions.get( 'OES_texture_half_float' );\n\n\t\t\tif ( extension !== null ) return extension.HALF_FLOAT_OES;\n\n\t\t}\n\n\t\tif ( p === AlphaFormat ) return gl.ALPHA;\n\t\tif ( p === RGBFormat ) return gl.RGB;\n\t\tif ( p === RGBAFormat ) return gl.RGBA;\n\t\tif ( p === LuminanceFormat ) return gl.LUMINANCE;\n\t\tif ( p === LuminanceAlphaFormat ) return gl.LUMINANCE_ALPHA;\n\t\tif ( p === DepthFormat ) return gl.DEPTH_COMPONENT;\n\t\tif ( p === DepthStencilFormat ) return gl.DEPTH_STENCIL;\n\n\t\tif ( p === AddEquation ) return gl.FUNC_ADD;\n\t\tif ( p === SubtractEquation ) return gl.FUNC_SUBTRACT;\n\t\tif ( p === ReverseSubtractEquation ) return gl.FUNC_REVERSE_SUBTRACT;\n\n\t\tif ( p === ZeroFactor ) return gl.ZERO;\n\t\tif ( p === OneFactor ) return gl.ONE;\n\t\tif ( p === SrcColorFactor ) return gl.SRC_COLOR;\n\t\tif ( p === OneMinusSrcColorFactor ) return gl.ONE_MINUS_SRC_COLOR;\n\t\tif ( p === SrcAlphaFactor ) return gl.SRC_ALPHA;\n\t\tif ( p === OneMinusSrcAlphaFactor ) return gl.ONE_MINUS_SRC_ALPHA;\n\t\tif ( p === DstAlphaFactor ) return gl.DST_ALPHA;\n\t\tif ( p === OneMinusDstAlphaFactor ) return gl.ONE_MINUS_DST_ALPHA;\n\n\t\tif ( p === DstColorFactor ) return gl.DST_COLOR;\n\t\tif ( p === OneMinusDstColorFactor ) return gl.ONE_MINUS_DST_COLOR;\n\t\tif ( p === SrcAlphaSaturateFactor ) return gl.SRC_ALPHA_SATURATE;\n\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format ||\n\t\t\tp === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format ||\n\t\t\tp === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_ETC1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc1' );\n\n\t\t\tif ( extension !== null ) return extension.COMPRESSED_RGB_ETC1_WEBGL;\n\n\t\t}\n\n\t\tif ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format ||\n\t\t\tp === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format ||\n\t\t\tp === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format ||\n\t\t\tp === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format ||\n\t\t\tp === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_astc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn p;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === MinEquation || p === MaxEquation ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\tif ( p === MinEquation ) return gl.MIN;\n\t\t\t\tif ( p === MaxEquation ) return gl.MAX;\n\n\t\t\t}\n\n\t\t\textension = extensions.get( 'EXT_blend_minmax' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === MinEquation ) return extension.MIN_EXT;\n\t\t\t\tif ( p === MaxEquation ) return extension.MAX_EXT;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === UnsignedInt248Type ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) return gl.UNSIGNED_INT_24_8;\n\n\t\t\textension = extensions.get( 'WEBGL_depth_texture' );\n\n\t\t\tif ( extension !== null ) return extension.UNSIGNED_INT_24_8_WEBGL;\n\n\t\t}\n\n\t\treturn 0;\n\n\t}\n\n\treturn { convert: convert };\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Group() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Group';\n\n}\n\nGroup.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Group,\n\n\tisGroup: true\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author greggman / http://games.greggman.com/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author tschw\n */\n\nfunction PerspectiveCamera( fov, aspect, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'PerspectiveCamera';\n\n\tthis.fov = fov !== undefined ? fov : 50;\n\tthis.zoom = 1;\n\n\tthis.near = near !== undefined ? near : 0.1;\n\tthis.far = far !== undefined ? far : 2000;\n\tthis.focus = 10;\n\n\tthis.aspect = aspect !== undefined ? aspect : 1;\n\tthis.view = null;\n\n\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\tthis.updateProjectionMatrix();\n\n}\n\nPerspectiveCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: PerspectiveCamera,\n\n\tisPerspectiveCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tCamera.prototype.copy.call( this, source, recursive );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t},\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength: function ( focalLength ) {\n\n\t\t// see http://www.bobatkins.com/photography/technical/field_of_view.html\n\t\tvar vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = _Math.RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\t/**\n\t * Calculates the focal length from the current .fov and .filmGauge.\n\t */\n\tgetFocalLength: function () {\n\n\t\tvar vExtentSlope = Math.tan( _Math.DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t},\n\n\tgetEffectiveFOV: function () {\n\n\t\treturn _Math.RAD2DEG * 2 * Math.atan(\n\t\t\tMath.tan( _Math.DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t},\n\n\tgetFilmWidth: function () {\n\n\t\t// film not completely covered in portrait format (aspect < 1)\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t},\n\n\tgetFilmHeight: function () {\n\n\t\t// film not completely covered in landscape format (aspect > 1)\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t},\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t * the monitors are in grid like this\n\t *\n\t *   +---+---+---+\n\t *   | A | B | C |\n\t *   +---+---+---+\n\t *   | D | E | F |\n\t *   +---+---+---+\n\t *\n\t * then for each monitor you would call it like this\n\t *\n\t *   var w = 1920;\n\t *   var h = 1080;\n\t *   var fullWidth = w * 3;\n\t *   var fullHeight = h * 2;\n\t *\n\t *   --A--\n\t *   camera.setOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t *   --B--\n\t *   camera.setOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t *   --C--\n\t *   camera.setOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t *   --D--\n\t *   camera.setOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t *   --E--\n\t *   camera.setOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t *   --F--\n\t *   camera.setOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t *\n\t *   Note there is no reason monitors have to be the same size or in a grid.\n\t */\n\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tclearViewOffset: function () {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tupdateProjectionMatrix: function () {\n\n\t\tvar near = this.near,\n\t\t\ttop = near * Math.tan(\n\t\t\t\t_Math.DEG2RAD * 0.5 * this.fov ) / this.zoom,\n\t\t\theight = 2 * top,\n\t\t\twidth = this.aspect * height,\n\t\t\tleft = - 0.5 * width,\n\t\t\tview = this.view;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tvar fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tvar skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ArrayCamera( array ) {\n\n\tPerspectiveCamera.call( this );\n\n\tthis.cameras = array || [];\n\n}\n\nArrayCamera.prototype = Object.assign( Object.create( PerspectiveCamera.prototype ), {\n\n\tconstructor: ArrayCamera,\n\n\tisArrayCamera: true\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebVRManager( renderer ) {\n\n\tvar scope = this;\n\n\tvar device = null;\n\tvar frameData = null;\n\n\tvar poseTarget = null;\n\n\tvar controllers = [];\n\tvar standingMatrix = new Matrix4();\n\tvar standingMatrixInverse = new Matrix4();\n\n\tif ( typeof window !== 'undefined' && 'VRFrameData' in window ) {\n\n\t\tframeData = new window.VRFrameData();\n\t\twindow.addEventListener( 'vrdisplaypresentchange', onVRDisplayPresentChange, false );\n\n\t}\n\n\tvar matrixWorldInverse = new Matrix4();\n\tvar tempQuaternion = new Quaternion();\n\tvar tempPosition = new Vector3();\n\n\tvar cameraL = new PerspectiveCamera();\n\tcameraL.bounds = new Vector4( 0.0, 0.0, 0.5, 1.0 );\n\tcameraL.layers.enable( 1 );\n\n\tvar cameraR = new PerspectiveCamera();\n\tcameraR.bounds = new Vector4( 0.5, 0.0, 0.5, 1.0 );\n\tcameraR.layers.enable( 2 );\n\n\tvar cameraVR = new ArrayCamera( [ cameraL, cameraR ] );\n\tcameraVR.layers.enable( 1 );\n\tcameraVR.layers.enable( 2 );\n\n\t//\n\n\tfunction isPresenting() {\n\n\t\treturn device !== null && device.isPresenting === true;\n\n\t}\n\n\tvar currentSize, currentPixelRatio;\n\n\tfunction onVRDisplayPresentChange() {\n\n\t\tif ( isPresenting() ) {\n\n\t\t\tvar eyeParameters = device.getEyeParameters( 'left' );\n\t\t\tvar renderWidth = eyeParameters.renderWidth;\n\t\t\tvar renderHeight = eyeParameters.renderHeight;\n\n\t\t\tcurrentPixelRatio = renderer.getPixelRatio();\n\t\t\tcurrentSize = renderer.getSize();\n\n\t\t\trenderer.setDrawingBufferSize( renderWidth * 2, renderHeight, 1 );\n\n\t\t\tanimation.start();\n\n\t\t} else if ( scope.enabled ) {\n\n\t\t\trenderer.setDrawingBufferSize( currentSize.width, currentSize.height, currentPixelRatio );\n\n\t\t\tanimation.stop();\n\n\t\t}\n\n\t}\n\n\t//\n\n\tvar triggers = [];\n\n\tfunction findGamepad( id ) {\n\n\t\tvar gamepads = navigator.getGamepads && navigator.getGamepads();\n\n\t\tfor ( var i = 0, j = 0, l = gamepads.length; i < l; i ++ ) {\n\n\t\t\tvar gamepad = gamepads[ i ];\n\n\t\t\tif ( gamepad && ( gamepad.id === 'Daydream Controller' ||\n\t\t\t\tgamepad.id === 'Gear VR Controller' || gamepad.id === 'Oculus Go Controller' ||\n\t\t\t\tgamepad.id === 'OpenVR Gamepad' || gamepad.id.startsWith( 'Oculus Touch' ) ||\n\t\t\t\tgamepad.id.startsWith( 'Spatial Controller' ) ) ) {\n\n\t\t\t\tif ( j === id ) return gamepad;\n\n\t\t\t\tj ++;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateControllers() {\n\n\t\tfor ( var i = 0; i < controllers.length; i ++ ) {\n\n\t\t\tvar controller = controllers[ i ];\n\n\t\t\tvar gamepad = findGamepad( i );\n\n\t\t\tif ( gamepad !== undefined && gamepad.pose !== undefined ) {\n\n\t\t\t\tif ( gamepad.pose === null ) return;\n\n\t\t\t\t//  Pose\n\n\t\t\t\tvar pose = gamepad.pose;\n\n\t\t\t\tif ( pose.hasPosition === false ) controller.position.set( 0.2, - 0.6, - 0.05 );\n\n\t\t\t\tif ( pose.position !== null ) controller.position.fromArray( pose.position );\n\t\t\t\tif ( pose.orientation !== null ) controller.quaternion.fromArray( pose.orientation );\n\t\t\t\tcontroller.matrix.compose( controller.position, controller.quaternion, controller.scale );\n\t\t\t\tcontroller.matrix.premultiply( standingMatrix );\n\t\t\t\tcontroller.matrix.decompose( controller.position, controller.quaternion, controller.scale );\n\t\t\t\tcontroller.matrixWorldNeedsUpdate = true;\n\t\t\t\tcontroller.visible = true;\n\n\t\t\t\t//  Trigger\n\n\t\t\t\tvar buttonId = gamepad.id === 'Daydream Controller' ? 0 : 1;\n\n\t\t\t\tif ( triggers[ i ] !== gamepad.buttons[ buttonId ].pressed ) {\n\n\t\t\t\t\ttriggers[ i ] = gamepad.buttons[ buttonId ].pressed;\n\n\t\t\t\t\tif ( triggers[ i ] === true ) {\n\n\t\t\t\t\t\tcontroller.dispatchEvent( { type: 'selectstart' } );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tcontroller.dispatchEvent( { type: 'selectend' } );\n\t\t\t\t\t\tcontroller.dispatchEvent( { type: 'select' } );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tcontroller.visible = false;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t//\n\n\tthis.enabled = false;\n\tthis.userHeight = 1.6;\n\n\tthis.getController = function ( id ) {\n\n\t\tvar controller = controllers[ id ];\n\n\t\tif ( controller === undefined ) {\n\n\t\t\tcontroller = new Group();\n\t\t\tcontroller.matrixAutoUpdate = false;\n\t\t\tcontroller.visible = false;\n\n\t\t\tcontrollers[ id ] = controller;\n\n\t\t}\n\n\t\treturn controller;\n\n\t};\n\n\tthis.getDevice = function () {\n\n\t\treturn device;\n\n\t};\n\n\tthis.setDevice = function ( value ) {\n\n\t\tif ( value !== undefined ) device = value;\n\n\t\tanimation.setContext( value );\n\n\t};\n\n\tthis.setPoseTarget = function ( object ) {\n\n\t\tif ( object !== undefined ) poseTarget = object;\n\n\t};\n\n\tthis.getCamera = function ( camera ) {\n\n\t\tif ( device === null ) {\n\n\t\t\tcamera.position.set( 0, scope.userHeight, 0 );\n\t\t\treturn camera;\n\n\t\t}\n\n\t\tdevice.depthNear = camera.near;\n\t\tdevice.depthFar = camera.far;\n\n\t\tdevice.getFrameData( frameData );\n\n\t\t//\n\n\t\tvar stageParameters = device.stageParameters;\n\n\t\tif ( stageParameters ) {\n\n\t\t\tstandingMatrix.fromArray( stageParameters.sittingToStandingTransform );\n\n\t\t} else {\n\n\t\t\tstandingMatrix.makeTranslation( 0, scope.userHeight, 0 );\n\n\t\t}\n\n\n\t\tvar pose = frameData.pose;\n\t\tvar poseObject = poseTarget !== null ? poseTarget : camera;\n\n\t\t// We want to manipulate poseObject by its position and quaternion components since users may rely on them.\n\t\tposeObject.matrix.copy( standingMatrix );\n\t\tposeObject.matrix.decompose( poseObject.position, poseObject.quaternion, poseObject.scale );\n\n\t\tif ( pose.orientation !== null ) {\n\n\t\t\ttempQuaternion.fromArray( pose.orientation );\n\t\t\tposeObject.quaternion.multiply( tempQuaternion );\n\n\t\t}\n\n\t\tif ( pose.position !== null ) {\n\n\t\t\ttempQuaternion.setFromRotationMatrix( standingMatrix );\n\t\t\ttempPosition.fromArray( pose.position );\n\t\t\ttempPosition.applyQuaternion( tempQuaternion );\n\t\t\tposeObject.position.add( tempPosition );\n\n\t\t}\n\n\t\tposeObject.updateMatrixWorld();\n\n\t\tif ( device.isPresenting === false ) return camera;\n\n\t\t//\n\n\t\tcameraL.near = camera.near;\n\t\tcameraR.near = camera.near;\n\n\t\tcameraL.far = camera.far;\n\t\tcameraR.far = camera.far;\n\n\t\tcameraVR.matrixWorld.copy( camera.matrixWorld );\n\t\tcameraVR.matrixWorldInverse.copy( camera.matrixWorldInverse );\n\n\t\tcameraL.matrixWorldInverse.fromArray( frameData.leftViewMatrix );\n\t\tcameraR.matrixWorldInverse.fromArray( frameData.rightViewMatrix );\n\n\t\t// TODO (mrdoob) Double check this code\n\n\t\tstandingMatrixInverse.getInverse( standingMatrix );\n\n\t\tcameraL.matrixWorldInverse.multiply( standingMatrixInverse );\n\t\tcameraR.matrixWorldInverse.multiply( standingMatrixInverse );\n\n\t\tvar parent = poseObject.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tmatrixWorldInverse.getInverse( parent.matrixWorld );\n\n\t\t\tcameraL.matrixWorldInverse.multiply( matrixWorldInverse );\n\t\t\tcameraR.matrixWorldInverse.multiply( matrixWorldInverse );\n\n\t\t}\n\n\t\t// envMap and Mirror needs camera.matrixWorld\n\n\t\tcameraL.matrixWorld.getInverse( cameraL.matrixWorldInverse );\n\t\tcameraR.matrixWorld.getInverse( cameraR.matrixWorldInverse );\n\n\t\tcameraL.projectionMatrix.fromArray( frameData.leftProjectionMatrix );\n\t\tcameraR.projectionMatrix.fromArray( frameData.rightProjectionMatrix );\n\n\t\t// HACK (mrdoob)\n\t\t// https://github.com/w3c/webvr/issues/203\n\n\t\tcameraVR.projectionMatrix.copy( cameraL.projectionMatrix );\n\n\t\t//\n\n\t\tvar layers = device.getLayers();\n\n\t\tif ( layers.length ) {\n\n\t\t\tvar layer = layers[ 0 ];\n\n\t\t\tif ( layer.leftBounds !== null && layer.leftBounds.length === 4 ) {\n\n\t\t\t\tcameraL.bounds.fromArray( layer.leftBounds );\n\n\t\t\t}\n\n\t\t\tif ( layer.rightBounds !== null && layer.rightBounds.length === 4 ) {\n\n\t\t\t\tcameraR.bounds.fromArray( layer.rightBounds );\n\n\t\t\t}\n\n\t\t}\n\n\t\tupdateControllers();\n\n\t\treturn cameraVR;\n\n\t};\n\n\tthis.getStandingMatrix = function () {\n\n\t\treturn standingMatrix;\n\n\t};\n\n\tthis.isPresenting = isPresenting;\n\n\t// Animation Loop\n\n\tvar animation = new WebGLAnimation();\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tanimation.setAnimationLoop( callback );\n\n\t};\n\n\tthis.submitFrame = function () {\n\n\t\tif ( isPresenting() ) device.submitFrame();\n\n\t};\n\n\tthis.dispose = function () {\n\n\t\tif ( typeof window !== 'undefined' ) {\n\n\t\t\twindow.removeEventListener( 'vrdisplaypresentchange', onVRDisplayPresentChange );\n\n\t\t}\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebXRManager( renderer ) {\n\n\tvar gl = renderer.context;\n\n\tvar device = null;\n\tvar session = null;\n\n\tvar frameOfRef = null;\n\n\tvar pose = null;\n\n\tvar controllers = [];\n\tvar inputSources = [];\n\n\tfunction isPresenting() {\n\n\t\treturn session !== null && frameOfRef !== null;\n\n\n\t}\n\n\t//\n\n\tvar cameraL = new PerspectiveCamera();\n\tcameraL.layers.enable( 1 );\n\tcameraL.viewport = new Vector4();\n\n\tvar cameraR = new PerspectiveCamera();\n\tcameraR.layers.enable( 2 );\n\tcameraR.viewport = new Vector4();\n\n\tvar cameraVR = new ArrayCamera( [ cameraL, cameraR ] );\n\tcameraVR.layers.enable( 1 );\n\tcameraVR.layers.enable( 2 );\n\n\t//\n\n\tthis.enabled = false;\n\n\tthis.getController = function ( id ) {\n\n\t\tvar controller = controllers[ id ];\n\n\t\tif ( controller === undefined ) {\n\n\t\t\tcontroller = new Group();\n\t\t\tcontroller.matrixAutoUpdate = false;\n\t\t\tcontroller.visible = false;\n\n\t\t\tcontrollers[ id ] = controller;\n\n\t\t}\n\n\t\treturn controller;\n\n\t};\n\n\tthis.getDevice = function () {\n\n\t\treturn device;\n\n\t};\n\n\tthis.setDevice = function ( value ) {\n\n\t\tif ( value !== undefined ) device = value;\n\t\tif ( value instanceof XRDevice ) gl.setCompatibleXRDevice( value );\n\n\t};\n\n\t//\n\n\tfunction onSessionEvent( event ) {\n\n\t\tvar controller = controllers[ inputSources.indexOf( event.inputSource ) ];\n\t\tif ( controller ) controller.dispatchEvent( { type: event.type } );\n\n\t}\n\n\tfunction onSessionEnd() {\n\n\t\trenderer.setFramebuffer( null );\n\t\tanimation.stop();\n\n\t}\n\n\tthis.setSession = function ( value, options ) {\n\n\t\tsession = value;\n\n\t\tif ( session !== null ) {\n\n\t\t\tsession.addEventListener( 'select', onSessionEvent );\n\t\t\tsession.addEventListener( 'selectstart', onSessionEvent );\n\t\t\tsession.addEventListener( 'selectend', onSessionEvent );\n\t\t\tsession.addEventListener( 'end', onSessionEnd );\n\n\t\t\tsession.baseLayer = new XRWebGLLayer( session, gl );\n\t\t\tsession.requestFrameOfReference( options.frameOfReferenceType ).then( function ( value ) {\n\n\t\t\t\tframeOfRef = value;\n\n\t\t\t\trenderer.setFramebuffer( session.baseLayer.framebuffer );\n\n\t\t\t\tanimation.setContext( session );\n\t\t\t\tanimation.start();\n\n\t\t\t} );\n\n\t\t\t//\n\n\t\t\tinputSources = session.getInputSources();\n\n\t\t\tsession.addEventListener( 'inputsourceschange', function () {\n\n\t\t\t\tinputSources = session.getInputSources();\n\t\t\t\tconsole.log( inputSources );\n\n\t\t\t} );\n\n\t\t}\n\n\t};\n\n\tfunction updateCamera( camera, parent ) {\n\n\t\tif ( parent === null ) {\n\n\t\t\tcamera.matrixWorld.copy( camera.matrix );\n\n\t\t} else {\n\n\t\t\tcamera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix );\n\n\t\t}\n\n\t\tcamera.matrixWorldInverse.getInverse( camera.matrixWorld );\n\n\t}\n\n\tthis.getCamera = function ( camera ) {\n\n\t\tif ( isPresenting() ) {\n\n\t\t\tvar parent = camera.parent;\n\t\t\tvar cameras = cameraVR.cameras;\n\n\t\t\t// apply camera.parent to cameraVR\n\n\t\t\tupdateCamera( cameraVR, parent );\n\n\t\t\tfor ( var i = 0; i < cameras.length; i ++ ) {\n\n\t\t\t\tupdateCamera( cameras[ i ], parent );\n\n\t\t\t}\n\n\t\t\t// update camera and its children\n\n\t\t\tcamera.matrixWorld.copy( cameraVR.matrixWorld );\n\n\t\t\tvar children = camera.children;\n\n\t\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tchildren[ i ].updateMatrixWorld( true );\n\n\t\t\t}\n\n\t\t\treturn cameraVR;\n\n\t\t}\n\n\t\treturn camera;\n\n\t};\n\n\tthis.isPresenting = isPresenting;\n\n\t// Animation Loop\n\n\tvar onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tpose = frame.getDevicePose( frameOfRef );\n\n\t\tif ( pose !== null ) {\n\n\t\t\tvar layer = session.baseLayer;\n\t\t\tvar views = frame.views;\n\n\t\t\tfor ( var i = 0; i < views.length; i ++ ) {\n\n\t\t\t\tvar view = views[ i ];\n\t\t\t\tvar viewport = layer.getViewport( view );\n\t\t\t\tvar viewMatrix = pose.getViewMatrix( view );\n\n\t\t\t\tvar camera = cameraVR.cameras[ i ];\n\t\t\t\tcamera.matrix.fromArray( viewMatrix ).getInverse( camera.matrix );\n\t\t\t\tcamera.projectionMatrix.fromArray( view.projectionMatrix );\n\t\t\t\tcamera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );\n\n\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\tcameraVR.matrix.copy( camera.matrix );\n\n\t\t\t\t\t// HACK (mrdoob)\n\t\t\t\t\t// https://github.com/w3c/webvr/issues/203\n\n\t\t\t\t\tcameraVR.projectionMatrix.copy( camera.projectionMatrix );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tfor ( var i = 0; i < controllers.length; i ++ ) {\n\n\t\t\tvar controller = controllers[ i ];\n\n\t\t\tvar inputSource = inputSources[ i ];\n\n\t\t\tif ( inputSource ) {\n\n\t\t\t\tvar inputPose = frame.getInputPose( inputSource, frameOfRef );\n\n\t\t\t\tif ( inputPose !== null ) {\n\n\t\t\t\t\tcontroller.matrix.elements = inputPose.pointerMatrix;\n\t\t\t\t\tcontroller.matrix.decompose( controller.position, controller.rotation, controller.scale );\n\t\t\t\t\tcontroller.visible = true;\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tcontroller.visible = false;\n\n\t\t}\n\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t}\n\n\tvar animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\n\t};\n\n\tthis.dispose = function () {};\n\n\t// DEPRECATED\n\n\tthis.getStandingMatrix = function () {\n\n\t\tconsole.warn( 'THREE.WebXRManager: getStandingMatrix() is no longer needed.' );\n\t\treturn new THREE.Matrix4();\n\n\t};\n\n\tthis.submitFrame = function () {};\n\n}\n\n/**\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n * @author tschw\n */\n\nfunction WebGLRenderer( parameters ) {\n\n\tconsole.log( 'THREE.WebGLRenderer', REVISION );\n\n\tparameters = parameters || {};\n\n\tvar _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ),\n\t\t_context = parameters.context !== undefined ? parameters.context : null,\n\n\t\t_alpha = parameters.alpha !== undefined ? parameters.alpha : false,\n\t\t_depth = parameters.depth !== undefined ? parameters.depth : true,\n\t\t_stencil = parameters.stencil !== undefined ? parameters.stencil : true,\n\t\t_antialias = parameters.antialias !== undefined ? parameters.antialias : false,\n\t\t_premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,\n\t\t_preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false,\n\t\t_powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default';\n\n\tvar currentRenderList = null;\n\tvar currentRenderState = null;\n\n\t// public properties\n\n\tthis.domElement = _canvas;\n\tthis.context = null;\n\n\t// clearing\n\n\tthis.autoClear = true;\n\tthis.autoClearColor = true;\n\tthis.autoClearDepth = true;\n\tthis.autoClearStencil = true;\n\n\t// scene graph\n\n\tthis.sortObjects = true;\n\n\t// user-defined clipping\n\n\tthis.clippingPlanes = [];\n\tthis.localClippingEnabled = false;\n\n\t// physically based shading\n\n\tthis.gammaFactor = 2.0;\t// for backwards compatibility\n\tthis.gammaInput = false;\n\tthis.gammaOutput = false;\n\n\t// physical lights\n\n\tthis.physicallyCorrectLights = false;\n\n\t// tone mapping\n\n\tthis.toneMapping = LinearToneMapping;\n\tthis.toneMappingExposure = 1.0;\n\tthis.toneMappingWhitePoint = 1.0;\n\n\t// morphs\n\n\tthis.maxMorphTargets = 8;\n\tthis.maxMorphNormals = 4;\n\n\t// internal properties\n\n\tvar _this = this,\n\n\t\t_isContextLost = false,\n\n\t\t// internal state cache\n\n\t\t_framebuffer = null,\n\n\t\t_currentRenderTarget = null,\n\t\t_currentFramebuffer = null,\n\t\t_currentMaterialId = - 1,\n\n\t\t// geometry and program caching\n\n\t\t_currentGeometryProgram = {\n\t\t\tgeometry: null,\n\t\t\tprogram: null,\n\t\t\twireframe: false\n\t\t},\n\n\t\t_currentCamera = null,\n\t\t_currentArrayCamera = null,\n\n\t\t_currentViewport = new Vector4(),\n\t\t_currentScissor = new Vector4(),\n\t\t_currentScissorTest = null,\n\n\t\t//\n\n\t\t_usedTextureUnits = 0,\n\n\t\t//\n\n\t\t_width = _canvas.width,\n\t\t_height = _canvas.height,\n\n\t\t_pixelRatio = 1,\n\n\t\t_viewport = new Vector4( 0, 0, _width, _height ),\n\t\t_scissor = new Vector4( 0, 0, _width, _height ),\n\t\t_scissorTest = false,\n\n\t\t// frustum\n\n\t\t_frustum = new Frustum(),\n\n\t\t// clipping\n\n\t\t_clipping = new WebGLClipping(),\n\t\t_clippingEnabled = false,\n\t\t_localClippingEnabled = false,\n\n\t\t// camera matrices cache\n\n\t\t_projScreenMatrix = new Matrix4(),\n\n\t\t_vector3 = new Vector3();\n\n\tfunction getTargetPixelRatio() {\n\n\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t}\n\n\t// initialize\n\n\tvar _gl;\n\n\ttry {\n\n\t\tvar contextAttributes = {\n\t\t\talpha: _alpha,\n\t\t\tdepth: _depth,\n\t\t\tstencil: _stencil,\n\t\t\tantialias: _antialias,\n\t\t\tpremultipliedAlpha: _premultipliedAlpha,\n\t\t\tpreserveDrawingBuffer: _preserveDrawingBuffer,\n\t\t\tpowerPreference: _powerPreference\n\t\t};\n\n\t\t// event listeners must be registered before WebGL context is created, see #12753\n\n\t\t_canvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.addEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\t_gl = _context || _canvas.getContext( 'webgl', contextAttributes ) || _canvas.getContext( 'experimental-webgl', contextAttributes );\n\n\t\tif ( _gl === null ) {\n\n\t\t\tif ( _canvas.getContext( 'webgl' ) !== null ) {\n\n\t\t\t\tthrow new Error( 'Error creating WebGL context with your selected attributes.' );\n\n\t\t\t} else {\n\n\t\t\t\tthrow new Error( 'Error creating WebGL context.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Some experimental-webgl implementations do not have getShaderPrecisionFormat\n\n\t\tif ( _gl.getShaderPrecisionFormat === undefined ) {\n\n\t\t\t_gl.getShaderPrecisionFormat = function () {\n\n\t\t\t\treturn { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };\n\n\t\t\t};\n\n\t\t}\n\n\t} catch ( error ) {\n\n\t\tconsole.error( 'THREE.WebGLRenderer: ' + error.message );\n\n\t}\n\n\tvar extensions, capabilities, state, info;\n\tvar properties, textures, attributes, geometries, objects;\n\tvar programCache, renderLists, renderStates;\n\n\tvar background, morphtargets, bufferRenderer, indexedBufferRenderer;\n\n\tvar utils;\n\n\tfunction initGLContext() {\n\n\t\textensions = new WebGLExtensions( _gl );\n\n\t\tcapabilities = new WebGLCapabilities( _gl, extensions, parameters );\n\n\t\tif ( ! capabilities.isWebGL2 ) {\n\n\t\t\textensions.get( 'WEBGL_depth_texture' );\n\t\t\textensions.get( 'OES_texture_float' );\n\t\t\textensions.get( 'OES_texture_half_float' );\n\t\t\textensions.get( 'OES_texture_half_float_linear' );\n\t\t\textensions.get( 'OES_standard_derivatives' );\n\t\t\textensions.get( 'OES_element_index_uint' );\n\t\t\textensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t}\n\n\t\textensions.get( 'OES_texture_float_linear' );\n\n\t\tutils = new WebGLUtils( _gl, extensions, capabilities );\n\n\t\tstate = new WebGLState( _gl, extensions, utils, capabilities );\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ) );\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ) );\n\n\t\tinfo = new WebGLInfo( _gl );\n\t\tproperties = new WebGLProperties();\n\t\ttextures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );\n\t\tattributes = new WebGLAttributes( _gl );\n\t\tgeometries = new WebGLGeometries( _gl, attributes, info );\n\t\tobjects = new WebGLObjects( geometries, info );\n\t\tmorphtargets = new WebGLMorphtargets( _gl );\n\t\tprogramCache = new WebGLPrograms( _this, extensions, capabilities );\n\t\trenderLists = new WebGLRenderLists();\n\t\trenderStates = new WebGLRenderStates();\n\n\t\tbackground = new WebGLBackground( _this, state, objects, _premultipliedAlpha );\n\n\t\tbufferRenderer = new WebGLBufferRenderer( _gl, extensions, info, capabilities );\n\t\tindexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info, capabilities );\n\n\t\tinfo.programs = programCache.programs;\n\n\t\t_this.context = _gl;\n\t\t_this.capabilities = capabilities;\n\t\t_this.extensions = extensions;\n\t\t_this.properties = properties;\n\t\t_this.renderLists = renderLists;\n\t\t_this.state = state;\n\t\t_this.info = info;\n\n\t}\n\n\tinitGLContext();\n\n\t// vr\n\n\tvar vr = ( 'xr' in navigator ) ? new WebXRManager( _this ) : new WebVRManager( _this );\n\n\tthis.vr = vr;\n\n\t// shadow map\n\n\tvar shadowMap = new WebGLShadowMap( _this, objects, capabilities.maxTextureSize );\n\n\tthis.shadowMap = shadowMap;\n\n\t// API\n\n\tthis.getContext = function () {\n\n\t\treturn _gl;\n\n\t};\n\n\tthis.getContextAttributes = function () {\n\n\t\treturn _gl.getContextAttributes();\n\n\t};\n\n\tthis.forceContextLoss = function () {\n\n\t\tvar extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.loseContext();\n\n\t};\n\n\tthis.forceContextRestore = function () {\n\n\t\tvar extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.restoreContext();\n\n\t};\n\n\tthis.getPixelRatio = function () {\n\n\t\treturn _pixelRatio;\n\n\t};\n\n\tthis.setPixelRatio = function ( value ) {\n\n\t\tif ( value === undefined ) return;\n\n\t\t_pixelRatio = value;\n\n\t\tthis.setSize( _width, _height, false );\n\n\t};\n\n\tthis.getSize = function () {\n\n\t\treturn {\n\t\t\twidth: _width,\n\t\t\theight: _height\n\t\t};\n\n\t};\n\n\tthis.setSize = function ( width, height, updateStyle ) {\n\n\t\tif ( vr.isPresenting() ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Can\\'t change size while VR device is presenting.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_canvas.width = width * _pixelRatio;\n\t\t_canvas.height = height * _pixelRatio;\n\n\t\tif ( updateStyle !== false ) {\n\n\t\t\t_canvas.style.width = width + 'px';\n\t\t\t_canvas.style.height = height + 'px';\n\n\t\t}\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getDrawingBufferSize = function () {\n\n\t\treturn {\n\t\t\twidth: _width * _pixelRatio,\n\t\t\theight: _height * _pixelRatio\n\t\t};\n\n\t};\n\n\tthis.setDrawingBufferSize = function ( width, height, pixelRatio ) {\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_pixelRatio = pixelRatio;\n\n\t\t_canvas.width = width * pixelRatio;\n\t\t_canvas.height = height * pixelRatio;\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getCurrentViewport = function () {\n\n\t\treturn _currentViewport;\n\n\t};\n\n\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\t_viewport.set( x, _height - y - height, width, height );\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ) );\n\n\t};\n\n\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\t_scissor.set( x, _height - y - height, width, height );\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ) );\n\n\t};\n\n\tthis.setScissorTest = function ( boolean ) {\n\n\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t};\n\n\t// Clearing\n\n\tthis.getClearColor = function () {\n\n\t\treturn background.getClearColor();\n\n\t};\n\n\tthis.setClearColor = function () {\n\n\t\tbackground.setClearColor.apply( background, arguments );\n\n\t};\n\n\tthis.getClearAlpha = function () {\n\n\t\treturn background.getClearAlpha();\n\n\t};\n\n\tthis.setClearAlpha = function () {\n\n\t\tbackground.setClearAlpha.apply( background, arguments );\n\n\t};\n\n\tthis.clear = function ( color, depth, stencil ) {\n\n\t\tvar bits = 0;\n\n\t\tif ( color === undefined || color ) bits |= _gl.COLOR_BUFFER_BIT;\n\t\tif ( depth === undefined || depth ) bits |= _gl.DEPTH_BUFFER_BIT;\n\t\tif ( stencil === undefined || stencil ) bits |= _gl.STENCIL_BUFFER_BIT;\n\n\t\t_gl.clear( bits );\n\n\t};\n\n\tthis.clearColor = function () {\n\n\t\tthis.clear( true, false, false );\n\n\t};\n\n\tthis.clearDepth = function () {\n\n\t\tthis.clear( false, true, false );\n\n\t};\n\n\tthis.clearStencil = function () {\n\n\t\tthis.clear( false, false, true );\n\n\t};\n\n\tthis.clearTarget = function ( renderTarget, color, depth, stencil ) {\n\n\t\tthis.setRenderTarget( renderTarget );\n\t\tthis.clear( color, depth, stencil );\n\n\t};\n\n\t//\n\n\tthis.dispose = function () {\n\n\t\t_canvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\trenderLists.dispose();\n\t\trenderStates.dispose();\n\t\tproperties.dispose();\n\t\tobjects.dispose();\n\n\t\tvr.dispose();\n\n\t\tanimation.stop();\n\n\t};\n\n\t// Events\n\n\tfunction onContextLost( event ) {\n\n\t\tevent.preventDefault();\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Lost.' );\n\n\t\t_isContextLost = true;\n\n\t}\n\n\tfunction onContextRestore( /* event */ ) {\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Restored.' );\n\n\t\t_isContextLost = false;\n\n\t\tinitGLContext();\n\n\t}\n\n\tfunction onMaterialDispose( event ) {\n\n\t\tvar material = event.target;\n\n\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\tdeallocateMaterial( material );\n\n\t}\n\n\t// Buffer deallocation\n\n\tfunction deallocateMaterial( material ) {\n\n\t\treleaseMaterialProgramReference( material );\n\n\t\tproperties.remove( material );\n\n\t}\n\n\n\tfunction releaseMaterialProgramReference( material ) {\n\n\t\tvar programInfo = properties.get( material ).program;\n\n\t\tmaterial.program = undefined;\n\n\t\tif ( programInfo !== undefined ) {\n\n\t\t\tprogramCache.releaseProgram( programInfo );\n\n\t\t}\n\n\t}\n\n\t// Buffer rendering\n\n\tfunction renderObjectImmediate( object, program ) {\n\n\t\tobject.render( function ( object ) {\n\n\t\t\t_this.renderBufferImmediate( object, program );\n\n\t\t} );\n\n\t}\n\n\tthis.renderBufferImmediate = function ( object, program ) {\n\n\t\tstate.initAttributes();\n\n\t\tvar buffers = properties.get( object );\n\n\t\tif ( object.hasPositions && ! buffers.position ) buffers.position = _gl.createBuffer();\n\t\tif ( object.hasNormals && ! buffers.normal ) buffers.normal = _gl.createBuffer();\n\t\tif ( object.hasUvs && ! buffers.uv ) buffers.uv = _gl.createBuffer();\n\t\tif ( object.hasColors && ! buffers.color ) buffers.color = _gl.createBuffer();\n\n\t\tvar programAttributes = program.getAttributes();\n\n\t\tif ( object.hasPositions ) {\n\n\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.position );\n\t\t\t_gl.bufferData( _gl.ARRAY_BUFFER, object.positionArray, _gl.DYNAMIC_DRAW );\n\n\t\t\tstate.enableAttribute( programAttributes.position );\n\t\t\t_gl.vertexAttribPointer( programAttributes.position, 3, _gl.FLOAT, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasNormals ) {\n\n\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.normal );\n\t\t\t_gl.bufferData( _gl.ARRAY_BUFFER, object.normalArray, _gl.DYNAMIC_DRAW );\n\n\t\t\tstate.enableAttribute( programAttributes.normal );\n\t\t\t_gl.vertexAttribPointer( programAttributes.normal, 3, _gl.FLOAT, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasUvs ) {\n\n\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.uv );\n\t\t\t_gl.bufferData( _gl.ARRAY_BUFFER, object.uvArray, _gl.DYNAMIC_DRAW );\n\n\t\t\tstate.enableAttribute( programAttributes.uv );\n\t\t\t_gl.vertexAttribPointer( programAttributes.uv, 2, _gl.FLOAT, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasColors ) {\n\n\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.color );\n\t\t\t_gl.bufferData( _gl.ARRAY_BUFFER, object.colorArray, _gl.DYNAMIC_DRAW );\n\n\t\t\tstate.enableAttribute( programAttributes.color );\n\t\t\t_gl.vertexAttribPointer( programAttributes.color, 3, _gl.FLOAT, false, 0, 0 );\n\n\t\t}\n\n\t\tstate.disableUnusedAttributes();\n\n\t\t_gl.drawArrays( _gl.TRIANGLES, 0, object.count );\n\n\t\tobject.count = 0;\n\n\t};\n\n\tthis.renderBufferDirect = function ( camera, fog, geometry, material, object, group ) {\n\n\t\tvar frontFaceCW = ( object.isMesh && object.normalMatrix.determinant() < 0 );\n\n\t\tstate.setMaterial( material, frontFaceCW );\n\n\t\tvar program = setProgram( camera, fog, material, object );\n\n\t\tvar updateBuffers = false;\n\n\t\tif ( _currentGeometryProgram.geometry !== geometry.id ||\n\t\t\t_currentGeometryProgram.program !== program.id ||\n\t\t\t_currentGeometryProgram.wireframe !== ( material.wireframe === true ) ) {\n\n\t\t\t_currentGeometryProgram.geometry = geometry.id;\n\t\t\t_currentGeometryProgram.program = program.id;\n\t\t\t_currentGeometryProgram.wireframe = material.wireframe === true;\n\t\t\tupdateBuffers = true;\n\n\t\t}\n\n\t\tif ( object.morphTargetInfluences ) {\n\n\t\t\tmorphtargets.update( object, geometry, material, program );\n\n\t\t\tupdateBuffers = true;\n\n\t\t}\n\n\t\t//\n\n\t\tvar index = geometry.index;\n\t\tvar position = geometry.attributes.position;\n\t\tvar rangeFactor = 1;\n\n\t\tif ( material.wireframe === true ) {\n\n\t\t\tindex = geometries.getWireframeAttribute( geometry );\n\t\t\trangeFactor = 2;\n\n\t\t}\n\n\t\tvar attribute;\n\t\tvar renderer = bufferRenderer;\n\n\t\tif ( index !== null ) {\n\n\t\t\tattribute = attributes.get( index );\n\n\t\t\trenderer = indexedBufferRenderer;\n\t\t\trenderer.setIndex( attribute );\n\n\t\t}\n\n\t\tif ( updateBuffers ) {\n\n\t\t\tsetupVertexAttributes( material, program, geometry );\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\t_gl.bindBuffer( _gl.ELEMENT_ARRAY_BUFFER, attribute.buffer );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tvar dataCount = Infinity;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdataCount = index.count;\n\n\t\t} else if ( position !== undefined ) {\n\n\t\t\tdataCount = position.count;\n\n\t\t}\n\n\t\tvar rangeStart = geometry.drawRange.start * rangeFactor;\n\t\tvar rangeCount = geometry.drawRange.count * rangeFactor;\n\n\t\tvar groupStart = group !== null ? group.start * rangeFactor : 0;\n\t\tvar groupCount = group !== null ? group.count * rangeFactor : Infinity;\n\n\t\tvar drawStart = Math.max( rangeStart, groupStart );\n\t\tvar drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1;\n\n\t\tvar drawCount = Math.max( 0, drawEnd - drawStart + 1 );\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\t//\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\trenderer.setMode( _gl.LINES );\n\n\t\t\t} else {\n\n\t\t\t\tswitch ( object.drawMode ) {\n\n\t\t\t\t\tcase TrianglesDrawMode:\n\t\t\t\t\t\trenderer.setMode( _gl.TRIANGLES );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase TriangleStripDrawMode:\n\t\t\t\t\t\trenderer.setMode( _gl.TRIANGLE_STRIP );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase TriangleFanDrawMode:\n\t\t\t\t\t\trenderer.setMode( _gl.TRIANGLE_FAN );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t} else if ( object.isLine ) {\n\n\t\t\tvar lineWidth = material.linewidth;\n\n\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\trenderer.setMode( _gl.LINES );\n\n\t\t\t} else if ( object.isLineLoop ) {\n\n\t\t\t\trenderer.setMode( _gl.LINE_LOOP );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( _gl.LINE_STRIP );\n\n\t\t\t}\n\n\t\t} else if ( object.isPoints ) {\n\n\t\t\trenderer.setMode( _gl.POINTS );\n\n\t\t} else if ( object.isSprite ) {\n\n\t\t\trenderer.setMode( _gl.TRIANGLES );\n\n\t\t}\n\n\t\tif ( geometry && geometry.isInstancedBufferGeometry ) {\n\n\t\t\tif ( geometry.maxInstancedCount > 0 ) {\n\n\t\t\t\trenderer.renderInstances( geometry, drawStart, drawCount );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t}\n\n\t};\n\n\tfunction setupVertexAttributes( material, program, geometry ) {\n\n\t\tif ( geometry && geometry.isInstancedBufferGeometry & ! capabilities.isWebGL2 ) {\n\n\t\t\tif ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.initAttributes();\n\n\t\tvar geometryAttributes = geometry.attributes;\n\n\t\tvar programAttributes = program.getAttributes();\n\n\t\tvar materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\tfor ( var name in programAttributes ) {\n\n\t\t\tvar programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute >= 0 ) {\n\n\t\t\t\tvar geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute !== undefined ) {\n\n\t\t\t\t\tvar normalized = geometryAttribute.normalized;\n\t\t\t\t\tvar size = geometryAttribute.itemSize;\n\n\t\t\t\t\tvar attribute = attributes.get( geometryAttribute );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tvar buffer = attribute.buffer;\n\t\t\t\t\tvar type = attribute.type;\n\t\t\t\t\tvar bytesPerElement = attribute.bytesPerElement;\n\n\t\t\t\t\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tvar data = geometryAttribute.data;\n\t\t\t\t\t\tvar stride = data.stride;\n\t\t\t\t\t\tvar offset = geometryAttribute.offset;\n\n\t\t\t\t\t\tif ( data && data.isInstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\tstate.enableAttributeAndDivisor( programAttribute, data.meshPerAttribute );\n\n\t\t\t\t\t\t\tif ( geometry.maxInstancedCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry.maxInstancedCount = data.meshPerAttribute * data.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.enableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffer );\n\t\t\t\t\t\t_gl.vertexAttribPointer( programAttribute, size, type, normalized, stride * bytesPerElement, offset * bytesPerElement );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( geometryAttribute.isInstancedBufferAttribute ) {\n\n\t\t\t\t\t\t\tstate.enableAttributeAndDivisor( programAttribute, geometryAttribute.meshPerAttribute );\n\n\t\t\t\t\t\t\tif ( geometry.maxInstancedCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry.maxInstancedCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.enableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffer );\n\t\t\t\t\t\t_gl.vertexAttribPointer( programAttribute, size, type, normalized, 0, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( materialDefaultAttributeValues !== undefined ) {\n\n\t\t\t\t\tvar value = materialDefaultAttributeValues[ name ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\tswitch ( value.length ) {\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib2fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib3fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib4fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib1fv( programAttribute, value );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.disableUnusedAttributes();\n\n\t}\n\n\t// Compile\n\n\tthis.compile = function ( scene, camera ) {\n\n\t\tcurrentRenderState = renderStates.get( scene, camera );\n\t\tcurrentRenderState.init();\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tif ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t\tcurrentRenderState.setupLights( camera );\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tif ( object.material ) {\n\n\t\t\t\tif ( Array.isArray( object.material ) ) {\n\n\t\t\t\t\tfor ( var i = 0; i < object.material.length; i ++ ) {\n\n\t\t\t\t\t\tinitMaterial( object.material[ i ], scene.fog, object );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tinitMaterial( object.material, scene.fog, object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t};\n\n\t// Animation Loop\n\n\tvar onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time ) {\n\n\t\tif ( vr.isPresenting() ) return;\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t}\n\n\tvar animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tif ( typeof window !== 'undefined' ) animation.setContext( window );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\t\tvr.setAnimationLoop( callback );\n\n\t\tanimation.start();\n\n\t};\n\n\t// Rendering\n\n\tthis.render = function ( scene, camera, renderTarget, forceClear ) {\n\n\t\tif ( ! ( camera && camera.isCamera ) ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( _isContextLost ) return;\n\n\t\t// reset caching for this frame\n\n\t\t_currentGeometryProgram.geometry = null;\n\t\t_currentGeometryProgram.program = null;\n\t\t_currentGeometryProgram.wireframe = false;\n\t\t_currentMaterialId = - 1;\n\t\t_currentCamera = null;\n\n\t\t// update scene graph\n\n\t\tif ( scene.autoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t// update camera matrices and frustum\n\n\t\tif ( camera.parent === null ) camera.updateMatrixWorld();\n\n\t\tif ( vr.enabled ) {\n\n\t\t\tcamera = vr.getCamera( camera );\n\n\t\t}\n\n\t\t//\n\n\t\tcurrentRenderState = renderStates.get( scene, camera );\n\t\tcurrentRenderState.init();\n\n\t\tscene.onBeforeRender( _this, scene, camera, renderTarget );\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t_frustum.setFromMatrix( _projScreenMatrix );\n\n\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t_clippingEnabled = _clipping.init( this.clippingPlanes, _localClippingEnabled, camera );\n\n\t\tcurrentRenderList = renderLists.get( scene, camera );\n\t\tcurrentRenderList.init();\n\n\t\tprojectObject( scene, camera, _this.sortObjects );\n\n\t\tif ( _this.sortObjects === true ) {\n\n\t\t\tcurrentRenderList.sort();\n\n\t\t}\n\n\t\t//\n\n\t\tif ( _clippingEnabled ) _clipping.beginShadows();\n\n\t\tvar shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tshadowMap.render( shadowsArray, scene, camera );\n\n\t\tcurrentRenderState.setupLights( camera );\n\n\t\tif ( _clippingEnabled ) _clipping.endShadows();\n\n\t\t//\n\n\t\tif ( this.info.autoReset ) this.info.reset();\n\n\t\tif ( renderTarget === undefined ) {\n\n\t\t\trenderTarget = null;\n\n\t\t}\n\n\t\tthis.setRenderTarget( renderTarget );\n\n\t\t//\n\n\t\tbackground.render( currentRenderList, scene, camera, forceClear );\n\n\t\t// render scene\n\n\t\tvar opaqueObjects = currentRenderList.opaque;\n\t\tvar transparentObjects = currentRenderList.transparent;\n\n\t\tif ( scene.overrideMaterial ) {\n\n\t\t\tvar overrideMaterial = scene.overrideMaterial;\n\n\t\t\tif ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera, overrideMaterial );\n\t\t\tif ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera, overrideMaterial );\n\n\t\t} else {\n\n\t\t\t// opaque pass (front-to-back order)\n\n\t\t\tif ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera );\n\n\t\t\t// transparent pass (back-to-front order)\n\n\t\t\tif ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera );\n\n\t\t}\n\n\t\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\tif ( renderTarget ) {\n\n\t\t\ttextures.updateRenderTargetMipmap( renderTarget );\n\n\t\t}\n\n\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\tstate.buffers.depth.setTest( true );\n\t\tstate.buffers.depth.setMask( true );\n\t\tstate.buffers.color.setMask( true );\n\n\t\tstate.setPolygonOffset( false );\n\n\t\tscene.onAfterRender( _this, scene, camera );\n\n\t\tif ( vr.enabled ) {\n\n\t\t\tvr.submitFrame();\n\n\t\t}\n\n\t\t// _gl.finish();\n\n\t\tcurrentRenderList = null;\n\t\tcurrentRenderState = null;\n\n\t};\n\n\t/*\n\t// TODO Duplicated code (Frustum)\n\n\tvar _sphere = new Sphere();\n\n\tfunction isObjectViewable( object ) {\n\n\t\tvar geometry = object.geometry;\n\n\t\tif ( geometry.boundingSphere === null )\n\t\t\tgeometry.computeBoundingSphere();\n\n\t\t_sphere.copy( geometry.boundingSphere ).\n\t\tapplyMatrix4( object.matrixWorld );\n\n\t\treturn isSphereViewable( _sphere );\n\n\t}\n\n\tfunction isSpriteViewable( sprite ) {\n\n\t\t_sphere.center.set( 0, 0, 0 );\n\t\t_sphere.radius = 0.7071067811865476;\n\t\t_sphere.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn isSphereViewable( _sphere );\n\n\t}\n\n\tfunction isSphereViewable( sphere ) {\n\n\t\tif ( ! _frustum.intersectsSphere( sphere ) ) return false;\n\n\t\tvar numPlanes = _clipping.numPlanes;\n\n\t\tif ( numPlanes === 0 ) return true;\n\n\t\tvar planes = _this.clippingPlanes,\n\n\t\t\tcenter = sphere.center,\n\t\t\tnegRad = - sphere.radius,\n\t\t\ti = 0;\n\n\t\tdo {\n\n\t\t\t// out when deeper than radius in the negative halfspace\n\t\t\tif ( planes[ i ].distanceToPoint( center ) < negRad ) return false;\n\n\t\t} while ( ++ i !== numPlanes );\n\n\t\treturn true;\n\n\t}\n\t*/\n\n\tfunction projectObject( object, camera, sortObjects ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tvar visible = object.layers.test( camera.layers );\n\n\t\tif ( visible ) {\n\n\t\t\tif ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar geometry = objects.update( object );\n\t\t\t\t\tvar material = object.material;\n\n\t\t\t\t\tcurrentRenderList.push( object, geometry, material, _vector3.z, null );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isImmediateRenderObject ) {\n\n\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t}\n\n\t\t\t\tcurrentRenderList.push( object, null, object.material, _vector3.z, null );\n\n\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\t\tobject.skeleton.update();\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar geometry = objects.update( object );\n\t\t\t\t\tvar material = object.material;\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tvar groups = geometry.groups;\n\n\t\t\t\t\t\tfor ( var i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\tvar group = groups[ i ];\n\t\t\t\t\t\t\tvar groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, groupMaterial, _vector3.z, group );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar children = object.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tprojectObject( children[ i ], camera, sortObjects );\n\n\t\t}\n\n\t}\n\n\tfunction renderObjects( renderList, scene, camera, overrideMaterial ) {\n\n\t\tfor ( var i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\tvar renderItem = renderList[ i ];\n\n\t\t\tvar object = renderItem.object;\n\t\t\tvar geometry = renderItem.geometry;\n\t\t\tvar material = overrideMaterial === undefined ? renderItem.material : overrideMaterial;\n\t\t\tvar group = renderItem.group;\n\n\t\t\tif ( camera.isArrayCamera ) {\n\n\t\t\t\t_currentArrayCamera = camera;\n\n\t\t\t\tvar cameras = camera.cameras;\n\n\t\t\t\tfor ( var j = 0, jl = cameras.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar camera2 = cameras[ j ];\n\n\t\t\t\t\tif ( object.layers.test( camera2.layers ) ) {\n\n\t\t\t\t\t\tif ( 'viewport' in camera2 ) { // XR\n\n\t\t\t\t\t\t\tstate.viewport( _currentViewport.copy( camera2.viewport ) );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tvar bounds = camera2.bounds;\n\n\t\t\t\t\t\t\tvar x = bounds.x * _width;\n\t\t\t\t\t\t\tvar y = bounds.y * _height;\n\t\t\t\t\t\t\tvar width = bounds.z * _width;\n\t\t\t\t\t\t\tvar height = bounds.w * _height;\n\n\t\t\t\t\t\t\tstate.viewport( _currentViewport.set( x, y, width, height ).multiplyScalar( _pixelRatio ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\trenderObject( object, scene, camera2, geometry, material, group );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_currentArrayCamera = null;\n\n\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction renderObject( object, scene, camera, geometry, material, group ) {\n\n\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\t\tcurrentRenderState = renderStates.get( scene, _currentArrayCamera || camera );\n\n\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\tif ( object.isImmediateRenderObject ) {\n\n\t\t\tstate.setMaterial( material );\n\n\t\t\tvar program = setProgram( camera, scene.fog, material, object );\n\n\t\t\t_currentGeometryProgram.geometry = null;\n\t\t\t_currentGeometryProgram.program = null;\n\t\t\t_currentGeometryProgram.wireframe = false;\n\n\t\t\trenderObjectImmediate( object, program );\n\n\t\t} else {\n\n\t\t\t_this.renderBufferDirect( camera, scene.fog, geometry, material, object, group );\n\n\t\t}\n\n\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\t\tcurrentRenderState = renderStates.get( scene, _currentArrayCamera || camera );\n\n\t}\n\n\tfunction initMaterial( material, fog, object ) {\n\n\t\tvar materialProperties = properties.get( material );\n\n\t\tvar lights = currentRenderState.state.lights;\n\t\tvar shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tvar lightsHash = materialProperties.lightsHash;\n\t\tvar lightsStateHash = lights.state.hash;\n\n\t\tvar parameters = programCache.getParameters(\n\t\t\tmaterial, lights.state, shadowsArray, fog, _clipping.numPlanes, _clipping.numIntersection, object );\n\n\t\tvar code = programCache.getProgramCode( material, parameters );\n\n\t\tvar program = materialProperties.program;\n\t\tvar programChange = true;\n\n\t\tif ( program === undefined ) {\n\n\t\t\t// new material\n\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t} else if ( program.code !== code ) {\n\n\t\t\t// changed glsl or parameters\n\t\t\treleaseMaterialProgramReference( material );\n\n\t\t} else if ( lightsHash.stateID !== lightsStateHash.stateID ||\n\t\t\tlightsHash.directionalLength !== lightsStateHash.directionalLength ||\n\t\t\tlightsHash.pointLength !== lightsStateHash.pointLength ||\n\t\t\tlightsHash.spotLength !== lightsStateHash.spotLength ||\n\t\t\tlightsHash.rectAreaLength !== lightsStateHash.rectAreaLength ||\n\t\t\tlightsHash.hemiLength !== lightsStateHash.hemiLength ||\n\t\t\tlightsHash.shadowsLength !== lightsStateHash.shadowsLength ) {\n\n\t\t\tlightsHash.stateID = lightsStateHash.stateID;\n\t\t\tlightsHash.directionalLength = lightsStateHash.directionalLength;\n\t\t\tlightsHash.pointLength = lightsStateHash.pointLength;\n\t\t\tlightsHash.spotLength = lightsStateHash.spotLength;\n\t\t\tlightsHash.rectAreaLength = lightsStateHash.rectAreaLength;\n\t\t\tlightsHash.hemiLength = lightsStateHash.hemiLength;\n\t\t\tlightsHash.shadowsLength = lightsStateHash.shadowsLength;\n\n\t\t\tprogramChange = false;\n\n\t\t} else if ( parameters.shaderID !== undefined ) {\n\n\t\t\t// same glsl and uniform list\n\t\t\treturn;\n\n\t\t} else {\n\n\t\t\t// only rebuild uniform list\n\t\t\tprogramChange = false;\n\n\t\t}\n\n\t\tif ( programChange ) {\n\n\t\t\tif ( parameters.shaderID ) {\n\n\t\t\t\tvar shader = ShaderLib[ parameters.shaderID ];\n\n\t\t\t\tmaterialProperties.shader = {\n\t\t\t\t\tname: material.type,\n\t\t\t\t\tuniforms: UniformsUtils.clone( shader.uniforms ),\n\t\t\t\t\tvertexShader: shader.vertexShader,\n\t\t\t\t\tfragmentShader: shader.fragmentShader\n\t\t\t\t};\n\n\t\t\t} else {\n\n\t\t\t\tmaterialProperties.shader = {\n\t\t\t\t\tname: material.type,\n\t\t\t\t\tuniforms: material.uniforms,\n\t\t\t\t\tvertexShader: material.vertexShader,\n\t\t\t\t\tfragmentShader: material.fragmentShader\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tmaterial.onBeforeCompile( materialProperties.shader, _this );\n\n\t\t\t// Computing code again as onBeforeCompile may have changed the shaders\n\t\t\tcode = programCache.getProgramCode( material, parameters );\n\n\t\t\tprogram = programCache.acquireProgram( material, materialProperties.shader, parameters, code );\n\n\t\t\tmaterialProperties.program = program;\n\t\t\tmaterial.program = program;\n\n\t\t}\n\n\t\tvar programAttributes = program.getAttributes();\n\n\t\tif ( material.morphTargets ) {\n\n\t\t\tmaterial.numSupportedMorphTargets = 0;\n\n\t\t\tfor ( var i = 0; i < _this.maxMorphTargets; i ++ ) {\n\n\t\t\t\tif ( programAttributes[ 'morphTarget' + i ] >= 0 ) {\n\n\t\t\t\t\tmaterial.numSupportedMorphTargets ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.morphNormals ) {\n\n\t\t\tmaterial.numSupportedMorphNormals = 0;\n\n\t\t\tfor ( var i = 0; i < _this.maxMorphNormals; i ++ ) {\n\n\t\t\t\tif ( programAttributes[ 'morphNormal' + i ] >= 0 ) {\n\n\t\t\t\t\tmaterial.numSupportedMorphNormals ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar uniforms = materialProperties.shader.uniforms;\n\n\t\tif ( ! material.isShaderMaterial &&\n\t\t\t! material.isRawShaderMaterial ||\n\t\t\tmaterial.clipping === true ) {\n\n\t\t\tmaterialProperties.numClippingPlanes = _clipping.numPlanes;\n\t\t\tmaterialProperties.numIntersection = _clipping.numIntersection;\n\t\t\tuniforms.clippingPlanes = _clipping.uniform;\n\n\t\t}\n\n\t\tmaterialProperties.fog = fog;\n\n\t\t// store the light setup it was created for\n\t\tif ( lightsHash === undefined ) {\n\n\t\t\tmaterialProperties.lightsHash = lightsHash = {};\n\n\t\t}\n\n\t\tlightsHash.stateID = lightsStateHash.stateID;\n\t\tlightsHash.directionalLength = lightsStateHash.directionalLength;\n\t\tlightsHash.pointLength = lightsStateHash.pointLength;\n\t\tlightsHash.spotLength = lightsStateHash.spotLength;\n\t\tlightsHash.rectAreaLength = lightsStateHash.rectAreaLength;\n\t\tlightsHash.hemiLength = lightsStateHash.hemiLength;\n\t\tlightsHash.shadowsLength = lightsStateHash.shadowsLength;\n\n\t\tif ( material.lights ) {\n\n\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\tuniforms.ambientLightColor.value = lights.state.ambient;\n\t\t\tuniforms.directionalLights.value = lights.state.directional;\n\t\t\tuniforms.spotLights.value = lights.state.spot;\n\t\t\tuniforms.rectAreaLights.value = lights.state.rectArea;\n\t\t\tuniforms.pointLights.value = lights.state.point;\n\t\t\tuniforms.hemisphereLights.value = lights.state.hemi;\n\n\t\t\tuniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n\t\t\tuniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n\t\t\tuniforms.spotShadowMap.value = lights.state.spotShadowMap;\n\t\t\tuniforms.spotShadowMatrix.value = lights.state.spotShadowMatrix;\n\t\t\tuniforms.pointShadowMap.value = lights.state.pointShadowMap;\n\t\t\tuniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n\t\t\t// TODO (abelnation): add area lights shadow info to uniforms\n\n\t\t}\n\n\t\tvar progUniforms = materialProperties.program.getUniforms(),\n\t\t\tuniformsList =\n\t\t\t\tWebGLUniforms.seqWithValue( progUniforms.seq, uniforms );\n\n\t\tmaterialProperties.uniformsList = uniformsList;\n\n\t}\n\n\tfunction setProgram( camera, fog, material, object ) {\n\n\t\t_usedTextureUnits = 0;\n\n\t\tvar materialProperties = properties.get( material );\n\t\tvar lights = currentRenderState.state.lights;\n\n\t\tvar lightsHash = materialProperties.lightsHash;\n\t\tvar lightsStateHash = lights.state.hash;\n\n\t\tif ( _clippingEnabled ) {\n\n\t\t\tif ( _localClippingEnabled || camera !== _currentCamera ) {\n\n\t\t\t\tvar useCache =\n\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t// (#8465, #8379)\n\t\t\t\t_clipping.setState(\n\t\t\t\t\tmaterial.clippingPlanes, material.clipIntersection, material.clipShadows,\n\t\t\t\t\tcamera, materialProperties, useCache );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.needsUpdate === false ) {\n\n\t\t\tif ( materialProperties.program === undefined ) {\n\n\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t} else if ( material.fog && materialProperties.fog !== fog ) {\n\n\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t} else if ( material.lights && ( lightsHash.stateID !== lightsStateHash.stateID ||\n\t\t\t\tlightsHash.directionalLength !== lightsStateHash.directionalLength ||\n\t\t\t\tlightsHash.pointLength !== lightsStateHash.pointLength ||\n\t\t\t\tlightsHash.spotLength !== lightsStateHash.spotLength ||\n\t\t\t\tlightsHash.rectAreaLength !== lightsStateHash.rectAreaLength ||\n\t\t\t\tlightsHash.hemiLength !== lightsStateHash.hemiLength ||\n\t\t\t\tlightsHash.shadowsLength !== lightsStateHash.shadowsLength ) ) {\n\n\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t} else if ( materialProperties.numClippingPlanes !== undefined &&\n\t\t\t\t( materialProperties.numClippingPlanes !== _clipping.numPlanes ||\n\t\t\t\tmaterialProperties.numIntersection !== _clipping.numIntersection ) ) {\n\n\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.needsUpdate ) {\n\n\t\t\tinitMaterial( material, fog, object );\n\t\t\tmaterial.needsUpdate = false;\n\n\t\t}\n\n\t\tvar refreshProgram = false;\n\t\tvar refreshMaterial = false;\n\t\tvar refreshLights = false;\n\n\t\tvar program = materialProperties.program,\n\t\t\tp_uniforms = program.getUniforms(),\n\t\t\tm_uniforms = materialProperties.shader.uniforms;\n\n\t\tif ( state.useProgram( program.program ) ) {\n\n\t\t\trefreshProgram = true;\n\t\t\trefreshMaterial = true;\n\t\t\trefreshLights = true;\n\n\t\t}\n\n\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t_currentMaterialId = material.id;\n\n\t\t\trefreshMaterial = true;\n\n\t\t}\n\n\t\tif ( refreshProgram || camera !== _currentCamera ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );\n\n\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t}\n\n\t\t\t// Avoid unneeded uniform updates per ArrayCamera's sub-camera\n\n\t\t\tif ( _currentCamera !== ( _currentArrayCamera || camera ) ) {\n\n\t\t\t\t_currentCamera = ( _currentArrayCamera || camera );\n\n\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t}\n\n\t\t\t// load material specific uniforms\n\t\t\t// (shader material also gets them for the sake of genericity)\n\n\t\t\tif ( material.isShaderMaterial ||\n\t\t\t\tmaterial.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.envMap ) {\n\n\t\t\t\tvar uCamPos = p_uniforms.map.cameraPosition;\n\n\t\t\t\tif ( uCamPos !== undefined ) {\n\n\t\t\t\t\tuCamPos.setValue( _gl,\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ||\n\t\t\t\tmaterial.skinning ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// skinning uniforms must be set even if material didn't change\n\t\t// auto-setting of texture unit for bone texture must go before other textures\n\t\t// not sure why, but otherwise weird things happen\n\n\t\tif ( material.skinning ) {\n\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\tvar skeleton = object.skeleton;\n\n\t\t\tif ( skeleton ) {\n\n\t\t\t\tvar bones = skeleton.bones;\n\n\t\t\t\tif ( capabilities.floatVertexTextures ) {\n\n\t\t\t\t\tif ( skeleton.boneTexture === undefined ) {\n\n\t\t\t\t\t\t// layout (1 matrix = 4 pixels)\n\t\t\t\t\t\t//      RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t\t\t\t\t//  with  8x8  pixel texture max   16 bones * 4 pixels =  (8 * 8)\n\t\t\t\t\t\t//       16x16 pixel texture max   64 bones * 4 pixels = (16 * 16)\n\t\t\t\t\t\t//       32x32 pixel texture max  256 bones * 4 pixels = (32 * 32)\n\t\t\t\t\t\t//       64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\n\t\t\t\t\t\tvar size = Math.sqrt( bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\t\t\t\t\tsize = _Math.ceilPowerOfTwo( size );\n\t\t\t\t\t\tsize = Math.max( size, 4 );\n\n\t\t\t\t\t\tvar boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\t\t\t\t\tboneMatrices.set( skeleton.boneMatrices ); // copy current values\n\n\t\t\t\t\t\tvar boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );\n\t\t\t\t\t\tboneTexture.needsUpdate = true;\n\n\t\t\t\t\t\tskeleton.boneMatrices = boneMatrices;\n\t\t\t\t\t\tskeleton.boneTexture = boneTexture;\n\t\t\t\t\t\tskeleton.boneTextureSize = size;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture );\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTextureSize', skeleton.boneTextureSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tp_uniforms.setOptional( _gl, skeleton, 'boneMatrices' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( refreshMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );\n\t\t\tp_uniforms.setValue( _gl, 'toneMappingWhitePoint', _this.toneMappingWhitePoint );\n\n\t\t\tif ( material.lights ) {\n\n\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t// values\n\t\t\t\t//\n\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t// the GL state when required\n\n\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t}\n\n\t\t\t// refresh uniforms common to several materials\n\n\t\t\tif ( fog && material.fog ) {\n\n\t\t\t\trefreshUniformsFog( m_uniforms, fog );\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshBasicMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshLambertMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\t\t\t\trefreshUniformsLambert( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshPhongMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\n\t\t\t\tif ( material.isMeshToonMaterial ) {\n\n\t\t\t\t\trefreshUniformsToon( m_uniforms, material );\n\n\t\t\t\t} else {\n\n\t\t\t\t\trefreshUniformsPhong( m_uniforms, material );\n\n\t\t\t\t}\n\n\t\t\t} else if ( material.isMeshStandardMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\n\t\t\t\tif ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\t\trefreshUniformsPhysical( m_uniforms, material );\n\n\t\t\t\t} else {\n\n\t\t\t\t\trefreshUniformsStandard( m_uniforms, material );\n\n\t\t\t\t}\n\n\t\t\t} else if ( material.isMeshDepthMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\t\t\t\trefreshUniformsDepth( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshDistanceMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\t\t\t\trefreshUniformsDistance( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\t\t\t\trefreshUniformsNormal( m_uniforms, material );\n\n\t\t\t} else if ( material.isLineBasicMaterial ) {\n\n\t\t\t\trefreshUniformsLine( m_uniforms, material );\n\n\t\t\t\tif ( material.isLineDashedMaterial ) {\n\n\t\t\t\t\trefreshUniformsDash( m_uniforms, material );\n\n\t\t\t\t}\n\n\t\t\t} else if ( material.isPointsMaterial ) {\n\n\t\t\t\trefreshUniformsPoints( m_uniforms, material );\n\n\t\t\t} else if ( material.isSpriteMaterial ) {\n\n\t\t\t\trefreshUniformsSprites( m_uniforms, material );\n\n\t\t\t} else if ( material.isShadowMaterial ) {\n\n\t\t\t\tm_uniforms.color.value = material.color;\n\t\t\t\tm_uniforms.opacity.value = material.opacity;\n\n\t\t\t}\n\n\t\t\t// RectAreaLight Texture\n\t\t\t// TODO (mrdoob): Find a nicer implementation\n\n\t\t\tif ( m_uniforms.ltc_1 !== undefined ) m_uniforms.ltc_1.value = UniformsLib.LTC_1;\n\t\t\tif ( m_uniforms.ltc_2 !== undefined ) m_uniforms.ltc_2.value = UniformsLib.LTC_2;\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, _this );\n\n\t\t}\n\n\t\tif ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) {\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, _this );\n\t\t\tmaterial.uniformsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( material.isSpriteMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'center', object.center );\n\n\t\t}\n\n\t\t// common matrices\n\n\t\tp_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix );\n\t\tp_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix );\n\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\n\n\t\treturn program;\n\n\t}\n\n\t// Uniforms (refresh uniforms objects)\n\n\tfunction refreshUniformsCommon( uniforms, material ) {\n\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.color ) {\n\n\t\t\tuniforms.diffuse.value = material.color;\n\n\t\t}\n\n\t\tif ( material.emissive ) {\n\n\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t}\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.specularMap ) {\n\n\t\t\tuniforms.specularMap.value = material.specularMap;\n\n\t\t}\n\n\t\tif ( material.envMap ) {\n\n\t\t\tuniforms.envMap.value = material.envMap;\n\n\t\t\t// don't flip CubeTexture envMaps, flip everything else:\n\t\t\t//  WebGLRenderTargetCube will be flipped for backwards compatibility\n\t\t\t//  WebGLRenderTargetCube.texture will be flipped because it's a Texture and NOT a CubeTexture\n\t\t\t// this check must be handled differently, or removed entirely, if WebGLRenderTargetCube uses a CubeTexture in the future\n\t\t\tuniforms.flipEnvMap.value = ( ! ( material.envMap && material.envMap.isCubeTexture ) ) ? 1 : - 1;\n\n\t\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t\tuniforms.maxMipLevel.value = properties.get( material.envMap ).__maxMipLevel;\n\n\t\t}\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. specular map\n\t\t// 3. normal map\n\t\t// 4. bump map\n\t\t// 5. alpha map\n\t\t// 6. emissive map\n\n\t\tvar uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.specularMap ) {\n\n\t\t\tuvScaleMap = material.specularMap;\n\n\t\t} else if ( material.displacementMap ) {\n\n\t\t\tuvScaleMap = material.displacementMap;\n\n\t\t} else if ( material.normalMap ) {\n\n\t\t\tuvScaleMap = material.normalMap;\n\n\t\t} else if ( material.bumpMap ) {\n\n\t\t\tuvScaleMap = material.bumpMap;\n\n\t\t} else if ( material.roughnessMap ) {\n\n\t\t\tuvScaleMap = material.roughnessMap;\n\n\t\t} else if ( material.metalnessMap ) {\n\n\t\t\tuvScaleMap = material.metalnessMap;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t} else if ( material.emissiveMap ) {\n\n\t\t\tuvScaleMap = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uvScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuvScaleMap = uvScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLine( uniforms, material ) {\n\n\t\tuniforms.diffuse.value = material.color;\n\t\tuniforms.opacity.value = material.opacity;\n\n\t}\n\n\tfunction refreshUniformsDash( uniforms, material ) {\n\n\t\tuniforms.dashSize.value = material.dashSize;\n\t\tuniforms.totalSize.value = material.dashSize + material.gapSize;\n\t\tuniforms.scale.value = material.scale;\n\n\t}\n\n\tfunction refreshUniformsPoints( uniforms, material ) {\n\n\t\tuniforms.diffuse.value = material.color;\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.size.value = material.size * _pixelRatio;\n\t\tuniforms.scale.value = _height * 0.5;\n\n\t\tuniforms.map.value = material.map;\n\n\t\tif ( material.map !== null ) {\n\n\t\t\tif ( material.map.matrixAutoUpdate === true ) {\n\n\t\t\t\tmaterial.map.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( material.map.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsSprites( uniforms, material ) {\n\n\t\tuniforms.diffuse.value = material.color;\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.rotation.value = material.rotation;\n\t\tuniforms.map.value = material.map;\n\n\t\tif ( material.map !== null ) {\n\n\t\t\tif ( material.map.matrixAutoUpdate === true ) {\n\n\t\t\t\tmaterial.map.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( material.map.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsFog( uniforms, fog ) {\n\n\t\tuniforms.fogColor.value = fog.color;\n\n\t\tif ( fog.isFog ) {\n\n\t\t\tuniforms.fogNear.value = fog.near;\n\t\t\tuniforms.fogFar.value = fog.far;\n\n\t\t} else if ( fog.isFogExp2 ) {\n\n\t\t\tuniforms.fogDensity.value = fog.density;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLambert( uniforms, material ) {\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhong( uniforms, material ) {\n\n\t\tuniforms.specular.value = material.specular;\n\t\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsToon( uniforms, material ) {\n\n\t\trefreshUniformsPhong( uniforms, material );\n\n\t\tif ( material.gradientMap ) {\n\n\t\t\tuniforms.gradientMap.value = material.gradientMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsStandard( uniforms, material ) {\n\n\t\tuniforms.roughness.value = material.roughness;\n\t\tuniforms.metalness.value = material.metalness;\n\n\t\tif ( material.roughnessMap ) {\n\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t}\n\n\t\tif ( material.metalnessMap ) {\n\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tif ( material.envMap ) {\n\n\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhysical( uniforms, material ) {\n\n\t\trefreshUniformsStandard( uniforms, material );\n\n\t\tuniforms.reflectivity.value = material.reflectivity; // also part of uniforms common\n\n\t\tuniforms.clearCoat.value = material.clearCoat;\n\t\tuniforms.clearCoatRoughness.value = material.clearCoatRoughness;\n\n\t}\n\n\tfunction refreshUniformsDepth( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDistance( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tuniforms.referencePosition.value.copy( material.referencePosition );\n\t\tuniforms.nearDistance.value = material.nearDistance;\n\t\tuniforms.farDistance.value = material.farDistance;\n\n\t}\n\n\tfunction refreshUniformsNormal( uniforms, material ) {\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\n\n\t\tuniforms.ambientLightColor.needsUpdate = value;\n\n\t\tuniforms.directionalLights.needsUpdate = value;\n\t\tuniforms.pointLights.needsUpdate = value;\n\t\tuniforms.spotLights.needsUpdate = value;\n\t\tuniforms.rectAreaLights.needsUpdate = value;\n\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t}\n\n\t// Textures\n\n\tfunction allocTextureUnit() {\n\n\t\tvar textureUnit = _usedTextureUnits;\n\n\t\tif ( textureUnit >= capabilities.maxTextures ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + capabilities.maxTextures );\n\n\t\t}\n\n\t\t_usedTextureUnits += 1;\n\n\t\treturn textureUnit;\n\n\t}\n\n\tthis.allocTextureUnit = allocTextureUnit;\n\n\t// this.setTexture2D = setTexture2D;\n\tthis.setTexture2D = ( function () {\n\n\t\tvar warned = false;\n\n\t\t// backwards compatibility: peel texture.texture\n\t\treturn function setTexture2D( texture, slot ) {\n\n\t\t\tif ( texture && texture.isWebGLRenderTarget ) {\n\n\t\t\t\tif ( ! warned ) {\n\n\t\t\t\t\tconsole.warn( \"THREE.WebGLRenderer.setTexture2D: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\t\t\twarned = true;\n\n\t\t\t\t}\n\n\t\t\t\ttexture = texture.texture;\n\n\t\t\t}\n\n\t\t\ttextures.setTexture2D( texture, slot );\n\n\t\t};\n\n\t}() );\n\n\tthis.setTexture = ( function () {\n\n\t\tvar warned = false;\n\n\t\treturn function setTexture( texture, slot ) {\n\n\t\t\tif ( ! warned ) {\n\n\t\t\t\tconsole.warn( \"THREE.WebGLRenderer: .setTexture is deprecated, use setTexture2D instead.\" );\n\t\t\t\twarned = true;\n\n\t\t\t}\n\n\t\t\ttextures.setTexture2D( texture, slot );\n\n\t\t};\n\n\t}() );\n\n\tthis.setTextureCube = ( function () {\n\n\t\tvar warned = false;\n\n\t\treturn function setTextureCube( texture, slot ) {\n\n\t\t\t// backwards compatibility: peel texture.texture\n\t\t\tif ( texture && texture.isWebGLRenderTargetCube ) {\n\n\t\t\t\tif ( ! warned ) {\n\n\t\t\t\t\tconsole.warn( \"THREE.WebGLRenderer.setTextureCube: don't use cube render targets as textures. Use their .texture property instead.\" );\n\t\t\t\t\twarned = true;\n\n\t\t\t\t}\n\n\t\t\t\ttexture = texture.texture;\n\n\t\t\t}\n\n\t\t\t// currently relying on the fact that WebGLRenderTargetCube.texture is a Texture and NOT a CubeTexture\n\t\t\t// TODO: unify these code paths\n\t\t\tif ( ( texture && texture.isCubeTexture ) ||\n\t\t\t\t( Array.isArray( texture.image ) && texture.image.length === 6 ) ) {\n\n\t\t\t\t// CompressedTexture can have Array in image :/\n\n\t\t\t\t// this function alone should take care of cube textures\n\t\t\t\ttextures.setTextureCube( texture, slot );\n\n\t\t\t} else {\n\n\t\t\t\t// assumed: texture property of THREE.WebGLRenderTargetCube\n\n\t\t\t\ttextures.setTextureCubeDynamic( texture, slot );\n\n\t\t\t}\n\n\t\t};\n\n\t}() );\n\n\t//\n\n\tthis.setFramebuffer = function ( value ) {\n\n\t\t_framebuffer = value;\n\n\t};\n\n\tthis.getRenderTarget = function () {\n\n\t\treturn _currentRenderTarget;\n\n\t};\n\n\tthis.setRenderTarget = function ( renderTarget ) {\n\n\t\t_currentRenderTarget = renderTarget;\n\n\t\tif ( renderTarget && properties.get( renderTarget ).__webglFramebuffer === undefined ) {\n\n\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t}\n\n\t\tvar framebuffer = _framebuffer;\n\t\tvar isCube = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tvar __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\tif ( renderTarget.isWebGLRenderTargetCube ) {\n\n\t\t\t\tframebuffer = __webglFramebuffer[ renderTarget.activeCubeFace ];\n\t\t\t\tisCube = true;\n\n\t\t\t} else {\n\n\t\t\t\tframebuffer = __webglFramebuffer;\n\n\t\t\t}\n\n\t\t\t_currentViewport.copy( renderTarget.viewport );\n\t\t\t_currentScissor.copy( renderTarget.scissor );\n\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\n\t\t} else {\n\n\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio );\n\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio );\n\t\t\t_currentScissorTest = _scissorTest;\n\n\t\t}\n\n\t\tif ( _currentFramebuffer !== framebuffer ) {\n\n\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\t\t\t_currentFramebuffer = framebuffer;\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport );\n\t\tstate.scissor( _currentScissor );\n\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\tif ( isCube ) {\n\n\t\t\tvar textureProperties = properties.get( renderTarget.texture );\n\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + renderTarget.activeCubeFace, textureProperties.__webglTexture, renderTarget.activeMipMapLevel );\n\n\t\t}\n\n\t};\n\n\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer ) {\n\n\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\tif ( framebuffer ) {\n\n\t\t\tvar restore = false;\n\n\t\t\tif ( framebuffer !== _currentFramebuffer ) {\n\n\t\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\t\trestore = true;\n\n\t\t\t}\n\n\t\t\ttry {\n\n\t\t\t\tvar texture = renderTarget.texture;\n\t\t\t\tvar textureFormat = texture.format;\n\t\t\t\tvar textureType = texture.type;\n\n\t\t\t\tif ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( _gl.IMPLEMENTATION_COLOR_READ_FORMAT ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( _gl.IMPLEMENTATION_COLOR_READ_TYPE ) && // IE11, Edge and Chrome Mac < 52 (#9513)\n\t\t\t\t\t! ( textureType === FloatType && ( capabilities.isWebGL2 || extensions.get( 'OES_texture_float' ) || extensions.get( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox\n\t\t\t\t\t! ( textureType === HalfFloatType && ( capabilities.isWebGL2 ? extensions.get( 'EXT_color_buffer_float' ) : extensions.get( 'EXT_color_buffer_half_float' ) ) ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _gl.checkFramebufferStatus( _gl.FRAMEBUFFER ) === _gl.FRAMEBUFFER_COMPLETE ) {\n\n\t\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n\t\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t\t_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' );\n\n\t\t\t\t}\n\n\t\t\t} finally {\n\n\t\t\t\tif ( restore ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, _currentFramebuffer );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.copyFramebufferToTexture = function ( position, texture, level ) {\n\n\t\tvar width = texture.image.width;\n\t\tvar height = texture.image.height;\n\t\tvar glFormat = utils.convert( texture.format );\n\n\t\tthis.setTexture2D( texture, 0 );\n\n\t\t_gl.copyTexImage2D( _gl.TEXTURE_2D, level || 0, glFormat, position.x, position.y, width, height, 0 );\n\n\t};\n\n\tthis.copyTextureToTexture = function ( position, srcTexture, dstTexture, level ) {\n\n\t\tvar width = srcTexture.image.width;\n\t\tvar height = srcTexture.image.height;\n\t\tvar glFormat = utils.convert( dstTexture.format );\n\t\tvar glType = utils.convert( dstTexture.type );\n\n\t\tthis.setTexture2D( dstTexture, 0 );\n\n\t\tif ( srcTexture.isDataTexture ) {\n\n\t\t\t_gl.texSubImage2D( _gl.TEXTURE_2D, level || 0, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data );\n\n\t\t} else {\n\n\t\t\t_gl.texSubImage2D( _gl.TEXTURE_2D, level || 0, position.x, position.y, glFormat, glType, srcTexture.image );\n\n\t\t}\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction FogExp2( color, density ) {\n\n\tthis.name = '';\n\n\tthis.color = new Color( color );\n\tthis.density = ( density !== undefined ) ? density : 0.00025;\n\n}\n\nFogExp2.prototype.isFogExp2 = true;\n\nFogExp2.prototype.clone = function () {\n\n\treturn new FogExp2( this.color, this.density );\n\n};\n\nFogExp2.prototype.toJSON = function ( /* meta */ ) {\n\n\treturn {\n\t\ttype: 'FogExp2',\n\t\tcolor: this.color.getHex(),\n\t\tdensity: this.density\n\t};\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Fog( color, near, far ) {\n\n\tthis.name = '';\n\n\tthis.color = new Color( color );\n\n\tthis.near = ( near !== undefined ) ? near : 1;\n\tthis.far = ( far !== undefined ) ? far : 1000;\n\n}\n\nFog.prototype.isFog = true;\n\nFog.prototype.clone = function () {\n\n\treturn new Fog( this.color, this.near, this.far );\n\n};\n\nFog.prototype.toJSON = function ( /* meta */ ) {\n\n\treturn {\n\t\ttype: 'Fog',\n\t\tcolor: this.color.getHex(),\n\t\tnear: this.near,\n\t\tfar: this.far\n\t};\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Scene() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Scene';\n\n\tthis.background = null;\n\tthis.fog = null;\n\tthis.overrideMaterial = null;\n\n\tthis.autoUpdate = true; // checked by the renderer\n\n}\n\nScene.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Scene,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tObject3D.prototype.copy.call( this, source, recursive );\n\n\t\tif ( source.background !== null ) this.background = source.background.clone();\n\t\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\t\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tif ( this.background !== null ) data.object.background = this.background.toJSON( meta );\n\t\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InterleavedBuffer( array, stride ) {\n\n\tthis.array = array;\n\tthis.stride = stride;\n\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\tthis.dynamic = false;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n}\n\nObject.defineProperty( InterleavedBuffer.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nObject.assign( InterleavedBuffer.prototype, {\n\n\tisInterleavedBuffer: true,\n\n\tonUploadCallback: function () {},\n\n\tsetArray: function ( array ) {\n\n\t\tif ( Array.isArray( array ) ) {\n\n\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t}\n\n\t\tthis.count = array !== undefined ? array.length / this.stride : 0;\n\t\tthis.array = array;\n\n\t\treturn this;\n\n\t},\n\n\tsetDynamic: function ( value ) {\n\n\t\tthis.dynamic = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.count = source.count;\n\t\tthis.stride = source.stride;\n\t\tthis.dynamic = source.dynamic;\n\n\t\treturn this;\n\n\t},\n\n\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.stride;\n\t\tindex2 *= attribute.stride;\n\n\t\tfor ( var i = 0, l = this.stride; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tonUpload: function ( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InterleavedBufferAttribute( interleavedBuffer, itemSize, offset, normalized ) {\n\n\tthis.data = interleavedBuffer;\n\tthis.itemSize = itemSize;\n\tthis.offset = offset;\n\n\tthis.normalized = normalized === true;\n\n}\n\nObject.defineProperties( InterleavedBufferAttribute.prototype, {\n\n\tcount: {\n\n\t\tget: function () {\n\n\t\t\treturn this.data.count;\n\n\t\t}\n\n\t},\n\n\tarray: {\n\n\t\tget: function () {\n\n\t\t\treturn this.data.array;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( InterleavedBufferAttribute.prototype, {\n\n\tisInterleavedBufferAttribute: true,\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset ];\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\t\tthis.data.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n *  color: <hex>,\n *  opacity: <float>,\n *  map: new THREE.Texture( <Image> ),\n *\n *\tuvOffset: new THREE.Vector2(),\n *\tuvScale: new THREE.Vector2()\n * }\n */\n\nfunction SpriteMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'SpriteMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\tthis.map = null;\n\n\tthis.rotation = 0;\n\n\tthis.lights = false;\n\tthis.transparent = true;\n\n\tthis.setValues( parameters );\n\n}\n\nSpriteMaterial.prototype = Object.create( Material.prototype );\nSpriteMaterial.prototype.constructor = SpriteMaterial;\nSpriteMaterial.prototype.isSpriteMaterial = true;\n\nSpriteMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\tthis.map = source.map;\n\n\tthis.rotation = source.rotation;\n\n\treturn this;\n\n};\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n */\n\nvar geometry;\n\nfunction Sprite( material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Sprite';\n\n\tif ( geometry === undefined ) {\n\n\t\tgeometry = new BufferGeometry();\n\n\t\tvar float32Array = new Float32Array( [\n\t\t\t- 0.5, - 0.5, 0, 0, 0,\n\t\t\t0.5, - 0.5, 0, 1, 0,\n\t\t\t0.5, 0.5, 0, 1, 1,\n\t\t\t- 0.5, 0.5, 0, 0, 1\n\t\t] );\n\n\t\tvar interleavedBuffer = new InterleavedBuffer( float32Array, 5 );\n\n\t\tgeometry.setIndex( [ 0, 1, 2,\t0, 2, 3 ] );\n\t\tgeometry.addAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) );\n\t\tgeometry.addAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) );\n\n\t}\n\n\tthis.geometry = geometry;\n\tthis.material = ( material !== undefined ) ? material : new SpriteMaterial();\n\n\tthis.center = new Vector2( 0.5, 0.5 );\n\n}\n\nSprite.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Sprite,\n\n\tisSprite: true,\n\n\traycast: ( function () {\n\n\t\tvar intersectPoint = new Vector3();\n\t\tvar worldScale = new Vector3();\n\t\tvar mvPosition = new Vector3();\n\n\t\tvar alignedPosition = new Vector2();\n\t\tvar rotatedPosition = new Vector2();\n\t\tvar viewWorldMatrix = new Matrix4();\n\n\t\tvar vA = new Vector3();\n\t\tvar vB = new Vector3();\n\t\tvar vC = new Vector3();\n\n\t\tfunction transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) {\n\n\t\t\t// compute position in camera space\n\t\t\talignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale );\n\n\t\t\t// to check if rotation is not zero\n\t\t\tif ( sin !== undefined ) {\n\n\t\t\t\trotatedPosition.x = ( cos * alignedPosition.x ) - ( sin * alignedPosition.y );\n\t\t\t\trotatedPosition.y = ( sin * alignedPosition.x ) + ( cos * alignedPosition.y );\n\n\t\t\t} else {\n\n\t\t\t\trotatedPosition.copy( alignedPosition );\n\n\t\t\t}\n\n\n\t\t\tvertexPosition.copy( mvPosition );\n\t\t\tvertexPosition.x += rotatedPosition.x;\n\t\t\tvertexPosition.y += rotatedPosition.y;\n\n\t\t\t// transform to world space\n\t\t\tvertexPosition.applyMatrix4( viewWorldMatrix );\n\n\t\t}\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tworldScale.setFromMatrixScale( this.matrixWorld );\n\t\t\tviewWorldMatrix.getInverse( this.modelViewMatrix ).premultiply( this.matrixWorld );\n\t\t\tmvPosition.setFromMatrixPosition( this.modelViewMatrix );\n\n\t\t\tvar rotation = this.material.rotation;\n\t\t\tvar sin, cos;\n\t\t\tif ( rotation !== 0 ) {\n\n\t\t\t\tcos = Math.cos( rotation );\n\t\t\t\tsin = Math.sin( rotation );\n\n\t\t\t}\n\n\t\t\tvar center = this.center;\n\n\t\t\ttransformVertex( vA.set( - 0.5, - 0.5, 0 ), mvPosition, center, worldScale, sin, cos );\n\t\t\ttransformVertex( vB.set( 0.5, - 0.5, 0 ), mvPosition, center, worldScale, sin, cos );\n\t\t\ttransformVertex( vC.set( 0.5, 0.5, 0 ), mvPosition, center, worldScale, sin, cos );\n\n\t\t\t// check first triangle\n\t\t\tvar intersect = raycaster.ray.intersectTriangle( vA, vB, vC, false, intersectPoint );\n\n\t\t\tif ( intersect === null ) {\n\n\t\t\t\t// check second triangle\n\t\t\t\ttransformVertex( vB.set( - 0.5, 0.5, 0 ), mvPosition, center, worldScale, sin, cos );\n\t\t\t\tintersect = raycaster.ray.intersectTriangle( vA, vC, vB, false, intersectPoint );\n\t\t\t\tif ( intersect === null ) {\n\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\t\tintersects.push( {\n\n\t\t\t\tdistance: distance,\n\t\t\t\tpoint: intersectPoint.clone(),\n\t\t\t\tface: null,\n\t\t\t\tobject: this\n\n\t\t\t} );\n\n\t\t};\n\n\t}() ),\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.material ).copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tif ( source.center !== undefined ) this.center.copy( source.center );\n\n\t\treturn this;\n\n\t}\n\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LOD() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'LOD';\n\n\tObject.defineProperties( this, {\n\t\tlevels: {\n\t\t\tenumerable: true,\n\t\t\tvalue: []\n\t\t}\n\t} );\n\n}\n\nLOD.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: LOD,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source, false );\n\n\t\tvar levels = source.levels;\n\n\t\tfor ( var i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tvar level = levels[ i ];\n\n\t\t\tthis.addLevel( level.object.clone(), level.distance );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\taddLevel: function ( object, distance ) {\n\n\t\tif ( distance === undefined ) distance = 0;\n\n\t\tdistance = Math.abs( distance );\n\n\t\tvar levels = this.levels;\n\n\t\tfor ( var l = 0; l < levels.length; l ++ ) {\n\n\t\t\tif ( distance < levels[ l ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlevels.splice( l, 0, { distance: distance, object: object } );\n\n\t\tthis.add( object );\n\n\t},\n\n\tgetObjectForDistance: function ( distance ) {\n\n\t\tvar levels = this.levels;\n\n\t\tfor ( var i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\tif ( distance < levels[ i ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn levels[ i - 1 ].object;\n\n\t},\n\n\traycast: ( function () {\n\n\t\tvar matrixPosition = new Vector3();\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tmatrixPosition.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tvar distance = raycaster.ray.origin.distanceTo( matrixPosition );\n\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t};\n\n\t}() ),\n\n\tupdate: function () {\n\n\t\tvar v1 = new Vector3();\n\t\tvar v2 = new Vector3();\n\n\t\treturn function update( camera ) {\n\n\t\t\tvar levels = this.levels;\n\n\t\t\tif ( levels.length > 1 ) {\n\n\t\t\t\tv1.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t\tv2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\t\tvar distance = v1.distanceTo( v2 );\n\n\t\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\t\tfor ( var i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\t\tif ( distance >= levels[ i ].distance ) {\n\n\t\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\t\tlevels[ i ].object.visible = false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}(),\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.levels = [];\n\n\t\tvar levels = this.levels;\n\n\t\tfor ( var i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tvar level = levels[ i ];\n\n\t\t\tdata.object.levels.push( {\n\t\t\t\tobject: level.object.uuid,\n\t\t\t\tdistance: level.distance\n\t\t\t} );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author michael guerrero / http://realitymeltdown.com\n * @author ikerr / http://verold.com\n */\n\nfunction Skeleton( bones, boneInverses ) {\n\n\t// copy the bone array\n\n\tbones = bones || [];\n\n\tthis.bones = bones.slice( 0 );\n\tthis.boneMatrices = new Float32Array( this.bones.length * 16 );\n\n\t// use the supplied bone inverses or calculate the inverses\n\n\tif ( boneInverses === undefined ) {\n\n\t\tthis.calculateInverses();\n\n\t} else {\n\n\t\tif ( this.bones.length === boneInverses.length ) {\n\n\t\t\tthis.boneInverses = boneInverses.slice( 0 );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Skeleton boneInverses is the wrong length.' );\n\n\t\t\tthis.boneInverses = [];\n\n\t\t\tfor ( var i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nObject.assign( Skeleton.prototype, {\n\n\tcalculateInverses: function () {\n\n\t\tthis.boneInverses = [];\n\n\t\tfor ( var i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tvar inverse = new Matrix4();\n\n\t\t\tif ( this.bones[ i ] ) {\n\n\t\t\t\tinverse.getInverse( this.bones[ i ].matrixWorld );\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t},\n\n\tpose: function () {\n\n\t\tvar bone, i, il;\n\n\t\t// recover the bind-time world matrices\n\n\t\tfor ( i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tbone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tbone.matrixWorld.getInverse( this.boneInverses[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute the local matrices, positions, rotations and scales\n\n\t\tfor ( i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tbone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t\tbone.matrix.getInverse( bone.parent.matrixWorld );\n\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdate: ( function () {\n\n\t\tvar offsetMatrix = new Matrix4();\n\t\tvar identityMatrix = new Matrix4();\n\n\t\treturn function update() {\n\n\t\t\tvar bones = this.bones;\n\t\t\tvar boneInverses = this.boneInverses;\n\t\t\tvar boneMatrices = this.boneMatrices;\n\t\t\tvar boneTexture = this.boneTexture;\n\n\t\t\t// flatten bone matrices to array\n\n\t\t\tfor ( var i = 0, il = bones.length; i < il; i ++ ) {\n\n\t\t\t\t// compute the offset between the current and the original transform\n\n\t\t\t\tvar matrix = bones[ i ] ? bones[ i ].matrixWorld : identityMatrix;\n\n\t\t\t\toffsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] );\n\t\t\t\toffsetMatrix.toArray( boneMatrices, i * 16 );\n\n\t\t\t}\n\n\t\t\tif ( boneTexture !== undefined ) {\n\n\t\t\t\tboneTexture.needsUpdate = true;\n\n\t\t\t}\n\n\t\t};\n\n\t} )(),\n\n\tclone: function () {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses );\n\n\t},\n\n\tgetBoneByName: function ( name ) {\n\n\t\tfor ( var i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tvar bone = this.bones[ i ];\n\n\t\t\tif ( bone.name === name ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author ikerr / http://verold.com\n */\n\nfunction Bone() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Bone';\n\n}\n\nBone.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Bone,\n\n\tisBone: true\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author ikerr / http://verold.com\n */\n\nfunction SkinnedMesh( geometry, material ) {\n\n\tMesh.call( this, geometry, material );\n\n\tthis.type = 'SkinnedMesh';\n\n\tthis.bindMode = 'attached';\n\tthis.bindMatrix = new Matrix4();\n\tthis.bindMatrixInverse = new Matrix4();\n\n\tvar bones = this.initBones();\n\tvar skeleton = new Skeleton( bones );\n\n\tthis.bind( skeleton, this.matrixWorld );\n\n\tthis.normalizeSkinWeights();\n\n}\n\nSkinnedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), {\n\n\tconstructor: SkinnedMesh,\n\n\tisSkinnedMesh: true,\n\n\tinitBones: function () {\n\n\t\tvar bones = [], bone, gbone;\n\t\tvar i, il;\n\n\t\tif ( this.geometry && this.geometry.bones !== undefined ) {\n\n\t\t\t// first, create array of 'Bone' objects from geometry data\n\n\t\t\tfor ( i = 0, il = this.geometry.bones.length; i < il; i ++ ) {\n\n\t\t\t\tgbone = this.geometry.bones[ i ];\n\n\t\t\t\t// create new 'Bone' object\n\n\t\t\t\tbone = new Bone();\n\t\t\t\tbones.push( bone );\n\n\t\t\t\t// apply values\n\n\t\t\t\tbone.name = gbone.name;\n\t\t\t\tbone.position.fromArray( gbone.pos );\n\t\t\t\tbone.quaternion.fromArray( gbone.rotq );\n\t\t\t\tif ( gbone.scl !== undefined ) bone.scale.fromArray( gbone.scl );\n\n\t\t\t}\n\n\t\t\t// second, create bone hierarchy\n\n\t\t\tfor ( i = 0, il = this.geometry.bones.length; i < il; i ++ ) {\n\n\t\t\t\tgbone = this.geometry.bones[ i ];\n\n\t\t\t\tif ( ( gbone.parent !== - 1 ) && ( gbone.parent !== null ) && ( bones[ gbone.parent ] !== undefined ) ) {\n\n\t\t\t\t\t// subsequent bones in the hierarchy\n\n\t\t\t\t\tbones[ gbone.parent ].add( bones[ i ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// topmost bone, immediate child of the skinned mesh\n\n\t\t\t\t\tthis.add( bones[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// now the bones are part of the scene graph and children of the skinned mesh.\n\t\t// let's update the corresponding matrices\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\treturn bones;\n\n\t},\n\n\tbind: function ( skeleton, bindMatrix ) {\n\n\t\tthis.skeleton = skeleton;\n\n\t\tif ( bindMatrix === undefined ) {\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t}\n\n\t\tthis.bindMatrix.copy( bindMatrix );\n\t\tthis.bindMatrixInverse.getInverse( bindMatrix );\n\n\t},\n\n\tpose: function () {\n\n\t\tthis.skeleton.pose();\n\n\t},\n\n\tnormalizeSkinWeights: function () {\n\n\t\tvar scale, i;\n\n\t\tif ( this.geometry && this.geometry.isGeometry ) {\n\n\t\t\tfor ( i = 0; i < this.geometry.skinWeights.length; i ++ ) {\n\n\t\t\t\tvar sw = this.geometry.skinWeights[ i ];\n\n\t\t\t\tscale = 1.0 / sw.manhattanLength();\n\n\t\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\t\tsw.multiplyScalar( scale );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tsw.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( this.geometry && this.geometry.isBufferGeometry ) {\n\n\t\t\tvar vec = new Vector4();\n\n\t\t\tvar skinWeight = this.geometry.attributes.skinWeight;\n\n\t\t\tfor ( i = 0; i < skinWeight.count; i ++ ) {\n\n\t\t\t\tvec.x = skinWeight.getX( i );\n\t\t\t\tvec.y = skinWeight.getY( i );\n\t\t\t\tvec.z = skinWeight.getZ( i );\n\t\t\t\tvec.w = skinWeight.getW( i );\n\n\t\t\t\tscale = 1.0 / vec.manhattanLength();\n\n\t\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\t\tvec.multiplyScalar( scale );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tvec.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t\t}\n\n\t\t\t\tskinWeight.setXYZW( i, vec.x, vec.y, vec.z, vec.w );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tMesh.prototype.updateMatrixWorld.call( this, force );\n\n\t\tif ( this.bindMode === 'attached' ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.matrixWorld );\n\n\t\t} else if ( this.bindMode === 'detached' ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.bindMatrix );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n *  color: <hex>,\n *  opacity: <float>,\n *\n *  linewidth: <float>,\n *  linecap: \"round\",\n *  linejoin: \"round\"\n * }\n */\n\nfunction LineBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'LineBasicMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.linewidth = 1;\n\tthis.linecap = 'round';\n\tthis.linejoin = 'round';\n\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nLineBasicMaterial.prototype = Object.create( Material.prototype );\nLineBasicMaterial.prototype.constructor = LineBasicMaterial;\n\nLineBasicMaterial.prototype.isLineBasicMaterial = true;\n\nLineBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.linewidth = source.linewidth;\n\tthis.linecap = source.linecap;\n\tthis.linejoin = source.linejoin;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Line( geometry, material, mode ) {\n\n\tif ( mode === 1 ) {\n\n\t\tconsole.error( 'THREE.Line: parameter THREE.LinePieces no longer supported. Use THREE.LineSegments instead.' );\n\n\t}\n\n\tObject3D.call( this );\n\n\tthis.type = 'Line';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new LineBasicMaterial( { color: Math.random() * 0xffffff } );\n\n}\n\nLine.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Line,\n\n\tisLine: true,\n\n\tcomputeLineDistances: ( function () {\n\n\t\tvar start = new Vector3();\n\t\tvar end = new Vector3();\n\n\t\treturn function computeLineDistances() {\n\n\t\t\tvar geometry = this.geometry;\n\n\t\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t\t// we assume non-indexed geometry\n\n\t\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\t\tvar positionAttribute = geometry.attributes.position;\n\t\t\t\t\tvar lineDistances = [ 0 ];\n\n\t\t\t\t\tfor ( var i = 1, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t\t\tstart.fromBufferAttribute( positionAttribute, i - 1 );\n\t\t\t\t\t\tend.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\t\t\tlineDistances[ i ] += start.distanceTo( end );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgeometry.addAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t\t}\n\n\t\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\t\tvar vertices = geometry.vertices;\n\t\t\t\tvar lineDistances = geometry.lineDistances;\n\n\t\t\t\tlineDistances[ 0 ] = 0;\n\n\t\t\t\tfor ( var i = 1, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ i ] += vertices[ i - 1 ].distanceTo( vertices[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}() ),\n\n\traycast: ( function () {\n\n\t\tvar inverseMatrix = new Matrix4();\n\t\tvar ray = new Ray();\n\t\tvar sphere = new Sphere();\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tvar precision = raycaster.linePrecision;\n\t\t\tvar precisionSq = precision * precision;\n\n\t\t\tvar geometry = this.geometry;\n\t\t\tvar matrixWorld = this.matrixWorld;\n\n\t\t\t// Checking boundingSphere distance to ray\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\tsphere.copy( geometry.boundingSphere );\n\t\t\tsphere.applyMatrix4( matrixWorld );\n\n\t\t\tif ( raycaster.ray.intersectsSphere( sphere ) === false ) return;\n\n\t\t\t//\n\n\t\t\tinverseMatrix.getInverse( matrixWorld );\n\t\t\tray.copy( raycaster.ray ).applyMatrix4( inverseMatrix );\n\n\t\t\tvar vStart = new Vector3();\n\t\t\tvar vEnd = new Vector3();\n\t\t\tvar interSegment = new Vector3();\n\t\t\tvar interRay = new Vector3();\n\t\t\tvar step = ( this && this.isLineSegments ) ? 2 : 1;\n\n\t\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t\tvar index = geometry.index;\n\t\t\t\tvar attributes = geometry.attributes;\n\t\t\t\tvar positions = attributes.position.array;\n\n\t\t\t\tif ( index !== null ) {\n\n\t\t\t\t\tvar indices = index.array;\n\n\t\t\t\t\tfor ( var i = 0, l = indices.length - 1; i < l; i += step ) {\n\n\t\t\t\t\t\tvar a = indices[ i ];\n\t\t\t\t\t\tvar b = indices[ i + 1 ];\n\n\t\t\t\t\t\tvStart.fromArray( positions, a * 3 );\n\t\t\t\t\t\tvEnd.fromArray( positions, b * 3 );\n\n\t\t\t\t\t\tvar distSq = ray.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\t\tif ( distSq > precisionSq ) continue;\n\n\t\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\t\tface: null,\n\t\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfor ( var i = 0, l = positions.length / 3 - 1; i < l; i += step ) {\n\n\t\t\t\t\t\tvStart.fromArray( positions, 3 * i );\n\t\t\t\t\t\tvEnd.fromArray( positions, 3 * i + 3 );\n\n\t\t\t\t\t\tvar distSq = ray.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\t\tif ( distSq > precisionSq ) continue;\n\n\t\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\t\tface: null,\n\t\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\t\tvar vertices = geometry.vertices;\n\t\t\t\tvar nbVertices = vertices.length;\n\n\t\t\t\tfor ( var i = 0; i < nbVertices - 1; i += step ) {\n\n\t\t\t\t\tvar distSq = ray.distanceSqToSegment( vertices[ i ], vertices[ i + 1 ], interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > precisionSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}() ),\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LineSegments( geometry, material ) {\n\n\tLine.call( this, geometry, material );\n\n\tthis.type = 'LineSegments';\n\n}\n\nLineSegments.prototype = Object.assign( Object.create( Line.prototype ), {\n\n\tconstructor: LineSegments,\n\n\tisLineSegments: true,\n\n\tcomputeLineDistances: ( function () {\n\n\t\tvar start = new Vector3();\n\t\tvar end = new Vector3();\n\n\t\treturn function computeLineDistances() {\n\n\t\t\tvar geometry = this.geometry;\n\n\t\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t\t// we assume non-indexed geometry\n\n\t\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\t\tvar positionAttribute = geometry.attributes.position;\n\t\t\t\t\tvar lineDistances = [];\n\n\t\t\t\t\tfor ( var i = 0, l = positionAttribute.count; i < l; i += 2 ) {\n\n\t\t\t\t\t\tstart.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t\t\tend.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + start.distanceTo( end );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgeometry.addAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t\t}\n\n\t\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\t\tvar vertices = geometry.vertices;\n\t\t\t\tvar lineDistances = geometry.lineDistances;\n\n\t\t\t\tfor ( var i = 0, l = vertices.length; i < l; i += 2 ) {\n\n\t\t\t\t\tstart.copy( vertices[ i ] );\n\t\t\t\t\tend.copy( vertices[ i + 1 ] );\n\n\t\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + start.distanceTo( end );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}() )\n\n} );\n\n/**\n * @author mgreter / http://github.com/mgreter\n */\n\nfunction LineLoop( geometry, material ) {\n\n\tLine.call( this, geometry, material );\n\n\tthis.type = 'LineLoop';\n\n}\n\nLineLoop.prototype = Object.assign( Object.create( Line.prototype ), {\n\n\tconstructor: LineLoop,\n\n\tisLineLoop: true,\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n *  color: <hex>,\n *  opacity: <float>,\n *  map: new THREE.Texture( <Image> ),\n *\n *  size: <float>,\n *  sizeAttenuation: <bool>\n *\n *  morphTargets: <bool>\n * }\n */\n\nfunction PointsMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'PointsMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\n\tthis.size = 1;\n\tthis.sizeAttenuation = true;\n\n\tthis.morphTargets = false;\n\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nPointsMaterial.prototype = Object.create( Material.prototype );\nPointsMaterial.prototype.constructor = PointsMaterial;\n\nPointsMaterial.prototype.isPointsMaterial = true;\n\nPointsMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.size = source.size;\n\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Points( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Points';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new PointsMaterial( { color: Math.random() * 0xffffff } );\n\n}\n\nPoints.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Points,\n\n\tisPoints: true,\n\n\traycast: ( function () {\n\n\t\tvar inverseMatrix = new Matrix4();\n\t\tvar ray = new Ray();\n\t\tvar sphere = new Sphere();\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tvar object = this;\n\t\t\tvar geometry = this.geometry;\n\t\t\tvar matrixWorld = this.matrixWorld;\n\t\t\tvar threshold = raycaster.params.Points.threshold;\n\n\t\t\t// Checking boundingSphere distance to ray\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\tsphere.copy( geometry.boundingSphere );\n\t\t\tsphere.applyMatrix4( matrixWorld );\n\t\t\tsphere.radius += threshold;\n\n\t\t\tif ( raycaster.ray.intersectsSphere( sphere ) === false ) return;\n\n\t\t\t//\n\n\t\t\tinverseMatrix.getInverse( matrixWorld );\n\t\t\tray.copy( raycaster.ray ).applyMatrix4( inverseMatrix );\n\n\t\t\tvar localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\t\tvar localThresholdSq = localThreshold * localThreshold;\n\t\t\tvar position = new Vector3();\n\t\t\tvar intersectPoint = new Vector3();\n\n\t\t\tfunction testPoint( point, index ) {\n\n\t\t\t\tvar rayPointDistanceSq = ray.distanceSqToPoint( point );\n\n\t\t\t\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\t\t\t\tray.closestPointToPoint( point, intersectPoint );\n\t\t\t\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\t\t\t\tpoint: intersectPoint.clone(),\n\t\t\t\t\t\tindex: index,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tobject: object\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t\tvar index = geometry.index;\n\t\t\t\tvar attributes = geometry.attributes;\n\t\t\t\tvar positions = attributes.position.array;\n\n\t\t\t\tif ( index !== null ) {\n\n\t\t\t\t\tvar indices = index.array;\n\n\t\t\t\t\tfor ( var i = 0, il = indices.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar a = indices[ i ];\n\n\t\t\t\t\t\tposition.fromArray( positions, a * 3 );\n\n\t\t\t\t\t\ttestPoint( position, a );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfor ( var i = 0, l = positions.length / 3; i < l; i ++ ) {\n\n\t\t\t\t\t\tposition.fromArray( positions, i * 3 );\n\n\t\t\t\t\t\ttestPoint( position, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tvar vertices = geometry.vertices;\n\n\t\t\t\tfor ( var i = 0, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\t\ttestPoint( vertices[ i ], i );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}() ),\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction VideoTexture( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.generateMipmaps = false;\n\n}\n\nVideoTexture.prototype = Object.assign( Object.create( Texture.prototype ), {\n\n\tconstructor: VideoTexture,\n\n\tisVideoTexture: true,\n\n\tupdate: function () {\n\n\t\tvar video = this.image;\n\n\t\tif ( video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tthis.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction CompressedTexture( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { width: width, height: height };\n\tthis.mipmaps = mipmaps;\n\n\t// no flipping for cube textures\n\t// (also flipping doesn't work for compressed textures )\n\n\tthis.flipY = false;\n\n\t// can't generate mipmaps for compressed textures\n\t// mips must be embedded in DDS files\n\n\tthis.generateMipmaps = false;\n\n}\n\nCompressedTexture.prototype = Object.create( Texture.prototype );\nCompressedTexture.prototype.constructor = CompressedTexture;\n\nCompressedTexture.prototype.isCompressedTexture = true;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CanvasTexture( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.needsUpdate = true;\n\n}\n\nCanvasTexture.prototype = Object.create( Texture.prototype );\nCanvasTexture.prototype.constructor = CanvasTexture;\nCanvasTexture.prototype.isCanvasTexture = true;\n\n/**\n * @author Matt DesLauriers / @mattdesl\n * @author atix / arthursilber.de\n */\n\nfunction DepthTexture( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {\n\n\tformat = format !== undefined ? format : DepthFormat;\n\n\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );\n\n\t}\n\n\tif ( type === undefined && format === DepthFormat ) type = UnsignedShortType;\n\tif ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.image = { width: width, height: height };\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.flipY = false;\n\tthis.generateMipmaps\t= false;\n\n}\n\nDepthTexture.prototype = Object.create( Texture.prototype );\nDepthTexture.prototype.constructor = DepthTexture;\nDepthTexture.prototype.isDepthTexture = true;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WireframeGeometry( geometry ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'WireframeGeometry';\n\n\t// buffer\n\n\tvar vertices = [];\n\n\t// helper variables\n\n\tvar i, j, l, o, ol;\n\tvar edge = [ 0, 0 ], edges = {}, e, edge1, edge2;\n\tvar key, keys = [ 'a', 'b', 'c' ];\n\tvar vertex;\n\n\t// different logic for Geometry and BufferGeometry\n\n\tif ( geometry && geometry.isGeometry ) {\n\n\t\t// create a data structure that contains all edges without duplicates\n\n\t\tvar faces = geometry.faces;\n\n\t\tfor ( i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tfor ( j = 0; j < 3; j ++ ) {\n\n\t\t\t\tedge1 = face[ keys[ j ] ];\n\t\t\t\tedge2 = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\t\tedge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates\n\t\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\t\tkey = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] };\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate vertices\n\n\t\tfor ( key in edges ) {\n\n\t\t\te = edges[ key ];\n\n\t\t\tvertex = geometry.vertices[ e.index1 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\tvertex = geometry.vertices[ e.index2 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t} else if ( geometry && geometry.isBufferGeometry ) {\n\n\t\tvar position, indices, groups;\n\t\tvar group, start, count;\n\t\tvar index1, index2;\n\n\t\tvertex = new Vector3();\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\t// indexed BufferGeometry\n\n\t\t\tposition = geometry.attributes.position;\n\t\t\tindices = geometry.index;\n\t\t\tgroups = geometry.groups;\n\n\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\tgroups = [ { start: 0, count: indices.count, materialIndex: 0 } ];\n\n\t\t\t}\n\n\t\t\t// create a data structure that contains all eges without duplicates\n\n\t\t\tfor ( o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\tgroup = groups[ o ];\n\n\t\t\t\tstart = group.start;\n\t\t\t\tcount = group.count;\n\n\t\t\t\tfor ( i = start, l = ( start + count ); i < l; i += 3 ) {\n\n\t\t\t\t\tfor ( j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\tedge1 = indices.getX( i + j );\n\t\t\t\t\t\tedge2 = indices.getX( i + ( j + 1 ) % 3 );\n\t\t\t\t\t\tedge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates\n\t\t\t\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\t\t\t\tkey = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\t\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] };\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// generate vertices\n\n\t\t\tfor ( key in edges ) {\n\n\t\t\t\te = edges[ key ];\n\n\t\t\t\tvertex.fromBufferAttribute( position, e.index1 );\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\tvertex.fromBufferAttribute( position, e.index2 );\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// non-indexed BufferGeometry\n\n\t\t\tposition = geometry.attributes.position;\n\n\t\t\tfor ( i = 0, l = ( position.count / 3 ); i < l; i ++ ) {\n\n\t\t\t\tfor ( j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t// three edges per triangle, an edge is represented as (index1, index2)\n\t\t\t\t\t// e.g. the first triangle has the following edges: (0,1),(1,2),(2,0)\n\n\t\t\t\t\tindex1 = 3 * i + j;\n\t\t\t\t\tvertex.fromBufferAttribute( position, index1 );\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\tindex2 = 3 * i + ( ( j + 1 ) % 3 );\n\t\t\t\t\tvertex.fromBufferAttribute( position, index2 );\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n}\n\nWireframeGeometry.prototype = Object.create( BufferGeometry.prototype );\nWireframeGeometry.prototype.constructor = WireframeGeometry;\n\n/**\n * @author zz85 / https://github.com/zz85\n * @author Mugen87 / https://github.com/Mugen87\n *\n * Parametric Surfaces Geometry\n * based on the brilliant article by @prideout http://prideout.net/blog/?p=44\n */\n\n// ParametricGeometry\n\nfunction ParametricGeometry( func, slices, stacks ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ParametricGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\tthis.fromBufferGeometry( new ParametricBufferGeometry( func, slices, stacks ) );\n\tthis.mergeVertices();\n\n}\n\nParametricGeometry.prototype = Object.create( Geometry.prototype );\nParametricGeometry.prototype.constructor = ParametricGeometry;\n\n// ParametricBufferGeometry\n\nfunction ParametricBufferGeometry( func, slices, stacks ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ParametricBufferGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\tvar EPS = 0.00001;\n\n\tvar normal = new Vector3();\n\n\tvar p0 = new Vector3(), p1 = new Vector3();\n\tvar pu = new Vector3(), pv = new Vector3();\n\n\tvar i, j;\n\n\tif ( func.length < 3 ) {\n\n\t\tconsole.error( 'THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter.' );\n\n\t}\n\n\t// generate vertices, normals and uvs\n\n\tvar sliceCount = slices + 1;\n\n\tfor ( i = 0; i <= stacks; i ++ ) {\n\n\t\tvar v = i / stacks;\n\n\t\tfor ( j = 0; j <= slices; j ++ ) {\n\n\t\t\tvar u = j / slices;\n\n\t\t\t// vertex\n\n\t\t\tfunc( u, v, p0 );\n\t\t\tvertices.push( p0.x, p0.y, p0.z );\n\n\t\t\t// normal\n\n\t\t\t// approximate tangent vectors via finite differences\n\n\t\t\tif ( u - EPS >= 0 ) {\n\n\t\t\t\tfunc( u - EPS, v, p1 );\n\t\t\t\tpu.subVectors( p0, p1 );\n\n\t\t\t} else {\n\n\t\t\t\tfunc( u + EPS, v, p1 );\n\t\t\t\tpu.subVectors( p1, p0 );\n\n\t\t\t}\n\n\t\t\tif ( v - EPS >= 0 ) {\n\n\t\t\t\tfunc( u, v - EPS, p1 );\n\t\t\t\tpv.subVectors( p0, p1 );\n\n\t\t\t} else {\n\n\t\t\t\tfunc( u, v + EPS, p1 );\n\t\t\t\tpv.subVectors( p1, p0 );\n\n\t\t\t}\n\n\t\t\t// cross product of tangent vectors returns surface normal\n\n\t\t\tnormal.crossVectors( pu, pv ).normalize();\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( u, v );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( i = 0; i < stacks; i ++ ) {\n\n\t\tfor ( j = 0; j < slices; j ++ ) {\n\n\t\t\tvar a = i * sliceCount + j;\n\t\t\tvar b = i * sliceCount + j + 1;\n\t\t\tvar c = ( i + 1 ) * sliceCount + j + 1;\n\t\t\tvar d = ( i + 1 ) * sliceCount + j;\n\n\t\t\t// faces one and two\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nParametricBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nParametricBufferGeometry.prototype.constructor = ParametricBufferGeometry;\n\n/**\n * @author clockworkgeek / https://github.com/clockworkgeek\n * @author timothypratley / https://github.com/timothypratley\n * @author WestLangley / http://github.com/WestLangley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// PolyhedronGeometry\n\nfunction PolyhedronGeometry( vertices, indices, radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'PolyhedronGeometry';\n\n\tthis.parameters = {\n\t\tvertices: vertices,\n\t\tindices: indices,\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new PolyhedronBufferGeometry( vertices, indices, radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nPolyhedronGeometry.prototype = Object.create( Geometry.prototype );\nPolyhedronGeometry.prototype.constructor = PolyhedronGeometry;\n\n// PolyhedronBufferGeometry\n\nfunction PolyhedronBufferGeometry( vertices, indices, radius, detail ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'PolyhedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tvertices: vertices,\n\t\tindices: indices,\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tradius = radius || 1;\n\tdetail = detail || 0;\n\n\t// default buffer data\n\n\tvar vertexBuffer = [];\n\tvar uvBuffer = [];\n\n\t// the subdivision creates the vertex buffer data\n\n\tsubdivide( detail );\n\n\t// all vertices should lie on a conceptual sphere with a given radius\n\n\tappplyRadius( radius );\n\n\t// finally, create the uv data\n\n\tgenerateUVs();\n\n\t// build non-indexed geometry\n\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) );\n\n\tif ( detail === 0 ) {\n\n\t\tthis.computeVertexNormals(); // flat normals\n\n\t} else {\n\n\t\tthis.normalizeNormals(); // smooth normals\n\n\t}\n\n\t// helper functions\n\n\tfunction subdivide( detail ) {\n\n\t\tvar a = new Vector3();\n\t\tvar b = new Vector3();\n\t\tvar c = new Vector3();\n\n\t\t// iterate over all faces and apply a subdivison with the given detail value\n\n\t\tfor ( var i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t// get the vertices of the face\n\n\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t// perform subdivision\n\n\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t}\n\n\t}\n\n\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\tvar cols = Math.pow( 2, detail );\n\n\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\tvar v = [];\n\n\t\tvar i, j;\n\n\t\t// construct all of the vertices for this subdivision\n\n\t\tfor ( i = 0; i <= cols; i ++ ) {\n\n\t\t\tv[ i ] = [];\n\n\t\t\tvar aj = a.clone().lerp( c, i / cols );\n\t\t\tvar bj = b.clone().lerp( c, i / cols );\n\n\t\t\tvar rows = cols - i;\n\n\t\t\tfor ( j = 0; j <= rows; j ++ ) {\n\n\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// construct all of the faces\n\n\t\tfor ( i = 0; i < cols; i ++ ) {\n\n\t\t\tfor ( j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\tvar k = Math.floor( j / 2 );\n\n\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction appplyRadius( radius ) {\n\n\t\tvar vertex = new Vector3();\n\n\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\tfor ( var i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t}\n\n\t}\n\n\tfunction generateUVs() {\n\n\t\tvar vertex = new Vector3();\n\n\t\tfor ( var i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\tvar u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\tvar v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t}\n\n\t\tcorrectUVs();\n\n\t\tcorrectSeam();\n\n\t}\n\n\tfunction correctSeam() {\n\n\t\t// handle case when face straddles the seam, see #3269\n\n\t\tfor ( var i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t// uv data of a single face\n\n\t\t\tvar x0 = uvBuffer[ i + 0 ];\n\t\t\tvar x1 = uvBuffer[ i + 2 ];\n\t\t\tvar x2 = uvBuffer[ i + 4 ];\n\n\t\t\tvar max = Math.max( x0, x1, x2 );\n\t\t\tvar min = Math.min( x0, x1, x2 );\n\n\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction pushVertex( vertex ) {\n\n\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t}\n\n\tfunction getVertexByIndex( index, vertex ) {\n\n\t\tvar stride = index * 3;\n\n\t\tvertex.x = vertices[ stride + 0 ];\n\t\tvertex.y = vertices[ stride + 1 ];\n\t\tvertex.z = vertices[ stride + 2 ];\n\n\t}\n\n\tfunction correctUVs() {\n\n\t\tvar a = new Vector3();\n\t\tvar b = new Vector3();\n\t\tvar c = new Vector3();\n\n\t\tvar centroid = new Vector3();\n\n\t\tvar uvA = new Vector2();\n\t\tvar uvB = new Vector2();\n\t\tvar uvC = new Vector2();\n\n\t\tfor ( var i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\tvar azi = azimuth( centroid );\n\n\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t}\n\n\t}\n\n\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t}\n\n\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t}\n\n\t}\n\n\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\tfunction azimuth( vector ) {\n\n\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t}\n\n\n\t// Angle above the XZ plane.\n\n\tfunction inclination( vector ) {\n\n\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t}\n\n}\n\nPolyhedronBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nPolyhedronBufferGeometry.prototype.constructor = PolyhedronBufferGeometry;\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// TetrahedronGeometry\n\nfunction TetrahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TetrahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new TetrahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nTetrahedronGeometry.prototype = Object.create( Geometry.prototype );\nTetrahedronGeometry.prototype.constructor = TetrahedronGeometry;\n\n// TetrahedronBufferGeometry\n\nfunction TetrahedronBufferGeometry( radius, detail ) {\n\n\tvar vertices = [\n\t\t1, 1, 1, \t- 1, - 1, 1, \t- 1, 1, - 1, \t1, - 1, - 1\n\t];\n\n\tvar indices = [\n\t\t2, 1, 0, \t0, 3, 2,\t1, 3, 0,\t2, 3, 1\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'TetrahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nTetrahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nTetrahedronBufferGeometry.prototype.constructor = TetrahedronBufferGeometry;\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// OctahedronGeometry\n\nfunction OctahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'OctahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new OctahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nOctahedronGeometry.prototype = Object.create( Geometry.prototype );\nOctahedronGeometry.prototype.constructor = OctahedronGeometry;\n\n// OctahedronBufferGeometry\n\nfunction OctahedronBufferGeometry( radius, detail ) {\n\n\tvar vertices = [\n\t\t1, 0, 0, \t- 1, 0, 0,\t0, 1, 0,\n\t\t0, - 1, 0, \t0, 0, 1,\t0, 0, - 1\n\t];\n\n\tvar indices = [\n\t\t0, 2, 4,\t0, 4, 3,\t0, 3, 5,\n\t\t0, 5, 2,\t1, 2, 5,\t1, 5, 3,\n\t\t1, 3, 4,\t1, 4, 2\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'OctahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nOctahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nOctahedronBufferGeometry.prototype.constructor = OctahedronBufferGeometry;\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// IcosahedronGeometry\n\nfunction IcosahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'IcosahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new IcosahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nIcosahedronGeometry.prototype = Object.create( Geometry.prototype );\nIcosahedronGeometry.prototype.constructor = IcosahedronGeometry;\n\n// IcosahedronBufferGeometry\n\nfunction IcosahedronBufferGeometry( radius, detail ) {\n\n\tvar t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\tvar vertices = [\n\t\t- 1, t, 0, \t1, t, 0, \t- 1, - t, 0, \t1, - t, 0,\n\t\t 0, - 1, t, \t0, 1, t,\t0, - 1, - t, \t0, 1, - t,\n\t\t t, 0, - 1, \tt, 0, 1, \t- t, 0, - 1, \t- t, 0, 1\n\t];\n\n\tvar indices = [\n\t\t 0, 11, 5, \t0, 5, 1, \t0, 1, 7, \t0, 7, 10, \t0, 10, 11,\n\t\t 1, 5, 9, \t5, 11, 4,\t11, 10, 2,\t10, 7, 6,\t7, 1, 8,\n\t\t 3, 9, 4, \t3, 4, 2,\t3, 2, 6,\t3, 6, 8,\t3, 8, 9,\n\t\t 4, 9, 5, \t2, 4, 11,\t6, 2, 10,\t8, 6, 7,\t9, 8, 1\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'IcosahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nIcosahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nIcosahedronBufferGeometry.prototype.constructor = IcosahedronBufferGeometry;\n\n/**\n * @author Abe Pazos / https://hamoid.com\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// DodecahedronGeometry\n\nfunction DodecahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'DodecahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new DodecahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nDodecahedronGeometry.prototype = Object.create( Geometry.prototype );\nDodecahedronGeometry.prototype.constructor = DodecahedronGeometry;\n\n// DodecahedronBufferGeometry\n\nfunction DodecahedronBufferGeometry( radius, detail ) {\n\n\tvar t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\tvar r = 1 / t;\n\n\tvar vertices = [\n\n\t\t// (±1, ±1, ±1)\n\t\t- 1, - 1, - 1,\t- 1, - 1, 1,\n\t\t- 1, 1, - 1, - 1, 1, 1,\n\t\t1, - 1, - 1, 1, - 1, 1,\n\t\t1, 1, - 1, 1, 1, 1,\n\n\t\t// (0, ±1/φ, ±φ)\n\t\t 0, - r, - t, 0, - r, t,\n\t\t 0, r, - t, 0, r, t,\n\n\t\t// (±1/φ, ±φ, 0)\n\t\t- r, - t, 0, - r, t, 0,\n\t\t r, - t, 0, r, t, 0,\n\n\t\t// (±φ, 0, ±1/φ)\n\t\t- t, 0, - r, t, 0, - r,\n\t\t- t, 0, r, t, 0, r\n\t];\n\n\tvar indices = [\n\t\t3, 11, 7, \t3, 7, 15, \t3, 15, 13,\n\t\t7, 19, 17, \t7, 17, 6, \t7, 6, 15,\n\t\t17, 4, 8, \t17, 8, 10, \t17, 10, 6,\n\t\t8, 0, 16, \t8, 16, 2, \t8, 2, 10,\n\t\t0, 12, 1, \t0, 1, 18, \t0, 18, 16,\n\t\t6, 10, 2, \t6, 2, 13, \t6, 13, 15,\n\t\t2, 16, 18, \t2, 18, 3, \t2, 3, 13,\n\t\t18, 1, 9, \t18, 9, 11, \t18, 11, 3,\n\t\t4, 14, 12, \t4, 12, 0, \t4, 0, 8,\n\t\t11, 9, 5, \t11, 5, 19, \t11, 19, 7,\n\t\t19, 5, 14, \t19, 14, 4, \t19, 4, 17,\n\t\t1, 12, 14, \t1, 14, 5, \t1, 5, 9\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'DodecahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nDodecahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nDodecahedronBufferGeometry.prototype.constructor = DodecahedronBufferGeometry;\n\n/**\n * @author oosmoxiecode / https://github.com/oosmoxiecode\n * @author WestLangley / https://github.com/WestLangley\n * @author zz85 / https://github.com/zz85\n * @author miningold / https://github.com/miningold\n * @author jonobr1 / https://github.com/jonobr1\n * @author Mugen87 / https://github.com/Mugen87\n *\n */\n\n// TubeGeometry\n\nfunction TubeGeometry( path, tubularSegments, radius, radialSegments, closed, taper ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TubeGeometry';\n\n\tthis.parameters = {\n\t\tpath: path,\n\t\ttubularSegments: tubularSegments,\n\t\tradius: radius,\n\t\tradialSegments: radialSegments,\n\t\tclosed: closed\n\t};\n\n\tif ( taper !== undefined ) console.warn( 'THREE.TubeGeometry: taper has been removed.' );\n\n\tvar bufferGeometry = new TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed );\n\n\t// expose internals\n\n\tthis.tangents = bufferGeometry.tangents;\n\tthis.normals = bufferGeometry.normals;\n\tthis.binormals = bufferGeometry.binormals;\n\n\t// create geometry\n\n\tthis.fromBufferGeometry( bufferGeometry );\n\tthis.mergeVertices();\n\n}\n\nTubeGeometry.prototype = Object.create( Geometry.prototype );\nTubeGeometry.prototype.constructor = TubeGeometry;\n\n// TubeBufferGeometry\n\nfunction TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TubeBufferGeometry';\n\n\tthis.parameters = {\n\t\tpath: path,\n\t\ttubularSegments: tubularSegments,\n\t\tradius: radius,\n\t\tradialSegments: radialSegments,\n\t\tclosed: closed\n\t};\n\n\ttubularSegments = tubularSegments || 64;\n\tradius = radius || 1;\n\tradialSegments = radialSegments || 8;\n\tclosed = closed || false;\n\n\tvar frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t// expose internals\n\n\tthis.tangents = frames.tangents;\n\tthis.normals = frames.normals;\n\tthis.binormals = frames.binormals;\n\n\t// helper variables\n\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\tvar uv = new Vector2();\n\tvar P = new Vector3();\n\n\tvar i, j;\n\n\t// buffer\n\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\tvar indices = [];\n\n\t// create buffer data\n\n\tgenerateBufferData();\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// functions\n\n\tfunction generateBufferData() {\n\n\t\tfor ( i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\tgenerateSegment( i );\n\n\t\t}\n\n\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t// at the regular position on the given path\n\t\t//\n\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t// uvs are generated in a separate function.\n\t\t// this makes it easy compute correct values for closed geometries\n\n\t\tgenerateUVs();\n\n\t\t// finally create faces\n\n\t\tgenerateIndices();\n\n\t}\n\n\tfunction generateSegment( i ) {\n\n\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\tP = path.getPointAt( i / tubularSegments, P );\n\n\t\t// retrieve corresponding normal and binormal\n\n\t\tvar N = frames.normals[ i ];\n\t\tvar B = frames.binormals[ i ];\n\n\t\t// generate normals and vertices for the current segment\n\n\t\tfor ( j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tvar v = j / radialSegments * Math.PI * 2;\n\n\t\t\tvar sin = Math.sin( v );\n\t\t\tvar cos = - Math.cos( v );\n\n\t\t\t// normal\n\n\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\tnormal.normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t}\n\n\tfunction generateIndices() {\n\n\t\tfor ( j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\tvar a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tvar b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tvar c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tvar d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction generateUVs() {\n\n\t\tfor ( i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\tfor ( j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nTubeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTubeBufferGeometry.prototype.constructor = TubeBufferGeometry;\n\n/**\n * @author oosmoxiecode\n * @author Mugen87 / https://github.com/Mugen87\n *\n * based on http://www.blackpawn.com/texts/pqtorus/\n */\n\n// TorusKnotGeometry\n\nfunction TorusKnotGeometry( radius, tube, tubularSegments, radialSegments, p, q, heightScale ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TorusKnotGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\ttubularSegments: tubularSegments,\n\t\tradialSegments: radialSegments,\n\t\tp: p,\n\t\tq: q\n\t};\n\n\tif ( heightScale !== undefined ) console.warn( 'THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.' );\n\n\tthis.fromBufferGeometry( new TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) );\n\tthis.mergeVertices();\n\n}\n\nTorusKnotGeometry.prototype = Object.create( Geometry.prototype );\nTorusKnotGeometry.prototype.constructor = TorusKnotGeometry;\n\n// TorusKnotBufferGeometry\n\nfunction TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TorusKnotBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\ttubularSegments: tubularSegments,\n\t\tradialSegments: radialSegments,\n\t\tp: p,\n\t\tq: q\n\t};\n\n\tradius = radius || 1;\n\ttube = tube || 0.4;\n\ttubularSegments = Math.floor( tubularSegments ) || 64;\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\tp = p || 2;\n\tq = q || 3;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar i, j;\n\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\n\tvar P1 = new Vector3();\n\tvar P2 = new Vector3();\n\n\tvar B = new Vector3();\n\tvar T = new Vector3();\n\tvar N = new Vector3();\n\n\t// generate vertices, normals and uvs\n\n\tfor ( i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segement\n\n\t\tvar u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t// calculate orthonormal basis\n\n\t\tT.subVectors( P2, P1 );\n\t\tN.addVectors( P2, P1 );\n\t\tB.crossVectors( T, N );\n\t\tN.crossVectors( B, T );\n\n\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\tB.normalize();\n\t\tN.normalize();\n\n\t\tfor ( j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n\t\t\tvar v = j / radialSegments * Math.PI * 2;\n\t\t\tvar cx = - tube * Math.cos( v );\n\t\t\tvar cy = tube * Math.sin( v );\n\n\t\t\t// now calculate the final vertex position.\n\t\t\t// first we orient the extrusion with our basis vectos, then we add it to the current position on the curve\n\n\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\n\t\t\tnormal.subVectors( vertex, P1 ).normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( i / tubularSegments );\n\t\t\tuvs.push( j / radialSegments );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( j = 1; j <= tubularSegments; j ++ ) {\n\n\t\tfor ( i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t// indices\n\n\t\t\tvar a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\tvar b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\tvar c = ( radialSegments + 1 ) * j + i;\n\t\t\tvar d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// this function calculates the current position on the torus curve\n\n\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\tvar cu = Math.cos( u );\n\t\tvar su = Math.sin( u );\n\t\tvar quOverP = q / p * u;\n\t\tvar cs = Math.cos( quOverP );\n\n\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t}\n\n}\n\nTorusKnotBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTorusKnotBufferGeometry.prototype.constructor = TorusKnotBufferGeometry;\n\n/**\n * @author oosmoxiecode\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// TorusGeometry\n\nfunction TorusGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TorusGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\tradialSegments: radialSegments,\n\t\ttubularSegments: tubularSegments,\n\t\tarc: arc\n\t};\n\n\tthis.fromBufferGeometry( new TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) );\n\tthis.mergeVertices();\n\n}\n\nTorusGeometry.prototype = Object.create( Geometry.prototype );\nTorusGeometry.prototype.constructor = TorusGeometry;\n\n// TorusBufferGeometry\n\nfunction TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TorusBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\tradialSegments: radialSegments,\n\t\ttubularSegments: tubularSegments,\n\t\tarc: arc\n\t};\n\n\tradius = radius || 1;\n\ttube = tube || 0.4;\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\ttubularSegments = Math.floor( tubularSegments ) || 6;\n\tarc = arc || Math.PI * 2;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar center = new Vector3();\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\n\tvar j, i;\n\n\t// generate vertices, normals and uvs\n\n\tfor ( j = 0; j <= radialSegments; j ++ ) {\n\n\t\tfor ( i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\tvar u = i / tubularSegments * arc;\n\t\t\tvar v = j / radialSegments * Math.PI * 2;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\tcenter.y = radius * Math.sin( u );\n\t\t\tnormal.subVectors( vertex, center ).normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( i / tubularSegments );\n\t\t\tuvs.push( j / radialSegments );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( j = 1; j <= radialSegments; j ++ ) {\n\n\t\tfor ( i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t// indices\n\n\t\t\tvar a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\tvar b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\tvar c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\tvar d = ( tubularSegments + 1 ) * j + i;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nTorusBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTorusBufferGeometry.prototype.constructor = TorusBufferGeometry;\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n * Port from https://github.com/mapbox/earcut (v2.1.2)\n */\n\nvar Earcut = {\n\n\ttriangulate: function ( data, holeIndices, dim ) {\n\n\t\tdim = dim || 2;\n\n\t\tvar hasHoles = holeIndices && holeIndices.length,\n\t\t\touterLen = hasHoles ? holeIndices[ 0 ] * dim : data.length,\n\t\t\touterNode = linkedList( data, 0, outerLen, dim, true ),\n\t\t\ttriangles = [];\n\n\t\tif ( ! outerNode ) return triangles;\n\n\t\tvar minX, minY, maxX, maxY, x, y, invSize;\n\n\t\tif ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim );\n\n\t\t// if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n\n\t\tif ( data.length > 80 * dim ) {\n\n\t\t\tminX = maxX = data[ 0 ];\n\t\t\tminY = maxY = data[ 1 ];\n\n\t\t\tfor ( var i = dim; i < outerLen; i += dim ) {\n\n\t\t\t\tx = data[ i ];\n\t\t\t\ty = data[ i + 1 ];\n\t\t\t\tif ( x < minX ) minX = x;\n\t\t\t\tif ( y < minY ) minY = y;\n\t\t\t\tif ( x > maxX ) maxX = x;\n\t\t\t\tif ( y > maxY ) maxY = y;\n\n\t\t\t}\n\n\t\t\t// minX, minY and invSize are later used to transform coords into integers for z-order calculation\n\n\t\t\tinvSize = Math.max( maxX - minX, maxY - minY );\n\t\t\tinvSize = invSize !== 0 ? 1 / invSize : 0;\n\n\t\t}\n\n\t\tearcutLinked( outerNode, triangles, dim, minX, minY, invSize );\n\n\t\treturn triangles;\n\n\t}\n\n};\n\n// create a circular doubly linked list from polygon points in the specified winding order\n\nfunction linkedList( data, start, end, dim, clockwise ) {\n\n\tvar i, last;\n\n\tif ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) {\n\n\t\tfor ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t} else {\n\n\t\tfor ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t}\n\n\tif ( last && equals( last, last.next ) ) {\n\n\t\tremoveNode( last );\n\t\tlast = last.next;\n\n\t}\n\n\treturn last;\n\n}\n\n// eliminate colinear or duplicate points\n\nfunction filterPoints( start, end ) {\n\n\tif ( ! start ) return start;\n\tif ( ! end ) end = start;\n\n\tvar p = start, again;\n\n\tdo {\n\n\t\tagain = false;\n\n\t\tif ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) {\n\n\t\t\tremoveNode( p );\n\t\t\tp = end = p.prev;\n\t\t\tif ( p === p.next ) break;\n\t\t\tagain = true;\n\n\t\t} else {\n\n\t\t\tp = p.next;\n\n\t\t}\n\n\t} while ( again || p !== end );\n\n\treturn end;\n\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\n\nfunction earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) {\n\n\tif ( ! ear ) return;\n\n\t// interlink polygon nodes in z-order\n\n\tif ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize );\n\n\tvar stop = ear, prev, next;\n\n\t// iterate through ears, slicing them one by one\n\n\twhile ( ear.prev !== ear.next ) {\n\n\t\tprev = ear.prev;\n\t\tnext = ear.next;\n\n\t\tif ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) {\n\n\t\t\t// cut off the triangle\n\t\t\ttriangles.push( prev.i / dim );\n\t\t\ttriangles.push( ear.i / dim );\n\t\t\ttriangles.push( next.i / dim );\n\n\t\t\tremoveNode( ear );\n\n\t\t\t// skipping the next vertice leads to less sliver triangles\n\t\t\tear = next.next;\n\t\t\tstop = next.next;\n\n\t\t\tcontinue;\n\n\t\t}\n\n\t\tear = next;\n\n\t\t// if we looped through the whole remaining polygon and can't find any more ears\n\n\t\tif ( ear === stop ) {\n\n\t\t\t// try filtering points and slicing again\n\n\t\t\tif ( ! pass ) {\n\n\t\t\t\tearcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 );\n\n\t\t\t\t// if this didn't work, try curing all small self-intersections locally\n\n\t\t\t} else if ( pass === 1 ) {\n\n\t\t\t\tear = cureLocalIntersections( ear, triangles, dim );\n\t\t\t\tearcutLinked( ear, triangles, dim, minX, minY, invSize, 2 );\n\n\t\t\t// as a last resort, try splitting the remaining polygon into two\n\n\t\t\t} else if ( pass === 2 ) {\n\n\t\t\t\tsplitEarcut( ear, triangles, dim, minX, minY, invSize );\n\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\n\nfunction isEar( ear ) {\n\n\tvar a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// now make sure we don't have other points inside the potential ear\n\tvar p = ear.next.next;\n\n\twhile ( p !== ear.prev ) {\n\n\t\tif ( pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) && area( p.prev, p, p.next ) >= 0 ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction isEarHashed( ear, minX, minY, invSize ) {\n\n\tvar a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// triangle bbox; min & max are calculated like this for speed\n\n\tvar minTX = a.x < b.x ? ( a.x < c.x ? a.x : c.x ) : ( b.x < c.x ? b.x : c.x ),\n\t\tminTY = a.y < b.y ? ( a.y < c.y ? a.y : c.y ) : ( b.y < c.y ? b.y : c.y ),\n\t\tmaxTX = a.x > b.x ? ( a.x > c.x ? a.x : c.x ) : ( b.x > c.x ? b.x : c.x ),\n\t\tmaxTY = a.y > b.y ? ( a.y > c.y ? a.y : c.y ) : ( b.y > c.y ? b.y : c.y );\n\n\t// z-order range for the current triangle bbox;\n\n\tvar minZ = zOrder( minTX, minTY, minX, minY, invSize ),\n\t\tmaxZ = zOrder( maxTX, maxTY, minX, minY, invSize );\n\n\t// first look for points inside the triangle in increasing z-order\n\n\tvar p = ear.nextZ;\n\n\twhile ( p && p.z <= maxZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.nextZ;\n\n\t}\n\n\t// then look for points in decreasing z-order\n\n\tp = ear.prevZ;\n\n\twhile ( p && p.z >= minZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\n\t\tp = p.prevZ;\n\n\t}\n\n\treturn true;\n\n}\n\n// go through all polygon nodes and cure small local self-intersections\n\nfunction cureLocalIntersections( start, triangles, dim ) {\n\n\tvar p = start;\n\n\tdo {\n\n\t\tvar a = p.prev, b = p.next.next;\n\n\t\tif ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) {\n\n\t\t\ttriangles.push( a.i / dim );\n\t\t\ttriangles.push( p.i / dim );\n\t\t\ttriangles.push( b.i / dim );\n\n\t\t\t// remove two nodes involved\n\n\t\t\tremoveNode( p );\n\t\t\tremoveNode( p.next );\n\n\t\t\tp = start = b;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn p;\n\n}\n\n// try splitting polygon into two and triangulate them independently\n\nfunction splitEarcut( start, triangles, dim, minX, minY, invSize ) {\n\n\t// look for a valid diagonal that divides the polygon into two\n\n\tvar a = start;\n\n\tdo {\n\n\t\tvar b = a.next.next;\n\n\t\twhile ( b !== a.prev ) {\n\n\t\t\tif ( a.i !== b.i && isValidDiagonal( a, b ) ) {\n\n\t\t\t\t// split the polygon in two by the diagonal\n\n\t\t\t\tvar c = splitPolygon( a, b );\n\n\t\t\t\t// filter colinear points around the cuts\n\n\t\t\t\ta = filterPoints( a, a.next );\n\t\t\t\tc = filterPoints( c, c.next );\n\n\t\t\t\t// run earcut on each half\n\n\t\t\t\tearcutLinked( a, triangles, dim, minX, minY, invSize );\n\t\t\t\tearcutLinked( c, triangles, dim, minX, minY, invSize );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tb = b.next;\n\n\t\t}\n\n\t\ta = a.next;\n\n\t} while ( a !== start );\n\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\n\nfunction eliminateHoles( data, holeIndices, outerNode, dim ) {\n\n\tvar queue = [], i, len, start, end, list;\n\n\tfor ( i = 0, len = holeIndices.length; i < len; i ++ ) {\n\n\t\tstart = holeIndices[ i ] * dim;\n\t\tend = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length;\n\t\tlist = linkedList( data, start, end, dim, false );\n\t\tif ( list === list.next ) list.steiner = true;\n\t\tqueue.push( getLeftmost( list ) );\n\n\t}\n\n\tqueue.sort( compareX );\n\n\t// process holes from left to right\n\n\tfor ( i = 0; i < queue.length; i ++ ) {\n\n\t\teliminateHole( queue[ i ], outerNode );\n\t\touterNode = filterPoints( outerNode, outerNode.next );\n\n\t}\n\n\treturn outerNode;\n\n}\n\nfunction compareX( a, b ) {\n\n\treturn a.x - b.x;\n\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\n\nfunction eliminateHole( hole, outerNode ) {\n\n\touterNode = findHoleBridge( hole, outerNode );\n\n\tif ( outerNode ) {\n\n\t\tvar b = splitPolygon( outerNode, hole );\n\n\t\tfilterPoints( b, b.next );\n\n\t}\n\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\n\nfunction findHoleBridge( hole, outerNode ) {\n\n\tvar p = outerNode,\n\t\thx = hole.x,\n\t\thy = hole.y,\n\t\tqx = - Infinity,\n\t\tm;\n\n\t// find a segment intersected by a ray from the hole's leftmost point to the left;\n\t// segment's endpoint with lesser x will be potential connection point\n\n\tdo {\n\n\t\tif ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) {\n\n\t\t\tvar x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y );\n\n\t\t\tif ( x <= hx && x > qx ) {\n\n\t\t\t\tqx = x;\n\n\t\t\t\tif ( x === hx ) {\n\n\t\t\t\t\tif ( hy === p.y ) return p;\n\t\t\t\t\tif ( hy === p.next.y ) return p.next;\n\n\t\t\t\t}\n\n\t\t\t\tm = p.x < p.next.x ? p : p.next;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== outerNode );\n\n\tif ( ! m ) return null;\n\n\tif ( hx === qx ) return m.prev; // hole touches outer segment; pick lower endpoint\n\n\t// look for points inside the triangle of hole point, segment intersection and endpoint;\n\t// if there are no points found, we have a valid connection;\n\t// otherwise choose the point of the minimum angle with the ray as connection point\n\n\tvar stop = m,\n\t\tmx = m.x,\n\t\tmy = m.y,\n\t\ttanMin = Infinity,\n\t\ttan;\n\n\tp = m.next;\n\n\twhile ( p !== stop ) {\n\n\t\tif ( hx >= p.x && p.x >= mx && hx !== p.x &&\n\t\t\t\t\t\tpointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) {\n\n\t\t\ttan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential\n\n\t\t\tif ( ( tan < tanMin || ( tan === tanMin && p.x > m.x ) ) && locallyInside( p, hole ) ) {\n\n\t\t\t\tm = p;\n\t\t\t\ttanMin = tan;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t}\n\n\treturn m;\n\n}\n\n// interlink polygon nodes in z-order\n\nfunction indexCurve( start, minX, minY, invSize ) {\n\n\tvar p = start;\n\n\tdo {\n\n\t\tif ( p.z === null ) p.z = zOrder( p.x, p.y, minX, minY, invSize );\n\t\tp.prevZ = p.prev;\n\t\tp.nextZ = p.next;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\tp.prevZ.nextZ = null;\n\tp.prevZ = null;\n\n\tsortLinked( p );\n\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\n\nfunction sortLinked( list ) {\n\n\tvar i, p, q, e, tail, numMerges, pSize, qSize, inSize = 1;\n\n\tdo {\n\n\t\tp = list;\n\t\tlist = null;\n\t\ttail = null;\n\t\tnumMerges = 0;\n\n\t\twhile ( p ) {\n\n\t\t\tnumMerges ++;\n\t\t\tq = p;\n\t\t\tpSize = 0;\n\n\t\t\tfor ( i = 0; i < inSize; i ++ ) {\n\n\t\t\t\tpSize ++;\n\t\t\t\tq = q.nextZ;\n\t\t\t\tif ( ! q ) break;\n\n\t\t\t}\n\n\t\t\tqSize = inSize;\n\n\t\t\twhile ( pSize > 0 || ( qSize > 0 && q ) ) {\n\n\t\t\t\tif ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) {\n\n\t\t\t\t\te = p;\n\t\t\t\t\tp = p.nextZ;\n\t\t\t\t\tpSize --;\n\n\t\t\t\t} else {\n\n\t\t\t\t\te = q;\n\t\t\t\t\tq = q.nextZ;\n\t\t\t\t\tqSize --;\n\n\t\t\t\t}\n\n\t\t\t\tif ( tail ) tail.nextZ = e;\n\t\t\t\telse list = e;\n\n\t\t\t\te.prevZ = tail;\n\t\t\t\ttail = e;\n\n\t\t\t}\n\n\t\t\tp = q;\n\n\t\t}\n\n\t\ttail.nextZ = null;\n\t\tinSize *= 2;\n\n\t} while ( numMerges > 1 );\n\n\treturn list;\n\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\n\nfunction zOrder( x, y, minX, minY, invSize ) {\n\n\t// coords are transformed into non-negative 15-bit integer range\n\n\tx = 32767 * ( x - minX ) * invSize;\n\ty = 32767 * ( y - minY ) * invSize;\n\n\tx = ( x | ( x << 8 ) ) & 0x00FF00FF;\n\tx = ( x | ( x << 4 ) ) & 0x0F0F0F0F;\n\tx = ( x | ( x << 2 ) ) & 0x33333333;\n\tx = ( x | ( x << 1 ) ) & 0x55555555;\n\n\ty = ( y | ( y << 8 ) ) & 0x00FF00FF;\n\ty = ( y | ( y << 4 ) ) & 0x0F0F0F0F;\n\ty = ( y | ( y << 2 ) ) & 0x33333333;\n\ty = ( y | ( y << 1 ) ) & 0x55555555;\n\n\treturn x | ( y << 1 );\n\n}\n\n// find the leftmost node of a polygon ring\n\nfunction getLeftmost( start ) {\n\n\tvar p = start, leftmost = start;\n\n\tdo {\n\n\t\tif ( p.x < leftmost.x ) leftmost = p;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn leftmost;\n\n}\n\n// check if a point lies within a convex triangle\n\nfunction pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) {\n\n\treturn ( cx - px ) * ( ay - py ) - ( ax - px ) * ( cy - py ) >= 0 &&\n\t ( ax - px ) * ( by - py ) - ( bx - px ) * ( ay - py ) >= 0 &&\n\t ( bx - px ) * ( cy - py ) - ( cx - px ) * ( by - py ) >= 0;\n\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\n\nfunction isValidDiagonal( a, b ) {\n\n\treturn a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) &&\n\t\tlocallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b );\n\n}\n\n// signed area of a triangle\n\nfunction area( p, q, r ) {\n\n\treturn ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y );\n\n}\n\n// check if two points are equal\n\nfunction equals( p1, p2 ) {\n\n\treturn p1.x === p2.x && p1.y === p2.y;\n\n}\n\n// check if two segments intersect\n\nfunction intersects( p1, q1, p2, q2 ) {\n\n\tif ( ( equals( p1, q1 ) && equals( p2, q2 ) ) ||\n\t\t\t( equals( p1, q2 ) && equals( p2, q1 ) ) ) return true;\n\n\treturn area( p1, q1, p2 ) > 0 !== area( p1, q1, q2 ) > 0 &&\n\t\t\t\t area( p2, q2, p1 ) > 0 !== area( p2, q2, q1 ) > 0;\n\n}\n\n// check if a polygon diagonal intersects any polygon segments\n\nfunction intersectsPolygon( a, b ) {\n\n\tvar p = a;\n\n\tdo {\n\n\t\tif ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n\t\t\t\t\t\tintersects( p, p.next, a, b ) ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn false;\n\n}\n\n// check if a polygon diagonal is locally inside the polygon\n\nfunction locallyInside( a, b ) {\n\n\treturn area( a.prev, a, a.next ) < 0 ?\n\t\tarea( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 :\n\t\tarea( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0;\n\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\n\nfunction middleInside( a, b ) {\n\n\tvar p = a,\n\t\tinside = false,\n\t\tpx = ( a.x + b.x ) / 2,\n\t\tpy = ( a.y + b.y ) / 2;\n\n\tdo {\n\n\t\tif ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y &&\n\t\t\t\t\t\t( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) ) {\n\n\t\t\tinside = ! inside;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn inside;\n\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\n\nfunction splitPolygon( a, b ) {\n\n\tvar a2 = new Node( a.i, a.x, a.y ),\n\t\tb2 = new Node( b.i, b.x, b.y ),\n\t\tan = a.next,\n\t\tbp = b.prev;\n\n\ta.next = b;\n\tb.prev = a;\n\n\ta2.next = an;\n\tan.prev = a2;\n\n\tb2.next = a2;\n\ta2.prev = b2;\n\n\tbp.next = b2;\n\tb2.prev = bp;\n\n\treturn b2;\n\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\n\nfunction insertNode( i, x, y, last ) {\n\n\tvar p = new Node( i, x, y );\n\n\tif ( ! last ) {\n\n\t\tp.prev = p;\n\t\tp.next = p;\n\n\t} else {\n\n\t\tp.next = last.next;\n\t\tp.prev = last;\n\t\tlast.next.prev = p;\n\t\tlast.next = p;\n\n\t}\n\n\treturn p;\n\n}\n\nfunction removeNode( p ) {\n\n\tp.next.prev = p.prev;\n\tp.prev.next = p.next;\n\n\tif ( p.prevZ ) p.prevZ.nextZ = p.nextZ;\n\tif ( p.nextZ ) p.nextZ.prevZ = p.prevZ;\n\n}\n\nfunction Node( i, x, y ) {\n\n\t// vertice index in coordinates array\n\tthis.i = i;\n\n\t// vertex coordinates\n\tthis.x = x;\n\tthis.y = y;\n\n\t// previous and next vertice nodes in a polygon ring\n\tthis.prev = null;\n\tthis.next = null;\n\n\t// z-order curve value\n\tthis.z = null;\n\n\t// previous and next nodes in z-order\n\tthis.prevZ = null;\n\tthis.nextZ = null;\n\n\t// indicates whether this is a steiner point\n\tthis.steiner = false;\n\n}\n\nfunction signedArea( data, start, end, dim ) {\n\n\tvar sum = 0;\n\n\tfor ( var i = start, j = end - dim; i < end; i += dim ) {\n\n\t\tsum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] );\n\t\tj = i;\n\n\t}\n\n\treturn sum;\n\n}\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n */\n\nvar ShapeUtils = {\n\n\t// calculate area of the contour polygon\n\n\tarea: function ( contour ) {\n\n\t\tvar n = contour.length;\n\t\tvar a = 0.0;\n\n\t\tfor ( var p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t}\n\n\t\treturn a * 0.5;\n\n\t},\n\n\tisClockWise: function ( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t},\n\n\ttriangulateShape: function ( contour, holes ) {\n\n\t\tvar vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\n\t\tvar holeIndices = []; // array of hole indices\n\t\tvar faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ]\n\n\t\tremoveDupEndPts( contour );\n\t\taddContour( vertices, contour );\n\n\t\t//\n\n\t\tvar holeIndex = contour.length;\n\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfor ( var i = 0; i < holes.length; i ++ ) {\n\n\t\t\tholeIndices.push( holeIndex );\n\t\t\tholeIndex += holes[ i ].length;\n\t\t\taddContour( vertices, holes[ i ] );\n\n\t\t}\n\n\t\t//\n\n\t\tvar triangles = Earcut.triangulate( vertices, holeIndices );\n\n\t\t//\n\n\t\tfor ( var i = 0; i < triangles.length; i += 3 ) {\n\n\t\t\tfaces.push( triangles.slice( i, i + 3 ) );\n\n\t\t}\n\n\t\treturn faces;\n\n\t}\n\n};\n\nfunction removeDupEndPts( points ) {\n\n\tvar l = points.length;\n\n\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\n\n\t\tpoints.pop();\n\n\t}\n\n}\n\nfunction addContour( vertices, contour ) {\n\n\tfor ( var i = 0; i < contour.length; i ++ ) {\n\n\t\tvertices.push( contour[ i ].x );\n\t\tvertices.push( contour[ i ].y );\n\n\t}\n\n}\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n * Creates extruded geometry from a path shape.\n *\n * parameters = {\n *\n *  curveSegments: <int>, // number of points on the curves\n *  steps: <int>, // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n *  depth: <float>, // Depth to extrude the shape\n *\n *  bevelEnabled: <bool>, // turn on bevel\n *  bevelThickness: <float>, // how deep into the original shape bevel goes\n *  bevelSize: <float>, // how far from shape outline is bevel\n *  bevelSegments: <int>, // number of bevel layers\n *\n *  extrudePath: <THREE.Curve> // curve to extrude shape along\n *\n *  UVGenerator: <Object> // object that provides UV generator functions\n *\n * }\n */\n\n// ExtrudeGeometry\n\nfunction ExtrudeGeometry( shapes, options ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ExtrudeGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\toptions: options\n\t};\n\n\tthis.fromBufferGeometry( new ExtrudeBufferGeometry( shapes, options ) );\n\tthis.mergeVertices();\n\n}\n\nExtrudeGeometry.prototype = Object.create( Geometry.prototype );\nExtrudeGeometry.prototype.constructor = ExtrudeGeometry;\n\nExtrudeGeometry.prototype.toJSON = function () {\n\n\tvar data = Geometry.prototype.toJSON.call( this );\n\n\tvar shapes = this.parameters.shapes;\n\tvar options = this.parameters.options;\n\n\treturn toJSON( shapes, options, data );\n\n};\n\n// ExtrudeBufferGeometry\n\nfunction ExtrudeBufferGeometry( shapes, options ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ExtrudeBufferGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\toptions: options\n\t};\n\n\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\tvar scope = this;\n\n\tvar verticesArray = [];\n\tvar uvArray = [];\n\n\tfor ( var i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\tvar shape = shapes[ i ];\n\t\taddShape( shape );\n\n\t}\n\n\t// build geometry\n\n\tthis.addAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) );\n\n\tthis.computeVertexNormals();\n\n\t// functions\n\n\tfunction addShape( shape ) {\n\n\t\tvar placeholder = [];\n\n\t\t// options\n\n\t\tvar curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\t\tvar steps = options.steps !== undefined ? options.steps : 1;\n\t\tvar depth = options.depth !== undefined ? options.depth : 100;\n\n\t\tvar bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\n\t\tvar bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 6;\n\t\tvar bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 2;\n\t\tvar bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\t\tvar extrudePath = options.extrudePath;\n\n\t\tvar uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator;\n\n\t\t// deprecated options\n\n\t\tif ( options.amount !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.ExtrudeBufferGeometry: amount has been renamed to depth.' );\n\t\t\tdepth = options.amount;\n\n\t\t}\n\n\t\t//\n\n\t\tvar extrudePts, extrudeByPath = false;\n\t\tvar splineTube, binormal, normal, position2;\n\n\t\tif ( extrudePath ) {\n\n\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\t\textrudeByPath = true;\n\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t\t// SETUP TNB variables\n\n\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\tsplineTube = extrudePath.computeFrenetFrames( steps, false );\n\n\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\tbinormal = new Vector3();\n\t\t\tnormal = new Vector3();\n\t\t\tposition2 = new Vector3();\n\n\t\t}\n\n\t\t// Safeguards if bevels are not enabled\n\n\t\tif ( ! bevelEnabled ) {\n\n\t\t\tbevelSegments = 0;\n\t\t\tbevelThickness = 0;\n\t\t\tbevelSize = 0;\n\n\t\t}\n\n\t\t// Variables initialization\n\n\t\tvar ahole, h, hl; // looping of holes\n\n\t\tvar shapePoints = shape.extractPoints( curveSegments );\n\n\t\tvar vertices = shapePoints.shape;\n\t\tvar holes = shapePoints.holes;\n\n\t\tvar reverse = ! ShapeUtils.isClockWise( vertices );\n\n\t\tif ( reverse ) {\n\n\t\t\tvertices = vertices.reverse();\n\n\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tahole = holes[ h ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tvar faces = ShapeUtils.triangulateShape( vertices, holes );\n\n\t\t/* Vertices */\n\n\t\tvar contour = vertices; // vertices has all points but contour has only points of circumference\n\n\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tahole = holes[ h ];\n\n\t\t\tvertices = vertices.concat( ahole );\n\n\t\t}\n\n\n\t\tfunction scalePt2( pt, vec, size ) {\n\n\t\t\tif ( ! vec ) console.error( \"THREE.ExtrudeGeometry: vec does not exist\" );\n\n\t\t\treturn vec.clone().multiplyScalar( size ).add( pt );\n\n\t\t}\n\n\t\tvar b, bs, t, z,\n\t\t\tvert, vlen = vertices.length,\n\t\t\tface, flen = faces.length;\n\n\n\t\t// Find directions for point movement\n\n\n\t\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t\t//   shifted by 1 unit (length of normalized vector) to the left\n\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t\t//\n\t\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t\t//  adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\t\tvar v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\n\n\t\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\t\tvar v_prev_x = inPt.x - inPrev.x,\n\t\t\t\tv_prev_y = inPt.y - inPrev.y;\n\t\t\tvar v_next_x = inNext.x - inPt.x,\n\t\t\t\tv_next_y = inNext.y - inPt.y;\n\n\t\t\tvar v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t\t// check for collinear edges\n\t\t\tvar collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t\t// not collinear\n\n\t\t\t\t// length of vectors for normalizing\n\n\t\t\t\tvar v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\t\tvar v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\t\tvar ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\t\tvar ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\t\tvar ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\t\tvar ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\t\tvar sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\t// vector from inPt to intersection point\n\n\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t//  but prevent crazy spikes\n\t\t\t\tvar v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\t\treturn new Vector2( v_trans_x, v_trans_y );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// handle special case of collinear edges\n\n\t\t\t\tvar direction_eq = false; // assumes: opposite\n\t\t\t\tif ( v_prev_x > Number.EPSILON ) {\n\n\t\t\t\t\tif ( v_next_x > Number.EPSILON ) {\n\n\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( direction_eq ) {\n\n\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t\t}\n\n\n\t\tvar contourMovements = [];\n\n\t\tfor ( var i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\tif ( j === il ) j = 0;\n\t\t\tif ( k === il ) k = 0;\n\n\t\t\t//  (j)---(i)---(k)\n\t\t\t// console.log('i,j,k', i, j , k)\n\n\t\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t\t}\n\n\t\tvar holesMovements = [],\n\t\t\toneHoleMovements, verticesMovements = contourMovements.concat();\n\n\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tahole = holes[ h ];\n\n\t\t\toneHoleMovements = [];\n\n\t\t\tfor ( i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t//  (j)---(i)---(k)\n\t\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t\t}\n\n\t\t\tholesMovements.push( oneHoleMovements );\n\t\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t\t}\n\n\n\t\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\t\tfor ( b = 0; b < bevelSegments; b ++ ) {\n\n\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\t\tt = b / bevelSegments;\n\t\t\tz = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\tbs = bevelSize * Math.sin( t * Math.PI / 2 );\n\n\t\t\t// contract shape\n\n\t\t\tfor ( i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\tvert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\n\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t}\n\n\t\t\t// expand holes\n\n\t\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tahole = holes[ h ];\n\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\tfor ( i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\tvert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tbs = bevelSize;\n\n\t\t// Back facing vertices\n\n\t\tfor ( i = 0; i < vlen; i ++ ) {\n\n\t\t\tvert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\tv( vert.x, vert.y, 0 );\n\n\t\t\t} else {\n\n\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\n\n\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Add stepped vertices...\n\t\t// Including front facing vertices\n\n\t\tvar s;\n\n\t\tfor ( s = 1; s <= steps; s ++ ) {\n\n\t\t\tfor ( i = 0; i < vlen; i ++ ) {\n\n\t\t\t\tvert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\tv( vert.x, vert.y, depth / steps * s );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// Add bevel segments planes\n\n\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\t\tfor ( b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\t\tt = b / bevelSegments;\n\t\t\tz = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\tbs = bevelSize * Math.sin( t * Math.PI / 2 );\n\n\t\t\t// contract shape\n\n\t\t\tfor ( i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\tvert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t}\n\n\t\t\t// expand holes\n\n\t\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tahole = holes[ h ];\n\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\tfor ( i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\tvert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t/* Faces */\n\n\t\t// Top and bottom faces\n\n\t\tbuildLidFaces();\n\n\t\t// Sides faces\n\n\t\tbuildSideFaces();\n\n\n\t\t/////  Internal functions\n\n\t\tfunction buildLidFaces() {\n\n\t\t\tvar start = verticesArray.length / 3;\n\n\t\t\tif ( bevelEnabled ) {\n\n\t\t\t\tvar layer = 0; // steps + 1\n\t\t\t\tvar offset = vlen * layer;\n\n\t\t\t\t// Bottom faces\n\n\t\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tface = faces[ i ];\n\t\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t\t}\n\n\t\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\t\toffset = vlen * layer;\n\n\t\t\t\t// Top faces\n\n\t\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tface = faces[ i ];\n\t\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// Bottom faces\n\n\t\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tface = faces[ i ];\n\t\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t\t}\n\n\t\t\t\t// Top faces\n\n\t\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tface = faces[ i ];\n\t\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 0 );\n\n\t\t}\n\n\t\t// Create faces for the z-sides of the shape\n\n\t\tfunction buildSideFaces() {\n\n\t\t\tvar start = verticesArray.length / 3;\n\t\t\tvar layeroffset = 0;\n\t\t\tsidewalls( contour, layeroffset );\n\t\t\tlayeroffset += contour.length;\n\n\t\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tahole = holes[ h ];\n\t\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t\t//, true\n\t\t\t\tlayeroffset += ahole.length;\n\n\t\t\t}\n\n\n\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 1 );\n\n\n\t\t}\n\n\t\tfunction sidewalls( contour, layeroffset ) {\n\n\t\t\tvar j, k;\n\t\t\ti = contour.length;\n\n\t\t\twhile ( -- i >= 0 ) {\n\n\t\t\t\tj = i;\n\t\t\t\tk = i - 1;\n\t\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\t\tvar s = 0,\n\t\t\t\t\tsl = steps + bevelSegments * 2;\n\n\t\t\t\tfor ( s = 0; s < sl; s ++ ) {\n\n\t\t\t\t\tvar slen1 = vlen * s;\n\t\t\t\t\tvar slen2 = vlen * ( s + 1 );\n\n\t\t\t\t\tvar a = layeroffset + j + slen1,\n\t\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\t\tf4( a, b, c, d );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction v( x, y, z ) {\n\n\t\t\tplaceholder.push( x );\n\t\t\tplaceholder.push( y );\n\t\t\tplaceholder.push( z );\n\n\t\t}\n\n\n\t\tfunction f3( a, b, c ) {\n\n\t\t\taddVertex( a );\n\t\t\taddVertex( b );\n\t\t\taddVertex( c );\n\n\t\t\tvar nextIndex = verticesArray.length / 3;\n\t\t\tvar uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\taddUV( uvs[ 0 ] );\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 2 ] );\n\n\t\t}\n\n\t\tfunction f4( a, b, c, d ) {\n\n\t\t\taddVertex( a );\n\t\t\taddVertex( b );\n\t\t\taddVertex( d );\n\n\t\t\taddVertex( b );\n\t\t\taddVertex( c );\n\t\t\taddVertex( d );\n\n\n\t\t\tvar nextIndex = verticesArray.length / 3;\n\t\t\tvar uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\taddUV( uvs[ 0 ] );\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 2 ] );\n\t\t\taddUV( uvs[ 3 ] );\n\n\t\t}\n\n\t\tfunction addVertex( index ) {\n\n\t\t\tverticesArray.push( placeholder[ index * 3 + 0 ] );\n\t\t\tverticesArray.push( placeholder[ index * 3 + 1 ] );\n\t\t\tverticesArray.push( placeholder[ index * 3 + 2 ] );\n\n\t\t}\n\n\n\t\tfunction addUV( vector2 ) {\n\n\t\t\tuvArray.push( vector2.x );\n\t\t\tuvArray.push( vector2.y );\n\n\t\t}\n\n\t}\n\n}\n\nExtrudeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nExtrudeBufferGeometry.prototype.constructor = ExtrudeBufferGeometry;\n\nExtrudeBufferGeometry.prototype.toJSON = function () {\n\n\tvar data = BufferGeometry.prototype.toJSON.call( this );\n\n\tvar shapes = this.parameters.shapes;\n\tvar options = this.parameters.options;\n\n\treturn toJSON( shapes, options, data );\n\n};\n\n//\n\nvar WorldUVGenerator = {\n\n\tgenerateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) {\n\n\t\tvar a_x = vertices[ indexA * 3 ];\n\t\tvar a_y = vertices[ indexA * 3 + 1 ];\n\t\tvar b_x = vertices[ indexB * 3 ];\n\t\tvar b_y = vertices[ indexB * 3 + 1 ];\n\t\tvar c_x = vertices[ indexC * 3 ];\n\t\tvar c_y = vertices[ indexC * 3 + 1 ];\n\n\t\treturn [\n\t\t\tnew Vector2( a_x, a_y ),\n\t\t\tnew Vector2( b_x, b_y ),\n\t\t\tnew Vector2( c_x, c_y )\n\t\t];\n\n\t},\n\n\tgenerateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) {\n\n\t\tvar a_x = vertices[ indexA * 3 ];\n\t\tvar a_y = vertices[ indexA * 3 + 1 ];\n\t\tvar a_z = vertices[ indexA * 3 + 2 ];\n\t\tvar b_x = vertices[ indexB * 3 ];\n\t\tvar b_y = vertices[ indexB * 3 + 1 ];\n\t\tvar b_z = vertices[ indexB * 3 + 2 ];\n\t\tvar c_x = vertices[ indexC * 3 ];\n\t\tvar c_y = vertices[ indexC * 3 + 1 ];\n\t\tvar c_z = vertices[ indexC * 3 + 2 ];\n\t\tvar d_x = vertices[ indexD * 3 ];\n\t\tvar d_y = vertices[ indexD * 3 + 1 ];\n\t\tvar d_z = vertices[ indexD * 3 + 2 ];\n\n\t\tif ( Math.abs( a_y - b_y ) < 0.01 ) {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_x, 1 - a_z ),\n\t\t\t\tnew Vector2( b_x, 1 - b_z ),\n\t\t\t\tnew Vector2( c_x, 1 - c_z ),\n\t\t\t\tnew Vector2( d_x, 1 - d_z )\n\t\t\t];\n\n\t\t} else {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_y, 1 - a_z ),\n\t\t\t\tnew Vector2( b_y, 1 - b_z ),\n\t\t\t\tnew Vector2( c_y, 1 - c_z ),\n\t\t\t\tnew Vector2( d_y, 1 - d_z )\n\t\t\t];\n\n\t\t}\n\n\t}\n};\n\nfunction toJSON( shapes, options, data ) {\n\n\t//\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( var i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tvar shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\t//\n\n\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\n\n\treturn data;\n\n}\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author alteredq / http://alteredqualia.com/\n *\n * Text = 3D Text\n *\n * parameters = {\n *  font: <THREE.Font>, // font\n *\n *  size: <float>, // size of the text\n *  height: <float>, // thickness to extrude text\n *  curveSegments: <int>, // number of points on the curves\n *\n *  bevelEnabled: <bool>, // turn on bevel\n *  bevelThickness: <float>, // how deep into text bevel goes\n *  bevelSize: <float> // how far from text outline is bevel\n * }\n */\n\n// TextGeometry\n\nfunction TextGeometry( text, parameters ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TextGeometry';\n\n\tthis.parameters = {\n\t\ttext: text,\n\t\tparameters: parameters\n\t};\n\n\tthis.fromBufferGeometry( new TextBufferGeometry( text, parameters ) );\n\tthis.mergeVertices();\n\n}\n\nTextGeometry.prototype = Object.create( Geometry.prototype );\nTextGeometry.prototype.constructor = TextGeometry;\n\n// TextBufferGeometry\n\nfunction TextBufferGeometry( text, parameters ) {\n\n\tparameters = parameters || {};\n\n\tvar font = parameters.font;\n\n\tif ( ! ( font && font.isFont ) ) {\n\n\t\tconsole.error( 'THREE.TextGeometry: font parameter is not an instance of THREE.Font.' );\n\t\treturn new Geometry();\n\n\t}\n\n\tvar shapes = font.generateShapes( text, parameters.size );\n\n\t// translate parameters to ExtrudeGeometry API\n\n\tparameters.depth = parameters.height !== undefined ? parameters.height : 50;\n\n\t// defaults\n\n\tif ( parameters.bevelThickness === undefined ) parameters.bevelThickness = 10;\n\tif ( parameters.bevelSize === undefined ) parameters.bevelSize = 8;\n\tif ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false;\n\n\tExtrudeBufferGeometry.call( this, shapes, parameters );\n\n\tthis.type = 'TextBufferGeometry';\n\n}\n\nTextBufferGeometry.prototype = Object.create( ExtrudeBufferGeometry.prototype );\nTextBufferGeometry.prototype.constructor = TextBufferGeometry;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author benaadams / https://twitter.com/ben_a_adams\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// SphereGeometry\n\nfunction SphereGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'SphereGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nSphereGeometry.prototype = Object.create( Geometry.prototype );\nSphereGeometry.prototype.constructor = SphereGeometry;\n\n// SphereBufferGeometry\n\nfunction SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'SphereBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tradius = radius || 1;\n\n\twidthSegments = Math.max( 3, Math.floor( widthSegments ) || 8 );\n\theightSegments = Math.max( 2, Math.floor( heightSegments ) || 6 );\n\n\tphiStart = phiStart !== undefined ? phiStart : 0;\n\tphiLength = phiLength !== undefined ? phiLength : Math.PI * 2;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI;\n\n\tvar thetaEnd = thetaStart + thetaLength;\n\n\tvar ix, iy;\n\n\tvar index = 0;\n\tvar grid = [];\n\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// generate vertices, normals and uvs\n\n\tfor ( iy = 0; iy <= heightSegments; iy ++ ) {\n\n\t\tvar verticesRow = [];\n\n\t\tvar v = iy / heightSegments;\n\n\t\tfor ( ix = 0; ix <= widthSegments; ix ++ ) {\n\n\t\t\tvar u = ix / widthSegments;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\tvertex.y = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\tvertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormal.set( vertex.x, vertex.y, vertex.z ).normalize();\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( u, 1 - v );\n\n\t\t\tverticesRow.push( index ++ );\n\n\t\t}\n\n\t\tgrid.push( verticesRow );\n\n\t}\n\n\t// indices\n\n\tfor ( iy = 0; iy < heightSegments; iy ++ ) {\n\n\t\tfor ( ix = 0; ix < widthSegments; ix ++ ) {\n\n\t\t\tvar a = grid[ iy ][ ix + 1 ];\n\t\t\tvar b = grid[ iy ][ ix ];\n\t\t\tvar c = grid[ iy + 1 ][ ix ];\n\t\t\tvar d = grid[ iy + 1 ][ ix + 1 ];\n\n\t\t\tif ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d );\n\t\t\tif ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nSphereBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nSphereBufferGeometry.prototype.constructor = SphereBufferGeometry;\n\n/**\n * @author Kaleb Murphy\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// RingGeometry\n\nfunction RingGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'RingGeometry';\n\n\tthis.parameters = {\n\t\tinnerRadius: innerRadius,\n\t\touterRadius: outerRadius,\n\t\tthetaSegments: thetaSegments,\n\t\tphiSegments: phiSegments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nRingGeometry.prototype = Object.create( Geometry.prototype );\nRingGeometry.prototype.constructor = RingGeometry;\n\n// RingBufferGeometry\n\nfunction RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'RingBufferGeometry';\n\n\tthis.parameters = {\n\t\tinnerRadius: innerRadius,\n\t\touterRadius: outerRadius,\n\t\tthetaSegments: thetaSegments,\n\t\tphiSegments: phiSegments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tinnerRadius = innerRadius || 0.5;\n\touterRadius = outerRadius || 1;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\tthetaSegments = thetaSegments !== undefined ? Math.max( 3, thetaSegments ) : 8;\n\tphiSegments = phiSegments !== undefined ? Math.max( 1, phiSegments ) : 1;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// some helper variables\n\n\tvar segment;\n\tvar radius = innerRadius;\n\tvar radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\tvar vertex = new Vector3();\n\tvar uv = new Vector2();\n\tvar j, i;\n\n\t// generate vertices, normals and uvs\n\n\tfor ( j = 0; j <= phiSegments; j ++ ) {\n\n\t\tfor ( i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\t// values are generate from the inside of the ring to the outside\n\n\t\t\tsegment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t// uv\n\n\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t}\n\n\t\t// increase the radius for next row of vertices\n\n\t\tradius += radiusStep;\n\n\t}\n\n\t// indices\n\n\tfor ( j = 0; j < phiSegments; j ++ ) {\n\n\t\tvar thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\tfor ( i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\tsegment = i + thetaSegmentLevel;\n\n\t\t\tvar a = segment;\n\t\t\tvar b = segment + thetaSegments + 1;\n\t\t\tvar c = segment + thetaSegments + 2;\n\t\t\tvar d = segment + 1;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nRingBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nRingBufferGeometry.prototype.constructor = RingBufferGeometry;\n\n/**\n * @author astrodud / http://astrodud.isgreat.org/\n * @author zz85 / https://github.com/zz85\n * @author bhouston / http://clara.io\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// LatheGeometry\n\nfunction LatheGeometry( points, segments, phiStart, phiLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'LatheGeometry';\n\n\tthis.parameters = {\n\t\tpoints: points,\n\t\tsegments: segments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength\n\t};\n\n\tthis.fromBufferGeometry( new LatheBufferGeometry( points, segments, phiStart, phiLength ) );\n\tthis.mergeVertices();\n\n}\n\nLatheGeometry.prototype = Object.create( Geometry.prototype );\nLatheGeometry.prototype.constructor = LatheGeometry;\n\n// LatheBufferGeometry\n\nfunction LatheBufferGeometry( points, segments, phiStart, phiLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'LatheBufferGeometry';\n\n\tthis.parameters = {\n\t\tpoints: points,\n\t\tsegments: segments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength\n\t};\n\n\tsegments = Math.floor( segments ) || 12;\n\tphiStart = phiStart || 0;\n\tphiLength = phiLength || Math.PI * 2;\n\n\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\n\tphiLength = _Math.clamp( phiLength, 0, Math.PI * 2 );\n\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar base;\n\tvar inverseSegments = 1.0 / segments;\n\tvar vertex = new Vector3();\n\tvar uv = new Vector2();\n\tvar i, j;\n\n\t// generate vertices and uvs\n\n\tfor ( i = 0; i <= segments; i ++ ) {\n\n\t\tvar phi = phiStart + i * inverseSegments * phiLength;\n\n\t\tvar sin = Math.sin( phi );\n\t\tvar cos = Math.cos( phi );\n\n\t\tfor ( j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\tvertex.y = points[ j ].y;\n\t\t\tvertex.z = points[ j ].x * cos;\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// uv\n\n\t\t\tuv.x = i / segments;\n\t\t\tuv.y = j / ( points.length - 1 );\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\n\t\t}\n\n\t}\n\n\t// indices\n\n\tfor ( i = 0; i < segments; i ++ ) {\n\n\t\tfor ( j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\tbase = j + i * points.length;\n\n\t\t\tvar a = base;\n\t\t\tvar b = base + points.length;\n\t\t\tvar c = base + points.length + 1;\n\t\t\tvar d = base + 1;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// generate normals\n\n\tthis.computeVertexNormals();\n\n\t// if the geometry is closed, we need to average the normals along the seam.\n\t// because the corresponding vertices are identical (but still have different UVs).\n\n\tif ( phiLength === Math.PI * 2 ) {\n\n\t\tvar normals = this.attributes.normal.array;\n\t\tvar n1 = new Vector3();\n\t\tvar n2 = new Vector3();\n\t\tvar n = new Vector3();\n\n\t\t// this is the buffer offset for the last line of vertices\n\n\t\tbase = segments * points.length * 3;\n\n\t\tfor ( i = 0, j = 0; i < points.length; i ++, j += 3 ) {\n\n\t\t\t// select the normal of the vertex in the first line\n\n\t\t\tn1.x = normals[ j + 0 ];\n\t\t\tn1.y = normals[ j + 1 ];\n\t\t\tn1.z = normals[ j + 2 ];\n\n\t\t\t// select the normal of the vertex in the last line\n\n\t\t\tn2.x = normals[ base + j + 0 ];\n\t\t\tn2.y = normals[ base + j + 1 ];\n\t\t\tn2.z = normals[ base + j + 2 ];\n\n\t\t\t// average normals\n\n\t\t\tn.addVectors( n1, n2 ).normalize();\n\n\t\t\t// assign the new values to both normals\n\n\t\t\tnormals[ j + 0 ] = normals[ base + j + 0 ] = n.x;\n\t\t\tnormals[ j + 1 ] = normals[ base + j + 1 ] = n.y;\n\t\t\tnormals[ j + 2 ] = normals[ base + j + 2 ] = n.z;\n\n\t\t}\n\n\t}\n\n}\n\nLatheBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nLatheBufferGeometry.prototype.constructor = LatheBufferGeometry;\n\n/**\n * @author jonobr1 / http://jonobr1.com\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// ShapeGeometry\n\nfunction ShapeGeometry( shapes, curveSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ShapeGeometry';\n\n\tif ( typeof curveSegments === 'object' ) {\n\n\t\tconsole.warn( 'THREE.ShapeGeometry: Options parameter has been removed.' );\n\n\t\tcurveSegments = curveSegments.curveSegments;\n\n\t}\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\tcurveSegments: curveSegments\n\t};\n\n\tthis.fromBufferGeometry( new ShapeBufferGeometry( shapes, curveSegments ) );\n\tthis.mergeVertices();\n\n}\n\nShapeGeometry.prototype = Object.create( Geometry.prototype );\nShapeGeometry.prototype.constructor = ShapeGeometry;\n\nShapeGeometry.prototype.toJSON = function () {\n\n\tvar data = Geometry.prototype.toJSON.call( this );\n\n\tvar shapes = this.parameters.shapes;\n\n\treturn toJSON$1( shapes, data );\n\n};\n\n// ShapeBufferGeometry\n\nfunction ShapeBufferGeometry( shapes, curveSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ShapeBufferGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\tcurveSegments: curveSegments\n\t};\n\n\tcurveSegments = curveSegments || 12;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar groupStart = 0;\n\tvar groupCount = 0;\n\n\t// allow single and array values for \"shapes\" parameter\n\n\tif ( Array.isArray( shapes ) === false ) {\n\n\t\taddShape( shapes );\n\n\t} else {\n\n\t\tfor ( var i = 0; i < shapes.length; i ++ ) {\n\n\t\t\taddShape( shapes[ i ] );\n\n\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\tgroupStart += groupCount;\n\t\t\tgroupCount = 0;\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\n\t// helper functions\n\n\tfunction addShape( shape ) {\n\n\t\tvar i, l, shapeHole;\n\n\t\tvar indexOffset = vertices.length / 3;\n\t\tvar points = shape.extractPoints( curveSegments );\n\n\t\tvar shapeVertices = points.shape;\n\t\tvar shapeHoles = points.holes;\n\n\t\t// check direction of vertices\n\n\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t\t// also check if holes are in the opposite direction\n\n\t\t\tfor ( i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tshapeHole = shapeHoles[ i ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t// join vertices of inner and outer paths to a single array\n\n\t\tfor ( i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\tshapeHole = shapeHoles[ i ];\n\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t}\n\n\t\t// vertices, normals, uvs\n\n\t\tfor ( i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\tvar vertex = shapeVertices[ i ];\n\n\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\tnormals.push( 0, 0, 1 );\n\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t}\n\n\t\t// incides\n\n\t\tfor ( i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tvar a = face[ 0 ] + indexOffset;\n\t\t\tvar b = face[ 1 ] + indexOffset;\n\t\t\tvar c = face[ 2 ] + indexOffset;\n\n\t\t\tindices.push( a, b, c );\n\t\t\tgroupCount += 3;\n\n\t\t}\n\n\t}\n\n}\n\nShapeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nShapeBufferGeometry.prototype.constructor = ShapeBufferGeometry;\n\nShapeBufferGeometry.prototype.toJSON = function () {\n\n\tvar data = BufferGeometry.prototype.toJSON.call( this );\n\n\tvar shapes = this.parameters.shapes;\n\n\treturn toJSON$1( shapes, data );\n\n};\n\n//\n\nfunction toJSON$1( shapes, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( var i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tvar shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\treturn data;\n\n}\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction EdgesGeometry( geometry, thresholdAngle ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'EdgesGeometry';\n\n\tthis.parameters = {\n\t\tthresholdAngle: thresholdAngle\n\t};\n\n\tthresholdAngle = ( thresholdAngle !== undefined ) ? thresholdAngle : 1;\n\n\t// buffer\n\n\tvar vertices = [];\n\n\t// helper variables\n\n\tvar thresholdDot = Math.cos( _Math.DEG2RAD * thresholdAngle );\n\tvar edge = [ 0, 0 ], edges = {}, edge1, edge2;\n\tvar key, keys = [ 'a', 'b', 'c' ];\n\n\t// prepare source geometry\n\n\tvar geometry2;\n\n\tif ( geometry.isBufferGeometry ) {\n\n\t\tgeometry2 = new Geometry();\n\t\tgeometry2.fromBufferGeometry( geometry );\n\n\t} else {\n\n\t\tgeometry2 = geometry.clone();\n\n\t}\n\n\tgeometry2.mergeVertices();\n\tgeometry2.computeFaceNormals();\n\n\tvar sourceVertices = geometry2.vertices;\n\tvar faces = geometry2.faces;\n\n\t// now create a data structure where each entry represents an edge with its adjoining faces\n\n\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\tvar face = faces[ i ];\n\n\t\tfor ( var j = 0; j < 3; j ++ ) {\n\n\t\t\tedge1 = face[ keys[ j ] ];\n\t\t\tedge2 = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\tedge[ 0 ] = Math.min( edge1, edge2 );\n\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\tkey = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ], face1: i, face2: undefined };\n\n\t\t\t} else {\n\n\t\t\t\tedges[ key ].face2 = i;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// generate vertices\n\n\tfor ( key in edges ) {\n\n\t\tvar e = edges[ key ];\n\n\t\t// an edge is only rendered if the angle (in degrees) between the face normals of the adjoining faces exceeds this value. default = 1 degree.\n\n\t\tif ( e.face2 === undefined || faces[ e.face1 ].normal.dot( faces[ e.face2 ].normal ) <= thresholdDot ) {\n\n\t\t\tvar vertex = sourceVertices[ e.index1 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\tvertex = sourceVertices[ e.index2 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n}\n\nEdgesGeometry.prototype = Object.create( BufferGeometry.prototype );\nEdgesGeometry.prototype.constructor = EdgesGeometry;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// CylinderGeometry\n\nfunction CylinderGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'CylinderGeometry';\n\n\tthis.parameters = {\n\t\tradiusTop: radiusTop,\n\t\tradiusBottom: radiusBottom,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nCylinderGeometry.prototype = Object.create( Geometry.prototype );\nCylinderGeometry.prototype.constructor = CylinderGeometry;\n\n// CylinderBufferGeometry\n\nfunction CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'CylinderBufferGeometry';\n\n\tthis.parameters = {\n\t\tradiusTop: radiusTop,\n\t\tradiusBottom: radiusBottom,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tvar scope = this;\n\n\tradiusTop = radiusTop !== undefined ? radiusTop : 1;\n\tradiusBottom = radiusBottom !== undefined ? radiusBottom : 1;\n\theight = height || 1;\n\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\theightSegments = Math.floor( heightSegments ) || 1;\n\n\topenEnded = openEnded !== undefined ? openEnded : false;\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0.0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar index = 0;\n\tvar indexArray = [];\n\tvar halfHeight = height / 2;\n\tvar groupStart = 0;\n\n\t// generate geometry\n\n\tgenerateTorso();\n\n\tif ( openEnded === false ) {\n\n\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\tfunction generateTorso() {\n\n\t\tvar x, y;\n\t\tvar normal = new Vector3();\n\t\tvar vertex = new Vector3();\n\n\t\tvar groupCount = 0;\n\n\t\t// this will be used to calculate the normal\n\t\tvar slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\tvar indexRow = [];\n\n\t\t\tvar v = y / heightSegments;\n\n\t\t\t// calculate the radius of the current row\n\n\t\t\tvar radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\tfor ( x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tvar u = x / radialSegments;\n\n\t\t\t\tvar theta = u * thetaLength + thetaStart;\n\n\t\t\t\tvar sinTheta = Math.sin( theta );\n\t\t\t\tvar cosTheta = Math.cos( theta );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( u, 1 - v );\n\n\t\t\t\t// save index of vertex in respective row\n\n\t\t\t\tindexRow.push( index ++ );\n\n\t\t\t}\n\n\t\t\t// now save vertices of the row in our index array\n\n\t\t\tindexArray.push( indexRow );\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( x = 0; x < radialSegments; x ++ ) {\n\n\t\t\tfor ( y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t// we use the index array to access the correct indices\n\n\t\t\t\tvar a = indexArray[ y ][ x ];\n\t\t\t\tvar b = indexArray[ y + 1 ][ x ];\n\t\t\t\tvar c = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\tvar d = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t// update group counter\n\n\t\t\t\tgroupCount += 6;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t// calculate new start value for groups\n\n\t\tgroupStart += groupCount;\n\n\t}\n\n\tfunction generateCap( top ) {\n\n\t\tvar x, centerIndexStart, centerIndexEnd;\n\n\t\tvar uv = new Vector2();\n\t\tvar vertex = new Vector3();\n\n\t\tvar groupCount = 0;\n\n\t\tvar radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\tvar sign = ( top === true ) ? 1 : - 1;\n\n\t\t// save the index of the first center vertex\n\t\tcenterIndexStart = index;\n\n\t\t// first we generate the center vertex data of the cap.\n\t\t// because the geometry needs one set of uvs per face,\n\t\t// we must generate a center vertex per face/segment\n\n\t\tfor ( x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t// vertex\n\n\t\t\tvertices.push( 0, halfHeight * sign, 0 );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( 0.5, 0.5 );\n\n\t\t\t// increase index\n\n\t\t\tindex ++;\n\n\t\t}\n\n\t\t// save the index of the last center vertex\n\n\t\tcenterIndexEnd = index;\n\n\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\tfor ( x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\tvar u = x / radialSegments;\n\t\t\tvar theta = u * thetaLength + thetaStart;\n\n\t\t\tvar cosTheta = Math.cos( theta );\n\t\t\tvar sinTheta = Math.sin( theta );\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * sinTheta;\n\t\t\tvertex.y = halfHeight * sign;\n\t\t\tvertex.z = radius * cosTheta;\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t// uv\n\n\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t// increase index\n\n\t\t\tindex ++;\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( x = 0; x < radialSegments; x ++ ) {\n\n\t\t\tvar c = centerIndexStart + x;\n\t\t\tvar i = centerIndexEnd + x;\n\n\t\t\tif ( top === true ) {\n\n\t\t\t\t// face top\n\n\t\t\t\tindices.push( i, i + 1, c );\n\n\t\t\t} else {\n\n\t\t\t\t// face bottom\n\n\t\t\t\tindices.push( i + 1, i, c );\n\n\t\t\t}\n\n\t\t\tgroupCount += 3;\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t// calculate new start value for groups\n\n\t\tgroupStart += groupCount;\n\n\t}\n\n}\n\nCylinderBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nCylinderBufferGeometry.prototype.constructor = CylinderBufferGeometry;\n\n/**\n * @author abelnation / http://github.com/abelnation\n */\n\n// ConeGeometry\n\nfunction ConeGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tCylinderGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\tthis.type = 'ConeGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n}\n\nConeGeometry.prototype = Object.create( CylinderGeometry.prototype );\nConeGeometry.prototype.constructor = ConeGeometry;\n\n// ConeBufferGeometry\n\nfunction ConeBufferGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tCylinderBufferGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\tthis.type = 'ConeBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n}\n\nConeBufferGeometry.prototype = Object.create( CylinderBufferGeometry.prototype );\nConeBufferGeometry.prototype.constructor = ConeBufferGeometry;\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n * @author Mugen87 / https://github.com/Mugen87\n * @author hughes\n */\n\n// CircleGeometry\n\nfunction CircleGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'CircleGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tsegments: segments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nCircleGeometry.prototype = Object.create( Geometry.prototype );\nCircleGeometry.prototype.constructor = CircleGeometry;\n\n// CircleBufferGeometry\n\nfunction CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'CircleBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tsegments: segments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tradius = radius || 1;\n\tsegments = segments !== undefined ? Math.max( 3, segments ) : 8;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar i, s;\n\tvar vertex = new Vector3();\n\tvar uv = new Vector2();\n\n\t// center point\n\n\tvertices.push( 0, 0, 0 );\n\tnormals.push( 0, 0, 1 );\n\tuvs.push( 0.5, 0.5 );\n\n\tfor ( s = 0, i = 3; s <= segments; s ++, i += 3 ) {\n\n\t\tvar segment = thetaStart + s / segments * thetaLength;\n\n\t\t// vertex\n\n\t\tvertex.x = radius * Math.cos( segment );\n\t\tvertex.y = radius * Math.sin( segment );\n\n\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t// normal\n\n\t\tnormals.push( 0, 0, 1 );\n\n\t\t// uvs\n\n\t\tuv.x = ( vertices[ i ] / radius + 1 ) / 2;\n\t\tuv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2;\n\n\t\tuvs.push( uv.x, uv.y );\n\n\t}\n\n\t// indices\n\n\tfor ( i = 1; i <= segments; i ++ ) {\n\n\t\tindices.push( i, i + 1, 0 );\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nCircleBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nCircleBufferGeometry.prototype.constructor = CircleBufferGeometry;\n\n\n\nvar Geometries = /*#__PURE__*/Object.freeze({\n\tWireframeGeometry: WireframeGeometry,\n\tParametricGeometry: ParametricGeometry,\n\tParametricBufferGeometry: ParametricBufferGeometry,\n\tTetrahedronGeometry: TetrahedronGeometry,\n\tTetrahedronBufferGeometry: TetrahedronBufferGeometry,\n\tOctahedronGeometry: OctahedronGeometry,\n\tOctahedronBufferGeometry: OctahedronBufferGeometry,\n\tIcosahedronGeometry: IcosahedronGeometry,\n\tIcosahedronBufferGeometry: IcosahedronBufferGeometry,\n\tDodecahedronGeometry: DodecahedronGeometry,\n\tDodecahedronBufferGeometry: DodecahedronBufferGeometry,\n\tPolyhedronGeometry: PolyhedronGeometry,\n\tPolyhedronBufferGeometry: PolyhedronBufferGeometry,\n\tTubeGeometry: TubeGeometry,\n\tTubeBufferGeometry: TubeBufferGeometry,\n\tTorusKnotGeometry: TorusKnotGeometry,\n\tTorusKnotBufferGeometry: TorusKnotBufferGeometry,\n\tTorusGeometry: TorusGeometry,\n\tTorusBufferGeometry: TorusBufferGeometry,\n\tTextGeometry: TextGeometry,\n\tTextBufferGeometry: TextBufferGeometry,\n\tSphereGeometry: SphereGeometry,\n\tSphereBufferGeometry: SphereBufferGeometry,\n\tRingGeometry: RingGeometry,\n\tRingBufferGeometry: RingBufferGeometry,\n\tPlaneGeometry: PlaneGeometry,\n\tPlaneBufferGeometry: PlaneBufferGeometry,\n\tLatheGeometry: LatheGeometry,\n\tLatheBufferGeometry: LatheBufferGeometry,\n\tShapeGeometry: ShapeGeometry,\n\tShapeBufferGeometry: ShapeBufferGeometry,\n\tExtrudeGeometry: ExtrudeGeometry,\n\tExtrudeBufferGeometry: ExtrudeBufferGeometry,\n\tEdgesGeometry: EdgesGeometry,\n\tConeGeometry: ConeGeometry,\n\tConeBufferGeometry: ConeBufferGeometry,\n\tCylinderGeometry: CylinderGeometry,\n\tCylinderBufferGeometry: CylinderBufferGeometry,\n\tCircleGeometry: CircleGeometry,\n\tCircleBufferGeometry: CircleBufferGeometry,\n\tBoxGeometry: BoxGeometry,\n\tBoxBufferGeometry: BoxBufferGeometry\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n *\n * parameters = {\n *  color: <THREE.Color>\n * }\n */\n\nfunction ShadowMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'ShadowMaterial';\n\n\tthis.color = new Color( 0x000000 );\n\tthis.transparent = true;\n\n\tthis.setValues( parameters );\n\n}\n\nShadowMaterial.prototype = Object.create( Material.prototype );\nShadowMaterial.prototype.constructor = ShadowMaterial;\n\nShadowMaterial.prototype.isShadowMaterial = true;\n\nShadowMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction RawShaderMaterial( parameters ) {\n\n\tShaderMaterial.call( this, parameters );\n\n\tthis.type = 'RawShaderMaterial';\n\n}\n\nRawShaderMaterial.prototype = Object.create( ShaderMaterial.prototype );\nRawShaderMaterial.prototype.constructor = RawShaderMaterial;\n\nRawShaderMaterial.prototype.isRawShaderMaterial = true;\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n *  color: <hex>,\n *  roughness: <float>,\n *  metalness: <float>,\n *  opacity: <float>,\n *\n *  map: new THREE.Texture( <Image> ),\n *\n *  lightMap: new THREE.Texture( <Image> ),\n *  lightMapIntensity: <float>\n *\n *  aoMap: new THREE.Texture( <Image> ),\n *  aoMapIntensity: <float>\n *\n *  emissive: <hex>,\n *  emissiveIntensity: <float>\n *  emissiveMap: new THREE.Texture( <Image> ),\n *\n *  bumpMap: new THREE.Texture( <Image> ),\n *  bumpScale: <float>,\n *\n *  normalMap: new THREE.Texture( <Image> ),\n *  normalMapType: THREE.TangentSpaceNormalMap,\n *  normalScale: <Vector2>,\n *\n *  displacementMap: new THREE.Texture( <Image> ),\n *  displacementScale: <float>,\n *  displacementBias: <float>,\n *\n *  roughnessMap: new THREE.Texture( <Image> ),\n *\n *  metalnessMap: new THREE.Texture( <Image> ),\n *\n *  alphaMap: new THREE.Texture( <Image> ),\n *\n *  envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n *  envMapIntensity: <float>\n *\n *  refractionRatio: <float>,\n *\n *  wireframe: <boolean>,\n *  wireframeLinewidth: <float>,\n *\n *  skinning: <bool>,\n *  morphTargets: <bool>,\n *  morphNormals: <bool>\n * }\n */\n\nfunction MeshStandardMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.type = 'MeshStandardMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.roughness = 0.5;\n\tthis.metalness = 0.5;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.roughnessMap = null;\n\n\tthis.metalnessMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.envMapIntensity = 1.0;\n\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshStandardMaterial.prototype = Object.create( Material.prototype );\nMeshStandardMaterial.prototype.constructor = MeshStandardMaterial;\n\nMeshStandardMaterial.prototype.isMeshStandardMaterial = true;\n\nMeshStandardMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.color.copy( source.color );\n\tthis.roughness = source.roughness;\n\tthis.metalness = source.metalness;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.roughnessMap = source.roughnessMap;\n\n\tthis.metalnessMap = source.metalnessMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.envMapIntensity = source.envMapIntensity;\n\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n *  reflectivity: <float>\n * }\n */\n\nfunction MeshPhysicalMaterial( parameters ) {\n\n\tMeshStandardMaterial.call( this );\n\n\tthis.defines = { 'PHYSICAL': '' };\n\n\tthis.type = 'MeshPhysicalMaterial';\n\n\tthis.reflectivity = 0.5; // maps to F0 = 0.04\n\n\tthis.clearCoat = 0.0;\n\tthis.clearCoatRoughness = 0.0;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhysicalMaterial.prototype = Object.create( MeshStandardMaterial.prototype );\nMeshPhysicalMaterial.prototype.constructor = MeshPhysicalMaterial;\n\nMeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true;\n\nMeshPhysicalMaterial.prototype.copy = function ( source ) {\n\n\tMeshStandardMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'PHYSICAL': '' };\n\n\tthis.reflectivity = source.reflectivity;\n\n\tthis.clearCoat = source.clearCoat;\n\tthis.clearCoatRoughness = source.clearCoatRoughness;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n *  color: <hex>,\n *  specular: <hex>,\n *  shininess: <float>,\n *  opacity: <float>,\n *\n *  map: new THREE.Texture( <Image> ),\n *\n *  lightMap: new THREE.Texture( <Image> ),\n *  lightMapIntensity: <float>\n *\n *  aoMap: new THREE.Texture( <Image> ),\n *  aoMapIntensity: <float>\n *\n *  emissive: <hex>,\n *  emissiveIntensity: <float>\n *  emissiveMap: new THREE.Texture( <Image> ),\n *\n *  bumpMap: new THREE.Texture( <Image> ),\n *  bumpScale: <float>,\n *\n *  normalMap: new THREE.Texture( <Image> ),\n *  normalMapType: THREE.TangentSpaceNormalMap,\n *  normalScale: <Vector2>,\n *\n *  displacementMap: new THREE.Texture( <Image> ),\n *  displacementScale: <float>,\n *  displacementBias: <float>,\n *\n *  specularMap: new THREE.Texture( <Image> ),\n *\n *  alphaMap: new THREE.Texture( <Image> ),\n *\n *  envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n *  combine: THREE.Multiply,\n *  reflectivity: <float>,\n *  refractionRatio: <float>,\n *\n *  wireframe: <boolean>,\n *  wireframeLinewidth: <float>,\n *\n *  skinning: <bool>,\n *  morphTargets: <bool>,\n *  morphNormals: <bool>\n * }\n */\n\nfunction MeshPhongMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshPhongMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.specular = new Color( 0x111111 );\n\tthis.shininess = 30;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhongMaterial.prototype = Object.create( Material.prototype );\nMeshPhongMaterial.prototype.constructor = MeshPhongMaterial;\n\nMeshPhongMaterial.prototype.isMeshPhongMaterial = true;\n\nMeshPhongMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\tthis.specular.copy( source.specular );\n\tthis.shininess = source.shininess;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author takahirox / http://github.com/takahirox\n *\n * parameters = {\n *  gradientMap: new THREE.Texture( <Image> )\n * }\n */\n\nfunction MeshToonMaterial( parameters ) {\n\n\tMeshPhongMaterial.call( this );\n\n\tthis.defines = { 'TOON': '' };\n\n\tthis.type = 'MeshToonMaterial';\n\n\tthis.gradientMap = null;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshToonMaterial.prototype = Object.create( MeshPhongMaterial.prototype );\nMeshToonMaterial.prototype.constructor = MeshToonMaterial;\n\nMeshToonMaterial.prototype.isMeshToonMaterial = true;\n\nMeshToonMaterial.prototype.copy = function ( source ) {\n\n\tMeshPhongMaterial.prototype.copy.call( this, source );\n\n\tthis.gradientMap = source.gradientMap;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n *  opacity: <float>,\n *\n *  bumpMap: new THREE.Texture( <Image> ),\n *  bumpScale: <float>,\n *\n *  normalMap: new THREE.Texture( <Image> ),\n *  normalMapType: THREE.TangentSpaceNormalMap,\n *  normalScale: <Vector2>,\n *\n *  displacementMap: new THREE.Texture( <Image> ),\n *  displacementScale: <float>,\n *  displacementBias: <float>,\n *\n *  wireframe: <boolean>,\n *  wireframeLinewidth: <float>\n *\n *  skinning: <bool>,\n *  morphTargets: <bool>,\n *  morphNormals: <bool>\n * }\n */\n\nfunction MeshNormalMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshNormalMaterial';\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\tthis.lights = false;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshNormalMaterial.prototype = Object.create( Material.prototype );\nMeshNormalMaterial.prototype.constructor = MeshNormalMaterial;\n\nMeshNormalMaterial.prototype.isMeshNormalMaterial = true;\n\nMeshNormalMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n *  color: <hex>,\n *  opacity: <float>,\n *\n *  map: new THREE.Texture( <Image> ),\n *\n *  lightMap: new THREE.Texture( <Image> ),\n *  lightMapIntensity: <float>\n *\n *  aoMap: new THREE.Texture( <Image> ),\n *  aoMapIntensity: <float>\n *\n *  emissive: <hex>,\n *  emissiveIntensity: <float>\n *  emissiveMap: new THREE.Texture( <Image> ),\n *\n *  specularMap: new THREE.Texture( <Image> ),\n *\n *  alphaMap: new THREE.Texture( <Image> ),\n *\n *  envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n *  combine: THREE.Multiply,\n *  reflectivity: <float>,\n *  refractionRatio: <float>,\n *\n *  wireframe: <boolean>,\n *  wireframeLinewidth: <float>,\n *\n *  skinning: <bool>,\n *  morphTargets: <bool>,\n *  morphNormals: <bool>\n * }\n */\n\nfunction MeshLambertMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshLambertMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshLambertMaterial.prototype = Object.create( Material.prototype );\nMeshLambertMaterial.prototype.constructor = MeshLambertMaterial;\n\nMeshLambertMaterial.prototype.isMeshLambertMaterial = true;\n\nMeshLambertMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n *  color: <hex>,\n *  opacity: <float>,\n *\n *  linewidth: <float>,\n *\n *  scale: <float>,\n *  dashSize: <float>,\n *  gapSize: <float>\n * }\n */\n\nfunction LineDashedMaterial( parameters ) {\n\n\tLineBasicMaterial.call( this );\n\n\tthis.type = 'LineDashedMaterial';\n\n\tthis.scale = 1;\n\tthis.dashSize = 3;\n\tthis.gapSize = 1;\n\n\tthis.setValues( parameters );\n\n}\n\nLineDashedMaterial.prototype = Object.create( LineBasicMaterial.prototype );\nLineDashedMaterial.prototype.constructor = LineDashedMaterial;\n\nLineDashedMaterial.prototype.isLineDashedMaterial = true;\n\nLineDashedMaterial.prototype.copy = function ( source ) {\n\n\tLineBasicMaterial.prototype.copy.call( this, source );\n\n\tthis.scale = source.scale;\n\tthis.dashSize = source.dashSize;\n\tthis.gapSize = source.gapSize;\n\n\treturn this;\n\n};\n\n\n\nvar Materials = /*#__PURE__*/Object.freeze({\n\tShadowMaterial: ShadowMaterial,\n\tSpriteMaterial: SpriteMaterial,\n\tRawShaderMaterial: RawShaderMaterial,\n\tShaderMaterial: ShaderMaterial,\n\tPointsMaterial: PointsMaterial,\n\tMeshPhysicalMaterial: MeshPhysicalMaterial,\n\tMeshStandardMaterial: MeshStandardMaterial,\n\tMeshPhongMaterial: MeshPhongMaterial,\n\tMeshToonMaterial: MeshToonMaterial,\n\tMeshNormalMaterial: MeshNormalMaterial,\n\tMeshLambertMaterial: MeshLambertMaterial,\n\tMeshDepthMaterial: MeshDepthMaterial,\n\tMeshDistanceMaterial: MeshDistanceMaterial,\n\tMeshBasicMaterial: MeshBasicMaterial,\n\tLineDashedMaterial: LineDashedMaterial,\n\tLineBasicMaterial: LineBasicMaterial,\n\tMaterial: Material\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar Cache = {\n\n\tenabled: false,\n\n\tfiles: {},\n\n\tadd: function ( key, file ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\tthis.files[ key ] = file;\n\n\t},\n\n\tget: function ( key ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\treturn this.files[ key ];\n\n\t},\n\n\tremove: function ( key ) {\n\n\t\tdelete this.files[ key ];\n\n\t},\n\n\tclear: function () {\n\n\t\tthis.files = {};\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LoadingManager( onLoad, onProgress, onError ) {\n\n\tvar scope = this;\n\n\tvar isLoading = false;\n\tvar itemsLoaded = 0;\n\tvar itemsTotal = 0;\n\tvar urlModifier = undefined;\n\n\tthis.onStart = undefined;\n\tthis.onLoad = onLoad;\n\tthis.onProgress = onProgress;\n\tthis.onError = onError;\n\n\tthis.itemStart = function ( url ) {\n\n\t\titemsTotal ++;\n\n\t\tif ( isLoading === false ) {\n\n\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tisLoading = true;\n\n\t};\n\n\tthis.itemEnd = function ( url ) {\n\n\t\titemsLoaded ++;\n\n\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t}\n\n\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\tisLoading = false;\n\n\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\tscope.onLoad();\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.itemError = function ( url ) {\n\n\t\tif ( scope.onError !== undefined ) {\n\n\t\t\tscope.onError( url );\n\n\t\t}\n\n\t};\n\n\tthis.resolveURL = function ( url ) {\n\n\t\tif ( urlModifier ) {\n\n\t\t\treturn urlModifier( url );\n\n\t\t}\n\n\t\treturn url;\n\n\t};\n\n\tthis.setURLModifier = function ( transform ) {\n\n\t\turlModifier = transform;\n\t\treturn this;\n\n\t};\n\n}\n\nvar DefaultLoadingManager = new LoadingManager();\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar loading = {};\n\nfunction FileLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( FileLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tvar scope = this;\n\n\t\tvar cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\t// Check if request is duplicate\n\n\t\tif ( loading[ url ] !== undefined ) {\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// Check for data: URI\n\t\tvar dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/;\n\t\tvar dataUriRegexResult = url.match( dataUriRegex );\n\n\t\t// Safari can not handle Data URIs through XMLHttpRequest so process manually\n\t\tif ( dataUriRegexResult ) {\n\n\t\t\tvar mimeType = dataUriRegexResult[ 1 ];\n\t\t\tvar isBase64 = !! dataUriRegexResult[ 2 ];\n\t\t\tvar data = dataUriRegexResult[ 3 ];\n\n\t\t\tdata = window.decodeURIComponent( data );\n\n\t\t\tif ( isBase64 ) data = window.atob( data );\n\n\t\t\ttry {\n\n\t\t\t\tvar response;\n\t\t\t\tvar responseType = ( this.responseType || '' ).toLowerCase();\n\n\t\t\t\tswitch ( responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t\tvar view = new Uint8Array( data.length );\n\n\t\t\t\t\t\tfor ( var i = 0; i < data.length; i ++ ) {\n\n\t\t\t\t\t\t\tview[ i ] = data.charCodeAt( i );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( responseType === 'blob' ) {\n\n\t\t\t\t\t\t\tresponse = new Blob( [ view.buffer ], { type: mimeType } );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tresponse = view.buffer;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\tvar parser = new DOMParser();\n\t\t\t\t\t\tresponse = parser.parseFromString( data, mimeType );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\tresponse = JSON.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault: // 'text' or other\n\n\t\t\t\t\t\tresponse = data;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\t// Wait for next browser tick like standard XMLHttpRequest event dispatching does\n\t\t\t\twindow.setTimeout( function () {\n\n\t\t\t\t\tif ( onLoad ) onLoad( response );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0 );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\t// Wait for next browser tick like standard XMLHttpRequest event dispatching does\n\t\t\t\twindow.setTimeout( function () {\n\n\t\t\t\t\tif ( onError ) onError( error );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\t\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t\t}, 0 );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Initialise array for duplicate requests\n\n\t\t\tloading[ url ] = [];\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\tvar request = new XMLHttpRequest();\n\n\t\t\trequest.open( 'GET', url, true );\n\n\t\t\trequest.addEventListener( 'load', function ( event ) {\n\n\t\t\t\tvar response = this.response;\n\n\t\t\t\tCache.add( url, response );\n\n\t\t\t\tvar callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tif ( this.status === 200 || this.status === 0 ) {\n\n\t\t\t\t\t// Some browsers return HTTP Status 0 when using non-http protocol\n\t\t\t\t\t// e.g. 'file://' or 'data://'. Handle as success.\n\n\t\t\t\t\tif ( this.status === 0 ) console.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\tfor ( var i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar callback = callbacks[ i ];\n\t\t\t\t\t\tif ( callback.onLoad ) callback.onLoad( response );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfor ( var i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar callback = callbacks[ i ];\n\t\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\t\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t\t}\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'progress', function ( event ) {\n\n\t\t\t\tvar callbacks = loading[ url ];\n\n\t\t\t\tfor ( var i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onProgress ) callback.onProgress( event );\n\n\t\t\t\t}\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'error', function ( event ) {\n\n\t\t\t\tvar callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( var i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemEnd( url );\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}, false );\n\n\t\t\tif ( this.responseType !== undefined ) request.responseType = this.responseType;\n\t\t\tif ( this.withCredentials !== undefined ) request.withCredentials = this.withCredentials;\n\n\t\t\tif ( request.overrideMimeType ) request.overrideMimeType( this.mimeType !== undefined ? this.mimeType : 'text/plain' );\n\n\t\t\tfor ( var header in this.requestHeader ) {\n\n\t\t\t\trequest.setRequestHeader( header, this.requestHeader[ header ] );\n\n\t\t\t}\n\n\t\t\trequest.send( null );\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\treturn request;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t},\n\n\tsetResponseType: function ( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t},\n\n\tsetWithCredentials: function ( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t},\n\n\tsetMimeType: function ( value ) {\n\n\t\tthis.mimeType = value;\n\t\treturn this;\n\n\t},\n\n\tsetRequestHeader: function ( value ) {\n\n\t\tthis.requestHeader = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n *\n * Abstract Base class to block based textures loader (dds, pvr, ...)\n */\n\nfunction CompressedTextureLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t// override in sub classes\n\tthis._parser = null;\n\n}\n\nObject.assign( CompressedTextureLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar images = [];\n\n\t\tvar texture = new CompressedTexture();\n\t\ttexture.image = images;\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\tvar texDatas = scope._parser( buffer, true );\n\n\t\t\t\timages[ i ] = {\n\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t};\n\n\t\t\t\tloaded += 1;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 )\n\t\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tif ( Array.isArray( url ) ) {\n\n\t\t\tvar loaded = 0;\n\n\t\t\tfor ( var i = 0, il = url.length; i < il; ++ i ) {\n\n\t\t\t\tloadTexture( i );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// compressed cubemap texture stored in a single DDS file\n\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tvar texDatas = scope._parser( buffer, true );\n\n\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\tvar faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\tfor ( var f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\timages[ f ] = { mipmaps: [] };\n\n\t\t\t\t\t\tfor ( var i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\treturn texture;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author Nikos M. / https://github.com/foo123/\n *\n * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n */\n\nfunction DataTextureLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t// override in sub classes\n\tthis._parser = null;\n\n}\n\nObject.assign( DataTextureLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar texture = new DataTexture();\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tvar texData = scope._parser( buffer );\n\n\t\t\tif ( ! texData ) return;\n\n\t\t\tif ( undefined !== texData.image ) {\n\n\t\t\t\ttexture.image = texData.image;\n\n\t\t\t} else if ( undefined !== texData.data ) {\n\n\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t}\n\n\t\t\ttexture.wrapS = undefined !== texData.wrapS ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\ttexture.wrapT = undefined !== texData.wrapT ? texData.wrapT : ClampToEdgeWrapping;\n\n\t\t\ttexture.magFilter = undefined !== texData.magFilter ? texData.magFilter : LinearFilter;\n\t\t\ttexture.minFilter = undefined !== texData.minFilter ? texData.minFilter : LinearMipMapLinearFilter;\n\n\t\t\ttexture.anisotropy = undefined !== texData.anisotropy ? texData.anisotropy : 1;\n\n\t\t\tif ( undefined !== texData.format ) {\n\n\t\t\t\ttexture.format = texData.format;\n\n\t\t\t}\n\t\t\tif ( undefined !== texData.type ) {\n\n\t\t\t\ttexture.type = texData.type;\n\n\t\t\t}\n\n\t\t\tif ( undefined !== texData.mipmaps ) {\n\n\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\n\t\t\t}\n\n\t\t\tif ( 1 === texData.mipmapCount ) {\n\n\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t}\n\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}, onProgress, onError );\n\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction ImageLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( ImageLoader.prototype, {\n\n\tcrossOrigin: 'anonymous',\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tvar scope = this;\n\n\t\tvar cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tvar image = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'img' );\n\n\t\tfunction onImageLoad() {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t\tCache.add( url, this );\n\n\t\t\tif ( onLoad ) onLoad( this );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction onImageError( event ) {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t\tif ( onError ) onError( event );\n\n\t\t\tscope.manager.itemEnd( url );\n\t\t\tscope.manager.itemError( url );\n\n\t\t}\n\n\t\timage.addEventListener( 'load', onImageLoad, false );\n\t\timage.addEventListener( 'error', onImageError, false );\n\n\t\tif ( url.substr( 0, 5 ) !== 'data:' ) {\n\n\t\t\tif ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\timage.src = url;\n\n\t\treturn image;\n\n\t},\n\n\tsetCrossOrigin: function ( value ) {\n\n\t\tthis.crossOrigin = value;\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction CubeTextureLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( CubeTextureLoader.prototype, {\n\n\tcrossOrigin: 'anonymous',\n\n\tload: function ( urls, onLoad, onProgress, onError ) {\n\n\t\tvar texture = new CubeTexture();\n\n\t\tvar loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tvar loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( urls[ i ], function ( image ) {\n\n\t\t\t\ttexture.images[ i ] = image;\n\n\t\t\t\tloaded ++;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, undefined, onError );\n\n\t\t}\n\n\t\tfor ( var i = 0; i < urls.length; ++ i ) {\n\n\t\t\tloadTexture( i );\n\n\t\t}\n\n\t\treturn texture;\n\n\t},\n\n\tsetCrossOrigin: function ( value ) {\n\n\t\tthis.crossOrigin = value;\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction TextureLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( TextureLoader.prototype, {\n\n\tcrossOrigin: 'anonymous',\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar texture = new Texture();\n\n\t\tvar loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tloader.load( url, function ( image ) {\n\n\t\t\ttexture.image = image;\n\n\t\t\t// JPEGs can't have an alpha channel, so memory can be saved by storing them as RGB.\n\t\t\tvar isJPEG = url.search( /\\.(jpg|jpeg)$/ ) > 0 || url.search( /^data\\:image\\/jpeg/ ) === 0;\n\n\t\t\ttexture.format = isJPEG ? RGBFormat : RGBAFormat;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t},\n\n\tsetCrossOrigin: function ( value ) {\n\n\t\tthis.crossOrigin = value;\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Extensible curve object\n *\n * Some common of curve methods:\n * .getPoint( t, optionalTarget ), .getTangent( t )\n * .getPointAt( u, optionalTarget ), .getTangentAt( u )\n * .getPoints(), .getSpacedPoints()\n * .getLength()\n * .updateArcLengths()\n *\n * This following curves inherit from THREE.Curve:\n *\n * -- 2D curves --\n * THREE.ArcCurve\n * THREE.CubicBezierCurve\n * THREE.EllipseCurve\n * THREE.LineCurve\n * THREE.QuadraticBezierCurve\n * THREE.SplineCurve\n *\n * -- 3D curves --\n * THREE.CatmullRomCurve3\n * THREE.CubicBezierCurve3\n * THREE.LineCurve3\n * THREE.QuadraticBezierCurve3\n *\n * A series of curves can be represented as a THREE.CurvePath.\n *\n **/\n\n/**************************************************************\n *\tAbstract Curve base class\n **************************************************************/\n\nfunction Curve() {\n\n\tthis.type = 'Curve';\n\n\tthis.arcLengthDivisions = 200;\n\n}\n\nObject.assign( Curve.prototype, {\n\n\t// Virtual base class method to overwrite and implement in subclasses\n\t//\t- t [0 .. 1]\n\n\tgetPoint: function ( /* t, optionalTarget */ ) {\n\n\t\tconsole.warn( 'THREE.Curve: .getPoint() not implemented.' );\n\t\treturn null;\n\n\t},\n\n\t// Get point at relative position in curve according to arc length\n\t// - u [0 .. 1]\n\n\tgetPointAt: function ( u, optionalTarget ) {\n\n\t\tvar t = this.getUtoTmapping( u );\n\t\treturn this.getPoint( t, optionalTarget );\n\n\t},\n\n\t// Get sequence of points using getPoint( t )\n\n\tgetPoints: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = 5;\n\n\t\tvar points = [];\n\n\t\tfor ( var d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get sequence of points using getPointAt( u )\n\n\tgetSpacedPoints: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = 5;\n\n\t\tvar points = [];\n\n\t\tfor ( var d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPointAt( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get total curve arc length\n\n\tgetLength: function () {\n\n\t\tvar lengths = this.getLengths();\n\t\treturn lengths[ lengths.length - 1 ];\n\n\t},\n\n\t// Get list of cumulative segment lengths\n\n\tgetLengths: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = this.arcLengthDivisions;\n\n\t\tif ( this.cacheArcLengths &&\n\t\t\t( this.cacheArcLengths.length === divisions + 1 ) &&\n\t\t\t! this.needsUpdate ) {\n\n\t\t\treturn this.cacheArcLengths;\n\n\t\t}\n\n\t\tthis.needsUpdate = false;\n\n\t\tvar cache = [];\n\t\tvar current, last = this.getPoint( 0 );\n\t\tvar p, sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( p = 1; p <= divisions; p ++ ) {\n\n\t\t\tcurrent = this.getPoint( p / divisions );\n\t\t\tsum += current.distanceTo( last );\n\t\t\tcache.push( sum );\n\t\t\tlast = current;\n\n\t\t}\n\n\t\tthis.cacheArcLengths = cache;\n\n\t\treturn cache; // { sums: cache, sum: sum }; Sum is in the last element.\n\n\t},\n\n\tupdateArcLengths: function () {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.getLengths();\n\n\t},\n\n\t// Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n\n\tgetUtoTmapping: function ( u, distance ) {\n\n\t\tvar arcLengths = this.getLengths();\n\n\t\tvar i = 0, il = arcLengths.length;\n\n\t\tvar targetArcLength; // The targeted u distance value to get\n\n\t\tif ( distance ) {\n\n\t\t\ttargetArcLength = distance;\n\n\t\t} else {\n\n\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t}\n\n\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\tvar low = 0, high = il - 1, comparison;\n\n\t\twhile ( low <= high ) {\n\n\t\t\ti = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\n\n\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\tlow = i + 1;\n\n\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\thigh = i - 1;\n\n\t\t\t} else {\n\n\t\t\t\thigh = i;\n\t\t\t\tbreak;\n\n\t\t\t\t// DONE\n\n\t\t\t}\n\n\t\t}\n\n\t\ti = high;\n\n\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\treturn i / ( il - 1 );\n\n\t\t}\n\n\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\tvar lengthBefore = arcLengths[ i ];\n\t\tvar lengthAfter = arcLengths[ i + 1 ];\n\n\t\tvar segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tvar segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tvar t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\treturn t;\n\n\t},\n\n\t// Returns a unit vector tangent at t\n\t// In case any sub curve does not implement its tangent derivation,\n\t// 2 points a small delta apart will be used to find its gradient\n\t// which seems to give a reasonable approximation\n\n\tgetTangent: function ( t ) {\n\n\t\tvar delta = 0.0001;\n\t\tvar t1 = t - delta;\n\t\tvar t2 = t + delta;\n\n\t\t// Capping in case of danger\n\n\t\tif ( t1 < 0 ) t1 = 0;\n\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\tvar pt1 = this.getPoint( t1 );\n\t\tvar pt2 = this.getPoint( t2 );\n\n\t\tvar vec = pt2.clone().sub( pt1 );\n\t\treturn vec.normalize();\n\n\t},\n\n\tgetTangentAt: function ( u ) {\n\n\t\tvar t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t );\n\n\t},\n\n\tcomputeFrenetFrames: function ( segments, closed ) {\n\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\tvar normal = new Vector3();\n\n\t\tvar tangents = [];\n\t\tvar normals = [];\n\t\tvar binormals = [];\n\n\t\tvar vec = new Vector3();\n\t\tvar mat = new Matrix4();\n\n\t\tvar i, u, theta;\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( i = 0; i <= segments; i ++ ) {\n\n\t\t\tu = i / segments;\n\n\t\t\ttangents[ i ] = this.getTangentAt( u );\n\t\t\ttangents[ i ].normalize();\n\n\t\t}\n\n\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t// and in the direction of the minimum tangent xyz component\n\n\t\tnormals[ 0 ] = new Vector3();\n\t\tbinormals[ 0 ] = new Vector3();\n\t\tvar min = Number.MAX_VALUE;\n\t\tvar tx = Math.abs( tangents[ 0 ].x );\n\t\tvar ty = Math.abs( tangents[ 0 ].y );\n\t\tvar tz = Math.abs( tangents[ 0 ].z );\n\n\t\tif ( tx <= min ) {\n\n\t\t\tmin = tx;\n\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t}\n\n\t\tif ( ty <= min ) {\n\n\t\t\tmin = ty;\n\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t}\n\n\t\tif ( tz <= min ) {\n\n\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t}\n\n\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\tfor ( i = 1; i <= segments; i ++ ) {\n\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\tvec.normalize();\n\n\t\t\t\ttheta = Math.acos( _Math.clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors\n\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\n\n\t\t\t}\n\n\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t}\n\n\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\tif ( closed === true ) {\n\n\t\t\ttheta = Math.acos( _Math.clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) );\n\t\t\ttheta /= segments;\n\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\n\n\t\t\t\ttheta = - theta;\n\n\t\t\t}\n\n\t\t\tfor ( i = 1; i <= segments; i ++ ) {\n\n\t\t\t\t// twist a little...\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttangents: tangents,\n\t\t\tnormals: normals,\n\t\t\tbinormals: binormals\n\t\t};\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.arcLengthDivisions = source.arcLengthDivisions;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Curve',\n\t\t\t\tgenerator: 'Curve.toJSON'\n\t\t\t}\n\t\t};\n\n\t\tdata.arcLengthDivisions = this.arcLengthDivisions;\n\t\tdata.type = this.type;\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tthis.arcLengthDivisions = json.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'EllipseCurve';\n\n\tthis.aX = aX || 0;\n\tthis.aY = aY || 0;\n\n\tthis.xRadius = xRadius || 1;\n\tthis.yRadius = yRadius || 1;\n\n\tthis.aStartAngle = aStartAngle || 0;\n\tthis.aEndAngle = aEndAngle || 2 * Math.PI;\n\n\tthis.aClockwise = aClockwise || false;\n\n\tthis.aRotation = aRotation || 0;\n\n}\n\nEllipseCurve.prototype = Object.create( Curve.prototype );\nEllipseCurve.prototype.constructor = EllipseCurve;\n\nEllipseCurve.prototype.isEllipseCurve = true;\n\nEllipseCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector2();\n\n\tvar twoPi = Math.PI * 2;\n\tvar deltaAngle = this.aEndAngle - this.aStartAngle;\n\tvar samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t// ensures that deltaAngle is 0 .. 2 PI\n\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\tif ( samePoints ) {\n\n\t\t\tdeltaAngle = 0;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = twoPi;\n\n\t\t}\n\n\t}\n\n\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\tdeltaAngle = - twoPi;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t}\n\n\t}\n\n\tvar angle = this.aStartAngle + t * deltaAngle;\n\tvar x = this.aX + this.xRadius * Math.cos( angle );\n\tvar y = this.aY + this.yRadius * Math.sin( angle );\n\n\tif ( this.aRotation !== 0 ) {\n\n\t\tvar cos = Math.cos( this.aRotation );\n\t\tvar sin = Math.sin( this.aRotation );\n\n\t\tvar tx = x - this.aX;\n\t\tvar ty = y - this.aY;\n\n\t\t// Rotate the point about the center of the ellipse.\n\t\tx = tx * cos - ty * sin + this.aX;\n\t\ty = tx * sin + ty * cos + this.aY;\n\n\t}\n\n\treturn point.set( x, y );\n\n};\n\nEllipseCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.aX = source.aX;\n\tthis.aY = source.aY;\n\n\tthis.xRadius = source.xRadius;\n\tthis.yRadius = source.yRadius;\n\n\tthis.aStartAngle = source.aStartAngle;\n\tthis.aEndAngle = source.aEndAngle;\n\n\tthis.aClockwise = source.aClockwise;\n\n\tthis.aRotation = source.aRotation;\n\n\treturn this;\n\n};\n\n\nEllipseCurve.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.aX = this.aX;\n\tdata.aY = this.aY;\n\n\tdata.xRadius = this.xRadius;\n\tdata.yRadius = this.yRadius;\n\n\tdata.aStartAngle = this.aStartAngle;\n\tdata.aEndAngle = this.aEndAngle;\n\n\tdata.aClockwise = this.aClockwise;\n\n\tdata.aRotation = this.aRotation;\n\n\treturn data;\n\n};\n\nEllipseCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.aX = json.aX;\n\tthis.aY = json.aY;\n\n\tthis.xRadius = json.xRadius;\n\tthis.yRadius = json.yRadius;\n\n\tthis.aStartAngle = json.aStartAngle;\n\tthis.aEndAngle = json.aEndAngle;\n\n\tthis.aClockwise = json.aClockwise;\n\n\tthis.aRotation = json.aRotation;\n\n\treturn this;\n\n};\n\nfunction ArcCurve( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\tEllipseCurve.call( this, aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\tthis.type = 'ArcCurve';\n\n}\n\nArcCurve.prototype = Object.create( EllipseCurve.prototype );\nArcCurve.prototype.constructor = ArcCurve;\n\nArcCurve.prototype.isArcCurve = true;\n\n/**\n * @author zz85 https://github.com/zz85\n *\n * Centripetal CatmullRom Curve - which is useful for avoiding\n * cusps and self-intersections in non-uniform catmull rom curves.\n * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n *\n * curve.type accepts centripetal(default), chordal and catmullrom\n * curve.tension is used for catmullrom which defaults to 0.5\n */\n\n\n/*\nBased on an optimized c++ solution in\n - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n - http://ideone.com/NoEbVM\n\nThis CubicPoly class could be used for reusing some variables and calculations,\nbut for three.js curve use, it could be possible inlined and flatten into a single function call\nwhich can be placed in CurveUtils.\n*/\n\nfunction CubicPoly() {\n\n\tvar c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n\n\t/*\n\t * Compute coefficients for a cubic polynomial\n\t *   p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t * such that\n\t *   p(0) = x0, p(1) = x1\n\t *  and\n\t *   p'(0) = t0, p'(1) = t1.\n\t */\n\tfunction init( x0, x1, t0, t1 ) {\n\n\t\tc0 = x0;\n\t\tc1 = t0;\n\t\tc2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\tc3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t}\n\n\treturn {\n\n\t\tinitCatmullRom: function ( x0, x1, x2, x3, tension ) {\n\n\t\t\tinit( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t\t},\n\n\t\tinitNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t\t// compute tangents when parameterized in [t1,t2]\n\t\t\tvar t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\t\tvar t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\n\n\t\t\t// rescale tangents for parametrization in [0,1]\n\t\t\tt1 *= dt1;\n\t\t\tt2 *= dt1;\n\n\t\t\tinit( x1, x2, t1, t2 );\n\n\t\t},\n\n\t\tcalc: function ( t ) {\n\n\t\t\tvar t2 = t * t;\n\t\t\tvar t3 = t2 * t;\n\t\t\treturn c0 + c1 * t + c2 * t2 + c3 * t3;\n\n\t\t}\n\n\t};\n\n}\n\n//\n\nvar tmp = new Vector3();\nvar px = new CubicPoly(), py = new CubicPoly(), pz = new CubicPoly();\n\nfunction CatmullRomCurve3( points, closed, curveType, tension ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CatmullRomCurve3';\n\n\tthis.points = points || [];\n\tthis.closed = closed || false;\n\tthis.curveType = curveType || 'centripetal';\n\tthis.tension = tension || 0.5;\n\n}\n\nCatmullRomCurve3.prototype = Object.create( Curve.prototype );\nCatmullRomCurve3.prototype.constructor = CatmullRomCurve3;\n\nCatmullRomCurve3.prototype.isCatmullRomCurve3 = true;\n\nCatmullRomCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector3();\n\n\tvar points = this.points;\n\tvar l = points.length;\n\n\tvar p = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\tvar intPoint = Math.floor( p );\n\tvar weight = p - intPoint;\n\n\tif ( this.closed ) {\n\n\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l;\n\n\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\tintPoint = l - 2;\n\t\tweight = 1;\n\n\t}\n\n\tvar p0, p1, p2, p3; // 4 points\n\n\tif ( this.closed || intPoint > 0 ) {\n\n\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t} else {\n\n\t\t// extrapolate first point\n\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\tp0 = tmp;\n\n\t}\n\n\tp1 = points[ intPoint % l ];\n\tp2 = points[ ( intPoint + 1 ) % l ];\n\n\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t} else {\n\n\t\t// extrapolate last point\n\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\tp3 = tmp;\n\n\t}\n\n\tif ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) {\n\n\t\t// init Centripetal / Chordal Catmull-Rom\n\t\tvar pow = this.curveType === 'chordal' ? 0.5 : 0.25;\n\t\tvar dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\tvar dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\tvar dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t// safety check for repeated points\n\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t} else if ( this.curveType === 'catmullrom' ) {\n\n\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension );\n\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension );\n\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension );\n\n\t}\n\n\tpoint.set(\n\t\tpx.calc( weight ),\n\t\tpy.calc( weight ),\n\t\tpz.calc( weight )\n\t);\n\n\treturn point;\n\n};\n\nCatmullRomCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.points = [];\n\n\tfor ( var i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\tvar point = source.points[ i ];\n\n\t\tthis.points.push( point.clone() );\n\n\t}\n\n\tthis.closed = source.closed;\n\tthis.curveType = source.curveType;\n\tthis.tension = source.tension;\n\n\treturn this;\n\n};\n\nCatmullRomCurve3.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.points = [];\n\n\tfor ( var i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\tvar point = this.points[ i ];\n\t\tdata.points.push( point.toArray() );\n\n\t}\n\n\tdata.closed = this.closed;\n\tdata.curveType = this.curveType;\n\tdata.tension = this.tension;\n\n\treturn data;\n\n};\n\nCatmullRomCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.points = [];\n\n\tfor ( var i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\tvar point = json.points[ i ];\n\t\tthis.points.push( new Vector3().fromArray( point ) );\n\n\t}\n\n\tthis.closed = json.closed;\n\tthis.curveType = json.curveType;\n\tthis.tension = json.tension;\n\n\treturn this;\n\n};\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n * Bezier Curves formulas obtained from\n * http://en.wikipedia.org/wiki/Bézier_curve\n */\n\nfunction CatmullRom( t, p0, p1, p2, p3 ) {\n\n\tvar v0 = ( p2 - p0 ) * 0.5;\n\tvar v1 = ( p3 - p1 ) * 0.5;\n\tvar t2 = t * t;\n\tvar t3 = t * t2;\n\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n}\n\n//\n\nfunction QuadraticBezierP0( t, p ) {\n\n\tvar k = 1 - t;\n\treturn k * k * p;\n\n}\n\nfunction QuadraticBezierP1( t, p ) {\n\n\treturn 2 * ( 1 - t ) * t * p;\n\n}\n\nfunction QuadraticBezierP2( t, p ) {\n\n\treturn t * t * p;\n\n}\n\nfunction QuadraticBezier( t, p0, p1, p2 ) {\n\n\treturn QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) +\n\t\tQuadraticBezierP2( t, p2 );\n\n}\n\n//\n\nfunction CubicBezierP0( t, p ) {\n\n\tvar k = 1 - t;\n\treturn k * k * k * p;\n\n}\n\nfunction CubicBezierP1( t, p ) {\n\n\tvar k = 1 - t;\n\treturn 3 * k * k * t * p;\n\n}\n\nfunction CubicBezierP2( t, p ) {\n\n\treturn 3 * ( 1 - t ) * t * t * p;\n\n}\n\nfunction CubicBezierP3( t, p ) {\n\n\treturn t * t * t * p;\n\n}\n\nfunction CubicBezier( t, p0, p1, p2, p3 ) {\n\n\treturn CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) +\n\t\tCubicBezierP3( t, p3 );\n\n}\n\nfunction CubicBezierCurve( v0, v1, v2, v3 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CubicBezierCurve';\n\n\tthis.v0 = v0 || new Vector2();\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\tthis.v3 = v3 || new Vector2();\n\n}\n\nCubicBezierCurve.prototype = Object.create( Curve.prototype );\nCubicBezierCurve.prototype.constructor = CubicBezierCurve;\n\nCubicBezierCurve.prototype.isCubicBezierCurve = true;\n\nCubicBezierCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector2();\n\n\tvar v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\tpoint.set(\n\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y )\n\t);\n\n\treturn point;\n\n};\n\nCubicBezierCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\tthis.v3.copy( source.v3 );\n\n\treturn this;\n\n};\n\nCubicBezierCurve.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\tdata.v3 = this.v3.toArray();\n\n\treturn data;\n\n};\n\nCubicBezierCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\tthis.v3.fromArray( json.v3 );\n\n\treturn this;\n\n};\n\nfunction CubicBezierCurve3( v0, v1, v2, v3 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CubicBezierCurve3';\n\n\tthis.v0 = v0 || new Vector3();\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\tthis.v3 = v3 || new Vector3();\n\n}\n\nCubicBezierCurve3.prototype = Object.create( Curve.prototype );\nCubicBezierCurve3.prototype.constructor = CubicBezierCurve3;\n\nCubicBezierCurve3.prototype.isCubicBezierCurve3 = true;\n\nCubicBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector3();\n\n\tvar v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\tpoint.set(\n\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y ),\n\t\tCubicBezier( t, v0.z, v1.z, v2.z, v3.z )\n\t);\n\n\treturn point;\n\n};\n\nCubicBezierCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\tthis.v3.copy( source.v3 );\n\n\treturn this;\n\n};\n\nCubicBezierCurve3.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\tdata.v3 = this.v3.toArray();\n\n\treturn data;\n\n};\n\nCubicBezierCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\tthis.v3.fromArray( json.v3 );\n\n\treturn this;\n\n};\n\nfunction LineCurve( v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'LineCurve';\n\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\n}\n\nLineCurve.prototype = Object.create( Curve.prototype );\nLineCurve.prototype.constructor = LineCurve;\n\nLineCurve.prototype.isLineCurve = true;\n\nLineCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector2();\n\n\tif ( t === 1 ) {\n\n\t\tpoint.copy( this.v2 );\n\n\t} else {\n\n\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t}\n\n\treturn point;\n\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve.prototype.getPointAt = function ( u, optionalTarget ) {\n\n\treturn this.getPoint( u, optionalTarget );\n\n};\n\nLineCurve.prototype.getTangent = function ( /* t */ ) {\n\n\tvar tangent = this.v2.clone().sub( this.v1 );\n\n\treturn tangent.normalize();\n\n};\n\nLineCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nLineCurve.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nLineCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction LineCurve3( v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'LineCurve3';\n\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\n}\n\nLineCurve3.prototype = Object.create( Curve.prototype );\nLineCurve3.prototype.constructor = LineCurve3;\n\nLineCurve3.prototype.isLineCurve3 = true;\n\nLineCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector3();\n\n\tif ( t === 1 ) {\n\n\t\tpoint.copy( this.v2 );\n\n\t} else {\n\n\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t}\n\n\treturn point;\n\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve3.prototype.getPointAt = function ( u, optionalTarget ) {\n\n\treturn this.getPoint( u, optionalTarget );\n\n};\n\nLineCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nLineCurve3.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nLineCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction QuadraticBezierCurve( v0, v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'QuadraticBezierCurve';\n\n\tthis.v0 = v0 || new Vector2();\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\n}\n\nQuadraticBezierCurve.prototype = Object.create( Curve.prototype );\nQuadraticBezierCurve.prototype.constructor = QuadraticBezierCurve;\n\nQuadraticBezierCurve.prototype.isQuadraticBezierCurve = true;\n\nQuadraticBezierCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector2();\n\n\tvar v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\tpoint.set(\n\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\tQuadraticBezier( t, v0.y, v1.y, v2.y )\n\t);\n\n\treturn point;\n\n};\n\nQuadraticBezierCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nQuadraticBezierCurve.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nQuadraticBezierCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction QuadraticBezierCurve3( v0, v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'QuadraticBezierCurve3';\n\n\tthis.v0 = v0 || new Vector3();\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\n}\n\nQuadraticBezierCurve3.prototype = Object.create( Curve.prototype );\nQuadraticBezierCurve3.prototype.constructor = QuadraticBezierCurve3;\n\nQuadraticBezierCurve3.prototype.isQuadraticBezierCurve3 = true;\n\nQuadraticBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector3();\n\n\tvar v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\tpoint.set(\n\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\tQuadraticBezier( t, v0.y, v1.y, v2.y ),\n\t\tQuadraticBezier( t, v0.z, v1.z, v2.z )\n\t);\n\n\treturn point;\n\n};\n\nQuadraticBezierCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nQuadraticBezierCurve3.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nQuadraticBezierCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction SplineCurve( points /* array of Vector2 */ ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'SplineCurve';\n\n\tthis.points = points || [];\n\n}\n\nSplineCurve.prototype = Object.create( Curve.prototype );\nSplineCurve.prototype.constructor = SplineCurve;\n\nSplineCurve.prototype.isSplineCurve = true;\n\nSplineCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector2();\n\n\tvar points = this.points;\n\tvar p = ( points.length - 1 ) * t;\n\n\tvar intPoint = Math.floor( p );\n\tvar weight = p - intPoint;\n\n\tvar p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\tvar p1 = points[ intPoint ];\n\tvar p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\tvar p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\tpoint.set(\n\t\tCatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),\n\t\tCatmullRom( weight, p0.y, p1.y, p2.y, p3.y )\n\t);\n\n\treturn point;\n\n};\n\nSplineCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.points = [];\n\n\tfor ( var i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\tvar point = source.points[ i ];\n\n\t\tthis.points.push( point.clone() );\n\n\t}\n\n\treturn this;\n\n};\n\nSplineCurve.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.points = [];\n\n\tfor ( var i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\tvar point = this.points[ i ];\n\t\tdata.points.push( point.toArray() );\n\n\t}\n\n\treturn data;\n\n};\n\nSplineCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.points = [];\n\n\tfor ( var i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\tvar point = json.points[ i ];\n\t\tthis.points.push( new Vector2().fromArray( point ) );\n\n\t}\n\n\treturn this;\n\n};\n\n\n\nvar Curves = /*#__PURE__*/Object.freeze({\n\tArcCurve: ArcCurve,\n\tCatmullRomCurve3: CatmullRomCurve3,\n\tCubicBezierCurve: CubicBezierCurve,\n\tCubicBezierCurve3: CubicBezierCurve3,\n\tEllipseCurve: EllipseCurve,\n\tLineCurve: LineCurve,\n\tLineCurve3: LineCurve3,\n\tQuadraticBezierCurve: QuadraticBezierCurve,\n\tQuadraticBezierCurve3: QuadraticBezierCurve3,\n\tSplineCurve: SplineCurve\n});\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n **/\n\n/**************************************************************\n *\tCurved Path - a curve path is simply a array of connected\n *  curves, but retains the api of a curve\n **************************************************************/\n\nfunction CurvePath() {\n\n\tCurve.call( this );\n\n\tthis.type = 'CurvePath';\n\n\tthis.curves = [];\n\tthis.autoClose = false; // Automatically closes the path\n\n}\n\nCurvePath.prototype = Object.assign( Object.create( Curve.prototype ), {\n\n\tconstructor: CurvePath,\n\n\tadd: function ( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t},\n\n\tclosePath: function () {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tvar startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tvar endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\tthis.curves.push( new LineCurve( endPoint, startPoint ) );\n\n\t\t}\n\n\t},\n\n\t// To get accurate point with reference to\n\t// entire path distance at time t,\n\t// following has to be done:\n\n\t// 1. Length of each sub path have to be known\n\t// 2. Locate and identify type of curve\n\t// 3. Get t for the curve\n\t// 4. Return curve.getPointAt(t')\n\n\tgetPoint: function ( t ) {\n\n\t\tvar d = t * this.getLength();\n\t\tvar curveLengths = this.getCurveLengths();\n\t\tvar i = 0;\n\n\t\t// To think about boundaries points.\n\n\t\twhile ( i < curveLengths.length ) {\n\n\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\tvar diff = curveLengths[ i ] - d;\n\t\t\t\tvar curve = this.curves[ i ];\n\n\t\t\t\tvar segmentLength = curve.getLength();\n\t\t\t\tvar u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\treturn curve.getPointAt( u );\n\n\t\t\t}\n\n\t\t\ti ++;\n\n\t\t}\n\n\t\treturn null;\n\n\t\t// loop where sum != 0, sum > d , sum+1 <d\n\n\t},\n\n\t// We cannot use the default THREE.Curve getPoint() with getLength() because in\n\t// THREE.Curve, getLength() depends on getPoint() but in THREE.CurvePath\n\t// getPoint() depends on getLength\n\n\tgetLength: function () {\n\n\t\tvar lens = this.getCurveLengths();\n\t\treturn lens[ lens.length - 1 ];\n\n\t},\n\n\t// cacheLengths must be recalculated.\n\tupdateArcLengths: function () {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.cacheLengths = null;\n\t\tthis.getCurveLengths();\n\n\t},\n\n\t// Compute lengths and cache them\n\t// We cannot overwrite getLengths() because UtoT mapping uses it.\n\n\tgetCurveLengths: function () {\n\n\t\t// We use cache values if curves and cache array are same length\n\n\t\tif ( this.cacheLengths && this.cacheLengths.length === this.curves.length ) {\n\n\t\t\treturn this.cacheLengths;\n\n\t\t}\n\n\t\t// Get length of sub-curve\n\t\t// Push sums into cached array\n\n\t\tvar lengths = [], sums = 0;\n\n\t\tfor ( var i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tsums += this.curves[ i ].getLength();\n\t\t\tlengths.push( sums );\n\n\t\t}\n\n\t\tthis.cacheLengths = lengths;\n\n\t\treturn lengths;\n\n\t},\n\n\tgetSpacedPoints: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = 40;\n\n\t\tvar points = [];\n\n\t\tfor ( var i = 0; i <= divisions; i ++ ) {\n\n\t\t\tpoints.push( this.getPoint( i / divisions ) );\n\n\t\t}\n\n\t\tif ( this.autoClose ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\tgetPoints: function ( divisions ) {\n\n\t\tdivisions = divisions || 12;\n\n\t\tvar points = [], last;\n\n\t\tfor ( var i = 0, curves = this.curves; i < curves.length; i ++ ) {\n\n\t\t\tvar curve = curves[ i ];\n\t\t\tvar resolution = ( curve && curve.isEllipseCurve ) ? divisions * 2\n\t\t\t\t: ( curve && ( curve.isLineCurve || curve.isLineCurve3 ) ) ? 1\n\t\t\t\t\t: ( curve && curve.isSplineCurve ) ? divisions * curve.points.length\n\t\t\t\t\t\t: divisions;\n\n\t\t\tvar pts = curve.getPoints( resolution );\n\n\t\t\tfor ( var j = 0; j < pts.length; j ++ ) {\n\n\t\t\t\tvar point = pts[ j ];\n\n\t\t\t\tif ( last && last.equals( point ) ) continue; // ensures no consecutive points are duplicates\n\n\t\t\t\tpoints.push( point );\n\t\t\t\tlast = point;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.autoClose && points.length > 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tCurve.prototype.copy.call( this, source );\n\n\t\tthis.curves = [];\n\n\t\tfor ( var i = 0, l = source.curves.length; i < l; i ++ ) {\n\n\t\t\tvar curve = source.curves[ i ];\n\n\t\t\tthis.curves.push( curve.clone() );\n\n\t\t}\n\n\t\tthis.autoClose = source.autoClose;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = Curve.prototype.toJSON.call( this );\n\n\t\tdata.autoClose = this.autoClose;\n\t\tdata.curves = [];\n\n\t\tfor ( var i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tvar curve = this.curves[ i ];\n\t\t\tdata.curves.push( curve.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tCurve.prototype.fromJSON.call( this, json );\n\n\t\tthis.autoClose = json.autoClose;\n\t\tthis.curves = [];\n\n\t\tfor ( var i = 0, l = json.curves.length; i < l; i ++ ) {\n\n\t\t\tvar curve = json.curves[ i ];\n\t\t\tthis.curves.push( new Curves[ curve.type ]().fromJSON( curve ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Creates free form 2d path using series of points, lines or curves.\n **/\n\nfunction Path( points ) {\n\n\tCurvePath.call( this );\n\n\tthis.type = 'Path';\n\n\tthis.currentPoint = new Vector2();\n\n\tif ( points ) {\n\n\t\tthis.setFromPoints( points );\n\n\t}\n\n}\n\nPath.prototype = Object.assign( Object.create( CurvePath.prototype ), {\n\n\tconstructor: Path,\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.moveTo( points[ 0 ].x, points[ 0 ].y );\n\n\t\tfor ( var i = 1, l = points.length; i < l; i ++ ) {\n\n\t\t\tthis.lineTo( points[ i ].x, points[ i ].y );\n\n\t\t}\n\n\t},\n\n\tmoveTo: function ( x, y ) {\n\n\t\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\n\n\t},\n\n\tlineTo: function ( x, y ) {\n\n\t\tvar curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( x, y );\n\n\t},\n\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\tvar curve = new QuadraticBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCPx, aCPy ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t},\n\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tvar curve = new CubicBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCP1x, aCP1y ),\n\t\t\tnew Vector2( aCP2x, aCP2y ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t},\n\n\tsplineThru: function ( pts /*Array of Vector*/ ) {\n\n\t\tvar npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tvar curve = new SplineCurve( npts );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t},\n\n\tarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tvar x0 = this.currentPoint.x;\n\t\tvar y0 = this.currentPoint.y;\n\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t},\n\n\tabsarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t},\n\n\tellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tvar x0 = this.currentPoint.x;\n\t\tvar y0 = this.currentPoint.y;\n\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t},\n\n\tabsellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tvar curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\tif ( this.curves.length > 0 ) {\n\n\t\t\t// if a previous curve is present, attempt to join\n\t\t\tvar firstPoint = curve.getPoint( 0 );\n\n\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\n\n\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.curves.push( curve );\n\n\t\tvar lastPoint = curve.getPoint( 1 );\n\t\tthis.currentPoint.copy( lastPoint );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tCurvePath.prototype.copy.call( this, source );\n\n\t\tthis.currentPoint.copy( source.currentPoint );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = CurvePath.prototype.toJSON.call( this );\n\n\t\tdata.currentPoint = this.currentPoint.toArray();\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tCurvePath.prototype.fromJSON.call( this, json );\n\n\t\tthis.currentPoint.fromArray( json.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Defines a 2d shape plane using paths.\n **/\n\n// STEP 1 Create a path.\n// STEP 2 Turn path into shape.\n// STEP 3 ExtrudeGeometry takes in Shape/Shapes\n// STEP 3a - Extract points from each shape, turn to vertices\n// STEP 3b - Triangulate each shape, add faces.\n\nfunction Shape( points ) {\n\n\tPath.call( this, points );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.type = 'Shape';\n\n\tthis.holes = [];\n\n}\n\nShape.prototype = Object.assign( Object.create( Path.prototype ), {\n\n\tconstructor: Shape,\n\n\tgetPointsHoles: function ( divisions ) {\n\n\t\tvar holesPts = [];\n\n\t\tfor ( var i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t}\n\n\t\treturn holesPts;\n\n\t},\n\n\t// get points of shape and holes (keypoints based on segments parameter)\n\n\textractPoints: function ( divisions ) {\n\n\t\treturn {\n\n\t\t\tshape: this.getPoints( divisions ),\n\t\t\tholes: this.getPointsHoles( divisions )\n\n\t\t};\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tPath.prototype.copy.call( this, source );\n\n\t\tthis.holes = [];\n\n\t\tfor ( var i = 0, l = source.holes.length; i < l; i ++ ) {\n\n\t\t\tvar hole = source.holes[ i ];\n\n\t\t\tthis.holes.push( hole.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = Path.prototype.toJSON.call( this );\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.holes = [];\n\n\t\tfor ( var i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tvar hole = this.holes[ i ];\n\t\t\tdata.holes.push( hole.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tPath.prototype.fromJSON.call( this, json );\n\n\t\tthis.uuid = json.uuid;\n\t\tthis.holes = [];\n\n\t\tfor ( var i = 0, l = json.holes.length; i < l; i ++ ) {\n\n\t\t\tvar hole = json.holes[ i ];\n\t\t\tthis.holes.push( new Path().fromJSON( hole ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Light( color, intensity ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Light';\n\n\tthis.color = new Color( color );\n\tthis.intensity = intensity !== undefined ? intensity : 1;\n\n\tthis.receiveShadow = undefined;\n\n}\n\nLight.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Light,\n\n\tisLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.color = this.color.getHex();\n\t\tdata.object.intensity = this.intensity;\n\n\t\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\n\n\t\tif ( this.distance !== undefined ) data.object.distance = this.distance;\n\t\tif ( this.angle !== undefined ) data.object.angle = this.angle;\n\t\tif ( this.decay !== undefined ) data.object.decay = this.decay;\n\t\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\n\n\t\tif ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction HemisphereLight( skyColor, groundColor, intensity ) {\n\n\tLight.call( this, skyColor, intensity );\n\n\tthis.type = 'HemisphereLight';\n\n\tthis.castShadow = undefined;\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.groundColor = new Color( groundColor );\n\n}\n\nHemisphereLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: HemisphereLight,\n\n\tisHemisphereLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.groundColor.copy( source.groundColor );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LightShadow( camera ) {\n\n\tthis.camera = camera;\n\n\tthis.bias = 0;\n\tthis.radius = 1;\n\n\tthis.mapSize = new Vector2( 512, 512 );\n\n\tthis.map = null;\n\tthis.matrix = new Matrix4();\n\n}\n\nObject.assign( LightShadow.prototype, {\n\n\tcopy: function ( source ) {\n\n\t\tthis.camera = source.camera.clone();\n\n\t\tthis.bias = source.bias;\n\t\tthis.radius = source.radius;\n\n\t\tthis.mapSize.copy( source.mapSize );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar object = {};\n\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction SpotLightShadow() {\n\n\tLightShadow.call( this, new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n}\n\nSpotLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: SpotLightShadow,\n\n\tisSpotLightShadow: true,\n\n\tupdate: function ( light ) {\n\n\t\tvar camera = this.camera;\n\n\t\tvar fov = _Math.RAD2DEG * 2 * light.angle;\n\t\tvar aspect = this.mapSize.width / this.mapSize.height;\n\t\tvar far = light.distance || camera.far;\n\n\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\tcamera.fov = fov;\n\t\t\tcamera.aspect = aspect;\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction SpotLight( color, intensity, distance, angle, penumbra, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'SpotLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\treturn this.intensity * Math.PI;\n\n\t\t},\n\t\tset: function ( power ) {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\tthis.intensity = power / Math.PI;\n\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.angle = ( angle !== undefined ) ? angle : Math.PI / 3;\n\tthis.penumbra = ( penumbra !== undefined ) ? penumbra : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new SpotLightShadow();\n\n}\n\nSpotLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: SpotLight,\n\n\tisSpotLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.angle = source.angle;\n\t\tthis.penumbra = source.penumbra;\n\t\tthis.decay = source.decay;\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction PointLight( color, intensity, distance, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'PointLight';\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\treturn this.intensity * 4 * Math.PI;\n\n\t\t},\n\t\tset: function ( power ) {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\tthis.intensity = power / ( 4 * Math.PI );\n\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new LightShadow( new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n}\n\nPointLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: PointLight,\n\n\tisPointLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.decay = source.decay;\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction DirectionalLightShadow( ) {\n\n\tLightShadow.call( this, new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n}\n\nDirectionalLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: DirectionalLightShadow\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction DirectionalLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'DirectionalLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tthis.shadow = new DirectionalLightShadow();\n\n}\n\nDirectionalLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: DirectionalLight,\n\n\tisDirectionalLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AmbientLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'AmbientLight';\n\n\tthis.castShadow = undefined;\n\n}\n\nAmbientLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: AmbientLight,\n\n\tisAmbientLight: true\n\n} );\n\n/**\n * @author abelnation / http://github.com/abelnation\n */\n\nfunction RectAreaLight( color, intensity, width, height ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'RectAreaLight';\n\n\tthis.width = ( width !== undefined ) ? width : 10;\n\tthis.height = ( height !== undefined ) ? height : 10;\n\n}\n\nRectAreaLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: RectAreaLight,\n\n\tisRectAreaLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Light.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.width = this.width;\n\t\tdata.object.height = this.height;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author tschw\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n */\n\nvar AnimationUtils = {\n\n\t// same as Array.prototype.slice, but also works on typed arrays\n\tarraySlice: function ( array, from, to ) {\n\n\t\tif ( AnimationUtils.isTypedArray( array ) ) {\n\n\t\t\t// in ios9 array.subarray(from, undefined) will return empty array\n\t\t\t// but array.subarray(from) or array.subarray(from, len) is correct\n\t\t\treturn new array.constructor( array.subarray( from, to !== undefined ? to : array.length ) );\n\n\t\t}\n\n\t\treturn array.slice( from, to );\n\n\t},\n\n\t// converts an array to a specific type\n\tconvertArray: function ( array, type, forceClone ) {\n\n\t\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t\t\t! forceClone && array.constructor === type ) return array;\n\n\t\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\t\treturn new type( array ); // create typed array\n\n\t\t}\n\n\t\treturn Array.prototype.slice.call( array ); // create Array\n\n\t},\n\n\tisTypedArray: function ( object ) {\n\n\t\treturn ArrayBuffer.isView( object ) &&\n\t\t\t\t! ( object instanceof DataView );\n\n\t},\n\n\t// returns an array by which times and values can be sorted\n\tgetKeyframeOrder: function ( times ) {\n\n\t\tfunction compareTime( i, j ) {\n\n\t\t\treturn times[ i ] - times[ j ];\n\n\t\t}\n\n\t\tvar n = times.length;\n\t\tvar result = new Array( n );\n\t\tfor ( var i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\t\tresult.sort( compareTime );\n\n\t\treturn result;\n\n\t},\n\n\t// uses the array previously returned by 'getKeyframeOrder' to sort data\n\tsortedArray: function ( values, stride, order ) {\n\n\t\tvar nValues = values.length;\n\t\tvar result = new values.constructor( nValues );\n\n\t\tfor ( var i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\t\tvar srcOffset = order[ i ] * stride;\n\n\t\t\tfor ( var j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// function for parsing AOS keyframe formats\n\tflattenJSON: function ( jsonKeys, times, values, valuePropertyName ) {\n\n\t\tvar i = 1, key = jsonKeys[ 0 ];\n\n\t\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t}\n\n\t\tif ( key === undefined ) return; // no data\n\n\t\tvar value = key[ valuePropertyName ];\n\t\tif ( value === undefined ) return; // no data\n\n\t\tif ( Array.isArray( value ) ) {\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else if ( value.toArray !== undefined ) {\n\n\t\t\t// ...assume THREE.Math-ish\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else {\n\n\t\t\t// otherwise push as-is\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push( value );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t}\n\n\t}\n\n};\n\n/**\n * Abstract base class of interpolants over parametric samples.\n *\n * The parameter domain is one dimensional, typically the time or a path\n * along a curve defined by the data.\n *\n * The sample values can have any dimensionality and derived classes may\n * apply special interpretations to the data.\n *\n * This class provides the interval seek in a Template Method, deferring\n * the actual interpolation to derived classes.\n *\n * Time complexity is O(1) for linear access crossing at most two points\n * and O(log N) for random access, where N is the number of positions.\n *\n * References:\n *\n * \t\thttp://www.oodesign.com/template-method-pattern.html\n *\n * @author tschw\n */\n\nfunction Interpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tthis.parameterPositions = parameterPositions;\n\tthis._cachedIndex = 0;\n\n\tthis.resultBuffer = resultBuffer !== undefined ?\n\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\tthis.sampleValues = sampleValues;\n\tthis.valueSize = sampleSize;\n\n}\n\nObject.assign( Interpolant.prototype, {\n\n\tevaluate: function ( t ) {\n\n\t\tvar pp = this.parameterPositions,\n\t\t\ti1 = this._cachedIndex,\n\n\t\t\tt1 = pp[ i1 ],\n\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\tvalidate_interval: {\n\n\t\t\tseek: {\n\n\t\t\t\tvar right;\n\n\t\t\t\tlinear_scan: {\n\n\t\t\t\t\t//- See http://jsperf.com/comparison-to-undefined/3\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\n\t\t\t\t\t//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\n\n\t\t\t\t\t\tfor ( var giveUpAt = i1 + 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\n\n\t\t\t\t\t\t\t\t// after end\n\n\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\treturn this.afterEnd_( i1 - 1, t, t0 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\n\n\t\t\t\t\t\t\tif ( t < t1 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the right side of the index\n\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\t\t\t\t\tif ( ! ( t >= t0 ) ) {\n\n\t\t\t\t\t\t// looping?\n\n\t\t\t\t\t\tvar t1global = pp[ 1 ];\n\n\t\t\t\t\t\tif ( t < t1global ) {\n\n\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\t\t\t\t\t\t\tt0 = t1global;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// linear reverse scan\n\n\t\t\t\t\t\tfor ( var giveUpAt = i1 - 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\t\t\t// before start\n\n\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\n\n\t\t\t\t\t\t\tif ( t >= t0 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the left side of the index\n\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the interval is valid\n\n\t\t\t\t\tbreak validate_interval;\n\n\t\t\t\t} // linear scan\n\n\t\t\t\t// binary search\n\n\t\t\t\twhile ( i1 < right ) {\n\n\t\t\t\t\tvar mid = ( i1 + right ) >>> 1;\n\n\t\t\t\t\tif ( t < pp[ mid ] ) {\n\n\t\t\t\t\t\tright = mid;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ti1 = mid + 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tt1 = pp[ i1 ];\n\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\t\t// check boundary cases, again\n\n\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\treturn this.afterEnd_( i1 - 1, t0, t );\n\n\t\t\t\t}\n\n\t\t\t} // seek\n\n\t\t\tthis._cachedIndex = i1;\n\n\t\t\tthis.intervalChanged_( i1, t0, t1 );\n\n\t\t} // validate_interval\n\n\t\treturn this.interpolate_( i1, t0, t, t1 );\n\n\t},\n\n\tsettings: null, // optional, subclass-specific settings structure\n\t// Note: The indirection allows central control of many interpolants.\n\n\t// --- Protected interface\n\n\tDefaultSettings_: {},\n\n\tgetSettings_: function () {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t},\n\n\tcopySampleValue_: function ( index ) {\n\n\t\t// copies a sample value to the result buffer\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = index * stride;\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// Template methods for derived classes:\n\n\tinterpolate_: function ( /* i1, t0, t, t1 */ ) {\n\n\t\tthrow new Error( 'call to abstract method' );\n\t\t// implementations shall return this.resultBuffer\n\n\t},\n\n\tintervalChanged_: function ( /* i1, t0, t1 */ ) {\n\n\t\t// empty\n\n\t}\n\n} );\n\n//!\\ DECLARE ALIAS AFTER assign prototype !\nObject.assign( Interpolant.prototype, {\n\n\t//( 0, t, t0 ), returns this.resultBuffer\n\tbeforeStart_: Interpolant.prototype.copySampleValue_,\n\n\t//( N-1, tN-1, t ), returns this.resultBuffer\n\tafterEnd_: Interpolant.prototype.copySampleValue_,\n\n} );\n\n/**\n * Fast and simple cubic spline interpolant.\n *\n * It was derived from a Hermitian construction setting the first derivative\n * at each sample position to the linear slope between neighboring positions\n * over their parameter interval.\n *\n * @author tschw\n */\n\nfunction CubicInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\tthis._weightPrev = - 0;\n\tthis._offsetPrev = - 0;\n\tthis._weightNext = - 0;\n\tthis._offsetNext = - 0;\n\n}\n\nCubicInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: CubicInterpolant,\n\n\tDefaultSettings_: {\n\n\t\tendingStart: ZeroCurvatureEnding,\n\t\tendingEnd: ZeroCurvatureEnding\n\n\t},\n\n\tintervalChanged_: function ( i1, t0, t1 ) {\n\n\t\tvar pp = this.parameterPositions,\n\t\t\tiPrev = i1 - 2,\n\t\t\tiNext = i1 + 1,\n\n\t\t\ttPrev = pp[ iPrev ],\n\t\t\ttNext = pp[ iNext ];\n\n\t\tif ( tPrev === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = t1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tNext === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\tiNext = i1;\n\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiNext = 1;\n\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\ttNext = t0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar halfDt = ( t1 - t0 ) * 0.5,\n\t\t\tstride = this.valueSize;\n\n\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\n\t\tthis._weightNext = halfDt / ( tNext - t1 );\n\t\tthis._offsetPrev = iPrev * stride;\n\t\tthis._offsetNext = iNext * stride;\n\n\t},\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\n\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\n\t\t\twP = this._weightPrev,\twN = this._weightNext,\n\n\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tpp = p * p,\n\t\t\tppp = pp * p;\n\n\t\t// evaluate polynomials\n\n\t\tvar sP = - wP * ppp + 2 * wP * pp - wP * p;\n\t\tvar s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1;\n\t\tvar s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\n\t\tvar sN = wN * ppp - wN * pp;\n\n\t\t// combine data linearly\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n * @author tschw\n */\n\nfunction LinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: LinearInterpolant,\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset1 = i1 * stride,\n\t\t\toffset0 = offset1 - stride,\n\n\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tweight0 = 1 - weight1;\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n *\n * Interpolant that evaluates to the sample value at the position preceeding\n * the parameter.\n *\n * @author tschw\n */\n\nfunction DiscreteInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nDiscreteInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: DiscreteInterpolant,\n\n\tinterpolate_: function ( i1 /*, t0, t, t1 */ ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n} );\n\n/**\n *\n * A timed sequence of keyframes for a specific property.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction KeyframeTrack( name, times, values, interpolation ) {\n\n\tif ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' );\n\tif ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name );\n\n\tthis.name = name;\n\n\tthis.times = AnimationUtils.convertArray( times, this.TimeBufferType );\n\tthis.values = AnimationUtils.convertArray( values, this.ValueBufferType );\n\n\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n}\n\n// Static methods\n\nObject.assign( KeyframeTrack, {\n\n\t// Serialization (in static context, because of constructor invocation\n\t// and automatic invocation of .toJSON):\n\n\ttoJSON: function ( track ) {\n\n\t\tvar trackType = track.constructor;\n\n\t\tvar json;\n\n\t\t// derived classes can define a static toJSON method\n\t\tif ( trackType.toJSON !== undefined ) {\n\n\t\t\tjson = trackType.toJSON( track );\n\n\t\t} else {\n\n\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\tjson = {\n\n\t\t\t\t'name': track.name,\n\t\t\t\t'times': AnimationUtils.convertArray( track.times, Array ),\n\t\t\t\t'values': AnimationUtils.convertArray( track.values, Array )\n\n\t\t\t};\n\n\t\t\tvar interpolation = track.getInterpolation();\n\n\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\n\n\t\t\t\tjson.interpolation = interpolation;\n\n\t\t\t}\n\n\t\t}\n\n\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\treturn json;\n\n\t}\n\n} );\n\nObject.assign( KeyframeTrack.prototype, {\n\n\tconstructor: KeyframeTrack,\n\n\tTimeBufferType: Float32Array,\n\n\tValueBufferType: Float32Array,\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodDiscrete: function ( result ) {\n\n\t\treturn new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodLinear: function ( result ) {\n\n\t\treturn new LinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: function ( result ) {\n\n\t\treturn new CubicInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tsetInterpolation: function ( interpolation ) {\n\n\t\tvar factoryMethod;\n\n\t\tswitch ( interpolation ) {\n\n\t\t\tcase InterpolateDiscrete:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateLinear:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateSmooth:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( factoryMethod === undefined ) {\n\n\t\t\tvar message = \"unsupported interpolation for \" +\n\t\t\t\tthis.ValueTypeName + \" keyframe track named \" + this.name;\n\n\t\t\tif ( this.createInterpolant === undefined ) {\n\n\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\n\n\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( message ); // fatal, in this case\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.KeyframeTrack:', message );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.createInterpolant = factoryMethod;\n\n\t\treturn this;\n\n\t},\n\n\tgetInterpolation: function () {\n\n\t\tswitch ( this.createInterpolant ) {\n\n\t\t\tcase this.InterpolantFactoryMethodDiscrete:\n\n\t\t\t\treturn InterpolateDiscrete;\n\n\t\t\tcase this.InterpolantFactoryMethodLinear:\n\n\t\t\t\treturn InterpolateLinear;\n\n\t\t\tcase this.InterpolantFactoryMethodSmooth:\n\n\t\t\t\treturn InterpolateSmooth;\n\n\t\t}\n\n\t},\n\n\tgetValueSize: function () {\n\n\t\treturn this.values.length / this.times.length;\n\n\t},\n\n\t// move all keyframes either forwards or backwards in time\n\tshift: function ( timeOffset ) {\n\n\t\tif ( timeOffset !== 0.0 ) {\n\n\t\t\tvar times = this.times;\n\n\t\t\tfor ( var i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] += timeOffset;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n\tscale: function ( timeScale ) {\n\n\t\tif ( timeScale !== 1.0 ) {\n\n\t\t\tvar times = this.times;\n\n\t\t\tfor ( var i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] *= timeScale;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// removes keyframes before and after animation without changing any values within the range [startTime, endTime].\n\t// IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values\n\ttrim: function ( startTime, endTime ) {\n\n\t\tvar times = this.times,\n\t\t\tnKeys = times.length,\n\t\t\tfrom = 0,\n\t\t\tto = nKeys - 1;\n\n\t\twhile ( from !== nKeys && times[ from ] < startTime ) {\n\n\t\t\t++ from;\n\n\t\t}\n\n\t\twhile ( to !== - 1 && times[ to ] > endTime ) {\n\n\t\t\t-- to;\n\n\t\t}\n\n\t\t++ to; // inclusive -> exclusive bound\n\n\t\tif ( from !== 0 || to !== nKeys ) {\n\n\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\tif ( from >= to ) to = Math.max( to, 1 ), from = to - 1;\n\n\t\t\tvar stride = this.getValueSize();\n\t\t\tthis.times = AnimationUtils.arraySlice( times, from, to );\n\t\t\tthis.values = AnimationUtils.arraySlice( this.values, from * stride, to * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n\tvalidate: function () {\n\n\t\tvar valid = true;\n\n\t\tvar valueSize = this.getValueSize();\n\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Invalid value size in track.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tvar times = this.times,\n\t\t\tvalues = this.values,\n\n\t\t\tnKeys = times.length;\n\n\t\tif ( nKeys === 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Track is empty.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tvar prevTime = null;\n\n\t\tfor ( var i = 0; i !== nKeys; i ++ ) {\n\n\t\t\tvar currTime = times[ i ];\n\n\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( prevTime !== null && prevTime > currTime ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tprevTime = currTime;\n\n\t\t}\n\n\t\tif ( values !== undefined ) {\n\n\t\t\tif ( AnimationUtils.isTypedArray( values ) ) {\n\n\t\t\t\tfor ( var i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\tvar value = values[ i ];\n\n\t\t\t\t\tif ( isNaN( value ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value );\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn valid;\n\n\t},\n\n\t// removes equivalent sequential keys as common in morph target sequences\n\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\toptimize: function () {\n\n\t\tvar times = this.times,\n\t\t\tvalues = this.values,\n\t\t\tstride = this.getValueSize(),\n\n\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\n\t\t\twriteIndex = 1,\n\t\t\tlastIndex = times.length - 1;\n\n\t\tfor ( var i = 1; i < lastIndex; ++ i ) {\n\n\t\t\tvar keep = false;\n\n\t\t\tvar time = times[ i ];\n\t\t\tvar timeNext = times[ i + 1 ];\n\n\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\tif ( time !== timeNext && ( i !== 1 || time !== time[ 0 ] ) ) {\n\n\t\t\t\tif ( ! smoothInterpolation ) {\n\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\n\t\t\t\t\tvar offset = i * stride,\n\t\t\t\t\t\toffsetP = offset - stride,\n\t\t\t\t\t\toffsetN = offset + stride;\n\n\t\t\t\t\tfor ( var j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvar value = values[ offset + j ];\n\n\t\t\t\t\t\tif ( value !== values[ offsetP + j ] ||\n\t\t\t\t\t\t\tvalue !== values[ offsetN + j ] ) {\n\n\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tkeep = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// in-place compaction\n\n\t\t\tif ( keep ) {\n\n\t\t\t\tif ( i !== writeIndex ) {\n\n\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\n\n\t\t\t\t\tvar readOffset = i * stride,\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\tfor ( var j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t++ writeIndex;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// flush last keyframe (compaction looks ahead)\n\n\t\tif ( lastIndex > 0 ) {\n\n\t\t\ttimes[ writeIndex ] = times[ lastIndex ];\n\n\t\t\tfor ( var readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t}\n\n\t\t\t++ writeIndex;\n\n\t\t}\n\n\t\tif ( writeIndex !== times.length ) {\n\n\t\t\tthis.times = AnimationUtils.arraySlice( times, 0, writeIndex );\n\t\t\tthis.values = AnimationUtils.arraySlice( values, 0, writeIndex * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n *\n * A Track of Boolean keyframe values.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction BooleanKeyframeTrack( name, times, values ) {\n\n\tKeyframeTrack.call( this, name, times, values );\n\n}\n\nBooleanKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: BooleanKeyframeTrack,\n\n\tValueTypeName: 'bool',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\tInterpolantFactoryMethodSmooth: undefined\n\n\t// Note: Actually this track could have a optimized / compressed\n\t// representation of a single value and a custom interpolant that\n\t// computes \"firstValue ^ isOdd( index )\".\n\n} );\n\n/**\n *\n * A Track of keyframe values that represent color.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction ColorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nColorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: ColorKeyframeTrack,\n\n\tValueTypeName: 'color'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n\t// Note: Very basic implementation and nothing special yet.\n\t// However, this is the place for color space parameterization.\n\n} );\n\n/**\n *\n * A Track of numeric keyframe values.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction NumberKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nNumberKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: NumberKeyframeTrack,\n\n\tValueTypeName: 'number'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\n/**\n * Spherical linear unit quaternion interpolant.\n *\n * @author tschw\n */\n\nfunction QuaternionLinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nQuaternionLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: QuaternionLinearInterpolant,\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset = i1 * stride,\n\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\tfor ( var end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\tQuaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n *\n * A Track of quaternion keyframe values.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction QuaternionKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nQuaternionKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: QuaternionKeyframeTrack,\n\n\tValueTypeName: 'quaternion',\n\n\t// ValueBufferType is inherited\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodLinear: function ( result ) {\n\n\t\treturn new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: undefined // not yet implemented\n\n} );\n\n/**\n *\n * A Track that interpolates Strings\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction StringKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nStringKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: StringKeyframeTrack,\n\n\tValueTypeName: 'string',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\n\tInterpolantFactoryMethodSmooth: undefined\n\n} );\n\n/**\n *\n * A Track of vectored keyframe values.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction VectorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nVectorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: VectorKeyframeTrack,\n\n\tValueTypeName: 'vector'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\n/**\n *\n * Reusable set of Tracks that represent an animation.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n */\n\nfunction AnimationClip( name, duration, tracks ) {\n\n\tthis.name = name;\n\tthis.tracks = tracks;\n\tthis.duration = ( duration !== undefined ) ? duration : - 1;\n\n\tthis.uuid = _Math.generateUUID();\n\n\t// this means it should figure out its duration by scanning the tracks\n\tif ( this.duration < 0 ) {\n\n\t\tthis.resetDuration();\n\n\t}\n\n}\n\nfunction getTrackTypeForValueTypeName( typeName ) {\n\n\tswitch ( typeName.toLowerCase() ) {\n\n\t\tcase 'scalar':\n\t\tcase 'double':\n\t\tcase 'float':\n\t\tcase 'number':\n\t\tcase 'integer':\n\n\t\t\treturn NumberKeyframeTrack;\n\n\t\tcase 'vector':\n\t\tcase 'vector2':\n\t\tcase 'vector3':\n\t\tcase 'vector4':\n\n\t\t\treturn VectorKeyframeTrack;\n\n\t\tcase 'color':\n\n\t\t\treturn ColorKeyframeTrack;\n\n\t\tcase 'quaternion':\n\n\t\t\treturn QuaternionKeyframeTrack;\n\n\t\tcase 'bool':\n\t\tcase 'boolean':\n\n\t\t\treturn BooleanKeyframeTrack;\n\n\t\tcase 'string':\n\n\t\t\treturn StringKeyframeTrack;\n\n\t}\n\n\tthrow new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName );\n\n}\n\nfunction parseKeyframeTrack( json ) {\n\n\tif ( json.type === undefined ) {\n\n\t\tthrow new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' );\n\n\t}\n\n\tvar trackType = getTrackTypeForValueTypeName( json.type );\n\n\tif ( json.times === undefined ) {\n\n\t\tvar times = [], values = [];\n\n\t\tAnimationUtils.flattenJSON( json.keys, times, values, 'value' );\n\n\t\tjson.times = times;\n\t\tjson.values = values;\n\n\t}\n\n\t// derived classes can define a static parse method\n\tif ( trackType.parse !== undefined ) {\n\n\t\treturn trackType.parse( json );\n\n\t} else {\n\n\t\t// by default, we assume a constructor compatible with the base\n\t\treturn new trackType( json.name, json.times, json.values, json.interpolation );\n\n\t}\n\n}\n\nObject.assign( AnimationClip, {\n\n\tparse: function ( json ) {\n\n\t\tvar tracks = [],\n\t\t\tjsonTracks = json.tracks,\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\tfor ( var i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t}\n\n\t\treturn new AnimationClip( json.name, json.duration, tracks );\n\n\t},\n\n\ttoJSON: function ( clip ) {\n\n\t\tvar tracks = [],\n\t\t\tclipTracks = clip.tracks;\n\n\t\tvar json = {\n\n\t\t\t'name': clip.name,\n\t\t\t'duration': clip.duration,\n\t\t\t'tracks': tracks,\n\t\t\t'uuid': clip.uuid\n\n\t\t};\n\n\t\tfor ( var i = 0, n = clipTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\n\n\t\t}\n\n\t\treturn json;\n\n\t},\n\n\tCreateFromMorphTargetSequence: function ( name, morphTargetSequence, fps, noLoop ) {\n\n\t\tvar numMorphTargets = morphTargetSequence.length;\n\t\tvar tracks = [];\n\n\t\tfor ( var i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\tvar times = [];\n\t\t\tvar values = [];\n\n\t\t\ttimes.push(\n\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\n\t\t\t\ti,\n\t\t\t\t( i + 1 ) % numMorphTargets );\n\n\t\t\tvalues.push( 0, 1, 0 );\n\n\t\t\tvar order = AnimationUtils.getKeyframeOrder( times );\n\t\t\ttimes = AnimationUtils.sortedArray( times, 1, order );\n\t\t\tvalues = AnimationUtils.sortedArray( values, 1, order );\n\n\t\t\t// if there is a key at the first frame, duplicate it as the\n\t\t\t// last frame as well for perfect loop.\n\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\n\n\t\t\t\ttimes.push( numMorphTargets );\n\t\t\t\tvalues.push( values[ 0 ] );\n\n\t\t\t}\n\n\t\t\ttracks.push(\n\t\t\t\tnew NumberKeyframeTrack(\n\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\n\t\t\t\t\ttimes, values\n\t\t\t\t).scale( 1.0 / fps ) );\n\n\t\t}\n\n\t\treturn new AnimationClip( name, - 1, tracks );\n\n\t},\n\n\tfindByName: function ( objectOrClipArray, name ) {\n\n\t\tvar clipArray = objectOrClipArray;\n\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\tvar o = objectOrClipArray;\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t}\n\n\t\tfor ( var i = 0; i < clipArray.length; i ++ ) {\n\n\t\t\tif ( clipArray[ i ].name === name ) {\n\n\t\t\t\treturn clipArray[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\tCreateClipsFromMorphTargetSequences: function ( morphTargets, fps, noLoop ) {\n\n\t\tvar animationToMorphTargets = {};\n\n\t\t// tested with https://regex101.com/ on trick sequences\n\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\t\tvar pattern = /^([\\w-]*?)([\\d]+)$/;\n\n\t\t// sort morph target names into animation groups based\n\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\t\tfor ( var i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tvar morphTarget = morphTargets[ i ];\n\t\t\tvar parts = morphTarget.name.match( pattern );\n\n\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\tvar name = parts[ 1 ];\n\n\t\t\t\tvar animationMorphTargets = animationToMorphTargets[ name ];\n\t\t\t\tif ( ! animationMorphTargets ) {\n\n\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\n\n\t\t\t\t}\n\n\t\t\t\tanimationMorphTargets.push( morphTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar clips = [];\n\n\t\tfor ( var name in animationToMorphTargets ) {\n\n\t\t\tclips.push( AnimationClip.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) );\n\n\t\t}\n\n\t\treturn clips;\n\n\t},\n\n\t// parse the animation.hierarchy format\n\tparseAnimation: function ( animation, bones ) {\n\n\t\tif ( ! animation ) {\n\n\t\t\tconsole.error( 'THREE.AnimationClip: No animation in JSONLoader data.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tvar addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) {\n\n\t\t\t// only return track if there are actually keys.\n\t\t\tif ( animationKeys.length !== 0 ) {\n\n\t\t\t\tvar times = [];\n\t\t\t\tvar values = [];\n\n\t\t\t\tAnimationUtils.flattenJSON( animationKeys, times, values, propertyName );\n\n\t\t\t\t// empty keys are filtered out, so check again\n\t\t\t\tif ( times.length !== 0 ) {\n\n\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tvar tracks = [];\n\n\t\tvar clipName = animation.name || 'default';\n\t\t// automatic length determination in AnimationClip.\n\t\tvar duration = animation.length || - 1;\n\t\tvar fps = animation.fps || 30;\n\n\t\tvar hierarchyTracks = animation.hierarchy || [];\n\n\t\tfor ( var h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\tvar animationKeys = hierarchyTracks[ h ].keys;\n\n\t\t\t// skip empty tracks\n\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\n\n\t\t\t// process morph targets\n\t\t\tif ( animationKeys[ 0 ].morphTargets ) {\n\n\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\tvar morphTargetNames = {};\n\n\t\t\t\tfor ( var k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\tif ( animationKeys[ k ].morphTargets ) {\n\n\t\t\t\t\t\tfor ( var m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) {\n\n\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// create a track for each morph target with all zero\n\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t// the morphTarget is named.\n\t\t\t\tfor ( var morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\tvar times = [];\n\t\t\t\t\tvar values = [];\n\n\t\t\t\t\tfor ( var m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\tvar animationKey = animationKeys[ k ];\n\n\t\t\t\t\t\ttimes.push( animationKey.time );\n\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\n\n\t\t\t\t}\n\n\t\t\t\tduration = morphTargetNames.length * ( fps || 1.0 );\n\n\t\t\t} else {\n\n\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\tvar boneName = '.bones[' + bones[ h ].name + ']';\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.position',\n\t\t\t\t\tanimationKeys, 'pos', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tQuaternionKeyframeTrack, boneName + '.quaternion',\n\t\t\t\t\tanimationKeys, 'rot', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.scale',\n\t\t\t\t\tanimationKeys, 'scl', tracks );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tracks.length === 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tvar clip = new AnimationClip( clipName, duration, tracks );\n\n\t\treturn clip;\n\n\t}\n\n} );\n\nObject.assign( AnimationClip.prototype, {\n\n\tresetDuration: function () {\n\n\t\tvar tracks = this.tracks, duration = 0;\n\n\t\tfor ( var i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\tvar track = this.tracks[ i ];\n\n\t\t\tduration = Math.max( duration, track.times[ track.times.length - 1 ] );\n\n\t\t}\n\n\t\tthis.duration = duration;\n\n\t\treturn this;\n\n\t},\n\n\ttrim: function () {\n\n\t\tfor ( var i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].trim( 0, this.duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tvalidate: function () {\n\n\t\tvar valid = true;\n\n\t\tfor ( var i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tvalid = valid && this.tracks[ i ].validate();\n\n\t\t}\n\n\t\treturn valid;\n\n\t},\n\n\toptimize: function () {\n\n\t\tfor ( var i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].optimize();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction MaterialLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\tthis.textures = {};\n\n}\n\nObject.assign( MaterialLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tsetTextures: function ( value ) {\n\n\t\tthis.textures = value;\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tvar textures = this.textures;\n\n\t\tfunction getTexture( name ) {\n\n\t\t\tif ( textures[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\n\n\t\t\t}\n\n\t\t\treturn textures[ name ];\n\n\t\t}\n\n\t\tvar material = new Materials[ json.type ]();\n\n\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\tif ( json.color !== undefined ) material.color.setHex( json.color );\n\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\tif ( json.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\n\t\tif ( json.clearCoat !== undefined ) material.clearCoat = json.clearCoat;\n\t\tif ( json.clearCoatRoughness !== undefined ) material.clearCoatRoughness = json.clearCoatRoughness;\n\t\tif ( json.uniforms !== undefined ) material.uniforms = json.uniforms;\n\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\t\tif ( json.vertexColors !== undefined ) material.vertexColors = json.vertexColors;\n\t\tif ( json.fog !== undefined ) material.fog = json.fog;\n\t\tif ( json.flatShading !== undefined ) material.flatShading = json.flatShading;\n\t\tif ( json.blending !== undefined ) material.blending = json.blending;\n\t\tif ( json.side !== undefined ) material.side = json.side;\n\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\n\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\n\t\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\n\t\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\n\t\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\n\t\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\n\t\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\n\t\tif ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;\n\t\tif ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;\n\n\t\tif ( json.rotation !== undefined ) material.rotation = json.rotation;\n\n\t\tif ( json.linewidth !== 1 ) material.linewidth = json.linewidth;\n\t\tif ( json.dashSize !== undefined ) material.dashSize = json.dashSize;\n\t\tif ( json.gapSize !== undefined ) material.gapSize = json.gapSize;\n\t\tif ( json.scale !== undefined ) material.scale = json.scale;\n\n\t\tif ( json.polygonOffset !== undefined ) material.polygonOffset = json.polygonOffset;\n\t\tif ( json.polygonOffsetFactor !== undefined ) material.polygonOffsetFactor = json.polygonOffsetFactor;\n\t\tif ( json.polygonOffsetUnits !== undefined ) material.polygonOffsetUnits = json.polygonOffsetUnits;\n\n\t\tif ( json.skinning !== undefined ) material.skinning = json.skinning;\n\t\tif ( json.morphTargets !== undefined ) material.morphTargets = json.morphTargets;\n\t\tif ( json.dithering !== undefined ) material.dithering = json.dithering;\n\n\t\tif ( json.visible !== undefined ) material.visible = json.visible;\n\t\tif ( json.userData !== undefined ) material.userData = json.userData;\n\n\t\t// Deprecated\n\n\t\tif ( json.shading !== undefined ) material.flatShading = json.shading === 1; // THREE.FlatShading\n\n\t\t// for PointsMaterial\n\n\t\tif ( json.size !== undefined ) material.size = json.size;\n\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\n\n\t\t// maps\n\n\t\tif ( json.map !== undefined ) material.map = getTexture( json.map );\n\n\t\tif ( json.alphaMap !== undefined ) {\n\n\t\t\tmaterial.alphaMap = getTexture( json.alphaMap );\n\t\t\tmaterial.transparent = true;\n\n\t\t}\n\n\t\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\n\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\n\n\t\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\n\t\tif ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType;\n\t\tif ( json.normalScale !== undefined ) {\n\n\t\t\tvar normalScale = json.normalScale;\n\n\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t}\n\n\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\n\n\t\t}\n\n\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\n\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\n\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\n\n\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\n\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\n\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\n\n\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\n\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\n\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\n\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\tif ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap );\n\n\t\treturn material;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction BufferGeometryLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( BufferGeometryLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tvar geometry = new BufferGeometry();\n\n\t\tvar index = json.data.index;\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tvar typedArray = new TYPED_ARRAYS[ index.type ]( index.array );\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t}\n\n\t\tvar attributes = json.data.attributes;\n\n\t\tfor ( var key in attributes ) {\n\n\t\t\tvar attribute = attributes[ key ];\n\t\t\tvar typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );\n\n\t\t\tgeometry.addAttribute( key, new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized ) );\n\n\t\t}\n\n\t\tvar groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\tif ( groups !== undefined ) {\n\n\t\t\tfor ( var i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\tvar group = groups[ i ];\n\n\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar boundingSphere = json.data.boundingSphere;\n\n\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\tvar center = new Vector3();\n\n\t\t\tif ( boundingSphere.center !== undefined ) {\n\n\t\t\t\tcenter.fromArray( boundingSphere.center );\n\n\t\t\t}\n\n\t\t\tgeometry.boundingSphere = new Sphere( center, boundingSphere.radius );\n\n\t\t}\n\n\t\treturn geometry;\n\n\t}\n\n} );\n\nvar TYPED_ARRAYS = {\n\tInt8Array: Int8Array,\n\tUint8Array: Uint8Array,\n\t// Workaround for IE11 pre KB2929437. See #11440\n\tUint8ClampedArray: typeof Uint8ClampedArray !== 'undefined' ? Uint8ClampedArray : Uint8Array,\n\tInt16Array: Int16Array,\n\tUint16Array: Uint16Array,\n\tInt32Array: Int32Array,\n\tUint32Array: Uint32Array,\n\tFloat32Array: Float32Array,\n\tFloat64Array: Float64Array\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Loader() {}\n\nLoader.Handlers = {\n\n\thandlers: [],\n\n\tadd: function ( regex, loader ) {\n\n\t\tthis.handlers.push( regex, loader );\n\n\t},\n\n\tget: function ( file ) {\n\n\t\tvar handlers = this.handlers;\n\n\t\tfor ( var i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\tvar regex = handlers[ i ];\n\t\t\tvar loader = handlers[ i + 1 ];\n\n\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\treturn loader;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n};\n\nObject.assign( Loader.prototype, {\n\n\tcrossOrigin: 'anonymous',\n\n\tonLoadStart: function () {},\n\n\tonLoadProgress: function () {},\n\n\tonLoadComplete: function () {},\n\n\tinitMaterials: function ( materials, texturePath, crossOrigin ) {\n\n\t\tvar array = [];\n\n\t\tfor ( var i = 0; i < materials.length; ++ i ) {\n\n\t\t\tarray[ i ] = this.createMaterial( materials[ i ], texturePath, crossOrigin );\n\n\t\t}\n\n\t\treturn array;\n\n\t},\n\n\tcreateMaterial: ( function () {\n\n\t\tvar BlendingMode = {\n\t\t\tNoBlending: NoBlending,\n\t\t\tNormalBlending: NormalBlending,\n\t\t\tAdditiveBlending: AdditiveBlending,\n\t\t\tSubtractiveBlending: SubtractiveBlending,\n\t\t\tMultiplyBlending: MultiplyBlending,\n\t\t\tCustomBlending: CustomBlending\n\t\t};\n\n\t\tvar color = new Color();\n\t\tvar textureLoader = new TextureLoader();\n\t\tvar materialLoader = new MaterialLoader();\n\n\t\treturn function createMaterial( m, texturePath, crossOrigin ) {\n\n\t\t\t// convert from old material format\n\n\t\t\tvar textures = {};\n\n\t\t\tfunction loadTexture( path, repeat, offset, wrap, anisotropy ) {\n\n\t\t\t\tvar fullPath = texturePath + path;\n\t\t\t\tvar loader = Loader.Handlers.get( fullPath );\n\n\t\t\t\tvar texture;\n\n\t\t\t\tif ( loader !== null ) {\n\n\t\t\t\t\ttexture = loader.load( fullPath );\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttextureLoader.setCrossOrigin( crossOrigin );\n\t\t\t\t\ttexture = textureLoader.load( fullPath );\n\n\t\t\t\t}\n\n\t\t\t\tif ( repeat !== undefined ) {\n\n\t\t\t\t\ttexture.repeat.fromArray( repeat );\n\n\t\t\t\t\tif ( repeat[ 0 ] !== 1 ) texture.wrapS = RepeatWrapping;\n\t\t\t\t\tif ( repeat[ 1 ] !== 1 ) texture.wrapT = RepeatWrapping;\n\n\t\t\t\t}\n\n\t\t\t\tif ( offset !== undefined ) {\n\n\t\t\t\t\ttexture.offset.fromArray( offset );\n\n\t\t\t\t}\n\n\t\t\t\tif ( wrap !== undefined ) {\n\n\t\t\t\t\tif ( wrap[ 0 ] === 'repeat' ) texture.wrapS = RepeatWrapping;\n\t\t\t\t\tif ( wrap[ 0 ] === 'mirror' ) texture.wrapS = MirroredRepeatWrapping;\n\n\t\t\t\t\tif ( wrap[ 1 ] === 'repeat' ) texture.wrapT = RepeatWrapping;\n\t\t\t\t\tif ( wrap[ 1 ] === 'mirror' ) texture.wrapT = MirroredRepeatWrapping;\n\n\t\t\t\t}\n\n\t\t\t\tif ( anisotropy !== undefined ) {\n\n\t\t\t\t\ttexture.anisotropy = anisotropy;\n\n\t\t\t\t}\n\n\t\t\t\tvar uuid = _Math.generateUUID();\n\n\t\t\t\ttextures[ uuid ] = texture;\n\n\t\t\t\treturn uuid;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tvar json = {\n\t\t\t\tuuid: _Math.generateUUID(),\n\t\t\t\ttype: 'MeshLambertMaterial'\n\t\t\t};\n\n\t\t\tfor ( var name in m ) {\n\n\t\t\t\tvar value = m[ name ];\n\n\t\t\t\tswitch ( name ) {\n\n\t\t\t\t\tcase 'DbgColor':\n\t\t\t\t\tcase 'DbgIndex':\n\t\t\t\t\tcase 'opticalDensity':\n\t\t\t\t\tcase 'illumination':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'DbgName':\n\t\t\t\t\t\tjson.name = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'blending':\n\t\t\t\t\t\tjson.blending = BlendingMode[ value ];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'colorAmbient':\n\t\t\t\t\tcase 'mapAmbient':\n\t\t\t\t\t\tconsole.warn( 'THREE.Loader.createMaterial:', name, 'is no longer supported.' );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'colorDiffuse':\n\t\t\t\t\t\tjson.color = color.fromArray( value ).getHex();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'colorSpecular':\n\t\t\t\t\t\tjson.specular = color.fromArray( value ).getHex();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'colorEmissive':\n\t\t\t\t\t\tjson.emissive = color.fromArray( value ).getHex();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'specularCoef':\n\t\t\t\t\t\tjson.shininess = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'shading':\n\t\t\t\t\t\tif ( value.toLowerCase() === 'basic' ) json.type = 'MeshBasicMaterial';\n\t\t\t\t\t\tif ( value.toLowerCase() === 'phong' ) json.type = 'MeshPhongMaterial';\n\t\t\t\t\t\tif ( value.toLowerCase() === 'standard' ) json.type = 'MeshStandardMaterial';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapDiffuse':\n\t\t\t\t\t\tjson.map = loadTexture( value, m.mapDiffuseRepeat, m.mapDiffuseOffset, m.mapDiffuseWrap, m.mapDiffuseAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapDiffuseRepeat':\n\t\t\t\t\tcase 'mapDiffuseOffset':\n\t\t\t\t\tcase 'mapDiffuseWrap':\n\t\t\t\t\tcase 'mapDiffuseAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapEmissive':\n\t\t\t\t\t\tjson.emissiveMap = loadTexture( value, m.mapEmissiveRepeat, m.mapEmissiveOffset, m.mapEmissiveWrap, m.mapEmissiveAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapEmissiveRepeat':\n\t\t\t\t\tcase 'mapEmissiveOffset':\n\t\t\t\t\tcase 'mapEmissiveWrap':\n\t\t\t\t\tcase 'mapEmissiveAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapLight':\n\t\t\t\t\t\tjson.lightMap = loadTexture( value, m.mapLightRepeat, m.mapLightOffset, m.mapLightWrap, m.mapLightAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapLightRepeat':\n\t\t\t\t\tcase 'mapLightOffset':\n\t\t\t\t\tcase 'mapLightWrap':\n\t\t\t\t\tcase 'mapLightAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapAO':\n\t\t\t\t\t\tjson.aoMap = loadTexture( value, m.mapAORepeat, m.mapAOOffset, m.mapAOWrap, m.mapAOAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapAORepeat':\n\t\t\t\t\tcase 'mapAOOffset':\n\t\t\t\t\tcase 'mapAOWrap':\n\t\t\t\t\tcase 'mapAOAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapBump':\n\t\t\t\t\t\tjson.bumpMap = loadTexture( value, m.mapBumpRepeat, m.mapBumpOffset, m.mapBumpWrap, m.mapBumpAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapBumpScale':\n\t\t\t\t\t\tjson.bumpScale = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapBumpRepeat':\n\t\t\t\t\tcase 'mapBumpOffset':\n\t\t\t\t\tcase 'mapBumpWrap':\n\t\t\t\t\tcase 'mapBumpAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapNormal':\n\t\t\t\t\t\tjson.normalMap = loadTexture( value, m.mapNormalRepeat, m.mapNormalOffset, m.mapNormalWrap, m.mapNormalAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapNormalFactor':\n\t\t\t\t\t\tjson.normalScale = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapNormalRepeat':\n\t\t\t\t\tcase 'mapNormalOffset':\n\t\t\t\t\tcase 'mapNormalWrap':\n\t\t\t\t\tcase 'mapNormalAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapSpecular':\n\t\t\t\t\t\tjson.specularMap = loadTexture( value, m.mapSpecularRepeat, m.mapSpecularOffset, m.mapSpecularWrap, m.mapSpecularAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapSpecularRepeat':\n\t\t\t\t\tcase 'mapSpecularOffset':\n\t\t\t\t\tcase 'mapSpecularWrap':\n\t\t\t\t\tcase 'mapSpecularAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapMetalness':\n\t\t\t\t\t\tjson.metalnessMap = loadTexture( value, m.mapMetalnessRepeat, m.mapMetalnessOffset, m.mapMetalnessWrap, m.mapMetalnessAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapMetalnessRepeat':\n\t\t\t\t\tcase 'mapMetalnessOffset':\n\t\t\t\t\tcase 'mapMetalnessWrap':\n\t\t\t\t\tcase 'mapMetalnessAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapRoughness':\n\t\t\t\t\t\tjson.roughnessMap = loadTexture( value, m.mapRoughnessRepeat, m.mapRoughnessOffset, m.mapRoughnessWrap, m.mapRoughnessAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapRoughnessRepeat':\n\t\t\t\t\tcase 'mapRoughnessOffset':\n\t\t\t\t\tcase 'mapRoughnessWrap':\n\t\t\t\t\tcase 'mapRoughnessAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapAlpha':\n\t\t\t\t\t\tjson.alphaMap = loadTexture( value, m.mapAlphaRepeat, m.mapAlphaOffset, m.mapAlphaWrap, m.mapAlphaAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapAlphaRepeat':\n\t\t\t\t\tcase 'mapAlphaOffset':\n\t\t\t\t\tcase 'mapAlphaWrap':\n\t\t\t\t\tcase 'mapAlphaAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'flipSided':\n\t\t\t\t\t\tjson.side = BackSide;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'doubleSided':\n\t\t\t\t\t\tjson.side = DoubleSide;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'transparency':\n\t\t\t\t\t\tconsole.warn( 'THREE.Loader.createMaterial: transparency has been renamed to opacity' );\n\t\t\t\t\t\tjson.opacity = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'depthTest':\n\t\t\t\t\tcase 'depthWrite':\n\t\t\t\t\tcase 'colorWrite':\n\t\t\t\t\tcase 'opacity':\n\t\t\t\t\tcase 'reflectivity':\n\t\t\t\t\tcase 'transparent':\n\t\t\t\t\tcase 'visible':\n\t\t\t\t\tcase 'wireframe':\n\t\t\t\t\t\tjson[ name ] = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'vertexColors':\n\t\t\t\t\t\tif ( value === true ) json.vertexColors = VertexColors;\n\t\t\t\t\t\tif ( value === 'face' ) json.vertexColors = FaceColors;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.error( 'THREE.Loader.createMaterial: Unsupported', name, value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( json.type === 'MeshBasicMaterial' ) delete json.emissive;\n\t\t\tif ( json.type !== 'MeshPhongMaterial' ) delete json.specular;\n\n\t\t\tif ( json.opacity < 1 ) json.transparent = true;\n\n\t\t\tmaterialLoader.setTextures( textures );\n\n\t\t\treturn materialLoader.parse( json );\n\n\t\t};\n\n\t} )()\n\n} );\n\n/**\n * @author Don McCurdy / https://www.donmccurdy.com\n */\n\nvar LoaderUtils = {\n\n\tdecodeText: function ( array ) {\n\n\t\tif ( typeof TextDecoder !== 'undefined' ) {\n\n\t\t\treturn new TextDecoder().decode( array );\n\n\t\t}\n\n\t\t// Avoid the String.fromCharCode.apply(null, array) shortcut, which\n\t\t// throws a \"maximum call stack size exceeded\" error for large arrays.\n\n\t\tvar s = '';\n\n\t\tfor ( var i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t// Implicitly assumes little-endian.\n\t\t\ts += String.fromCharCode( array[ i ] );\n\n\t\t}\n\n\t\t// Merges multi-byte utf-8 characters.\n\t\treturn decodeURIComponent( escape( s ) );\n\n\t},\n\n\textractUrlBase: function ( url ) {\n\n\t\tvar index = url.lastIndexOf( '/' );\n\n\t\tif ( index === - 1 ) return './';\n\n\t\treturn url.substr( 0, index + 1 );\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction JSONLoader( manager ) {\n\n\tif ( typeof manager === 'boolean' ) {\n\n\t\tconsole.warn( 'THREE.JSONLoader: showStatus parameter has been removed from constructor.' );\n\t\tmanager = undefined;\n\n\t}\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\tthis.withCredentials = false;\n\n}\n\nObject.assign( JSONLoader.prototype, {\n\n\tcrossOrigin: 'anonymous',\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar texturePath = this.texturePath && ( typeof this.texturePath === 'string' ) ? this.texturePath : LoaderUtils.extractUrlBase( url );\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tvar json = JSON.parse( text );\n\t\t\tvar metadata = json.metadata;\n\n\t\t\tif ( metadata !== undefined ) {\n\n\t\t\t\tvar type = metadata.type;\n\n\t\t\t\tif ( type !== undefined ) {\n\n\t\t\t\t\tif ( type.toLowerCase() === 'object' ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.JSONLoader: ' + url + ' should be loaded with THREE.ObjectLoader instead.' );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar object = scope.parse( json, texturePath );\n\t\t\tonLoad( object.geometry, object.materials );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tsetCrossOrigin: function ( value ) {\n\n\t\tthis.crossOrigin = value;\n\t\treturn this;\n\n\t},\n\n\tsetTexturePath: function ( value ) {\n\n\t\tthis.texturePath = value;\n\t\treturn this;\n\n\t},\n\n\tparse: ( function () {\n\n\t\tfunction parseModel( json, geometry ) {\n\n\t\t\tfunction isBitSet( value, position ) {\n\n\t\t\t\treturn value & ( 1 << position );\n\n\t\t\t}\n\n\t\t\tvar i, j, fi,\n\n\t\t\t\toffset, zLength,\n\n\t\t\t\tcolorIndex, normalIndex, uvIndex, materialIndex,\n\n\t\t\t\ttype,\n\t\t\t\tisQuad,\n\t\t\t\thasMaterial,\n\t\t\t\thasFaceVertexUv,\n\t\t\t\thasFaceNormal, hasFaceVertexNormal,\n\t\t\t\thasFaceColor, hasFaceVertexColor,\n\n\t\t\t\tvertex, face, faceA, faceB, hex, normal,\n\n\t\t\t\tuvLayer, uv, u, v,\n\n\t\t\t\tfaces = json.faces,\n\t\t\t\tvertices = json.vertices,\n\t\t\t\tnormals = json.normals,\n\t\t\t\tcolors = json.colors,\n\n\t\t\t\tscale = json.scale,\n\n\t\t\t\tnUvLayers = 0;\n\n\n\t\t\tif ( json.uvs !== undefined ) {\n\n\t\t\t\t// disregard empty arrays\n\n\t\t\t\tfor ( i = 0; i < json.uvs.length; i ++ ) {\n\n\t\t\t\t\tif ( json.uvs[ i ].length ) nUvLayers ++;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( i = 0; i < nUvLayers; i ++ ) {\n\n\t\t\t\t\tgeometry.faceVertexUvs[ i ] = [];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\toffset = 0;\n\t\t\tzLength = vertices.length;\n\n\t\t\twhile ( offset < zLength ) {\n\n\t\t\t\tvertex = new Vector3();\n\n\t\t\t\tvertex.x = vertices[ offset ++ ] * scale;\n\t\t\t\tvertex.y = vertices[ offset ++ ] * scale;\n\t\t\t\tvertex.z = vertices[ offset ++ ] * scale;\n\n\t\t\t\tgeometry.vertices.push( vertex );\n\n\t\t\t}\n\n\t\t\toffset = 0;\n\t\t\tzLength = faces.length;\n\n\t\t\twhile ( offset < zLength ) {\n\n\t\t\t\ttype = faces[ offset ++ ];\n\n\t\t\t\tisQuad = isBitSet( type, 0 );\n\t\t\t\thasMaterial = isBitSet( type, 1 );\n\t\t\t\thasFaceVertexUv = isBitSet( type, 3 );\n\t\t\t\thasFaceNormal = isBitSet( type, 4 );\n\t\t\t\thasFaceVertexNormal = isBitSet( type, 5 );\n\t\t\t\thasFaceColor = isBitSet( type, 6 );\n\t\t\t\thasFaceVertexColor = isBitSet( type, 7 );\n\n\t\t\t\t// console.log(\"type\", type, \"bits\", isQuad, hasMaterial, hasFaceVertexUv, hasFaceNormal, hasFaceVertexNormal, hasFaceColor, hasFaceVertexColor);\n\n\t\t\t\tif ( isQuad ) {\n\n\t\t\t\t\tfaceA = new Face3();\n\t\t\t\t\tfaceA.a = faces[ offset ];\n\t\t\t\t\tfaceA.b = faces[ offset + 1 ];\n\t\t\t\t\tfaceA.c = faces[ offset + 3 ];\n\n\t\t\t\t\tfaceB = new Face3();\n\t\t\t\t\tfaceB.a = faces[ offset + 1 ];\n\t\t\t\t\tfaceB.b = faces[ offset + 2 ];\n\t\t\t\t\tfaceB.c = faces[ offset + 3 ];\n\n\t\t\t\t\toffset += 4;\n\n\t\t\t\t\tif ( hasMaterial ) {\n\n\t\t\t\t\t\tmaterialIndex = faces[ offset ++ ];\n\t\t\t\t\t\tfaceA.materialIndex = materialIndex;\n\t\t\t\t\t\tfaceB.materialIndex = materialIndex;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// to get face <=> uv index correspondence\n\n\t\t\t\t\tfi = geometry.faces.length;\n\n\t\t\t\t\tif ( hasFaceVertexUv ) {\n\n\t\t\t\t\t\tfor ( i = 0; i < nUvLayers; i ++ ) {\n\n\t\t\t\t\t\t\tuvLayer = json.uvs[ i ];\n\n\t\t\t\t\t\t\tgeometry.faceVertexUvs[ i ][ fi ] = [];\n\t\t\t\t\t\t\tgeometry.faceVertexUvs[ i ][ fi + 1 ] = [];\n\n\t\t\t\t\t\t\tfor ( j = 0; j < 4; j ++ ) {\n\n\t\t\t\t\t\t\t\tuvIndex = faces[ offset ++ ];\n\n\t\t\t\t\t\t\t\tu = uvLayer[ uvIndex * 2 ];\n\t\t\t\t\t\t\t\tv = uvLayer[ uvIndex * 2 + 1 ];\n\n\t\t\t\t\t\t\t\tuv = new Vector2( u, v );\n\n\t\t\t\t\t\t\t\tif ( j !== 2 ) geometry.faceVertexUvs[ i ][ fi ].push( uv );\n\t\t\t\t\t\t\t\tif ( j !== 0 ) geometry.faceVertexUvs[ i ][ fi + 1 ].push( uv );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hasFaceNormal ) {\n\n\t\t\t\t\t\tnormalIndex = faces[ offset ++ ] * 3;\n\n\t\t\t\t\t\tfaceA.normal.set(\n\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\tnormals[ normalIndex ]\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tfaceB.normal.copy( faceA.normal );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hasFaceVertexNormal ) {\n\n\t\t\t\t\t\tfor ( i = 0; i < 4; i ++ ) {\n\n\t\t\t\t\t\t\tnormalIndex = faces[ offset ++ ] * 3;\n\n\t\t\t\t\t\t\tnormal = new Vector3(\n\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\tnormals[ normalIndex ]\n\t\t\t\t\t\t\t);\n\n\n\t\t\t\t\t\t\tif ( i !== 2 ) faceA.vertexNormals.push( normal );\n\t\t\t\t\t\t\tif ( i !== 0 ) faceB.vertexNormals.push( normal );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\n\t\t\t\t\tif ( hasFaceColor ) {\n\n\t\t\t\t\t\tcolorIndex = faces[ offset ++ ];\n\t\t\t\t\t\thex = colors[ colorIndex ];\n\n\t\t\t\t\t\tfaceA.color.setHex( hex );\n\t\t\t\t\t\tfaceB.color.setHex( hex );\n\n\t\t\t\t\t}\n\n\n\t\t\t\t\tif ( hasFaceVertexColor ) {\n\n\t\t\t\t\t\tfor ( i = 0; i < 4; i ++ ) {\n\n\t\t\t\t\t\t\tcolorIndex = faces[ offset ++ ];\n\t\t\t\t\t\t\thex = colors[ colorIndex ];\n\n\t\t\t\t\t\t\tif ( i !== 2 ) faceA.vertexColors.push( new Color( hex ) );\n\t\t\t\t\t\t\tif ( i !== 0 ) faceB.vertexColors.push( new Color( hex ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgeometry.faces.push( faceA );\n\t\t\t\t\tgeometry.faces.push( faceB );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tface = new Face3();\n\t\t\t\t\tface.a = faces[ offset ++ ];\n\t\t\t\t\tface.b = faces[ offset ++ ];\n\t\t\t\t\tface.c = faces[ offset ++ ];\n\n\t\t\t\t\tif ( hasMaterial ) {\n\n\t\t\t\t\t\tmaterialIndex = faces[ offset ++ ];\n\t\t\t\t\t\tface.materialIndex = materialIndex;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// to get face <=> uv index correspondence\n\n\t\t\t\t\tfi = geometry.faces.length;\n\n\t\t\t\t\tif ( hasFaceVertexUv ) {\n\n\t\t\t\t\t\tfor ( i = 0; i < nUvLayers; i ++ ) {\n\n\t\t\t\t\t\t\tuvLayer = json.uvs[ i ];\n\n\t\t\t\t\t\t\tgeometry.faceVertexUvs[ i ][ fi ] = [];\n\n\t\t\t\t\t\t\tfor ( j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t\t\tuvIndex = faces[ offset ++ ];\n\n\t\t\t\t\t\t\t\tu = uvLayer[ uvIndex * 2 ];\n\t\t\t\t\t\t\t\tv = uvLayer[ uvIndex * 2 + 1 ];\n\n\t\t\t\t\t\t\t\tuv = new Vector2( u, v );\n\n\t\t\t\t\t\t\t\tgeometry.faceVertexUvs[ i ][ fi ].push( uv );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hasFaceNormal ) {\n\n\t\t\t\t\t\tnormalIndex = faces[ offset ++ ] * 3;\n\n\t\t\t\t\t\tface.normal.set(\n\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\tnormals[ normalIndex ]\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hasFaceVertexNormal ) {\n\n\t\t\t\t\t\tfor ( i = 0; i < 3; i ++ ) {\n\n\t\t\t\t\t\t\tnormalIndex = faces[ offset ++ ] * 3;\n\n\t\t\t\t\t\t\tnormal = new Vector3(\n\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\tnormals[ normalIndex ]\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tface.vertexNormals.push( normal );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\n\t\t\t\t\tif ( hasFaceColor ) {\n\n\t\t\t\t\t\tcolorIndex = faces[ offset ++ ];\n\t\t\t\t\t\tface.color.setHex( colors[ colorIndex ] );\n\n\t\t\t\t\t}\n\n\n\t\t\t\t\tif ( hasFaceVertexColor ) {\n\n\t\t\t\t\t\tfor ( i = 0; i < 3; i ++ ) {\n\n\t\t\t\t\t\t\tcolorIndex = faces[ offset ++ ];\n\t\t\t\t\t\t\tface.vertexColors.push( new Color( colors[ colorIndex ] ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgeometry.faces.push( face );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseSkin( json, geometry ) {\n\n\t\t\tvar influencesPerVertex = ( json.influencesPerVertex !== undefined ) ? json.influencesPerVertex : 2;\n\n\t\t\tif ( json.skinWeights ) {\n\n\t\t\t\tfor ( var i = 0, l = json.skinWeights.length; i < l; i += influencesPerVertex ) {\n\n\t\t\t\t\tvar x = json.skinWeights[ i ];\n\t\t\t\t\tvar y = ( influencesPerVertex > 1 ) ? json.skinWeights[ i + 1 ] : 0;\n\t\t\t\t\tvar z = ( influencesPerVertex > 2 ) ? json.skinWeights[ i + 2 ] : 0;\n\t\t\t\t\tvar w = ( influencesPerVertex > 3 ) ? json.skinWeights[ i + 3 ] : 0;\n\n\t\t\t\t\tgeometry.skinWeights.push( new Vector4( x, y, z, w ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( json.skinIndices ) {\n\n\t\t\t\tfor ( var i = 0, l = json.skinIndices.length; i < l; i += influencesPerVertex ) {\n\n\t\t\t\t\tvar a = json.skinIndices[ i ];\n\t\t\t\t\tvar b = ( influencesPerVertex > 1 ) ? json.skinIndices[ i + 1 ] : 0;\n\t\t\t\t\tvar c = ( influencesPerVertex > 2 ) ? json.skinIndices[ i + 2 ] : 0;\n\t\t\t\t\tvar d = ( influencesPerVertex > 3 ) ? json.skinIndices[ i + 3 ] : 0;\n\n\t\t\t\t\tgeometry.skinIndices.push( new Vector4( a, b, c, d ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tgeometry.bones = json.bones;\n\n\t\t\tif ( geometry.bones && geometry.bones.length > 0 && ( geometry.skinWeights.length !== geometry.skinIndices.length || geometry.skinIndices.length !== geometry.vertices.length ) ) {\n\n\t\t\t\tconsole.warn( 'When skinning, number of vertices (' + geometry.vertices.length + '), skinIndices (' +\n\t\t\t\t\tgeometry.skinIndices.length + '), and skinWeights (' + geometry.skinWeights.length + ') should match.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseMorphing( json, geometry ) {\n\n\t\t\tvar scale = json.scale;\n\n\t\t\tif ( json.morphTargets !== undefined ) {\n\n\t\t\t\tfor ( var i = 0, l = json.morphTargets.length; i < l; i ++ ) {\n\n\t\t\t\t\tgeometry.morphTargets[ i ] = {};\n\t\t\t\t\tgeometry.morphTargets[ i ].name = json.morphTargets[ i ].name;\n\t\t\t\t\tgeometry.morphTargets[ i ].vertices = [];\n\n\t\t\t\t\tvar dstVertices = geometry.morphTargets[ i ].vertices;\n\t\t\t\t\tvar srcVertices = json.morphTargets[ i ].vertices;\n\n\t\t\t\t\tfor ( var v = 0, vl = srcVertices.length; v < vl; v += 3 ) {\n\n\t\t\t\t\t\tvar vertex = new Vector3();\n\t\t\t\t\t\tvertex.x = srcVertices[ v ] * scale;\n\t\t\t\t\t\tvertex.y = srcVertices[ v + 1 ] * scale;\n\t\t\t\t\t\tvertex.z = srcVertices[ v + 2 ] * scale;\n\n\t\t\t\t\t\tdstVertices.push( vertex );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( json.morphColors !== undefined && json.morphColors.length > 0 ) {\n\n\t\t\t\tconsole.warn( 'THREE.JSONLoader: \"morphColors\" no longer supported. Using them as face colors.' );\n\n\t\t\t\tvar faces = geometry.faces;\n\t\t\t\tvar morphColors = json.morphColors[ 0 ].colors;\n\n\t\t\t\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\t\tfaces[ i ].color.fromArray( morphColors, i * 3 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction parseAnimations( json, geometry ) {\n\n\t\t\tvar outputAnimations = [];\n\n\t\t\t// parse old style Bone/Hierarchy animations\n\t\t\tvar animations = [];\n\n\t\t\tif ( json.animation !== undefined ) {\n\n\t\t\t\tanimations.push( json.animation );\n\n\t\t\t}\n\n\t\t\tif ( json.animations !== undefined ) {\n\n\t\t\t\tif ( json.animations.length ) {\n\n\t\t\t\t\tanimations = animations.concat( json.animations );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tanimations.push( json.animations );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfor ( var i = 0; i < animations.length; i ++ ) {\n\n\t\t\t\tvar clip = AnimationClip.parseAnimation( animations[ i ], geometry.bones );\n\t\t\t\tif ( clip ) outputAnimations.push( clip );\n\n\t\t\t}\n\n\t\t\t// parse implicit morph animations\n\t\t\tif ( geometry.morphTargets ) {\n\n\t\t\t\t// TODO: Figure out what an appropraite FPS is for morph target animations -- defaulting to 10, but really it is completely arbitrary.\n\t\t\t\tvar morphAnimationClips = AnimationClip.CreateClipsFromMorphTargetSequences( geometry.morphTargets, 10 );\n\t\t\t\toutputAnimations = outputAnimations.concat( morphAnimationClips );\n\n\t\t\t}\n\n\t\t\tif ( outputAnimations.length > 0 ) geometry.animations = outputAnimations;\n\n\t\t}\n\n\t\treturn function parse( json, texturePath ) {\n\n\t\t\tif ( json.data !== undefined ) {\n\n\t\t\t\t// Geometry 4.0 spec\n\t\t\t\tjson = json.data;\n\n\t\t\t}\n\n\t\t\tif ( json.scale !== undefined ) {\n\n\t\t\t\tjson.scale = 1.0 / json.scale;\n\n\t\t\t} else {\n\n\t\t\t\tjson.scale = 1.0;\n\n\t\t\t}\n\n\t\t\tvar geometry = new Geometry();\n\n\t\t\tparseModel( json, geometry );\n\t\t\tparseSkin( json, geometry );\n\t\t\tparseMorphing( json, geometry );\n\t\t\tparseAnimations( json, geometry );\n\n\t\t\tgeometry.computeFaceNormals();\n\t\t\tgeometry.computeBoundingSphere();\n\n\t\t\tif ( json.materials === undefined || json.materials.length === 0 ) {\n\n\t\t\t\treturn { geometry: geometry };\n\n\t\t\t} else {\n\n\t\t\t\tvar materials = Loader.prototype.initMaterials( json.materials, texturePath, this.crossOrigin );\n\n\t\t\t\treturn { geometry: geometry, materials: materials };\n\n\t\t\t}\n\n\t\t};\n\n\t} )()\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ObjectLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\tthis.texturePath = '';\n\n}\n\nObject.assign( ObjectLoader.prototype, {\n\n\tcrossOrigin: 'anonymous',\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( this.texturePath === '' ) {\n\n\t\t\tthis.texturePath = url.substring( 0, url.lastIndexOf( '/' ) + 1 );\n\n\t\t}\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tvar json = null;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( error );\n\n\t\t\t\tconsole.error( 'THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tvar metadata = json.metadata;\n\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url + '. Use THREE.JSONLoader instead.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tscope.parse( json, onLoad );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tsetTexturePath: function ( value ) {\n\n\t\tthis.texturePath = value;\n\t\treturn this;\n\n\t},\n\n\tsetCrossOrigin: function ( value ) {\n\n\t\tthis.crossOrigin = value;\n\t\treturn this;\n\n\t},\n\n\tparse: function ( json, onLoad ) {\n\n\t\tvar shapes = this.parseShape( json.shapes );\n\t\tvar geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tvar images = this.parseImages( json.images, function () {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t} );\n\n\t\tvar textures = this.parseTextures( json.textures, images );\n\t\tvar materials = this.parseMaterials( json.materials, textures );\n\n\t\tvar object = this.parseObject( json.object, geometries, materials );\n\n\t\tif ( json.animations ) {\n\n\t\t\tobject.animations = this.parseAnimations( json.animations );\n\n\t\t}\n\n\t\tif ( json.images === undefined || json.images.length === 0 ) {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t},\n\n\tparseShape: function ( json ) {\n\n\t\tvar shapes = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar shape = new Shape().fromJSON( json[ i ] );\n\n\t\t\t\tshapes[ shape.uuid ] = shape;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn shapes;\n\n\t},\n\n\tparseGeometries: function ( json, shapes ) {\n\n\t\tvar geometries = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tvar geometryLoader = new JSONLoader();\n\t\t\tvar bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar geometry;\n\t\t\t\tvar data = json[ i ];\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase 'PlaneGeometry':\n\t\t\t\t\tcase 'PlaneBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BoxGeometry':\n\t\t\t\t\tcase 'BoxBufferGeometry':\n\t\t\t\t\tcase 'CubeGeometry': // backwards compatible\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.depth,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.depthSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CircleGeometry':\n\t\t\t\t\tcase 'CircleBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CylinderGeometry':\n\t\t\t\t\tcase 'CylinderBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radiusTop,\n\t\t\t\t\t\t\tdata.radiusBottom,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ConeGeometry':\n\t\t\t\t\tcase 'ConeBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'SphereGeometry':\n\t\t\t\t\tcase 'SphereBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'DodecahedronGeometry':\n\t\t\t\t\tcase 'DodecahedronBufferGeometry':\n\t\t\t\t\tcase 'IcosahedronGeometry':\n\t\t\t\t\tcase 'IcosahedronBufferGeometry':\n\t\t\t\t\tcase 'OctahedronGeometry':\n\t\t\t\t\tcase 'OctahedronBufferGeometry':\n\t\t\t\t\tcase 'TetrahedronGeometry':\n\t\t\t\t\tcase 'TetrahedronBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.detail\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'RingGeometry':\n\t\t\t\t\tcase 'RingBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.innerRadius,\n\t\t\t\t\t\t\tdata.outerRadius,\n\t\t\t\t\t\t\tdata.thetaSegments,\n\t\t\t\t\t\t\tdata.phiSegments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusGeometry':\n\t\t\t\t\tcase 'TorusBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.arc\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusKnotGeometry':\n\t\t\t\t\tcase 'TorusKnotBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.p,\n\t\t\t\t\t\t\tdata.q\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'LatheGeometry':\n\t\t\t\t\tcase 'LatheBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.points,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'PolyhedronGeometry':\n\t\t\t\t\tcase 'PolyhedronBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.vertices,\n\t\t\t\t\t\t\tdata.indices,\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.details\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ShapeGeometry':\n\t\t\t\t\tcase 'ShapeBufferGeometry':\n\n\t\t\t\t\t\tvar geometryShapes = [];\n\n\t\t\t\t\t\tfor ( var j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tvar shape = shapes[ data.shapes[ j ] ];\n\n\t\t\t\t\t\t\tgeometryShapes.push( shape );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tgeometryShapes,\n\t\t\t\t\t\t\tdata.curveSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\n\t\t\t\t\tcase 'ExtrudeGeometry':\n\t\t\t\t\tcase 'ExtrudeBufferGeometry':\n\n\t\t\t\t\t\tvar geometryShapes = [];\n\n\t\t\t\t\t\tfor ( var j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tvar shape = shapes[ data.shapes[ j ] ];\n\n\t\t\t\t\t\t\tgeometryShapes.push( shape );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar extrudePath = data.options.extrudePath;\n\n\t\t\t\t\t\tif ( extrudePath !== undefined ) {\n\n\t\t\t\t\t\t\tdata.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tgeometryShapes,\n\t\t\t\t\t\t\tdata.options\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BufferGeometry':\n\n\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Geometry':\n\n\t\t\t\t\t\tgeometry = geometryLoader.parse( data, this.texturePath ).geometry;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Unsupported geometry type \"' + data.type + '\"' );\n\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\t\t\t\tif ( geometry.isBufferGeometry === true && data.userData !== undefined ) geometry.userData = data.userData;\n\n\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometries;\n\n\t},\n\n\tparseMaterials: function ( json, textures ) {\n\n\t\tvar materials = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tvar loader = new MaterialLoader();\n\t\t\tloader.setTextures( textures );\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar data = json[ i ];\n\n\t\t\t\tif ( data.type === 'MultiMaterial' ) {\n\n\t\t\t\t\t// Deprecated\n\n\t\t\t\t\tvar array = [];\n\n\t\t\t\t\tfor ( var j = 0; j < data.materials.length; j ++ ) {\n\n\t\t\t\t\t\tarray.push( loader.parse( data.materials[ j ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = array;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tmaterials[ data.uuid ] = loader.parse( data );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materials;\n\n\t},\n\n\tparseAnimations: function ( json ) {\n\n\t\tvar animations = [];\n\n\t\tfor ( var i = 0; i < json.length; i ++ ) {\n\n\t\t\tvar data = json[ i ];\n\n\t\t\tvar clip = AnimationClip.parse( data );\n\n\t\t\tif ( data.uuid !== undefined ) clip.uuid = data.uuid;\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t},\n\n\tparseImages: function ( json, onLoad ) {\n\n\t\tvar scope = this;\n\t\tvar images = {};\n\n\t\tfunction loadImage( url ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn loader.load( url, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, undefined, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tvar manager = new LoadingManager( onLoad );\n\n\t\t\tvar loader = new ImageLoader( manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( var i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tvar image = json[ i ];\n\t\t\t\tvar url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\timages[ image.uuid ] = [];\n\n\t\t\t\t\tfor ( var j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tvar currentUrl = url[ j ];\n\n\t\t\t\t\t\tvar path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( currentUrl ) ? currentUrl : scope.texturePath + currentUrl;\n\n\t\t\t\t\t\timages[ image.uuid ].push( loadImage( path ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tvar path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( image.url ) ? image.url : scope.texturePath + image.url;\n\n\t\t\t\t\timages[ image.uuid ] = loadImage( path );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t},\n\n\tparseTextures: function ( json, images ) {\n\n\t\tfunction parseConstant( value, type ) {\n\n\t\t\tif ( typeof value === 'number' ) return value;\n\n\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\treturn type[ value ];\n\n\t\t}\n\n\t\tvar textures = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar data = json[ i ];\n\n\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t}\n\n\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t}\n\n\t\t\t\tvar texture;\n\n\t\t\t\tif ( Array.isArray( images[ data.image ] ) ) {\n\n\t\t\t\t\ttexture = new CubeTexture( images[ data.image ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture = new Texture( images[ data.image ] );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\n\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING );\n\n\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\n\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\n\t\t\t\tif ( data.center !== undefined ) texture.center.fromArray( data.center );\n\t\t\t\tif ( data.rotation !== undefined ) texture.rotation = data.rotation;\n\n\t\t\t\tif ( data.wrap !== undefined ) {\n\n\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING );\n\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.format !== undefined ) texture.format = data.format;\n\n\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\n\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\n\n\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textures;\n\n\t},\n\n\tparseObject: function ( data, geometries, materials ) {\n\n\t\tvar object;\n\n\t\tfunction getGeometry( name ) {\n\n\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t}\n\n\t\t\treturn geometries[ name ];\n\n\t\t}\n\n\t\tfunction getMaterial( name ) {\n\n\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\n\t\t\t\tvar array = [];\n\n\t\t\t\tfor ( var i = 0, l = name.length; i < l; i ++ ) {\n\n\t\t\t\t\tvar uuid = name[ i ];\n\n\t\t\t\t\tif ( materials[ uuid ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', uuid );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tarray.push( materials[ uuid ] );\n\n\t\t\t\t}\n\n\t\t\t\treturn array;\n\n\t\t\t}\n\n\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t}\n\n\t\t\treturn materials[ name ];\n\n\t\t}\n\n\t\tswitch ( data.type ) {\n\n\t\t\tcase 'Scene':\n\n\t\t\t\tobject = new Scene();\n\n\t\t\t\tif ( data.background !== undefined ) {\n\n\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\n\n\t\t\t\t\t\tobject.background = new Color( data.background );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.fog !== undefined ) {\n\n\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\n\n\t\t\t\t\t\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\n\n\t\t\t\t\t} else if ( data.fog.type === 'FogExp2' ) {\n\n\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'AmbientLight':\n\n\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'DirectionalLight':\n\n\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointLight':\n\n\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'RectAreaLight':\n\n\t\t\t\tobject = new RectAreaLight( data.color, data.intensity, data.width, data.height );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SpotLight':\n\n\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'HemisphereLight':\n\n\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SkinnedMesh':\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader.parseObject() does not support SkinnedMesh yet.' );\n\n\t\t\tcase 'Mesh':\n\n\t\t\t\tvar geometry = getGeometry( data.geometry );\n\t\t\t\tvar material = getMaterial( data.material );\n\n\t\t\t\tif ( geometry.bones && geometry.bones.length > 0 ) {\n\n\t\t\t\t\tobject = new SkinnedMesh( geometry, material );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LOD':\n\n\t\t\t\tobject = new LOD();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Line':\n\n\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ), data.mode );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineLoop':\n\n\t\t\t\tobject = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineSegments':\n\n\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointCloud':\n\t\t\tcase 'Points':\n\n\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Sprite':\n\n\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Group':\n\n\t\t\t\tobject = new Group();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tobject = new Object3D();\n\n\t\t}\n\n\t\tobject.uuid = data.uuid;\n\n\t\tif ( data.name !== undefined ) object.name = data.name;\n\n\t\tif ( data.matrix !== undefined ) {\n\n\t\t\tobject.matrix.fromArray( data.matrix );\n\n\t\t\tif ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate;\n\t\t\tif ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t} else {\n\n\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\n\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t}\n\n\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\tif ( data.shadow ) {\n\n\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\n\t\t\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\n\t\t\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\n\t\t\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\n\n\t\t}\n\n\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\tif ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled;\n\t\tif ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder;\n\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\t\tif ( data.layers !== undefined ) object.layers.mask = data.layers;\n\n\t\tif ( data.children !== undefined ) {\n\n\t\t\tvar children = data.children;\n\n\t\t\tfor ( var i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tobject.add( this.parseObject( children[ i ], geometries, materials ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.type === 'LOD' ) {\n\n\t\t\tvar levels = data.levels;\n\n\t\t\tfor ( var l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\tvar level = levels[ l ];\n\t\t\t\tvar child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\tobject.addLevel( child, level.distance );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n} );\n\nvar TEXTURE_MAPPING = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tSphericalReflectionMapping: SphericalReflectionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping,\n\tCubeUVRefractionMapping: CubeUVRefractionMapping\n};\n\nvar TEXTURE_WRAPPING = {\n\tRepeatWrapping: RepeatWrapping,\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\n};\n\nvar TEXTURE_FILTER = {\n\tNearestFilter: NearestFilter,\n\tNearestMipMapNearestFilter: NearestMipMapNearestFilter,\n\tNearestMipMapLinearFilter: NearestMipMapLinearFilter,\n\tLinearFilter: LinearFilter,\n\tLinearMipMapNearestFilter: LinearMipMapNearestFilter,\n\tLinearMipMapLinearFilter: LinearMipMapLinearFilter\n};\n\n/**\n * @author thespite / http://clicktorelease.com/\n */\n\n\nfunction ImageBitmapLoader( manager ) {\n\n\tif ( typeof createImageBitmap === 'undefined' ) {\n\n\t\tconsole.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );\n\n\t}\n\n\tif ( typeof fetch === 'undefined' ) {\n\n\t\tconsole.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );\n\n\t}\n\n\tthis.manager = manager !== undefined ? manager : DefaultLoadingManager;\n\tthis.options = undefined;\n\n}\n\nImageBitmapLoader.prototype = {\n\n\tconstructor: ImageBitmapLoader,\n\n\tsetOptions: function setOptions( options ) {\n\n\t\tthis.options = options;\n\n\t\treturn this;\n\n\t},\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tvar scope = this;\n\n\t\tvar cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tfetch( url ).then( function ( res ) {\n\n\t\t\treturn res.blob();\n\n\t\t} ).then( function ( blob ) {\n\n\t\t\treturn createImageBitmap( blob, scope.options );\n\n\t\t} ).then( function ( imageBitmap ) {\n\n\t\t\tCache.add( url, imageBitmap );\n\n\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} ).catch( function ( e ) {\n\n\t\t\tif ( onError ) onError( e );\n\n\t\t\tscope.manager.itemEnd( url );\n\t\t\tscope.manager.itemError( url );\n\n\t\t} );\n\n\t},\n\n\tsetCrossOrigin: function ( /* value */ ) {\n\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n};\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * minimal class for proxing functions to Path. Replaces old \"extractSubpaths()\"\n **/\n\nfunction ShapePath() {\n\n\tthis.type = 'ShapePath';\n\n\tthis.color = new Color();\n\n\tthis.subPaths = [];\n\tthis.currentPath = null;\n\n}\n\nObject.assign( ShapePath.prototype, {\n\n\tmoveTo: function ( x, y ) {\n\n\t\tthis.currentPath = new Path();\n\t\tthis.subPaths.push( this.currentPath );\n\t\tthis.currentPath.moveTo( x, y );\n\n\t},\n\n\tlineTo: function ( x, y ) {\n\n\t\tthis.currentPath.lineTo( x, y );\n\n\t},\n\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\n\n\t},\n\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\n\n\t},\n\n\tsplineThru: function ( pts ) {\n\n\t\tthis.currentPath.splineThru( pts );\n\n\t},\n\n\ttoShapes: function ( isCCW, noHoles ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tvar shapes = [];\n\n\t\t\tfor ( var i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tvar tmpPath = inSubpaths[ i ];\n\n\t\t\t\tvar tmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\tvar polyLen = inPolygon.length;\n\n\t\t\t// inPt on polygon contour => immediate success    or\n\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t//  with the horizontal line through inPt, left of inPt\n\t\t\t//  not counting lowerY endpoints of edges and whole edges on that line\n\t\t\tvar inside = false;\n\t\t\tfor ( var p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tvar edgeLowPt = inPolygon[ p ];\n\t\t\t\tvar edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tvar edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tvar edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tvar perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\n\t\t\t\t\t// continue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn\tinside;\n\n\t\t}\n\n\t\tvar isClockWise = ShapeUtils.isClockWise;\n\n\t\tvar subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tif ( noHoles === true )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tvar solid, tmpPath, tmpShape, shapes = [];\n\n\t\tif ( subPaths.length === 1 ) {\n\n\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\ttmpShape = new Shape();\n\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\tshapes.push( tmpShape );\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tvar holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tvar betterShapeHoles = [];\n\t\tvar newShapes = [];\n\t\tvar newShapeHoles = [];\n\t\tvar mainIdx = 0;\n\t\tvar tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( var i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\ttmpPath = subPaths[ i ];\n\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\tif ( solid ) {\n\n\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\n\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t//console.log('cw', i);\n\n\t\t\t} else {\n\n\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t//console.log('ccw', i);\n\n\t\t\t}\n\n\t\t}\n\n\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tif ( newShapes.length > 1 ) {\n\n\t\t\tvar ambiguous = false;\n\t\t\tvar toChange = [];\n\n\t\t\tfor ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tvar sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( var hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tvar ho = sho[ hIdx ];\n\t\t\t\t\tvar hole_unassigned = true;\n\n\t\t\t\t\tfor ( var s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange.push( { froms: sIdx, tos: s2Idx, hole: hIdx } );\n\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tambiguous = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t\t// console.log(\"ambiguous: \", ambiguous);\n\t\t\tif ( toChange.length > 0 ) {\n\n\t\t\t\t// console.log(\"to change: \", toChange);\n\t\t\t\tif ( ! ambiguous )\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar tmpHoles;\n\n\t\tfor ( var i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\tshapes.push( tmpShape );\n\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\tfor ( var j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//console.log(\"shape\", shapes);\n\n\t\treturn shapes;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction Font( data ) {\n\n\tthis.type = 'Font';\n\n\tthis.data = data;\n\n}\n\nObject.assign( Font.prototype, {\n\n\tisFont: true,\n\n\tgenerateShapes: function ( text, size ) {\n\n\t\tif ( size === undefined ) size = 100;\n\n\t\tvar shapes = [];\n\t\tvar paths = createPaths( text, size, this.data );\n\n\t\tfor ( var p = 0, pl = paths.length; p < pl; p ++ ) {\n\n\t\t\tArray.prototype.push.apply( shapes, paths[ p ].toShapes() );\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n} );\n\nfunction createPaths( text, size, data ) {\n\n\tvar chars = Array.from ? Array.from( text ) : String( text ).split( '' ); // see #13988\n\tvar scale = size / data.resolution;\n\tvar line_height = ( data.boundingBox.yMax - data.boundingBox.yMin + data.underlineThickness ) * scale;\n\n\tvar paths = [];\n\n\tvar offsetX = 0, offsetY = 0;\n\n\tfor ( var i = 0; i < chars.length; i ++ ) {\n\n\t\tvar char = chars[ i ];\n\n\t\tif ( char === '\\n' ) {\n\n\t\t\toffsetX = 0;\n\t\t\toffsetY -= line_height;\n\n\t\t} else {\n\n\t\t\tvar ret = createPath( char, scale, offsetX, offsetY, data );\n\t\t\toffsetX += ret.offsetX;\n\t\t\tpaths.push( ret.path );\n\n\t\t}\n\n\t}\n\n\treturn paths;\n\n}\n\nfunction createPath( char, scale, offsetX, offsetY, data ) {\n\n\tvar glyph = data.glyphs[ char ] || data.glyphs[ '?' ];\n\n\tif ( ! glyph ) return;\n\n\tvar path = new ShapePath();\n\n\tvar x, y, cpx, cpy, cpx1, cpy1, cpx2, cpy2;\n\n\tif ( glyph.o ) {\n\n\t\tvar outline = glyph._cachedOutline || ( glyph._cachedOutline = glyph.o.split( ' ' ) );\n\n\t\tfor ( var i = 0, l = outline.length; i < l; ) {\n\n\t\t\tvar action = outline[ i ++ ];\n\n\t\t\tswitch ( action ) {\n\n\t\t\t\tcase 'm': // moveTo\n\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.moveTo( x, y );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'l': // lineTo\n\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.lineTo( x, y );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'q': // quadraticCurveTo\n\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.quadraticCurveTo( cpx1, cpy1, cpx, cpy );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'b': // bezierCurveTo\n\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx2 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy2 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.bezierCurveTo( cpx1, cpy1, cpx2, cpy2, cpx, cpy );\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn { offsetX: glyph.ha * scale, path: path };\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction FontLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( FontLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tvar json;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tconsole.warn( 'THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead.' );\n\t\t\t\tjson = JSON.parse( text.substring( 65, text.length - 2 ) );\n\n\t\t\t}\n\n\t\t\tvar font = scope.parse( json );\n\n\t\t\tif ( onLoad ) onLoad( font );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\treturn new Font( json );\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar context;\n\nvar AudioContext = {\n\n\tgetContext: function () {\n\n\t\tif ( context === undefined ) {\n\n\t\t\tcontext = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t\t}\n\n\t\treturn context;\n\n\t},\n\n\tsetContext: function ( value ) {\n\n\t\tcontext = value;\n\n\t}\n\n};\n\n/**\n * @author Reece Aaron Lecrivain / http://reecenotes.com/\n */\n\nfunction AudioLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( AudioLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t// Create a copy of the buffer. The `decodeAudioData` method\n\t\t\t// detaches the buffer when complete, preventing reuse.\n\t\t\tvar bufferCopy = buffer.slice( 0 );\n\n\t\t\tvar context = AudioContext.getContext();\n\t\t\tcontext.decodeAudioData( bufferCopy, function ( audioBuffer ) {\n\n\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t} );\n\n\t\t}, onProgress, onError );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction StereoCamera() {\n\n\tthis.type = 'StereoCamera';\n\n\tthis.aspect = 1;\n\n\tthis.eyeSep = 0.064;\n\n\tthis.cameraL = new PerspectiveCamera();\n\tthis.cameraL.layers.enable( 1 );\n\tthis.cameraL.matrixAutoUpdate = false;\n\n\tthis.cameraR = new PerspectiveCamera();\n\tthis.cameraR.layers.enable( 2 );\n\tthis.cameraR.matrixAutoUpdate = false;\n\n}\n\nObject.assign( StereoCamera.prototype, {\n\n\tupdate: ( function () {\n\n\t\tvar instance, focus, fov, aspect, near, far, zoom, eyeSep;\n\n\t\tvar eyeRight = new Matrix4();\n\t\tvar eyeLeft = new Matrix4();\n\n\t\treturn function update( camera ) {\n\n\t\t\tvar needsUpdate = instance !== this || focus !== camera.focus || fov !== camera.fov ||\n\t\t\t\t\t\t\t\t\t\t\t\taspect !== camera.aspect * this.aspect || near !== camera.near ||\n\t\t\t\t\t\t\t\t\t\t\t\tfar !== camera.far || zoom !== camera.zoom || eyeSep !== this.eyeSep;\n\n\t\t\tif ( needsUpdate ) {\n\n\t\t\t\tinstance = this;\n\t\t\t\tfocus = camera.focus;\n\t\t\t\tfov = camera.fov;\n\t\t\t\taspect = camera.aspect * this.aspect;\n\t\t\t\tnear = camera.near;\n\t\t\t\tfar = camera.far;\n\t\t\t\tzoom = camera.zoom;\n\n\t\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\t\tvar projectionMatrix = camera.projectionMatrix.clone();\n\t\t\t\teyeSep = this.eyeSep / 2;\n\t\t\t\tvar eyeSepOnProjection = eyeSep * near / focus;\n\t\t\t\tvar ymax = ( near * Math.tan( _Math.DEG2RAD * fov * 0.5 ) ) / zoom;\n\t\t\t\tvar xmin, xmax;\n\n\t\t\t\t// translate xOffset\n\n\t\t\t\teyeLeft.elements[ 12 ] = - eyeSep;\n\t\t\t\teyeRight.elements[ 12 ] = eyeSep;\n\n\t\t\t\t// for left eye\n\n\t\t\t\txmin = - ymax * aspect + eyeSepOnProjection;\n\t\t\t\txmax = ymax * aspect + eyeSepOnProjection;\n\n\t\t\t\tprojectionMatrix.elements[ 0 ] = 2 * near / ( xmax - xmin );\n\t\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\t\tthis.cameraL.projectionMatrix.copy( projectionMatrix );\n\n\t\t\t\t// for right eye\n\n\t\t\t\txmin = - ymax * aspect - eyeSepOnProjection;\n\t\t\t\txmax = ymax * aspect - eyeSepOnProjection;\n\n\t\t\t\tprojectionMatrix.elements[ 0 ] = 2 * near / ( xmax - xmin );\n\t\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\t\tthis.cameraR.projectionMatrix.copy( projectionMatrix );\n\n\t\t\t}\n\n\t\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( eyeLeft );\n\t\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( eyeRight );\n\n\t\t};\n\n\t} )()\n\n} );\n\n/**\n * Camera for rendering cube maps\n *\t- renders scene into axis-aligned cube\n *\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction CubeCamera( near, far, cubeResolution ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'CubeCamera';\n\n\tvar fov = 90, aspect = 1;\n\n\tvar cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPX.up.set( 0, - 1, 0 );\n\tcameraPX.lookAt( new Vector3( 1, 0, 0 ) );\n\tthis.add( cameraPX );\n\n\tvar cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNX.up.set( 0, - 1, 0 );\n\tcameraNX.lookAt( new Vector3( - 1, 0, 0 ) );\n\tthis.add( cameraNX );\n\n\tvar cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPY.up.set( 0, 0, 1 );\n\tcameraPY.lookAt( new Vector3( 0, 1, 0 ) );\n\tthis.add( cameraPY );\n\n\tvar cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNY.up.set( 0, 0, - 1 );\n\tcameraNY.lookAt( new Vector3( 0, - 1, 0 ) );\n\tthis.add( cameraNY );\n\n\tvar cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPZ.up.set( 0, - 1, 0 );\n\tcameraPZ.lookAt( new Vector3( 0, 0, 1 ) );\n\tthis.add( cameraPZ );\n\n\tvar cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNZ.up.set( 0, - 1, 0 );\n\tcameraNZ.lookAt( new Vector3( 0, 0, - 1 ) );\n\tthis.add( cameraNZ );\n\n\tvar options = { format: RGBFormat, magFilter: LinearFilter, minFilter: LinearFilter };\n\n\tthis.renderTarget = new WebGLRenderTargetCube( cubeResolution, cubeResolution, options );\n\tthis.renderTarget.texture.name = \"CubeCamera\";\n\n\tthis.update = function ( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tvar renderTarget = this.renderTarget;\n\t\tvar generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\trenderTarget.activeCubeFace = 0;\n\t\trenderer.render( scene, cameraPX, renderTarget );\n\n\t\trenderTarget.activeCubeFace = 1;\n\t\trenderer.render( scene, cameraNX, renderTarget );\n\n\t\trenderTarget.activeCubeFace = 2;\n\t\trenderer.render( scene, cameraPY, renderTarget );\n\n\t\trenderTarget.activeCubeFace = 3;\n\t\trenderer.render( scene, cameraNY, renderTarget );\n\n\t\trenderTarget.activeCubeFace = 4;\n\t\trenderer.render( scene, cameraPZ, renderTarget );\n\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\trenderTarget.activeCubeFace = 5;\n\t\trenderer.render( scene, cameraNZ, renderTarget );\n\n\t\trenderer.setRenderTarget( null );\n\n\t};\n\n\tthis.clear = function ( renderer, color, depth, stencil ) {\n\n\t\tvar renderTarget = this.renderTarget;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\trenderTarget.activeCubeFace = i;\n\t\t\trenderer.setRenderTarget( renderTarget );\n\n\t\t\trenderer.clear( color, depth, stencil );\n\n\t\t}\n\n\t\trenderer.setRenderTarget( null );\n\n\t};\n\n}\n\nCubeCamera.prototype = Object.create( Object3D.prototype );\nCubeCamera.prototype.constructor = CubeCamera;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AudioListener() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'AudioListener';\n\n\tthis.context = AudioContext.getContext();\n\n\tthis.gain = this.context.createGain();\n\tthis.gain.connect( this.context.destination );\n\n\tthis.filter = null;\n\n}\n\nAudioListener.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: AudioListener,\n\n\tgetInput: function () {\n\n\t\treturn this.gain;\n\n\t},\n\n\tremoveFilter: function ( ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\tthis.gain.connect( this.context.destination );\n\t\t\tthis.filter = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilter: function () {\n\n\t\treturn this.filter;\n\n\t},\n\n\tsetFilter: function ( value ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t} else {\n\n\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t}\n\n\t\tthis.filter = value;\n\t\tthis.gain.connect( this.filter );\n\t\tthis.filter.connect( this.context.destination );\n\n\t\treturn this;\n\n\t},\n\n\tgetMasterVolume: function () {\n\n\t\treturn this.gain.gain.value;\n\n\t},\n\n\tsetMasterVolume: function ( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t},\n\n\tupdateMatrixWorld: ( function () {\n\n\t\tvar position = new Vector3();\n\t\tvar quaternion = new Quaternion();\n\t\tvar scale = new Vector3();\n\n\t\tvar orientation = new Vector3();\n\n\t\treturn function updateMatrixWorld( force ) {\n\n\t\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\t\tvar listener = this.context.listener;\n\t\t\tvar up = this.up;\n\n\t\t\tthis.matrixWorld.decompose( position, quaternion, scale );\n\n\t\t\torientation.set( 0, 0, - 1 ).applyQuaternion( quaternion );\n\n\t\t\tif ( listener.positionX ) {\n\n\t\t\t\tlistener.positionX.setValueAtTime( position.x, this.context.currentTime );\n\t\t\t\tlistener.positionY.setValueAtTime( position.y, this.context.currentTime );\n\t\t\t\tlistener.positionZ.setValueAtTime( position.z, this.context.currentTime );\n\t\t\t\tlistener.forwardX.setValueAtTime( orientation.x, this.context.currentTime );\n\t\t\t\tlistener.forwardY.setValueAtTime( orientation.y, this.context.currentTime );\n\t\t\t\tlistener.forwardZ.setValueAtTime( orientation.z, this.context.currentTime );\n\t\t\t\tlistener.upX.setValueAtTime( up.x, this.context.currentTime );\n\t\t\t\tlistener.upY.setValueAtTime( up.y, this.context.currentTime );\n\t\t\t\tlistener.upZ.setValueAtTime( up.z, this.context.currentTime );\n\n\t\t\t} else {\n\n\t\t\t\tlistener.setPosition( position.x, position.y, position.z );\n\t\t\t\tlistener.setOrientation( orientation.x, orientation.y, orientation.z, up.x, up.y, up.z );\n\n\t\t\t}\n\n\t\t};\n\n\t} )()\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Reece Aaron Lecrivain / http://reecenotes.com/\n */\n\nfunction Audio( listener ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Audio';\n\n\tthis.context = listener.context;\n\n\tthis.gain = this.context.createGain();\n\tthis.gain.connect( listener.getInput() );\n\n\tthis.autoplay = false;\n\n\tthis.buffer = null;\n\tthis.loop = false;\n\tthis.startTime = 0;\n\tthis.offset = 0;\n\tthis.playbackRate = 1;\n\tthis.isPlaying = false;\n\tthis.hasPlaybackControl = true;\n\tthis.sourceType = 'empty';\n\n\tthis.filters = [];\n\n}\n\nAudio.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Audio,\n\n\tgetOutput: function () {\n\n\t\treturn this.gain;\n\n\t},\n\n\tsetNodeSource: function ( audioNode ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'audioNode';\n\t\tthis.source = audioNode;\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetMediaElementSource: function ( mediaElement ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaNode';\n\t\tthis.source = this.context.createMediaElementSource( mediaElement );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetBuffer: function ( audioBuffer ) {\n\n\t\tthis.buffer = audioBuffer;\n\t\tthis.sourceType = 'buffer';\n\n\t\tif ( this.autoplay ) this.play();\n\n\t\treturn this;\n\n\t},\n\n\tplay: function () {\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar source = this.context.createBufferSource();\n\n\t\tsource.buffer = this.buffer;\n\t\tsource.loop = this.loop;\n\t\tsource.onended = this.onEnded.bind( this );\n\t\tsource.playbackRate.setValueAtTime( this.playbackRate, this.startTime );\n\t\tthis.startTime = this.context.currentTime;\n\t\tsource.start( this.startTime, this.offset );\n\n\t\tthis.isPlaying = true;\n\n\t\tthis.source = source;\n\n\t\treturn this.connect();\n\n\t},\n\n\tpause: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\t\t\tthis.offset += ( this.context.currentTime - this.startTime ) * this.playbackRate;\n\t\t\tthis.isPlaying = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tstop: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.source.stop();\n\t\tthis.source.onended = null;\n\t\tthis.offset = 0;\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t},\n\n\tconnect: function () {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\tfor ( var i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdisconnect: function () {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\tfor ( var i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilters: function () {\n\n\t\treturn this.filters;\n\n\t},\n\n\tsetFilters: function ( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value;\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilter: function () {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t},\n\n\tsetFilter: function ( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t},\n\n\tsetPlaybackRate: function ( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.playbackRate = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.playbackRate.setValueAtTime( this.playbackRate, this.context.currentTime );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetPlaybackRate: function () {\n\n\t\treturn this.playbackRate;\n\n\t},\n\n\tonEnded: function () {\n\n\t\tthis.isPlaying = false;\n\n\t},\n\n\tgetLoop: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn this.loop;\n\n\t},\n\n\tsetLoop: function ( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.loop = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.loop = this.loop;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetVolume: function () {\n\n\t\treturn this.gain.gain.value;\n\n\t},\n\n\tsetVolume: function ( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction PositionalAudio( listener ) {\n\n\tAudio.call( this, listener );\n\n\tthis.panner = this.context.createPanner();\n\tthis.panner.connect( this.gain );\n\n}\n\nPositionalAudio.prototype = Object.assign( Object.create( Audio.prototype ), {\n\n\tconstructor: PositionalAudio,\n\n\tgetOutput: function () {\n\n\t\treturn this.panner;\n\n\t},\n\n\tgetRefDistance: function () {\n\n\t\treturn this.panner.refDistance;\n\n\t},\n\n\tsetRefDistance: function ( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetRolloffFactor: function () {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t},\n\n\tsetRolloffFactor: function ( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetDistanceModel: function () {\n\n\t\treturn this.panner.distanceModel;\n\n\t},\n\n\tsetDistanceModel: function ( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetMaxDistance: function () {\n\n\t\treturn this.panner.maxDistance;\n\n\t},\n\n\tsetMaxDistance: function ( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t\treturn this;\n\n\t},\n\n\tsetDirectionalCone: function ( coneInnerAngle, coneOuterAngle, coneOuterGain ) {\n\n\t\tthis.panner.coneInnerAngle = coneInnerAngle;\n\t\tthis.panner.coneOuterAngle = coneOuterAngle;\n\t\tthis.panner.coneOuterGain = coneOuterGain;\n\n\t\treturn this;\n\n\t},\n\n\tupdateMatrixWorld: ( function () {\n\n\t\tvar position = new Vector3();\n\t\tvar quaternion = new Quaternion();\n\t\tvar scale = new Vector3();\n\n\t\tvar orientation = new Vector3();\n\n\t\treturn function updateMatrixWorld( force ) {\n\n\t\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\t\tvar panner = this.panner;\n\t\t\tthis.matrixWorld.decompose( position, quaternion, scale );\n\n\t\t\torientation.set( 0, 0, 1 ).applyQuaternion( quaternion );\n\n\t\t\tpanner.setPosition( position.x, position.y, position.z );\n\t\t\tpanner.setOrientation( orientation.x, orientation.y, orientation.z );\n\n\t\t};\n\n\t} )()\n\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AudioAnalyser( audio, fftSize ) {\n\n\tthis.analyser = audio.context.createAnalyser();\n\tthis.analyser.fftSize = fftSize !== undefined ? fftSize : 2048;\n\n\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\taudio.getOutput().connect( this.analyser );\n\n}\n\nObject.assign( AudioAnalyser.prototype, {\n\n\tgetFrequencyData: function () {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t},\n\n\tgetAverageFrequency: function () {\n\n\t\tvar value = 0, data = this.getFrequencyData();\n\n\t\tfor ( var i = 0; i < data.length; i ++ ) {\n\n\t\t\tvalue += data[ i ];\n\n\t\t}\n\n\t\treturn value / data.length;\n\n\t}\n\n} );\n\n/**\n *\n * Buffered scene graph property that allows weighted accumulation.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction PropertyMixer( binding, typeName, valueSize ) {\n\n\tthis.binding = binding;\n\tthis.valueSize = valueSize;\n\n\tvar bufferType = Float64Array,\n\t\tmixFunction;\n\n\tswitch ( typeName ) {\n\n\t\tcase 'quaternion':\n\t\t\tmixFunction = this._slerp;\n\t\t\tbreak;\n\n\t\tcase 'string':\n\t\tcase 'bool':\n\t\t\tbufferType = Array;\n\t\t\tmixFunction = this._select;\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tmixFunction = this._lerp;\n\n\t}\n\n\tthis.buffer = new bufferType( valueSize * 4 );\n\t// layout: [ incoming | accu0 | accu1 | orig ]\n\t//\n\t// interpolators can use .buffer as their .result\n\t// the data then goes to 'incoming'\n\t//\n\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t// the cumulative result and are compared to detect\n\t// changes\n\t//\n\t// 'orig' stores the original state of the property\n\n\tthis._mixBufferRegion = mixFunction;\n\n\tthis.cumulativeWeight = 0;\n\n\tthis.useCount = 0;\n\tthis.referenceCount = 0;\n\n}\n\nObject.assign( PropertyMixer.prototype, {\n\n\t// accumulate data in the 'incoming' region into 'accu<i>'\n\taccumulate: function ( accuIndex, weight ) {\n\n\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t// the weight and shouldn't have made the call in the first place\n\n\t\tvar buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tcurrentWeight = this.cumulativeWeight;\n\n\t\tif ( currentWeight === 0 ) {\n\n\t\t\t// accuN := incoming * weight\n\n\t\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\n\n\t\t\t}\n\n\t\t\tcurrentWeight = weight;\n\n\t\t} else {\n\n\t\t\t// accuN := accuN + incoming * weight\n\n\t\t\tcurrentWeight += weight;\n\t\t\tvar mix = weight / currentWeight;\n\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\n\n\t\t}\n\n\t\tthis.cumulativeWeight = currentWeight;\n\n\t},\n\n\t// apply the state of 'accu<i>' to the binding when accus differ\n\tapply: function ( accuIndex ) {\n\n\t\tvar stride = this.valueSize,\n\t\t\tbuffer = this.buffer,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tweight = this.cumulativeWeight,\n\n\t\t\tbinding = this.binding;\n\n\t\tthis.cumulativeWeight = 0;\n\n\t\tif ( weight < 1 ) {\n\n\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\tvar originalValueOffset = stride * 3;\n\n\t\t\tthis._mixBufferRegion(\n\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t}\n\n\t\tfor ( var i = stride, e = stride + stride; i !== e; ++ i ) {\n\n\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\n\n\t\t\t\t// value has changed -> update scene graph\n\n\t\t\t\tbinding.setValue( buffer, offset );\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remember the state of the bound property and copy it to both accus\n\tsaveOriginalState: function () {\n\n\t\tvar binding = this.binding;\n\n\t\tvar buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\n\t\t\toriginalValueOffset = stride * 3;\n\n\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\tfor ( var i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t}\n\n\t\tthis.cumulativeWeight = 0;\n\n\t},\n\n\t// apply the state previously taken via 'saveOriginalState' to the binding\n\trestoreOriginalState: function () {\n\n\t\tvar originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t},\n\n\n\t// mix functions\n\n\t_select: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tif ( t >= 0.5 ) {\n\n\t\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_slerp: function ( buffer, dstOffset, srcOffset, t ) {\n\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t );\n\n\t},\n\n\t_lerp: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tvar s = 1 - t;\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tvar j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n *\n * A reference to a real property in the scene graph.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\n// Characters [].:/ are reserved for track binding syntax.\nvar RESERVED_CHARS_RE = '\\\\[\\\\]\\\\.:\\\\/';\n\nfunction Composite( targetGroup, path, optionalParsedPath ) {\n\n\tvar parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path );\n\n\tthis._targetGroup = targetGroup;\n\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n}\n\nObject.assign( Composite.prototype, {\n\n\tgetValue: function ( array, offset ) {\n\n\t\tthis.bind(); // bind all binding\n\n\t\tvar firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\tbinding = this._bindings[ firstValidIndex ];\n\n\t\t// and only call .getValue on the first\n\t\tif ( binding !== undefined ) binding.getValue( array, offset );\n\n\t},\n\n\tsetValue: function ( array, offset ) {\n\n\t\tvar bindings = this._bindings;\n\n\t\tfor ( var i = this._targetGroup.nCachedObjects_,\n\t\t\t\t  n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].setValue( array, offset );\n\n\t\t}\n\n\t},\n\n\tbind: function () {\n\n\t\tvar bindings = this._bindings;\n\n\t\tfor ( var i = this._targetGroup.nCachedObjects_,\n\t\t\t\t  n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].bind();\n\n\t\t}\n\n\t},\n\n\tunbind: function () {\n\n\t\tvar bindings = this._bindings;\n\n\t\tfor ( var i = this._targetGroup.nCachedObjects_,\n\t\t\t\t  n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].unbind();\n\n\t\t}\n\n\t}\n\n} );\n\n\nfunction PropertyBinding( rootNode, path, parsedPath ) {\n\n\tthis.path = path;\n\tthis.parsedPath = parsedPath || PropertyBinding.parseTrackName( path );\n\n\tthis.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName ) || rootNode;\n\n\tthis.rootNode = rootNode;\n\n}\n\nObject.assign( PropertyBinding, {\n\n\tComposite: Composite,\n\n\tcreate: function ( root, path, parsedPath ) {\n\n\t\tif ( ! ( root && root.isAnimationObjectGroup ) ) {\n\n\t\t\treturn new PropertyBinding( root, path, parsedPath );\n\n\t\t} else {\n\n\t\t\treturn new PropertyBinding.Composite( root, path, parsedPath );\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Replaces spaces with underscores and removes unsupported characters from\n\t * node names, to ensure compatibility with parseTrackName().\n\t *\n\t * @param  {string} name Node name to be sanitized.\n\t * @return {string}\n\t */\n\tsanitizeNodeName: ( function () {\n\n\t\tvar reservedRe = new RegExp( '[' + RESERVED_CHARS_RE + ']', 'g' );\n\n\t\treturn function sanitizeNodeName( name ) {\n\n\t\t\treturn name.replace( /\\s/g, '_' ).replace( reservedRe, '' );\n\n\t\t};\n\n\t}() ),\n\n\tparseTrackName: function () {\n\n\t\t// Attempts to allow node names from any language. ES5's `\\w` regexp matches\n\t\t// only latin characters, and the unicode \\p{L} is not yet supported. So\n\t\t// instead, we exclude reserved characters and match everything else.\n\t\tvar wordChar = '[^' + RESERVED_CHARS_RE + ']';\n\t\tvar wordCharOrDot = '[^' + RESERVED_CHARS_RE.replace( '\\\\.', '' ) + ']';\n\n\t\t// Parent directories, delimited by '/' or ':'. Currently unused, but must\n\t\t// be matched to parse the rest of the track name.\n\t\tvar directoryRe = /((?:WC+[\\/:])*)/.source.replace( 'WC', wordChar );\n\n\t\t// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\n\t\tvar nodeRe = /(WCOD+)?/.source.replace( 'WCOD', wordCharOrDot );\n\n\t\t// Object on target node, and accessor. May not contain reserved\n\t\t// characters. Accessor may contain any character except closing bracket.\n\t\tvar objectRe = /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace( 'WC', wordChar );\n\n\t\t// Property and accessor. May not contain reserved characters. Accessor may\n\t\t// contain any non-bracket characters.\n\t\tvar propertyRe = /\\.(WC+)(?:\\[(.+)\\])?/.source.replace( 'WC', wordChar );\n\n\t\tvar trackRe = new RegExp( ''\n\t\t\t+ '^'\n\t\t\t+ directoryRe\n\t\t\t+ nodeRe\n\t\t\t+ objectRe\n\t\t\t+ propertyRe\n\t\t\t+ '$'\n\t\t);\n\n\t\tvar supportedObjectNames = [ 'material', 'materials', 'bones' ];\n\n\t\treturn function parseTrackName( trackName ) {\n\n\t\t\tvar matches = trackRe.exec( trackName );\n\n\t\t\tif ( ! matches ) {\n\n\t\t\t\tthrow new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName );\n\n\t\t\t}\n\n\t\t\tvar results = {\n\t\t\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\t\t\tnodeName: matches[ 2 ],\n\t\t\t\tobjectName: matches[ 3 ],\n\t\t\t\tobjectIndex: matches[ 4 ],\n\t\t\t\tpropertyName: matches[ 5 ], // required\n\t\t\t\tpropertyIndex: matches[ 6 ]\n\t\t\t};\n\n\t\t\tvar lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' );\n\n\t\t\tif ( lastDot !== undefined && lastDot !== - 1 ) {\n\n\t\t\t\tvar objectName = results.nodeName.substring( lastDot + 1 );\n\n\t\t\t\t// Object names must be checked against a whitelist. Otherwise, there\n\t\t\t\t// is no way to parse 'foo.bar.baz': 'baz' must be a property, but\n\t\t\t\t// 'bar' could be the objectName, or part of a nodeName (which can\n\t\t\t\t// include '.' characters).\n\t\t\t\tif ( supportedObjectNames.indexOf( objectName ) !== - 1 ) {\n\n\t\t\t\t\tresults.nodeName = results.nodeName.substring( 0, lastDot );\n\t\t\t\t\tresults.objectName = objectName;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\t\t\tthrow new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName );\n\n\t\t\t}\n\n\t\t\treturn results;\n\n\t\t};\n\n\t}(),\n\n\tfindNode: function ( root, nodeName ) {\n\n\t\tif ( ! nodeName || nodeName === \"\" || nodeName === \"root\" || nodeName === \".\" || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid ) {\n\n\t\t\treturn root;\n\n\t\t}\n\n\t\t// search into skeleton bones.\n\t\tif ( root.skeleton ) {\n\n\t\t\tvar bone = root.skeleton.getBoneByName( nodeName );\n\n\t\t\tif ( bone !== undefined ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// search into node subtree.\n\t\tif ( root.children ) {\n\n\t\t\tvar searchNodeSubtree = function ( children ) {\n\n\t\t\t\tfor ( var i = 0; i < children.length; i ++ ) {\n\n\t\t\t\t\tvar childNode = children[ i ];\n\n\t\t\t\t\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\n\n\t\t\t\t\t\treturn childNode;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar result = searchNodeSubtree( childNode.children );\n\n\t\t\t\t\tif ( result ) return result;\n\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\n\t\t\t};\n\n\t\t\tvar subTreeNode = searchNodeSubtree( root.children );\n\n\t\t\tif ( subTreeNode ) {\n\n\t\t\t\treturn subTreeNode;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n} );\n\nObject.assign( PropertyBinding.prototype, { // prototype, continued\n\n\t// these are used to \"bind\" a nonexistent property\n\t_getValue_unavailable: function () {},\n\t_setValue_unavailable: function () {},\n\n\tBindingType: {\n\t\tDirect: 0,\n\t\tEntireArray: 1,\n\t\tArrayElement: 2,\n\t\tHasFromToArray: 3\n\t},\n\n\tVersioning: {\n\t\tNone: 0,\n\t\tNeedsUpdate: 1,\n\t\tMatrixWorldNeedsUpdate: 2\n\t},\n\n\tGetterByBindingType: [\n\n\t\tfunction getValue_direct( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.node[ this.propertyName ];\n\n\t\t},\n\n\t\tfunction getValue_array( buffer, offset ) {\n\n\t\t\tvar source = this.resolvedProperty;\n\n\t\t\tfor ( var i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t\t}\n\n\t\t},\n\n\t\tfunction getValue_arrayElement( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t\t},\n\n\t\tfunction getValue_toArray( buffer, offset ) {\n\n\t\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t\t}\n\n\t],\n\n\tSetterByBindingTypeAndVersioning: [\n\n\t\t[\n\t\t\t// Direct\n\n\t\t\tfunction setValue_direct( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// EntireArray\n\n\t\t\tfunction setValue_array( buffer, offset ) {\n\n\t\t\t\tvar dest = this.resolvedProperty;\n\n\t\t\t\tfor ( var i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tvar dest = this.resolvedProperty;\n\n\t\t\t\tfor ( var i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tvar dest = this.resolvedProperty;\n\n\t\t\t\tfor ( var i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// ArrayElement\n\n\t\t\tfunction setValue_arrayElement( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// HasToFromArray\n\n\t\t\tfunction setValue_fromArray( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t]\n\n\t],\n\n\tgetValue: function getValue_unbound( targetArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.getValue( targetArray, offset );\n\n\t\t// Note: This class uses a State pattern on a per-method basis:\n\t\t// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n\t\t// prototype version of these methods with one that represents\n\t\t// the bound state. When the property is not found, the methods\n\t\t// become no-ops.\n\n\t},\n\n\tsetValue: function getValue_unbound( sourceArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.setValue( sourceArray, offset );\n\n\t},\n\n\t// create getter / setter pair for a property in the scene graph\n\tbind: function () {\n\n\t\tvar targetObject = this.node,\n\t\t\tparsedPath = this.parsedPath,\n\n\t\t\tobjectName = parsedPath.objectName,\n\t\t\tpropertyName = parsedPath.propertyName,\n\t\t\tpropertyIndex = parsedPath.propertyIndex;\n\n\t\tif ( ! targetObject ) {\n\n\t\t\ttargetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName ) || this.rootNode;\n\n\t\t\tthis.node = targetObject;\n\n\t\t}\n\n\t\t// set fail state so we can just 'return' on error\n\t\tthis.getValue = this._getValue_unavailable;\n\t\tthis.setValue = this._setValue_unavailable;\n\n\t\t// ensure there is a value node\n\t\tif ( ! targetObject ) {\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\\'t found.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( objectName ) {\n\n\t\t\tvar objectIndex = parsedPath.objectIndex;\n\n\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\n\t\t\tswitch ( objectName ) {\n\n\t\t\t\tcase 'materials':\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.materials ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.materials;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bones':\n\n\t\t\t\t\tif ( ! targetObject.skeleton ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t// and convert the integer string to a true integer.\n\n\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\n\n\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\tfor ( var i = 0; i < targetObject.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\n\n\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[ objectName ];\n\n\t\t\t}\n\n\n\t\t\tif ( objectIndex !== undefined ) {\n\n\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\ttargetObject = targetObject[ objectIndex ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// resolve property\n\t\tvar nodeProperty = targetObject[ propertyName ];\n\n\t\tif ( nodeProperty === undefined ) {\n\n\t\t\tvar nodeName = parsedPath.nodeName;\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +\n\t\t\t\t'.' + propertyName + ' but it wasn\\'t found.', targetObject );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// determine versioning scheme\n\t\tvar versioning = this.Versioning.None;\n\n\t\tif ( targetObject.needsUpdate !== undefined ) { // material\n\n\t\t\tversioning = this.Versioning.NeedsUpdate;\n\t\t\tthis.targetObject = targetObject;\n\n\t\t} else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform\n\n\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\t\t\tthis.targetObject = targetObject;\n\n\t\t}\n\n\t\t// determine how the property gets bound\n\t\tvar bindingType = this.BindingType.Direct;\n\n\t\tif ( propertyIndex !== undefined ) {\n\n\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\n\t\t\tif ( propertyName === \"morphTargetInfluences\" ) {\n\n\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\n\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\tif ( ! targetObject.geometry ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( targetObject.geometry.isBufferGeometry ) {\n\n\t\t\t\t\tif ( ! targetObject.geometry.morphAttributes ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( var i = 0; i < this.node.geometry.morphAttributes.position.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject.geometry.morphAttributes.position[ i ].name === propertyIndex ) {\n\n\t\t\t\t\t\t\tpropertyIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( ! targetObject.geometry.morphTargets ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphTargets.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( var i = 0; i < this.node.geometry.morphTargets.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject.geometry.morphTargets[ i ].name === propertyIndex ) {\n\n\t\t\t\t\t\t\tpropertyIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\n\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else if ( Array.isArray( nodeProperty ) ) {\n\n\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else {\n\n\t\t\tthis.propertyName = propertyName;\n\n\t\t}\n\n\t\t// select getter / setter\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t},\n\n\tunbind: function () {\n\n\t\tthis.node = null;\n\n\t\t// back to the prototype version of getValue / setValue\n\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n} );\n\n//!\\ DECLARE ALIAS AFTER assign prototype !\nObject.assign( PropertyBinding.prototype, {\n\n\t// initial state of these methods that calls 'bind'\n\t_getValue_unbound: PropertyBinding.prototype.getValue,\n\t_setValue_unbound: PropertyBinding.prototype.setValue,\n\n} );\n\n/**\n *\n * A group of objects that receives a shared animation state.\n *\n * Usage:\n *\n * \t-\tAdd objects you would otherwise pass as 'root' to the\n * \t\tconstructor or the .clipAction method of AnimationMixer.\n *\n * \t-\tInstead pass this object as 'root'.\n *\n * \t-\tYou can also add and remove objects later when the mixer\n * \t\tis running.\n *\n * Note:\n *\n *  \tObjects of this class appear as one object to the mixer,\n *  \tso cache control of the individual objects must be done\n *  \ton the group.\n *\n * Limitation:\n *\n * \t- \tThe animated properties must be compatible among the\n * \t\tall objects in the group.\n *\n *  -\tA single property can either be controlled through a\n *  \ttarget group or directly, but not both.\n *\n * @author tschw\n */\n\nfunction AnimationObjectGroup() {\n\n\tthis.uuid = _Math.generateUUID();\n\n\t// cached objects followed by the active ones\n\tthis._objects = Array.prototype.slice.call( arguments );\n\n\tthis.nCachedObjects_ = 0;\t\t\t// threshold\n\t// note: read by PropertyBinding.Composite\n\n\tvar indices = {};\n\tthis._indicesByUUID = indices;\t\t// for bookkeeping\n\n\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t}\n\n\tthis._paths = [];\t\t\t\t\t// inside: string\n\tthis._parsedPaths = [];\t\t\t\t// inside: { we don't care, here }\n\tthis._bindings = []; \t\t\t\t// inside: Array< PropertyBinding >\n\tthis._bindingsIndicesByPath = {}; \t// inside: indices in these arrays\n\n\tvar scope = this;\n\n\tthis.stats = {\n\n\t\tobjects: {\n\t\t\tget total() {\n\n\t\t\t\treturn scope._objects.length;\n\n\t\t\t},\n\t\t\tget inUse() {\n\n\t\t\t\treturn this.total - scope.nCachedObjects_;\n\n\t\t\t}\n\t\t},\n\t\tget bindingsPerObject() {\n\n\t\t\treturn scope._bindings.length;\n\n\t\t}\n\n\t};\n\n}\n\nObject.assign( AnimationObjectGroup.prototype, {\n\n\tisAnimationObjectGroup: true,\n\n\tadd: function () {\n\n\t\tvar objects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tpaths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length,\n\t\t\tknownObject = undefined;\n\n\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tvar object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index === undefined ) {\n\n\t\t\t\t// unknown object -> add it to the ACTIVE region\n\n\t\t\t\tindex = nObjects ++;\n\t\t\t\tindicesByUUID[ uuid ] = index;\n\t\t\t\tobjects.push( object );\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tbindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) );\n\n\t\t\t\t}\n\n\t\t\t} else if ( index < nCachedObjects ) {\n\n\t\t\t\tknownObject = objects[ index ];\n\n\t\t\t\t// move existing object to the ACTIVE region\n\n\t\t\t\tvar firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\n\n\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\n\t\t\t\tobjects[ firstActiveIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tvar bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\n\t\t\t\t\tif ( binding === undefined ) {\n\n\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t// or may not exist\n\n\t\t\t\t\t\tbinding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t} else if ( objects[ index ] !== knownObject ) {\n\n\t\t\t\tconsole.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' +\n\t\t\t\t\t\t'detected. Clean the caches or recreate your infrastructure when reloading scenes.' );\n\n\t\t\t} // else the object is already where we want it to be\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\tremove: function () {\n\n\t\tvar objects = this._objects,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tvar object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\n\n\t\t\t\t// move existing object into the CACHED region\n\n\t\t\t\tvar lastCachedIndex = nCachedObjects ++,\n\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\n\n\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = firstActiveObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\n\t\t\t\tobjects[ lastCachedIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tvar bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = firstActive;\n\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// remove & forget\n\tuncache: function () {\n\n\t\tvar objects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tvar object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tdelete indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index < nCachedObjects ) {\n\n\t\t\t\t\t// object is cached, shrink the CACHED region\n\n\t\t\t\t\tvar firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\n\t\t\t\t\t\tlastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t// last cached object takes this object's place\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\t// last object goes to the activated slot and pop\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\n\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tvar bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\tlast = bindingsForPath[ lastIndex ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// object is active, just swap with the last and pop\n\n\t\t\t\t\tvar lastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tvar bindingsForPath = bindings[ j ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} // cached or active\n\n\t\t\t} // if object is known\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// Internal interface used by befriended PropertyBinding.Composite:\n\n\tsubscribe_: function ( path, parsedPath ) {\n\n\t\t// returns an array of bindings for the given path that is changed\n\t\t// according to the contained objects in the group\n\n\t\tvar indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ],\n\t\t\tbindings = this._bindings;\n\n\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\tvar paths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tobjects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tbindingsForPath = new Array( nObjects );\n\n\t\tindex = bindings.length;\n\n\t\tindicesByPath[ path ] = index;\n\n\t\tpaths.push( path );\n\t\tparsedPaths.push( parsedPath );\n\t\tbindings.push( bindingsForPath );\n\n\t\tfor ( var i = nCachedObjects, n = objects.length; i !== n; ++ i ) {\n\n\t\t\tvar object = objects[ i ];\n\t\t\tbindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath );\n\n\t\t}\n\n\t\treturn bindingsForPath;\n\n\t},\n\n\tunsubscribe_: function ( path ) {\n\n\t\t// tells the group to forget about a property path and no longer\n\t\t// update the array previously obtained with 'subscribe_'\n\n\t\tvar indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ];\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tvar paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\tbindings[ index ] = lastBindings;\n\t\t\tbindings.pop();\n\n\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\tparsedPaths.pop();\n\n\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\tpaths.pop();\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n *\n * Action provided by AnimationMixer for scheduling clip playback on specific\n * objects.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n *\n */\n\nfunction AnimationAction( mixer, clip, localRoot ) {\n\n\tthis._mixer = mixer;\n\tthis._clip = clip;\n\tthis._localRoot = localRoot || null;\n\n\tvar tracks = clip.tracks,\n\t\tnTracks = tracks.length,\n\t\tinterpolants = new Array( nTracks );\n\n\tvar interpolantSettings = {\n\t\tendingStart: ZeroCurvatureEnding,\n\t\tendingEnd: ZeroCurvatureEnding\n\t};\n\n\tfor ( var i = 0; i !== nTracks; ++ i ) {\n\n\t\tvar interpolant = tracks[ i ].createInterpolant( null );\n\t\tinterpolants[ i ] = interpolant;\n\t\tinterpolant.settings = interpolantSettings;\n\n\t}\n\n\tthis._interpolantSettings = interpolantSettings;\n\n\tthis._interpolants = interpolants;\t// bound by the mixer\n\n\t// inside: PropertyMixer (managed by the mixer)\n\tthis._propertyBindings = new Array( nTracks );\n\n\tthis._cacheIndex = null;\t\t\t// for the memory manager\n\tthis._byClipCacheIndex = null;\t\t// for the memory manager\n\n\tthis._timeScaleInterpolant = null;\n\tthis._weightInterpolant = null;\n\n\tthis.loop = LoopRepeat;\n\tthis._loopCount = - 1;\n\n\t// global mixer time when the action is to be started\n\t// it's set back to 'null' upon start of the action\n\tthis._startTime = null;\n\n\t// scaled local time of the action\n\t// gets clamped or wrapped to 0..clip.duration according to loop\n\tthis.time = 0;\n\n\tthis.timeScale = 1;\n\tthis._effectiveTimeScale = 1;\n\n\tthis.weight = 1;\n\tthis._effectiveWeight = 1;\n\n\tthis.repetitions = Infinity; \t\t// no. of repetitions when looping\n\n\tthis.paused = false;\t\t\t\t// true -> zero effective time scale\n\tthis.enabled = true;\t\t\t\t// false -> zero effective weight\n\n\tthis.clampWhenFinished \t= false;\t// keep feeding the last frame?\n\n\tthis.zeroSlopeAtStart \t= true;\t\t// for smooth interpolation w/o separate\n\tthis.zeroSlopeAtEnd\t\t= true;\t\t// clips for start, loop and end\n\n}\n\nObject.assign( AnimationAction.prototype, {\n\n\t// State & Scheduling\n\n\tplay: function () {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t},\n\n\tstop: function () {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t},\n\n\treset: function () {\n\n\t\tthis.paused = false;\n\t\tthis.enabled = true;\n\n\t\tthis.time = 0;\t\t\t// restart clip\n\t\tthis._loopCount = - 1;\t// forget previous loops\n\t\tthis._startTime = null;\t// forget scheduling\n\n\t\treturn this.stopFading().stopWarping();\n\n\t},\n\n\tisRunning: function () {\n\n\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t},\n\n\t// return true when play has been called\n\tisScheduled: function () {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t},\n\n\tstartAt: function ( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t},\n\n\tsetLoop: function ( mode, repetitions ) {\n\n\t\tthis.loop = mode;\n\t\tthis.repetitions = repetitions;\n\n\t\treturn this;\n\n\t},\n\n\t// Weight\n\n\t// set the weight stopping any scheduled fading\n\t// although .enabled = false yields an effective weight of zero, this\n\t// method does *not* change .enabled, because it would be confusing\n\tsetEffectiveWeight: function ( weight ) {\n\n\t\tthis.weight = weight;\n\n\t\t// note: same logic as when updated at runtime\n\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\treturn this.stopFading();\n\n\t},\n\n\t// return the weight considering fading and .enabled\n\tgetEffectiveWeight: function () {\n\n\t\treturn this._effectiveWeight;\n\n\t},\n\n\tfadeIn: function ( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t},\n\n\tfadeOut: function ( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t},\n\n\tcrossFadeFrom: function ( fadeOutAction, duration, warp ) {\n\n\t\tfadeOutAction.fadeOut( duration );\n\t\tthis.fadeIn( duration );\n\n\t\tif ( warp ) {\n\n\t\t\tvar fadeInDuration = this._clip.duration,\n\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcrossFadeTo: function ( fadeInAction, duration, warp ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t},\n\n\tstopFading: function () {\n\n\t\tvar weightInterpolant = this._weightInterpolant;\n\n\t\tif ( weightInterpolant !== null ) {\n\n\t\t\tthis._weightInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Time Scale Control\n\n\t// set the time scale stopping any scheduled warping\n\t// although .paused = true yields an effective time scale of zero, this\n\t// method does *not* change .paused, because it would be confusing\n\tsetEffectiveTimeScale: function ( timeScale ) {\n\n\t\tthis.timeScale = timeScale;\n\t\tthis._effectiveTimeScale = this.paused ? 0 : timeScale;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\t// return the time scale considering warping and .paused\n\tgetEffectiveTimeScale: function () {\n\n\t\treturn this._effectiveTimeScale;\n\n\t},\n\n\tsetDuration: function ( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\tsyncWith: function ( action ) {\n\n\t\tthis.time = action.time;\n\t\tthis.timeScale = action.timeScale;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\thalt: function ( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t},\n\n\twarp: function ( startTimeScale, endTimeScale, duration ) {\n\n\t\tvar mixer = this._mixer, now = mixer.time,\n\t\t\tinterpolant = this._timeScaleInterpolant,\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._timeScaleInterpolant = interpolant;\n\n\t\t}\n\n\t\tvar times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\ttimes[ 1 ] = now + duration;\n\n\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\treturn this;\n\n\t},\n\n\tstopWarping: function () {\n\n\t\tvar timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\tthis._timeScaleInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Object Accessors\n\n\tgetMixer: function () {\n\n\t\treturn this._mixer;\n\n\t},\n\n\tgetClip: function () {\n\n\t\treturn this._clip;\n\n\t},\n\n\tgetRoot: function () {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t},\n\n\t// Interna\n\n\t_update: function ( time, deltaTime, timeDirection, accuIndex ) {\n\n\t\t// called by the mixer\n\n\t\tif ( ! this.enabled ) {\n\n\t\t\t// call ._updateWeight() to update ._effectiveWeight\n\n\t\t\tthis._updateWeight( time );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar startTime = this._startTime;\n\n\t\tif ( startTime !== null ) {\n\n\t\t\t// check for scheduled start of action\n\n\t\t\tvar timeRunning = ( time - startTime ) * timeDirection;\n\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\treturn; // yet to come / don't decide when delta = 0\n\n\t\t\t}\n\n\t\t\t// start\n\n\t\t\tthis._startTime = null; // unschedule\n\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t}\n\n\t\t// apply time scale and advance time\n\n\t\tdeltaTime *= this._updateTimeScale( time );\n\t\tvar clipTime = this._updateTime( deltaTime );\n\n\t\t// note: _updateTime may disable the action resulting in\n\t\t// an effective weight of 0\n\n\t\tvar weight = this._updateWeight( time );\n\n\t\tif ( weight > 0 ) {\n\n\t\t\tvar interpolants = this._interpolants;\n\t\t\tvar propertyMixers = this._propertyBindings;\n\n\t\t\tfor ( var j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_updateWeight: function ( time ) {\n\n\t\tvar weight = 0;\n\n\t\tif ( this.enabled ) {\n\n\t\t\tweight = this.weight;\n\t\t\tvar interpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tvar interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\tthis.enabled = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveWeight = weight;\n\t\treturn weight;\n\n\t},\n\n\t_updateTimeScale: function ( time ) {\n\n\t\tvar timeScale = 0;\n\n\t\tif ( ! this.paused ) {\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\t\tvar interpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tvar interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\tthis.timeScale = timeScale;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveTimeScale = timeScale;\n\t\treturn timeScale;\n\n\t},\n\n\t_updateTime: function ( deltaTime ) {\n\n\t\tvar time = this.time + deltaTime;\n\t\tvar duration = this._clip.duration;\n\t\tvar loop = this.loop;\n\t\tvar loopCount = this._loopCount;\n\n\t\tvar pingPong = ( loop === LoopPingPong );\n\n\t\tif ( deltaTime === 0 ) {\n\n\t\t\tif ( loopCount === - 1 ) return time;\n\n\t\t\treturn ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time;\n\n\t\t}\n\n\t\tif ( loop === LoopOnce ) {\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tthis._loopCount = 0;\n\t\t\t\tthis._setEndings( true, true, false );\n\n\t\t\t}\n\n\t\t\thandle_stop: {\n\n\t\t\t\tif ( time >= duration ) {\n\n\t\t\t\t\ttime = duration;\n\n\t\t\t\t} else if ( time < 0 ) {\n\n\t\t\t\t\ttime = 0;\n\n\t\t\t\t} else break handle_stop;\n\n\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\telse this.enabled = false;\n\n\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\tdirection: deltaTime < 0 ? - 1 : 1\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else { // repetitive Repeat or PingPong\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tif ( deltaTime >= 0 ) {\n\n\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\tthis._setEndings( true, this.repetitions === 0, pingPong );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t// so leave loopCount at -1\n\n\t\t\t\t\tthis._setEndings( this.repetitions === 0, true, pingPong );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( time >= duration || time < 0 ) {\n\n\t\t\t\t// wrap around\n\n\t\t\t\tvar loopDelta = Math.floor( time / duration ); // signed\n\t\t\t\ttime -= duration * loopDelta;\n\n\t\t\t\tloopCount += Math.abs( loopDelta );\n\n\t\t\t\tvar pending = this.repetitions - loopCount;\n\n\t\t\t\tif ( pending <= 0 ) {\n\n\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\n\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : - 1\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// keep running\n\n\t\t\t\t\tif ( pending === 1 ) {\n\n\t\t\t\t\t\t// entering the last round\n\n\t\t\t\t\t\tvar atStart = deltaTime < 0;\n\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\n\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\tthis.time = time;\n\t\t\t\treturn duration - time;\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.time = time;\n\t\treturn time;\n\n\t},\n\n\t_setEndings: function ( atStart, atEnd, pingPong ) {\n\n\t\tvar settings = this._interpolantSettings;\n\n\t\tif ( pingPong ) {\n\n\t\t\tsettings.endingStart \t= ZeroSlopeEnding;\n\t\t\tsettings.endingEnd\t\t= ZeroSlopeEnding;\n\n\t\t} else {\n\n\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\tif ( atStart ) {\n\n\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t\tif ( atEnd ) {\n\n\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_scheduleFading: function ( duration, weightNow, weightThen ) {\n\n\t\tvar mixer = this._mixer, now = mixer.time,\n\t\t\tinterpolant = this._weightInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._weightInterpolant = interpolant;\n\n\t\t}\n\n\t\tvar times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now; \t\t\t\tvalues[ 0 ] = weightNow;\n\t\ttimes[ 1 ] = now + duration;\tvalues[ 1 ] = weightThen;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n *\n * Player for AnimationClips.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction AnimationMixer( root ) {\n\n\tthis._root = root;\n\tthis._initMemoryManager();\n\tthis._accuIndex = 0;\n\n\tthis.time = 0;\n\n\tthis.timeScale = 1.0;\n\n}\n\nAnimationMixer.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: AnimationMixer,\n\n\t_bindAction: function ( action, prototypeAction ) {\n\n\t\tvar root = action._localRoot || this._root,\n\t\t\ttracks = action._clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tbindings = action._propertyBindings,\n\t\t\tinterpolants = action._interpolants,\n\t\t\trootUuid = root.uuid,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingsByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingsByName === undefined ) {\n\n\t\t\tbindingsByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\n\n\t\t}\n\n\t\tfor ( var i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tvar track = tracks[ i ],\n\t\t\t\ttrackName = track.name,\n\t\t\t\tbinding = bindingsByName[ trackName ];\n\n\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t} else {\n\n\t\t\t\tbinding = bindings[ i ];\n\n\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\t// existing binding, make sure the cache knows\n\n\t\t\t\t\tif ( binding._cacheIndex === null ) {\n\n\t\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tvar path = prototypeAction && prototypeAction.\n\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\n\n\t\t\t\tbinding = new PropertyMixer(\n\t\t\t\t\tPropertyBinding.create( root, trackName, path ),\n\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t}\n\n\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\n\n\t\t}\n\n\t},\n\n\t_activateAction: function ( action ) {\n\n\t\tif ( ! this._isActiveAction( action ) ) {\n\n\t\t\tif ( action._cacheIndex === null ) {\n\n\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t// appears to be still using it -> rebind\n\n\t\t\t\tvar rootUuid = ( action._localRoot || this._root ).uuid,\n\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\t\tthis._bindAction( action,\n\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\n\n\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\n\n\t\t\t}\n\n\t\t\tvar bindings = action._propertyBindings;\n\n\t\t\t// increment reference counts / sort out state\n\t\t\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tvar binding = bindings[ i ];\n\n\t\t\t\tif ( binding.useCount ++ === 0 ) {\n\n\t\t\t\t\tthis._lendBinding( binding );\n\t\t\t\t\tbinding.saveOriginalState();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._lendAction( action );\n\n\t\t}\n\n\t},\n\n\t_deactivateAction: function ( action ) {\n\n\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\tvar bindings = action._propertyBindings;\n\n\t\t\t// decrement reference counts / sort out state\n\t\t\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tvar binding = bindings[ i ];\n\n\t\t\t\tif ( -- binding.useCount === 0 ) {\n\n\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\tthis._takeBackBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._takeBackAction( action );\n\n\t\t}\n\n\t},\n\n\t// Memory manager\n\n\t_initMemoryManager: function () {\n\n\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\t\tthis._nActiveActions = 0;\n\n\t\tthis._actionsByClip = {};\n\t\t// inside:\n\t\t// {\n\t\t// \t\tknownActions: Array< AnimationAction >\t- used as prototypes\n\t\t// \t\tactionByRoot: AnimationAction\t\t\t- lookup\n\t\t// }\n\n\n\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\t\tthis._nActiveBindings = 0;\n\n\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\n\t\tthis._controlInterpolants = []; // same game as above\n\t\tthis._nActiveControlInterpolants = 0;\n\n\t\tvar scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tactions: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._actions.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveActions;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tbindings: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._bindings.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveBindings;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tcontrolInterpolants: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._controlInterpolants.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveControlInterpolants;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t},\n\n\t// Memory management for AnimationAction objects\n\n\t_isActiveAction: function ( action ) {\n\n\t\tvar index = action._cacheIndex;\n\t\treturn index !== null && index < this._nActiveActions;\n\n\t},\n\n\t_addInactiveAction: function ( action, clipUuid, rootUuid ) {\n\n\t\tvar actions = this._actions,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip === undefined ) {\n\n\t\t\tactionsForClip = {\n\n\t\t\t\tknownActions: [ action ],\n\t\t\t\tactionByRoot: {}\n\n\t\t\t};\n\n\t\t\taction._byClipCacheIndex = 0;\n\n\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\n\n\t\t} else {\n\n\t\t\tvar knownActions = actionsForClip.knownActions;\n\n\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\tknownActions.push( action );\n\n\t\t}\n\n\t\taction._cacheIndex = actions.length;\n\t\tactions.push( action );\n\n\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\n\n\t},\n\n\t_removeInactiveAction: function ( action ) {\n\n\t\tvar actions = this._actions,\n\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\n\t\t\tcacheIndex = action._cacheIndex;\n\n\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\tactions.pop();\n\n\t\taction._cacheIndex = null;\n\n\n\t\tvar clipUuid = action._clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ],\n\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\n\t\t\tlastKnownAction =\n\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\n\n\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\n\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\n\t\tknownActionsForClip.pop();\n\n\t\taction._byClipCacheIndex = null;\n\n\n\t\tvar actionByRoot = actionsForClip.actionByRoot,\n\t\t\trootUuid = ( action._localRoot || this._root ).uuid;\n\n\t\tdelete actionByRoot[ rootUuid ];\n\n\t\tif ( knownActionsForClip.length === 0 ) {\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t\tthis._removeInactiveBindingsForAction( action );\n\n\t},\n\n\t_removeInactiveBindingsForAction: function ( action ) {\n\n\t\tvar bindings = action._propertyBindings;\n\t\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tvar binding = bindings[ i ];\n\n\t\t\tif ( -- binding.referenceCount === 0 ) {\n\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_lendAction: function ( action ) {\n\n\t\t// [ active actions |  inactive actions  ]\n\t\t// [  active actions >| inactive actions ]\n\t\t//                 s        a\n\t\t//                  <-swap->\n\t\t//                 a        s\n\n\t\tvar actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveActions ++,\n\n\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\n\n\t\taction._cacheIndex = lastActiveIndex;\n\t\tactions[ lastActiveIndex ] = action;\n\n\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = firstInactiveAction;\n\n\t},\n\n\t_takeBackAction: function ( action ) {\n\n\t\t// [  active actions  | inactive actions ]\n\t\t// [ active actions |< inactive actions  ]\n\t\t//        a        s\n\t\t//         <-swap->\n\t\t//        s        a\n\n\t\tvar actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveActions,\n\n\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\n\n\t\taction._cacheIndex = firstInactiveIndex;\n\t\tactions[ firstInactiveIndex ] = action;\n\n\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = lastActiveAction;\n\n\t},\n\n\t// Memory management for PropertyMixer objects\n\n\t_addInactiveBinding: function ( binding, rootUuid, trackName ) {\n\n\t\tvar bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tbindings = this._bindings;\n\n\t\tif ( bindingByName === undefined ) {\n\n\t\t\tbindingByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\n\n\t\t}\n\n\t\tbindingByName[ trackName ] = binding;\n\n\t\tbinding._cacheIndex = bindings.length;\n\t\tbindings.push( binding );\n\n\t},\n\n\t_removeInactiveBinding: function ( binding ) {\n\n\t\tvar bindings = this._bindings,\n\t\t\tpropBinding = binding.binding,\n\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\ttrackName = propBinding.path,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\n\t\t\tcacheIndex = binding._cacheIndex;\n\n\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\tbindings[ cacheIndex ] = lastInactiveBinding;\n\t\tbindings.pop();\n\n\t\tdelete bindingByName[ trackName ];\n\n\t\tremove_empty_map: {\n\n\t\t\tfor ( var _ in bindingByName ) break remove_empty_map; // eslint-disable-line no-unused-vars\n\n\t\t\tdelete bindingsByRoot[ rootUuid ];\n\n\t\t}\n\n\t},\n\n\t_lendBinding: function ( binding ) {\n\n\t\tvar bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveBindings ++,\n\n\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\n\n\t\tbinding._cacheIndex = lastActiveIndex;\n\t\tbindings[ lastActiveIndex ] = binding;\n\n\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = firstInactiveBinding;\n\n\t},\n\n\t_takeBackBinding: function ( binding ) {\n\n\t\tvar bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\n\n\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\n\n\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\tbindings[ firstInactiveIndex ] = binding;\n\n\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = lastActiveBinding;\n\n\t},\n\n\n\t// Memory management of Interpolants for weight and time scale\n\n\t_lendControlInterpolant: function () {\n\n\t\tvar interpolants = this._controlInterpolants,\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++,\n\t\t\tinterpolant = interpolants[ lastActiveIndex ];\n\n\t\tif ( interpolant === undefined ) {\n\n\t\t\tinterpolant = new LinearInterpolant(\n\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\n\t\t\t\t1, this._controlInterpolantsResultBuffer );\n\n\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\n\n\t\t}\n\n\t\treturn interpolant;\n\n\t},\n\n\t_takeBackControlInterpolant: function ( interpolant ) {\n\n\t\tvar interpolants = this._controlInterpolants,\n\t\t\tprevIndex = interpolant.__cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\n\n\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\n\n\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\tinterpolants[ firstInactiveIndex ] = interpolant;\n\n\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\n\n\t},\n\n\t_controlInterpolantsResultBuffer: new Float32Array( 1 ),\n\n\t// return an action for a clip optionally using a custom root target\n\t// object (this method allocates a lot of dynamic memory in case a\n\t// previously unknown clip/root combination is specified)\n\tclipAction: function ( clip, optionalRoot ) {\n\n\t\tvar root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject !== null ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ],\n\t\t\tprototypeAction = null;\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\tvar existingAction =\n\t\t\t\t\tactionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\tif ( existingAction !== undefined ) {\n\n\t\t\t\treturn existingAction;\n\n\t\t\t}\n\n\t\t\t// we know the clip, so we don't have to parse all\n\t\t\t// the bindings again but can just copy\n\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\n\n\t\t\t// also, take the clip from the prototype action\n\t\t\tif ( clipObject === null )\n\t\t\t\tclipObject = prototypeAction._clip;\n\n\t\t}\n\n\t\t// clip must be known when specified via string\n\t\tif ( clipObject === null ) return null;\n\n\t\t// allocate all resources required to run it\n\t\tvar newAction = new AnimationAction( this, clipObject, optionalRoot );\n\n\t\tthis._bindAction( newAction, prototypeAction );\n\n\t\t// and make the action known to the memory manager\n\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\n\n\t\treturn newAction;\n\n\t},\n\n\t// get an existing action\n\texistingAction: function ( clip, optionalRoot ) {\n\n\t\tvar root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\t// deactivates all previously scheduled actions\n\tstopAllAction: function () {\n\n\t\tvar actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tthis._nActiveActions = 0;\n\t\tthis._nActiveBindings = 0;\n\n\t\tfor ( var i = 0; i !== nActions; ++ i ) {\n\n\t\t\tactions[ i ].reset();\n\n\t\t}\n\n\t\tfor ( var i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].useCount = 0;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// advance the time and update apply the animation\n\tupdate: function ( deltaTime ) {\n\n\t\tdeltaTime *= this.timeScale;\n\n\t\tvar actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\n\t\t\ttime = this.time += deltaTime,\n\t\t\ttimeDirection = Math.sign( deltaTime ),\n\n\t\t\taccuIndex = this._accuIndex ^= 1;\n\n\t\t// run active actions\n\n\t\tfor ( var i = 0; i !== nActions; ++ i ) {\n\n\t\t\tvar action = actions[ i ];\n\n\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\n\n\t\t}\n\n\t\t// update scene graph\n\n\t\tvar bindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tfor ( var i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].apply( accuIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// return this mixer's root target object\n\tgetRoot: function () {\n\n\t\treturn this._root;\n\n\t},\n\n\t// free all resources specific to a particular clip\n\tuncacheClip: function ( clip ) {\n\n\t\tvar actions = this._actions,\n\t\t\tclipUuid = clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t// iteration state and also require updating the state we can\n\t\t\t// just throw away\n\n\t\t\tvar actionsToRemove = actionsForClip.knownActions;\n\n\t\t\tfor ( var i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\tvar action = actionsToRemove[ i ];\n\n\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\tvar cacheIndex = action._cacheIndex,\n\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\n\n\t\t\t\taction._cacheIndex = null;\n\t\t\t\taction._byClipCacheIndex = null;\n\n\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\t\tactions.pop();\n\n\t\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t\t}\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t},\n\n\t// free all resources specific to a particular root target object\n\tuncacheRoot: function ( root ) {\n\n\t\tvar rootUuid = root.uuid,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tfor ( var clipUuid in actionsByClip ) {\n\n\t\t\tvar actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\n\t\t\t\taction = actionByRoot[ rootUuid ];\n\n\t\t\tif ( action !== undefined ) {\n\n\t\t\t\tthis._deactivateAction( action );\n\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName !== undefined ) {\n\n\t\t\tfor ( var trackName in bindingByName ) {\n\n\t\t\t\tvar binding = bindingByName[ trackName ];\n\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remove a targeted clip from the cache\n\tuncacheAction: function ( clip, optionalRoot ) {\n\n\t\tvar action = this.existingAction( clip, optionalRoot );\n\n\t\tif ( action !== null ) {\n\n\t\t\tthis._deactivateAction( action );\n\t\t\tthis._removeInactiveAction( action );\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Uniform( value ) {\n\n\tif ( typeof value === 'string' ) {\n\n\t\tconsole.warn( 'THREE.Uniform: Type parameter is no longer needed.' );\n\t\tvalue = arguments[ 1 ];\n\n\t}\n\n\tthis.value = value;\n\n}\n\nUniform.prototype.clone = function () {\n\n\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\n\n};\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedBufferGeometry() {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'InstancedBufferGeometry';\n\tthis.maxInstancedCount = undefined;\n\n}\n\nInstancedBufferGeometry.prototype = Object.assign( Object.create( BufferGeometry.prototype ), {\n\n\tconstructor: InstancedBufferGeometry,\n\n\tisInstancedBufferGeometry: true,\n\n\tcopy: function ( source ) {\n\n\t\tBufferGeometry.prototype.copy.call( this, source );\n\n\t\tthis.maxInstancedCount = source.maxInstancedCount;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n} );\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedInterleavedBuffer( array, stride, meshPerAttribute ) {\n\n\tInterleavedBuffer.call( this, array, stride );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedInterleavedBuffer.prototype = Object.assign( Object.create( InterleavedBuffer.prototype ), {\n\n\tconstructor: InstancedInterleavedBuffer,\n\n\tisInstancedInterleavedBuffer: true,\n\n\tcopy: function ( source ) {\n\n\t\tInterleavedBuffer.prototype.copy.call( this, source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedBufferAttribute( array, itemSize, meshPerAttribute ) {\n\n\tBufferAttribute.call( this, array, itemSize );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedBufferAttribute.prototype = Object.assign( Object.create( BufferAttribute.prototype ), {\n\n\tconstructor: InstancedBufferAttribute,\n\n\tisInstancedBufferAttribute: true,\n\n\tcopy: function ( source ) {\n\n\t\tBufferAttribute.prototype.copy.call( this, source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author bhouston / http://clara.io/\n * @author stephomi / http://stephaneginier.com/\n */\n\nfunction Raycaster( origin, direction, near, far ) {\n\n\tthis.ray = new Ray( origin, direction );\n\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\tthis.near = near || 0;\n\tthis.far = far || Infinity;\n\n\tthis.params = {\n\t\tMesh: {},\n\t\tLine: {},\n\t\tLOD: {},\n\t\tPoints: { threshold: 1 },\n\t\tSprite: {}\n\t};\n\n\tObject.defineProperties( this.params, {\n\t\tPointCloud: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.Raycaster: params.PointCloud has been renamed to params.Points.' );\n\t\t\t\treturn this.Points;\n\n\t\t\t}\n\t\t}\n\t} );\n\n}\n\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersectObject( object, raycaster, intersects, recursive ) {\n\n\tif ( object.visible === false ) return;\n\n\tobject.raycast( raycaster, intersects );\n\n\tif ( recursive === true ) {\n\n\t\tvar children = object.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\nObject.assign( Raycaster.prototype, {\n\n\tlinePrecision: 1,\n\n\tset: function ( origin, direction ) {\n\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.ray.set( origin, direction );\n\n\t},\n\n\tsetFromCamera: function ( coords, camera ) {\n\n\t\tif ( ( camera && camera.isPerspectiveCamera ) ) {\n\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\n\t\t} else if ( ( camera && camera.isOrthographicCamera ) ) {\n\n\t\t\tthis.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera\n\t\t\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type.' );\n\n\t\t}\n\n\t},\n\n\tintersectObject: function ( object, recursive, optionalTarget ) {\n\n\t\tvar intersects = optionalTarget || [];\n\n\t\tintersectObject( object, this, intersects, recursive );\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t},\n\n\tintersectObjects: function ( objects, recursive, optionalTarget ) {\n\n\t\tvar intersects = optionalTarget || [];\n\n\t\tif ( Array.isArray( objects ) === false ) {\n\n\t\t\tconsole.warn( 'THREE.Raycaster.intersectObjects: objects is not an Array.' );\n\t\t\treturn intersects;\n\n\t\t}\n\n\t\tfor ( var i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( objects[ i ], this, intersects, recursive );\n\n\t\t}\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Clock( autoStart ) {\n\n\tthis.autoStart = ( autoStart !== undefined ) ? autoStart : true;\n\n\tthis.startTime = 0;\n\tthis.oldTime = 0;\n\tthis.elapsedTime = 0;\n\n\tthis.running = false;\n\n}\n\nObject.assign( Clock.prototype, {\n\n\tstart: function () {\n\n\t\tthis.startTime = ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t},\n\n\tstop: function () {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\t\tthis.autoStart = false;\n\n\t},\n\n\tgetElapsedTime: function () {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t},\n\n\tgetDelta: function () {\n\n\t\tvar diff = 0;\n\n\t\tif ( this.autoStart && ! this.running ) {\n\n\t\t\tthis.start();\n\t\t\treturn 0;\n\n\t\t}\n\n\t\tif ( this.running ) {\n\n\t\t\tvar newTime = ( typeof performance === 'undefined' ? Date : performance ).now();\n\n\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\tthis.oldTime = newTime;\n\n\t\t\tthis.elapsedTime += diff;\n\n\t\t}\n\n\t\treturn diff;\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n *\n * The poles (phi) are at the positive and negative y axis.\n * The equator starts at positive z.\n */\n\nfunction Spherical( radius, phi, theta ) {\n\n\tthis.radius = ( radius !== undefined ) ? radius : 1.0;\n\tthis.phi = ( phi !== undefined ) ? phi : 0; // up / down towards top and bottom pole\n\tthis.theta = ( theta !== undefined ) ? theta : 0; // around the equator of the sphere\n\n\treturn this;\n\n}\n\nObject.assign( Spherical.prototype, {\n\n\tset: function ( radius, phi, theta ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi;\n\t\tthis.theta = theta;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.phi = other.phi;\n\t\tthis.theta = other.theta;\n\n\t\treturn this;\n\n\t},\n\n\t// restrict phi to be betwee EPS and PI-EPS\n\tmakeSafe: function () {\n\n\t\tvar EPS = 0.000001;\n\t\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromVector3: function ( vec3 ) {\n\n\t\tthis.radius = vec3.length();\n\n\t\tif ( this.radius === 0 ) {\n\n\t\t\tthis.theta = 0;\n\t\t\tthis.phi = 0;\n\n\t\t} else {\n\n\t\t\tthis.theta = Math.atan2( vec3.x, vec3.z ); // equator angle around y-up axis\n\t\t\tthis.phi = Math.acos( _Math.clamp( vec3.y / this.radius, - 1, 1 ) ); // polar angle\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n *\n * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\n *\n */\n\nfunction Cylindrical( radius, theta, y ) {\n\n\tthis.radius = ( radius !== undefined ) ? radius : 1.0; // distance from the origin to a point in the x-z plane\n\tthis.theta = ( theta !== undefined ) ? theta : 0; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\n\tthis.y = ( y !== undefined ) ? y : 0; // height above the x-z plane\n\n\treturn this;\n\n}\n\nObject.assign( Cylindrical.prototype, {\n\n\tset: function ( radius, theta, y ) {\n\n\t\tthis.radius = radius;\n\t\tthis.theta = theta;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.theta = other.theta;\n\t\tthis.y = other.y;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromVector3: function ( vec3 ) {\n\n\t\tthis.radius = Math.sqrt( vec3.x * vec3.x + vec3.z * vec3.z );\n\t\tthis.theta = Math.atan2( vec3.x, vec3.z );\n\t\tthis.y = vec3.y;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Box2( min, max ) {\n\n\tthis.min = ( min !== undefined ) ? min : new Vector2( + Infinity, + Infinity );\n\tthis.max = ( max !== undefined ) ? max : new Vector2( - Infinity, - Infinity );\n\n}\n\nObject.assign( Box2.prototype, {\n\n\tset: function ( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCenterAndSize: function () {\n\n\t\tvar v1 = new Vector2();\n\n\t\treturn function setFromCenterAndSize( center, size ) {\n\n\t\t\tvar halfSize = v1.copy( size ).multiplyScalar( 0.5 );\n\t\t\tthis.min.copy( center ).sub( halfSize );\n\t\t\tthis.max.copy( center ).add( halfSize );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.min.x = this.min.y = + Infinity;\n\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getCenter() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t},\n\n\tgetSize: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getSize() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t},\n\n\texpandByPoint: function ( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t},\n\n\texpandByVector: function ( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t},\n\n\texpandByScalar: function ( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ? false : true;\n\n\t},\n\n\tcontainsBox: function ( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y;\n\n\t},\n\n\tgetParameter: function ( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getParameter() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\n\t\t);\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\t// using 4 splitting planes to rule out intersections\n\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ? false : true;\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t},\n\n\tdistanceToPoint: function () {\n\n\t\tvar v1 = new Vector2();\n\n\t\treturn function distanceToPoint( point ) {\n\n\t\t\tvar clampedPoint = v1.copy( point ).clamp( this.min, this.max );\n\t\t\treturn clampedPoint.sub( point ).length();\n\n\t\t};\n\n\t}(),\n\n\tintersect: function ( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tunion: function ( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Line3( start, end ) {\n\n\tthis.start = ( start !== undefined ) ? start : new Vector3();\n\tthis.end = ( end !== undefined ) ? end : new Vector3();\n\n}\n\nObject.assign( Line3.prototype, {\n\n\tset: function ( start, end ) {\n\n\t\tthis.start.copy( start );\n\t\tthis.end.copy( end );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( line ) {\n\n\t\tthis.start.copy( line.start );\n\t\tthis.end.copy( line.end );\n\n\t\treturn this;\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .getCenter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t},\n\n\tdelta: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .delta() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.subVectors( this.end, this.start );\n\n\t},\n\n\tdistanceSq: function () {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t},\n\n\tdistance: function () {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t},\n\n\tat: function ( t, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .at() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t},\n\n\tclosestPointToPointParameter: function () {\n\n\t\tvar startP = new Vector3();\n\t\tvar startEnd = new Vector3();\n\n\t\treturn function closestPointToPointParameter( point, clampToLine ) {\n\n\t\t\tstartP.subVectors( point, this.start );\n\t\t\tstartEnd.subVectors( this.end, this.start );\n\n\t\t\tvar startEnd2 = startEnd.dot( startEnd );\n\t\t\tvar startEnd_startP = startEnd.dot( startP );\n\n\t\t\tvar t = startEnd_startP / startEnd2;\n\n\t\t\tif ( clampToLine ) {\n\n\t\t\t\tt = _Math.clamp( t, 0, 1 );\n\n\t\t\t}\n\n\t\t\treturn t;\n\n\t\t};\n\n\t}(),\n\n\tclosestPointToPoint: function ( point, clampToLine, target ) {\n\n\t\tvar t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tthis.start.applyMatrix4( matrix );\n\t\tthis.end.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction ImmediateRenderObject( material ) {\n\n\tObject3D.call( this );\n\n\tthis.material = material;\n\tthis.render = function ( /* renderCallback */ ) {};\n\n}\n\nImmediateRenderObject.prototype = Object.create( Object3D.prototype );\nImmediateRenderObject.prototype.constructor = ImmediateRenderObject;\n\nImmediateRenderObject.prototype.isImmediateRenderObject = true;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction VertexNormalsHelper( object, size, hex, linewidth ) {\n\n\tthis.object = object;\n\n\tthis.size = ( size !== undefined ) ? size : 1;\n\n\tvar color = ( hex !== undefined ) ? hex : 0xff0000;\n\n\tvar width = ( linewidth !== undefined ) ? linewidth : 1;\n\n\t//\n\n\tvar nNormals = 0;\n\n\tvar objGeometry = this.object.geometry;\n\n\tif ( objGeometry && objGeometry.isGeometry ) {\n\n\t\tnNormals = objGeometry.faces.length * 3;\n\n\t} else if ( objGeometry && objGeometry.isBufferGeometry ) {\n\n\t\tnNormals = objGeometry.attributes.normal.count;\n\n\t}\n\n\t//\n\n\tvar geometry = new BufferGeometry();\n\n\tvar positions = new Float32BufferAttribute( nNormals * 2 * 3, 3 );\n\n\tgeometry.addAttribute( 'position', positions );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, linewidth: width } ) );\n\n\t//\n\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n}\n\nVertexNormalsHelper.prototype = Object.create( LineSegments.prototype );\nVertexNormalsHelper.prototype.constructor = VertexNormalsHelper;\n\nVertexNormalsHelper.prototype.update = ( function () {\n\n\tvar v1 = new Vector3();\n\tvar v2 = new Vector3();\n\tvar normalMatrix = new Matrix3();\n\n\treturn function update() {\n\n\t\tvar keys = [ 'a', 'b', 'c' ];\n\n\t\tthis.object.updateMatrixWorld( true );\n\n\t\tnormalMatrix.getNormalMatrix( this.object.matrixWorld );\n\n\t\tvar matrixWorld = this.object.matrixWorld;\n\n\t\tvar position = this.geometry.attributes.position;\n\n\t\t//\n\n\t\tvar objGeometry = this.object.geometry;\n\n\t\tif ( objGeometry && objGeometry.isGeometry ) {\n\n\t\t\tvar vertices = objGeometry.vertices;\n\n\t\t\tvar faces = objGeometry.faces;\n\n\t\t\tvar idx = 0;\n\n\t\t\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\tvar face = faces[ i ];\n\n\t\t\t\tfor ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar vertex = vertices[ face[ keys[ j ] ] ];\n\n\t\t\t\t\tvar normal = face.vertexNormals[ j ];\n\n\t\t\t\t\tv1.copy( vertex ).applyMatrix4( matrixWorld );\n\n\t\t\t\t\tv2.copy( normal ).applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 );\n\n\t\t\t\t\tposition.setXYZ( idx, v1.x, v1.y, v1.z );\n\n\t\t\t\t\tidx = idx + 1;\n\n\t\t\t\t\tposition.setXYZ( idx, v2.x, v2.y, v2.z );\n\n\t\t\t\t\tidx = idx + 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( objGeometry && objGeometry.isBufferGeometry ) {\n\n\t\t\tvar objPos = objGeometry.attributes.position;\n\n\t\t\tvar objNorm = objGeometry.attributes.normal;\n\n\t\t\tvar idx = 0;\n\n\t\t\t// for simplicity, ignore index and drawcalls, and render every normal\n\n\t\t\tfor ( var j = 0, jl = objPos.count; j < jl; j ++ ) {\n\n\t\t\t\tv1.set( objPos.getX( j ), objPos.getY( j ), objPos.getZ( j ) ).applyMatrix4( matrixWorld );\n\n\t\t\t\tv2.set( objNorm.getX( j ), objNorm.getY( j ), objNorm.getZ( j ) );\n\n\t\t\t\tv2.applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 );\n\n\t\t\t\tposition.setXYZ( idx, v1.x, v1.y, v1.z );\n\n\t\t\t\tidx = idx + 1;\n\n\t\t\t\tposition.setXYZ( idx, v2.x, v2.y, v2.z );\n\n\t\t\t\tidx = idx + 1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tposition.needsUpdate = true;\n\n\t};\n\n}() );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction SpotLightHelper( light, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tvar geometry = new BufferGeometry();\n\n\tvar positions = [\n\t\t0, 0, 0, \t0, 0, 1,\n\t\t0, 0, 0, \t1, 0, 1,\n\t\t0, 0, 0,\t- 1, 0, 1,\n\t\t0, 0, 0, \t0, 1, 1,\n\t\t0, 0, 0, \t0, - 1, 1\n\t];\n\n\tfor ( var i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\tvar p1 = ( i / l ) * Math.PI * 2;\n\t\tvar p2 = ( j / l ) * Math.PI * 2;\n\n\t\tpositions.push(\n\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t);\n\n\t}\n\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\tvar material = new LineBasicMaterial( { fog: false } );\n\n\tthis.cone = new LineSegments( geometry, material );\n\tthis.add( this.cone );\n\n\tthis.update();\n\n}\n\nSpotLightHelper.prototype = Object.create( Object3D.prototype );\nSpotLightHelper.prototype.constructor = SpotLightHelper;\n\nSpotLightHelper.prototype.dispose = function () {\n\n\tthis.cone.geometry.dispose();\n\tthis.cone.material.dispose();\n\n};\n\nSpotLightHelper.prototype.update = function () {\n\n\tvar vector = new Vector3();\n\tvar vector2 = new Vector3();\n\n\treturn function update() {\n\n\t\tthis.light.updateMatrixWorld();\n\n\t\tvar coneLength = this.light.distance ? this.light.distance : 1000;\n\t\tvar coneWidth = coneLength * Math.tan( this.light.angle );\n\n\t\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t\tvector.setFromMatrixPosition( this.light.matrixWorld );\n\t\tvector2.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\t\tthis.cone.lookAt( vector2.sub( vector ) );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.cone.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.cone.material.color.copy( this.light.color );\n\n\t\t}\n\n\t};\n\n}();\n\n/**\n * @author Sean Griffin / http://twitter.com/sgrif\n * @author Michael Guerrero / http://realitymeltdown.com\n * @author mrdoob / http://mrdoob.com/\n * @author ikerr / http://verold.com\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction getBoneList( object ) {\n\n\tvar boneList = [];\n\n\tif ( object && object.isBone ) {\n\n\t\tboneList.push( object );\n\n\t}\n\n\tfor ( var i = 0; i < object.children.length; i ++ ) {\n\n\t\tboneList.push.apply( boneList, getBoneList( object.children[ i ] ) );\n\n\t}\n\n\treturn boneList;\n\n}\n\nfunction SkeletonHelper( object ) {\n\n\tvar bones = getBoneList( object );\n\n\tvar geometry = new BufferGeometry();\n\n\tvar vertices = [];\n\tvar colors = [];\n\n\tvar color1 = new Color( 0, 0, 1 );\n\tvar color2 = new Color( 0, 1, 0 );\n\n\tfor ( var i = 0; i < bones.length; i ++ ) {\n\n\t\tvar bone = bones[ i ];\n\n\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tcolors.push( color1.r, color1.g, color1.b );\n\t\t\tcolors.push( color2.r, color2.g, color2.b );\n\n\t\t}\n\n\t}\n\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tvar material = new LineBasicMaterial( { vertexColors: VertexColors, depthTest: false, depthWrite: false, transparent: true } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.root = object;\n\tthis.bones = bones;\n\n\tthis.matrix = object.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n}\n\nSkeletonHelper.prototype = Object.create( LineSegments.prototype );\nSkeletonHelper.prototype.constructor = SkeletonHelper;\n\nSkeletonHelper.prototype.updateMatrixWorld = function () {\n\n\tvar vector = new Vector3();\n\n\tvar boneMatrix = new Matrix4();\n\tvar matrixWorldInv = new Matrix4();\n\n\treturn function updateMatrixWorld( force ) {\n\n\t\tvar bones = this.bones;\n\n\t\tvar geometry = this.geometry;\n\t\tvar position = geometry.getAttribute( 'position' );\n\n\t\tmatrixWorldInv.getInverse( this.root.matrixWorld );\n\n\t\tfor ( var i = 0, j = 0; i < bones.length; i ++ ) {\n\n\t\t\tvar bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\tboneMatrix.multiplyMatrices( matrixWorldInv, bone.matrixWorld );\n\t\t\t\tvector.setFromMatrixPosition( boneMatrix );\n\t\t\t\tposition.setXYZ( j, vector.x, vector.y, vector.z );\n\n\t\t\t\tboneMatrix.multiplyMatrices( matrixWorldInv, bone.parent.matrixWorld );\n\t\t\t\tvector.setFromMatrixPosition( boneMatrix );\n\t\t\t\tposition.setXYZ( j + 1, vector.x, vector.y, vector.z );\n\n\t\t\t\tj += 2;\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t};\n\n}();\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction PointLightHelper( light, sphereSize, color ) {\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.color = color;\n\n\tvar geometry = new SphereBufferGeometry( sphereSize, 4, 2 );\n\tvar material = new MeshBasicMaterial( { wireframe: true, fog: false } );\n\n\tMesh.call( this, geometry, material );\n\n\tthis.matrix = this.light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n\n\t/*\n\tvar distanceGeometry = new THREE.IcosahedronGeometry( 1, 2 );\n\tvar distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\n\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\n\tvar d = light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\n\tthis.add( this.lightDistance );\n\t*/\n\n}\n\nPointLightHelper.prototype = Object.create( Mesh.prototype );\nPointLightHelper.prototype.constructor = PointLightHelper;\n\nPointLightHelper.prototype.dispose = function () {\n\n\tthis.geometry.dispose();\n\tthis.material.dispose();\n\n};\n\nPointLightHelper.prototype.update = function () {\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.material.color.copy( this.light.color );\n\n\t}\n\n\t/*\n\tvar d = this.light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.visible = true;\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\t*/\n\n};\n\n/**\n * @author abelnation / http://github.com/abelnation\n * @author Mugen87 / http://github.com/Mugen87\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction RectAreaLightHelper( light, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tvar material = new LineBasicMaterial( { fog: false } );\n\n\tvar geometry = new BufferGeometry();\n\n\tgeometry.addAttribute( 'position', new BufferAttribute( new Float32Array( 5 * 3 ), 3 ) );\n\n\tthis.line = new Line( geometry, material );\n\tthis.add( this.line );\n\n\n\tthis.update();\n\n}\n\nRectAreaLightHelper.prototype = Object.create( Object3D.prototype );\nRectAreaLightHelper.prototype.constructor = RectAreaLightHelper;\n\nRectAreaLightHelper.prototype.dispose = function () {\n\n\tthis.children[ 0 ].geometry.dispose();\n\tthis.children[ 0 ].material.dispose();\n\n};\n\nRectAreaLightHelper.prototype.update = function () {\n\n\t// calculate new dimensions of the helper\n\n\tvar hx = this.light.width * 0.5;\n\tvar hy = this.light.height * 0.5;\n\n\tvar position = this.line.geometry.attributes.position;\n\tvar array = position.array;\n\n\t// update vertices\n\n\tarray[ 0 ] = hx; array[ 1 ] = - hy; array[ 2 ] = 0;\n\tarray[ 3 ] = hx; array[ 4 ] = hy; array[ 5 ] = 0;\n\tarray[ 6 ] = - hx; array[ 7 ] = hy; array[ 8 ] = 0;\n\tarray[ 9 ] = - hx; array[ 10 ] = - hy; array[ 11 ] = 0;\n\tarray[ 12 ] = hx; array[ 13 ] = - hy; array[ 14 ] = 0;\n\n\tposition.needsUpdate = true;\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.line.material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.line.material.color.copy( this.light.color );\n\n\t}\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction HemisphereLightHelper( light, size, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tvar geometry = new OctahedronBufferGeometry( size );\n\tgeometry.rotateY( Math.PI * 0.5 );\n\n\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false } );\n\tif ( this.color === undefined ) this.material.vertexColors = VertexColors;\n\n\tvar position = geometry.getAttribute( 'position' );\n\tvar colors = new Float32Array( position.count * 3 );\n\n\tgeometry.addAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\tthis.add( new Mesh( geometry, this.material ) );\n\n\tthis.update();\n\n}\n\nHemisphereLightHelper.prototype = Object.create( Object3D.prototype );\nHemisphereLightHelper.prototype.constructor = HemisphereLightHelper;\n\nHemisphereLightHelper.prototype.dispose = function () {\n\n\tthis.children[ 0 ].geometry.dispose();\n\tthis.children[ 0 ].material.dispose();\n\n};\n\nHemisphereLightHelper.prototype.update = function () {\n\n\tvar vector = new Vector3();\n\n\tvar color1 = new Color();\n\tvar color2 = new Color();\n\n\treturn function update() {\n\n\t\tvar mesh = this.children[ 0 ];\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tvar colors = mesh.geometry.getAttribute( 'color' );\n\n\t\t\tcolor1.copy( this.light.color );\n\t\t\tcolor2.copy( this.light.groundColor );\n\n\t\t\tfor ( var i = 0, l = colors.count; i < l; i ++ ) {\n\n\t\t\t\tvar color = ( i < ( l / 2 ) ) ? color1 : color2;\n\n\t\t\t\tcolors.setXYZ( i, color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t\tcolors.needsUpdate = true;\n\n\t\t}\n\n\t\tmesh.lookAt( vector.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\n\t};\n\n}();\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction GridHelper( size, divisions, color1, color2 ) {\n\n\tsize = size || 10;\n\tdivisions = divisions || 10;\n\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\n\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\n\n\tvar center = divisions / 2;\n\tvar step = size / divisions;\n\tvar halfSize = size / 2;\n\n\tvar vertices = [], colors = [];\n\n\tfor ( var i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) {\n\n\t\tvertices.push( - halfSize, 0, k, halfSize, 0, k );\n\t\tvertices.push( k, 0, - halfSize, k, 0, halfSize );\n\n\t\tvar color = i === center ? color1 : color2;\n\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\n\t}\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tvar material = new LineBasicMaterial( { vertexColors: VertexColors } );\n\n\tLineSegments.call( this, geometry, material );\n\n}\n\nGridHelper.prototype = Object.create( LineSegments.prototype );\nGridHelper.prototype.constructor = GridHelper;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / http://github.com/Mugen87\n * @author Hectate / http://www.github.com/Hectate\n */\n\nfunction PolarGridHelper( radius, radials, circles, divisions, color1, color2 ) {\n\n\tradius = radius || 10;\n\tradials = radials || 16;\n\tcircles = circles || 8;\n\tdivisions = divisions || 64;\n\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\n\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\n\n\tvar vertices = [];\n\tvar colors = [];\n\n\tvar x, z;\n\tvar v, i, j, r, color;\n\n\t// create the radials\n\n\tfor ( i = 0; i <= radials; i ++ ) {\n\n\t\tv = ( i / radials ) * ( Math.PI * 2 );\n\n\t\tx = Math.sin( v ) * radius;\n\t\tz = Math.cos( v ) * radius;\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tvertices.push( x, 0, z );\n\n\t\tcolor = ( i & 1 ) ? color1 : color2;\n\n\t\tcolors.push( color.r, color.g, color.b );\n\t\tcolors.push( color.r, color.g, color.b );\n\n\t}\n\n\t// create the circles\n\n\tfor ( i = 0; i <= circles; i ++ ) {\n\n\t\tcolor = ( i & 1 ) ? color1 : color2;\n\n\t\tr = radius - ( radius / circles * i );\n\n\t\tfor ( j = 0; j < divisions; j ++ ) {\n\n\t\t\t// first vertex\n\n\t\t\tv = ( j / divisions ) * ( Math.PI * 2 );\n\n\t\t\tx = Math.sin( v ) * r;\n\t\t\tz = Math.cos( v ) * r;\n\n\t\t\tvertices.push( x, 0, z );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t// second vertex\n\n\t\t\tv = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 );\n\n\t\t\tx = Math.sin( v ) * r;\n\t\t\tz = Math.cos( v ) * r;\n\n\t\t\tvertices.push( x, 0, z );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t}\n\n\t}\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tvar material = new LineBasicMaterial( { vertexColors: VertexColors } );\n\n\tLineSegments.call( this, geometry, material );\n\n}\n\nPolarGridHelper.prototype = Object.create( LineSegments.prototype );\nPolarGridHelper.prototype.constructor = PolarGridHelper;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction FaceNormalsHelper( object, size, hex, linewidth ) {\n\n\t// FaceNormalsHelper only supports THREE.Geometry\n\n\tthis.object = object;\n\n\tthis.size = ( size !== undefined ) ? size : 1;\n\n\tvar color = ( hex !== undefined ) ? hex : 0xffff00;\n\n\tvar width = ( linewidth !== undefined ) ? linewidth : 1;\n\n\t//\n\n\tvar nNormals = 0;\n\n\tvar objGeometry = this.object.geometry;\n\n\tif ( objGeometry && objGeometry.isGeometry ) {\n\n\t\tnNormals = objGeometry.faces.length;\n\n\t} else {\n\n\t\tconsole.warn( 'THREE.FaceNormalsHelper: only THREE.Geometry is supported. Use THREE.VertexNormalsHelper, instead.' );\n\n\t}\n\n\t//\n\n\tvar geometry = new BufferGeometry();\n\n\tvar positions = new Float32BufferAttribute( nNormals * 2 * 3, 3 );\n\n\tgeometry.addAttribute( 'position', positions );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, linewidth: width } ) );\n\n\t//\n\n\tthis.matrixAutoUpdate = false;\n\tthis.update();\n\n}\n\nFaceNormalsHelper.prototype = Object.create( LineSegments.prototype );\nFaceNormalsHelper.prototype.constructor = FaceNormalsHelper;\n\nFaceNormalsHelper.prototype.update = ( function () {\n\n\tvar v1 = new Vector3();\n\tvar v2 = new Vector3();\n\tvar normalMatrix = new Matrix3();\n\n\treturn function update() {\n\n\t\tthis.object.updateMatrixWorld( true );\n\n\t\tnormalMatrix.getNormalMatrix( this.object.matrixWorld );\n\n\t\tvar matrixWorld = this.object.matrixWorld;\n\n\t\tvar position = this.geometry.attributes.position;\n\n\t\t//\n\n\t\tvar objGeometry = this.object.geometry;\n\n\t\tvar vertices = objGeometry.vertices;\n\n\t\tvar faces = objGeometry.faces;\n\n\t\tvar idx = 0;\n\n\t\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tvar normal = face.normal;\n\n\t\t\tv1.copy( vertices[ face.a ] )\n\t\t\t\t.add( vertices[ face.b ] )\n\t\t\t\t.add( vertices[ face.c ] )\n\t\t\t\t.divideScalar( 3 )\n\t\t\t\t.applyMatrix4( matrixWorld );\n\n\t\t\tv2.copy( normal ).applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 );\n\n\t\t\tposition.setXYZ( idx, v1.x, v1.y, v1.z );\n\n\t\t\tidx = idx + 1;\n\n\t\t\tposition.setXYZ( idx, v2.x, v2.y, v2.z );\n\n\t\t\tidx = idx + 1;\n\n\t\t}\n\n\t\tposition.needsUpdate = true;\n\n\t};\n\n}() );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction DirectionalLightHelper( light, size, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tif ( size === undefined ) size = 1;\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( [\n\t\t- size, size, 0,\n\t\tsize, size, 0,\n\t\tsize, - size, 0,\n\t\t- size, - size, 0,\n\t\t- size, size, 0\n\t], 3 ) );\n\n\tvar material = new LineBasicMaterial( { fog: false } );\n\n\tthis.lightPlane = new Line( geometry, material );\n\tthis.add( this.lightPlane );\n\n\tgeometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\tthis.targetLine = new Line( geometry, material );\n\tthis.add( this.targetLine );\n\n\tthis.update();\n\n}\n\nDirectionalLightHelper.prototype = Object.create( Object3D.prototype );\nDirectionalLightHelper.prototype.constructor = DirectionalLightHelper;\n\nDirectionalLightHelper.prototype.dispose = function () {\n\n\tthis.lightPlane.geometry.dispose();\n\tthis.lightPlane.material.dispose();\n\tthis.targetLine.geometry.dispose();\n\tthis.targetLine.material.dispose();\n\n};\n\nDirectionalLightHelper.prototype.update = function () {\n\n\tvar v1 = new Vector3();\n\tvar v2 = new Vector3();\n\tvar v3 = new Vector3();\n\n\treturn function update() {\n\n\t\tv1.setFromMatrixPosition( this.light.matrixWorld );\n\t\tv2.setFromMatrixPosition( this.light.target.matrixWorld );\n\t\tv3.subVectors( v2, v1 );\n\n\t\tthis.lightPlane.lookAt( v3 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.lightPlane.material.color.set( this.color );\n\t\t\tthis.targetLine.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.lightPlane.material.color.copy( this.light.color );\n\t\t\tthis.targetLine.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\tthis.targetLine.lookAt( v3 );\n\t\tthis.targetLine.scale.z = v3.length();\n\n\t};\n\n}();\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author Mugen87 / https://github.com/Mugen87\n *\n *\t- shows frustum, line of sight and up of the camera\n *\t- suitable for fast updates\n * \t- based on frustum visualization in lightgl.js shadowmap example\n *\t\thttp://evanw.github.com/lightgl.js/tests/shadowmap.html\n */\n\nfunction CameraHelper( camera ) {\n\n\tvar geometry = new BufferGeometry();\n\tvar material = new LineBasicMaterial( { color: 0xffffff, vertexColors: FaceColors } );\n\n\tvar vertices = [];\n\tvar colors = [];\n\n\tvar pointMap = {};\n\n\t// colors\n\n\tvar colorFrustum = new Color( 0xffaa00 );\n\tvar colorCone = new Color( 0xff0000 );\n\tvar colorUp = new Color( 0x00aaff );\n\tvar colorTarget = new Color( 0xffffff );\n\tvar colorCross = new Color( 0x333333 );\n\n\t// near\n\n\taddLine( 'n1', 'n2', colorFrustum );\n\taddLine( 'n2', 'n4', colorFrustum );\n\taddLine( 'n4', 'n3', colorFrustum );\n\taddLine( 'n3', 'n1', colorFrustum );\n\n\t// far\n\n\taddLine( 'f1', 'f2', colorFrustum );\n\taddLine( 'f2', 'f4', colorFrustum );\n\taddLine( 'f4', 'f3', colorFrustum );\n\taddLine( 'f3', 'f1', colorFrustum );\n\n\t// sides\n\n\taddLine( 'n1', 'f1', colorFrustum );\n\taddLine( 'n2', 'f2', colorFrustum );\n\taddLine( 'n3', 'f3', colorFrustum );\n\taddLine( 'n4', 'f4', colorFrustum );\n\n\t// cone\n\n\taddLine( 'p', 'n1', colorCone );\n\taddLine( 'p', 'n2', colorCone );\n\taddLine( 'p', 'n3', colorCone );\n\taddLine( 'p', 'n4', colorCone );\n\n\t// up\n\n\taddLine( 'u1', 'u2', colorUp );\n\taddLine( 'u2', 'u3', colorUp );\n\taddLine( 'u3', 'u1', colorUp );\n\n\t// target\n\n\taddLine( 'c', 't', colorTarget );\n\taddLine( 'p', 'c', colorCross );\n\n\t// cross\n\n\taddLine( 'cn1', 'cn2', colorCross );\n\taddLine( 'cn3', 'cn4', colorCross );\n\n\taddLine( 'cf1', 'cf2', colorCross );\n\taddLine( 'cf3', 'cf4', colorCross );\n\n\tfunction addLine( a, b, color ) {\n\n\t\taddPoint( a, color );\n\t\taddPoint( b, color );\n\n\t}\n\n\tfunction addPoint( id, color ) {\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tcolors.push( color.r, color.g, color.b );\n\n\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\tpointMap[ id ] = [];\n\n\t\t}\n\n\t\tpointMap[ id ].push( ( vertices.length / 3 ) - 1 );\n\n\t}\n\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.camera = camera;\n\tif ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\tthis.matrix = camera.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.pointMap = pointMap;\n\n\tthis.update();\n\n}\n\nCameraHelper.prototype = Object.create( LineSegments.prototype );\nCameraHelper.prototype.constructor = CameraHelper;\n\nCameraHelper.prototype.update = function () {\n\n\tvar geometry, pointMap;\n\n\tvar vector = new Vector3();\n\tvar camera = new Camera();\n\n\tfunction setPoint( point, x, y, z ) {\n\n\t\tvector.set( x, y, z ).unproject( camera );\n\n\t\tvar points = pointMap[ point ];\n\n\t\tif ( points !== undefined ) {\n\n\t\t\tvar position = geometry.getAttribute( 'position' );\n\n\t\t\tfor ( var i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\t\tposition.setXYZ( points[ i ], vector.x, vector.y, vector.z );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn function update() {\n\n\t\tgeometry = this.geometry;\n\t\tpointMap = this.pointMap;\n\n\t\tvar w = 1, h = 1;\n\n\t\t// we need just camera projection matrix\n\t\t// world matrix must be identity\n\n\t\tcamera.projectionMatrix.copy( this.camera.projectionMatrix );\n\n\t\t// center / target\n\n\t\tsetPoint( 'c', 0, 0, - 1 );\n\t\tsetPoint( 't', 0, 0, 1 );\n\n\t\t// near\n\n\t\tsetPoint( 'n1', - w, - h, - 1 );\n\t\tsetPoint( 'n2', w, - h, - 1 );\n\t\tsetPoint( 'n3', - w, h, - 1 );\n\t\tsetPoint( 'n4', w, h, - 1 );\n\n\t\t// far\n\n\t\tsetPoint( 'f1', - w, - h, 1 );\n\t\tsetPoint( 'f2', w, - h, 1 );\n\t\tsetPoint( 'f3', - w, h, 1 );\n\t\tsetPoint( 'f4', w, h, 1 );\n\n\t\t// up\n\n\t\tsetPoint( 'u1', w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u2', - w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u3', 0, h * 2, - 1 );\n\n\t\t// cross\n\n\t\tsetPoint( 'cf1', - w, 0, 1 );\n\t\tsetPoint( 'cf2', w, 0, 1 );\n\t\tsetPoint( 'cf3', 0, - h, 1 );\n\t\tsetPoint( 'cf4', 0, h, 1 );\n\n\t\tsetPoint( 'cn1', - w, 0, - 1 );\n\t\tsetPoint( 'cn2', w, 0, - 1 );\n\t\tsetPoint( 'cn3', 0, - h, - 1 );\n\t\tsetPoint( 'cn4', 0, h, - 1 );\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t};\n\n}();\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / http://github.com/Mugen87\n */\n\nfunction BoxHelper( object, color ) {\n\n\tthis.object = object;\n\n\tif ( color === undefined ) color = 0xffff00;\n\n\tvar indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\tvar positions = new Float32Array( 8 * 3 );\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\tgeometry.addAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color } ) );\n\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n}\n\nBoxHelper.prototype = Object.create( LineSegments.prototype );\nBoxHelper.prototype.constructor = BoxHelper;\n\nBoxHelper.prototype.update = ( function () {\n\n\tvar box = new Box3();\n\n\treturn function update( object ) {\n\n\t\tif ( object !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BoxHelper: .update() has no longer arguments.' );\n\n\t\t}\n\n\t\tif ( this.object !== undefined ) {\n\n\t\t\tbox.setFromObject( this.object );\n\n\t\t}\n\n\t\tif ( box.isEmpty() ) return;\n\n\t\tvar min = box.min;\n\t\tvar max = box.max;\n\n\t\t/*\n\t\t  5____4\n\t\t1/___0/|\n\t\t| 6__|_7\n\t\t2/___3/\n\n\t\t0: max.x, max.y, max.z\n\t\t1: min.x, max.y, max.z\n\t\t2: min.x, min.y, max.z\n\t\t3: max.x, min.y, max.z\n\t\t4: max.x, max.y, min.z\n\t\t5: min.x, max.y, min.z\n\t\t6: min.x, min.y, min.z\n\t\t7: max.x, min.y, min.z\n\t\t*/\n\n\t\tvar position = this.geometry.attributes.position;\n\t\tvar array = position.array;\n\n\t\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\t\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\t\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\t\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\t\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\t\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\t\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\t\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\t\tposition.needsUpdate = true;\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t};\n\n} )();\n\nBoxHelper.prototype.setFromObject = function ( object ) {\n\n\tthis.object = object;\n\tthis.update();\n\n\treturn this;\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Box3Helper( box, hex ) {\n\n\tthis.type = 'Box3Helper';\n\n\tthis.box = box;\n\n\tvar color = ( hex !== undefined ) ? hex : 0xffff00;\n\n\tvar indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\n\tvar positions = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, - 1, - 1, 1, - 1, - 1, - 1, - 1, 1, - 1, - 1 ];\n\n\tvar geometry = new BufferGeometry();\n\n\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color } ) );\n\n\tthis.geometry.computeBoundingSphere();\n\n}\n\nBox3Helper.prototype = Object.create( LineSegments.prototype );\nBox3Helper.prototype.constructor = Box3Helper;\n\nBox3Helper.prototype.updateMatrixWorld = function ( force ) {\n\n\tvar box = this.box;\n\n\tif ( box.isEmpty() ) return;\n\n\tbox.getCenter( this.position );\n\n\tbox.getSize( this.scale );\n\n\tthis.scale.multiplyScalar( 0.5 );\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction PlaneHelper( plane, size, hex ) {\n\n\tthis.type = 'PlaneHelper';\n\n\tthis.plane = plane;\n\n\tthis.size = ( size === undefined ) ? 1 : size;\n\n\tvar color = ( hex !== undefined ) ? hex : 0xffff00;\n\n\tvar positions = [ 1, - 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0 ];\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\tgeometry.computeBoundingSphere();\n\n\tLine.call( this, geometry, new LineBasicMaterial( { color: color } ) );\n\n\t//\n\n\tvar positions2 = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, - 1, 1, 1, - 1, 1 ];\n\n\tvar geometry2 = new BufferGeometry();\n\tgeometry2.addAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\tgeometry2.computeBoundingSphere();\n\n\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false } ) ) );\n\n}\n\nPlaneHelper.prototype = Object.create( Line.prototype );\nPlaneHelper.prototype.constructor = PlaneHelper;\n\nPlaneHelper.prototype.updateMatrixWorld = function ( force ) {\n\n\tvar scale = - this.plane.constant;\n\n\tif ( Math.abs( scale ) < 1e-8 ) scale = 1e-8; // sign does not matter\n\n\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, scale );\n\n\tthis.children[ 0 ].material.side = ( scale < 0 ) ? BackSide : FrontSide; // renderer flips side when determinant < 0; flipping not wanted here\n\n\tthis.lookAt( this.plane.normal );\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n * @author zz85 / http://github.com/zz85\n * @author bhouston / http://clara.io\n *\n * Creates an arrow for visualizing directions\n *\n * Parameters:\n *  dir - Vector3\n *  origin - Vector3\n *  length - Number\n *  color - color in hex value\n *  headLength - Number\n *  headWidth - Number\n */\n\nvar lineGeometry, coneGeometry;\n\nfunction ArrowHelper( dir, origin, length, color, headLength, headWidth ) {\n\n\t// dir is assumed to be normalized\n\n\tObject3D.call( this );\n\n\tif ( color === undefined ) color = 0xffff00;\n\tif ( length === undefined ) length = 1;\n\tif ( headLength === undefined ) headLength = 0.2 * length;\n\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\tif ( lineGeometry === undefined ) {\n\n\t\tlineGeometry = new BufferGeometry();\n\t\tlineGeometry.addAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\n\t\tconeGeometry = new CylinderBufferGeometry( 0, 0.5, 1, 5, 1 );\n\t\tconeGeometry.translate( 0, - 0.5, 0 );\n\n\t}\n\n\tthis.position.copy( origin );\n\n\tthis.line = new Line( lineGeometry, new LineBasicMaterial( { color: color } ) );\n\tthis.line.matrixAutoUpdate = false;\n\tthis.add( this.line );\n\n\tthis.cone = new Mesh( coneGeometry, new MeshBasicMaterial( { color: color } ) );\n\tthis.cone.matrixAutoUpdate = false;\n\tthis.add( this.cone );\n\n\tthis.setDirection( dir );\n\tthis.setLength( length, headLength, headWidth );\n\n}\n\nArrowHelper.prototype = Object.create( Object3D.prototype );\nArrowHelper.prototype.constructor = ArrowHelper;\n\nArrowHelper.prototype.setDirection = ( function () {\n\n\tvar axis = new Vector3();\n\tvar radians;\n\n\treturn function setDirection( dir ) {\n\n\t\t// dir is assumed to be normalized\n\n\t\tif ( dir.y > 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t\t} else if ( dir.y < - 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t\t} else {\n\n\t\t\taxis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\t\tradians = Math.acos( dir.y );\n\n\t\t\tthis.quaternion.setFromAxisAngle( axis, radians );\n\n\t\t}\n\n\t};\n\n}() );\n\nArrowHelper.prototype.setLength = function ( length, headLength, headWidth ) {\n\n\tif ( headLength === undefined ) headLength = 0.2 * length;\n\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\tthis.line.scale.set( 1, Math.max( 0, length - headLength ), 1 );\n\tthis.line.updateMatrix();\n\n\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\tthis.cone.position.y = length;\n\tthis.cone.updateMatrix();\n\n};\n\nArrowHelper.prototype.setColor = function ( color ) {\n\n\tthis.line.material.color.copy( color );\n\tthis.cone.material.color.copy( color );\n\n};\n\n/**\n * @author sroucheray / http://sroucheray.org/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AxesHelper( size ) {\n\n\tsize = size || 1;\n\n\tvar vertices = [\n\t\t0, 0, 0,\tsize, 0, 0,\n\t\t0, 0, 0,\t0, size, 0,\n\t\t0, 0, 0,\t0, 0, size\n\t];\n\n\tvar colors = [\n\t\t1, 0, 0,\t1, 0.6, 0,\n\t\t0, 1, 0,\t0.6, 1, 0,\n\t\t0, 0, 1,\t0, 0.6, 1\n\t];\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tvar material = new LineBasicMaterial( { vertexColors: VertexColors } );\n\n\tLineSegments.call( this, geometry, material );\n\n}\n\nAxesHelper.prototype = Object.create( LineSegments.prototype );\nAxesHelper.prototype.constructor = AxesHelper;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Face4( a, b, c, d, normal, color, materialIndex ) {\n\n\tconsole.warn( 'THREE.Face4 has been removed. A THREE.Face3 will be created instead.' );\n\treturn new Face3( a, b, c, normal, color, materialIndex );\n\n}\n\nvar LineStrip = 0;\n\nvar LinePieces = 1;\n\nfunction MeshFaceMaterial( materials ) {\n\n\tconsole.warn( 'THREE.MeshFaceMaterial has been removed. Use an Array instead.' );\n\treturn materials;\n\n}\n\nfunction MultiMaterial( materials ) {\n\n\tif ( materials === undefined ) materials = [];\n\n\tconsole.warn( 'THREE.MultiMaterial has been removed. Use an Array instead.' );\n\tmaterials.isMultiMaterial = true;\n\tmaterials.materials = materials;\n\tmaterials.clone = function () {\n\n\t\treturn materials.slice();\n\n\t};\n\treturn materials;\n\n}\n\nfunction PointCloud( geometry, material ) {\n\n\tconsole.warn( 'THREE.PointCloud has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction Particle( material ) {\n\n\tconsole.warn( 'THREE.Particle has been renamed to THREE.Sprite.' );\n\treturn new Sprite( material );\n\n}\n\nfunction ParticleSystem( geometry, material ) {\n\n\tconsole.warn( 'THREE.ParticleSystem has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction PointCloudMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleBasicMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleSystemMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction Vertex( x, y, z ) {\n\n\tconsole.warn( 'THREE.Vertex has been removed. Use THREE.Vector3 instead.' );\n\treturn new Vector3( x, y, z );\n\n}\n\n//\n\nfunction DynamicBufferAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setDynamic( true ) instead.' );\n\treturn new BufferAttribute( array, itemSize ).setDynamic( true );\n\n}\n\nfunction Int8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.' );\n\treturn new Int8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.' );\n\treturn new Uint8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8ClampedAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.' );\n\treturn new Uint8ClampedBufferAttribute( array, itemSize );\n\n}\n\nfunction Int16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.' );\n\treturn new Int16BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.' );\n\treturn new Uint16BufferAttribute( array, itemSize );\n\n}\n\nfunction Int32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.' );\n\treturn new Int32BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.' );\n\treturn new Uint32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.' );\n\treturn new Float32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float64Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.' );\n\treturn new Float64BufferAttribute( array, itemSize );\n\n}\n\n//\n\nCurve.create = function ( construct, getPoint ) {\n\n\tconsole.log( 'THREE.Curve.create() has been deprecated' );\n\n\tconstruct.prototype = Object.create( Curve.prototype );\n\tconstruct.prototype.constructor = construct;\n\tconstruct.prototype.getPoint = getPoint;\n\n\treturn construct;\n\n};\n\n//\n\nObject.assign( CurvePath.prototype, {\n\n\tcreatePointsGeometry: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\t// generate geometry from path points (for Line or Points objects)\n\n\t\tvar pts = this.getPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\tcreateSpacedPointsGeometry: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\t// generate geometry from equidistant sampling along the path\n\n\t\tvar pts = this.getSpacedPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\tcreateGeometry: function ( points ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\tvar geometry = new Geometry();\n\n\t\tfor ( var i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tvar point = points[ i ];\n\t\t\tgeometry.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\n\n\t\t}\n\n\t\treturn geometry;\n\n\t}\n\n} );\n\n//\n\nObject.assign( Path.prototype, {\n\n\tfromPoints: function ( points ) {\n\n\t\tconsole.warn( 'THREE.Path: .fromPoints() has been renamed to .setFromPoints().' );\n\t\tthis.setFromPoints( points );\n\n\t}\n\n} );\n\n//\n\nfunction ClosedSplineCurve3( points ) {\n\n\tconsole.warn( 'THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\tthis.closed = true;\n\n}\n\nClosedSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n//\n\nfunction SplineCurve3( points ) {\n\n\tconsole.warn( 'THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\n}\n\nSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n//\n\nfunction Spline( points ) {\n\n\tconsole.warn( 'THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\n}\n\nSpline.prototype = Object.create( CatmullRomCurve3.prototype );\n\nObject.assign( Spline.prototype, {\n\n\tinitFromArray: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .initFromArray() has been removed.' );\n\n\t},\n\tgetControlPointsArray: function ( /* optionalTarget */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .getControlPointsArray() has been removed.' );\n\n\t},\n\treparametrizeByArcLength: function ( /* samplingCoef */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .reparametrizeByArcLength() has been removed.' );\n\n\t}\n\n} );\n\n//\n\nfunction AxisHelper( size ) {\n\n\tconsole.warn( 'THREE.AxisHelper has been renamed to THREE.AxesHelper.' );\n\treturn new AxesHelper( size );\n\n}\n\nfunction BoundingBoxHelper( object, color ) {\n\n\tconsole.warn( 'THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.' );\n\treturn new BoxHelper( object, color );\n\n}\n\nfunction EdgesHelper( object, hex ) {\n\n\tconsole.warn( 'THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.' );\n\treturn new LineSegments( new EdgesGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n}\n\nGridHelper.prototype.setColors = function () {\n\n\tconsole.error( 'THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.' );\n\n};\n\nSkeletonHelper.prototype.update = function () {\n\n\tconsole.error( 'THREE.SkeletonHelper: update() no longer needs to be called.' );\n\n};\n\nfunction WireframeHelper( object, hex ) {\n\n\tconsole.warn( 'THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.' );\n\treturn new LineSegments( new WireframeGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n}\n\n//\n\nObject.assign( Loader.prototype, {\n\n\textractUrlBase: function ( url ) {\n\n\t\tconsole.warn( 'THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.' );\n\t\treturn LoaderUtils.extractUrlBase( url );\n\n\t}\n\n} );\n\nfunction XHRLoader( manager ) {\n\n\tconsole.warn( 'THREE.XHRLoader has been renamed to THREE.FileLoader.' );\n\treturn new FileLoader( manager );\n\n}\n\nfunction BinaryTextureLoader( manager ) {\n\n\tconsole.warn( 'THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.' );\n\treturn new DataTextureLoader( manager );\n\n}\n\n//\n\nObject.assign( Box2.prototype, {\n\n\tcenter: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box2: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\n\t},\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Box2: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tsize: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box2: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\n\t}\n} );\n\nObject.assign( Box3.prototype, {\n\n\tcenter: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box3: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\n\t},\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Box3: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\n\t},\n\tsize: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box3: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\n\t}\n} );\n\nLine3.prototype.center = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Line3: .center() has been renamed to .getCenter().' );\n\treturn this.getCenter( optionalTarget );\n\n};\n\nObject.assign( _Math, {\n\n\trandom16: function () {\n\n\t\tconsole.warn( 'THREE.Math: .random16() has been deprecated. Use Math.random() instead.' );\n\t\treturn Math.random();\n\n\t},\n\n\tnearestPowerOfTwo: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Math: .nearestPowerOfTwo() has been renamed to .floorPowerOfTwo().' );\n\t\treturn _Math.floorPowerOfTwo( value );\n\n\t},\n\n\tnextPowerOfTwo: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Math: .nextPowerOfTwo() has been renamed to .ceilPowerOfTwo().' );\n\t\treturn _Math.ceilPowerOfTwo( value );\n\n\t}\n\n} );\n\nObject.assign( Matrix3.prototype, {\n\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\" );\n\t\treturn this.toArray( array, offset );\n\n\t},\n\tmultiplyVector3: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' );\n\t\treturn vector.applyMatrix3( this );\n\n\t},\n\tmultiplyVector3Array: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Matrix3: .multiplyVector3Array() has been removed.' );\n\n\t},\n\tapplyToBuffer: function ( buffer /*, offset, length */ ) {\n\n\t\tconsole.warn( 'THREE.Matrix3: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.' );\n\t\treturn this.applyToBufferAttribute( buffer );\n\n\t},\n\tapplyToVector3Array: function ( /* array, offset, length */ ) {\n\n\t\tconsole.error( 'THREE.Matrix3: .applyToVector3Array() has been removed.' );\n\n\t}\n\n} );\n\nObject.assign( Matrix4.prototype, {\n\n\textractPosition: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' );\n\t\treturn this.copyPosition( m );\n\n\t},\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\" );\n\t\treturn this.toArray( array, offset );\n\n\t},\n\tgetPosition: function () {\n\n\t\tvar v1;\n\n\t\treturn function getPosition() {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\t\t\tconsole.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' );\n\t\t\treturn v1.setFromMatrixColumn( this, 3 );\n\n\t\t};\n\n\t}(),\n\tsetRotationFromQuaternion: function ( q ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' );\n\t\treturn this.makeRotationFromQuaternion( q );\n\n\t},\n\tmultiplyToArray: function () {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyToArray() has been removed.' );\n\n\t},\n\tmultiplyVector3: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\tmultiplyVector4: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\tmultiplyVector3Array: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Matrix4: .multiplyVector3Array() has been removed.' );\n\n\t},\n\trotateAxis: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' );\n\t\tv.transformDirection( this );\n\n\t},\n\tcrossVector: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\ttranslate: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .translate() has been removed.' );\n\n\t},\n\trotateX: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateX() has been removed.' );\n\n\t},\n\trotateY: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateY() has been removed.' );\n\n\t},\n\trotateZ: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateZ() has been removed.' );\n\n\t},\n\trotateByAxis: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateByAxis() has been removed.' );\n\n\t},\n\tapplyToBuffer: function ( buffer /*, offset, length */ ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.' );\n\t\treturn this.applyToBufferAttribute( buffer );\n\n\t},\n\tapplyToVector3Array: function ( /* array, offset, length */ ) {\n\n\t\tconsole.error( 'THREE.Matrix4: .applyToVector3Array() has been removed.' );\n\n\t},\n\tmakeFrustum: function ( left, right, bottom, top, near, far ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.' );\n\t\treturn this.makePerspective( left, right, top, bottom, near, far );\n\n\t}\n\n} );\n\nPlane.prototype.isIntersectionLine = function ( line ) {\n\n\tconsole.warn( 'THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().' );\n\treturn this.intersectsLine( line );\n\n};\n\nQuaternion.prototype.multiplyVector3 = function ( vector ) {\n\n\tconsole.warn( 'THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.' );\n\treturn vector.applyQuaternion( this );\n\n};\n\nObject.assign( Ray.prototype, {\n\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tisIntersectionPlane: function ( plane ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().' );\n\t\treturn this.intersectsPlane( plane );\n\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\n\t}\n\n} );\n\nObject.assign( Triangle.prototype, {\n\n\tarea: function () {\n\n\t\tconsole.warn( 'THREE.Triangle: .area() has been renamed to .getArea().' );\n\t\treturn this.getArea();\n\n\t},\n\tbarycoordFromPoint: function ( point, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\t\treturn this.getBarycoord( point, target );\n\n\t},\n\tmidpoint: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .midpoint() has been renamed to .getMidpoint().' );\n\t\treturn this.getMidpoint( target );\n\n\t},\n\tnormal: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\t\treturn this.getNormal( target );\n\n\t},\n\tplane: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .plane() has been renamed to .getPlane().' );\n\t\treturn this.getPlane( target );\n\n\t}\n\n} );\n\nObject.assign( Triangle, {\n\n\tbarycoordFromPoint: function ( point, a, b, c, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\t\treturn Triangle.getBarycoord( point, a, b, c, target );\n\n\t},\n\tnormal: function ( a, b, c, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\t\treturn Triangle.getNormal( a, b, c, target );\n\n\t}\n\n} );\n\nObject.assign( Shape.prototype, {\n\n\textractAllPoints: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.' );\n\t\treturn this.extractPoints( divisions );\n\n\t},\n\textrude: function ( options ) {\n\n\t\tconsole.warn( 'THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.' );\n\t\treturn new ExtrudeGeometry( this, options );\n\n\t},\n\tmakeGeometry: function ( options ) {\n\n\t\tconsole.warn( 'THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.' );\n\t\treturn new ShapeGeometry( this, options );\n\n\t}\n\n} );\n\nObject.assign( Vector2.prototype, {\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tdistanceToManhattan: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\t\treturn this.manhattanDistanceTo( v );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\nObject.assign( Vector3.prototype, {\n\n\tsetEulerFromRotationMatrix: function () {\n\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' );\n\n\t},\n\tsetEulerFromQuaternion: function () {\n\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' );\n\n\t},\n\tgetPositionFromMatrix: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' );\n\t\treturn this.setFromMatrixPosition( m );\n\n\t},\n\tgetScaleFromMatrix: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' );\n\t\treturn this.setFromMatrixScale( m );\n\n\t},\n\tgetColumnFromMatrix: function ( index, matrix ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' );\n\t\treturn this.setFromMatrixColumn( matrix, index );\n\n\t},\n\tapplyProjection: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.' );\n\t\treturn this.applyMatrix4( m );\n\n\t},\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tdistanceToManhattan: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\t\treturn this.manhattanDistanceTo( v );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\nObject.assign( Vector4.prototype, {\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\n//\n\nObject.assign( Geometry.prototype, {\n\n\tcomputeTangents: function () {\n\n\t\tconsole.error( 'THREE.Geometry: .computeTangents() has been removed.' );\n\n\t},\n\tcomputeLineDistances: function () {\n\n\t\tconsole.error( 'THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.' );\n\n\t}\n\n} );\n\nObject.assign( Object3D.prototype, {\n\n\tgetChildByName: function ( name ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' );\n\t\treturn this.getObjectByName( name );\n\n\t},\n\trenderDepth: function () {\n\n\t\tconsole.warn( 'THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.' );\n\n\t},\n\ttranslate: function ( distance, axis ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' );\n\t\treturn this.translateOnAxis( axis, distance );\n\n\t},\n\tgetWorldRotation: function () {\n\n\t\tconsole.error( 'THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.' );\n\n\t}\n\n} );\n\nObject.defineProperties( Object3D.prototype, {\n\n\teulerOrder: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\treturn this.rotation.order;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\tthis.rotation.order = value;\n\n\t\t}\n\t},\n\tuseQuaternion: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( LOD.prototype, {\n\n\tobjects: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.LOD: .objects has been renamed to .levels.' );\n\t\t\treturn this.levels;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperty( Skeleton.prototype, 'useVertexTexture', {\n\n\tget: function () {\n\n\t\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\n\n\t},\n\tset: function () {\n\n\t\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\n\n\t}\n\n} );\n\nObject.defineProperty( Curve.prototype, '__arcLengthDivisions', {\n\n\tget: function () {\n\n\t\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\n\t\treturn this.arcLengthDivisions;\n\n\t},\n\tset: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\n\t\tthis.arcLengthDivisions = value;\n\n\t}\n\n} );\n\n//\n\nPerspectiveCamera.prototype.setLens = function ( focalLength, filmGauge ) {\n\n\tconsole.warn( \"THREE.PerspectiveCamera.setLens is deprecated. \" +\n\t\t\t\"Use .setFocalLength and .filmGauge for a photographic setup.\" );\n\n\tif ( filmGauge !== undefined ) this.filmGauge = filmGauge;\n\tthis.setFocalLength( focalLength );\n\n};\n\n//\n\nObject.defineProperties( Light.prototype, {\n\tonlyShadow: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .onlyShadow has been removed.' );\n\n\t\t}\n\t},\n\tshadowCameraFov: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFov is now .shadow.camera.fov.' );\n\t\t\tthis.shadow.camera.fov = value;\n\n\t\t}\n\t},\n\tshadowCameraLeft: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraLeft is now .shadow.camera.left.' );\n\t\t\tthis.shadow.camera.left = value;\n\n\t\t}\n\t},\n\tshadowCameraRight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraRight is now .shadow.camera.right.' );\n\t\t\tthis.shadow.camera.right = value;\n\n\t\t}\n\t},\n\tshadowCameraTop: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraTop is now .shadow.camera.top.' );\n\t\t\tthis.shadow.camera.top = value;\n\n\t\t}\n\t},\n\tshadowCameraBottom: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.' );\n\t\t\tthis.shadow.camera.bottom = value;\n\n\t\t}\n\t},\n\tshadowCameraNear: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraNear is now .shadow.camera.near.' );\n\t\t\tthis.shadow.camera.near = value;\n\n\t\t}\n\t},\n\tshadowCameraFar: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFar is now .shadow.camera.far.' );\n\t\t\tthis.shadow.camera.far = value;\n\n\t\t}\n\t},\n\tshadowCameraVisible: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.' );\n\n\t\t}\n\t},\n\tshadowBias: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowBias is now .shadow.bias.' );\n\t\t\tthis.shadow.bias = value;\n\n\t\t}\n\t},\n\tshadowDarkness: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowDarkness has been removed.' );\n\n\t\t}\n\t},\n\tshadowMapWidth: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.' );\n\t\t\tthis.shadow.mapSize.width = value;\n\n\t\t}\n\t},\n\tshadowMapHeight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.' );\n\t\t\tthis.shadow.mapSize.height = value;\n\n\t\t}\n\t}\n} );\n\n//\n\nObject.defineProperties( BufferAttribute.prototype, {\n\n\tlength: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .length has been deprecated. Use .count instead.' );\n\t\t\treturn this.array.length;\n\n\t\t}\n\t},\n\tcopyIndicesArray: function ( /* indices */ ) {\n\n\t\tconsole.error( 'THREE.BufferAttribute: .copyIndicesArray() has been removed.' );\n\n\t}\n\n} );\n\nObject.assign( BufferGeometry.prototype, {\n\n\taddIndex: function ( index ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().' );\n\t\tthis.setIndex( index );\n\n\t},\n\taddDrawCall: function ( start, count, indexOffset ) {\n\n\t\tif ( indexOffset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.' );\n\n\t\t}\n\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() is now .addGroup().' );\n\t\tthis.addGroup( start, count );\n\n\t},\n\tclearDrawCalls: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().' );\n\t\tthis.clearGroups();\n\n\t},\n\tcomputeTangents: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeTangents() has been removed.' );\n\n\t},\n\tcomputeOffsets: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeOffsets() has been removed.' );\n\n\t}\n\n} );\n\nObject.defineProperties( BufferGeometry.prototype, {\n\n\tdrawcalls: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .drawcalls has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t},\n\toffsets: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .offsets has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.assign( ExtrudeBufferGeometry.prototype, {\n\n\tgetArrays: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .getArrays() has been removed.' );\n\n\t},\n\n\taddShapeList: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .addShapeList() has been removed.' );\n\n\t},\n\n\taddShape: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .addShape() has been removed.' );\n\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Uniform.prototype, {\n\n\tdynamic: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.' );\n\n\t\t}\n\t},\n\tonUpdate: {\n\t\tvalue: function () {\n\n\t\t\tconsole.warn( 'THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.' );\n\t\t\treturn this;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Material.prototype, {\n\n\twrapAround: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t}\n\t},\n\twrapRGB: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapRGB has been removed.' );\n\t\t\treturn new Color();\n\n\t\t}\n\t},\n\n\tshading: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\tthis.flatShading = ( value === FlatShading );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( MeshPhongMaterial.prototype, {\n\n\tmetal: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead' );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( ShaderMaterial.prototype, {\n\n\tderivatives: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\treturn this.extensions.derivatives;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\tthis.extensions.derivatives = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.assign( WebGLRenderer.prototype, {\n\n\tanimate: function ( callback ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .animate() is now .setAnimationLoop().' );\n\t\tthis.setAnimationLoop( callback );\n\n\t},\n\n\tgetCurrentRenderTarget: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().' );\n\t\treturn this.getRenderTarget();\n\n\t},\n\n\tgetMaxAnisotropy: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().' );\n\t\treturn this.capabilities.getMaxAnisotropy();\n\n\t},\n\n\tgetPrecision: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.' );\n\t\treturn this.capabilities.precision;\n\n\t},\n\n\tresetGLState: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .resetGLState() is now .state.reset().' );\n\t\treturn this.state.reset();\n\n\t},\n\n\tsupportsFloatTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \\'OES_texture_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_float' );\n\n\t},\n\tsupportsHalfFloatTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \\'OES_texture_half_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_half_float' );\n\n\t},\n\tsupportsStandardDerivatives: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \\'OES_standard_derivatives\\' ).' );\n\t\treturn this.extensions.get( 'OES_standard_derivatives' );\n\n\t},\n\tsupportsCompressedTextureS3TC: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \\'WEBGL_compressed_texture_s3tc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t},\n\tsupportsCompressedTexturePVRTC: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \\'WEBGL_compressed_texture_pvrtc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t},\n\tsupportsBlendMinMax: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \\'EXT_blend_minmax\\' ).' );\n\t\treturn this.extensions.get( 'EXT_blend_minmax' );\n\n\t},\n\tsupportsVertexTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.' );\n\t\treturn this.capabilities.vertexTextures;\n\n\t},\n\tsupportsInstancedArrays: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \\'ANGLE_instanced_arrays\\' ).' );\n\t\treturn this.extensions.get( 'ANGLE_instanced_arrays' );\n\n\t},\n\tenableScissorTest: function ( boolean ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().' );\n\t\tthis.setScissorTest( boolean );\n\n\t},\n\tinitMaterial: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' );\n\n\t},\n\taddPrePlugin: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' );\n\n\t},\n\taddPostPlugin: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' );\n\n\t},\n\tupdateShadowMap: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' );\n\n\t},\n\tsetFaceCulling: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setFaceCulling() has been removed.' );\n\n\t}\n\n} );\n\nObject.defineProperties( WebGLRenderer.prototype, {\n\n\tshadowMapEnabled: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.enabled;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.' );\n\t\t\tthis.shadowMap.enabled = value;\n\n\t\t}\n\t},\n\tshadowMapType: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.' );\n\t\t\tthis.shadowMap.type = value;\n\n\t\t}\n\t},\n\tshadowMapCullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t}\n} );\n\nObject.defineProperties( WebGLShadowMap.prototype, {\n\n\tcullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* cullFace */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderReverseSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderSingleSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( WebGLRenderTarget.prototype, {\n\n\twrapS: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\treturn this.texture.wrapS;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\tthis.texture.wrapS = value;\n\n\t\t}\n\t},\n\twrapT: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\treturn this.texture.wrapT;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\tthis.texture.wrapT = value;\n\n\t\t}\n\t},\n\tmagFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\treturn this.texture.magFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\tthis.texture.magFilter = value;\n\n\t\t}\n\t},\n\tminFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\treturn this.texture.minFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\tthis.texture.minFilter = value;\n\n\t\t}\n\t},\n\tanisotropy: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\treturn this.texture.anisotropy;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\tthis.texture.anisotropy = value;\n\n\t\t}\n\t},\n\toffset: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\treturn this.texture.offset;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\tthis.texture.offset = value;\n\n\t\t}\n\t},\n\trepeat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\treturn this.texture.repeat;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\tthis.texture.repeat = value;\n\n\t\t}\n\t},\n\tformat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\treturn this.texture.format;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\tthis.texture.format = value;\n\n\t\t}\n\t},\n\ttype: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\treturn this.texture.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\tthis.texture.type = value;\n\n\t\t}\n\t},\n\tgenerateMipmaps: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\treturn this.texture.generateMipmaps;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\tthis.texture.generateMipmaps = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( WebVRManager.prototype, {\n\n\tstanding: {\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebVRManager: .standing has been removed.' );\n\n\t\t}\n\t}\n\n} );\n\n//\n\nAudio.prototype.load = function ( file ) {\n\n\tconsole.warn( 'THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.' );\n\tvar scope = this;\n\tvar audioLoader = new AudioLoader();\n\taudioLoader.load( file, function ( buffer ) {\n\n\t\tscope.setBuffer( buffer );\n\n\t} );\n\treturn this;\n\n};\n\nAudioAnalyser.prototype.getData = function () {\n\n\tconsole.warn( 'THREE.AudioAnalyser: .getData() is now .getFrequencyData().' );\n\treturn this.getFrequencyData();\n\n};\n\n//\n\nCubeCamera.prototype.updateCubeMap = function ( renderer, scene ) {\n\n\tconsole.warn( 'THREE.CubeCamera: .updateCubeMap() is now .update().' );\n\treturn this.update( renderer, scene );\n\n};\n\n//\n\nvar GeometryUtils = {\n\n\tmerge: function ( geometry1, geometry2, materialIndexOffset ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.' );\n\t\tvar matrix;\n\n\t\tif ( geometry2.isMesh ) {\n\n\t\t\tgeometry2.matrixAutoUpdate && geometry2.updateMatrix();\n\n\t\t\tmatrix = geometry2.matrix;\n\t\t\tgeometry2 = geometry2.geometry;\n\n\t\t}\n\n\t\tgeometry1.merge( geometry2, matrix, materialIndexOffset );\n\n\t},\n\n\tcenter: function ( geometry ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.' );\n\t\treturn geometry.center();\n\n\t}\n\n};\n\nImageUtils.crossOrigin = undefined;\n\nImageUtils.loadTexture = function ( url, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.' );\n\n\tvar loader = new TextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tvar texture = loader.load( url, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadTextureCube = function ( urls, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.' );\n\n\tvar loader = new CubeTextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tvar texture = loader.load( urls, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadCompressedTexture = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\nImageUtils.loadCompressedTextureCube = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\n//\n\nfunction Projector() {\n\n\tconsole.error( 'THREE.Projector has been moved to /examples/js/renderers/Projector.js.' );\n\n\tthis.projectVector = function ( vector, camera ) {\n\n\t\tconsole.warn( 'THREE.Projector: .projectVector() is now vector.project().' );\n\t\tvector.project( camera );\n\n\t};\n\n\tthis.unprojectVector = function ( vector, camera ) {\n\n\t\tconsole.warn( 'THREE.Projector: .unprojectVector() is now vector.unproject().' );\n\t\tvector.unproject( camera );\n\n\t};\n\n\tthis.pickingRay = function () {\n\n\t\tconsole.error( 'THREE.Projector: .pickingRay() is now raycaster.setFromCamera().' );\n\n\t};\n\n}\n\n//\n\nfunction CanvasRenderer() {\n\n\tconsole.error( 'THREE.CanvasRenderer has been moved to /examples/js/renderers/CanvasRenderer.js' );\n\n\tthis.domElement = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\tthis.clear = function () {};\n\tthis.render = function () {};\n\tthis.setClearColor = function () {};\n\tthis.setSize = function () {};\n\n}\n\n//\n\nvar SceneUtils = {\n\n\tcreateMultiMaterialObject: function ( /* geometry, materials */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js' );\n\n\t},\n\n\tdetach: function ( /* child, parent, scene */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js' );\n\n\t},\n\n\tattach: function ( /* child, scene, parent */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js' );\n\n\t}\n\n};\n\n//\n\nfunction LensFlare() {\n\n\tconsole.error( 'THREE.LensFlare has been moved to /examples/js/objects/Lensflare.js' );\n\n}\n\nexport { WebGLRenderTargetCube, WebGLRenderTarget, WebGLRenderer, ShaderLib, UniformsLib, UniformsUtils, ShaderChunk, FogExp2, Fog, Scene, Sprite, LOD, SkinnedMesh, Skeleton, Bone, Mesh, LineSegments, LineLoop, Line, Points, Group, VideoTexture, DataTexture, CompressedTexture, CubeTexture, CanvasTexture, DepthTexture, Texture, CompressedTextureLoader, DataTextureLoader, CubeTextureLoader, TextureLoader, ObjectLoader, MaterialLoader, BufferGeometryLoader, DefaultLoadingManager, LoadingManager, JSONLoader, ImageLoader, ImageBitmapLoader, FontLoader, FileLoader, Loader, LoaderUtils, Cache, AudioLoader, SpotLightShadow, SpotLight, PointLight, RectAreaLight, HemisphereLight, DirectionalLightShadow, DirectionalLight, AmbientLight, LightShadow, Light, StereoCamera, PerspectiveCamera, OrthographicCamera, CubeCamera, ArrayCamera, Camera, AudioListener, PositionalAudio, AudioContext, AudioAnalyser, Audio, VectorKeyframeTrack, StringKeyframeTrack, QuaternionKeyframeTrack, NumberKeyframeTrack, ColorKeyframeTrack, BooleanKeyframeTrack, PropertyMixer, PropertyBinding, KeyframeTrack, AnimationUtils, AnimationObjectGroup, AnimationMixer, AnimationClip, Uniform, InstancedBufferGeometry, BufferGeometry, Geometry, InterleavedBufferAttribute, InstancedInterleavedBuffer, InterleavedBuffer, InstancedBufferAttribute, Face3, Object3D, Raycaster, Layers, EventDispatcher, Clock, QuaternionLinearInterpolant, LinearInterpolant, DiscreteInterpolant, CubicInterpolant, Interpolant, Triangle, _Math as Math, Spherical, Cylindrical, Plane, Frustum, Sphere, Ray, Matrix4, Matrix3, Box3, Box2, Line3, Euler, Vector4, Vector3, Vector2, Quaternion, Color, ImmediateRenderObject, VertexNormalsHelper, SpotLightHelper, SkeletonHelper, PointLightHelper, RectAreaLightHelper, HemisphereLightHelper, GridHelper, PolarGridHelper, FaceNormalsHelper, DirectionalLightHelper, CameraHelper, BoxHelper, Box3Helper, PlaneHelper, ArrowHelper, AxesHelper, Shape, Path, ShapePath, Font, CurvePath, Curve, ImageUtils, ShapeUtils, WebGLUtils, WireframeGeometry, ParametricGeometry, ParametricBufferGeometry, TetrahedronGeometry, TetrahedronBufferGeometry, OctahedronGeometry, OctahedronBufferGeometry, IcosahedronGeometry, IcosahedronBufferGeometry, DodecahedronGeometry, DodecahedronBufferGeometry, PolyhedronGeometry, PolyhedronBufferGeometry, TubeGeometry, TubeBufferGeometry, TorusKnotGeometry, TorusKnotBufferGeometry, TorusGeometry, TorusBufferGeometry, TextGeometry, TextBufferGeometry, SphereGeometry, SphereBufferGeometry, RingGeometry, RingBufferGeometry, PlaneGeometry, PlaneBufferGeometry, LatheGeometry, LatheBufferGeometry, ShapeGeometry, ShapeBufferGeometry, ExtrudeGeometry, ExtrudeBufferGeometry, EdgesGeometry, ConeGeometry, ConeBufferGeometry, CylinderGeometry, CylinderBufferGeometry, CircleGeometry, CircleBufferGeometry, BoxGeometry, BoxBufferGeometry, ShadowMaterial, SpriteMaterial, RawShaderMaterial, ShaderMaterial, PointsMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshPhongMaterial, MeshToonMaterial, MeshNormalMaterial, MeshLambertMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshBasicMaterial, LineDashedMaterial, LineBasicMaterial, Material, Float64BufferAttribute, Float32BufferAttribute, Uint32BufferAttribute, Int32BufferAttribute, Uint16BufferAttribute, Int16BufferAttribute, Uint8ClampedBufferAttribute, Uint8BufferAttribute, Int8BufferAttribute, BufferAttribute, ArcCurve, CatmullRomCurve3, CubicBezierCurve, CubicBezierCurve3, EllipseCurve, LineCurve, LineCurve3, QuadraticBezierCurve, QuadraticBezierCurve3, SplineCurve, 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, 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, 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, BoxGeometry as CubeGeometry, Face4, LineStrip, LinePieces, MeshFaceMaterial, MultiMaterial, PointCloud, Particle, ParticleSystem, PointCloudMaterial, ParticleBasicMaterial, ParticleSystemMaterial, Vertex, DynamicBufferAttribute, Int8Attribute, Uint8Attribute, Uint8ClampedAttribute, Int16Attribute, Uint16Attribute, Int32Attribute, Uint32Attribute, Float32Attribute, Float64Attribute, ClosedSplineCurve3, SplineCurve3, Spline, AxisHelper, BoundingBoxHelper, EdgesHelper, WireframeHelper, XHRLoader, BinaryTextureLoader, GeometryUtils, Projector, CanvasRenderer, SceneUtils, LensFlare };\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n  // if the path tries to go above the root, `up` ends up > 0\n  var up = 0;\n  for (var i = parts.length - 1; i >= 0; i--) {\n    var last = parts[i];\n    if (last === '.') {\n      parts.splice(i, 1);\n    } else if (last === '..') {\n      parts.splice(i, 1);\n      up++;\n    } else if (up) {\n      parts.splice(i, 1);\n      up--;\n    }\n  }\n\n  // if the path is allowed to go above the root, restore leading ..s\n  if (allowAboveRoot) {\n    for (; up--; up) {\n      parts.unshift('..');\n    }\n  }\n\n  return parts;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n    /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar splitPath = function(filename) {\n  return splitPathRe.exec(filename).slice(1);\n};\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n  var resolvedPath = '',\n      resolvedAbsolute = false;\n\n  for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n    var path = (i >= 0) ? arguments[i] : process.cwd();\n\n    // Skip empty and invalid entries\n    if (typeof path !== 'string') {\n      throw new TypeError('Arguments to path.resolve must be strings');\n    } else if (!path) {\n      continue;\n    }\n\n    resolvedPath = path + '/' + resolvedPath;\n    resolvedAbsolute = path.charAt(0) === '/';\n  }\n\n  // At this point the path should be resolved to a full absolute path, but\n  // handle relative paths to be safe (might happen when process.cwd() fails)\n\n  // Normalize the path\n  resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n    return !!p;\n  }), !resolvedAbsolute).join('/');\n\n  return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n  var isAbsolute = exports.isAbsolute(path),\n      trailingSlash = substr(path, -1) === '/';\n\n  // Normalize the path\n  path = normalizeArray(filter(path.split('/'), function(p) {\n    return !!p;\n  }), !isAbsolute).join('/');\n\n  if (!path && !isAbsolute) {\n    path = '.';\n  }\n  if (path && trailingSlash) {\n    path += '/';\n  }\n\n  return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n  return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n  var paths = Array.prototype.slice.call(arguments, 0);\n  return exports.normalize(filter(paths, function(p, index) {\n    if (typeof p !== 'string') {\n      throw new TypeError('Arguments to path.join must be strings');\n    }\n    return p;\n  }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n  from = exports.resolve(from).substr(1);\n  to = exports.resolve(to).substr(1);\n\n  function trim(arr) {\n    var start = 0;\n    for (; start < arr.length; start++) {\n      if (arr[start] !== '') break;\n    }\n\n    var end = arr.length - 1;\n    for (; end >= 0; end--) {\n      if (arr[end] !== '') break;\n    }\n\n    if (start > end) return [];\n    return arr.slice(start, end - start + 1);\n  }\n\n  var fromParts = trim(from.split('/'));\n  var toParts = trim(to.split('/'));\n\n  var length = Math.min(fromParts.length, toParts.length);\n  var samePartsLength = length;\n  for (var i = 0; i < length; i++) {\n    if (fromParts[i] !== toParts[i]) {\n      samePartsLength = i;\n      break;\n    }\n  }\n\n  var outputParts = [];\n  for (var i = samePartsLength; i < fromParts.length; i++) {\n    outputParts.push('..');\n  }\n\n  outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n  return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function(path) {\n  var result = splitPath(path),\n      root = result[0],\n      dir = result[1];\n\n  if (!root && !dir) {\n    // No dirname whatsoever\n    return '.';\n  }\n\n  if (dir) {\n    // It has a dirname, strip trailing slash\n    dir = dir.substr(0, dir.length - 1);\n  }\n\n  return root + dir;\n};\n\n\nexports.basename = function(path, ext) {\n  var f = splitPath(path)[2];\n  // TODO: make this comparison case-insensitive on windows?\n  if (ext && f.substr(-1 * ext.length) === ext) {\n    f = f.substr(0, f.length - ext.length);\n  }\n  return f;\n};\n\n\nexports.extname = function(path) {\n  return splitPath(path)[3];\n};\n\nfunction filter (xs, f) {\n    if (xs.filter) return xs.filter(f);\n    var res = [];\n    for (var i = 0; i < xs.length; i++) {\n        if (f(xs[i], i, xs)) res.push(xs[i]);\n    }\n    return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n    ? function (str, start, len) { return str.substr(start, len) }\n    : function (str, start, len) {\n        if (start < 0) start = str.length + start;\n        return str.substr(start, len);\n    }\n;\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n  var len = b64.length\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=')\n  if (validLen === -1) validLen = len\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4)\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n  var curByte = 0\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen\n\n  for (var i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)]\n    arr[curByte++] = (tmp >> 16) & 0xFF\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF)\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(\n      uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n    ))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    )\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    )\n  }\n\n  return parts.join('')\n}\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n  var e, m\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var nBits = -7\n  var i = isLE ? (nBytes - 1) : 0\n  var d = isLE ? -1 : 1\n  var s = buffer[offset + i]\n\n  i += d\n\n  e = s & ((1 << (-nBits)) - 1)\n  s >>= (-nBits)\n  nBits += eLen\n  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  m = e & ((1 << (-nBits)) - 1)\n  e >>= (-nBits)\n  nBits += mLen\n  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  if (e === 0) {\n    e = 1 - eBias\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity)\n  } else {\n    m = m + Math.pow(2, mLen)\n    e = e - eBias\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n  var i = isLE ? 0 : (nBytes - 1)\n  var d = isLE ? 1 : -1\n  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n  value = Math.abs(value)\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0\n    e = eMax\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2)\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--\n      c *= 2\n    }\n    if (e + eBias >= 1) {\n      value += rt / c\n    } else {\n      value += rt * Math.pow(2, 1 - eBias)\n    }\n    if (value * c >= 2) {\n      e++\n      c /= 2\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0\n      e = eMax\n    } else if (e + eBias >= 1) {\n      m = ((value * c) - 1) * Math.pow(2, mLen)\n      e = e + eBias\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n      e = 0\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n  e = (e << mLen) | m\n  eLen += mLen\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n  buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n  return toString.call(arr) == '[object Array]';\n};\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license  MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n *   === true    Use Uint8Array implementation (fastest)\n *   === false   Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n *   - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n *     See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n *   - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n *   - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n *     incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n  ? global.TYPED_ARRAY_SUPPORT\n  : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n  try {\n    var arr = new Uint8Array(1)\n    arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n    return arr.foo() === 42 && // typed array instances can be augmented\n        typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n        arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n  } catch (e) {\n    return false\n  }\n}\n\nfunction kMaxLength () {\n  return Buffer.TYPED_ARRAY_SUPPORT\n    ? 0x7fffffff\n    : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n  if (kMaxLength() < length) {\n    throw new RangeError('Invalid typed array length')\n  }\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Return an augmented `Uint8Array` instance, for best performance\n    that = new Uint8Array(length)\n    that.__proto__ = Buffer.prototype\n  } else {\n    // Fallback: Return an object instance of the Buffer class\n    if (that === null) {\n      that = new Buffer(length)\n    }\n    that.length = length\n  }\n\n  return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n  if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n    return new Buffer(arg, encodingOrOffset, length)\n  }\n\n  // Common case.\n  if (typeof arg === 'number') {\n    if (typeof encodingOrOffset === 'string') {\n      throw new Error(\n        'If encoding is specified then the first argument must be a string'\n      )\n    }\n    return allocUnsafe(this, arg)\n  }\n  return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n  arr.__proto__ = Buffer.prototype\n  return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n  if (typeof value === 'number') {\n    throw new TypeError('\"value\" argument must not be a number')\n  }\n\n  if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n    return fromArrayBuffer(that, value, encodingOrOffset, length)\n  }\n\n  if (typeof value === 'string') {\n    return fromString(that, value, encodingOrOffset)\n  }\n\n  return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n  return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n  Buffer.prototype.__proto__ = Uint8Array.prototype\n  Buffer.__proto__ = Uint8Array\n  if (typeof Symbol !== 'undefined' && Symbol.species &&\n      Buffer[Symbol.species] === Buffer) {\n    // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n    Object.defineProperty(Buffer, Symbol.species, {\n      value: null,\n      configurable: true\n    })\n  }\n}\n\nfunction assertSize (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('\"size\" argument must be a number')\n  } else if (size < 0) {\n    throw new RangeError('\"size\" argument must not be negative')\n  }\n}\n\nfunction alloc (that, size, fill, encoding) {\n  assertSize(size)\n  if (size <= 0) {\n    return createBuffer(that, size)\n  }\n  if (fill !== undefined) {\n    // Only pay attention to encoding if it's a string. This\n    // prevents accidentally sending in a number that would\n    // be interpretted as a start offset.\n    return typeof encoding === 'string'\n      ? createBuffer(that, size).fill(fill, encoding)\n      : createBuffer(that, size).fill(fill)\n  }\n  return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n  return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n  assertSize(size)\n  that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) {\n    for (var i = 0; i < size; ++i) {\n      that[i] = 0\n    }\n  }\n  return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n  return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n  return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n  if (typeof encoding !== 'string' || encoding === '') {\n    encoding = 'utf8'\n  }\n\n  if (!Buffer.isEncoding(encoding)) {\n    throw new TypeError('\"encoding\" must be a valid string encoding')\n  }\n\n  var length = byteLength(string, encoding) | 0\n  that = createBuffer(that, length)\n\n  var actual = that.write(string, encoding)\n\n  if (actual !== length) {\n    // Writing a hex string, for example, that contains invalid characters will\n    // cause everything after the first invalid character to be ignored. (e.g.\n    // 'abxxcd' will be treated as 'ab')\n    that = that.slice(0, actual)\n  }\n\n  return that\n}\n\nfunction fromArrayLike (that, array) {\n  var length = array.length < 0 ? 0 : checked(array.length) | 0\n  that = createBuffer(that, length)\n  for (var i = 0; i < length; i += 1) {\n    that[i] = array[i] & 255\n  }\n  return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n  array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n  if (byteOffset < 0 || array.byteLength < byteOffset) {\n    throw new RangeError('\\'offset\\' is out of bounds')\n  }\n\n  if (array.byteLength < byteOffset + (length || 0)) {\n    throw new RangeError('\\'length\\' is out of bounds')\n  }\n\n  if (byteOffset === undefined && length === undefined) {\n    array = new Uint8Array(array)\n  } else if (length === undefined) {\n    array = new Uint8Array(array, byteOffset)\n  } else {\n    array = new Uint8Array(array, byteOffset, length)\n  }\n\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Return an augmented `Uint8Array` instance, for best performance\n    that = array\n    that.__proto__ = Buffer.prototype\n  } else {\n    // Fallback: Return an object instance of the Buffer class\n    that = fromArrayLike(that, array)\n  }\n  return that\n}\n\nfunction fromObject (that, obj) {\n  if (Buffer.isBuffer(obj)) {\n    var len = checked(obj.length) | 0\n    that = createBuffer(that, len)\n\n    if (that.length === 0) {\n      return that\n    }\n\n    obj.copy(that, 0, 0, len)\n    return that\n  }\n\n  if (obj) {\n    if ((typeof ArrayBuffer !== 'undefined' &&\n        obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n      if (typeof obj.length !== 'number' || isnan(obj.length)) {\n        return createBuffer(that, 0)\n      }\n      return fromArrayLike(that, obj)\n    }\n\n    if (obj.type === 'Buffer' && isArray(obj.data)) {\n      return fromArrayLike(that, obj.data)\n    }\n  }\n\n  throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n  // Note: cannot use `length < kMaxLength()` here because that fails when\n  // length is NaN (which is otherwise coerced to zero.)\n  if (length >= kMaxLength()) {\n    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n                         'size: 0x' + kMaxLength().toString(16) + ' bytes')\n  }\n  return length | 0\n}\n\nfunction SlowBuffer (length) {\n  if (+length != length) { // eslint-disable-line eqeqeq\n    length = 0\n  }\n  return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n  return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n    throw new TypeError('Arguments must be Buffers')\n  }\n\n  if (a === b) return 0\n\n  var x = a.length\n  var y = b.length\n\n  for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (a[i] !== b[i]) {\n      x = a[i]\n      y = b[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n  switch (String(encoding).toLowerCase()) {\n    case 'hex':\n    case 'utf8':\n    case 'utf-8':\n    case 'ascii':\n    case 'latin1':\n    case 'binary':\n    case 'base64':\n    case 'ucs2':\n    case 'ucs-2':\n    case 'utf16le':\n    case 'utf-16le':\n      return true\n    default:\n      return false\n  }\n}\n\nBuffer.concat = function concat (list, length) {\n  if (!isArray(list)) {\n    throw new TypeError('\"list\" argument must be an Array of Buffers')\n  }\n\n  if (list.length === 0) {\n    return Buffer.alloc(0)\n  }\n\n  var i\n  if (length === undefined) {\n    length = 0\n    for (i = 0; i < list.length; ++i) {\n      length += list[i].length\n    }\n  }\n\n  var buffer = Buffer.allocUnsafe(length)\n  var pos = 0\n  for (i = 0; i < list.length; ++i) {\n    var buf = list[i]\n    if (!Buffer.isBuffer(buf)) {\n      throw new TypeError('\"list\" argument must be an Array of Buffers')\n    }\n    buf.copy(buffer, pos)\n    pos += buf.length\n  }\n  return buffer\n}\n\nfunction byteLength (string, encoding) {\n  if (Buffer.isBuffer(string)) {\n    return string.length\n  }\n  if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n      (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n    return string.byteLength\n  }\n  if (typeof string !== 'string') {\n    string = '' + string\n  }\n\n  var len = string.length\n  if (len === 0) return 0\n\n  // Use a for loop to avoid recursion\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return len\n      case 'utf8':\n      case 'utf-8':\n      case undefined:\n        return utf8ToBytes(string).length\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return len * 2\n      case 'hex':\n        return len >>> 1\n      case 'base64':\n        return base64ToBytes(string).length\n      default:\n        if (loweredCase) return utf8ToBytes(string).length // assume utf8\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n  var loweredCase = false\n\n  // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n  // property of a typed array.\n\n  // This behaves neither like String nor Uint8Array in that we set start/end\n  // to their upper/lower bounds if the value passed is out of range.\n  // undefined is handled specially as per ECMA-262 6th Edition,\n  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n  if (start === undefined || start < 0) {\n    start = 0\n  }\n  // Return early if start > this.length. Done here to prevent potential uint32\n  // coercion fail below.\n  if (start > this.length) {\n    return ''\n  }\n\n  if (end === undefined || end > this.length) {\n    end = this.length\n  }\n\n  if (end <= 0) {\n    return ''\n  }\n\n  // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n  end >>>= 0\n  start >>>= 0\n\n  if (end <= start) {\n    return ''\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  while (true) {\n    switch (encoding) {\n      case 'hex':\n        return hexSlice(this, start, end)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Slice(this, start, end)\n\n      case 'ascii':\n        return asciiSlice(this, start, end)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Slice(this, start, end)\n\n      case 'base64':\n        return base64Slice(this, start, end)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return utf16leSlice(this, start, end)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = (encoding + '').toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n  var i = b[n]\n  b[n] = b[m]\n  b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n  var len = this.length\n  if (len % 2 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 16-bits')\n  }\n  for (var i = 0; i < len; i += 2) {\n    swap(this, i, i + 1)\n  }\n  return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n  var len = this.length\n  if (len % 4 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 32-bits')\n  }\n  for (var i = 0; i < len; i += 4) {\n    swap(this, i, i + 3)\n    swap(this, i + 1, i + 2)\n  }\n  return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n  var len = this.length\n  if (len % 8 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 64-bits')\n  }\n  for (var i = 0; i < len; i += 8) {\n    swap(this, i, i + 7)\n    swap(this, i + 1, i + 6)\n    swap(this, i + 2, i + 5)\n    swap(this, i + 3, i + 4)\n  }\n  return this\n}\n\nBuffer.prototype.toString = function toString () {\n  var length = this.length | 0\n  if (length === 0) return ''\n  if (arguments.length === 0) return utf8Slice(this, 0, length)\n  return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n  if (this === b) return true\n  return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n  var str = ''\n  var max = exports.INSPECT_MAX_BYTES\n  if (this.length > 0) {\n    str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n    if (this.length > max) str += ' ... '\n  }\n  return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n  if (!Buffer.isBuffer(target)) {\n    throw new TypeError('Argument must be a Buffer')\n  }\n\n  if (start === undefined) {\n    start = 0\n  }\n  if (end === undefined) {\n    end = target ? target.length : 0\n  }\n  if (thisStart === undefined) {\n    thisStart = 0\n  }\n  if (thisEnd === undefined) {\n    thisEnd = this.length\n  }\n\n  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n    throw new RangeError('out of range index')\n  }\n\n  if (thisStart >= thisEnd && start >= end) {\n    return 0\n  }\n  if (thisStart >= thisEnd) {\n    return -1\n  }\n  if (start >= end) {\n    return 1\n  }\n\n  start >>>= 0\n  end >>>= 0\n  thisStart >>>= 0\n  thisEnd >>>= 0\n\n  if (this === target) return 0\n\n  var x = thisEnd - thisStart\n  var y = end - start\n  var len = Math.min(x, y)\n\n  var thisCopy = this.slice(thisStart, thisEnd)\n  var targetCopy = target.slice(start, end)\n\n  for (var i = 0; i < len; ++i) {\n    if (thisCopy[i] !== targetCopy[i]) {\n      x = thisCopy[i]\n      y = targetCopy[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n  // Empty buffer means no match\n  if (buffer.length === 0) return -1\n\n  // Normalize byteOffset\n  if (typeof byteOffset === 'string') {\n    encoding = byteOffset\n    byteOffset = 0\n  } else if (byteOffset > 0x7fffffff) {\n    byteOffset = 0x7fffffff\n  } else if (byteOffset < -0x80000000) {\n    byteOffset = -0x80000000\n  }\n  byteOffset = +byteOffset  // Coerce to Number.\n  if (isNaN(byteOffset)) {\n    // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n    byteOffset = dir ? 0 : (buffer.length - 1)\n  }\n\n  // Normalize byteOffset: negative offsets start from the end of the buffer\n  if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n  if (byteOffset >= buffer.length) {\n    if (dir) return -1\n    else byteOffset = buffer.length - 1\n  } else if (byteOffset < 0) {\n    if (dir) byteOffset = 0\n    else return -1\n  }\n\n  // Normalize val\n  if (typeof val === 'string') {\n    val = Buffer.from(val, encoding)\n  }\n\n  // Finally, search either indexOf (if dir is true) or lastIndexOf\n  if (Buffer.isBuffer(val)) {\n    // Special case: looking for empty string/buffer always fails\n    if (val.length === 0) {\n      return -1\n    }\n    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n  } else if (typeof val === 'number') {\n    val = val & 0xFF // Search for a byte value [0-255]\n    if (Buffer.TYPED_ARRAY_SUPPORT &&\n        typeof Uint8Array.prototype.indexOf === 'function') {\n      if (dir) {\n        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n      } else {\n        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n      }\n    }\n    return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n  }\n\n  throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n  var indexSize = 1\n  var arrLength = arr.length\n  var valLength = val.length\n\n  if (encoding !== undefined) {\n    encoding = String(encoding).toLowerCase()\n    if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n        encoding === 'utf16le' || encoding === 'utf-16le') {\n      if (arr.length < 2 || val.length < 2) {\n        return -1\n      }\n      indexSize = 2\n      arrLength /= 2\n      valLength /= 2\n      byteOffset /= 2\n    }\n  }\n\n  function read (buf, i) {\n    if (indexSize === 1) {\n      return buf[i]\n    } else {\n      return buf.readUInt16BE(i * indexSize)\n    }\n  }\n\n  var i\n  if (dir) {\n    var foundIndex = -1\n    for (i = byteOffset; i < arrLength; i++) {\n      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n        if (foundIndex === -1) foundIndex = i\n        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n      } else {\n        if (foundIndex !== -1) i -= i - foundIndex\n        foundIndex = -1\n      }\n    }\n  } else {\n    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n    for (i = byteOffset; i >= 0; i--) {\n      var found = true\n      for (var j = 0; j < valLength; j++) {\n        if (read(arr, i + j) !== read(val, j)) {\n          found = false\n          break\n        }\n      }\n      if (found) return i\n    }\n  }\n\n  return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n  return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n  offset = Number(offset) || 0\n  var remaining = buf.length - offset\n  if (!length) {\n    length = remaining\n  } else {\n    length = Number(length)\n    if (length > remaining) {\n      length = remaining\n    }\n  }\n\n  // must be an even number of digits\n  var strLen = string.length\n  if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n  if (length > strLen / 2) {\n    length = strLen / 2\n  }\n  for (var i = 0; i < length; ++i) {\n    var parsed = parseInt(string.substr(i * 2, 2), 16)\n    if (isNaN(parsed)) return i\n    buf[offset + i] = parsed\n  }\n  return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n  return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n  return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n  return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n  // Buffer#write(string)\n  if (offset === undefined) {\n    encoding = 'utf8'\n    length = this.length\n    offset = 0\n  // Buffer#write(string, encoding)\n  } else if (length === undefined && typeof offset === 'string') {\n    encoding = offset\n    length = this.length\n    offset = 0\n  // Buffer#write(string, offset[, length][, encoding])\n  } else if (isFinite(offset)) {\n    offset = offset | 0\n    if (isFinite(length)) {\n      length = length | 0\n      if (encoding === undefined) encoding = 'utf8'\n    } else {\n      encoding = length\n      length = undefined\n    }\n  // legacy write(string, encoding, offset, length) - remove in v0.13\n  } else {\n    throw new Error(\n      'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n    )\n  }\n\n  var remaining = this.length - offset\n  if (length === undefined || length > remaining) length = remaining\n\n  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n    throw new RangeError('Attempt to write outside buffer bounds')\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'hex':\n        return hexWrite(this, string, offset, length)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Write(this, string, offset, length)\n\n      case 'ascii':\n        return asciiWrite(this, string, offset, length)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Write(this, string, offset, length)\n\n      case 'base64':\n        // Warning: maxLength not taken into account in base64Write\n        return base64Write(this, string, offset, length)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return ucs2Write(this, string, offset, length)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n  return {\n    type: 'Buffer',\n    data: Array.prototype.slice.call(this._arr || this, 0)\n  }\n}\n\nfunction base64Slice (buf, start, end) {\n  if (start === 0 && end === buf.length) {\n    return base64.fromByteArray(buf)\n  } else {\n    return base64.fromByteArray(buf.slice(start, end))\n  }\n}\n\nfunction utf8Slice (buf, start, end) {\n  end = Math.min(buf.length, end)\n  var res = []\n\n  var i = start\n  while (i < end) {\n    var firstByte = buf[i]\n    var codePoint = null\n    var bytesPerSequence = (firstByte > 0xEF) ? 4\n      : (firstByte > 0xDF) ? 3\n      : (firstByte > 0xBF) ? 2\n      : 1\n\n    if (i + bytesPerSequence <= end) {\n      var secondByte, thirdByte, fourthByte, tempCodePoint\n\n      switch (bytesPerSequence) {\n        case 1:\n          if (firstByte < 0x80) {\n            codePoint = firstByte\n          }\n          break\n        case 2:\n          secondByte = buf[i + 1]\n          if ((secondByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n            if (tempCodePoint > 0x7F) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 3:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 4:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          fourthByte = buf[i + 3]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n              codePoint = tempCodePoint\n            }\n          }\n      }\n    }\n\n    if (codePoint === null) {\n      // we did not generate a valid codePoint so insert a\n      // replacement char (U+FFFD) and advance only 1 byte\n      codePoint = 0xFFFD\n      bytesPerSequence = 1\n    } else if (codePoint > 0xFFFF) {\n      // encode to utf16 (surrogate pair dance)\n      codePoint -= 0x10000\n      res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n      codePoint = 0xDC00 | codePoint & 0x3FF\n    }\n\n    res.push(codePoint)\n    i += bytesPerSequence\n  }\n\n  return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n  var len = codePoints.length\n  if (len <= MAX_ARGUMENTS_LENGTH) {\n    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n  }\n\n  // Decode in chunks to avoid \"call stack size exceeded\".\n  var res = ''\n  var i = 0\n  while (i < len) {\n    res += String.fromCharCode.apply(\n      String,\n      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n    )\n  }\n  return res\n}\n\nfunction asciiSlice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i] & 0x7F)\n  }\n  return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i])\n  }\n  return ret\n}\n\nfunction hexSlice (buf, start, end) {\n  var len = buf.length\n\n  if (!start || start < 0) start = 0\n  if (!end || end < 0 || end > len) end = len\n\n  var out = ''\n  for (var i = start; i < end; ++i) {\n    out += toHex(buf[i])\n  }\n  return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n  var bytes = buf.slice(start, end)\n  var res = ''\n  for (var i = 0; i < bytes.length; i += 2) {\n    res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n  }\n  return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n  var len = this.length\n  start = ~~start\n  end = end === undefined ? len : ~~end\n\n  if (start < 0) {\n    start += len\n    if (start < 0) start = 0\n  } else if (start > len) {\n    start = len\n  }\n\n  if (end < 0) {\n    end += len\n    if (end < 0) end = 0\n  } else if (end > len) {\n    end = len\n  }\n\n  if (end < start) end = start\n\n  var newBuf\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    newBuf = this.subarray(start, end)\n    newBuf.__proto__ = Buffer.prototype\n  } else {\n    var sliceLen = end - start\n    newBuf = new Buffer(sliceLen, undefined)\n    for (var i = 0; i < sliceLen; ++i) {\n      newBuf[i] = this[i + start]\n    }\n  }\n\n  return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    checkOffset(offset, byteLength, this.length)\n  }\n\n  var val = this[offset + --byteLength]\n  var mul = 1\n  while (byteLength > 0 && (mul *= 0x100)) {\n    val += this[offset + --byteLength] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return ((this[offset]) |\n      (this[offset + 1] << 8) |\n      (this[offset + 2] << 16)) +\n      (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] * 0x1000000) +\n    ((this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var i = byteLength\n  var mul = 1\n  var val = this[offset + --i]\n  while (i > 0 && (mul *= 0x100)) {\n    val += this[offset + --i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  if (!(this[offset] & 0x80)) return (this[offset])\n  return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset] | (this[offset + 1] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset + 1] | (this[offset] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset]) |\n    (this[offset + 1] << 8) |\n    (this[offset + 2] << 16) |\n    (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] << 24) |\n    (this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n  if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n  if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var mul = 1\n  var i = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n    buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n      (littleEndian ? i : 1 - i) * 8\n  }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n  } else {\n    objectWriteUInt16(this, value, offset, true)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = (value & 0xff)\n  } else {\n    objectWriteUInt16(this, value, offset, false)\n  }\n  return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffffffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n    buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n  }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset + 3] = (value >>> 24)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 1] = (value >>> 8)\n    this[offset] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, true)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, false)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = 0\n  var mul = 1\n  var sub = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  var sub = 0\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  if (value < 0) value = 0xff + value + 1\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n  } else {\n    objectWriteUInt16(this, value, offset, true)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = (value & 0xff)\n  } else {\n    objectWriteUInt16(this, value, offset, false)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 3] = (value >>> 24)\n  } else {\n    objectWriteUInt32(this, value, offset, true)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (value < 0) value = 0xffffffff + value + 1\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, false)\n  }\n  return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n  if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 23, 4)\n  return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 52, 8)\n  return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n  if (!start) start = 0\n  if (!end && end !== 0) end = this.length\n  if (targetStart >= target.length) targetStart = target.length\n  if (!targetStart) targetStart = 0\n  if (end > 0 && end < start) end = start\n\n  // Copy 0 bytes; we're done\n  if (end === start) return 0\n  if (target.length === 0 || this.length === 0) return 0\n\n  // Fatal error conditions\n  if (targetStart < 0) {\n    throw new RangeError('targetStart out of bounds')\n  }\n  if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n  if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n  // Are we oob?\n  if (end > this.length) end = this.length\n  if (target.length - targetStart < end - start) {\n    end = target.length - targetStart + start\n  }\n\n  var len = end - start\n  var i\n\n  if (this === target && start < targetStart && targetStart < end) {\n    // descending copy from end\n    for (i = len - 1; i >= 0; --i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n    // ascending copy from start\n    for (i = 0; i < len; ++i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else {\n    Uint8Array.prototype.set.call(\n      target,\n      this.subarray(start, start + len),\n      targetStart\n    )\n  }\n\n  return len\n}\n\n// Usage:\n//    buffer.fill(number[, offset[, end]])\n//    buffer.fill(buffer[, offset[, end]])\n//    buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n  // Handle string cases:\n  if (typeof val === 'string') {\n    if (typeof start === 'string') {\n      encoding = start\n      start = 0\n      end = this.length\n    } else if (typeof end === 'string') {\n      encoding = end\n      end = this.length\n    }\n    if (val.length === 1) {\n      var code = val.charCodeAt(0)\n      if (code < 256) {\n        val = code\n      }\n    }\n    if (encoding !== undefined && typeof encoding !== 'string') {\n      throw new TypeError('encoding must be a string')\n    }\n    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n      throw new TypeError('Unknown encoding: ' + encoding)\n    }\n  } else if (typeof val === 'number') {\n    val = val & 255\n  }\n\n  // Invalid ranges are not set to a default, so can range check early.\n  if (start < 0 || this.length < start || this.length < end) {\n    throw new RangeError('Out of range index')\n  }\n\n  if (end <= start) {\n    return this\n  }\n\n  start = start >>> 0\n  end = end === undefined ? this.length : end >>> 0\n\n  if (!val) val = 0\n\n  var i\n  if (typeof val === 'number') {\n    for (i = start; i < end; ++i) {\n      this[i] = val\n    }\n  } else {\n    var bytes = Buffer.isBuffer(val)\n      ? val\n      : utf8ToBytes(new Buffer(val, encoding).toString())\n    var len = bytes.length\n    for (i = 0; i < end - start; ++i) {\n      this[i + start] = bytes[i % len]\n    }\n  }\n\n  return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n  // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n  str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n  // Node converts strings with length < 2 to ''\n  if (str.length < 2) return ''\n  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n  while (str.length % 4 !== 0) {\n    str = str + '='\n  }\n  return str\n}\n\nfunction stringtrim (str) {\n  if (str.trim) return str.trim()\n  return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n  if (n < 16) return '0' + n.toString(16)\n  return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n  units = units || Infinity\n  var codePoint\n  var length = string.length\n  var leadSurrogate = null\n  var bytes = []\n\n  for (var i = 0; i < length; ++i) {\n    codePoint = string.charCodeAt(i)\n\n    // is surrogate component\n    if (codePoint > 0xD7FF && codePoint < 0xE000) {\n      // last char was a lead\n      if (!leadSurrogate) {\n        // no lead yet\n        if (codePoint > 0xDBFF) {\n          // unexpected trail\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        } else if (i + 1 === length) {\n          // unpaired lead\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        }\n\n        // valid lead\n        leadSurrogate = codePoint\n\n        continue\n      }\n\n      // 2 leads in a row\n      if (codePoint < 0xDC00) {\n        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n        leadSurrogate = codePoint\n        continue\n      }\n\n      // valid surrogate pair\n      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n    } else if (leadSurrogate) {\n      // valid bmp char, but last char was a lead\n      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n    }\n\n    leadSurrogate = null\n\n    // encode utf8\n    if (codePoint < 0x80) {\n      if ((units -= 1) < 0) break\n      bytes.push(codePoint)\n    } else if (codePoint < 0x800) {\n      if ((units -= 2) < 0) break\n      bytes.push(\n        codePoint >> 0x6 | 0xC0,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x10000) {\n      if ((units -= 3) < 0) break\n      bytes.push(\n        codePoint >> 0xC | 0xE0,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x110000) {\n      if ((units -= 4) < 0) break\n      bytes.push(\n        codePoint >> 0x12 | 0xF0,\n        codePoint >> 0xC & 0x3F | 0x80,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else {\n      throw new Error('Invalid code point')\n    }\n  }\n\n  return bytes\n}\n\nfunction asciiToBytes (str) {\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    // Node's code seems to be doing this and not & 0x7F..\n    byteArray.push(str.charCodeAt(i) & 0xFF)\n  }\n  return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n  var c, hi, lo\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    if ((units -= 2) < 0) break\n\n    c = str.charCodeAt(i)\n    hi = c >> 8\n    lo = c % 256\n    byteArray.push(lo)\n    byteArray.push(hi)\n  }\n\n  return byteArray\n}\n\nfunction base64ToBytes (str) {\n  return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n  for (var i = 0; i < length; ++i) {\n    if ((i + offset >= dst.length) || (i >= src.length)) break\n    dst[i + offset] = src[i]\n  }\n  return i\n}\n\nfunction isnan (val) {\n  return val !== val // eslint-disable-line no-self-compare\n}\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n  for (var key in src) {\n    dst[key] = src[key]\n  }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n  module.exports = buffer\n} else {\n  // Copy properties from require('buffer')\n  copyProps(buffer, exports)\n  exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n  return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n  if (typeof arg === 'number') {\n    throw new TypeError('Argument must not be a number')\n  }\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  var buf = Buffer(size)\n  if (fill !== undefined) {\n    if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n  } else {\n    buf.fill(0)\n  }\n  return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return buffer.SlowBuffer(size)\n}\n","'use strict'\n\nfunction oldBrowser () {\n  throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n  module.exports = randomBytes\n} else {\n  module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n  // phantomjs needs to throw\n  if (size > 65536) throw new Error('requested too many random bytes')\n  // in case browserify  isn't using the Uint8Array version\n  var rawBytes = new global.Uint8Array(size)\n\n  // This will not work in older browsers.\n  // See https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n  if (size > 0) {  // getRandomValues fails on IE if size == 0\n    crypto.getRandomValues(rawBytes)\n  }\n\n  // XXX: phantomjs doesn't like a buffer being passed here\n  var bytes = Buffer.from(rawBytes.buffer)\n\n  if (typeof cb === 'function') {\n    return process.nextTick(function () {\n      cb(null, bytes)\n    })\n  }\n\n  return bytes\n}\n","if (typeof Object.create === 'function') {\n  // implementation from standard node.js 'util' module\n  module.exports = function inherits(ctor, superCtor) {\n    ctor.super_ = superCtor\n    ctor.prototype = Object.create(superCtor.prototype, {\n      constructor: {\n        value: ctor,\n        enumerable: false,\n        writable: true,\n        configurable: true\n      }\n    });\n  };\n} else {\n  // old school shim for old browsers\n  module.exports = function inherits(ctor, superCtor) {\n    ctor.super_ = superCtor\n    var TempCtor = function () {}\n    TempCtor.prototype = superCtor.prototype\n    ctor.prototype = new TempCtor()\n    ctor.prototype.constructor = ctor\n  }\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n  this._events = this._events || {};\n  this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n  if (!isNumber(n) || n < 0 || isNaN(n))\n    throw TypeError('n must be a positive number');\n  this._maxListeners = n;\n  return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n  var er, handler, len, args, i, listeners;\n\n  if (!this._events)\n    this._events = {};\n\n  // If there is no 'error' event listener then throw.\n  if (type === 'error') {\n    if (!this._events.error ||\n        (isObject(this._events.error) && !this._events.error.length)) {\n      er = arguments[1];\n      if (er instanceof Error) {\n        throw er; // Unhandled 'error' event\n      } else {\n        // At least give some kind of context to the user\n        var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n        err.context = er;\n        throw err;\n      }\n    }\n  }\n\n  handler = this._events[type];\n\n  if (isUndefined(handler))\n    return false;\n\n  if (isFunction(handler)) {\n    switch (arguments.length) {\n      // fast cases\n      case 1:\n        handler.call(this);\n        break;\n      case 2:\n        handler.call(this, arguments[1]);\n        break;\n      case 3:\n        handler.call(this, arguments[1], arguments[2]);\n        break;\n      // slower\n      default:\n        args = Array.prototype.slice.call(arguments, 1);\n        handler.apply(this, args);\n    }\n  } else if (isObject(handler)) {\n    args = Array.prototype.slice.call(arguments, 1);\n    listeners = handler.slice();\n    len = listeners.length;\n    for (i = 0; i < len; i++)\n      listeners[i].apply(this, args);\n  }\n\n  return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n  var m;\n\n  if (!isFunction(listener))\n    throw TypeError('listener must be a function');\n\n  if (!this._events)\n    this._events = {};\n\n  // To avoid recursion in the case that type === \"newListener\"! Before\n  // adding it to the listeners, first emit \"newListener\".\n  if (this._events.newListener)\n    this.emit('newListener', type,\n              isFunction(listener.listener) ?\n              listener.listener : listener);\n\n  if (!this._events[type])\n    // Optimize the case of one listener. Don't need the extra array object.\n    this._events[type] = listener;\n  else if (isObject(this._events[type]))\n    // If we've already got an array, just append.\n    this._events[type].push(listener);\n  else\n    // Adding the second element, need to change to array.\n    this._events[type] = [this._events[type], listener];\n\n  // Check for listener leak\n  if (isObject(this._events[type]) && !this._events[type].warned) {\n    if (!isUndefined(this._maxListeners)) {\n      m = this._maxListeners;\n    } else {\n      m = EventEmitter.defaultMaxListeners;\n    }\n\n    if (m && m > 0 && this._events[type].length > m) {\n      this._events[type].warned = true;\n      console.error('(node) warning: possible EventEmitter memory ' +\n                    'leak detected. %d listeners added. ' +\n                    'Use emitter.setMaxListeners() to increase limit.',\n                    this._events[type].length);\n      if (typeof console.trace === 'function') {\n        // not supported in IE 10\n        console.trace();\n      }\n    }\n  }\n\n  return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n  if (!isFunction(listener))\n    throw TypeError('listener must be a function');\n\n  var fired = false;\n\n  function g() {\n    this.removeListener(type, g);\n\n    if (!fired) {\n      fired = true;\n      listener.apply(this, arguments);\n    }\n  }\n\n  g.listener = listener;\n  this.on(type, g);\n\n  return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n  var list, position, length, i;\n\n  if (!isFunction(listener))\n    throw TypeError('listener must be a function');\n\n  if (!this._events || !this._events[type])\n    return this;\n\n  list = this._events[type];\n  length = list.length;\n  position = -1;\n\n  if (list === listener ||\n      (isFunction(list.listener) && list.listener === listener)) {\n    delete this._events[type];\n    if (this._events.removeListener)\n      this.emit('removeListener', type, listener);\n\n  } else if (isObject(list)) {\n    for (i = length; i-- > 0;) {\n      if (list[i] === listener ||\n          (list[i].listener && list[i].listener === listener)) {\n        position = i;\n        break;\n      }\n    }\n\n    if (position < 0)\n      return this;\n\n    if (list.length === 1) {\n      list.length = 0;\n      delete this._events[type];\n    } else {\n      list.splice(position, 1);\n    }\n\n    if (this._events.removeListener)\n      this.emit('removeListener', type, listener);\n  }\n\n  return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n  var key, listeners;\n\n  if (!this._events)\n    return this;\n\n  // not listening for removeListener, no need to emit\n  if (!this._events.removeListener) {\n    if (arguments.length === 0)\n      this._events = {};\n    else if (this._events[type])\n      delete this._events[type];\n    return this;\n  }\n\n  // emit removeListener for all listeners on all events\n  if (arguments.length === 0) {\n    for (key in this._events) {\n      if (key === 'removeListener') continue;\n      this.removeAllListeners(key);\n    }\n    this.removeAllListeners('removeListener');\n    this._events = {};\n    return this;\n  }\n\n  listeners = this._events[type];\n\n  if (isFunction(listeners)) {\n    this.removeListener(type, listeners);\n  } else if (listeners) {\n    // LIFO order\n    while (listeners.length)\n      this.removeListener(type, listeners[listeners.length - 1]);\n  }\n  delete this._events[type];\n\n  return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n  var ret;\n  if (!this._events || !this._events[type])\n    ret = [];\n  else if (isFunction(this._events[type]))\n    ret = [this._events[type]];\n  else\n    ret = this._events[type].slice();\n  return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n  if (this._events) {\n    var evlistener = this._events[type];\n\n    if (isFunction(evlistener))\n      return 1;\n    else if (evlistener)\n      return evlistener.length;\n  }\n  return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n  return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\n","'use strict';\n\nif (!process.version ||\n    process.version.indexOf('v0.') === 0 ||\n    process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n  module.exports = { nextTick: nextTick };\n} else {\n  module.exports = process\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n  if (typeof fn !== 'function') {\n    throw new TypeError('\"callback\" argument must be a function');\n  }\n  var len = arguments.length;\n  var args, i;\n  switch (len) {\n  case 0:\n  case 1:\n    return process.nextTick(fn);\n  case 2:\n    return process.nextTick(function afterTickOne() {\n      fn.call(null, arg1);\n    });\n  case 3:\n    return process.nextTick(function afterTickTwo() {\n      fn.call(null, arg1, arg2);\n    });\n  case 4:\n    return process.nextTick(function afterTickThree() {\n      fn.call(null, arg1, arg2, arg3);\n    });\n  default:\n    args = new Array(len - 1);\n    i = 0;\n    while (i < args.length) {\n      args[i++] = arguments[i];\n    }\n    return process.nextTick(function afterTick() {\n      fn.apply(null, args);\n    });\n  }\n}\n\n","module.exports = require('events').EventEmitter;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n  if (Array.isArray) {\n    return Array.isArray(arg);\n  }\n  return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n  return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n  return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n  return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n  return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n  return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n  return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n  return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n  return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n  return arg === null ||\n         typeof arg === 'boolean' ||\n         typeof arg === 'number' ||\n         typeof arg === 'string' ||\n         typeof arg === 'symbol' ||  // ES6 symbol\n         typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = Buffer.isBuffer;\n\nfunction objectToString(o) {\n  return Object.prototype.toString.call(o);\n}\n","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n  src.copy(target, offset);\n}\n\nmodule.exports = function () {\n  function BufferList() {\n    _classCallCheck(this, BufferList);\n\n    this.head = null;\n    this.tail = null;\n    this.length = 0;\n  }\n\n  BufferList.prototype.push = function push(v) {\n    var entry = { data: v, next: null };\n    if (this.length > 0) this.tail.next = entry;else this.head = entry;\n    this.tail = entry;\n    ++this.length;\n  };\n\n  BufferList.prototype.unshift = function unshift(v) {\n    var entry = { data: v, next: this.head };\n    if (this.length === 0) this.tail = entry;\n    this.head = entry;\n    ++this.length;\n  };\n\n  BufferList.prototype.shift = function shift() {\n    if (this.length === 0) return;\n    var ret = this.head.data;\n    if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n    --this.length;\n    return ret;\n  };\n\n  BufferList.prototype.clear = function clear() {\n    this.head = this.tail = null;\n    this.length = 0;\n  };\n\n  BufferList.prototype.join = function join(s) {\n    if (this.length === 0) return '';\n    var p = this.head;\n    var ret = '' + p.data;\n    while (p = p.next) {\n      ret += s + p.data;\n    }return ret;\n  };\n\n  BufferList.prototype.concat = function concat(n) {\n    if (this.length === 0) return Buffer.alloc(0);\n    if (this.length === 1) return this.head.data;\n    var ret = Buffer.allocUnsafe(n >>> 0);\n    var p = this.head;\n    var i = 0;\n    while (p) {\n      copyBuffer(p.data, ret, i);\n      i += p.data.length;\n      p = p.next;\n    }\n    return ret;\n  };\n\n  return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n  module.exports.prototype[util.inspect.custom] = function () {\n    var obj = util.inspect({ length: this.length });\n    return this.constructor.name + ' ' + obj;\n  };\n}","'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n  var _this = this;\n\n  var readableDestroyed = this._readableState && this._readableState.destroyed;\n  var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n  if (readableDestroyed || writableDestroyed) {\n    if (cb) {\n      cb(err);\n    } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\n      pna.nextTick(emitErrorNT, this, err);\n    }\n    return this;\n  }\n\n  // we set destroyed to true before firing error callbacks in order\n  // to make it re-entrance safe in case destroy() is called within callbacks\n\n  if (this._readableState) {\n    this._readableState.destroyed = true;\n  }\n\n  // if this is a duplex stream mark the writable part as destroyed as well\n  if (this._writableState) {\n    this._writableState.destroyed = true;\n  }\n\n  this._destroy(err || null, function (err) {\n    if (!cb && err) {\n      pna.nextTick(emitErrorNT, _this, err);\n      if (_this._writableState) {\n        _this._writableState.errorEmitted = true;\n      }\n    } else if (cb) {\n      cb(err);\n    }\n  });\n\n  return this;\n}\n\nfunction undestroy() {\n  if (this._readableState) {\n    this._readableState.destroyed = false;\n    this._readableState.reading = false;\n    this._readableState.ended = false;\n    this._readableState.endEmitted = false;\n  }\n\n  if (this._writableState) {\n    this._writableState.destroyed = false;\n    this._writableState.ended = false;\n    this._writableState.ending = false;\n    this._writableState.finished = false;\n    this._writableState.errorEmitted = false;\n  }\n}\n\nfunction emitErrorNT(self, err) {\n  self.emit('error', err);\n}\n\nmodule.exports = {\n  destroy: destroy,\n  undestroy: undestroy\n};","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n  if (config('noDeprecation')) {\n    return fn;\n  }\n\n  var warned = false;\n  function deprecated() {\n    if (!warned) {\n      if (config('throwDeprecation')) {\n        throw new Error(msg);\n      } else if (config('traceDeprecation')) {\n        console.trace(msg);\n      } else {\n        console.warn(msg);\n      }\n      warned = true;\n    }\n    return fn.apply(this, arguments);\n  }\n\n  return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n  // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n  try {\n    if (!global.localStorage) return false;\n  } catch (_) {\n    return false;\n  }\n  var val = global.localStorage[name];\n  if (null == val) return false;\n  return String(val).toLowerCase() === 'true';\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n  this.chunk = chunk;\n  this.encoding = encoding;\n  this.callback = cb;\n  this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n  var _this = this;\n\n  this.next = null;\n  this.entry = null;\n  this.finish = function () {\n    onCorkedFinish(_this, state);\n  };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar internalUtil = {\n  deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream.\n  // These options can be provided separately as readableXXX and writableXXX.\n  var isDuplex = stream instanceof Duplex;\n\n  // object stream flag to indicate whether or not this stream\n  // contains buffers or objects.\n  this.objectMode = !!options.objectMode;\n\n  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n  // the point at which write() starts returning false\n  // Note: 0 is a valid value, means that we always return false if\n  // the entire buffer is not flushed immediately on write()\n  var hwm = options.highWaterMark;\n  var writableHwm = options.writableHighWaterMark;\n  var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n  if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n  // cast to ints.\n  this.highWaterMark = Math.floor(this.highWaterMark);\n\n  // if _final has been called\n  this.finalCalled = false;\n\n  // drain event flag.\n  this.needDrain = false;\n  // at the start of calling end()\n  this.ending = false;\n  // when end() has been called, and returned\n  this.ended = false;\n  // when 'finish' is emitted\n  this.finished = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // should we decode strings into buffers before passing to _write?\n  // this is here so that some node-core streams can optimize string\n  // handling at a lower level.\n  var noDecode = options.decodeStrings === false;\n  this.decodeStrings = !noDecode;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // not an actual buffer we keep track of, but a measurement\n  // of how much we're waiting to get pushed to some underlying\n  // socket or file.\n  this.length = 0;\n\n  // a flag to see when we're in the middle of a write.\n  this.writing = false;\n\n  // when true all writes will be buffered until .uncork() call\n  this.corked = 0;\n\n  // a flag to be able to tell if the onwrite cb is called immediately,\n  // or on a later tick.  We set this to true at first, because any\n  // actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first write call.\n  this.sync = true;\n\n  // a flag to know if we're processing previously buffered items, which\n  // may call the _write() callback in the same tick, so that we don't\n  // end up in an overlapped onwrite situation.\n  this.bufferProcessing = false;\n\n  // the callback that's passed to _write(chunk,cb)\n  this.onwrite = function (er) {\n    onwrite(stream, er);\n  };\n\n  // the callback that the user supplies to write(chunk,encoding,cb)\n  this.writecb = null;\n\n  // the amount that is being written when _write is called.\n  this.writelen = 0;\n\n  this.bufferedRequest = null;\n  this.lastBufferedRequest = null;\n\n  // number of pending user-supplied write callbacks\n  // this must be 0 before 'finish' can be emitted\n  this.pendingcb = 0;\n\n  // emit prefinish if the only thing we're waiting for is _write cbs\n  // This is relevant for synchronous Transform streams\n  this.prefinished = false;\n\n  // True if the error was already emitted and should not be thrown again\n  this.errorEmitted = false;\n\n  // count buffered requests\n  this.bufferedRequestCount = 0;\n\n  // allocate the first CorkedRequest, there is always\n  // one allocated and free to use, and we maintain at most two\n  this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n  var current = this.bufferedRequest;\n  var out = [];\n  while (current) {\n    out.push(current);\n    current = current.next;\n  }\n  return out;\n};\n\n(function () {\n  try {\n    Object.defineProperty(WritableState.prototype, 'buffer', {\n      get: internalUtil.deprecate(function () {\n        return this.getBuffer();\n      }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n    });\n  } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n  realHasInstance = Function.prototype[Symbol.hasInstance];\n  Object.defineProperty(Writable, Symbol.hasInstance, {\n    value: function (object) {\n      if (realHasInstance.call(this, object)) return true;\n      if (this !== Writable) return false;\n\n      return object && object._writableState instanceof WritableState;\n    }\n  });\n} else {\n  realHasInstance = function (object) {\n    return object instanceof this;\n  };\n}\n\nfunction Writable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  // Writable ctor is applied to Duplexes, too.\n  // `realHasInstance` is necessary because using plain `instanceof`\n  // would return false, as no `_writableState` property is attached.\n\n  // Trying to use the custom `instanceof` for Writable here will also break the\n  // Node.js LazyTransform implementation, which has a non-trivial getter for\n  // `_writableState` that would lead to infinite recursion.\n  if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n    return new Writable(options);\n  }\n\n  this._writableState = new WritableState(options, this);\n\n  // legacy.\n  this.writable = true;\n\n  if (options) {\n    if (typeof options.write === 'function') this._write = options.write;\n\n    if (typeof options.writev === 'function') this._writev = options.writev;\n\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n    if (typeof options.final === 'function') this._final = options.final;\n  }\n\n  Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n  this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n  var er = new Error('write after end');\n  // TODO: defer error events consistently everywhere, not just the cb\n  stream.emit('error', er);\n  pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n  var valid = true;\n  var er = false;\n\n  if (chunk === null) {\n    er = new TypeError('May not write null values to stream');\n  } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n    er = new TypeError('Invalid non-string/buffer chunk');\n  }\n  if (er) {\n    stream.emit('error', er);\n    pna.nextTick(cb, er);\n    valid = false;\n  }\n  return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  var ret = false;\n  var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n  if (isBuf && !Buffer.isBuffer(chunk)) {\n    chunk = _uint8ArrayToBuffer(chunk);\n  }\n\n  if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n\n  if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n  if (typeof cb !== 'function') cb = nop;\n\n  if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n    state.pendingcb++;\n    ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n  }\n\n  return ret;\n};\n\nWritable.prototype.cork = function () {\n  var state = this._writableState;\n\n  state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n  var state = this._writableState;\n\n  if (state.corked) {\n    state.corked--;\n\n    if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n  }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n  // node::ParseEncoding() requires lower case.\n  if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n  if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n  this._writableState.defaultEncoding = encoding;\n  return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n    chunk = Buffer.from(chunk, encoding);\n  }\n  return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function () {\n    return this._writableState.highWaterMark;\n  }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn.  Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n  if (!isBuf) {\n    var newChunk = decodeChunk(state, chunk, encoding);\n    if (chunk !== newChunk) {\n      isBuf = true;\n      encoding = 'buffer';\n      chunk = newChunk;\n    }\n  }\n  var len = state.objectMode ? 1 : chunk.length;\n\n  state.length += len;\n\n  var ret = state.length < state.highWaterMark;\n  // we must ensure that previous needDrain will not be reset to false.\n  if (!ret) state.needDrain = true;\n\n  if (state.writing || state.corked) {\n    var last = state.lastBufferedRequest;\n    state.lastBufferedRequest = {\n      chunk: chunk,\n      encoding: encoding,\n      isBuf: isBuf,\n      callback: cb,\n      next: null\n    };\n    if (last) {\n      last.next = state.lastBufferedRequest;\n    } else {\n      state.bufferedRequest = state.lastBufferedRequest;\n    }\n    state.bufferedRequestCount += 1;\n  } else {\n    doWrite(stream, state, false, len, chunk, encoding, cb);\n  }\n\n  return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n  state.writelen = len;\n  state.writecb = cb;\n  state.writing = true;\n  state.sync = true;\n  if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n  state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n  --state.pendingcb;\n\n  if (sync) {\n    // defer the callback if we are being called synchronously\n    // to avoid piling up things on the stack\n    pna.nextTick(cb, er);\n    // this can emit finish, and it will always happen\n    // after error\n    pna.nextTick(finishMaybe, stream, state);\n    stream._writableState.errorEmitted = true;\n    stream.emit('error', er);\n  } else {\n    // the caller expect this to happen before if\n    // it is async\n    cb(er);\n    stream._writableState.errorEmitted = true;\n    stream.emit('error', er);\n    // this can emit finish, but finish must\n    // always follow error\n    finishMaybe(stream, state);\n  }\n}\n\nfunction onwriteStateUpdate(state) {\n  state.writing = false;\n  state.writecb = null;\n  state.length -= state.writelen;\n  state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n  var state = stream._writableState;\n  var sync = state.sync;\n  var cb = state.writecb;\n\n  onwriteStateUpdate(state);\n\n  if (er) onwriteError(stream, state, sync, er, cb);else {\n    // Check if we're actually ready to finish, but don't emit yet\n    var finished = needFinish(state);\n\n    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n      clearBuffer(stream, state);\n    }\n\n    if (sync) {\n      /*<replacement>*/\n      asyncWrite(afterWrite, stream, state, finished, cb);\n      /*</replacement>*/\n    } else {\n      afterWrite(stream, state, finished, cb);\n    }\n  }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n  if (!finished) onwriteDrain(stream, state);\n  state.pendingcb--;\n  cb();\n  finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n  if (state.length === 0 && state.needDrain) {\n    state.needDrain = false;\n    stream.emit('drain');\n  }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n  state.bufferProcessing = true;\n  var entry = state.bufferedRequest;\n\n  if (stream._writev && entry && entry.next) {\n    // Fast case, write everything using _writev()\n    var l = state.bufferedRequestCount;\n    var buffer = new Array(l);\n    var holder = state.corkedRequestsFree;\n    holder.entry = entry;\n\n    var count = 0;\n    var allBuffers = true;\n    while (entry) {\n      buffer[count] = entry;\n      if (!entry.isBuf) allBuffers = false;\n      entry = entry.next;\n      count += 1;\n    }\n    buffer.allBuffers = allBuffers;\n\n    doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n    // doWrite is almost always async, defer these to save a bit of time\n    // as the hot path ends with doWrite\n    state.pendingcb++;\n    state.lastBufferedRequest = null;\n    if (holder.next) {\n      state.corkedRequestsFree = holder.next;\n      holder.next = null;\n    } else {\n      state.corkedRequestsFree = new CorkedRequest(state);\n    }\n    state.bufferedRequestCount = 0;\n  } else {\n    // Slow case, write chunks one-by-one\n    while (entry) {\n      var chunk = entry.chunk;\n      var encoding = entry.encoding;\n      var cb = entry.callback;\n      var len = state.objectMode ? 1 : chunk.length;\n\n      doWrite(stream, state, false, len, chunk, encoding, cb);\n      entry = entry.next;\n      state.bufferedRequestCount--;\n      // if we didn't call the onwrite immediately, then\n      // it means that we need to wait until it does.\n      // also, that means that the chunk and cb are currently\n      // being processed, so move the buffer counter past them.\n      if (state.writing) {\n        break;\n      }\n    }\n\n    if (entry === null) state.lastBufferedRequest = null;\n  }\n\n  state.bufferedRequest = entry;\n  state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n  cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n  var state = this._writableState;\n\n  if (typeof chunk === 'function') {\n    cb = chunk;\n    chunk = null;\n    encoding = null;\n  } else if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n\n  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n  // .end() fully uncorks\n  if (state.corked) {\n    state.corked = 1;\n    this.uncork();\n  }\n\n  // ignore unnecessary end() calls.\n  if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n  stream._final(function (err) {\n    state.pendingcb--;\n    if (err) {\n      stream.emit('error', err);\n    }\n    state.prefinished = true;\n    stream.emit('prefinish');\n    finishMaybe(stream, state);\n  });\n}\nfunction prefinish(stream, state) {\n  if (!state.prefinished && !state.finalCalled) {\n    if (typeof stream._final === 'function') {\n      state.pendingcb++;\n      state.finalCalled = true;\n      pna.nextTick(callFinal, stream, state);\n    } else {\n      state.prefinished = true;\n      stream.emit('prefinish');\n    }\n  }\n}\n\nfunction finishMaybe(stream, state) {\n  var need = needFinish(state);\n  if (need) {\n    prefinish(stream, state);\n    if (state.pendingcb === 0) {\n      state.finished = true;\n      stream.emit('finish');\n    }\n  }\n  return need;\n}\n\nfunction endWritable(stream, state, cb) {\n  state.ending = true;\n  finishMaybe(stream, state);\n  if (cb) {\n    if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n  }\n  state.ended = true;\n  stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n  var entry = corkReq.entry;\n  corkReq.entry = null;\n  while (entry) {\n    var cb = entry.callback;\n    state.pendingcb--;\n    cb(err);\n    entry = entry.next;\n  }\n  if (state.corkedRequestsFree) {\n    state.corkedRequestsFree.next = corkReq;\n  } else {\n    state.corkedRequestsFree = corkReq;\n  }\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n  get: function () {\n    if (this._writableState === undefined) {\n      return false;\n    }\n    return this._writableState.destroyed;\n  },\n  set: function (value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._writableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._writableState.destroyed = value;\n  }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n  this.end();\n  cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n  var keys = [];\n  for (var key in obj) {\n    keys.push(key);\n  }return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\n{\n  // avoid scope creep, the keys array can then be collected\n  var keys = objectKeys(Writable.prototype);\n  for (var v = 0; v < keys.length; v++) {\n    var method = keys[v];\n    if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n  }\n}\n\nfunction Duplex(options) {\n  if (!(this instanceof Duplex)) return new Duplex(options);\n\n  Readable.call(this, options);\n  Writable.call(this, options);\n\n  if (options && options.readable === false) this.readable = false;\n\n  if (options && options.writable === false) this.writable = false;\n\n  this.allowHalfOpen = true;\n  if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n  this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function () {\n    return this._writableState.highWaterMark;\n  }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n  // if we allow half-open state, or if the writable side ended,\n  // then we're ok.\n  if (this.allowHalfOpen || this._writableState.ended) return;\n\n  // no more data can be written.\n  // But allow more writes to happen in this tick.\n  pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n  self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n  get: function () {\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed && this._writableState.destroyed;\n  },\n  set: function (value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n    this._writableState.destroyed = value;\n  }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n  this.push(null);\n  this.end();\n\n  pna.nextTick(cb, err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n  encoding = '' + encoding;\n  switch (encoding && encoding.toLowerCase()) {\n    case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n      return true;\n    default:\n      return false;\n  }\n};\n\nfunction _normalizeEncoding(enc) {\n  if (!enc) return 'utf8';\n  var retried;\n  while (true) {\n    switch (enc) {\n      case 'utf8':\n      case 'utf-8':\n        return 'utf8';\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return 'utf16le';\n      case 'latin1':\n      case 'binary':\n        return 'latin1';\n      case 'base64':\n      case 'ascii':\n      case 'hex':\n        return enc;\n      default:\n        if (retried) return; // undefined\n        enc = ('' + enc).toLowerCase();\n        retried = true;\n    }\n  }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n  var nenc = _normalizeEncoding(enc);\n  if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n  return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n  this.encoding = normalizeEncoding(encoding);\n  var nb;\n  switch (this.encoding) {\n    case 'utf16le':\n      this.text = utf16Text;\n      this.end = utf16End;\n      nb = 4;\n      break;\n    case 'utf8':\n      this.fillLast = utf8FillLast;\n      nb = 4;\n      break;\n    case 'base64':\n      this.text = base64Text;\n      this.end = base64End;\n      nb = 3;\n      break;\n    default:\n      this.write = simpleWrite;\n      this.end = simpleEnd;\n      return;\n  }\n  this.lastNeed = 0;\n  this.lastTotal = 0;\n  this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n  if (buf.length === 0) return '';\n  var r;\n  var i;\n  if (this.lastNeed) {\n    r = this.fillLast(buf);\n    if (r === undefined) return '';\n    i = this.lastNeed;\n    this.lastNeed = 0;\n  } else {\n    i = 0;\n  }\n  if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n  return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n  if (this.lastNeed <= buf.length) {\n    buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n    return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n  }\n  buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n  this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n  if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n  return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n  var j = buf.length - 1;\n  if (j < i) return 0;\n  var nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) self.lastNeed = nb - 1;\n    return nb;\n  }\n  if (--j < i || nb === -2) return 0;\n  nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) self.lastNeed = nb - 2;\n    return nb;\n  }\n  if (--j < i || nb === -2) return 0;\n  nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) {\n      if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n    }\n    return nb;\n  }\n  return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n  if ((buf[0] & 0xC0) !== 0x80) {\n    self.lastNeed = 0;\n    return '\\ufffd';\n  }\n  if (self.lastNeed > 1 && buf.length > 1) {\n    if ((buf[1] & 0xC0) !== 0x80) {\n      self.lastNeed = 1;\n      return '\\ufffd';\n    }\n    if (self.lastNeed > 2 && buf.length > 2) {\n      if ((buf[2] & 0xC0) !== 0x80) {\n        self.lastNeed = 2;\n        return '\\ufffd';\n      }\n    }\n  }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n  var p = this.lastTotal - this.lastNeed;\n  var r = utf8CheckExtraBytes(this, buf, p);\n  if (r !== undefined) return r;\n  if (this.lastNeed <= buf.length) {\n    buf.copy(this.lastChar, p, 0, this.lastNeed);\n    return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n  }\n  buf.copy(this.lastChar, p, 0, buf.length);\n  this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n  var total = utf8CheckIncomplete(this, buf, i);\n  if (!this.lastNeed) return buf.toString('utf8', i);\n  this.lastTotal = total;\n  var end = buf.length - (total - this.lastNeed);\n  buf.copy(this.lastChar, 0, end);\n  return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) return r + '\\ufffd';\n  return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n  if ((buf.length - i) % 2 === 0) {\n    var r = buf.toString('utf16le', i);\n    if (r) {\n      var c = r.charCodeAt(r.length - 1);\n      if (c >= 0xD800 && c <= 0xDBFF) {\n        this.lastNeed = 2;\n        this.lastTotal = 4;\n        this.lastChar[0] = buf[buf.length - 2];\n        this.lastChar[1] = buf[buf.length - 1];\n        return r.slice(0, -1);\n      }\n    }\n    return r;\n  }\n  this.lastNeed = 1;\n  this.lastTotal = 2;\n  this.lastChar[0] = buf[buf.length - 1];\n  return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) {\n    var end = this.lastTotal - this.lastNeed;\n    return r + this.lastChar.toString('utf16le', 0, end);\n  }\n  return r;\n}\n\nfunction base64Text(buf, i) {\n  var n = (buf.length - i) % 3;\n  if (n === 0) return buf.toString('base64', i);\n  this.lastNeed = 3 - n;\n  this.lastTotal = 3;\n  if (n === 1) {\n    this.lastChar[0] = buf[buf.length - 1];\n  } else {\n    this.lastChar[0] = buf[buf.length - 2];\n    this.lastChar[1] = buf[buf.length - 1];\n  }\n  return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n  return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n  return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n  return buf && buf.length ? this.write(buf) : '';\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar isArray = require('isarray');\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n  return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n  debug = debugUtil.debuglog('stream');\n} else {\n  debug = function () {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n  // Sadly this is not cacheable as some libraries bundle their own\n  // event emitter implementation with them.\n  if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n  // This is a hack to make sure that our error handler is attached before any\n  // userland ones.  NEVER DO THIS. This is here only because this code needs\n  // to continue to work with older versions of Node.js that do not include\n  // the prependListener() method. The goal is to eventually remove this hack.\n  if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream.\n  // These options can be provided separately as readableXXX and writableXXX.\n  var isDuplex = stream instanceof Duplex;\n\n  // object stream flag. Used to make read(n) ignore n and to\n  // make all the buffer merging and length checks go away\n  this.objectMode = !!options.objectMode;\n\n  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n  // the point at which it stops calling _read() to fill the buffer\n  // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n  var hwm = options.highWaterMark;\n  var readableHwm = options.readableHighWaterMark;\n  var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n  if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n  // cast to ints.\n  this.highWaterMark = Math.floor(this.highWaterMark);\n\n  // A linked list is used to store data chunks instead of an array because the\n  // linked list can remove elements from the beginning faster than\n  // array.shift()\n  this.buffer = new BufferList();\n  this.length = 0;\n  this.pipes = null;\n  this.pipesCount = 0;\n  this.flowing = null;\n  this.ended = false;\n  this.endEmitted = false;\n  this.reading = false;\n\n  // a flag to be able to tell if the event 'readable'/'data' is emitted\n  // immediately, or on a later tick.  We set this to true at first, because\n  // any actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first read call.\n  this.sync = true;\n\n  // whenever we return null, then we set a flag to say\n  // that we're awaiting a 'readable' event emission.\n  this.needReadable = false;\n  this.emittedReadable = false;\n  this.readableListening = false;\n  this.resumeScheduled = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // the number of writers that are awaiting a drain event in .pipe()s\n  this.awaitDrain = 0;\n\n  // if true, a maybeReadMore has been scheduled\n  this.readingMore = false;\n\n  this.decoder = null;\n  this.encoding = null;\n  if (options.encoding) {\n    if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n    this.decoder = new StringDecoder(options.encoding);\n    this.encoding = options.encoding;\n  }\n}\n\nfunction Readable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  if (!(this instanceof Readable)) return new Readable(options);\n\n  this._readableState = new ReadableState(options, this);\n\n  // legacy\n  this.readable = true;\n\n  if (options) {\n    if (typeof options.read === 'function') this._read = options.read;\n\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n  }\n\n  Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n  get: function () {\n    if (this._readableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed;\n  },\n  set: function (value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._readableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n  }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n  this.push(null);\n  cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n  var state = this._readableState;\n  var skipChunkCheck;\n\n  if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      encoding = encoding || state.defaultEncoding;\n      if (encoding !== state.encoding) {\n        chunk = Buffer.from(chunk, encoding);\n        encoding = '';\n      }\n      skipChunkCheck = true;\n    }\n  } else {\n    skipChunkCheck = true;\n  }\n\n  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n  return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n  var state = stream._readableState;\n  if (chunk === null) {\n    state.reading = false;\n    onEofChunk(stream, state);\n  } else {\n    var er;\n    if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n    if (er) {\n      stream.emit('error', er);\n    } else if (state.objectMode || chunk && chunk.length > 0) {\n      if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n        chunk = _uint8ArrayToBuffer(chunk);\n      }\n\n      if (addToFront) {\n        if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n      } else if (state.ended) {\n        stream.emit('error', new Error('stream.push() after EOF'));\n      } else {\n        state.reading = false;\n        if (state.decoder && !encoding) {\n          chunk = state.decoder.write(chunk);\n          if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n        } else {\n          addChunk(stream, state, chunk, false);\n        }\n      }\n    } else if (!addToFront) {\n      state.reading = false;\n    }\n  }\n\n  return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n  if (state.flowing && state.length === 0 && !state.sync) {\n    stream.emit('data', chunk);\n    stream.read(0);\n  } else {\n    // update the buffer info.\n    state.length += state.objectMode ? 1 : chunk.length;\n    if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n    if (state.needReadable) emitReadable(stream);\n  }\n  maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n  var er;\n  if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n    er = new TypeError('Invalid non-string/buffer chunk');\n  }\n  return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes.  This is to work around cases where hwm=0,\n// such as the repl.  Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n  return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n  return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n  if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n  this._readableState.decoder = new StringDecoder(enc);\n  this._readableState.encoding = enc;\n  return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n  if (n >= MAX_HWM) {\n    n = MAX_HWM;\n  } else {\n    // Get the next highest power of 2 to prevent increasing hwm excessively in\n    // tiny amounts\n    n--;\n    n |= n >>> 1;\n    n |= n >>> 2;\n    n |= n >>> 4;\n    n |= n >>> 8;\n    n |= n >>> 16;\n    n++;\n  }\n  return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n  if (n <= 0 || state.length === 0 && state.ended) return 0;\n  if (state.objectMode) return 1;\n  if (n !== n) {\n    // Only flow one buffer at a time\n    if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n  }\n  // If we're asking for more than the current hwm, then raise the hwm.\n  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n  if (n <= state.length) return n;\n  // Don't have enough\n  if (!state.ended) {\n    state.needReadable = true;\n    return 0;\n  }\n  return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n  debug('read', n);\n  n = parseInt(n, 10);\n  var state = this._readableState;\n  var nOrig = n;\n\n  if (n !== 0) state.emittedReadable = false;\n\n  // if we're doing read(0) to trigger a readable event, but we\n  // already have a bunch of data in the buffer, then just trigger\n  // the 'readable' event and move on.\n  if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n    debug('read: emitReadable', state.length, state.ended);\n    if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n    return null;\n  }\n\n  n = howMuchToRead(n, state);\n\n  // if we've ended, and we're now clear, then finish it up.\n  if (n === 0 && state.ended) {\n    if (state.length === 0) endReadable(this);\n    return null;\n  }\n\n  // All the actual chunk generation logic needs to be\n  // *below* the call to _read.  The reason is that in certain\n  // synthetic stream cases, such as passthrough streams, _read\n  // may be a completely synchronous operation which may change\n  // the state of the read buffer, providing enough data when\n  // before there was *not* enough.\n  //\n  // So, the steps are:\n  // 1. Figure out what the state of things will be after we do\n  // a read from the buffer.\n  //\n  // 2. If that resulting state will trigger a _read, then call _read.\n  // Note that this may be asynchronous, or synchronous.  Yes, it is\n  // deeply ugly to write APIs this way, but that still doesn't mean\n  // that the Readable class should behave improperly, as streams are\n  // designed to be sync/async agnostic.\n  // Take note if the _read call is sync or async (ie, if the read call\n  // has returned yet), so that we know whether or not it's safe to emit\n  // 'readable' etc.\n  //\n  // 3. Actually pull the requested chunks out of the buffer and return.\n\n  // if we need a readable event, then we need to do some reading.\n  var doRead = state.needReadable;\n  debug('need readable', doRead);\n\n  // if we currently have less than the highWaterMark, then also read some\n  if (state.length === 0 || state.length - n < state.highWaterMark) {\n    doRead = true;\n    debug('length less than watermark', doRead);\n  }\n\n  // however, if we've ended, then there's no point, and if we're already\n  // reading, then it's unnecessary.\n  if (state.ended || state.reading) {\n    doRead = false;\n    debug('reading or ended', doRead);\n  } else if (doRead) {\n    debug('do read');\n    state.reading = true;\n    state.sync = true;\n    // if the length is currently zero, then we *need* a readable event.\n    if (state.length === 0) state.needReadable = true;\n    // call internal read method\n    this._read(state.highWaterMark);\n    state.sync = false;\n    // If _read pushed data synchronously, then `reading` will be false,\n    // and we need to re-evaluate how much data we can return to the user.\n    if (!state.reading) n = howMuchToRead(nOrig, state);\n  }\n\n  var ret;\n  if (n > 0) ret = fromList(n, state);else ret = null;\n\n  if (ret === null) {\n    state.needReadable = true;\n    n = 0;\n  } else {\n    state.length -= n;\n  }\n\n  if (state.length === 0) {\n    // If we have nothing in the buffer, then we want to know\n    // as soon as we *do* get something into the buffer.\n    if (!state.ended) state.needReadable = true;\n\n    // If we tried to read() past the EOF, then emit end on the next tick.\n    if (nOrig !== n && state.ended) endReadable(this);\n  }\n\n  if (ret !== null) this.emit('data', ret);\n\n  return ret;\n};\n\nfunction onEofChunk(stream, state) {\n  if (state.ended) return;\n  if (state.decoder) {\n    var chunk = state.decoder.end();\n    if (chunk && chunk.length) {\n      state.buffer.push(chunk);\n      state.length += state.objectMode ? 1 : chunk.length;\n    }\n  }\n  state.ended = true;\n\n  // emit 'readable' now to make sure it gets picked up.\n  emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow.  This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n  var state = stream._readableState;\n  state.needReadable = false;\n  if (!state.emittedReadable) {\n    debug('emitReadable', state.flowing);\n    state.emittedReadable = true;\n    if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n  }\n}\n\nfunction emitReadable_(stream) {\n  debug('emit readable');\n  stream.emit('readable');\n  flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data.  that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n  if (!state.readingMore) {\n    state.readingMore = true;\n    pna.nextTick(maybeReadMore_, stream, state);\n  }\n}\n\nfunction maybeReadMore_(stream, state) {\n  var len = state.length;\n  while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n    debug('maybeReadMore read 0');\n    stream.read(0);\n    if (len === state.length)\n      // didn't get any data, stop spinning.\n      break;else len = state.length;\n  }\n  state.readingMore = false;\n}\n\n// abstract method.  to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n  this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n  var src = this;\n  var state = this._readableState;\n\n  switch (state.pipesCount) {\n    case 0:\n      state.pipes = dest;\n      break;\n    case 1:\n      state.pipes = [state.pipes, dest];\n      break;\n    default:\n      state.pipes.push(dest);\n      break;\n  }\n  state.pipesCount += 1;\n  debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n  var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n  var endFn = doEnd ? onend : unpipe;\n  if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n  dest.on('unpipe', onunpipe);\n  function onunpipe(readable, unpipeInfo) {\n    debug('onunpipe');\n    if (readable === src) {\n      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n        unpipeInfo.hasUnpiped = true;\n        cleanup();\n      }\n    }\n  }\n\n  function onend() {\n    debug('onend');\n    dest.end();\n  }\n\n  // when the dest drains, it reduces the awaitDrain counter\n  // on the source.  This would be more elegant with a .once()\n  // handler in flow(), but adding and removing repeatedly is\n  // too slow.\n  var ondrain = pipeOnDrain(src);\n  dest.on('drain', ondrain);\n\n  var cleanedUp = false;\n  function cleanup() {\n    debug('cleanup');\n    // cleanup event handlers once the pipe is broken\n    dest.removeListener('close', onclose);\n    dest.removeListener('finish', onfinish);\n    dest.removeListener('drain', ondrain);\n    dest.removeListener('error', onerror);\n    dest.removeListener('unpipe', onunpipe);\n    src.removeListener('end', onend);\n    src.removeListener('end', unpipe);\n    src.removeListener('data', ondata);\n\n    cleanedUp = true;\n\n    // if the reader is waiting for a drain event from this\n    // specific writer, then it would cause it to never start\n    // flowing again.\n    // So, if this is awaiting a drain, then we just call it now.\n    // If we don't know, then assume that we are waiting for one.\n    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n  }\n\n  // If the user pushes more data while we're writing to dest then we'll end up\n  // in ondata again. However, we only want to increase awaitDrain once because\n  // dest will only emit one 'drain' event for the multiple writes.\n  // => Introduce a guard on increasing awaitDrain.\n  var increasedAwaitDrain = false;\n  src.on('data', ondata);\n  function ondata(chunk) {\n    debug('ondata');\n    increasedAwaitDrain = false;\n    var ret = dest.write(chunk);\n    if (false === ret && !increasedAwaitDrain) {\n      // If the user unpiped during `dest.write()`, it is possible\n      // to get stuck in a permanently paused state if that write\n      // also returned false.\n      // => Check whether `dest` is still a piping destination.\n      if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n        debug('false write response, pause', src._readableState.awaitDrain);\n        src._readableState.awaitDrain++;\n        increasedAwaitDrain = true;\n      }\n      src.pause();\n    }\n  }\n\n  // if the dest has an error, then stop piping into it.\n  // however, don't suppress the throwing behavior for this.\n  function onerror(er) {\n    debug('onerror', er);\n    unpipe();\n    dest.removeListener('error', onerror);\n    if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n  }\n\n  // Make sure our error handler is attached before userland ones.\n  prependListener(dest, 'error', onerror);\n\n  // Both close and finish should trigger unpipe, but only once.\n  function onclose() {\n    dest.removeListener('finish', onfinish);\n    unpipe();\n  }\n  dest.once('close', onclose);\n  function onfinish() {\n    debug('onfinish');\n    dest.removeListener('close', onclose);\n    unpipe();\n  }\n  dest.once('finish', onfinish);\n\n  function unpipe() {\n    debug('unpipe');\n    src.unpipe(dest);\n  }\n\n  // tell the dest that it's being piped to\n  dest.emit('pipe', src);\n\n  // start the flow if it hasn't been started already.\n  if (!state.flowing) {\n    debug('pipe resume');\n    src.resume();\n  }\n\n  return dest;\n};\n\nfunction pipeOnDrain(src) {\n  return function () {\n    var state = src._readableState;\n    debug('pipeOnDrain', state.awaitDrain);\n    if (state.awaitDrain) state.awaitDrain--;\n    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n      state.flowing = true;\n      flow(src);\n    }\n  };\n}\n\nReadable.prototype.unpipe = function (dest) {\n  var state = this._readableState;\n  var unpipeInfo = { hasUnpiped: false };\n\n  // if we're not piping anywhere, then do nothing.\n  if (state.pipesCount === 0) return this;\n\n  // just one destination.  most common case.\n  if (state.pipesCount === 1) {\n    // passed in one, but it's not the right one.\n    if (dest && dest !== state.pipes) return this;\n\n    if (!dest) dest = state.pipes;\n\n    // got a match.\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    if (dest) dest.emit('unpipe', this, unpipeInfo);\n    return this;\n  }\n\n  // slow case. multiple pipe destinations.\n\n  if (!dest) {\n    // remove all.\n    var dests = state.pipes;\n    var len = state.pipesCount;\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n\n    for (var i = 0; i < len; i++) {\n      dests[i].emit('unpipe', this, unpipeInfo);\n    }return this;\n  }\n\n  // try to find the right one.\n  var index = indexOf(state.pipes, dest);\n  if (index === -1) return this;\n\n  state.pipes.splice(index, 1);\n  state.pipesCount -= 1;\n  if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n  dest.emit('unpipe', this, unpipeInfo);\n\n  return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n  var res = Stream.prototype.on.call(this, ev, fn);\n\n  if (ev === 'data') {\n    // Start flowing on next tick if stream isn't explicitly paused\n    if (this._readableState.flowing !== false) this.resume();\n  } else if (ev === 'readable') {\n    var state = this._readableState;\n    if (!state.endEmitted && !state.readableListening) {\n      state.readableListening = state.needReadable = true;\n      state.emittedReadable = false;\n      if (!state.reading) {\n        pna.nextTick(nReadingNextTick, this);\n      } else if (state.length) {\n        emitReadable(this);\n      }\n    }\n  }\n\n  return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n  debug('readable nexttick read 0');\n  self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n  var state = this._readableState;\n  if (!state.flowing) {\n    debug('resume');\n    state.flowing = true;\n    resume(this, state);\n  }\n  return this;\n};\n\nfunction resume(stream, state) {\n  if (!state.resumeScheduled) {\n    state.resumeScheduled = true;\n    pna.nextTick(resume_, stream, state);\n  }\n}\n\nfunction resume_(stream, state) {\n  if (!state.reading) {\n    debug('resume read 0');\n    stream.read(0);\n  }\n\n  state.resumeScheduled = false;\n  state.awaitDrain = 0;\n  stream.emit('resume');\n  flow(stream);\n  if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n  debug('call pause flowing=%j', this._readableState.flowing);\n  if (false !== this._readableState.flowing) {\n    debug('pause');\n    this._readableState.flowing = false;\n    this.emit('pause');\n  }\n  return this;\n};\n\nfunction flow(stream) {\n  var state = stream._readableState;\n  debug('flow', state.flowing);\n  while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n  var _this = this;\n\n  var state = this._readableState;\n  var paused = false;\n\n  stream.on('end', function () {\n    debug('wrapped end');\n    if (state.decoder && !state.ended) {\n      var chunk = state.decoder.end();\n      if (chunk && chunk.length) _this.push(chunk);\n    }\n\n    _this.push(null);\n  });\n\n  stream.on('data', function (chunk) {\n    debug('wrapped data');\n    if (state.decoder) chunk = state.decoder.write(chunk);\n\n    // don't skip over falsy values in objectMode\n    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n    var ret = _this.push(chunk);\n    if (!ret) {\n      paused = true;\n      stream.pause();\n    }\n  });\n\n  // proxy all the other methods.\n  // important when wrapping filters and duplexes.\n  for (var i in stream) {\n    if (this[i] === undefined && typeof stream[i] === 'function') {\n      this[i] = function (method) {\n        return function () {\n          return stream[method].apply(stream, arguments);\n        };\n      }(i);\n    }\n  }\n\n  // proxy certain important events.\n  for (var n = 0; n < kProxyEvents.length; n++) {\n    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n  }\n\n  // when we try to consume some more bytes, simply unpause the\n  // underlying stream.\n  this._read = function (n) {\n    debug('wrapped _read', n);\n    if (paused) {\n      paused = false;\n      stream.resume();\n    }\n  };\n\n  return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function () {\n    return this._readableState.highWaterMark;\n  }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n  // nothing buffered\n  if (state.length === 0) return null;\n\n  var ret;\n  if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n    // read it all, truncate the list\n    if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n    state.buffer.clear();\n  } else {\n    // read part of list\n    ret = fromListPartial(n, state.buffer, state.decoder);\n  }\n\n  return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n  var ret;\n  if (n < list.head.data.length) {\n    // slice is the same for buffers and strings\n    ret = list.head.data.slice(0, n);\n    list.head.data = list.head.data.slice(n);\n  } else if (n === list.head.data.length) {\n    // first chunk is a perfect match\n    ret = list.shift();\n  } else {\n    // result spans more than one buffer\n    ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n  }\n  return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n  var p = list.head;\n  var c = 1;\n  var ret = p.data;\n  n -= ret.length;\n  while (p = p.next) {\n    var str = p.data;\n    var nb = n > str.length ? str.length : n;\n    if (nb === str.length) ret += str;else ret += str.slice(0, n);\n    n -= nb;\n    if (n === 0) {\n      if (nb === str.length) {\n        ++c;\n        if (p.next) list.head = p.next;else list.head = list.tail = null;\n      } else {\n        list.head = p;\n        p.data = str.slice(nb);\n      }\n      break;\n    }\n    ++c;\n  }\n  list.length -= c;\n  return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n  var ret = Buffer.allocUnsafe(n);\n  var p = list.head;\n  var c = 1;\n  p.data.copy(ret);\n  n -= p.data.length;\n  while (p = p.next) {\n    var buf = p.data;\n    var nb = n > buf.length ? buf.length : n;\n    buf.copy(ret, ret.length - n, 0, nb);\n    n -= nb;\n    if (n === 0) {\n      if (nb === buf.length) {\n        ++c;\n        if (p.next) list.head = p.next;else list.head = list.tail = null;\n      } else {\n        list.head = p;\n        p.data = buf.slice(nb);\n      }\n      break;\n    }\n    ++c;\n  }\n  list.length -= c;\n  return ret;\n}\n\nfunction endReadable(stream) {\n  var state = stream._readableState;\n\n  // If we get here before consuming all the bytes, then that is a\n  // bug in node.  Should never happen.\n  if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n  if (!state.endEmitted) {\n    state.ended = true;\n    pna.nextTick(endReadableNT, state, stream);\n  }\n}\n\nfunction endReadableNT(state, stream) {\n  // Check that we didn't get one last unshift.\n  if (!state.endEmitted && state.length === 0) {\n    state.endEmitted = true;\n    stream.readable = false;\n    stream.emit('end');\n  }\n}\n\nfunction indexOf(xs, x) {\n  for (var i = 0, l = xs.length; i < l; i++) {\n    if (xs[i] === x) return i;\n  }\n  return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data.  Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored.  (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation.  For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes.  When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up.  When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer.  When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks.  If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk.  However,\n// a pathological inflate type of transform can cause excessive buffering\n// here.  For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output.  In this case, you could write a very small\n// amount of input, and end up with a very large amount of output.  In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform.  A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n  var ts = this._transformState;\n  ts.transforming = false;\n\n  var cb = ts.writecb;\n\n  if (!cb) {\n    return this.emit('error', new Error('write callback called multiple times'));\n  }\n\n  ts.writechunk = null;\n  ts.writecb = null;\n\n  if (data != null) // single equals check for both `null` and `undefined`\n    this.push(data);\n\n  cb(er);\n\n  var rs = this._readableState;\n  rs.reading = false;\n  if (rs.needReadable || rs.length < rs.highWaterMark) {\n    this._read(rs.highWaterMark);\n  }\n}\n\nfunction Transform(options) {\n  if (!(this instanceof Transform)) return new Transform(options);\n\n  Duplex.call(this, options);\n\n  this._transformState = {\n    afterTransform: afterTransform.bind(this),\n    needTransform: false,\n    transforming: false,\n    writecb: null,\n    writechunk: null,\n    writeencoding: null\n  };\n\n  // start out asking for a readable event once data is transformed.\n  this._readableState.needReadable = true;\n\n  // we have implemented the _read method, and done the other things\n  // that Readable wants before the first _read call, so unset the\n  // sync guard flag.\n  this._readableState.sync = false;\n\n  if (options) {\n    if (typeof options.transform === 'function') this._transform = options.transform;\n\n    if (typeof options.flush === 'function') this._flush = options.flush;\n  }\n\n  // When the writable side finishes, then flush out anything remaining.\n  this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n  var _this = this;\n\n  if (typeof this._flush === 'function') {\n    this._flush(function (er, data) {\n      done(_this, er, data);\n    });\n  } else {\n    done(this, null, null);\n  }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n  this._transformState.needTransform = false;\n  return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side.  You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk.  If you pass\n// an error, then that'll put the hurt on the whole operation.  If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n  throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n  var ts = this._transformState;\n  ts.writecb = cb;\n  ts.writechunk = chunk;\n  ts.writeencoding = encoding;\n  if (!ts.transforming) {\n    var rs = this._readableState;\n    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n  }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n  var ts = this._transformState;\n\n  if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n    ts.transforming = true;\n    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n  } else {\n    // mark that we need a transform, so that any data that comes in\n    // will get processed, now that we've asked for it.\n    ts.needTransform = true;\n  }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n  var _this2 = this;\n\n  Duplex.prototype._destroy.call(this, err, function (err2) {\n    cb(err2);\n    _this2.emit('close');\n  });\n};\n\nfunction done(stream, er, data) {\n  if (er) return stream.emit('error', er);\n\n  if (data != null) // single equals check for both `null` and `undefined`\n    stream.push(data);\n\n  // if there's nothing in the write buffer, then that means\n  // that nothing more will ever be provided\n  if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n  if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n  return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n  if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n  Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n  cb(null, chunk);\n};","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\n","module.exports = require('./lib/_stream_writable.js');\n","module.exports = require('./lib/_stream_duplex.js');\n","module.exports = require('./readable').Transform\n","module.exports = require('./readable').PassThrough\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/readable.js');\nStream.Writable = require('readable-stream/writable.js');\nStream.Duplex = require('readable-stream/duplex.js');\nStream.Transform = require('readable-stream/transform.js');\nStream.PassThrough = require('readable-stream/passthrough.js');\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams.  Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n  EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n  var source = this;\n\n  function ondata(chunk) {\n    if (dest.writable) {\n      if (false === dest.write(chunk) && source.pause) {\n        source.pause();\n      }\n    }\n  }\n\n  source.on('data', ondata);\n\n  function ondrain() {\n    if (source.readable && source.resume) {\n      source.resume();\n    }\n  }\n\n  dest.on('drain', ondrain);\n\n  // If the 'end' option is not supplied, dest.end() will be called when\n  // source gets the 'end' or 'close' events.  Only dest.end() once.\n  if (!dest._isStdio && (!options || options.end !== false)) {\n    source.on('end', onend);\n    source.on('close', onclose);\n  }\n\n  var didOnEnd = false;\n  function onend() {\n    if (didOnEnd) return;\n    didOnEnd = true;\n\n    dest.end();\n  }\n\n\n  function onclose() {\n    if (didOnEnd) return;\n    didOnEnd = true;\n\n    if (typeof dest.destroy === 'function') dest.destroy();\n  }\n\n  // don't leave dangling pipes when there are errors.\n  function onerror(er) {\n    cleanup();\n    if (EE.listenerCount(this, 'error') === 0) {\n      throw er; // Unhandled stream error in pipe.\n    }\n  }\n\n  source.on('error', onerror);\n  dest.on('error', onerror);\n\n  // remove all the event listeners that were added.\n  function cleanup() {\n    source.removeListener('data', ondata);\n    dest.removeListener('drain', ondrain);\n\n    source.removeListener('end', onend);\n    source.removeListener('close', onclose);\n\n    source.removeListener('error', onerror);\n    dest.removeListener('error', onerror);\n\n    source.removeListener('end', cleanup);\n    source.removeListener('close', cleanup);\n\n    dest.removeListener('close', cleanup);\n  }\n\n  source.on('end', cleanup);\n  source.on('close', cleanup);\n\n  dest.on('close', cleanup);\n\n  dest.emit('pipe', source);\n\n  // Allow for unix-like usage: A.pipe(B).pipe(C)\n  return dest;\n};\n","'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n  if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n    throw new TypeError(prefix + ' must be a string or a buffer')\n  }\n}\n\nfunction HashBase (blockSize) {\n  Transform.call(this)\n\n  this._block = Buffer.allocUnsafe(blockSize)\n  this._blockSize = blockSize\n  this._blockOffset = 0\n  this._length = [0, 0, 0, 0]\n\n  this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n  var error = null\n  try {\n    this.update(chunk, encoding)\n  } catch (err) {\n    error = err\n  }\n\n  callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n  var error = null\n  try {\n    this.push(this.digest())\n  } catch (err) {\n    error = err\n  }\n\n  callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n  throwIfNotStringOrBuffer(data, 'Data')\n  if (this._finalized) throw new Error('Digest already called')\n  if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n  // consume data\n  var block = this._block\n  var offset = 0\n  while (this._blockOffset + data.length - offset >= this._blockSize) {\n    for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n    this._update()\n    this._blockOffset = 0\n  }\n  while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n  // update length\n  for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n    this._length[j] += carry\n    carry = (this._length[j] / 0x0100000000) | 0\n    if (carry > 0) this._length[j] -= 0x0100000000 * carry\n  }\n\n  return this\n}\n\nHashBase.prototype._update = function () {\n  throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n  if (this._finalized) throw new Error('Digest already called')\n  this._finalized = true\n\n  var digest = this._digest()\n  if (encoding !== undefined) digest = digest.toString(encoding)\n\n  // reset state\n  this._block.fill(0)\n  this._blockOffset = 0\n  for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n  return digest\n}\n\nHashBase.prototype._digest = function () {\n  throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n","'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n  HashBase.call(this, 64)\n\n  // state\n  this._a = 0x67452301\n  this._b = 0xefcdab89\n  this._c = 0x98badcfe\n  this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n  var M = ARRAY16\n  for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n  var a = this._a\n  var b = this._b\n  var c = this._c\n  var d = this._d\n\n  a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n  d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n  c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n  b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n  a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n  d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n  c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n  b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n  a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n  d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n  c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n  b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n  a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n  d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n  c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n  b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n  a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n  d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n  c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n  b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n  a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n  d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n  c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n  b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n  a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n  d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n  c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n  b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n  a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n  d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n  c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n  b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n  a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n  d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n  c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n  b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n  a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n  d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n  c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n  b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n  a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n  d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n  c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n  b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n  a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n  d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n  c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n  b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n  a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n  d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n  c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n  b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n  a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n  d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n  c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n  b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n  a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n  d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n  c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n  b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n  a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n  d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n  c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n  b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n  this._a = (this._a + a) | 0\n  this._b = (this._b + b) | 0\n  this._c = (this._c + c) | 0\n  this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n  // create padding and handle blocks\n  this._block[this._blockOffset++] = 0x80\n  if (this._blockOffset > 56) {\n    this._block.fill(0, this._blockOffset, 64)\n    this._update()\n    this._blockOffset = 0\n  }\n\n  this._block.fill(0, this._blockOffset, 56)\n  this._block.writeUInt32LE(this._length[0], 56)\n  this._block.writeUInt32LE(this._length[1], 60)\n  this._update()\n\n  // produce result\n  var buffer = new Buffer(16)\n  buffer.writeInt32LE(this._a, 0)\n  buffer.writeInt32LE(this._b, 4)\n  buffer.writeInt32LE(this._c, 8)\n  buffer.writeInt32LE(this._d, 12)\n  return buffer\n}\n\nfunction rotl (x, n) {\n  return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n  return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n  return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n  return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n  return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n","'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\n  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n  7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n  3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n  1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n  4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n]\n\nvar zr = [\n  5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n  6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n  15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n  8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n  12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n]\n\nvar sl = [\n  11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n  7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n  11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n  11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n  9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n]\n\nvar sr = [\n  8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n  9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n  9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n  15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n  8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n]\n\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n  HashBase.call(this, 64)\n\n  // state\n  this._a = 0x67452301\n  this._b = 0xefcdab89\n  this._c = 0x98badcfe\n  this._d = 0x10325476\n  this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n  var words = ARRAY16\n  for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n  var al = this._a | 0\n  var bl = this._b | 0\n  var cl = this._c | 0\n  var dl = this._d | 0\n  var el = this._e | 0\n\n  var ar = this._a | 0\n  var br = this._b | 0\n  var cr = this._c | 0\n  var dr = this._d | 0\n  var er = this._e | 0\n\n  // computation\n  for (var i = 0; i < 80; i += 1) {\n    var tl\n    var tr\n    if (i < 16) {\n      tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n      tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n    } else if (i < 32) {\n      tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n      tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n    } else if (i < 48) {\n      tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n      tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n    } else if (i < 64) {\n      tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n      tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n    } else { // if (i<80) {\n      tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n      tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n    }\n\n    al = el\n    el = dl\n    dl = rotl(cl, 10)\n    cl = bl\n    bl = tl\n\n    ar = er\n    er = dr\n    dr = rotl(cr, 10)\n    cr = br\n    br = tr\n  }\n\n  // update state\n  var t = (this._b + cl + dr) | 0\n  this._b = (this._c + dl + er) | 0\n  this._c = (this._d + el + ar) | 0\n  this._d = (this._e + al + br) | 0\n  this._e = (this._a + bl + cr) | 0\n  this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n  // create padding and handle blocks\n  this._block[this._blockOffset++] = 0x80\n  if (this._blockOffset > 56) {\n    this._block.fill(0, this._blockOffset, 64)\n    this._update()\n    this._blockOffset = 0\n  }\n\n  this._block.fill(0, this._blockOffset, 56)\n  this._block.writeUInt32LE(this._length[0], 56)\n  this._block.writeUInt32LE(this._length[1], 60)\n  this._update()\n\n  // produce result\n  var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n  buffer.writeInt32LE(this._a, 0)\n  buffer.writeInt32LE(this._b, 4)\n  buffer.writeInt32LE(this._c, 8)\n  buffer.writeInt32LE(this._d, 12)\n  buffer.writeInt32LE(this._e, 16)\n  return buffer\n}\n\nfunction rotl (x, n) {\n  return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n  return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n  return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n  return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n  return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n  return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n","var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n  this._block = Buffer.alloc(blockSize)\n  this._finalSize = finalSize\n  this._blockSize = blockSize\n  this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n  if (typeof data === 'string') {\n    enc = enc || 'utf8'\n    data = Buffer.from(data, enc)\n  }\n\n  var block = this._block\n  var blockSize = this._blockSize\n  var length = data.length\n  var accum = this._len\n\n  for (var offset = 0; offset < length;) {\n    var assigned = accum % blockSize\n    var remainder = Math.min(length - offset, blockSize - assigned)\n\n    for (var i = 0; i < remainder; i++) {\n      block[assigned + i] = data[offset + i]\n    }\n\n    accum += remainder\n    offset += remainder\n\n    if ((accum % blockSize) === 0) {\n      this._update(block)\n    }\n  }\n\n  this._len += length\n  return this\n}\n\nHash.prototype.digest = function (enc) {\n  var rem = this._len % this._blockSize\n\n  this._block[rem] = 0x80\n\n  // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n  // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n  this._block.fill(0, rem + 1)\n\n  if (rem >= this._finalSize) {\n    this._update(this._block)\n    this._block.fill(0)\n  }\n\n  var bits = this._len * 8\n\n  // uint32\n  if (bits <= 0xffffffff) {\n    this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n  // uint64\n  } else {\n    var lowBits = (bits & 0xffffffff) >>> 0\n    var highBits = (bits - lowBits) / 0x100000000\n\n    this._block.writeUInt32BE(highBits, this._blockSize - 8)\n    this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n  }\n\n  this._update(this._block)\n  var hash = this._hash()\n\n  return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n  throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n  0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n  this.init()\n  this._w = W\n\n  Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n  this._a = 0x67452301\n  this._b = 0xefcdab89\n  this._c = 0x98badcfe\n  this._d = 0x10325476\n  this._e = 0xc3d2e1f0\n\n  return this\n}\n\nfunction rotl5 (num) {\n  return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n  return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n  if (s === 0) return (b & c) | ((~b) & d)\n  if (s === 2) return (b & c) | (b & d) | (c & d)\n  return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n  var W = this._w\n\n  var a = this._a | 0\n  var b = this._b | 0\n  var c = this._c | 0\n  var d = this._d | 0\n  var e = this._e | 0\n\n  for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n  for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n  for (var j = 0; j < 80; ++j) {\n    var s = ~~(j / 20)\n    var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n    e = d\n    d = c\n    c = rotl30(b)\n    b = a\n    a = t\n  }\n\n  this._a = (a + this._a) | 0\n  this._b = (b + this._b) | 0\n  this._c = (c + this._c) | 0\n  this._d = (d + this._d) | 0\n  this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n  var H = Buffer.allocUnsafe(20)\n\n  H.writeInt32BE(this._a | 0, 0)\n  H.writeInt32BE(this._b | 0, 4)\n  H.writeInt32BE(this._c | 0, 8)\n  H.writeInt32BE(this._d | 0, 12)\n  H.writeInt32BE(this._e | 0, 16)\n\n  return H\n}\n\nmodule.exports = Sha\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n  0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n  this.init()\n  this._w = W\n\n  Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n  this._a = 0x67452301\n  this._b = 0xefcdab89\n  this._c = 0x98badcfe\n  this._d = 0x10325476\n  this._e = 0xc3d2e1f0\n\n  return this\n}\n\nfunction rotl1 (num) {\n  return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n  return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n  return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n  if (s === 0) return (b & c) | ((~b) & d)\n  if (s === 2) return (b & c) | (b & d) | (c & d)\n  return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n  var W = this._w\n\n  var a = this._a | 0\n  var b = this._b | 0\n  var c = this._c | 0\n  var d = this._d | 0\n  var e = this._e | 0\n\n  for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n  for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n  for (var j = 0; j < 80; ++j) {\n    var s = ~~(j / 20)\n    var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n    e = d\n    d = c\n    c = rotl30(b)\n    b = a\n    a = t\n  }\n\n  this._a = (a + this._a) | 0\n  this._b = (b + this._b) | 0\n  this._c = (c + this._c) | 0\n  this._d = (d + this._d) | 0\n  this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n  var H = Buffer.allocUnsafe(20)\n\n  H.writeInt32BE(this._a | 0, 0)\n  H.writeInt32BE(this._b | 0, 4)\n  H.writeInt32BE(this._c | 0, 8)\n  H.writeInt32BE(this._d | 0, 12)\n  H.writeInt32BE(this._e | 0, 16)\n\n  return H\n}\n\nmodule.exports = Sha1\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n  0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n  0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n  0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n  0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n  0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n  0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n  0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n  0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n  0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n  0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n  0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n  0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n  0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n  0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n  0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n  0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n  this.init()\n\n  this._w = W // new Array(64)\n\n  Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n  this._a = 0x6a09e667\n  this._b = 0xbb67ae85\n  this._c = 0x3c6ef372\n  this._d = 0xa54ff53a\n  this._e = 0x510e527f\n  this._f = 0x9b05688c\n  this._g = 0x1f83d9ab\n  this._h = 0x5be0cd19\n\n  return this\n}\n\nfunction ch (x, y, z) {\n  return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n  return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n  return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n  return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n  return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n  return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n  var W = this._w\n\n  var a = this._a | 0\n  var b = this._b | 0\n  var c = this._c | 0\n  var d = this._d | 0\n  var e = this._e | 0\n  var f = this._f | 0\n  var g = this._g | 0\n  var h = this._h | 0\n\n  for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n  for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n  for (var j = 0; j < 64; ++j) {\n    var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n    var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n    h = g\n    g = f\n    f = e\n    e = (d + T1) | 0\n    d = c\n    c = b\n    b = a\n    a = (T1 + T2) | 0\n  }\n\n  this._a = (a + this._a) | 0\n  this._b = (b + this._b) | 0\n  this._c = (c + this._c) | 0\n  this._d = (d + this._d) | 0\n  this._e = (e + this._e) | 0\n  this._f = (f + this._f) | 0\n  this._g = (g + this._g) | 0\n  this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n  var H = Buffer.allocUnsafe(32)\n\n  H.writeInt32BE(this._a, 0)\n  H.writeInt32BE(this._b, 4)\n  H.writeInt32BE(this._c, 8)\n  H.writeInt32BE(this._d, 12)\n  H.writeInt32BE(this._e, 16)\n  H.writeInt32BE(this._f, 20)\n  H.writeInt32BE(this._g, 24)\n  H.writeInt32BE(this._h, 28)\n\n  return H\n}\n\nmodule.exports = Sha256\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n  this.init()\n\n  this._w = W // new Array(64)\n\n  Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n  this._a = 0xc1059ed8\n  this._b = 0x367cd507\n  this._c = 0x3070dd17\n  this._d = 0xf70e5939\n  this._e = 0xffc00b31\n  this._f = 0x68581511\n  this._g = 0x64f98fa7\n  this._h = 0xbefa4fa4\n\n  return this\n}\n\nSha224.prototype._hash = function () {\n  var H = Buffer.allocUnsafe(28)\n\n  H.writeInt32BE(this._a, 0)\n  H.writeInt32BE(this._b, 4)\n  H.writeInt32BE(this._c, 8)\n  H.writeInt32BE(this._d, 12)\n  H.writeInt32BE(this._e, 16)\n  H.writeInt32BE(this._f, 20)\n  H.writeInt32BE(this._g, 24)\n\n  return H\n}\n\nmodule.exports = Sha224\n","var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n  0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n  0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n  0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n  0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n  0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n  0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n  0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n  0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n  0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n  0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n  0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n  0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n  0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n  0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n  0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n  0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n  0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n  0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n  0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n  0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n  0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n  0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n  0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n  0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n  0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n  0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n  0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n  0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n  0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n  0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n  0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n  0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n  0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n  0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n  0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n  0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n  0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n  0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n  0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n  0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n  this.init()\n  this._w = W\n\n  Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n  this._ah = 0x6a09e667\n  this._bh = 0xbb67ae85\n  this._ch = 0x3c6ef372\n  this._dh = 0xa54ff53a\n  this._eh = 0x510e527f\n  this._fh = 0x9b05688c\n  this._gh = 0x1f83d9ab\n  this._hh = 0x5be0cd19\n\n  this._al = 0xf3bcc908\n  this._bl = 0x84caa73b\n  this._cl = 0xfe94f82b\n  this._dl = 0x5f1d36f1\n  this._el = 0xade682d1\n  this._fl = 0x2b3e6c1f\n  this._gl = 0xfb41bd6b\n  this._hl = 0x137e2179\n\n  return this\n}\n\nfunction Ch (x, y, z) {\n  return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n  return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n  return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n  return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n  return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n  return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n  return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n  return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n  return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n  var W = this._w\n\n  var ah = this._ah | 0\n  var bh = this._bh | 0\n  var ch = this._ch | 0\n  var dh = this._dh | 0\n  var eh = this._eh | 0\n  var fh = this._fh | 0\n  var gh = this._gh | 0\n  var hh = this._hh | 0\n\n  var al = this._al | 0\n  var bl = this._bl | 0\n  var cl = this._cl | 0\n  var dl = this._dl | 0\n  var el = this._el | 0\n  var fl = this._fl | 0\n  var gl = this._gl | 0\n  var hl = this._hl | 0\n\n  for (var i = 0; i < 32; i += 2) {\n    W[i] = M.readInt32BE(i * 4)\n    W[i + 1] = M.readInt32BE(i * 4 + 4)\n  }\n  for (; i < 160; i += 2) {\n    var xh = W[i - 15 * 2]\n    var xl = W[i - 15 * 2 + 1]\n    var gamma0 = Gamma0(xh, xl)\n    var gamma0l = Gamma0l(xl, xh)\n\n    xh = W[i - 2 * 2]\n    xl = W[i - 2 * 2 + 1]\n    var gamma1 = Gamma1(xh, xl)\n    var gamma1l = Gamma1l(xl, xh)\n\n    // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n    var Wi7h = W[i - 7 * 2]\n    var Wi7l = W[i - 7 * 2 + 1]\n\n    var Wi16h = W[i - 16 * 2]\n    var Wi16l = W[i - 16 * 2 + 1]\n\n    var Wil = (gamma0l + Wi7l) | 0\n    var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n    Wil = (Wil + gamma1l) | 0\n    Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n    Wil = (Wil + Wi16l) | 0\n    Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n    W[i] = Wih\n    W[i + 1] = Wil\n  }\n\n  for (var j = 0; j < 160; j += 2) {\n    Wih = W[j]\n    Wil = W[j + 1]\n\n    var majh = maj(ah, bh, ch)\n    var majl = maj(al, bl, cl)\n\n    var sigma0h = sigma0(ah, al)\n    var sigma0l = sigma0(al, ah)\n    var sigma1h = sigma1(eh, el)\n    var sigma1l = sigma1(el, eh)\n\n    // t1 = h + sigma1 + ch + K[j] + W[j]\n    var Kih = K[j]\n    var Kil = K[j + 1]\n\n    var chh = Ch(eh, fh, gh)\n    var chl = Ch(el, fl, gl)\n\n    var t1l = (hl + sigma1l) | 0\n    var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n    t1l = (t1l + chl) | 0\n    t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n    t1l = (t1l + Kil) | 0\n    t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n    t1l = (t1l + Wil) | 0\n    t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n    // t2 = sigma0 + maj\n    var t2l = (sigma0l + majl) | 0\n    var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n    hh = gh\n    hl = gl\n    gh = fh\n    gl = fl\n    fh = eh\n    fl = el\n    el = (dl + t1l) | 0\n    eh = (dh + t1h + getCarry(el, dl)) | 0\n    dh = ch\n    dl = cl\n    ch = bh\n    cl = bl\n    bh = ah\n    bl = al\n    al = (t1l + t2l) | 0\n    ah = (t1h + t2h + getCarry(al, t1l)) | 0\n  }\n\n  this._al = (this._al + al) | 0\n  this._bl = (this._bl + bl) | 0\n  this._cl = (this._cl + cl) | 0\n  this._dl = (this._dl + dl) | 0\n  this._el = (this._el + el) | 0\n  this._fl = (this._fl + fl) | 0\n  this._gl = (this._gl + gl) | 0\n  this._hl = (this._hl + hl) | 0\n\n  this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n  this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n  this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n  this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n  this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n  this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n  this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n  this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n  var H = Buffer.allocUnsafe(64)\n\n  function writeInt64BE (h, l, offset) {\n    H.writeInt32BE(h, offset)\n    H.writeInt32BE(l, offset + 4)\n  }\n\n  writeInt64BE(this._ah, this._al, 0)\n  writeInt64BE(this._bh, this._bl, 8)\n  writeInt64BE(this._ch, this._cl, 16)\n  writeInt64BE(this._dh, this._dl, 24)\n  writeInt64BE(this._eh, this._el, 32)\n  writeInt64BE(this._fh, this._fl, 40)\n  writeInt64BE(this._gh, this._gl, 48)\n  writeInt64BE(this._hh, this._hl, 56)\n\n  return H\n}\n\nmodule.exports = Sha512\n","var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n  this.init()\n  this._w = W\n\n  Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n  this._ah = 0xcbbb9d5d\n  this._bh = 0x629a292a\n  this._ch = 0x9159015a\n  this._dh = 0x152fecd8\n  this._eh = 0x67332667\n  this._fh = 0x8eb44a87\n  this._gh = 0xdb0c2e0d\n  this._hh = 0x47b5481d\n\n  this._al = 0xc1059ed8\n  this._bl = 0x367cd507\n  this._cl = 0x3070dd17\n  this._dl = 0xf70e5939\n  this._el = 0xffc00b31\n  this._fl = 0x68581511\n  this._gl = 0x64f98fa7\n  this._hl = 0xbefa4fa4\n\n  return this\n}\n\nSha384.prototype._hash = function () {\n  var H = Buffer.allocUnsafe(48)\n\n  function writeInt64BE (h, l, offset) {\n    H.writeInt32BE(h, offset)\n    H.writeInt32BE(l, offset + 4)\n  }\n\n  writeInt64BE(this._ah, this._al, 0)\n  writeInt64BE(this._bh, this._bl, 8)\n  writeInt64BE(this._ch, this._cl, 16)\n  writeInt64BE(this._dh, this._dl, 24)\n  writeInt64BE(this._eh, this._el, 32)\n  writeInt64BE(this._fh, this._fl, 40)\n\n  return H\n}\n\nmodule.exports = Sha384\n","var exports = module.exports = function SHA (algorithm) {\n  algorithm = algorithm.toLowerCase()\n\n  var Algorithm = exports[algorithm]\n  if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n  return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n","var Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar StringDecoder = require('string_decoder').StringDecoder\nvar inherits = require('inherits')\n\nfunction CipherBase (hashMode) {\n  Transform.call(this)\n  this.hashMode = typeof hashMode === 'string'\n  if (this.hashMode) {\n    this[hashMode] = this._finalOrDigest\n  } else {\n    this.final = this._finalOrDigest\n  }\n  if (this._final) {\n    this.__final = this._final\n    this._final = null\n  }\n  this._decoder = null\n  this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n  if (typeof data === 'string') {\n    data = Buffer.from(data, inputEnc)\n  }\n\n  var outData = this._update(data)\n  if (this.hashMode) return this\n\n  if (outputEnc) {\n    outData = this._toString(outData, outputEnc)\n  }\n\n  return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n  throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n  throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n  throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n  var err\n  try {\n    if (this.hashMode) {\n      this._update(data)\n    } else {\n      this.push(this._update(data))\n    }\n  } catch (e) {\n    err = e\n  } finally {\n    next(err)\n  }\n}\nCipherBase.prototype._flush = function (done) {\n  var err\n  try {\n    this.push(this.__final())\n  } catch (e) {\n    err = e\n  }\n\n  done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n  var outData = this.__final() || Buffer.alloc(0)\n  if (outputEnc) {\n    outData = this._toString(outData, outputEnc, true)\n  }\n  return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n  if (!this._decoder) {\n    this._decoder = new StringDecoder(enc)\n    this._encoding = enc\n  }\n\n  if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n  var out = this._decoder.write(value)\n  if (fin) {\n    out += this._decoder.end()\n  }\n\n  return out\n}\n\nmodule.exports = CipherBase\n","'use strict'\nvar inherits = require('inherits')\nvar MD5 = require('md5.js')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Base = require('cipher-base')\n\nfunction Hash (hash) {\n  Base.call(this, 'digest')\n\n  this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n  this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n  return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n  alg = alg.toLowerCase()\n  if (alg === 'md5') return new MD5()\n  if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n  return new Hash(sha(alg))\n}\n","'use strict'\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar Base = require('cipher-base')\n\nvar ZEROS = Buffer.alloc(128)\nvar blocksize = 64\n\nfunction Hmac (alg, key) {\n  Base.call(this, 'digest')\n  if (typeof key === 'string') {\n    key = Buffer.from(key)\n  }\n\n  this._alg = alg\n  this._key = key\n\n  if (key.length > blocksize) {\n    key = alg(key)\n  } else if (key.length < blocksize) {\n    key = Buffer.concat([key, ZEROS], blocksize)\n  }\n\n  var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n  var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n  for (var i = 0; i < blocksize; i++) {\n    ipad[i] = key[i] ^ 0x36\n    opad[i] = key[i] ^ 0x5C\n  }\n\n  this._hash = [ipad]\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n  this._hash.push(data)\n}\n\nHmac.prototype._final = function () {\n  var h = this._alg(Buffer.concat(this._hash))\n  return this._alg(Buffer.concat([this._opad, h]))\n}\nmodule.exports = Hmac\n","var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n  return new MD5().update(buffer).digest()\n}\n","'use strict'\nvar inherits = require('inherits')\nvar Legacy = require('./legacy')\nvar Base = require('cipher-base')\nvar Buffer = require('safe-buffer').Buffer\nvar md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\n\nvar sha = require('sha.js')\n\nvar ZEROS = Buffer.alloc(128)\n\nfunction Hmac (alg, key) {\n  Base.call(this, 'digest')\n  if (typeof key === 'string') {\n    key = Buffer.from(key)\n  }\n\n  var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n  this._alg = alg\n  this._key = key\n  if (key.length > blocksize) {\n    var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n    key = hash.update(key).digest()\n  } else if (key.length < blocksize) {\n    key = Buffer.concat([key, ZEROS], blocksize)\n  }\n\n  var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n  var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n  for (var i = 0; i < blocksize; i++) {\n    ipad[i] = key[i] ^ 0x36\n    opad[i] = key[i] ^ 0x5C\n  }\n  this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n  this._hash.update(ipad)\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n  this._hash.update(data)\n}\n\nHmac.prototype._final = function () {\n  var h = this._hash.digest()\n  var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)\n  return hash.update(this._opad).update(h).digest()\n}\n\nmodule.exports = function createHmac (alg, key) {\n  alg = alg.toLowerCase()\n  if (alg === 'rmd160' || alg === 'ripemd160') {\n    return new Hmac('rmd160', key)\n  }\n  if (alg === 'md5') {\n    return new Legacy(md5, key)\n  }\n  return new Hmac(alg, key)\n}\n",null,"module.exports = require('./browser/algorithms.json')\n","var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nfunction checkBuffer (buf, name) {\n  if (typeof buf !== 'string' && !Buffer.isBuffer(buf)) {\n    throw new TypeError(name + ' must be a buffer or string')\n  }\n}\n\nmodule.exports = function (password, salt, iterations, keylen) {\n  checkBuffer(password, 'Password')\n  checkBuffer(salt, 'Salt')\n\n  if (typeof iterations !== 'number') {\n    throw new TypeError('Iterations not a number')\n  }\n\n  if (iterations < 0) {\n    throw new TypeError('Bad iterations')\n  }\n\n  if (typeof keylen !== 'number') {\n    throw new TypeError('Key length not a number')\n  }\n\n  if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n    throw new TypeError('Bad key length')\n  }\n}\n","var defaultEncoding\n/* istanbul ignore next */\nif (process.browser) {\n  defaultEncoding = 'utf-8'\n} else {\n  var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)\n\n  defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n}\nmodule.exports = defaultEncoding\n","var md5 = require('create-hash/md5')\nvar rmd160 = require('ripemd160')\nvar sha = require('sha.js')\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar Buffer = require('safe-buffer').Buffer\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n  md5: 16,\n  sha1: 20,\n  sha224: 28,\n  sha256: 32,\n  sha384: 48,\n  sha512: 64,\n  rmd160: 20,\n  ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n  var hash = getDigest(alg)\n  var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n  if (key.length > blocksize) {\n    key = hash(key)\n  } else if (key.length < blocksize) {\n    key = Buffer.concat([key, ZEROS], blocksize)\n  }\n\n  var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n  var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n  for (var i = 0; i < blocksize; i++) {\n    ipad[i] = key[i] ^ 0x36\n    opad[i] = key[i] ^ 0x5C\n  }\n\n  var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n  ipad.copy(ipad1, 0, 0, blocksize)\n  this.ipad1 = ipad1\n  this.ipad2 = ipad\n  this.opad = opad\n  this.alg = alg\n  this.blocksize = blocksize\n  this.hash = hash\n  this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n  data.copy(ipad, this.blocksize)\n  var h = this.hash(ipad)\n  h.copy(this.opad, this.blocksize)\n  return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n  function shaFunc (data) {\n    return sha(alg).update(data).digest()\n  }\n\n  if (alg === 'rmd160' || alg === 'ripemd160') return rmd160\n  if (alg === 'md5') return md5\n  return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n  checkParameters(password, salt, iterations, keylen)\n\n  if (!Buffer.isBuffer(password)) password = Buffer.from(password, defaultEncoding)\n  if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, defaultEncoding)\n\n  digest = digest || 'sha1'\n\n  var hmac = new Hmac(digest, password, salt.length)\n\n  var DK = Buffer.allocUnsafe(keylen)\n  var block1 = Buffer.allocUnsafe(salt.length + 4)\n  salt.copy(block1, 0, 0, salt.length)\n\n  var destPos = 0\n  var hLen = sizes[digest]\n  var l = Math.ceil(keylen / hLen)\n\n  for (var i = 1; i <= l; i++) {\n    block1.writeUInt32BE(i, salt.length)\n\n    var T = hmac.run(block1, hmac.ipad1)\n    var U = T\n\n    for (var j = 1; j < iterations; j++) {\n      U = hmac.run(U, hmac.ipad2)\n      for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n    }\n\n    T.copy(DK, destPos)\n    destPos += hLen\n  }\n\n  return DK\n}\n\nmodule.exports = pbkdf2\n","var checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar sync = require('./sync')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ZERO_BUF\nvar subtle = global.crypto && global.crypto.subtle\nvar toBrowser = {\n  'sha': 'SHA-1',\n  'sha-1': 'SHA-1',\n  'sha1': 'SHA-1',\n  'sha256': 'SHA-256',\n  'sha-256': 'SHA-256',\n  'sha384': 'SHA-384',\n  'sha-384': 'SHA-384',\n  'sha-512': 'SHA-512',\n  'sha512': 'SHA-512'\n}\nvar checks = []\nfunction checkNative (algo) {\n  if (global.process && !global.process.browser) {\n    return Promise.resolve(false)\n  }\n  if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n    return Promise.resolve(false)\n  }\n  if (checks[algo] !== undefined) {\n    return checks[algo]\n  }\n  ZERO_BUF = ZERO_BUF || Buffer.alloc(8)\n  var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)\n    .then(function () {\n      return true\n    }).catch(function () {\n      return false\n    })\n  checks[algo] = prom\n  return prom\n}\n\nfunction browserPbkdf2 (password, salt, iterations, length, algo) {\n  return subtle.importKey(\n    'raw', password, {name: 'PBKDF2'}, false, ['deriveBits']\n  ).then(function (key) {\n    return subtle.deriveBits({\n      name: 'PBKDF2',\n      salt: salt,\n      iterations: iterations,\n      hash: {\n        name: algo\n      }\n    }, key, length << 3)\n  }).then(function (res) {\n    return Buffer.from(res)\n  })\n}\n\nfunction resolvePromise (promise, callback) {\n  promise.then(function (out) {\n    process.nextTick(function () {\n      callback(null, out)\n    })\n  }, function (e) {\n    process.nextTick(function () {\n      callback(e)\n    })\n  })\n}\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n  if (typeof digest === 'function') {\n    callback = digest\n    digest = undefined\n  }\n\n  digest = digest || 'sha1'\n  var algo = toBrowser[digest.toLowerCase()]\n\n  if (!algo || typeof global.Promise !== 'function') {\n    return process.nextTick(function () {\n      var out\n      try {\n        out = sync(password, salt, iterations, keylen, digest)\n      } catch (e) {\n        return callback(e)\n      }\n      callback(null, out)\n    })\n  }\n\n  checkParameters(password, salt, iterations, keylen)\n  if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')\n  if (!Buffer.isBuffer(password)) password = Buffer.from(password, defaultEncoding)\n  if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, defaultEncoding)\n\n  resolvePromise(checkNative(algo).then(function (resp) {\n    if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo)\n\n    return sync(password, salt, iterations, keylen, digest)\n  }), callback)\n}\n","exports.pbkdf2 = require('./lib/async')\nexports.pbkdf2Sync = require('./lib/sync')\n","'use strict';\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n  var res =  (bytes[0 + off] << 24) |\n             (bytes[1 + off] << 16) |\n             (bytes[2 + off] << 8) |\n             bytes[3 + off];\n  return res >>> 0;\n};\n\nexports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n  bytes[0 + off] = value >>> 24;\n  bytes[1 + off] = (value >>> 16) & 0xff;\n  bytes[2 + off] = (value >>> 8) & 0xff;\n  bytes[3 + off] = value & 0xff;\n};\n\nexports.ip = function ip(inL, inR, out, off) {\n  var outL = 0;\n  var outR = 0;\n\n  for (var i = 6; i >= 0; i -= 2) {\n    for (var j = 0; j <= 24; j += 8) {\n      outL <<= 1;\n      outL |= (inR >>> (j + i)) & 1;\n    }\n    for (var j = 0; j <= 24; j += 8) {\n      outL <<= 1;\n      outL |= (inL >>> (j + i)) & 1;\n    }\n  }\n\n  for (var i = 6; i >= 0; i -= 2) {\n    for (var j = 1; j <= 25; j += 8) {\n      outR <<= 1;\n      outR |= (inR >>> (j + i)) & 1;\n    }\n    for (var j = 1; j <= 25; j += 8) {\n      outR <<= 1;\n      outR |= (inL >>> (j + i)) & 1;\n    }\n  }\n\n  out[off + 0] = outL >>> 0;\n  out[off + 1] = outR >>> 0;\n};\n\nexports.rip = function rip(inL, inR, out, off) {\n  var outL = 0;\n  var outR = 0;\n\n  for (var i = 0; i < 4; i++) {\n    for (var j = 24; j >= 0; j -= 8) {\n      outL <<= 1;\n      outL |= (inR >>> (j + i)) & 1;\n      outL <<= 1;\n      outL |= (inL >>> (j + i)) & 1;\n    }\n  }\n  for (var i = 4; i < 8; i++) {\n    for (var j = 24; j >= 0; j -= 8) {\n      outR <<= 1;\n      outR |= (inR >>> (j + i)) & 1;\n      outR <<= 1;\n      outR |= (inL >>> (j + i)) & 1;\n    }\n  }\n\n  out[off + 0] = outL >>> 0;\n  out[off + 1] = outR >>> 0;\n};\n\nexports.pc1 = function pc1(inL, inR, out, off) {\n  var outL = 0;\n  var outR = 0;\n\n  // 7, 15, 23, 31, 39, 47, 55, 63\n  // 6, 14, 22, 30, 39, 47, 55, 63\n  // 5, 13, 21, 29, 39, 47, 55, 63\n  // 4, 12, 20, 28\n  for (var i = 7; i >= 5; i--) {\n    for (var j = 0; j <= 24; j += 8) {\n      outL <<= 1;\n      outL |= (inR >> (j + i)) & 1;\n    }\n    for (var j = 0; j <= 24; j += 8) {\n      outL <<= 1;\n      outL |= (inL >> (j + i)) & 1;\n    }\n  }\n  for (var j = 0; j <= 24; j += 8) {\n    outL <<= 1;\n    outL |= (inR >> (j + i)) & 1;\n  }\n\n  // 1, 9, 17, 25, 33, 41, 49, 57\n  // 2, 10, 18, 26, 34, 42, 50, 58\n  // 3, 11, 19, 27, 35, 43, 51, 59\n  // 36, 44, 52, 60\n  for (var i = 1; i <= 3; i++) {\n    for (var j = 0; j <= 24; j += 8) {\n      outR <<= 1;\n      outR |= (inR >> (j + i)) & 1;\n    }\n    for (var j = 0; j <= 24; j += 8) {\n      outR <<= 1;\n      outR |= (inL >> (j + i)) & 1;\n    }\n  }\n  for (var j = 0; j <= 24; j += 8) {\n    outR <<= 1;\n    outR |= (inL >> (j + i)) & 1;\n  }\n\n  out[off + 0] = outL >>> 0;\n  out[off + 1] = outR >>> 0;\n};\n\nexports.r28shl = function r28shl(num, shift) {\n  return ((num << shift) & 0xfffffff) | (num >>> (28 - shift));\n};\n\nvar pc2table = [\n  // inL => outL\n  14, 11, 17, 4, 27, 23, 25, 0,\n  13, 22, 7, 18, 5, 9, 16, 24,\n  2, 20, 12, 21, 1, 8, 15, 26,\n\n  // inR => outR\n  15, 4, 25, 19, 9, 1, 26, 16,\n  5, 11, 23, 8, 12, 7, 17, 0,\n  22, 3, 10, 14, 6, 20, 27, 24\n];\n\nexports.pc2 = function pc2(inL, inR, out, off) {\n  var outL = 0;\n  var outR = 0;\n\n  var len = pc2table.length >>> 1;\n  for (var i = 0; i < len; i++) {\n    outL <<= 1;\n    outL |= (inL >>> pc2table[i]) & 0x1;\n  }\n  for (var i = len; i < pc2table.length; i++) {\n    outR <<= 1;\n    outR |= (inR >>> pc2table[i]) & 0x1;\n  }\n\n  out[off + 0] = outL >>> 0;\n  out[off + 1] = outR >>> 0;\n};\n\nexports.expand = function expand(r, out, off) {\n  var outL = 0;\n  var outR = 0;\n\n  outL = ((r & 1) << 5) | (r >>> 27);\n  for (var i = 23; i >= 15; i -= 4) {\n    outL <<= 6;\n    outL |= (r >>> i) & 0x3f;\n  }\n  for (var i = 11; i >= 3; i -= 4) {\n    outR |= (r >>> i) & 0x3f;\n    outR <<= 6;\n  }\n  outR |= ((r & 0x1f) << 1) | (r >>> 31);\n\n  out[off + 0] = outL >>> 0;\n  out[off + 1] = outR >>> 0;\n};\n\nvar sTable = [\n  14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,\n  3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,\n  4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,\n  15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13,\n\n  15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,\n  9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,\n  0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,\n  5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9,\n\n  10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,\n  1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,\n  13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,\n  11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12,\n\n  7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,\n  1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,\n  10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,\n  15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14,\n\n  2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,\n  8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,\n  4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,\n  15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3,\n\n  12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,\n  0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,\n  9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,\n  7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13,\n\n  4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,\n  3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,\n  1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,\n  10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12,\n\n  13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,\n  10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,\n  7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,\n  0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11\n];\n\nexports.substitute = function substitute(inL, inR) {\n  var out = 0;\n  for (var i = 0; i < 4; i++) {\n    var b = (inL >>> (18 - i * 6)) & 0x3f;\n    var sb = sTable[i * 0x40 + b];\n\n    out <<= 4;\n    out |= sb;\n  }\n  for (var i = 0; i < 4; i++) {\n    var b = (inR >>> (18 - i * 6)) & 0x3f;\n    var sb = sTable[4 * 0x40 + i * 0x40 + b];\n\n    out <<= 4;\n    out |= sb;\n  }\n  return out >>> 0;\n};\n\nvar permuteTable = [\n  16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22,\n  30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7\n];\n\nexports.permute = function permute(num) {\n  var out = 0;\n  for (var i = 0; i < permuteTable.length; i++) {\n    out <<= 1;\n    out |= (num >>> permuteTable[i]) & 0x1;\n  }\n  return out >>> 0;\n};\n\nexports.padSplit = function padSplit(num, size, group) {\n  var str = num.toString(2);\n  while (str.length < size)\n    str = '0' + str;\n\n  var out = [];\n  for (var i = 0; i < size; i += group)\n    out.push(str.slice(i, i + group));\n  return out.join(' ');\n};\n","module.exports = assert;\n\nfunction assert(val, msg) {\n  if (!val)\n    throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n  if (l != r)\n    throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\n\nfunction Cipher(options) {\n  this.options = options;\n\n  this.type = this.options.type;\n  this.blockSize = 8;\n  this._init();\n\n  this.buffer = new Array(this.blockSize);\n  this.bufferOff = 0;\n}\nmodule.exports = Cipher;\n\nCipher.prototype._init = function _init() {\n  // Might be overrided\n};\n\nCipher.prototype.update = function update(data) {\n  if (data.length === 0)\n    return [];\n\n  if (this.type === 'decrypt')\n    return this._updateDecrypt(data);\n  else\n    return this._updateEncrypt(data);\n};\n\nCipher.prototype._buffer = function _buffer(data, off) {\n  // Append data to buffer\n  var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);\n  for (var i = 0; i < min; i++)\n    this.buffer[this.bufferOff + i] = data[off + i];\n  this.bufferOff += min;\n\n  // Shift next\n  return min;\n};\n\nCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n  this._update(this.buffer, 0, out, off);\n  this.bufferOff = 0;\n  return this.blockSize;\n};\n\nCipher.prototype._updateEncrypt = function _updateEncrypt(data) {\n  var inputOff = 0;\n  var outputOff = 0;\n\n  var count = ((this.bufferOff + data.length) / this.blockSize) | 0;\n  var out = new Array(count * this.blockSize);\n\n  if (this.bufferOff !== 0) {\n    inputOff += this._buffer(data, inputOff);\n\n    if (this.bufferOff === this.buffer.length)\n      outputOff += this._flushBuffer(out, outputOff);\n  }\n\n  // Write blocks\n  var max = data.length - ((data.length - inputOff) % this.blockSize);\n  for (; inputOff < max; inputOff += this.blockSize) {\n    this._update(data, inputOff, out, outputOff);\n    outputOff += this.blockSize;\n  }\n\n  // Queue rest\n  for (; inputOff < data.length; inputOff++, this.bufferOff++)\n    this.buffer[this.bufferOff] = data[inputOff];\n\n  return out;\n};\n\nCipher.prototype._updateDecrypt = function _updateDecrypt(data) {\n  var inputOff = 0;\n  var outputOff = 0;\n\n  var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n  var out = new Array(count * this.blockSize);\n\n  // TODO(indutny): optimize it, this is far from optimal\n  for (; count > 0; count--) {\n    inputOff += this._buffer(data, inputOff);\n    outputOff += this._flushBuffer(out, outputOff);\n  }\n\n  // Buffer rest of the input\n  inputOff += this._buffer(data, inputOff);\n\n  return out;\n};\n\nCipher.prototype.final = function final(buffer) {\n  var first;\n  if (buffer)\n    first = this.update(buffer);\n\n  var last;\n  if (this.type === 'encrypt')\n    last = this._finalEncrypt();\n  else\n    last = this._finalDecrypt();\n\n  if (first)\n    return first.concat(last);\n  else\n    return last;\n};\n\nCipher.prototype._pad = function _pad(buffer, off) {\n  if (off === 0)\n    return false;\n\n  while (off < buffer.length)\n    buffer[off++] = 0;\n\n  return true;\n};\n\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n  if (!this._pad(this.buffer, this.bufferOff))\n    return [];\n\n  var out = new Array(this.blockSize);\n  this._update(this.buffer, 0, out, 0);\n  return out;\n};\n\nCipher.prototype._unpad = function _unpad(buffer) {\n  return buffer;\n};\n\nCipher.prototype._finalDecrypt = function _finalDecrypt() {\n  assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');\n  var out = new Array(this.blockSize);\n  this._flushBuffer(out, 0);\n\n  return this._unpad(out);\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar des = require('../des');\nvar utils = des.utils;\nvar Cipher = des.Cipher;\n\nfunction DESState() {\n  this.tmp = new Array(2);\n  this.keys = null;\n}\n\nfunction DES(options) {\n  Cipher.call(this, options);\n\n  var state = new DESState();\n  this._desState = state;\n\n  this.deriveKeys(state, options.key);\n}\ninherits(DES, Cipher);\nmodule.exports = DES;\n\nDES.create = function create(options) {\n  return new DES(options);\n};\n\nvar shiftTable = [\n  1, 1, 2, 2, 2, 2, 2, 2,\n  1, 2, 2, 2, 2, 2, 2, 1\n];\n\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n  state.keys = new Array(16 * 2);\n\n  assert.equal(key.length, this.blockSize, 'Invalid key length');\n\n  var kL = utils.readUInt32BE(key, 0);\n  var kR = utils.readUInt32BE(key, 4);\n\n  utils.pc1(kL, kR, state.tmp, 0);\n  kL = state.tmp[0];\n  kR = state.tmp[1];\n  for (var i = 0; i < state.keys.length; i += 2) {\n    var shift = shiftTable[i >>> 1];\n    kL = utils.r28shl(kL, shift);\n    kR = utils.r28shl(kR, shift);\n    utils.pc2(kL, kR, state.keys, i);\n  }\n};\n\nDES.prototype._update = function _update(inp, inOff, out, outOff) {\n  var state = this._desState;\n\n  var l = utils.readUInt32BE(inp, inOff);\n  var r = utils.readUInt32BE(inp, inOff + 4);\n\n  // Initial Permutation\n  utils.ip(l, r, state.tmp, 0);\n  l = state.tmp[0];\n  r = state.tmp[1];\n\n  if (this.type === 'encrypt')\n    this._encrypt(state, l, r, state.tmp, 0);\n  else\n    this._decrypt(state, l, r, state.tmp, 0);\n\n  l = state.tmp[0];\n  r = state.tmp[1];\n\n  utils.writeUInt32BE(out, l, outOff);\n  utils.writeUInt32BE(out, r, outOff + 4);\n};\n\nDES.prototype._pad = function _pad(buffer, off) {\n  var value = buffer.length - off;\n  for (var i = off; i < buffer.length; i++)\n    buffer[i] = value;\n\n  return true;\n};\n\nDES.prototype._unpad = function _unpad(buffer) {\n  var pad = buffer[buffer.length - 1];\n  for (var i = buffer.length - pad; i < buffer.length; i++)\n    assert.equal(buffer[i], pad);\n\n  return buffer.slice(0, buffer.length - pad);\n};\n\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n  var l = lStart;\n  var r = rStart;\n\n  // Apply f() x16 times\n  for (var i = 0; i < state.keys.length; i += 2) {\n    var keyL = state.keys[i];\n    var keyR = state.keys[i + 1];\n\n    // f(r, k)\n    utils.expand(r, state.tmp, 0);\n\n    keyL ^= state.tmp[0];\n    keyR ^= state.tmp[1];\n    var s = utils.substitute(keyL, keyR);\n    var f = utils.permute(s);\n\n    var t = r;\n    r = (l ^ f) >>> 0;\n    l = t;\n  }\n\n  // Reverse Initial Permutation\n  utils.rip(r, l, out, off);\n};\n\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n  var l = rStart;\n  var r = lStart;\n\n  // Apply f() x16 times\n  for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n    var keyL = state.keys[i];\n    var keyR = state.keys[i + 1];\n\n    // f(r, k)\n    utils.expand(l, state.tmp, 0);\n\n    keyL ^= state.tmp[0];\n    keyR ^= state.tmp[1];\n    var s = utils.substitute(keyL, keyR);\n    var f = utils.permute(s);\n\n    var t = l;\n    l = (r ^ f) >>> 0;\n    r = t;\n  }\n\n  // Reverse Initial Permutation\n  utils.rip(l, r, out, off);\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar proto = {};\n\nfunction CBCState(iv) {\n  assert.equal(iv.length, 8, 'Invalid IV length');\n\n  this.iv = new Array(8);\n  for (var i = 0; i < this.iv.length; i++)\n    this.iv[i] = iv[i];\n}\n\nfunction instantiate(Base) {\n  function CBC(options) {\n    Base.call(this, options);\n    this._cbcInit();\n  }\n  inherits(CBC, Base);\n\n  var keys = Object.keys(proto);\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    CBC.prototype[key] = proto[key];\n  }\n\n  CBC.create = function create(options) {\n    return new CBC(options);\n  };\n\n  return CBC;\n}\n\nexports.instantiate = instantiate;\n\nproto._cbcInit = function _cbcInit() {\n  var state = new CBCState(this.options.iv);\n  this._cbcState = state;\n};\n\nproto._update = function _update(inp, inOff, out, outOff) {\n  var state = this._cbcState;\n  var superProto = this.constructor.super_.prototype;\n\n  var iv = state.iv;\n  if (this.type === 'encrypt') {\n    for (var i = 0; i < this.blockSize; i++)\n      iv[i] ^= inp[inOff + i];\n\n    superProto._update.call(this, iv, 0, out, outOff);\n\n    for (var i = 0; i < this.blockSize; i++)\n      iv[i] = out[outOff + i];\n  } else {\n    superProto._update.call(this, inp, inOff, out, outOff);\n\n    for (var i = 0; i < this.blockSize; i++)\n      out[outOff + i] ^= iv[i];\n\n    for (var i = 0; i < this.blockSize; i++)\n      iv[i] = inp[inOff + i];\n  }\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar des = require('../des');\nvar Cipher = des.Cipher;\nvar DES = des.DES;\n\nfunction EDEState(type, key) {\n  assert.equal(key.length, 24, 'Invalid key length');\n\n  var k1 = key.slice(0, 8);\n  var k2 = key.slice(8, 16);\n  var k3 = key.slice(16, 24);\n\n  if (type === 'encrypt') {\n    this.ciphers = [\n      DES.create({ type: 'encrypt', key: k1 }),\n      DES.create({ type: 'decrypt', key: k2 }),\n      DES.create({ type: 'encrypt', key: k3 })\n    ];\n  } else {\n    this.ciphers = [\n      DES.create({ type: 'decrypt', key: k3 }),\n      DES.create({ type: 'encrypt', key: k2 }),\n      DES.create({ type: 'decrypt', key: k1 })\n    ];\n  }\n}\n\nfunction EDE(options) {\n  Cipher.call(this, options);\n\n  var state = new EDEState(this.type, this.options.key);\n  this._edeState = state;\n}\ninherits(EDE, Cipher);\n\nmodule.exports = EDE;\n\nEDE.create = function create(options) {\n  return new EDE(options);\n};\n\nEDE.prototype._update = function _update(inp, inOff, out, outOff) {\n  var state = this._edeState;\n\n  state.ciphers[0]._update(inp, inOff, out, outOff);\n  state.ciphers[1]._update(out, outOff, out, outOff);\n  state.ciphers[2]._update(out, outOff, out, outOff);\n};\n\nEDE.prototype._pad = DES.prototype._pad;\nEDE.prototype._unpad = DES.prototype._unpad;\n","'use strict';\n\nexports.utils = require('./des/utils');\nexports.Cipher = require('./des/cipher');\nexports.DES = require('./des/des');\nexports.CBC = require('./des/cbc');\nexports.EDE = require('./des/ede');\n","var CipherBase = require('cipher-base')\nvar des = require('des.js')\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar modes = {\n  'des-ede3-cbc': des.CBC.instantiate(des.EDE),\n  'des-ede3': des.EDE,\n  'des-ede-cbc': des.CBC.instantiate(des.EDE),\n  'des-ede': des.EDE,\n  'des-cbc': des.CBC.instantiate(des.DES),\n  'des-ecb': des.DES\n}\nmodes.des = modes['des-cbc']\nmodes.des3 = modes['des-ede3-cbc']\nmodule.exports = DES\ninherits(DES, CipherBase)\nfunction DES (opts) {\n  CipherBase.call(this)\n  var modeName = opts.mode.toLowerCase()\n  var mode = modes[modeName]\n  var type\n  if (opts.decrypt) {\n    type = 'decrypt'\n  } else {\n    type = 'encrypt'\n  }\n  var key = opts.key\n  if (!Buffer.isBuffer(key)) {\n    key = Buffer.from(key)\n  }\n  if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n    key = Buffer.concat([key, key.slice(0, 8)])\n  }\n  var iv = opts.iv\n  if (!Buffer.isBuffer(iv)) {\n    iv = Buffer.from(iv)\n  }\n  this._des = mode.create({\n    key: key,\n    iv: iv,\n    type: type\n  })\n}\nDES.prototype._update = function (data) {\n  return Buffer.from(this._des.update(data))\n}\nDES.prototype._final = function () {\n  return Buffer.from(this._des.final())\n}\n","exports.encrypt = function (self, block) {\n  return self._cipher.encryptBlock(block)\n}\n\nexports.decrypt = function (self, block) {\n  return self._cipher.decryptBlock(block)\n}\n","module.exports = function xor (a, b) {\n  var length = Math.min(a.length, b.length)\n  var buffer = new Buffer(length)\n\n  for (var i = 0; i < length; ++i) {\n    buffer[i] = a[i] ^ b[i]\n  }\n\n  return buffer\n}\n","var xor = require('buffer-xor')\n\nexports.encrypt = function (self, block) {\n  var data = xor(block, self._prev)\n\n  self._prev = self._cipher.encryptBlock(data)\n  return self._prev\n}\n\nexports.decrypt = function (self, block) {\n  var pad = self._prev\n\n  self._prev = block\n  var out = self._cipher.decryptBlock(block)\n\n  return xor(out, pad)\n}\n","var Buffer = require('safe-buffer').Buffer\nvar xor = require('buffer-xor')\n\nfunction encryptStart (self, data, decrypt) {\n  var len = data.length\n  var out = xor(data, self._cache)\n  self._cache = self._cache.slice(len)\n  self._prev = Buffer.concat([self._prev, decrypt ? data : out])\n  return out\n}\n\nexports.encrypt = function (self, data, decrypt) {\n  var out = Buffer.allocUnsafe(0)\n  var len\n\n  while (data.length) {\n    if (self._cache.length === 0) {\n      self._cache = self._cipher.encryptBlock(self._prev)\n      self._prev = Buffer.allocUnsafe(0)\n    }\n\n    if (self._cache.length <= data.length) {\n      len = self._cache.length\n      out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])\n      data = data.slice(len)\n    } else {\n      out = Buffer.concat([out, encryptStart(self, data, decrypt)])\n      break\n    }\n  }\n\n  return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n  var pad = self._cipher.encryptBlock(self._prev)\n  var out = pad[0] ^ byteParam\n\n  self._prev = Buffer.concat([\n    self._prev.slice(1),\n    Buffer.from([decrypt ? byteParam : out])\n  ])\n\n  return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n  var len = chunk.length\n  var out = Buffer.allocUnsafe(len)\n  var i = -1\n\n  while (++i < len) {\n    out[i] = encryptByte(self, chunk[i], decrypt)\n  }\n\n  return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n  var pad\n  var i = -1\n  var len = 8\n  var out = 0\n  var bit, value\n  while (++i < len) {\n    pad = self._cipher.encryptBlock(self._prev)\n    bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0\n    value = pad[0] ^ bit\n    out += ((value & 0x80) >> (i % 8))\n    self._prev = shiftIn(self._prev, decrypt ? bit : value)\n  }\n  return out\n}\n\nfunction shiftIn (buffer, value) {\n  var len = buffer.length\n  var i = -1\n  var out = Buffer.allocUnsafe(buffer.length)\n  buffer = Buffer.concat([buffer, Buffer.from([value])])\n\n  while (++i < len) {\n    out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)\n  }\n\n  return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n  var len = chunk.length\n  var out = Buffer.allocUnsafe(len)\n  var i = -1\n\n  while (++i < len) {\n    out[i] = encryptByte(self, chunk[i], decrypt)\n  }\n\n  return out\n}\n","var xor = require('buffer-xor')\n\nfunction getBlock (self) {\n  self._prev = self._cipher.encryptBlock(self._prev)\n  return self._prev\n}\n\nexports.encrypt = function (self, chunk) {\n  while (self._cache.length < chunk.length) {\n    self._cache = Buffer.concat([self._cache, getBlock(self)])\n  }\n\n  var pad = self._cache.slice(0, chunk.length)\n  self._cache = self._cache.slice(chunk.length)\n  return xor(chunk, pad)\n}\n","function incr32 (iv) {\n  var len = iv.length\n  var item\n  while (len--) {\n    item = iv.readUInt8(len)\n    if (item === 255) {\n      iv.writeUInt8(0, len)\n    } else {\n      item++\n      iv.writeUInt8(item, len)\n      break\n    }\n  }\n}\nmodule.exports = incr32\n","var xor = require('buffer-xor')\nvar Buffer = require('safe-buffer').Buffer\nvar incr32 = require('../incr32')\n\nfunction getBlock (self) {\n  var out = self._cipher.encryptBlockRaw(self._prev)\n  incr32(self._prev)\n  return out\n}\n\nvar blockSize = 16\nexports.encrypt = function (self, chunk) {\n  var chunkNum = Math.ceil(chunk.length / blockSize)\n  var start = self._cache.length\n  self._cache = Buffer.concat([\n    self._cache,\n    Buffer.allocUnsafe(chunkNum * blockSize)\n  ])\n  for (var i = 0; i < chunkNum; i++) {\n    var out = getBlock(self)\n    var offset = start + i * blockSize\n    self._cache.writeUInt32BE(out[0], offset + 0)\n    self._cache.writeUInt32BE(out[1], offset + 4)\n    self._cache.writeUInt32BE(out[2], offset + 8)\n    self._cache.writeUInt32BE(out[3], offset + 12)\n  }\n  var pad = self._cache.slice(0, chunk.length)\n  self._cache = self._cache.slice(chunk.length)\n  return xor(chunk, pad)\n}\n","var modeModules = {\n  ECB: require('./ecb'),\n  CBC: require('./cbc'),\n  CFB: require('./cfb'),\n  CFB8: require('./cfb8'),\n  CFB1: require('./cfb1'),\n  OFB: require('./ofb'),\n  CTR: require('./ctr'),\n  GCM: require('./ctr')\n}\n\nvar modes = require('./list.json')\n\nfor (var key in modes) {\n  modes[key].module = modeModules[modes[key].mode]\n}\n\nmodule.exports = modes\n","// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction asUInt32Array (buf) {\n  if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n\n  var len = (buf.length / 4) | 0\n  var out = new Array(len)\n\n  for (var i = 0; i < len; i++) {\n    out[i] = buf.readUInt32BE(i * 4)\n  }\n\n  return out\n}\n\nfunction scrubVec (v) {\n  for (var i = 0; i < v.length; v++) {\n    v[i] = 0\n  }\n}\n\nfunction cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) {\n  var SUB_MIX0 = SUB_MIX[0]\n  var SUB_MIX1 = SUB_MIX[1]\n  var SUB_MIX2 = SUB_MIX[2]\n  var SUB_MIX3 = SUB_MIX[3]\n\n  var s0 = M[0] ^ keySchedule[0]\n  var s1 = M[1] ^ keySchedule[1]\n  var s2 = M[2] ^ keySchedule[2]\n  var s3 = M[3] ^ keySchedule[3]\n  var t0, t1, t2, t3\n  var ksRow = 4\n\n  for (var round = 1; round < nRounds; round++) {\n    t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++]\n    t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++]\n    t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++]\n    t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++]\n    s0 = t0\n    s1 = t1\n    s2 = t2\n    s3 = t3\n  }\n\n  t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]\n  t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]\n  t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]\n  t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]\n  t0 = t0 >>> 0\n  t1 = t1 >>> 0\n  t2 = t2 >>> 0\n  t3 = t3 >>> 0\n\n  return [t0, t1, t2, t3]\n}\n\n// AES constants\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\nvar G = (function () {\n  // Compute double table\n  var d = new Array(256)\n  for (var j = 0; j < 256; j++) {\n    if (j < 128) {\n      d[j] = j << 1\n    } else {\n      d[j] = (j << 1) ^ 0x11b\n    }\n  }\n\n  var SBOX = []\n  var INV_SBOX = []\n  var SUB_MIX = [[], [], [], []]\n  var INV_SUB_MIX = [[], [], [], []]\n\n  // Walk GF(2^8)\n  var x = 0\n  var xi = 0\n  for (var i = 0; i < 256; ++i) {\n    // Compute sbox\n    var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n    sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n    SBOX[x] = sx\n    INV_SBOX[sx] = x\n\n    // Compute multiplication\n    var x2 = d[x]\n    var x4 = d[x2]\n    var x8 = d[x4]\n\n    // Compute sub bytes, mix columns tables\n    var t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n    SUB_MIX[0][x] = (t << 24) | (t >>> 8)\n    SUB_MIX[1][x] = (t << 16) | (t >>> 16)\n    SUB_MIX[2][x] = (t << 8) | (t >>> 24)\n    SUB_MIX[3][x] = t\n\n    // Compute inv sub bytes, inv mix columns tables\n    t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n    INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)\n    INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)\n    INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)\n    INV_SUB_MIX[3][sx] = t\n\n    if (x === 0) {\n      x = xi = 1\n    } else {\n      x = x2 ^ d[d[d[x8 ^ x2]]]\n      xi ^= d[d[xi]]\n    }\n  }\n\n  return {\n    SBOX: SBOX,\n    INV_SBOX: INV_SBOX,\n    SUB_MIX: SUB_MIX,\n    INV_SUB_MIX: INV_SUB_MIX\n  }\n})()\n\nfunction AES (key) {\n  this._key = asUInt32Array(key)\n  this._reset()\n}\n\nAES.blockSize = 4 * 4\nAES.keySize = 256 / 8\nAES.prototype.blockSize = AES.blockSize\nAES.prototype.keySize = AES.keySize\nAES.prototype._reset = function () {\n  var keyWords = this._key\n  var keySize = keyWords.length\n  var nRounds = keySize + 6\n  var ksRows = (nRounds + 1) * 4\n\n  var keySchedule = []\n  for (var k = 0; k < keySize; k++) {\n    keySchedule[k] = keyWords[k]\n  }\n\n  for (k = keySize; k < ksRows; k++) {\n    var t = keySchedule[k - 1]\n\n    if (k % keySize === 0) {\n      t = (t << 8) | (t >>> 24)\n      t =\n        (G.SBOX[t >>> 24] << 24) |\n        (G.SBOX[(t >>> 16) & 0xff] << 16) |\n        (G.SBOX[(t >>> 8) & 0xff] << 8) |\n        (G.SBOX[t & 0xff])\n\n      t ^= RCON[(k / keySize) | 0] << 24\n    } else if (keySize > 6 && k % keySize === 4) {\n      t =\n        (G.SBOX[t >>> 24] << 24) |\n        (G.SBOX[(t >>> 16) & 0xff] << 16) |\n        (G.SBOX[(t >>> 8) & 0xff] << 8) |\n        (G.SBOX[t & 0xff])\n    }\n\n    keySchedule[k] = keySchedule[k - keySize] ^ t\n  }\n\n  var invKeySchedule = []\n  for (var ik = 0; ik < ksRows; ik++) {\n    var ksR = ksRows - ik\n    var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)]\n\n    if (ik < 4 || ksR <= 4) {\n      invKeySchedule[ik] = tt\n    } else {\n      invKeySchedule[ik] =\n        G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^\n        G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^\n        G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^\n        G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]]\n    }\n  }\n\n  this._nRounds = nRounds\n  this._keySchedule = keySchedule\n  this._invKeySchedule = invKeySchedule\n}\n\nAES.prototype.encryptBlockRaw = function (M) {\n  M = asUInt32Array(M)\n  return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds)\n}\n\nAES.prototype.encryptBlock = function (M) {\n  var out = this.encryptBlockRaw(M)\n  var buf = Buffer.allocUnsafe(16)\n  buf.writeUInt32BE(out[0], 0)\n  buf.writeUInt32BE(out[1], 4)\n  buf.writeUInt32BE(out[2], 8)\n  buf.writeUInt32BE(out[3], 12)\n  return buf\n}\n\nAES.prototype.decryptBlock = function (M) {\n  M = asUInt32Array(M)\n\n  // swap\n  var m1 = M[1]\n  M[1] = M[3]\n  M[3] = m1\n\n  var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds)\n  var buf = Buffer.allocUnsafe(16)\n  buf.writeUInt32BE(out[0], 0)\n  buf.writeUInt32BE(out[3], 4)\n  buf.writeUInt32BE(out[2], 8)\n  buf.writeUInt32BE(out[1], 12)\n  return buf\n}\n\nAES.prototype.scrub = function () {\n  scrubVec(this._keySchedule)\n  scrubVec(this._invKeySchedule)\n  scrubVec(this._key)\n}\n\nmodule.exports.AES = AES\n","var Buffer = require('safe-buffer').Buffer\nvar ZEROES = Buffer.alloc(16, 0)\n\nfunction toArray (buf) {\n  return [\n    buf.readUInt32BE(0),\n    buf.readUInt32BE(4),\n    buf.readUInt32BE(8),\n    buf.readUInt32BE(12)\n  ]\n}\n\nfunction fromArray (out) {\n  var buf = Buffer.allocUnsafe(16)\n  buf.writeUInt32BE(out[0] >>> 0, 0)\n  buf.writeUInt32BE(out[1] >>> 0, 4)\n  buf.writeUInt32BE(out[2] >>> 0, 8)\n  buf.writeUInt32BE(out[3] >>> 0, 12)\n  return buf\n}\n\nfunction GHASH (key) {\n  this.h = key\n  this.state = Buffer.alloc(16, 0)\n  this.cache = Buffer.allocUnsafe(0)\n}\n\n// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n// by Juho Vähä-Herttua\nGHASH.prototype.ghash = function (block) {\n  var i = -1\n  while (++i < block.length) {\n    this.state[i] ^= block[i]\n  }\n  this._multiply()\n}\n\nGHASH.prototype._multiply = function () {\n  var Vi = toArray(this.h)\n  var Zi = [0, 0, 0, 0]\n  var j, xi, lsbVi\n  var i = -1\n  while (++i < 128) {\n    xi = (this.state[~~(i / 8)] & (1 << (7 - (i % 8)))) !== 0\n    if (xi) {\n      // Z_i+1 = Z_i ^ V_i\n      Zi[0] ^= Vi[0]\n      Zi[1] ^= Vi[1]\n      Zi[2] ^= Vi[2]\n      Zi[3] ^= Vi[3]\n    }\n\n    // Store the value of LSB(V_i)\n    lsbVi = (Vi[3] & 1) !== 0\n\n    // V_i+1 = V_i >> 1\n    for (j = 3; j > 0; j--) {\n      Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31)\n    }\n    Vi[0] = Vi[0] >>> 1\n\n    // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n    if (lsbVi) {\n      Vi[0] = Vi[0] ^ (0xe1 << 24)\n    }\n  }\n  this.state = fromArray(Zi)\n}\n\nGHASH.prototype.update = function (buf) {\n  this.cache = Buffer.concat([this.cache, buf])\n  var chunk\n  while (this.cache.length >= 16) {\n    chunk = this.cache.slice(0, 16)\n    this.cache = this.cache.slice(16)\n    this.ghash(chunk)\n  }\n}\n\nGHASH.prototype.final = function (abl, bl) {\n  if (this.cache.length) {\n    this.ghash(Buffer.concat([this.cache, ZEROES], 16))\n  }\n\n  this.ghash(fromArray([0, abl, 0, bl]))\n  return this.state\n}\n\nmodule.exports = GHASH\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\nvar GHASH = require('./ghash')\nvar xor = require('buffer-xor')\nvar incr32 = require('./incr32')\n\nfunction xorTest (a, b) {\n  var out = 0\n  if (a.length !== b.length) out++\n\n  var len = Math.min(a.length, b.length)\n  for (var i = 0; i < len; ++i) {\n    out += (a[i] ^ b[i])\n  }\n\n  return out\n}\n\nfunction calcIv (self, iv, ck) {\n  if (iv.length === 12) {\n    self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])])\n    return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])])\n  }\n  var ghash = new GHASH(ck)\n  var len = iv.length\n  var toPad = len % 16\n  ghash.update(iv)\n  if (toPad) {\n    toPad = 16 - toPad\n    ghash.update(Buffer.alloc(toPad, 0))\n  }\n  ghash.update(Buffer.alloc(8, 0))\n  var ivBits = len * 8\n  var tail = Buffer.alloc(8)\n  tail.writeUIntBE(ivBits, 0, 8)\n  ghash.update(tail)\n  self._finID = ghash.state\n  var out = Buffer.from(self._finID)\n  incr32(out)\n  return out\n}\nfunction StreamCipher (mode, key, iv, decrypt) {\n  Transform.call(this)\n\n  var h = Buffer.alloc(4, 0)\n\n  this._cipher = new aes.AES(key)\n  var ck = this._cipher.encryptBlock(h)\n  this._ghash = new GHASH(ck)\n  iv = calcIv(this, iv, ck)\n\n  this._prev = Buffer.from(iv)\n  this._cache = Buffer.allocUnsafe(0)\n  this._secCache = Buffer.allocUnsafe(0)\n  this._decrypt = decrypt\n  this._alen = 0\n  this._len = 0\n  this._mode = mode\n\n  this._authTag = null\n  this._called = false\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n  if (!this._called && this._alen) {\n    var rump = 16 - (this._alen % 16)\n    if (rump < 16) {\n      rump = Buffer.alloc(rump, 0)\n      this._ghash.update(rump)\n    }\n  }\n\n  this._called = true\n  var out = this._mode.encrypt(this, chunk)\n  if (this._decrypt) {\n    this._ghash.update(chunk)\n  } else {\n    this._ghash.update(out)\n  }\n  this._len += chunk.length\n  return out\n}\n\nStreamCipher.prototype._final = function () {\n  if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data')\n\n  var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))\n  if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data')\n\n  this._authTag = tag\n  this._cipher.scrub()\n}\n\nStreamCipher.prototype.getAuthTag = function getAuthTag () {\n  if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state')\n\n  return this._authTag\n}\n\nStreamCipher.prototype.setAuthTag = function setAuthTag (tag) {\n  if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state')\n\n  this._authTag = tag\n}\n\nStreamCipher.prototype.setAAD = function setAAD (buf) {\n  if (this._called) throw new Error('Attempting to set AAD in unsupported state')\n\n  this._ghash.update(buf)\n  this._alen += buf.length\n}\n\nmodule.exports = StreamCipher\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\n\nfunction StreamCipher (mode, key, iv, decrypt) {\n  Transform.call(this)\n\n  this._cipher = new aes.AES(key)\n  this._prev = Buffer.from(iv)\n  this._cache = Buffer.allocUnsafe(0)\n  this._secCache = Buffer.allocUnsafe(0)\n  this._decrypt = decrypt\n  this._mode = mode\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n  return this._mode.encrypt(this, chunk, this._decrypt)\n}\n\nStreamCipher.prototype._final = function () {\n  this._cipher.scrub()\n}\n\nmodule.exports = StreamCipher\n","var Buffer = require('safe-buffer').Buffer\nvar MD5 = require('md5.js')\n\n/* eslint-disable camelcase */\nfunction EVP_BytesToKey (password, salt, keyBits, ivLen) {\n  if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary')\n  if (salt) {\n    if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary')\n    if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length')\n  }\n\n  var keyLen = keyBits / 8\n  var key = Buffer.alloc(keyLen)\n  var iv = Buffer.alloc(ivLen || 0)\n  var tmp = Buffer.alloc(0)\n\n  while (keyLen > 0 || ivLen > 0) {\n    var hash = new MD5()\n    hash.update(tmp)\n    hash.update(password)\n    if (salt) hash.update(salt)\n    tmp = hash.digest()\n\n    var used = 0\n\n    if (keyLen > 0) {\n      var keyStart = key.length - keyLen\n      used = Math.min(keyLen, tmp.length)\n      tmp.copy(key, keyStart, 0, used)\n      keyLen -= used\n    }\n\n    if (used < tmp.length && ivLen > 0) {\n      var ivStart = iv.length - ivLen\n      var length = Math.min(ivLen, tmp.length - used)\n      tmp.copy(iv, ivStart, used, used + length)\n      ivLen -= length\n    }\n  }\n\n  tmp.fill(0)\n  return { key: key, iv: iv }\n}\n\nmodule.exports = EVP_BytesToKey\n","var MODES = require('./modes')\nvar AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Cipher (mode, key, iv) {\n  Transform.call(this)\n\n  this._cache = new Splitter()\n  this._cipher = new aes.AES(key)\n  this._prev = Buffer.from(iv)\n  this._mode = mode\n  this._autopadding = true\n}\n\ninherits(Cipher, Transform)\n\nCipher.prototype._update = function (data) {\n  this._cache.add(data)\n  var chunk\n  var thing\n  var out = []\n\n  while ((chunk = this._cache.get())) {\n    thing = this._mode.encrypt(this, chunk)\n    out.push(thing)\n  }\n\n  return Buffer.concat(out)\n}\n\nvar PADDING = Buffer.alloc(16, 0x10)\n\nCipher.prototype._final = function () {\n  var chunk = this._cache.flush()\n  if (this._autopadding) {\n    chunk = this._mode.encrypt(this, chunk)\n    this._cipher.scrub()\n    return chunk\n  }\n\n  if (!chunk.equals(PADDING)) {\n    this._cipher.scrub()\n    throw new Error('data not multiple of block length')\n  }\n}\n\nCipher.prototype.setAutoPadding = function (setTo) {\n  this._autopadding = !!setTo\n  return this\n}\n\nfunction Splitter () {\n  this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n  this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function () {\n  if (this.cache.length > 15) {\n    var out = this.cache.slice(0, 16)\n    this.cache = this.cache.slice(16)\n    return out\n  }\n  return null\n}\n\nSplitter.prototype.flush = function () {\n  var len = 16 - this.cache.length\n  var padBuff = Buffer.allocUnsafe(len)\n\n  var i = -1\n  while (++i < len) {\n    padBuff.writeUInt8(len, i)\n  }\n\n  return Buffer.concat([this.cache, padBuff])\n}\n\nfunction createCipheriv (suite, password, iv) {\n  var config = MODES[suite.toLowerCase()]\n  if (!config) throw new TypeError('invalid suite type')\n\n  if (typeof password === 'string') password = Buffer.from(password)\n  if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n  if (typeof iv === 'string') iv = Buffer.from(iv)\n  if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n  if (config.type === 'stream') {\n    return new StreamCipher(config.module, password, iv)\n  } else if (config.type === 'auth') {\n    return new AuthCipher(config.module, password, iv)\n  }\n\n  return new Cipher(config.module, password, iv)\n}\n\nfunction createCipher (suite, password) {\n  var config = MODES[suite.toLowerCase()]\n  if (!config) throw new TypeError('invalid suite type')\n\n  var keys = ebtk(password, false, config.key, config.iv)\n  return createCipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createCipheriv = createCipheriv\nexports.createCipher = createCipher\n","var AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar MODES = require('./modes')\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Decipher (mode, key, iv) {\n  Transform.call(this)\n\n  this._cache = new Splitter()\n  this._last = void 0\n  this._cipher = new aes.AES(key)\n  this._prev = Buffer.from(iv)\n  this._mode = mode\n  this._autopadding = true\n}\n\ninherits(Decipher, Transform)\n\nDecipher.prototype._update = function (data) {\n  this._cache.add(data)\n  var chunk\n  var thing\n  var out = []\n  while ((chunk = this._cache.get(this._autopadding))) {\n    thing = this._mode.decrypt(this, chunk)\n    out.push(thing)\n  }\n  return Buffer.concat(out)\n}\n\nDecipher.prototype._final = function () {\n  var chunk = this._cache.flush()\n  if (this._autopadding) {\n    return unpad(this._mode.decrypt(this, chunk))\n  } else if (chunk) {\n    throw new Error('data not multiple of block length')\n  }\n}\n\nDecipher.prototype.setAutoPadding = function (setTo) {\n  this._autopadding = !!setTo\n  return this\n}\n\nfunction Splitter () {\n  this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n  this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function (autoPadding) {\n  var out\n  if (autoPadding) {\n    if (this.cache.length > 16) {\n      out = this.cache.slice(0, 16)\n      this.cache = this.cache.slice(16)\n      return out\n    }\n  } else {\n    if (this.cache.length >= 16) {\n      out = this.cache.slice(0, 16)\n      this.cache = this.cache.slice(16)\n      return out\n    }\n  }\n\n  return null\n}\n\nSplitter.prototype.flush = function () {\n  if (this.cache.length) return this.cache\n}\n\nfunction unpad (last) {\n  var padded = last[15]\n  if (padded < 1 || padded > 16) {\n    throw new Error('unable to decrypt data')\n  }\n  var i = -1\n  while (++i < padded) {\n    if (last[(i + (16 - padded))] !== padded) {\n      throw new Error('unable to decrypt data')\n    }\n  }\n  if (padded === 16) return\n\n  return last.slice(0, 16 - padded)\n}\n\nfunction createDecipheriv (suite, password, iv) {\n  var config = MODES[suite.toLowerCase()]\n  if (!config) throw new TypeError('invalid suite type')\n\n  if (typeof iv === 'string') iv = Buffer.from(iv)\n  if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n  if (typeof password === 'string') password = Buffer.from(password)\n  if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n  if (config.type === 'stream') {\n    return new StreamCipher(config.module, password, iv, true)\n  } else if (config.type === 'auth') {\n    return new AuthCipher(config.module, password, iv, true)\n  }\n\n  return new Decipher(config.module, password, iv)\n}\n\nfunction createDecipher (suite, password) {\n  var config = MODES[suite.toLowerCase()]\n  if (!config) throw new TypeError('invalid suite type')\n\n  var keys = ebtk(password, false, config.key, config.iv)\n  return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createDecipher = createDecipher\nexports.createDecipheriv = createDecipheriv\n","var ciphers = require('./encrypter')\nvar deciphers = require('./decrypter')\nvar modes = require('./modes/list.json')\n\nfunction getCiphers () {\n  return Object.keys(modes)\n}\n\nexports.createCipher = exports.Cipher = ciphers.createCipher\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv\nexports.createDecipher = exports.Decipher = deciphers.createDecipher\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","exports['des-ecb'] = {\n  key: 8,\n  iv: 0\n}\nexports['des-cbc'] = exports.des = {\n  key: 8,\n  iv: 8\n}\nexports['des-ede3-cbc'] = exports.des3 = {\n  key: 24,\n  iv: 8\n}\nexports['des-ede3'] = {\n  key: 24,\n  iv: 0\n}\nexports['des-ede-cbc'] = {\n  key: 16,\n  iv: 8\n}\nexports['des-ede'] = {\n  key: 16,\n  iv: 0\n}\n","var DES = require('browserify-des')\nvar aes = require('browserify-aes/browser')\nvar aesModes = require('browserify-aes/modes')\nvar desModes = require('browserify-des/modes')\nvar ebtk = require('evp_bytestokey')\n\nfunction createCipher (suite, password) {\n  suite = suite.toLowerCase()\n\n  var keyLen, ivLen\n  if (aesModes[suite]) {\n    keyLen = aesModes[suite].key\n    ivLen = aesModes[suite].iv\n  } else if (desModes[suite]) {\n    keyLen = desModes[suite].key * 8\n    ivLen = desModes[suite].iv\n  } else {\n    throw new TypeError('invalid suite type')\n  }\n\n  var keys = ebtk(password, false, keyLen, ivLen)\n  return createCipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createDecipher (suite, password) {\n  suite = suite.toLowerCase()\n\n  var keyLen, ivLen\n  if (aesModes[suite]) {\n    keyLen = aesModes[suite].key\n    ivLen = aesModes[suite].iv\n  } else if (desModes[suite]) {\n    keyLen = desModes[suite].key * 8\n    ivLen = desModes[suite].iv\n  } else {\n    throw new TypeError('invalid suite type')\n  }\n\n  var keys = ebtk(password, false, keyLen, ivLen)\n  return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createCipheriv (suite, key, iv) {\n  suite = suite.toLowerCase()\n  if (aesModes[suite]) return aes.createCipheriv(suite, key, iv)\n  if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite })\n\n  throw new TypeError('invalid suite type')\n}\n\nfunction createDecipheriv (suite, key, iv) {\n  suite = suite.toLowerCase()\n  if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv)\n  if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite, decrypt: true })\n\n  throw new TypeError('invalid suite type')\n}\n\nfunction getCiphers () {\n  return Object.keys(desModes).concat(aes.getCiphers())\n}\n\nexports.createCipher = exports.Cipher = createCipher\nexports.createCipheriv = exports.Cipheriv = createCipheriv\nexports.createDecipher = exports.Decipher = createDecipher\nexports.createDecipheriv = exports.Decipheriv = createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","(function (module, exports) {\n  'use strict';\n\n  // Utils\n  function assert (val, msg) {\n    if (!val) throw new Error(msg || 'Assertion failed');\n  }\n\n  // Could use `inherits` module, but don't want to move from single file\n  // architecture yet.\n  function inherits (ctor, superCtor) {\n    ctor.super_ = superCtor;\n    var TempCtor = function () {};\n    TempCtor.prototype = superCtor.prototype;\n    ctor.prototype = new TempCtor();\n    ctor.prototype.constructor = ctor;\n  }\n\n  // BN\n\n  function BN (number, base, endian) {\n    if (BN.isBN(number)) {\n      return number;\n    }\n\n    this.negative = 0;\n    this.words = null;\n    this.length = 0;\n\n    // Reduction context\n    this.red = null;\n\n    if (number !== null) {\n      if (base === 'le' || base === 'be') {\n        endian = base;\n        base = 10;\n      }\n\n      this._init(number || 0, base || 10, endian || 'be');\n    }\n  }\n  if (typeof module === 'object') {\n    module.exports = BN;\n  } else {\n    exports.BN = BN;\n  }\n\n  BN.BN = BN;\n  BN.wordSize = 26;\n\n  var Buffer;\n  try {\n    Buffer = require('buffer').Buffer;\n  } catch (e) {\n  }\n\n  BN.isBN = function isBN (num) {\n    if (num instanceof BN) {\n      return true;\n    }\n\n    return num !== null && typeof num === 'object' &&\n      num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n  };\n\n  BN.max = function max (left, right) {\n    if (left.cmp(right) > 0) return left;\n    return right;\n  };\n\n  BN.min = function min (left, right) {\n    if (left.cmp(right) < 0) return left;\n    return right;\n  };\n\n  BN.prototype._init = function init (number, base, endian) {\n    if (typeof number === 'number') {\n      return this._initNumber(number, base, endian);\n    }\n\n    if (typeof number === 'object') {\n      return this._initArray(number, base, endian);\n    }\n\n    if (base === 'hex') {\n      base = 16;\n    }\n    assert(base === (base | 0) && base >= 2 && base <= 36);\n\n    number = number.toString().replace(/\\s+/g, '');\n    var start = 0;\n    if (number[0] === '-') {\n      start++;\n    }\n\n    if (base === 16) {\n      this._parseHex(number, start);\n    } else {\n      this._parseBase(number, base, start);\n    }\n\n    if (number[0] === '-') {\n      this.negative = 1;\n    }\n\n    this.strip();\n\n    if (endian !== 'le') return;\n\n    this._initArray(this.toArray(), base, endian);\n  };\n\n  BN.prototype._initNumber = function _initNumber (number, base, endian) {\n    if (number < 0) {\n      this.negative = 1;\n      number = -number;\n    }\n    if (number < 0x4000000) {\n      this.words = [ number & 0x3ffffff ];\n      this.length = 1;\n    } else if (number < 0x10000000000000) {\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff\n      ];\n      this.length = 2;\n    } else {\n      assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff,\n        1\n      ];\n      this.length = 3;\n    }\n\n    if (endian !== 'le') return;\n\n    // Reverse the bytes\n    this._initArray(this.toArray(), base, endian);\n  };\n\n  BN.prototype._initArray = function _initArray (number, base, endian) {\n    // Perhaps a Uint8Array\n    assert(typeof number.length === 'number');\n    if (number.length <= 0) {\n      this.words = [ 0 ];\n      this.length = 1;\n      return this;\n    }\n\n    this.length = Math.ceil(number.length / 3);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    var j, w;\n    var off = 0;\n    if (endian === 'be') {\n      for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n        w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    } else if (endian === 'le') {\n      for (i = 0, j = 0; i < number.length; i += 3) {\n        w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    }\n    return this.strip();\n  };\n\n  function parseHex (str, start, end) {\n    var r = 0;\n    var len = Math.min(str.length, end);\n    for (var i = start; i < len; i++) {\n      var c = str.charCodeAt(i) - 48;\n\n      r <<= 4;\n\n      // 'a' - 'f'\n      if (c >= 49 && c <= 54) {\n        r |= c - 49 + 0xa;\n\n      // 'A' - 'F'\n      } else if (c >= 17 && c <= 22) {\n        r |= c - 17 + 0xa;\n\n      // '0' - '9'\n      } else {\n        r |= c & 0xf;\n      }\n    }\n    return r;\n  }\n\n  BN.prototype._parseHex = function _parseHex (number, start) {\n    // Create possibly bigger array to ensure that it fits the number\n    this.length = Math.ceil((number.length - start) / 6);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    var j, w;\n    // Scan 24-bit chunks and add them to the number\n    var off = 0;\n    for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n      w = parseHex(number, i, i + 6);\n      this.words[j] |= (w << off) & 0x3ffffff;\n      // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n      this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n      off += 24;\n      if (off >= 26) {\n        off -= 26;\n        j++;\n      }\n    }\n    if (i + 6 !== start) {\n      w = parseHex(number, start, i + 6);\n      this.words[j] |= (w << off) & 0x3ffffff;\n      this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n    }\n    this.strip();\n  };\n\n  function parseBase (str, start, end, mul) {\n    var r = 0;\n    var len = Math.min(str.length, end);\n    for (var i = start; i < len; i++) {\n      var c = str.charCodeAt(i) - 48;\n\n      r *= mul;\n\n      // 'a'\n      if (c >= 49) {\n        r += c - 49 + 0xa;\n\n      // 'A'\n      } else if (c >= 17) {\n        r += c - 17 + 0xa;\n\n      // '0' - '9'\n      } else {\n        r += c;\n      }\n    }\n    return r;\n  }\n\n  BN.prototype._parseBase = function _parseBase (number, base, start) {\n    // Initialize as zero\n    this.words = [ 0 ];\n    this.length = 1;\n\n    // Find length of limb in base\n    for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n      limbLen++;\n    }\n    limbLen--;\n    limbPow = (limbPow / base) | 0;\n\n    var total = number.length - start;\n    var mod = total % limbLen;\n    var end = Math.min(total, total - mod) + start;\n\n    var word = 0;\n    for (var i = start; i < end; i += limbLen) {\n      word = parseBase(number, i, i + limbLen, base);\n\n      this.imuln(limbPow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n\n    if (mod !== 0) {\n      var pow = 1;\n      word = parseBase(number, i, number.length, base);\n\n      for (i = 0; i < mod; i++) {\n        pow *= base;\n      }\n\n      this.imuln(pow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n  };\n\n  BN.prototype.copy = function copy (dest) {\n    dest.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      dest.words[i] = this.words[i];\n    }\n    dest.length = this.length;\n    dest.negative = this.negative;\n    dest.red = this.red;\n  };\n\n  BN.prototype.clone = function clone () {\n    var r = new BN(null);\n    this.copy(r);\n    return r;\n  };\n\n  BN.prototype._expand = function _expand (size) {\n    while (this.length < size) {\n      this.words[this.length++] = 0;\n    }\n    return this;\n  };\n\n  // Remove leading `0` from `this`\n  BN.prototype.strip = function strip () {\n    while (this.length > 1 && this.words[this.length - 1] === 0) {\n      this.length--;\n    }\n    return this._normSign();\n  };\n\n  BN.prototype._normSign = function _normSign () {\n    // -0 = 0\n    if (this.length === 1 && this.words[0] === 0) {\n      this.negative = 0;\n    }\n    return this;\n  };\n\n  BN.prototype.inspect = function inspect () {\n    return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n  };\n\n  /*\n\n  var zeros = [];\n  var groupSizes = [];\n  var groupBases = [];\n\n  var s = '';\n  var i = -1;\n  while (++i < BN.wordSize) {\n    zeros[i] = s;\n    s += '0';\n  }\n  groupSizes[0] = 0;\n  groupSizes[1] = 0;\n  groupBases[0] = 0;\n  groupBases[1] = 0;\n  var base = 2 - 1;\n  while (++base < 36 + 1) {\n    var groupSize = 0;\n    var groupBase = 1;\n    while (groupBase < (1 << BN.wordSize) / base) {\n      groupBase *= base;\n      groupSize += 1;\n    }\n    groupSizes[base] = groupSize;\n    groupBases[base] = groupBase;\n  }\n\n  */\n\n  var zeros = [\n    '',\n    '0',\n    '00',\n    '000',\n    '0000',\n    '00000',\n    '000000',\n    '0000000',\n    '00000000',\n    '000000000',\n    '0000000000',\n    '00000000000',\n    '000000000000',\n    '0000000000000',\n    '00000000000000',\n    '000000000000000',\n    '0000000000000000',\n    '00000000000000000',\n    '000000000000000000',\n    '0000000000000000000',\n    '00000000000000000000',\n    '000000000000000000000',\n    '0000000000000000000000',\n    '00000000000000000000000',\n    '000000000000000000000000',\n    '0000000000000000000000000'\n  ];\n\n  var groupSizes = [\n    0, 0,\n    25, 16, 12, 11, 10, 9, 8,\n    8, 7, 7, 7, 7, 6, 6,\n    6, 6, 6, 6, 6, 5, 5,\n    5, 5, 5, 5, 5, 5, 5,\n    5, 5, 5, 5, 5, 5, 5\n  ];\n\n  var groupBases = [\n    0, 0,\n    33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n    43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n    16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n    6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n    24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n  ];\n\n  BN.prototype.toString = function toString (base, padding) {\n    base = base || 10;\n    padding = padding | 0 || 1;\n\n    var out;\n    if (base === 16 || base === 'hex') {\n      out = '';\n      var off = 0;\n      var carry = 0;\n      for (var i = 0; i < this.length; i++) {\n        var w = this.words[i];\n        var word = (((w << off) | carry) & 0xffffff).toString(16);\n        carry = (w >>> (24 - off)) & 0xffffff;\n        if (carry !== 0 || i !== this.length - 1) {\n          out = zeros[6 - word.length] + word + out;\n        } else {\n          out = word + out;\n        }\n        off += 2;\n        if (off >= 26) {\n          off -= 26;\n          i--;\n        }\n      }\n      if (carry !== 0) {\n        out = carry.toString(16) + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    if (base === (base | 0) && base >= 2 && base <= 36) {\n      // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n      var groupSize = groupSizes[base];\n      // var groupBase = Math.pow(base, groupSize);\n      var groupBase = groupBases[base];\n      out = '';\n      var c = this.clone();\n      c.negative = 0;\n      while (!c.isZero()) {\n        var r = c.modn(groupBase).toString(base);\n        c = c.idivn(groupBase);\n\n        if (!c.isZero()) {\n          out = zeros[groupSize - r.length] + r + out;\n        } else {\n          out = r + out;\n        }\n      }\n      if (this.isZero()) {\n        out = '0' + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    assert(false, 'Base should be between 2 and 36');\n  };\n\n  BN.prototype.toNumber = function toNumber () {\n    var ret = this.words[0];\n    if (this.length === 2) {\n      ret += this.words[1] * 0x4000000;\n    } else if (this.length === 3 && this.words[2] === 0x01) {\n      // NOTE: at this stage it is known that the top bit is set\n      ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n    } else if (this.length > 2) {\n      assert(false, 'Number can only safely store up to 53 bits');\n    }\n    return (this.negative !== 0) ? -ret : ret;\n  };\n\n  BN.prototype.toJSON = function toJSON () {\n    return this.toString(16);\n  };\n\n  BN.prototype.toBuffer = function toBuffer (endian, length) {\n    assert(typeof Buffer !== 'undefined');\n    return this.toArrayLike(Buffer, endian, length);\n  };\n\n  BN.prototype.toArray = function toArray (endian, length) {\n    return this.toArrayLike(Array, endian, length);\n  };\n\n  BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n    var byteLength = this.byteLength();\n    var reqLength = length || Math.max(1, byteLength);\n    assert(byteLength <= reqLength, 'byte array longer than desired length');\n    assert(reqLength > 0, 'Requested array length <= 0');\n\n    this.strip();\n    var littleEndian = endian === 'le';\n    var res = new ArrayType(reqLength);\n\n    var b, i;\n    var q = this.clone();\n    if (!littleEndian) {\n      // Assume big-endian\n      for (i = 0; i < reqLength - byteLength; i++) {\n        res[i] = 0;\n      }\n\n      for (i = 0; !q.isZero(); i++) {\n        b = q.andln(0xff);\n        q.iushrn(8);\n\n        res[reqLength - i - 1] = b;\n      }\n    } else {\n      for (i = 0; !q.isZero(); i++) {\n        b = q.andln(0xff);\n        q.iushrn(8);\n\n        res[i] = b;\n      }\n\n      for (; i < reqLength; i++) {\n        res[i] = 0;\n      }\n    }\n\n    return res;\n  };\n\n  if (Math.clz32) {\n    BN.prototype._countBits = function _countBits (w) {\n      return 32 - Math.clz32(w);\n    };\n  } else {\n    BN.prototype._countBits = function _countBits (w) {\n      var t = w;\n      var r = 0;\n      if (t >= 0x1000) {\n        r += 13;\n        t >>>= 13;\n      }\n      if (t >= 0x40) {\n        r += 7;\n        t >>>= 7;\n      }\n      if (t >= 0x8) {\n        r += 4;\n        t >>>= 4;\n      }\n      if (t >= 0x02) {\n        r += 2;\n        t >>>= 2;\n      }\n      return r + t;\n    };\n  }\n\n  BN.prototype._zeroBits = function _zeroBits (w) {\n    // Short-cut\n    if (w === 0) return 26;\n\n    var t = w;\n    var r = 0;\n    if ((t & 0x1fff) === 0) {\n      r += 13;\n      t >>>= 13;\n    }\n    if ((t & 0x7f) === 0) {\n      r += 7;\n      t >>>= 7;\n    }\n    if ((t & 0xf) === 0) {\n      r += 4;\n      t >>>= 4;\n    }\n    if ((t & 0x3) === 0) {\n      r += 2;\n      t >>>= 2;\n    }\n    if ((t & 0x1) === 0) {\n      r++;\n    }\n    return r;\n  };\n\n  // Return number of used bits in a BN\n  BN.prototype.bitLength = function bitLength () {\n    var w = this.words[this.length - 1];\n    var hi = this._countBits(w);\n    return (this.length - 1) * 26 + hi;\n  };\n\n  function toBitArray (num) {\n    var w = new Array(num.bitLength());\n\n    for (var bit = 0; bit < w.length; bit++) {\n      var off = (bit / 26) | 0;\n      var wbit = bit % 26;\n\n      w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n    }\n\n    return w;\n  }\n\n  // Number of trailing zero bits\n  BN.prototype.zeroBits = function zeroBits () {\n    if (this.isZero()) return 0;\n\n    var r = 0;\n    for (var i = 0; i < this.length; i++) {\n      var b = this._zeroBits(this.words[i]);\n      r += b;\n      if (b !== 26) break;\n    }\n    return r;\n  };\n\n  BN.prototype.byteLength = function byteLength () {\n    return Math.ceil(this.bitLength() / 8);\n  };\n\n  BN.prototype.toTwos = function toTwos (width) {\n    if (this.negative !== 0) {\n      return this.abs().inotn(width).iaddn(1);\n    }\n    return this.clone();\n  };\n\n  BN.prototype.fromTwos = function fromTwos (width) {\n    if (this.testn(width - 1)) {\n      return this.notn(width).iaddn(1).ineg();\n    }\n    return this.clone();\n  };\n\n  BN.prototype.isNeg = function isNeg () {\n    return this.negative !== 0;\n  };\n\n  // Return negative clone of `this`\n  BN.prototype.neg = function neg () {\n    return this.clone().ineg();\n  };\n\n  BN.prototype.ineg = function ineg () {\n    if (!this.isZero()) {\n      this.negative ^= 1;\n    }\n\n    return this;\n  };\n\n  // Or `num` with `this` in-place\n  BN.prototype.iuor = function iuor (num) {\n    while (this.length < num.length) {\n      this.words[this.length++] = 0;\n    }\n\n    for (var i = 0; i < num.length; i++) {\n      this.words[i] = this.words[i] | num.words[i];\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.ior = function ior (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuor(num);\n  };\n\n  // Or `num` with `this`\n  BN.prototype.or = function or (num) {\n    if (this.length > num.length) return this.clone().ior(num);\n    return num.clone().ior(this);\n  };\n\n  BN.prototype.uor = function uor (num) {\n    if (this.length > num.length) return this.clone().iuor(num);\n    return num.clone().iuor(this);\n  };\n\n  // And `num` with `this` in-place\n  BN.prototype.iuand = function iuand (num) {\n    // b = min-length(num, this)\n    var b;\n    if (this.length > num.length) {\n      b = num;\n    } else {\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = this.words[i] & num.words[i];\n    }\n\n    this.length = b.length;\n\n    return this.strip();\n  };\n\n  BN.prototype.iand = function iand (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuand(num);\n  };\n\n  // And `num` with `this`\n  BN.prototype.and = function and (num) {\n    if (this.length > num.length) return this.clone().iand(num);\n    return num.clone().iand(this);\n  };\n\n  BN.prototype.uand = function uand (num) {\n    if (this.length > num.length) return this.clone().iuand(num);\n    return num.clone().iuand(this);\n  };\n\n  // Xor `num` with `this` in-place\n  BN.prototype.iuxor = function iuxor (num) {\n    // a.length > b.length\n    var a;\n    var b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = a.words[i] ^ b.words[i];\n    }\n\n    if (this !== a) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = a.length;\n\n    return this.strip();\n  };\n\n  BN.prototype.ixor = function ixor (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuxor(num);\n  };\n\n  // Xor `num` with `this`\n  BN.prototype.xor = function xor (num) {\n    if (this.length > num.length) return this.clone().ixor(num);\n    return num.clone().ixor(this);\n  };\n\n  BN.prototype.uxor = function uxor (num) {\n    if (this.length > num.length) return this.clone().iuxor(num);\n    return num.clone().iuxor(this);\n  };\n\n  // Not ``this`` with ``width`` bitwidth\n  BN.prototype.inotn = function inotn (width) {\n    assert(typeof width === 'number' && width >= 0);\n\n    var bytesNeeded = Math.ceil(width / 26) | 0;\n    var bitsLeft = width % 26;\n\n    // Extend the buffer with leading zeroes\n    this._expand(bytesNeeded);\n\n    if (bitsLeft > 0) {\n      bytesNeeded--;\n    }\n\n    // Handle complete words\n    for (var i = 0; i < bytesNeeded; i++) {\n      this.words[i] = ~this.words[i] & 0x3ffffff;\n    }\n\n    // Handle the residue\n    if (bitsLeft > 0) {\n      this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n    }\n\n    // And remove leading zeroes\n    return this.strip();\n  };\n\n  BN.prototype.notn = function notn (width) {\n    return this.clone().inotn(width);\n  };\n\n  // Set `bit` of `this`\n  BN.prototype.setn = function setn (bit, val) {\n    assert(typeof bit === 'number' && bit >= 0);\n\n    var off = (bit / 26) | 0;\n    var wbit = bit % 26;\n\n    this._expand(off + 1);\n\n    if (val) {\n      this.words[off] = this.words[off] | (1 << wbit);\n    } else {\n      this.words[off] = this.words[off] & ~(1 << wbit);\n    }\n\n    return this.strip();\n  };\n\n  // Add `num` to `this` in-place\n  BN.prototype.iadd = function iadd (num) {\n    var r;\n\n    // negative + positive\n    if (this.negative !== 0 && num.negative === 0) {\n      this.negative = 0;\n      r = this.isub(num);\n      this.negative ^= 1;\n      return this._normSign();\n\n    // positive + negative\n    } else if (this.negative === 0 && num.negative !== 0) {\n      num.negative = 0;\n      r = this.isub(num);\n      num.negative = 1;\n      return r._normSign();\n    }\n\n    // a.length > b.length\n    var a, b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n\n    this.length = a.length;\n    if (carry !== 0) {\n      this.words[this.length] = carry;\n      this.length++;\n    // Copy the rest of the words\n    } else if (a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    return this;\n  };\n\n  // Add `num` to `this`\n  BN.prototype.add = function add (num) {\n    var res;\n    if (num.negative !== 0 && this.negative === 0) {\n      num.negative = 0;\n      res = this.sub(num);\n      num.negative ^= 1;\n      return res;\n    } else if (num.negative === 0 && this.negative !== 0) {\n      this.negative = 0;\n      res = num.sub(this);\n      this.negative = 1;\n      return res;\n    }\n\n    if (this.length > num.length) return this.clone().iadd(num);\n\n    return num.clone().iadd(this);\n  };\n\n  // Subtract `num` from `this` in-place\n  BN.prototype.isub = function isub (num) {\n    // this - (-num) = this + num\n    if (num.negative !== 0) {\n      num.negative = 0;\n      var r = this.iadd(num);\n      num.negative = 1;\n      return r._normSign();\n\n    // -this - num = -(this + num)\n    } else if (this.negative !== 0) {\n      this.negative = 0;\n      this.iadd(num);\n      this.negative = 1;\n      return this._normSign();\n    }\n\n    // At this point both numbers are positive\n    var cmp = this.cmp(num);\n\n    // Optimization - zeroify\n    if (cmp === 0) {\n      this.negative = 0;\n      this.length = 1;\n      this.words[0] = 0;\n      return this;\n    }\n\n    // a > b\n    var a, b;\n    if (cmp > 0) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n\n    // Copy rest of the words\n    if (carry === 0 && i < a.length && a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = Math.max(this.length, i);\n\n    if (a !== this) {\n      this.negative = 1;\n    }\n\n    return this.strip();\n  };\n\n  // Subtract `num` from `this`\n  BN.prototype.sub = function sub (num) {\n    return this.clone().isub(num);\n  };\n\n  function smallMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    var len = (self.length + num.length) | 0;\n    out.length = len;\n    len = (len - 1) | 0;\n\n    // Peel one iteration (compiler can't do it, because of code complexity)\n    var a = self.words[0] | 0;\n    var b = num.words[0] | 0;\n    var r = a * b;\n\n    var lo = r & 0x3ffffff;\n    var carry = (r / 0x4000000) | 0;\n    out.words[0] = lo;\n\n    for (var k = 1; k < len; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = carry >>> 26;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = (k - j) | 0;\n        a = self.words[i] | 0;\n        b = num.words[j] | 0;\n        r = a * b + rword;\n        ncarry += (r / 0x4000000) | 0;\n        rword = r & 0x3ffffff;\n      }\n      out.words[k] = rword | 0;\n      carry = ncarry | 0;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry | 0;\n    } else {\n      out.length--;\n    }\n\n    return out.strip();\n  }\n\n  // TODO(indutny): it may be reasonable to omit it for users who don't need\n  // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n  // multiplication (like elliptic secp256k1).\n  var comb10MulTo = function comb10MulTo (self, num, out) {\n    var a = self.words;\n    var b = num.words;\n    var o = out.words;\n    var c = 0;\n    var lo;\n    var mid;\n    var hi;\n    var a0 = a[0] | 0;\n    var al0 = a0 & 0x1fff;\n    var ah0 = a0 >>> 13;\n    var a1 = a[1] | 0;\n    var al1 = a1 & 0x1fff;\n    var ah1 = a1 >>> 13;\n    var a2 = a[2] | 0;\n    var al2 = a2 & 0x1fff;\n    var ah2 = a2 >>> 13;\n    var a3 = a[3] | 0;\n    var al3 = a3 & 0x1fff;\n    var ah3 = a3 >>> 13;\n    var a4 = a[4] | 0;\n    var al4 = a4 & 0x1fff;\n    var ah4 = a4 >>> 13;\n    var a5 = a[5] | 0;\n    var al5 = a5 & 0x1fff;\n    var ah5 = a5 >>> 13;\n    var a6 = a[6] | 0;\n    var al6 = a6 & 0x1fff;\n    var ah6 = a6 >>> 13;\n    var a7 = a[7] | 0;\n    var al7 = a7 & 0x1fff;\n    var ah7 = a7 >>> 13;\n    var a8 = a[8] | 0;\n    var al8 = a8 & 0x1fff;\n    var ah8 = a8 >>> 13;\n    var a9 = a[9] | 0;\n    var al9 = a9 & 0x1fff;\n    var ah9 = a9 >>> 13;\n    var b0 = b[0] | 0;\n    var bl0 = b0 & 0x1fff;\n    var bh0 = b0 >>> 13;\n    var b1 = b[1] | 0;\n    var bl1 = b1 & 0x1fff;\n    var bh1 = b1 >>> 13;\n    var b2 = b[2] | 0;\n    var bl2 = b2 & 0x1fff;\n    var bh2 = b2 >>> 13;\n    var b3 = b[3] | 0;\n    var bl3 = b3 & 0x1fff;\n    var bh3 = b3 >>> 13;\n    var b4 = b[4] | 0;\n    var bl4 = b4 & 0x1fff;\n    var bh4 = b4 >>> 13;\n    var b5 = b[5] | 0;\n    var bl5 = b5 & 0x1fff;\n    var bh5 = b5 >>> 13;\n    var b6 = b[6] | 0;\n    var bl6 = b6 & 0x1fff;\n    var bh6 = b6 >>> 13;\n    var b7 = b[7] | 0;\n    var bl7 = b7 & 0x1fff;\n    var bh7 = b7 >>> 13;\n    var b8 = b[8] | 0;\n    var bl8 = b8 & 0x1fff;\n    var bh8 = b8 >>> 13;\n    var b9 = b[9] | 0;\n    var bl9 = b9 & 0x1fff;\n    var bh9 = b9 >>> 13;\n\n    out.negative = self.negative ^ num.negative;\n    out.length = 19;\n    /* k = 0 */\n    lo = Math.imul(al0, bl0);\n    mid = Math.imul(al0, bh0);\n    mid = (mid + Math.imul(ah0, bl0)) | 0;\n    hi = Math.imul(ah0, bh0);\n    var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n    w0 &= 0x3ffffff;\n    /* k = 1 */\n    lo = Math.imul(al1, bl0);\n    mid = Math.imul(al1, bh0);\n    mid = (mid + Math.imul(ah1, bl0)) | 0;\n    hi = Math.imul(ah1, bh0);\n    lo = (lo + Math.imul(al0, bl1)) | 0;\n    mid = (mid + Math.imul(al0, bh1)) | 0;\n    mid = (mid + Math.imul(ah0, bl1)) | 0;\n    hi = (hi + Math.imul(ah0, bh1)) | 0;\n    var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n    w1 &= 0x3ffffff;\n    /* k = 2 */\n    lo = Math.imul(al2, bl0);\n    mid = Math.imul(al2, bh0);\n    mid = (mid + Math.imul(ah2, bl0)) | 0;\n    hi = Math.imul(ah2, bh0);\n    lo = (lo + Math.imul(al1, bl1)) | 0;\n    mid = (mid + Math.imul(al1, bh1)) | 0;\n    mid = (mid + Math.imul(ah1, bl1)) | 0;\n    hi = (hi + Math.imul(ah1, bh1)) | 0;\n    lo = (lo + Math.imul(al0, bl2)) | 0;\n    mid = (mid + Math.imul(al0, bh2)) | 0;\n    mid = (mid + Math.imul(ah0, bl2)) | 0;\n    hi = (hi + Math.imul(ah0, bh2)) | 0;\n    var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n    w2 &= 0x3ffffff;\n    /* k = 3 */\n    lo = Math.imul(al3, bl0);\n    mid = Math.imul(al3, bh0);\n    mid = (mid + Math.imul(ah3, bl0)) | 0;\n    hi = Math.imul(ah3, bh0);\n    lo = (lo + Math.imul(al2, bl1)) | 0;\n    mid = (mid + Math.imul(al2, bh1)) | 0;\n    mid = (mid + Math.imul(ah2, bl1)) | 0;\n    hi = (hi + Math.imul(ah2, bh1)) | 0;\n    lo = (lo + Math.imul(al1, bl2)) | 0;\n    mid = (mid + Math.imul(al1, bh2)) | 0;\n    mid = (mid + Math.imul(ah1, bl2)) | 0;\n    hi = (hi + Math.imul(ah1, bh2)) | 0;\n    lo = (lo + Math.imul(al0, bl3)) | 0;\n    mid = (mid + Math.imul(al0, bh3)) | 0;\n    mid = (mid + Math.imul(ah0, bl3)) | 0;\n    hi = (hi + Math.imul(ah0, bh3)) | 0;\n    var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n    w3 &= 0x3ffffff;\n    /* k = 4 */\n    lo = Math.imul(al4, bl0);\n    mid = Math.imul(al4, bh0);\n    mid = (mid + Math.imul(ah4, bl0)) | 0;\n    hi = Math.imul(ah4, bh0);\n    lo = (lo + Math.imul(al3, bl1)) | 0;\n    mid = (mid + Math.imul(al3, bh1)) | 0;\n    mid = (mid + Math.imul(ah3, bl1)) | 0;\n    hi = (hi + Math.imul(ah3, bh1)) | 0;\n    lo = (lo + Math.imul(al2, bl2)) | 0;\n    mid = (mid + Math.imul(al2, bh2)) | 0;\n    mid = (mid + Math.imul(ah2, bl2)) | 0;\n    hi = (hi + Math.imul(ah2, bh2)) | 0;\n    lo = (lo + Math.imul(al1, bl3)) | 0;\n    mid = (mid + Math.imul(al1, bh3)) | 0;\n    mid = (mid + Math.imul(ah1, bl3)) | 0;\n    hi = (hi + Math.imul(ah1, bh3)) | 0;\n    lo = (lo + Math.imul(al0, bl4)) | 0;\n    mid = (mid + Math.imul(al0, bh4)) | 0;\n    mid = (mid + Math.imul(ah0, bl4)) | 0;\n    hi = (hi + Math.imul(ah0, bh4)) | 0;\n    var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n    w4 &= 0x3ffffff;\n    /* k = 5 */\n    lo = Math.imul(al5, bl0);\n    mid = Math.imul(al5, bh0);\n    mid = (mid + Math.imul(ah5, bl0)) | 0;\n    hi = Math.imul(ah5, bh0);\n    lo = (lo + Math.imul(al4, bl1)) | 0;\n    mid = (mid + Math.imul(al4, bh1)) | 0;\n    mid = (mid + Math.imul(ah4, bl1)) | 0;\n    hi = (hi + Math.imul(ah4, bh1)) | 0;\n    lo = (lo + Math.imul(al3, bl2)) | 0;\n    mid = (mid + Math.imul(al3, bh2)) | 0;\n    mid = (mid + Math.imul(ah3, bl2)) | 0;\n    hi = (hi + Math.imul(ah3, bh2)) | 0;\n    lo = (lo + Math.imul(al2, bl3)) | 0;\n    mid = (mid + Math.imul(al2, bh3)) | 0;\n    mid = (mid + Math.imul(ah2, bl3)) | 0;\n    hi = (hi + Math.imul(ah2, bh3)) | 0;\n    lo = (lo + Math.imul(al1, bl4)) | 0;\n    mid = (mid + Math.imul(al1, bh4)) | 0;\n    mid = (mid + Math.imul(ah1, bl4)) | 0;\n    hi = (hi + Math.imul(ah1, bh4)) | 0;\n    lo = (lo + Math.imul(al0, bl5)) | 0;\n    mid = (mid + Math.imul(al0, bh5)) | 0;\n    mid = (mid + Math.imul(ah0, bl5)) | 0;\n    hi = (hi + Math.imul(ah0, bh5)) | 0;\n    var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n    w5 &= 0x3ffffff;\n    /* k = 6 */\n    lo = Math.imul(al6, bl0);\n    mid = Math.imul(al6, bh0);\n    mid = (mid + Math.imul(ah6, bl0)) | 0;\n    hi = Math.imul(ah6, bh0);\n    lo = (lo + Math.imul(al5, bl1)) | 0;\n    mid = (mid + Math.imul(al5, bh1)) | 0;\n    mid = (mid + Math.imul(ah5, bl1)) | 0;\n    hi = (hi + Math.imul(ah5, bh1)) | 0;\n    lo = (lo + Math.imul(al4, bl2)) | 0;\n    mid = (mid + Math.imul(al4, bh2)) | 0;\n    mid = (mid + Math.imul(ah4, bl2)) | 0;\n    hi = (hi + Math.imul(ah4, bh2)) | 0;\n    lo = (lo + Math.imul(al3, bl3)) | 0;\n    mid = (mid + Math.imul(al3, bh3)) | 0;\n    mid = (mid + Math.imul(ah3, bl3)) | 0;\n    hi = (hi + Math.imul(ah3, bh3)) | 0;\n    lo = (lo + Math.imul(al2, bl4)) | 0;\n    mid = (mid + Math.imul(al2, bh4)) | 0;\n    mid = (mid + Math.imul(ah2, bl4)) | 0;\n    hi = (hi + Math.imul(ah2, bh4)) | 0;\n    lo = (lo + Math.imul(al1, bl5)) | 0;\n    mid = (mid + Math.imul(al1, bh5)) | 0;\n    mid = (mid + Math.imul(ah1, bl5)) | 0;\n    hi = (hi + Math.imul(ah1, bh5)) | 0;\n    lo = (lo + Math.imul(al0, bl6)) | 0;\n    mid = (mid + Math.imul(al0, bh6)) | 0;\n    mid = (mid + Math.imul(ah0, bl6)) | 0;\n    hi = (hi + Math.imul(ah0, bh6)) | 0;\n    var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n    w6 &= 0x3ffffff;\n    /* k = 7 */\n    lo = Math.imul(al7, bl0);\n    mid = Math.imul(al7, bh0);\n    mid = (mid + Math.imul(ah7, bl0)) | 0;\n    hi = Math.imul(ah7, bh0);\n    lo = (lo + Math.imul(al6, bl1)) | 0;\n    mid = (mid + Math.imul(al6, bh1)) | 0;\n    mid = (mid + Math.imul(ah6, bl1)) | 0;\n    hi = (hi + Math.imul(ah6, bh1)) | 0;\n    lo = (lo + Math.imul(al5, bl2)) | 0;\n    mid = (mid + Math.imul(al5, bh2)) | 0;\n    mid = (mid + Math.imul(ah5, bl2)) | 0;\n    hi = (hi + Math.imul(ah5, bh2)) | 0;\n    lo = (lo + Math.imul(al4, bl3)) | 0;\n    mid = (mid + Math.imul(al4, bh3)) | 0;\n    mid = (mid + Math.imul(ah4, bl3)) | 0;\n    hi = (hi + Math.imul(ah4, bh3)) | 0;\n    lo = (lo + Math.imul(al3, bl4)) | 0;\n    mid = (mid + Math.imul(al3, bh4)) | 0;\n    mid = (mid + Math.imul(ah3, bl4)) | 0;\n    hi = (hi + Math.imul(ah3, bh4)) | 0;\n    lo = (lo + Math.imul(al2, bl5)) | 0;\n    mid = (mid + Math.imul(al2, bh5)) | 0;\n    mid = (mid + Math.imul(ah2, bl5)) | 0;\n    hi = (hi + Math.imul(ah2, bh5)) | 0;\n    lo = (lo + Math.imul(al1, bl6)) | 0;\n    mid = (mid + Math.imul(al1, bh6)) | 0;\n    mid = (mid + Math.imul(ah1, bl6)) | 0;\n    hi = (hi + Math.imul(ah1, bh6)) | 0;\n    lo = (lo + Math.imul(al0, bl7)) | 0;\n    mid = (mid + Math.imul(al0, bh7)) | 0;\n    mid = (mid + Math.imul(ah0, bl7)) | 0;\n    hi = (hi + Math.imul(ah0, bh7)) | 0;\n    var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n    w7 &= 0x3ffffff;\n    /* k = 8 */\n    lo = Math.imul(al8, bl0);\n    mid = Math.imul(al8, bh0);\n    mid = (mid + Math.imul(ah8, bl0)) | 0;\n    hi = Math.imul(ah8, bh0);\n    lo = (lo + Math.imul(al7, bl1)) | 0;\n    mid = (mid + Math.imul(al7, bh1)) | 0;\n    mid = (mid + Math.imul(ah7, bl1)) | 0;\n    hi = (hi + Math.imul(ah7, bh1)) | 0;\n    lo = (lo + Math.imul(al6, bl2)) | 0;\n    mid = (mid + Math.imul(al6, bh2)) | 0;\n    mid = (mid + Math.imul(ah6, bl2)) | 0;\n    hi = (hi + Math.imul(ah6, bh2)) | 0;\n    lo = (lo + Math.imul(al5, bl3)) | 0;\n    mid = (mid + Math.imul(al5, bh3)) | 0;\n    mid = (mid + Math.imul(ah5, bl3)) | 0;\n    hi = (hi + Math.imul(ah5, bh3)) | 0;\n    lo = (lo + Math.imul(al4, bl4)) | 0;\n    mid = (mid + Math.imul(al4, bh4)) | 0;\n    mid = (mid + Math.imul(ah4, bl4)) | 0;\n    hi = (hi + Math.imul(ah4, bh4)) | 0;\n    lo = (lo + Math.imul(al3, bl5)) | 0;\n    mid = (mid + Math.imul(al3, bh5)) | 0;\n    mid = (mid + Math.imul(ah3, bl5)) | 0;\n    hi = (hi + Math.imul(ah3, bh5)) | 0;\n    lo = (lo + Math.imul(al2, bl6)) | 0;\n    mid = (mid + Math.imul(al2, bh6)) | 0;\n    mid = (mid + Math.imul(ah2, bl6)) | 0;\n    hi = (hi + Math.imul(ah2, bh6)) | 0;\n    lo = (lo + Math.imul(al1, bl7)) | 0;\n    mid = (mid + Math.imul(al1, bh7)) | 0;\n    mid = (mid + Math.imul(ah1, bl7)) | 0;\n    hi = (hi + Math.imul(ah1, bh7)) | 0;\n    lo = (lo + Math.imul(al0, bl8)) | 0;\n    mid = (mid + Math.imul(al0, bh8)) | 0;\n    mid = (mid + Math.imul(ah0, bl8)) | 0;\n    hi = (hi + Math.imul(ah0, bh8)) | 0;\n    var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n    w8 &= 0x3ffffff;\n    /* k = 9 */\n    lo = Math.imul(al9, bl0);\n    mid = Math.imul(al9, bh0);\n    mid = (mid + Math.imul(ah9, bl0)) | 0;\n    hi = Math.imul(ah9, bh0);\n    lo = (lo + Math.imul(al8, bl1)) | 0;\n    mid = (mid + Math.imul(al8, bh1)) | 0;\n    mid = (mid + Math.imul(ah8, bl1)) | 0;\n    hi = (hi + Math.imul(ah8, bh1)) | 0;\n    lo = (lo + Math.imul(al7, bl2)) | 0;\n    mid = (mid + Math.imul(al7, bh2)) | 0;\n    mid = (mid + Math.imul(ah7, bl2)) | 0;\n    hi = (hi + Math.imul(ah7, bh2)) | 0;\n    lo = (lo + Math.imul(al6, bl3)) | 0;\n    mid = (mid + Math.imul(al6, bh3)) | 0;\n    mid = (mid + Math.imul(ah6, bl3)) | 0;\n    hi = (hi + Math.imul(ah6, bh3)) | 0;\n    lo = (lo + Math.imul(al5, bl4)) | 0;\n    mid = (mid + Math.imul(al5, bh4)) | 0;\n    mid = (mid + Math.imul(ah5, bl4)) | 0;\n    hi = (hi + Math.imul(ah5, bh4)) | 0;\n    lo = (lo + Math.imul(al4, bl5)) | 0;\n    mid = (mid + Math.imul(al4, bh5)) | 0;\n    mid = (mid + Math.imul(ah4, bl5)) | 0;\n    hi = (hi + Math.imul(ah4, bh5)) | 0;\n    lo = (lo + Math.imul(al3, bl6)) | 0;\n    mid = (mid + Math.imul(al3, bh6)) | 0;\n    mid = (mid + Math.imul(ah3, bl6)) | 0;\n    hi = (hi + Math.imul(ah3, bh6)) | 0;\n    lo = (lo + Math.imul(al2, bl7)) | 0;\n    mid = (mid + Math.imul(al2, bh7)) | 0;\n    mid = (mid + Math.imul(ah2, bl7)) | 0;\n    hi = (hi + Math.imul(ah2, bh7)) | 0;\n    lo = (lo + Math.imul(al1, bl8)) | 0;\n    mid = (mid + Math.imul(al1, bh8)) | 0;\n    mid = (mid + Math.imul(ah1, bl8)) | 0;\n    hi = (hi + Math.imul(ah1, bh8)) | 0;\n    lo = (lo + Math.imul(al0, bl9)) | 0;\n    mid = (mid + Math.imul(al0, bh9)) | 0;\n    mid = (mid + Math.imul(ah0, bl9)) | 0;\n    hi = (hi + Math.imul(ah0, bh9)) | 0;\n    var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n    w9 &= 0x3ffffff;\n    /* k = 10 */\n    lo = Math.imul(al9, bl1);\n    mid = Math.imul(al9, bh1);\n    mid = (mid + Math.imul(ah9, bl1)) | 0;\n    hi = Math.imul(ah9, bh1);\n    lo = (lo + Math.imul(al8, bl2)) | 0;\n    mid = (mid + Math.imul(al8, bh2)) | 0;\n    mid = (mid + Math.imul(ah8, bl2)) | 0;\n    hi = (hi + Math.imul(ah8, bh2)) | 0;\n    lo = (lo + Math.imul(al7, bl3)) | 0;\n    mid = (mid + Math.imul(al7, bh3)) | 0;\n    mid = (mid + Math.imul(ah7, bl3)) | 0;\n    hi = (hi + Math.imul(ah7, bh3)) | 0;\n    lo = (lo + Math.imul(al6, bl4)) | 0;\n    mid = (mid + Math.imul(al6, bh4)) | 0;\n    mid = (mid + Math.imul(ah6, bl4)) | 0;\n    hi = (hi + Math.imul(ah6, bh4)) | 0;\n    lo = (lo + Math.imul(al5, bl5)) | 0;\n    mid = (mid + Math.imul(al5, bh5)) | 0;\n    mid = (mid + Math.imul(ah5, bl5)) | 0;\n    hi = (hi + Math.imul(ah5, bh5)) | 0;\n    lo = (lo + Math.imul(al4, bl6)) | 0;\n    mid = (mid + Math.imul(al4, bh6)) | 0;\n    mid = (mid + Math.imul(ah4, bl6)) | 0;\n    hi = (hi + Math.imul(ah4, bh6)) | 0;\n    lo = (lo + Math.imul(al3, bl7)) | 0;\n    mid = (mid + Math.imul(al3, bh7)) | 0;\n    mid = (mid + Math.imul(ah3, bl7)) | 0;\n    hi = (hi + Math.imul(ah3, bh7)) | 0;\n    lo = (lo + Math.imul(al2, bl8)) | 0;\n    mid = (mid + Math.imul(al2, bh8)) | 0;\n    mid = (mid + Math.imul(ah2, bl8)) | 0;\n    hi = (hi + Math.imul(ah2, bh8)) | 0;\n    lo = (lo + Math.imul(al1, bl9)) | 0;\n    mid = (mid + Math.imul(al1, bh9)) | 0;\n    mid = (mid + Math.imul(ah1, bl9)) | 0;\n    hi = (hi + Math.imul(ah1, bh9)) | 0;\n    var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n    w10 &= 0x3ffffff;\n    /* k = 11 */\n    lo = Math.imul(al9, bl2);\n    mid = Math.imul(al9, bh2);\n    mid = (mid + Math.imul(ah9, bl2)) | 0;\n    hi = Math.imul(ah9, bh2);\n    lo = (lo + Math.imul(al8, bl3)) | 0;\n    mid = (mid + Math.imul(al8, bh3)) | 0;\n    mid = (mid + Math.imul(ah8, bl3)) | 0;\n    hi = (hi + Math.imul(ah8, bh3)) | 0;\n    lo = (lo + Math.imul(al7, bl4)) | 0;\n    mid = (mid + Math.imul(al7, bh4)) | 0;\n    mid = (mid + Math.imul(ah7, bl4)) | 0;\n    hi = (hi + Math.imul(ah7, bh4)) | 0;\n    lo = (lo + Math.imul(al6, bl5)) | 0;\n    mid = (mid + Math.imul(al6, bh5)) | 0;\n    mid = (mid + Math.imul(ah6, bl5)) | 0;\n    hi = (hi + Math.imul(ah6, bh5)) | 0;\n    lo = (lo + Math.imul(al5, bl6)) | 0;\n    mid = (mid + Math.imul(al5, bh6)) | 0;\n    mid = (mid + Math.imul(ah5, bl6)) | 0;\n    hi = (hi + Math.imul(ah5, bh6)) | 0;\n    lo = (lo + Math.imul(al4, bl7)) | 0;\n    mid = (mid + Math.imul(al4, bh7)) | 0;\n    mid = (mid + Math.imul(ah4, bl7)) | 0;\n    hi = (hi + Math.imul(ah4, bh7)) | 0;\n    lo = (lo + Math.imul(al3, bl8)) | 0;\n    mid = (mid + Math.imul(al3, bh8)) | 0;\n    mid = (mid + Math.imul(ah3, bl8)) | 0;\n    hi = (hi + Math.imul(ah3, bh8)) | 0;\n    lo = (lo + Math.imul(al2, bl9)) | 0;\n    mid = (mid + Math.imul(al2, bh9)) | 0;\n    mid = (mid + Math.imul(ah2, bl9)) | 0;\n    hi = (hi + Math.imul(ah2, bh9)) | 0;\n    var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n    w11 &= 0x3ffffff;\n    /* k = 12 */\n    lo = Math.imul(al9, bl3);\n    mid = Math.imul(al9, bh3);\n    mid = (mid + Math.imul(ah9, bl3)) | 0;\n    hi = Math.imul(ah9, bh3);\n    lo = (lo + Math.imul(al8, bl4)) | 0;\n    mid = (mid + Math.imul(al8, bh4)) | 0;\n    mid = (mid + Math.imul(ah8, bl4)) | 0;\n    hi = (hi + Math.imul(ah8, bh4)) | 0;\n    lo = (lo + Math.imul(al7, bl5)) | 0;\n    mid = (mid + Math.imul(al7, bh5)) | 0;\n    mid = (mid + Math.imul(ah7, bl5)) | 0;\n    hi = (hi + Math.imul(ah7, bh5)) | 0;\n    lo = (lo + Math.imul(al6, bl6)) | 0;\n    mid = (mid + Math.imul(al6, bh6)) | 0;\n    mid = (mid + Math.imul(ah6, bl6)) | 0;\n    hi = (hi + Math.imul(ah6, bh6)) | 0;\n    lo = (lo + Math.imul(al5, bl7)) | 0;\n    mid = (mid + Math.imul(al5, bh7)) | 0;\n    mid = (mid + Math.imul(ah5, bl7)) | 0;\n    hi = (hi + Math.imul(ah5, bh7)) | 0;\n    lo = (lo + Math.imul(al4, bl8)) | 0;\n    mid = (mid + Math.imul(al4, bh8)) | 0;\n    mid = (mid + Math.imul(ah4, bl8)) | 0;\n    hi = (hi + Math.imul(ah4, bh8)) | 0;\n    lo = (lo + Math.imul(al3, bl9)) | 0;\n    mid = (mid + Math.imul(al3, bh9)) | 0;\n    mid = (mid + Math.imul(ah3, bl9)) | 0;\n    hi = (hi + Math.imul(ah3, bh9)) | 0;\n    var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n    w12 &= 0x3ffffff;\n    /* k = 13 */\n    lo = Math.imul(al9, bl4);\n    mid = Math.imul(al9, bh4);\n    mid = (mid + Math.imul(ah9, bl4)) | 0;\n    hi = Math.imul(ah9, bh4);\n    lo = (lo + Math.imul(al8, bl5)) | 0;\n    mid = (mid + Math.imul(al8, bh5)) | 0;\n    mid = (mid + Math.imul(ah8, bl5)) | 0;\n    hi = (hi + Math.imul(ah8, bh5)) | 0;\n    lo = (lo + Math.imul(al7, bl6)) | 0;\n    mid = (mid + Math.imul(al7, bh6)) | 0;\n    mid = (mid + Math.imul(ah7, bl6)) | 0;\n    hi = (hi + Math.imul(ah7, bh6)) | 0;\n    lo = (lo + Math.imul(al6, bl7)) | 0;\n    mid = (mid + Math.imul(al6, bh7)) | 0;\n    mid = (mid + Math.imul(ah6, bl7)) | 0;\n    hi = (hi + Math.imul(ah6, bh7)) | 0;\n    lo = (lo + Math.imul(al5, bl8)) | 0;\n    mid = (mid + Math.imul(al5, bh8)) | 0;\n    mid = (mid + Math.imul(ah5, bl8)) | 0;\n    hi = (hi + Math.imul(ah5, bh8)) | 0;\n    lo = (lo + Math.imul(al4, bl9)) | 0;\n    mid = (mid + Math.imul(al4, bh9)) | 0;\n    mid = (mid + Math.imul(ah4, bl9)) | 0;\n    hi = (hi + Math.imul(ah4, bh9)) | 0;\n    var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n    w13 &= 0x3ffffff;\n    /* k = 14 */\n    lo = Math.imul(al9, bl5);\n    mid = Math.imul(al9, bh5);\n    mid = (mid + Math.imul(ah9, bl5)) | 0;\n    hi = Math.imul(ah9, bh5);\n    lo = (lo + Math.imul(al8, bl6)) | 0;\n    mid = (mid + Math.imul(al8, bh6)) | 0;\n    mid = (mid + Math.imul(ah8, bl6)) | 0;\n    hi = (hi + Math.imul(ah8, bh6)) | 0;\n    lo = (lo + Math.imul(al7, bl7)) | 0;\n    mid = (mid + Math.imul(al7, bh7)) | 0;\n    mid = (mid + Math.imul(ah7, bl7)) | 0;\n    hi = (hi + Math.imul(ah7, bh7)) | 0;\n    lo = (lo + Math.imul(al6, bl8)) | 0;\n    mid = (mid + Math.imul(al6, bh8)) | 0;\n    mid = (mid + Math.imul(ah6, bl8)) | 0;\n    hi = (hi + Math.imul(ah6, bh8)) | 0;\n    lo = (lo + Math.imul(al5, bl9)) | 0;\n    mid = (mid + Math.imul(al5, bh9)) | 0;\n    mid = (mid + Math.imul(ah5, bl9)) | 0;\n    hi = (hi + Math.imul(ah5, bh9)) | 0;\n    var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n    w14 &= 0x3ffffff;\n    /* k = 15 */\n    lo = Math.imul(al9, bl6);\n    mid = Math.imul(al9, bh6);\n    mid = (mid + Math.imul(ah9, bl6)) | 0;\n    hi = Math.imul(ah9, bh6);\n    lo = (lo + Math.imul(al8, bl7)) | 0;\n    mid = (mid + Math.imul(al8, bh7)) | 0;\n    mid = (mid + Math.imul(ah8, bl7)) | 0;\n    hi = (hi + Math.imul(ah8, bh7)) | 0;\n    lo = (lo + Math.imul(al7, bl8)) | 0;\n    mid = (mid + Math.imul(al7, bh8)) | 0;\n    mid = (mid + Math.imul(ah7, bl8)) | 0;\n    hi = (hi + Math.imul(ah7, bh8)) | 0;\n    lo = (lo + Math.imul(al6, bl9)) | 0;\n    mid = (mid + Math.imul(al6, bh9)) | 0;\n    mid = (mid + Math.imul(ah6, bl9)) | 0;\n    hi = (hi + Math.imul(ah6, bh9)) | 0;\n    var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n    w15 &= 0x3ffffff;\n    /* k = 16 */\n    lo = Math.imul(al9, bl7);\n    mid = Math.imul(al9, bh7);\n    mid = (mid + Math.imul(ah9, bl7)) | 0;\n    hi = Math.imul(ah9, bh7);\n    lo = (lo + Math.imul(al8, bl8)) | 0;\n    mid = (mid + Math.imul(al8, bh8)) | 0;\n    mid = (mid + Math.imul(ah8, bl8)) | 0;\n    hi = (hi + Math.imul(ah8, bh8)) | 0;\n    lo = (lo + Math.imul(al7, bl9)) | 0;\n    mid = (mid + Math.imul(al7, bh9)) | 0;\n    mid = (mid + Math.imul(ah7, bl9)) | 0;\n    hi = (hi + Math.imul(ah7, bh9)) | 0;\n    var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n    w16 &= 0x3ffffff;\n    /* k = 17 */\n    lo = Math.imul(al9, bl8);\n    mid = Math.imul(al9, bh8);\n    mid = (mid + Math.imul(ah9, bl8)) | 0;\n    hi = Math.imul(ah9, bh8);\n    lo = (lo + Math.imul(al8, bl9)) | 0;\n    mid = (mid + Math.imul(al8, bh9)) | 0;\n    mid = (mid + Math.imul(ah8, bl9)) | 0;\n    hi = (hi + Math.imul(ah8, bh9)) | 0;\n    var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n    w17 &= 0x3ffffff;\n    /* k = 18 */\n    lo = Math.imul(al9, bl9);\n    mid = Math.imul(al9, bh9);\n    mid = (mid + Math.imul(ah9, bl9)) | 0;\n    hi = Math.imul(ah9, bh9);\n    var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n    w18 &= 0x3ffffff;\n    o[0] = w0;\n    o[1] = w1;\n    o[2] = w2;\n    o[3] = w3;\n    o[4] = w4;\n    o[5] = w5;\n    o[6] = w6;\n    o[7] = w7;\n    o[8] = w8;\n    o[9] = w9;\n    o[10] = w10;\n    o[11] = w11;\n    o[12] = w12;\n    o[13] = w13;\n    o[14] = w14;\n    o[15] = w15;\n    o[16] = w16;\n    o[17] = w17;\n    o[18] = w18;\n    if (c !== 0) {\n      o[19] = c;\n      out.length++;\n    }\n    return out;\n  };\n\n  // Polyfill comb\n  if (!Math.imul) {\n    comb10MulTo = smallMulTo;\n  }\n\n  function bigMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    out.length = self.length + num.length;\n\n    var carry = 0;\n    var hncarry = 0;\n    for (var k = 0; k < out.length - 1; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = hncarry;\n      hncarry = 0;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = k - j;\n        var a = self.words[i] | 0;\n        var b = num.words[j] | 0;\n        var r = a * b;\n\n        var lo = r & 0x3ffffff;\n        ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n        lo = (lo + rword) | 0;\n        rword = lo & 0x3ffffff;\n        ncarry = (ncarry + (lo >>> 26)) | 0;\n\n        hncarry += ncarry >>> 26;\n        ncarry &= 0x3ffffff;\n      }\n      out.words[k] = rword;\n      carry = ncarry;\n      ncarry = hncarry;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry;\n    } else {\n      out.length--;\n    }\n\n    return out.strip();\n  }\n\n  function jumboMulTo (self, num, out) {\n    var fftm = new FFTM();\n    return fftm.mulp(self, num, out);\n  }\n\n  BN.prototype.mulTo = function mulTo (num, out) {\n    var res;\n    var len = this.length + num.length;\n    if (this.length === 10 && num.length === 10) {\n      res = comb10MulTo(this, num, out);\n    } else if (len < 63) {\n      res = smallMulTo(this, num, out);\n    } else if (len < 1024) {\n      res = bigMulTo(this, num, out);\n    } else {\n      res = jumboMulTo(this, num, out);\n    }\n\n    return res;\n  };\n\n  // Cooley-Tukey algorithm for FFT\n  // slightly revisited to rely on looping instead of recursion\n\n  function FFTM (x, y) {\n    this.x = x;\n    this.y = y;\n  }\n\n  FFTM.prototype.makeRBT = function makeRBT (N) {\n    var t = new Array(N);\n    var l = BN.prototype._countBits(N) - 1;\n    for (var i = 0; i < N; i++) {\n      t[i] = this.revBin(i, l, N);\n    }\n\n    return t;\n  };\n\n  // Returns binary-reversed representation of `x`\n  FFTM.prototype.revBin = function revBin (x, l, N) {\n    if (x === 0 || x === N - 1) return x;\n\n    var rb = 0;\n    for (var i = 0; i < l; i++) {\n      rb |= (x & 1) << (l - i - 1);\n      x >>= 1;\n    }\n\n    return rb;\n  };\n\n  // Performs \"tweedling\" phase, therefore 'emulating'\n  // behaviour of the recursive algorithm\n  FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n    for (var i = 0; i < N; i++) {\n      rtws[i] = rws[rbt[i]];\n      itws[i] = iws[rbt[i]];\n    }\n  };\n\n  FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n    this.permute(rbt, rws, iws, rtws, itws, N);\n\n    for (var s = 1; s < N; s <<= 1) {\n      var l = s << 1;\n\n      var rtwdf = Math.cos(2 * Math.PI / l);\n      var itwdf = Math.sin(2 * Math.PI / l);\n\n      for (var p = 0; p < N; p += l) {\n        var rtwdf_ = rtwdf;\n        var itwdf_ = itwdf;\n\n        for (var j = 0; j < s; j++) {\n          var re = rtws[p + j];\n          var ie = itws[p + j];\n\n          var ro = rtws[p + j + s];\n          var io = itws[p + j + s];\n\n          var rx = rtwdf_ * ro - itwdf_ * io;\n\n          io = rtwdf_ * io + itwdf_ * ro;\n          ro = rx;\n\n          rtws[p + j] = re + ro;\n          itws[p + j] = ie + io;\n\n          rtws[p + j + s] = re - ro;\n          itws[p + j + s] = ie - io;\n\n          /* jshint maxdepth : false */\n          if (j !== l) {\n            rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n            itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n            rtwdf_ = rx;\n          }\n        }\n      }\n    }\n  };\n\n  FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n    var N = Math.max(m, n) | 1;\n    var odd = N & 1;\n    var i = 0;\n    for (N = N / 2 | 0; N; N = N >>> 1) {\n      i++;\n    }\n\n    return 1 << i + 1 + odd;\n  };\n\n  FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n    if (N <= 1) return;\n\n    for (var i = 0; i < N / 2; i++) {\n      var t = rws[i];\n\n      rws[i] = rws[N - i - 1];\n      rws[N - i - 1] = t;\n\n      t = iws[i];\n\n      iws[i] = -iws[N - i - 1];\n      iws[N - i - 1] = -t;\n    }\n  };\n\n  FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n    var carry = 0;\n    for (var i = 0; i < N / 2; i++) {\n      var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n        Math.round(ws[2 * i] / N) +\n        carry;\n\n      ws[i] = w & 0x3ffffff;\n\n      if (w < 0x4000000) {\n        carry = 0;\n      } else {\n        carry = w / 0x4000000 | 0;\n      }\n    }\n\n    return ws;\n  };\n\n  FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n    var carry = 0;\n    for (var i = 0; i < len; i++) {\n      carry = carry + (ws[i] | 0);\n\n      rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n      rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n    }\n\n    // Pad with zeroes\n    for (i = 2 * len; i < N; ++i) {\n      rws[i] = 0;\n    }\n\n    assert(carry === 0);\n    assert((carry & ~0x1fff) === 0);\n  };\n\n  FFTM.prototype.stub = function stub (N) {\n    var ph = new Array(N);\n    for (var i = 0; i < N; i++) {\n      ph[i] = 0;\n    }\n\n    return ph;\n  };\n\n  FFTM.prototype.mulp = function mulp (x, y, out) {\n    var N = 2 * this.guessLen13b(x.length, y.length);\n\n    var rbt = this.makeRBT(N);\n\n    var _ = this.stub(N);\n\n    var rws = new Array(N);\n    var rwst = new Array(N);\n    var iwst = new Array(N);\n\n    var nrws = new Array(N);\n    var nrwst = new Array(N);\n    var niwst = new Array(N);\n\n    var rmws = out.words;\n    rmws.length = N;\n\n    this.convert13b(x.words, x.length, rws, N);\n    this.convert13b(y.words, y.length, nrws, N);\n\n    this.transform(rws, _, rwst, iwst, N, rbt);\n    this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n    for (var i = 0; i < N; i++) {\n      var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n      iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n      rwst[i] = rx;\n    }\n\n    this.conjugate(rwst, iwst, N);\n    this.transform(rwst, iwst, rmws, _, N, rbt);\n    this.conjugate(rmws, _, N);\n    this.normalize13b(rmws, N);\n\n    out.negative = x.negative ^ y.negative;\n    out.length = x.length + y.length;\n    return out.strip();\n  };\n\n  // Multiply `this` by `num`\n  BN.prototype.mul = function mul (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return this.mulTo(num, out);\n  };\n\n  // Multiply employing FFT\n  BN.prototype.mulf = function mulf (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return jumboMulTo(this, num, out);\n  };\n\n  // In-place Multiplication\n  BN.prototype.imul = function imul (num) {\n    return this.clone().mulTo(num, this);\n  };\n\n  BN.prototype.imuln = function imuln (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n\n    // Carry\n    var carry = 0;\n    for (var i = 0; i < this.length; i++) {\n      var w = (this.words[i] | 0) * num;\n      var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n      carry >>= 26;\n      carry += (w / 0x4000000) | 0;\n      // NOTE: lo is 27bit maximum\n      carry += lo >>> 26;\n      this.words[i] = lo & 0x3ffffff;\n    }\n\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n\n    return this;\n  };\n\n  BN.prototype.muln = function muln (num) {\n    return this.clone().imuln(num);\n  };\n\n  // `this` * `this`\n  BN.prototype.sqr = function sqr () {\n    return this.mul(this);\n  };\n\n  // `this` * `this` in-place\n  BN.prototype.isqr = function isqr () {\n    return this.imul(this.clone());\n  };\n\n  // Math.pow(`this`, `num`)\n  BN.prototype.pow = function pow (num) {\n    var w = toBitArray(num);\n    if (w.length === 0) return new BN(1);\n\n    // Skip leading zeroes\n    var res = this;\n    for (var i = 0; i < w.length; i++, res = res.sqr()) {\n      if (w[i] !== 0) break;\n    }\n\n    if (++i < w.length) {\n      for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n        if (w[i] === 0) continue;\n\n        res = res.mul(q);\n      }\n    }\n\n    return res;\n  };\n\n  // Shift-left in-place\n  BN.prototype.iushln = function iushln (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n    var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n    var i;\n\n    if (r !== 0) {\n      var carry = 0;\n\n      for (i = 0; i < this.length; i++) {\n        var newCarry = this.words[i] & carryMask;\n        var c = ((this.words[i] | 0) - newCarry) << r;\n        this.words[i] = c | carry;\n        carry = newCarry >>> (26 - r);\n      }\n\n      if (carry) {\n        this.words[i] = carry;\n        this.length++;\n      }\n    }\n\n    if (s !== 0) {\n      for (i = this.length - 1; i >= 0; i--) {\n        this.words[i + s] = this.words[i];\n      }\n\n      for (i = 0; i < s; i++) {\n        this.words[i] = 0;\n      }\n\n      this.length += s;\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.ishln = function ishln (bits) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushln(bits);\n  };\n\n  // Shift-right in-place\n  // NOTE: `hint` is a lowest bit before trailing zeroes\n  // NOTE: if `extended` is present - it will be filled with destroyed bits\n  BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var h;\n    if (hint) {\n      h = (hint - (hint % 26)) / 26;\n    } else {\n      h = 0;\n    }\n\n    var r = bits % 26;\n    var s = Math.min((bits - r) / 26, this.length);\n    var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n    var maskedWords = extended;\n\n    h -= s;\n    h = Math.max(0, h);\n\n    // Extended mode, copy masked part\n    if (maskedWords) {\n      for (var i = 0; i < s; i++) {\n        maskedWords.words[i] = this.words[i];\n      }\n      maskedWords.length = s;\n    }\n\n    if (s === 0) {\n      // No-op, we should not move anything at all\n    } else if (this.length > s) {\n      this.length -= s;\n      for (i = 0; i < this.length; i++) {\n        this.words[i] = this.words[i + s];\n      }\n    } else {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    var carry = 0;\n    for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n      var word = this.words[i] | 0;\n      this.words[i] = (carry << (26 - r)) | (word >>> r);\n      carry = word & mask;\n    }\n\n    // Push carried bits as a mask\n    if (maskedWords && carry !== 0) {\n      maskedWords.words[maskedWords.length++] = carry;\n    }\n\n    if (this.length === 0) {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushrn(bits, hint, extended);\n  };\n\n  // Shift-left\n  BN.prototype.shln = function shln (bits) {\n    return this.clone().ishln(bits);\n  };\n\n  BN.prototype.ushln = function ushln (bits) {\n    return this.clone().iushln(bits);\n  };\n\n  // Shift-right\n  BN.prototype.shrn = function shrn (bits) {\n    return this.clone().ishrn(bits);\n  };\n\n  BN.prototype.ushrn = function ushrn (bits) {\n    return this.clone().iushrn(bits);\n  };\n\n  // Test if n bit is set\n  BN.prototype.testn = function testn (bit) {\n    assert(typeof bit === 'number' && bit >= 0);\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) return false;\n\n    // Check bit and return\n    var w = this.words[s];\n\n    return !!(w & q);\n  };\n\n  // Return only lowers bits of number (in-place)\n  BN.prototype.imaskn = function imaskn (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n\n    assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n    if (this.length <= s) {\n      return this;\n    }\n\n    if (r !== 0) {\n      s++;\n    }\n    this.length = Math.min(s, this.length);\n\n    if (r !== 0) {\n      var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n      this.words[this.length - 1] &= mask;\n    }\n\n    return this.strip();\n  };\n\n  // Return only lowers bits of number\n  BN.prototype.maskn = function maskn (bits) {\n    return this.clone().imaskn(bits);\n  };\n\n  // Add plain number `num` to `this`\n  BN.prototype.iaddn = function iaddn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.isubn(-num);\n\n    // Possible sign change\n    if (this.negative !== 0) {\n      if (this.length === 1 && (this.words[0] | 0) < num) {\n        this.words[0] = num - (this.words[0] | 0);\n        this.negative = 0;\n        return this;\n      }\n\n      this.negative = 0;\n      this.isubn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    // Add without checks\n    return this._iaddn(num);\n  };\n\n  BN.prototype._iaddn = function _iaddn (num) {\n    this.words[0] += num;\n\n    // Carry\n    for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n      this.words[i] -= 0x4000000;\n      if (i === this.length - 1) {\n        this.words[i + 1] = 1;\n      } else {\n        this.words[i + 1]++;\n      }\n    }\n    this.length = Math.max(this.length, i + 1);\n\n    return this;\n  };\n\n  // Subtract plain number `num` from `this`\n  BN.prototype.isubn = function isubn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.iaddn(-num);\n\n    if (this.negative !== 0) {\n      this.negative = 0;\n      this.iaddn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    this.words[0] -= num;\n\n    if (this.length === 1 && this.words[0] < 0) {\n      this.words[0] = -this.words[0];\n      this.negative = 1;\n    } else {\n      // Carry\n      for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n        this.words[i] += 0x4000000;\n        this.words[i + 1] -= 1;\n      }\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.addn = function addn (num) {\n    return this.clone().iaddn(num);\n  };\n\n  BN.prototype.subn = function subn (num) {\n    return this.clone().isubn(num);\n  };\n\n  BN.prototype.iabs = function iabs () {\n    this.negative = 0;\n\n    return this;\n  };\n\n  BN.prototype.abs = function abs () {\n    return this.clone().iabs();\n  };\n\n  BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n    var len = num.length + shift;\n    var i;\n\n    this._expand(len);\n\n    var w;\n    var carry = 0;\n    for (i = 0; i < num.length; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      var right = (num.words[i] | 0) * mul;\n      w -= right & 0x3ffffff;\n      carry = (w >> 26) - ((right / 0x4000000) | 0);\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n    for (; i < this.length - shift; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      carry = w >> 26;\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n\n    if (carry === 0) return this.strip();\n\n    // Subtraction overflow\n    assert(carry === -1);\n    carry = 0;\n    for (i = 0; i < this.length; i++) {\n      w = -(this.words[i] | 0) + carry;\n      carry = w >> 26;\n      this.words[i] = w & 0x3ffffff;\n    }\n    this.negative = 1;\n\n    return this.strip();\n  };\n\n  BN.prototype._wordDiv = function _wordDiv (num, mode) {\n    var shift = this.length - num.length;\n\n    var a = this.clone();\n    var b = num;\n\n    // Normalize\n    var bhi = b.words[b.length - 1] | 0;\n    var bhiBits = this._countBits(bhi);\n    shift = 26 - bhiBits;\n    if (shift !== 0) {\n      b = b.ushln(shift);\n      a.iushln(shift);\n      bhi = b.words[b.length - 1] | 0;\n    }\n\n    // Initialize quotient\n    var m = a.length - b.length;\n    var q;\n\n    if (mode !== 'mod') {\n      q = new BN(null);\n      q.length = m + 1;\n      q.words = new Array(q.length);\n      for (var i = 0; i < q.length; i++) {\n        q.words[i] = 0;\n      }\n    }\n\n    var diff = a.clone()._ishlnsubmul(b, 1, m);\n    if (diff.negative === 0) {\n      a = diff;\n      if (q) {\n        q.words[m] = 1;\n      }\n    }\n\n    for (var j = m - 1; j >= 0; j--) {\n      var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n        (a.words[b.length + j - 1] | 0);\n\n      // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n      // (0x7ffffff)\n      qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n      a._ishlnsubmul(b, qj, j);\n      while (a.negative !== 0) {\n        qj--;\n        a.negative = 0;\n        a._ishlnsubmul(b, 1, j);\n        if (!a.isZero()) {\n          a.negative ^= 1;\n        }\n      }\n      if (q) {\n        q.words[j] = qj;\n      }\n    }\n    if (q) {\n      q.strip();\n    }\n    a.strip();\n\n    // Denormalize\n    if (mode !== 'div' && shift !== 0) {\n      a.iushrn(shift);\n    }\n\n    return {\n      div: q || null,\n      mod: a\n    };\n  };\n\n  // NOTE: 1) `mode` can be set to `mod` to request mod only,\n  //       to `div` to request div only, or be absent to\n  //       request both div & mod\n  //       2) `positive` is true if unsigned mod is requested\n  BN.prototype.divmod = function divmod (num, mode, positive) {\n    assert(!num.isZero());\n\n    if (this.isZero()) {\n      return {\n        div: new BN(0),\n        mod: new BN(0)\n      };\n    }\n\n    var div, mod, res;\n    if (this.negative !== 0 && num.negative === 0) {\n      res = this.neg().divmod(num, mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.iadd(num);\n        }\n      }\n\n      return {\n        div: div,\n        mod: mod\n      };\n    }\n\n    if (this.negative === 0 && num.negative !== 0) {\n      res = this.divmod(num.neg(), mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      return {\n        div: div,\n        mod: res.mod\n      };\n    }\n\n    if ((this.negative & num.negative) !== 0) {\n      res = this.neg().divmod(num.neg(), mode);\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.isub(num);\n        }\n      }\n\n      return {\n        div: res.div,\n        mod: mod\n      };\n    }\n\n    // Both numbers are positive at this point\n\n    // Strip both numbers to approximate shift value\n    if (num.length > this.length || this.cmp(num) < 0) {\n      return {\n        div: new BN(0),\n        mod: this\n      };\n    }\n\n    // Very short reduction\n    if (num.length === 1) {\n      if (mode === 'div') {\n        return {\n          div: this.divn(num.words[0]),\n          mod: null\n        };\n      }\n\n      if (mode === 'mod') {\n        return {\n          div: null,\n          mod: new BN(this.modn(num.words[0]))\n        };\n      }\n\n      return {\n        div: this.divn(num.words[0]),\n        mod: new BN(this.modn(num.words[0]))\n      };\n    }\n\n    return this._wordDiv(num, mode);\n  };\n\n  // Find `this` / `num`\n  BN.prototype.div = function div (num) {\n    return this.divmod(num, 'div', false).div;\n  };\n\n  // Find `this` % `num`\n  BN.prototype.mod = function mod (num) {\n    return this.divmod(num, 'mod', false).mod;\n  };\n\n  BN.prototype.umod = function umod (num) {\n    return this.divmod(num, 'mod', true).mod;\n  };\n\n  // Find Round(`this` / `num`)\n  BN.prototype.divRound = function divRound (num) {\n    var dm = this.divmod(num);\n\n    // Fast case - exact division\n    if (dm.mod.isZero()) return dm.div;\n\n    var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n    var half = num.ushrn(1);\n    var r2 = num.andln(1);\n    var cmp = mod.cmp(half);\n\n    // Round down\n    if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n    // Round up\n    return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n  };\n\n  BN.prototype.modn = function modn (num) {\n    assert(num <= 0x3ffffff);\n    var p = (1 << 26) % num;\n\n    var acc = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      acc = (p * acc + (this.words[i] | 0)) % num;\n    }\n\n    return acc;\n  };\n\n  // In-place division by number\n  BN.prototype.idivn = function idivn (num) {\n    assert(num <= 0x3ffffff);\n\n    var carry = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var w = (this.words[i] | 0) + carry * 0x4000000;\n      this.words[i] = (w / num) | 0;\n      carry = w % num;\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.divn = function divn (num) {\n    return this.clone().idivn(num);\n  };\n\n  BN.prototype.egcd = function egcd (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var x = this;\n    var y = p.clone();\n\n    if (x.negative !== 0) {\n      x = x.umod(p);\n    } else {\n      x = x.clone();\n    }\n\n    // A * x + B * y = x\n    var A = new BN(1);\n    var B = new BN(0);\n\n    // C * x + D * y = y\n    var C = new BN(0);\n    var D = new BN(1);\n\n    var g = 0;\n\n    while (x.isEven() && y.isEven()) {\n      x.iushrn(1);\n      y.iushrn(1);\n      ++g;\n    }\n\n    var yp = y.clone();\n    var xp = x.clone();\n\n    while (!x.isZero()) {\n      for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        x.iushrn(i);\n        while (i-- > 0) {\n          if (A.isOdd() || B.isOdd()) {\n            A.iadd(yp);\n            B.isub(xp);\n          }\n\n          A.iushrn(1);\n          B.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        y.iushrn(j);\n        while (j-- > 0) {\n          if (C.isOdd() || D.isOdd()) {\n            C.iadd(yp);\n            D.isub(xp);\n          }\n\n          C.iushrn(1);\n          D.iushrn(1);\n        }\n      }\n\n      if (x.cmp(y) >= 0) {\n        x.isub(y);\n        A.isub(C);\n        B.isub(D);\n      } else {\n        y.isub(x);\n        C.isub(A);\n        D.isub(B);\n      }\n    }\n\n    return {\n      a: C,\n      b: D,\n      gcd: y.iushln(g)\n    };\n  };\n\n  // This is reduced incarnation of the binary EEA\n  // above, designated to invert members of the\n  // _prime_ fields F(p) at a maximal speed\n  BN.prototype._invmp = function _invmp (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var a = this;\n    var b = p.clone();\n\n    if (a.negative !== 0) {\n      a = a.umod(p);\n    } else {\n      a = a.clone();\n    }\n\n    var x1 = new BN(1);\n    var x2 = new BN(0);\n\n    var delta = b.clone();\n\n    while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n      for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        a.iushrn(i);\n        while (i-- > 0) {\n          if (x1.isOdd()) {\n            x1.iadd(delta);\n          }\n\n          x1.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        b.iushrn(j);\n        while (j-- > 0) {\n          if (x2.isOdd()) {\n            x2.iadd(delta);\n          }\n\n          x2.iushrn(1);\n        }\n      }\n\n      if (a.cmp(b) >= 0) {\n        a.isub(b);\n        x1.isub(x2);\n      } else {\n        b.isub(a);\n        x2.isub(x1);\n      }\n    }\n\n    var res;\n    if (a.cmpn(1) === 0) {\n      res = x1;\n    } else {\n      res = x2;\n    }\n\n    if (res.cmpn(0) < 0) {\n      res.iadd(p);\n    }\n\n    return res;\n  };\n\n  BN.prototype.gcd = function gcd (num) {\n    if (this.isZero()) return num.abs();\n    if (num.isZero()) return this.abs();\n\n    var a = this.clone();\n    var b = num.clone();\n    a.negative = 0;\n    b.negative = 0;\n\n    // Remove common factor of two\n    for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n      a.iushrn(1);\n      b.iushrn(1);\n    }\n\n    do {\n      while (a.isEven()) {\n        a.iushrn(1);\n      }\n      while (b.isEven()) {\n        b.iushrn(1);\n      }\n\n      var r = a.cmp(b);\n      if (r < 0) {\n        // Swap `a` and `b` to make `a` always bigger than `b`\n        var t = a;\n        a = b;\n        b = t;\n      } else if (r === 0 || b.cmpn(1) === 0) {\n        break;\n      }\n\n      a.isub(b);\n    } while (true);\n\n    return b.iushln(shift);\n  };\n\n  // Invert number in the field F(num)\n  BN.prototype.invm = function invm (num) {\n    return this.egcd(num).a.umod(num);\n  };\n\n  BN.prototype.isEven = function isEven () {\n    return (this.words[0] & 1) === 0;\n  };\n\n  BN.prototype.isOdd = function isOdd () {\n    return (this.words[0] & 1) === 1;\n  };\n\n  // And first word and num\n  BN.prototype.andln = function andln (num) {\n    return this.words[0] & num;\n  };\n\n  // Increment at the bit position in-line\n  BN.prototype.bincn = function bincn (bit) {\n    assert(typeof bit === 'number');\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) {\n      this._expand(s + 1);\n      this.words[s] |= q;\n      return this;\n    }\n\n    // Add bit and propagate, if needed\n    var carry = q;\n    for (var i = s; carry !== 0 && i < this.length; i++) {\n      var w = this.words[i] | 0;\n      w += carry;\n      carry = w >>> 26;\n      w &= 0x3ffffff;\n      this.words[i] = w;\n    }\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n    return this;\n  };\n\n  BN.prototype.isZero = function isZero () {\n    return this.length === 1 && this.words[0] === 0;\n  };\n\n  BN.prototype.cmpn = function cmpn (num) {\n    var negative = num < 0;\n\n    if (this.negative !== 0 && !negative) return -1;\n    if (this.negative === 0 && negative) return 1;\n\n    this.strip();\n\n    var res;\n    if (this.length > 1) {\n      res = 1;\n    } else {\n      if (negative) {\n        num = -num;\n      }\n\n      assert(num <= 0x3ffffff, 'Number is too big');\n\n      var w = this.words[0] | 0;\n      res = w === num ? 0 : w < num ? -1 : 1;\n    }\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Compare two numbers and return:\n  // 1 - if `this` > `num`\n  // 0 - if `this` == `num`\n  // -1 - if `this` < `num`\n  BN.prototype.cmp = function cmp (num) {\n    if (this.negative !== 0 && num.negative === 0) return -1;\n    if (this.negative === 0 && num.negative !== 0) return 1;\n\n    var res = this.ucmp(num);\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Unsigned comparison\n  BN.prototype.ucmp = function ucmp (num) {\n    // At this point both numbers have the same sign\n    if (this.length > num.length) return 1;\n    if (this.length < num.length) return -1;\n\n    var res = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var a = this.words[i] | 0;\n      var b = num.words[i] | 0;\n\n      if (a === b) continue;\n      if (a < b) {\n        res = -1;\n      } else if (a > b) {\n        res = 1;\n      }\n      break;\n    }\n    return res;\n  };\n\n  BN.prototype.gtn = function gtn (num) {\n    return this.cmpn(num) === 1;\n  };\n\n  BN.prototype.gt = function gt (num) {\n    return this.cmp(num) === 1;\n  };\n\n  BN.prototype.gten = function gten (num) {\n    return this.cmpn(num) >= 0;\n  };\n\n  BN.prototype.gte = function gte (num) {\n    return this.cmp(num) >= 0;\n  };\n\n  BN.prototype.ltn = function ltn (num) {\n    return this.cmpn(num) === -1;\n  };\n\n  BN.prototype.lt = function lt (num) {\n    return this.cmp(num) === -1;\n  };\n\n  BN.prototype.lten = function lten (num) {\n    return this.cmpn(num) <= 0;\n  };\n\n  BN.prototype.lte = function lte (num) {\n    return this.cmp(num) <= 0;\n  };\n\n  BN.prototype.eqn = function eqn (num) {\n    return this.cmpn(num) === 0;\n  };\n\n  BN.prototype.eq = function eq (num) {\n    return this.cmp(num) === 0;\n  };\n\n  //\n  // A reduce context, could be using montgomery or something better, depending\n  // on the `m` itself.\n  //\n  BN.red = function red (num) {\n    return new Red(num);\n  };\n\n  BN.prototype.toRed = function toRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    assert(this.negative === 0, 'red works only with positives');\n    return ctx.convertTo(this)._forceRed(ctx);\n  };\n\n  BN.prototype.fromRed = function fromRed () {\n    assert(this.red, 'fromRed works only with numbers in reduction context');\n    return this.red.convertFrom(this);\n  };\n\n  BN.prototype._forceRed = function _forceRed (ctx) {\n    this.red = ctx;\n    return this;\n  };\n\n  BN.prototype.forceRed = function forceRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    return this._forceRed(ctx);\n  };\n\n  BN.prototype.redAdd = function redAdd (num) {\n    assert(this.red, 'redAdd works only with red numbers');\n    return this.red.add(this, num);\n  };\n\n  BN.prototype.redIAdd = function redIAdd (num) {\n    assert(this.red, 'redIAdd works only with red numbers');\n    return this.red.iadd(this, num);\n  };\n\n  BN.prototype.redSub = function redSub (num) {\n    assert(this.red, 'redSub works only with red numbers');\n    return this.red.sub(this, num);\n  };\n\n  BN.prototype.redISub = function redISub (num) {\n    assert(this.red, 'redISub works only with red numbers');\n    return this.red.isub(this, num);\n  };\n\n  BN.prototype.redShl = function redShl (num) {\n    assert(this.red, 'redShl works only with red numbers');\n    return this.red.shl(this, num);\n  };\n\n  BN.prototype.redMul = function redMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.mul(this, num);\n  };\n\n  BN.prototype.redIMul = function redIMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.imul(this, num);\n  };\n\n  BN.prototype.redSqr = function redSqr () {\n    assert(this.red, 'redSqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqr(this);\n  };\n\n  BN.prototype.redISqr = function redISqr () {\n    assert(this.red, 'redISqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.isqr(this);\n  };\n\n  // Square root over p\n  BN.prototype.redSqrt = function redSqrt () {\n    assert(this.red, 'redSqrt works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqrt(this);\n  };\n\n  BN.prototype.redInvm = function redInvm () {\n    assert(this.red, 'redInvm works only with red numbers');\n    this.red._verify1(this);\n    return this.red.invm(this);\n  };\n\n  // Return negative clone of `this` % `red modulo`\n  BN.prototype.redNeg = function redNeg () {\n    assert(this.red, 'redNeg works only with red numbers');\n    this.red._verify1(this);\n    return this.red.neg(this);\n  };\n\n  BN.prototype.redPow = function redPow (num) {\n    assert(this.red && !num.red, 'redPow(normalNum)');\n    this.red._verify1(this);\n    return this.red.pow(this, num);\n  };\n\n  // Prime numbers with efficient reduction\n  var primes = {\n    k256: null,\n    p224: null,\n    p192: null,\n    p25519: null\n  };\n\n  // Pseudo-Mersenne prime\n  function MPrime (name, p) {\n    // P = 2 ^ N - K\n    this.name = name;\n    this.p = new BN(p, 16);\n    this.n = this.p.bitLength();\n    this.k = new BN(1).iushln(this.n).isub(this.p);\n\n    this.tmp = this._tmp();\n  }\n\n  MPrime.prototype._tmp = function _tmp () {\n    var tmp = new BN(null);\n    tmp.words = new Array(Math.ceil(this.n / 13));\n    return tmp;\n  };\n\n  MPrime.prototype.ireduce = function ireduce (num) {\n    // Assumes that `num` is less than `P^2`\n    // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n    var r = num;\n    var rlen;\n\n    do {\n      this.split(r, this.tmp);\n      r = this.imulK(r);\n      r = r.iadd(this.tmp);\n      rlen = r.bitLength();\n    } while (rlen > this.n);\n\n    var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n    if (cmp === 0) {\n      r.words[0] = 0;\n      r.length = 1;\n    } else if (cmp > 0) {\n      r.isub(this.p);\n    } else {\n      r.strip();\n    }\n\n    return r;\n  };\n\n  MPrime.prototype.split = function split (input, out) {\n    input.iushrn(this.n, 0, out);\n  };\n\n  MPrime.prototype.imulK = function imulK (num) {\n    return num.imul(this.k);\n  };\n\n  function K256 () {\n    MPrime.call(\n      this,\n      'k256',\n      'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n  }\n  inherits(K256, MPrime);\n\n  K256.prototype.split = function split (input, output) {\n    // 256 = 9 * 26 + 22\n    var mask = 0x3fffff;\n\n    var outLen = Math.min(input.length, 9);\n    for (var i = 0; i < outLen; i++) {\n      output.words[i] = input.words[i];\n    }\n    output.length = outLen;\n\n    if (input.length <= 9) {\n      input.words[0] = 0;\n      input.length = 1;\n      return;\n    }\n\n    // Shift by 9 limbs\n    var prev = input.words[9];\n    output.words[output.length++] = prev & mask;\n\n    for (i = 10; i < input.length; i++) {\n      var next = input.words[i] | 0;\n      input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n      prev = next;\n    }\n    prev >>>= 22;\n    input.words[i - 10] = prev;\n    if (prev === 0 && input.length > 10) {\n      input.length -= 10;\n    } else {\n      input.length -= 9;\n    }\n  };\n\n  K256.prototype.imulK = function imulK (num) {\n    // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n    num.words[num.length] = 0;\n    num.words[num.length + 1] = 0;\n    num.length += 2;\n\n    // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n    var lo = 0;\n    for (var i = 0; i < num.length; i++) {\n      var w = num.words[i] | 0;\n      lo += w * 0x3d1;\n      num.words[i] = lo & 0x3ffffff;\n      lo = w * 0x40 + ((lo / 0x4000000) | 0);\n    }\n\n    // Fast length reduction\n    if (num.words[num.length - 1] === 0) {\n      num.length--;\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n      }\n    }\n    return num;\n  };\n\n  function P224 () {\n    MPrime.call(\n      this,\n      'p224',\n      'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n  }\n  inherits(P224, MPrime);\n\n  function P192 () {\n    MPrime.call(\n      this,\n      'p192',\n      'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n  }\n  inherits(P192, MPrime);\n\n  function P25519 () {\n    // 2 ^ 255 - 19\n    MPrime.call(\n      this,\n      '25519',\n      '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n  }\n  inherits(P25519, MPrime);\n\n  P25519.prototype.imulK = function imulK (num) {\n    // K = 0x13\n    var carry = 0;\n    for (var i = 0; i < num.length; i++) {\n      var hi = (num.words[i] | 0) * 0x13 + carry;\n      var lo = hi & 0x3ffffff;\n      hi >>>= 26;\n\n      num.words[i] = lo;\n      carry = hi;\n    }\n    if (carry !== 0) {\n      num.words[num.length++] = carry;\n    }\n    return num;\n  };\n\n  // Exported mostly for testing purposes, use plain name instead\n  BN._prime = function prime (name) {\n    // Cached version of prime\n    if (primes[name]) return primes[name];\n\n    var prime;\n    if (name === 'k256') {\n      prime = new K256();\n    } else if (name === 'p224') {\n      prime = new P224();\n    } else if (name === 'p192') {\n      prime = new P192();\n    } else if (name === 'p25519') {\n      prime = new P25519();\n    } else {\n      throw new Error('Unknown prime ' + name);\n    }\n    primes[name] = prime;\n\n    return prime;\n  };\n\n  //\n  // Base reduction engine\n  //\n  function Red (m) {\n    if (typeof m === 'string') {\n      var prime = BN._prime(m);\n      this.m = prime.p;\n      this.prime = prime;\n    } else {\n      assert(m.gtn(1), 'modulus must be greater than 1');\n      this.m = m;\n      this.prime = null;\n    }\n  }\n\n  Red.prototype._verify1 = function _verify1 (a) {\n    assert(a.negative === 0, 'red works only with positives');\n    assert(a.red, 'red works only with red numbers');\n  };\n\n  Red.prototype._verify2 = function _verify2 (a, b) {\n    assert((a.negative | b.negative) === 0, 'red works only with positives');\n    assert(a.red && a.red === b.red,\n      'red works only with red numbers');\n  };\n\n  Red.prototype.imod = function imod (a) {\n    if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n    return a.umod(this.m)._forceRed(this);\n  };\n\n  Red.prototype.neg = function neg (a) {\n    if (a.isZero()) {\n      return a.clone();\n    }\n\n    return this.m.sub(a)._forceRed(this);\n  };\n\n  Red.prototype.add = function add (a, b) {\n    this._verify2(a, b);\n\n    var res = a.add(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.iadd = function iadd (a, b) {\n    this._verify2(a, b);\n\n    var res = a.iadd(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.sub = function sub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.sub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.isub = function isub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.isub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.shl = function shl (a, num) {\n    this._verify1(a);\n    return this.imod(a.ushln(num));\n  };\n\n  Red.prototype.imul = function imul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.imul(b));\n  };\n\n  Red.prototype.mul = function mul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.mul(b));\n  };\n\n  Red.prototype.isqr = function isqr (a) {\n    return this.imul(a, a.clone());\n  };\n\n  Red.prototype.sqr = function sqr (a) {\n    return this.mul(a, a);\n  };\n\n  Red.prototype.sqrt = function sqrt (a) {\n    if (a.isZero()) return a.clone();\n\n    var mod3 = this.m.andln(3);\n    assert(mod3 % 2 === 1);\n\n    // Fast case\n    if (mod3 === 3) {\n      var pow = this.m.add(new BN(1)).iushrn(2);\n      return this.pow(a, pow);\n    }\n\n    // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n    //\n    // Find Q and S, that Q * 2 ^ S = (P - 1)\n    var q = this.m.subn(1);\n    var s = 0;\n    while (!q.isZero() && q.andln(1) === 0) {\n      s++;\n      q.iushrn(1);\n    }\n    assert(!q.isZero());\n\n    var one = new BN(1).toRed(this);\n    var nOne = one.redNeg();\n\n    // Find quadratic non-residue\n    // NOTE: Max is such because of generalized Riemann hypothesis.\n    var lpow = this.m.subn(1).iushrn(1);\n    var z = this.m.bitLength();\n    z = new BN(2 * z * z).toRed(this);\n\n    while (this.pow(z, lpow).cmp(nOne) !== 0) {\n      z.redIAdd(nOne);\n    }\n\n    var c = this.pow(z, q);\n    var r = this.pow(a, q.addn(1).iushrn(1));\n    var t = this.pow(a, q);\n    var m = s;\n    while (t.cmp(one) !== 0) {\n      var tmp = t;\n      for (var i = 0; tmp.cmp(one) !== 0; i++) {\n        tmp = tmp.redSqr();\n      }\n      assert(i < m);\n      var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n      r = r.redMul(b);\n      c = b.redSqr();\n      t = t.redMul(c);\n      m = i;\n    }\n\n    return r;\n  };\n\n  Red.prototype.invm = function invm (a) {\n    var inv = a._invmp(this.m);\n    if (inv.negative !== 0) {\n      inv.negative = 0;\n      return this.imod(inv).redNeg();\n    } else {\n      return this.imod(inv);\n    }\n  };\n\n  Red.prototype.pow = function pow (a, num) {\n    if (num.isZero()) return new BN(1).toRed(this);\n    if (num.cmpn(1) === 0) return a.clone();\n\n    var windowSize = 4;\n    var wnd = new Array(1 << windowSize);\n    wnd[0] = new BN(1).toRed(this);\n    wnd[1] = a;\n    for (var i = 2; i < wnd.length; i++) {\n      wnd[i] = this.mul(wnd[i - 1], a);\n    }\n\n    var res = wnd[0];\n    var current = 0;\n    var currentLen = 0;\n    var start = num.bitLength() % 26;\n    if (start === 0) {\n      start = 26;\n    }\n\n    for (i = num.length - 1; i >= 0; i--) {\n      var word = num.words[i];\n      for (var j = start - 1; j >= 0; j--) {\n        var bit = (word >> j) & 1;\n        if (res !== wnd[0]) {\n          res = this.sqr(res);\n        }\n\n        if (bit === 0 && current === 0) {\n          currentLen = 0;\n          continue;\n        }\n\n        current <<= 1;\n        current |= bit;\n        currentLen++;\n        if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n        res = this.mul(res, wnd[current]);\n        currentLen = 0;\n        current = 0;\n      }\n      start = 26;\n    }\n\n    return res;\n  };\n\n  Red.prototype.convertTo = function convertTo (num) {\n    var r = num.umod(this.m);\n\n    return r === num ? r.clone() : r;\n  };\n\n  Red.prototype.convertFrom = function convertFrom (num) {\n    var res = num.clone();\n    res.red = null;\n    return res;\n  };\n\n  //\n  // Montgomery method engine\n  //\n\n  BN.mont = function mont (num) {\n    return new Mont(num);\n  };\n\n  function Mont (m) {\n    Red.call(this, m);\n\n    this.shift = this.m.bitLength();\n    if (this.shift % 26 !== 0) {\n      this.shift += 26 - (this.shift % 26);\n    }\n\n    this.r = new BN(1).iushln(this.shift);\n    this.r2 = this.imod(this.r.sqr());\n    this.rinv = this.r._invmp(this.m);\n\n    this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n    this.minv = this.minv.umod(this.r);\n    this.minv = this.r.sub(this.minv);\n  }\n  inherits(Mont, Red);\n\n  Mont.prototype.convertTo = function convertTo (num) {\n    return this.imod(num.ushln(this.shift));\n  };\n\n  Mont.prototype.convertFrom = function convertFrom (num) {\n    var r = this.imod(num.mul(this.rinv));\n    r.red = null;\n    return r;\n  };\n\n  Mont.prototype.imul = function imul (a, b) {\n    if (a.isZero() || b.isZero()) {\n      a.words[0] = 0;\n      a.length = 1;\n      return a;\n    }\n\n    var t = a.imul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.mul = function mul (a, b) {\n    if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n    var t = a.mul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.invm = function invm (a) {\n    // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n    var res = this.imod(a._invmp(this.m).mul(this.r2));\n    return res._forceRed(this);\n  };\n})(typeof module === 'undefined' || module, this);\n","var r;\n\nmodule.exports = function rand(len) {\n  if (!r)\n    r = new Rand(null);\n\n  return r.generate(len);\n};\n\nfunction Rand(rand) {\n  this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n  return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n  if (this.rand.getBytes)\n    return this.rand.getBytes(n);\n\n  var res = new Uint8Array(n);\n  for (var i = 0; i < res.length; i++)\n    res[i] = this.rand.getByte();\n  return res;\n};\n\nif (typeof self === 'object') {\n  if (self.crypto && self.crypto.getRandomValues) {\n    // Modern browsers\n    Rand.prototype._rand = function _rand(n) {\n      var arr = new Uint8Array(n);\n      self.crypto.getRandomValues(arr);\n      return arr;\n    };\n  } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n    // IE\n    Rand.prototype._rand = function _rand(n) {\n      var arr = new Uint8Array(n);\n      self.msCrypto.getRandomValues(arr);\n      return arr;\n    };\n\n  // Safari's WebWorkers do not have `crypto`\n  } else if (typeof window === 'object') {\n    // Old junk\n    Rand.prototype._rand = function() {\n      throw new Error('Not implemented yet');\n    };\n  }\n} else {\n  // Node.js or Web worker with no crypto support\n  try {\n    var crypto = require('crypto');\n    if (typeof crypto.randomBytes !== 'function')\n      throw new Error('Not supported');\n\n    Rand.prototype._rand = function _rand(n) {\n      return crypto.randomBytes(n);\n    };\n  } catch (e) {\n  }\n}\n","var bn = require('bn.js');\nvar brorand = require('brorand');\n\nfunction MillerRabin(rand) {\n  this.rand = rand || new brorand.Rand();\n}\nmodule.exports = MillerRabin;\n\nMillerRabin.create = function create(rand) {\n  return new MillerRabin(rand);\n};\n\nMillerRabin.prototype._randbelow = function _randbelow(n) {\n  var len = n.bitLength();\n  var min_bytes = Math.ceil(len / 8);\n\n  // Generage random bytes until a number less than n is found.\n  // This ensures that 0..n-1 have an equal probability of being selected.\n  do\n    var a = new bn(this.rand.generate(min_bytes));\n  while (a.cmp(n) >= 0);\n\n  return a;\n};\n\nMillerRabin.prototype._randrange = function _randrange(start, stop) {\n  // Generate a random number greater than or equal to start and less than stop.\n  var size = stop.sub(start);\n  return start.add(this._randbelow(size));\n};\n\nMillerRabin.prototype.test = function test(n, k, cb) {\n  var len = n.bitLength();\n  var red = bn.mont(n);\n  var rone = new bn(1).toRed(red);\n\n  if (!k)\n    k = Math.max(1, (len / 48) | 0);\n\n  // Find d and s, (n - 1) = (2 ^ s) * d;\n  var n1 = n.subn(1);\n  for (var s = 0; !n1.testn(s); s++) {}\n  var d = n.shrn(s);\n\n  var rn1 = n1.toRed(red);\n\n  var prime = true;\n  for (; k > 0; k--) {\n    var a = this._randrange(new bn(2), n1);\n    if (cb)\n      cb(a);\n\n    var x = a.toRed(red).redPow(d);\n    if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n      continue;\n\n    for (var i = 1; i < s; i++) {\n      x = x.redSqr();\n\n      if (x.cmp(rone) === 0)\n        return false;\n      if (x.cmp(rn1) === 0)\n        break;\n    }\n\n    if (i === s)\n      return false;\n  }\n\n  return prime;\n};\n\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n  var len = n.bitLength();\n  var red = bn.mont(n);\n  var rone = new bn(1).toRed(red);\n\n  if (!k)\n    k = Math.max(1, (len / 48) | 0);\n\n  // Find d and s, (n - 1) = (2 ^ s) * d;\n  var n1 = n.subn(1);\n  for (var s = 0; !n1.testn(s); s++) {}\n  var d = n.shrn(s);\n\n  var rn1 = n1.toRed(red);\n\n  for (; k > 0; k--) {\n    var a = this._randrange(new bn(2), n1);\n\n    var g = n.gcd(a);\n    if (g.cmpn(1) !== 0)\n      return g;\n\n    var x = a.toRed(red).redPow(d);\n    if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n      continue;\n\n    for (var i = 1; i < s; i++) {\n      x = x.redSqr();\n\n      if (x.cmp(rone) === 0)\n        return x.fromRed().subn(1).gcd(n);\n      if (x.cmp(rn1) === 0)\n        break;\n    }\n\n    if (i === s) {\n      x = x.redSqr();\n      return x.fromRed().subn(1).gcd(n);\n    }\n  }\n\n  return false;\n};\n","var randomBytes = require('randombytes');\nmodule.exports = findPrime;\nfindPrime.simpleSieve = simpleSieve;\nfindPrime.fermatTest = fermatTest;\nvar BN = require('bn.js');\nvar TWENTYFOUR = new BN(24);\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar ONE = new BN(1);\nvar TWO = new BN(2);\nvar FIVE = new BN(5);\nvar SIXTEEN = new BN(16);\nvar EIGHT = new BN(8);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar ELEVEN = new BN(11);\nvar FOUR = new BN(4);\nvar TWELVE = new BN(12);\nvar primes = null;\n\nfunction _getPrimes() {\n  if (primes !== null)\n    return primes;\n\n  var limit = 0x100000;\n  var res = [];\n  res[0] = 2;\n  for (var i = 1, k = 3; k < limit; k += 2) {\n    var sqrt = Math.ceil(Math.sqrt(k));\n    for (var j = 0; j < i && res[j] <= sqrt; j++)\n      if (k % res[j] === 0)\n        break;\n\n    if (i !== j && res[j] <= sqrt)\n      continue;\n\n    res[i++] = k;\n  }\n  primes = res;\n  return res;\n}\n\nfunction simpleSieve(p) {\n  var primes = _getPrimes();\n\n  for (var i = 0; i < primes.length; i++)\n    if (p.modn(primes[i]) === 0) {\n      if (p.cmpn(primes[i]) === 0) {\n        return true;\n      } else {\n        return false;\n      }\n    }\n\n  return true;\n}\n\nfunction fermatTest(p) {\n  var red = BN.mont(p);\n  return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;\n}\n\nfunction findPrime(bits, gen) {\n  if (bits < 16) {\n    // this is what openssl does\n    if (gen === 2 || gen === 5) {\n      return new BN([0x8c, 0x7b]);\n    } else {\n      return new BN([0x8c, 0x27]);\n    }\n  }\n  gen = new BN(gen);\n\n  var num, n2;\n\n  while (true) {\n    num = new BN(randomBytes(Math.ceil(bits / 8)));\n    while (num.bitLength() > bits) {\n      num.ishrn(1);\n    }\n    if (num.isEven()) {\n      num.iadd(ONE);\n    }\n    if (!num.testn(1)) {\n      num.iadd(TWO);\n    }\n    if (!gen.cmp(TWO)) {\n      while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {\n        num.iadd(FOUR);\n      }\n    } else if (!gen.cmp(FIVE)) {\n      while (num.mod(TEN).cmp(THREE)) {\n        num.iadd(FOUR);\n      }\n    }\n    n2 = num.shrn(1);\n    if (simpleSieve(n2) && simpleSieve(num) &&\n      fermatTest(n2) && fermatTest(num) &&\n      millerRabin.test(n2) && millerRabin.test(num)) {\n      return num;\n    }\n  }\n\n}\n","var BN = require('bn.js');\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar TWENTYFOUR = new BN(24);\nvar ELEVEN = new BN(11);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar primes = require('./generatePrime');\nvar randomBytes = require('randombytes');\nmodule.exports = DH;\n\nfunction setPublicKey(pub, enc) {\n  enc = enc || 'utf8';\n  if (!Buffer.isBuffer(pub)) {\n    pub = new Buffer(pub, enc);\n  }\n  this._pub = new BN(pub);\n  return this;\n}\n\nfunction setPrivateKey(priv, enc) {\n  enc = enc || 'utf8';\n  if (!Buffer.isBuffer(priv)) {\n    priv = new Buffer(priv, enc);\n  }\n  this._priv = new BN(priv);\n  return this;\n}\n\nvar primeCache = {};\nfunction checkPrime(prime, generator) {\n  var gen = generator.toString('hex');\n  var hex = [gen, prime.toString(16)].join('_');\n  if (hex in primeCache) {\n    return primeCache[hex];\n  }\n  var error = 0;\n\n  if (prime.isEven() ||\n    !primes.simpleSieve ||\n    !primes.fermatTest(prime) ||\n    !millerRabin.test(prime)) {\n    //not a prime so +1\n    error += 1;\n\n    if (gen === '02' || gen === '05') {\n      // we'd be able to check the generator\n      // it would fail so +8\n      error += 8;\n    } else {\n      //we wouldn't be able to test the generator\n      // so +4\n      error += 4;\n    }\n    primeCache[hex] = error;\n    return error;\n  }\n  if (!millerRabin.test(prime.shrn(1))) {\n    //not a safe prime\n    error += 2;\n  }\n  var rem;\n  switch (gen) {\n    case '02':\n      if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n        // unsuidable generator\n        error += 8;\n      }\n      break;\n    case '05':\n      rem = prime.mod(TEN);\n      if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n        // prime mod 10 needs to equal 3 or 7\n        error += 8;\n      }\n      break;\n    default:\n      error += 4;\n  }\n  primeCache[hex] = error;\n  return error;\n}\n\nfunction DH(prime, generator, malleable) {\n  this.setGenerator(generator);\n  this.__prime = new BN(prime);\n  this._prime = BN.mont(this.__prime);\n  this._primeLen = prime.length;\n  this._pub = undefined;\n  this._priv = undefined;\n  this._primeCode = undefined;\n  if (malleable) {\n    this.setPublicKey = setPublicKey;\n    this.setPrivateKey = setPrivateKey;\n  } else {\n    this._primeCode = 8;\n  }\n}\nObject.defineProperty(DH.prototype, 'verifyError', {\n  enumerable: true,\n  get: function () {\n    if (typeof this._primeCode !== 'number') {\n      this._primeCode = checkPrime(this.__prime, this.__gen);\n    }\n    return this._primeCode;\n  }\n});\nDH.prototype.generateKeys = function () {\n  if (!this._priv) {\n    this._priv = new BN(randomBytes(this._primeLen));\n  }\n  this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();\n  return this.getPublicKey();\n};\n\nDH.prototype.computeSecret = function (other) {\n  other = new BN(other);\n  other = other.toRed(this._prime);\n  var secret = other.redPow(this._priv).fromRed();\n  var out = new Buffer(secret.toArray());\n  var prime = this.getPrime();\n  if (out.length < prime.length) {\n    var front = new Buffer(prime.length - out.length);\n    front.fill(0);\n    out = Buffer.concat([front, out]);\n  }\n  return out;\n};\n\nDH.prototype.getPublicKey = function getPublicKey(enc) {\n  return formatReturnValue(this._pub, enc);\n};\n\nDH.prototype.getPrivateKey = function getPrivateKey(enc) {\n  return formatReturnValue(this._priv, enc);\n};\n\nDH.prototype.getPrime = function (enc) {\n  return formatReturnValue(this.__prime, enc);\n};\n\nDH.prototype.getGenerator = function (enc) {\n  return formatReturnValue(this._gen, enc);\n};\n\nDH.prototype.setGenerator = function (gen, enc) {\n  enc = enc || 'utf8';\n  if (!Buffer.isBuffer(gen)) {\n    gen = new Buffer(gen, enc);\n  }\n  this.__gen = gen;\n  this._gen = new BN(gen);\n  return this;\n};\n\nfunction formatReturnValue(bn, enc) {\n  var buf = new Buffer(bn.toArray());\n  if (!enc) {\n    return buf;\n  } else {\n    return buf.toString(enc);\n  }\n}\n","var generatePrime = require('./lib/generatePrime')\nvar primes = require('./lib/primes.json')\n\nvar DH = require('./lib/dh')\n\nfunction getDiffieHellman (mod) {\n  var prime = new Buffer(primes[mod].prime, 'hex')\n  var gen = new Buffer(primes[mod].gen, 'hex')\n\n  return new DH(prime, gen)\n}\n\nvar ENCODINGS = {\n  'binary': true, 'hex': true, 'base64': true\n}\n\nfunction createDiffieHellman (prime, enc, generator, genc) {\n  if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {\n    return createDiffieHellman(prime, 'binary', enc, generator)\n  }\n\n  enc = enc || 'binary'\n  genc = genc || 'binary'\n  generator = generator || new Buffer([2])\n\n  if (!Buffer.isBuffer(generator)) {\n    generator = new Buffer(generator, genc)\n  }\n\n  if (typeof prime === 'number') {\n    return new DH(generatePrime(prime, generator), generator, true)\n  }\n\n  if (!Buffer.isBuffer(prime)) {\n    prime = new Buffer(prime, enc)\n  }\n\n  return new DH(prime, generator, true)\n}\n\nexports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman\nexports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman\n","var bn = require('bn.js');\nvar randomBytes = require('randombytes');\nmodule.exports = crt;\nfunction blind(priv) {\n  var r = getr(priv);\n  var blinder = r.toRed(bn.mont(priv.modulus))\n  .redPow(new bn(priv.publicExponent)).fromRed();\n  return {\n    blinder: blinder,\n    unblinder:r.invm(priv.modulus)\n  };\n}\nfunction crt(msg, priv) {\n  var blinds = blind(priv);\n  var len = priv.modulus.byteLength();\n  var mod = bn.mont(priv.modulus);\n  var blinded = new bn(msg).mul(blinds.blinder).umod(priv.modulus);\n  var c1 = blinded.toRed(bn.mont(priv.prime1));\n  var c2 = blinded.toRed(bn.mont(priv.prime2));\n  var qinv = priv.coefficient;\n  var p = priv.prime1;\n  var q = priv.prime2;\n  var m1 = c1.redPow(priv.exponent1);\n  var m2 = c2.redPow(priv.exponent2);\n  m1 = m1.fromRed();\n  m2 = m2.fromRed();\n  var h = m1.isub(m2).imul(qinv).umod(p);\n  h.imul(q);\n  m2.iadd(h);\n  return new Buffer(m2.imul(blinds.unblinder).umod(priv.modulus).toArray(false, len));\n}\ncrt.getr = getr;\nfunction getr(priv) {\n  var len = priv.modulus.byteLength();\n  var r = new bn(randomBytes(len));\n  while (r.cmp(priv.modulus) >=  0 || !r.umod(priv.prime1) || !r.umod(priv.prime2)) {\n    r = new bn(randomBytes(len));\n  }\n  return r;\n}\n","'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n  if (Array.isArray(msg))\n    return msg.slice();\n  if (!msg)\n    return [];\n  var res = [];\n  if (typeof msg !== 'string') {\n    for (var i = 0; i < msg.length; i++)\n      res[i] = msg[i] | 0;\n    return res;\n  }\n  if (enc === 'hex') {\n    msg = msg.replace(/[^a-z0-9]+/ig, '');\n    if (msg.length % 2 !== 0)\n      msg = '0' + msg;\n    for (var i = 0; i < msg.length; i += 2)\n      res.push(parseInt(msg[i] + msg[i + 1], 16));\n  } else {\n    for (var i = 0; i < msg.length; i++) {\n      var c = msg.charCodeAt(i);\n      var hi = c >> 8;\n      var lo = c & 0xff;\n      if (hi)\n        res.push(hi, lo);\n      else\n        res.push(lo);\n    }\n  }\n  return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n  if (word.length === 1)\n    return '0' + word;\n  else\n    return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n  var res = '';\n  for (var i = 0; i < msg.length; i++)\n    res += zero2(msg[i].toString(16));\n  return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n  if (enc === 'hex')\n    return toHex(arr);\n  else\n    return arr;\n};\n","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w) {\n  var naf = [];\n  var ws = 1 << (w + 1);\n  var k = num.clone();\n  while (k.cmpn(1) >= 0) {\n    var z;\n    if (k.isOdd()) {\n      var mod = k.andln(ws - 1);\n      if (mod > (ws >> 1) - 1)\n        z = (ws >> 1) - mod;\n      else\n        z = mod;\n      k.isubn(z);\n    } else {\n      z = 0;\n    }\n    naf.push(z);\n\n    // Optimization, shift by word if possible\n    var shift = (k.cmpn(0) !== 0 && k.andln(ws - 1) === 0) ? (w + 1) : 1;\n    for (var i = 1; i < shift; i++)\n      naf.push(0);\n    k.iushrn(shift);\n  }\n\n  return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n  var jsf = [\n    [],\n    []\n  ];\n\n  k1 = k1.clone();\n  k2 = k2.clone();\n  var d1 = 0;\n  var d2 = 0;\n  while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n\n    // First phase\n    var m14 = (k1.andln(3) + d1) & 3;\n    var m24 = (k2.andln(3) + d2) & 3;\n    if (m14 === 3)\n      m14 = -1;\n    if (m24 === 3)\n      m24 = -1;\n    var u1;\n    if ((m14 & 1) === 0) {\n      u1 = 0;\n    } else {\n      var m8 = (k1.andln(7) + d1) & 7;\n      if ((m8 === 3 || m8 === 5) && m24 === 2)\n        u1 = -m14;\n      else\n        u1 = m14;\n    }\n    jsf[0].push(u1);\n\n    var u2;\n    if ((m24 & 1) === 0) {\n      u2 = 0;\n    } else {\n      var m8 = (k2.andln(7) + d2) & 7;\n      if ((m8 === 3 || m8 === 5) && m14 === 2)\n        u2 = -m24;\n      else\n        u2 = m24;\n    }\n    jsf[1].push(u2);\n\n    // Second phase\n    if (2 * d1 === u1 + 1)\n      d1 = 1 - d1;\n    if (2 * d2 === u2 + 1)\n      d2 = 1 - d2;\n    k1.iushrn(1);\n    k2.iushrn(1);\n  }\n\n  return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n  var key = '_' + name;\n  obj.prototype[name] = function cachedProperty() {\n    return this[key] !== undefined ? this[key] :\n           this[key] = computer.call(this);\n  };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n  return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n                                     bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n  return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n","'use strict';\n\nvar BN = require('bn.js');\nvar elliptic = require('../../elliptic');\nvar utils = elliptic.utils;\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n  this.type = type;\n  this.p = new BN(conf.p, 16);\n\n  // Use Montgomery, when there is no fast reduction for the prime\n  this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n  // Useful for many curves\n  this.zero = new BN(0).toRed(this.red);\n  this.one = new BN(1).toRed(this.red);\n  this.two = new BN(2).toRed(this.red);\n\n  // Curve configuration, optional\n  this.n = conf.n && new BN(conf.n, 16);\n  this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n  // Temporary arrays\n  this._wnafT1 = new Array(4);\n  this._wnafT2 = new Array(4);\n  this._wnafT3 = new Array(4);\n  this._wnafT4 = new Array(4);\n\n  // Generalized Greg Maxwell's trick\n  var adjustCount = this.n && this.p.div(this.n);\n  if (!adjustCount || adjustCount.cmpn(100) > 0) {\n    this.redN = null;\n  } else {\n    this._maxwellTrick = true;\n    this.redN = this.n.toRed(this.red);\n  }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n  throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n  throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n  assert(p.precomputed);\n  var doubles = p._getDoubles();\n\n  var naf = getNAF(k, 1);\n  var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n  I /= 3;\n\n  // Translate into more windowed form\n  var repr = [];\n  for (var j = 0; j < naf.length; j += doubles.step) {\n    var nafW = 0;\n    for (var k = j + doubles.step - 1; k >= j; k--)\n      nafW = (nafW << 1) + naf[k];\n    repr.push(nafW);\n  }\n\n  var a = this.jpoint(null, null, null);\n  var b = this.jpoint(null, null, null);\n  for (var i = I; i > 0; i--) {\n    for (var j = 0; j < repr.length; j++) {\n      var nafW = repr[j];\n      if (nafW === i)\n        b = b.mixedAdd(doubles.points[j]);\n      else if (nafW === -i)\n        b = b.mixedAdd(doubles.points[j].neg());\n    }\n    a = a.add(b);\n  }\n  return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n  var w = 4;\n\n  // Precompute window\n  var nafPoints = p._getNAFPoints(w);\n  w = nafPoints.wnd;\n  var wnd = nafPoints.points;\n\n  // Get NAF form\n  var naf = getNAF(k, w);\n\n  // Add `this`*(N+1) for every w-NAF index\n  var acc = this.jpoint(null, null, null);\n  for (var i = naf.length - 1; i >= 0; i--) {\n    // Count zeroes\n    for (var k = 0; i >= 0 && naf[i] === 0; i--)\n      k++;\n    if (i >= 0)\n      k++;\n    acc = acc.dblp(k);\n\n    if (i < 0)\n      break;\n    var z = naf[i];\n    assert(z !== 0);\n    if (p.type === 'affine') {\n      // J +- P\n      if (z > 0)\n        acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n      else\n        acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n    } else {\n      // J +- J\n      if (z > 0)\n        acc = acc.add(wnd[(z - 1) >> 1]);\n      else\n        acc = acc.add(wnd[(-z - 1) >> 1].neg());\n    }\n  }\n  return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n                                                       points,\n                                                       coeffs,\n                                                       len,\n                                                       jacobianResult) {\n  var wndWidth = this._wnafT1;\n  var wnd = this._wnafT2;\n  var naf = this._wnafT3;\n\n  // Fill all arrays\n  var max = 0;\n  for (var i = 0; i < len; i++) {\n    var p = points[i];\n    var nafPoints = p._getNAFPoints(defW);\n    wndWidth[i] = nafPoints.wnd;\n    wnd[i] = nafPoints.points;\n  }\n\n  // Comb small window NAFs\n  for (var i = len - 1; i >= 1; i -= 2) {\n    var a = i - 1;\n    var b = i;\n    if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n      naf[a] = getNAF(coeffs[a], wndWidth[a]);\n      naf[b] = getNAF(coeffs[b], wndWidth[b]);\n      max = Math.max(naf[a].length, max);\n      max = Math.max(naf[b].length, max);\n      continue;\n    }\n\n    var comb = [\n      points[a], /* 1 */\n      null, /* 3 */\n      null, /* 5 */\n      points[b] /* 7 */\n    ];\n\n    // Try to avoid Projective points, if possible\n    if (points[a].y.cmp(points[b].y) === 0) {\n      comb[1] = points[a].add(points[b]);\n      comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n    } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n      comb[1] = points[a].toJ().mixedAdd(points[b]);\n      comb[2] = points[a].add(points[b].neg());\n    } else {\n      comb[1] = points[a].toJ().mixedAdd(points[b]);\n      comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n    }\n\n    var index = [\n      -3, /* -1 -1 */\n      -1, /* -1 0 */\n      -5, /* -1 1 */\n      -7, /* 0 -1 */\n      0, /* 0 0 */\n      7, /* 0 1 */\n      5, /* 1 -1 */\n      1, /* 1 0 */\n      3  /* 1 1 */\n    ];\n\n    var jsf = getJSF(coeffs[a], coeffs[b]);\n    max = Math.max(jsf[0].length, max);\n    naf[a] = new Array(max);\n    naf[b] = new Array(max);\n    for (var j = 0; j < max; j++) {\n      var ja = jsf[0][j] | 0;\n      var jb = jsf[1][j] | 0;\n\n      naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n      naf[b][j] = 0;\n      wnd[a] = comb;\n    }\n  }\n\n  var acc = this.jpoint(null, null, null);\n  var tmp = this._wnafT4;\n  for (var i = max; i >= 0; i--) {\n    var k = 0;\n\n    while (i >= 0) {\n      var zero = true;\n      for (var j = 0; j < len; j++) {\n        tmp[j] = naf[j][i] | 0;\n        if (tmp[j] !== 0)\n          zero = false;\n      }\n      if (!zero)\n        break;\n      k++;\n      i--;\n    }\n    if (i >= 0)\n      k++;\n    acc = acc.dblp(k);\n    if (i < 0)\n      break;\n\n    for (var j = 0; j < len; j++) {\n      var z = tmp[j];\n      var p;\n      if (z === 0)\n        continue;\n      else if (z > 0)\n        p = wnd[j][(z - 1) >> 1];\n      else if (z < 0)\n        p = wnd[j][(-z - 1) >> 1].neg();\n\n      if (p.type === 'affine')\n        acc = acc.mixedAdd(p);\n      else\n        acc = acc.add(p);\n    }\n  }\n  // Zeroify references\n  for (var i = 0; i < len; i++)\n    wnd[i] = null;\n\n  if (jacobianResult)\n    return acc;\n  else\n    return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n  this.curve = curve;\n  this.type = type;\n  this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n  throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n  return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n  bytes = utils.toArray(bytes, enc);\n\n  var len = this.p.byteLength();\n\n  // uncompressed, hybrid-odd, hybrid-even\n  if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n      bytes.length - 1 === 2 * len) {\n    if (bytes[0] === 0x06)\n      assert(bytes[bytes.length - 1] % 2 === 0);\n    else if (bytes[0] === 0x07)\n      assert(bytes[bytes.length - 1] % 2 === 1);\n\n    var res =  this.point(bytes.slice(1, 1 + len),\n                          bytes.slice(1 + len, 1 + 2 * len));\n\n    return res;\n  } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n              bytes.length - 1 === len) {\n    return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n  }\n  throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n  return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n  var len = this.curve.p.byteLength();\n  var x = this.getX().toArray('be', len);\n\n  if (compact)\n    return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n  return [ 0x04 ].concat(x, this.getY().toArray('be', len)) ;\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n  return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n  if (this.precomputed)\n    return this;\n\n  var precomputed = {\n    doubles: null,\n    naf: null,\n    beta: null\n  };\n  precomputed.naf = this._getNAFPoints(8);\n  precomputed.doubles = this._getDoubles(4, power);\n  precomputed.beta = this._getBeta();\n  this.precomputed = precomputed;\n\n  return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n  if (!this.precomputed)\n    return false;\n\n  var doubles = this.precomputed.doubles;\n  if (!doubles)\n    return false;\n\n  return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n  if (this.precomputed && this.precomputed.doubles)\n    return this.precomputed.doubles;\n\n  var doubles = [ this ];\n  var acc = this;\n  for (var i = 0; i < power; i += step) {\n    for (var j = 0; j < step; j++)\n      acc = acc.dbl();\n    doubles.push(acc);\n  }\n  return {\n    step: step,\n    points: doubles\n  };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n  if (this.precomputed && this.precomputed.naf)\n    return this.precomputed.naf;\n\n  var res = [ this ];\n  var max = (1 << wnd) - 1;\n  var dbl = max === 1 ? null : this.dbl();\n  for (var i = 1; i < max; i++)\n    res[i] = res[i - 1].add(dbl);\n  return {\n    wnd: wnd,\n    points: res\n  };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n  return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n  var r = this;\n  for (var i = 0; i < k; i++)\n    r = r.dbl();\n  return r;\n};\n","'use strict';\n\nvar curve = require('../curve');\nvar elliptic = require('../../elliptic');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = curve.base;\n\nvar assert = elliptic.utils.assert;\n\nfunction ShortCurve(conf) {\n  Base.call(this, 'short', conf);\n\n  this.a = new BN(conf.a, 16).toRed(this.red);\n  this.b = new BN(conf.b, 16).toRed(this.red);\n  this.tinv = this.two.redInvm();\n\n  this.zeroA = this.a.fromRed().cmpn(0) === 0;\n  this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n  // If the curve is endomorphic, precalculate beta and lambda\n  this.endo = this._getEndomorphism(conf);\n  this._endoWnafT1 = new Array(4);\n  this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n  // No efficient endomorphism\n  if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n    return;\n\n  // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n  var beta;\n  var lambda;\n  if (conf.beta) {\n    beta = new BN(conf.beta, 16).toRed(this.red);\n  } else {\n    var betas = this._getEndoRoots(this.p);\n    // Choose the smallest beta\n    beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n    beta = beta.toRed(this.red);\n  }\n  if (conf.lambda) {\n    lambda = new BN(conf.lambda, 16);\n  } else {\n    // Choose the lambda that is matching selected beta\n    var lambdas = this._getEndoRoots(this.n);\n    if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n      lambda = lambdas[0];\n    } else {\n      lambda = lambdas[1];\n      assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n    }\n  }\n\n  // Get basis vectors, used for balanced length-two representation\n  var basis;\n  if (conf.basis) {\n    basis = conf.basis.map(function(vec) {\n      return {\n        a: new BN(vec.a, 16),\n        b: new BN(vec.b, 16)\n      };\n    });\n  } else {\n    basis = this._getEndoBasis(lambda);\n  }\n\n  return {\n    beta: beta,\n    lambda: lambda,\n    basis: basis\n  };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n  // Find roots of for x^2 + x + 1 in F\n  // Root = (-1 +- Sqrt(-3)) / 2\n  //\n  var red = num === this.p ? this.red : BN.mont(num);\n  var tinv = new BN(2).toRed(red).redInvm();\n  var ntinv = tinv.redNeg();\n\n  var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n  var l1 = ntinv.redAdd(s).fromRed();\n  var l2 = ntinv.redSub(s).fromRed();\n  return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n  // aprxSqrt >= sqrt(this.n)\n  var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n  // 3.74\n  // Run EGCD, until r(L + 1) < aprxSqrt\n  var u = lambda;\n  var v = this.n.clone();\n  var x1 = new BN(1);\n  var y1 = new BN(0);\n  var x2 = new BN(0);\n  var y2 = new BN(1);\n\n  // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n  var a0;\n  var b0;\n  // First vector\n  var a1;\n  var b1;\n  // Second vector\n  var a2;\n  var b2;\n\n  var prevR;\n  var i = 0;\n  var r;\n  var x;\n  while (u.cmpn(0) !== 0) {\n    var q = v.div(u);\n    r = v.sub(q.mul(u));\n    x = x2.sub(q.mul(x1));\n    var y = y2.sub(q.mul(y1));\n\n    if (!a1 && r.cmp(aprxSqrt) < 0) {\n      a0 = prevR.neg();\n      b0 = x1;\n      a1 = r.neg();\n      b1 = x;\n    } else if (a1 && ++i === 2) {\n      break;\n    }\n    prevR = r;\n\n    v = u;\n    u = r;\n    x2 = x1;\n    x1 = x;\n    y2 = y1;\n    y1 = y;\n  }\n  a2 = r.neg();\n  b2 = x;\n\n  var len1 = a1.sqr().add(b1.sqr());\n  var len2 = a2.sqr().add(b2.sqr());\n  if (len2.cmp(len1) >= 0) {\n    a2 = a0;\n    b2 = b0;\n  }\n\n  // Normalize signs\n  if (a1.negative) {\n    a1 = a1.neg();\n    b1 = b1.neg();\n  }\n  if (a2.negative) {\n    a2 = a2.neg();\n    b2 = b2.neg();\n  }\n\n  return [\n    { a: a1, b: b1 },\n    { a: a2, b: b2 }\n  ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n  var basis = this.endo.basis;\n  var v1 = basis[0];\n  var v2 = basis[1];\n\n  var c1 = v2.b.mul(k).divRound(this.n);\n  var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n  var p1 = c1.mul(v1.a);\n  var p2 = c2.mul(v2.a);\n  var q1 = c1.mul(v1.b);\n  var q2 = c2.mul(v2.b);\n\n  // Calculate answer\n  var k1 = k.sub(p1).sub(p2);\n  var k2 = q1.add(q2).neg();\n  return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n  x = new BN(x, 16);\n  if (!x.red)\n    x = x.toRed(this.red);\n\n  var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n  var y = y2.redSqrt();\n  if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n    throw new Error('invalid point');\n\n  // XXX Is there any way to tell if the number is odd without converting it\n  // to non-red form?\n  var isOdd = y.fromRed().isOdd();\n  if (odd && !isOdd || !odd && isOdd)\n    y = y.redNeg();\n\n  return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n  if (point.inf)\n    return true;\n\n  var x = point.x;\n  var y = point.y;\n\n  var ax = this.a.redMul(x);\n  var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n  return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n    function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n  var npoints = this._endoWnafT1;\n  var ncoeffs = this._endoWnafT2;\n  for (var i = 0; i < points.length; i++) {\n    var split = this._endoSplit(coeffs[i]);\n    var p = points[i];\n    var beta = p._getBeta();\n\n    if (split.k1.negative) {\n      split.k1.ineg();\n      p = p.neg(true);\n    }\n    if (split.k2.negative) {\n      split.k2.ineg();\n      beta = beta.neg(true);\n    }\n\n    npoints[i * 2] = p;\n    npoints[i * 2 + 1] = beta;\n    ncoeffs[i * 2] = split.k1;\n    ncoeffs[i * 2 + 1] = split.k2;\n  }\n  var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n  // Clean-up references to points and coefficients\n  for (var j = 0; j < i * 2; j++) {\n    npoints[j] = null;\n    ncoeffs[j] = null;\n  }\n  return res;\n};\n\nfunction Point(curve, x, y, isRed) {\n  Base.BasePoint.call(this, curve, 'affine');\n  if (x === null && y === null) {\n    this.x = null;\n    this.y = null;\n    this.inf = true;\n  } else {\n    this.x = new BN(x, 16);\n    this.y = new BN(y, 16);\n    // Force redgomery representation when loading from JSON\n    if (isRed) {\n      this.x.forceRed(this.curve.red);\n      this.y.forceRed(this.curve.red);\n    }\n    if (!this.x.red)\n      this.x = this.x.toRed(this.curve.red);\n    if (!this.y.red)\n      this.y = this.y.toRed(this.curve.red);\n    this.inf = false;\n  }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n  return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n  return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n  if (!this.curve.endo)\n    return;\n\n  var pre = this.precomputed;\n  if (pre && pre.beta)\n    return pre.beta;\n\n  var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n  if (pre) {\n    var curve = this.curve;\n    var endoMul = function(p) {\n      return curve.point(p.x.redMul(curve.endo.beta), p.y);\n    };\n    pre.beta = beta;\n    beta.precomputed = {\n      beta: null,\n      naf: pre.naf && {\n        wnd: pre.naf.wnd,\n        points: pre.naf.points.map(endoMul)\n      },\n      doubles: pre.doubles && {\n        step: pre.doubles.step,\n        points: pre.doubles.points.map(endoMul)\n      }\n    };\n  }\n  return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n  if (!this.precomputed)\n    return [ this.x, this.y ];\n\n  return [ this.x, this.y, this.precomputed && {\n    doubles: this.precomputed.doubles && {\n      step: this.precomputed.doubles.step,\n      points: this.precomputed.doubles.points.slice(1)\n    },\n    naf: this.precomputed.naf && {\n      wnd: this.precomputed.naf.wnd,\n      points: this.precomputed.naf.points.slice(1)\n    }\n  } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n  if (typeof obj === 'string')\n    obj = JSON.parse(obj);\n  var res = curve.point(obj[0], obj[1], red);\n  if (!obj[2])\n    return res;\n\n  function obj2point(obj) {\n    return curve.point(obj[0], obj[1], red);\n  }\n\n  var pre = obj[2];\n  res.precomputed = {\n    beta: null,\n    doubles: pre.doubles && {\n      step: pre.doubles.step,\n      points: [ res ].concat(pre.doubles.points.map(obj2point))\n    },\n    naf: pre.naf && {\n      wnd: pre.naf.wnd,\n      points: [ res ].concat(pre.naf.points.map(obj2point))\n    }\n  };\n  return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n  if (this.isInfinity())\n    return '<EC Point Infinity>';\n  return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n      ' y: ' + this.y.fromRed().toString(16, 2) + '>';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n  return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n  // O + P = P\n  if (this.inf)\n    return p;\n\n  // P + O = P\n  if (p.inf)\n    return this;\n\n  // P + P = 2P\n  if (this.eq(p))\n    return this.dbl();\n\n  // P + (-P) = O\n  if (this.neg().eq(p))\n    return this.curve.point(null, null);\n\n  // P + Q = O\n  if (this.x.cmp(p.x) === 0)\n    return this.curve.point(null, null);\n\n  var c = this.y.redSub(p.y);\n  if (c.cmpn(0) !== 0)\n    c = c.redMul(this.x.redSub(p.x).redInvm());\n  var nx = c.redSqr().redISub(this.x).redISub(p.x);\n  var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n  return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n  if (this.inf)\n    return this;\n\n  // 2P = O\n  var ys1 = this.y.redAdd(this.y);\n  if (ys1.cmpn(0) === 0)\n    return this.curve.point(null, null);\n\n  var a = this.curve.a;\n\n  var x2 = this.x.redSqr();\n  var dyinv = ys1.redInvm();\n  var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n  var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n  var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n  return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n  return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n  return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n  k = new BN(k, 16);\n\n  if (this._hasDoubles(k))\n    return this.curve._fixedNafMul(this, k);\n  else if (this.curve.endo)\n    return this.curve._endoWnafMulAdd([ this ], [ k ]);\n  else\n    return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n  var points = [ this, p2 ];\n  var coeffs = [ k1, k2 ];\n  if (this.curve.endo)\n    return this.curve._endoWnafMulAdd(points, coeffs);\n  else\n    return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n  var points = [ this, p2 ];\n  var coeffs = [ k1, k2 ];\n  if (this.curve.endo)\n    return this.curve._endoWnafMulAdd(points, coeffs, true);\n  else\n    return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n  return this === p ||\n         this.inf === p.inf &&\n             (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n  if (this.inf)\n    return this;\n\n  var res = this.curve.point(this.x, this.y.redNeg());\n  if (_precompute && this.precomputed) {\n    var pre = this.precomputed;\n    var negate = function(p) {\n      return p.neg();\n    };\n    res.precomputed = {\n      naf: pre.naf && {\n        wnd: pre.naf.wnd,\n        points: pre.naf.points.map(negate)\n      },\n      doubles: pre.doubles && {\n        step: pre.doubles.step,\n        points: pre.doubles.points.map(negate)\n      }\n    };\n  }\n  return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n  if (this.inf)\n    return this.curve.jpoint(null, null, null);\n\n  var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n  return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n  Base.BasePoint.call(this, curve, 'jacobian');\n  if (x === null && y === null && z === null) {\n    this.x = this.curve.one;\n    this.y = this.curve.one;\n    this.z = new BN(0);\n  } else {\n    this.x = new BN(x, 16);\n    this.y = new BN(y, 16);\n    this.z = new BN(z, 16);\n  }\n  if (!this.x.red)\n    this.x = this.x.toRed(this.curve.red);\n  if (!this.y.red)\n    this.y = this.y.toRed(this.curve.red);\n  if (!this.z.red)\n    this.z = this.z.toRed(this.curve.red);\n\n  this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n  return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n  if (this.isInfinity())\n    return this.curve.point(null, null);\n\n  var zinv = this.z.redInvm();\n  var zinv2 = zinv.redSqr();\n  var ax = this.x.redMul(zinv2);\n  var ay = this.y.redMul(zinv2).redMul(zinv);\n\n  return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n  return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n  // O + P = P\n  if (this.isInfinity())\n    return p;\n\n  // P + O = P\n  if (p.isInfinity())\n    return this;\n\n  // 12M + 4S + 7A\n  var pz2 = p.z.redSqr();\n  var z2 = this.z.redSqr();\n  var u1 = this.x.redMul(pz2);\n  var u2 = p.x.redMul(z2);\n  var s1 = this.y.redMul(pz2.redMul(p.z));\n  var s2 = p.y.redMul(z2.redMul(this.z));\n\n  var h = u1.redSub(u2);\n  var r = s1.redSub(s2);\n  if (h.cmpn(0) === 0) {\n    if (r.cmpn(0) !== 0)\n      return this.curve.jpoint(null, null, null);\n    else\n      return this.dbl();\n  }\n\n  var h2 = h.redSqr();\n  var h3 = h2.redMul(h);\n  var v = u1.redMul(h2);\n\n  var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n  var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n  var nz = this.z.redMul(p.z).redMul(h);\n\n  return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n  // O + P = P\n  if (this.isInfinity())\n    return p.toJ();\n\n  // P + O = P\n  if (p.isInfinity())\n    return this;\n\n  // 8M + 3S + 7A\n  var z2 = this.z.redSqr();\n  var u1 = this.x;\n  var u2 = p.x.redMul(z2);\n  var s1 = this.y;\n  var s2 = p.y.redMul(z2).redMul(this.z);\n\n  var h = u1.redSub(u2);\n  var r = s1.redSub(s2);\n  if (h.cmpn(0) === 0) {\n    if (r.cmpn(0) !== 0)\n      return this.curve.jpoint(null, null, null);\n    else\n      return this.dbl();\n  }\n\n  var h2 = h.redSqr();\n  var h3 = h2.redMul(h);\n  var v = u1.redMul(h2);\n\n  var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n  var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n  var nz = this.z.redMul(h);\n\n  return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n  if (pow === 0)\n    return this;\n  if (this.isInfinity())\n    return this;\n  if (!pow)\n    return this.dbl();\n\n  if (this.curve.zeroA || this.curve.threeA) {\n    var r = this;\n    for (var i = 0; i < pow; i++)\n      r = r.dbl();\n    return r;\n  }\n\n  // 1M + 2S + 1A + N * (4S + 5M + 8A)\n  // N = 1 => 6M + 6S + 9A\n  var a = this.curve.a;\n  var tinv = this.curve.tinv;\n\n  var jx = this.x;\n  var jy = this.y;\n  var jz = this.z;\n  var jz4 = jz.redSqr().redSqr();\n\n  // Reuse results\n  var jyd = jy.redAdd(jy);\n  for (var i = 0; i < pow; i++) {\n    var jx2 = jx.redSqr();\n    var jyd2 = jyd.redSqr();\n    var jyd4 = jyd2.redSqr();\n    var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n    var t1 = jx.redMul(jyd2);\n    var nx = c.redSqr().redISub(t1.redAdd(t1));\n    var t2 = t1.redISub(nx);\n    var dny = c.redMul(t2);\n    dny = dny.redIAdd(dny).redISub(jyd4);\n    var nz = jyd.redMul(jz);\n    if (i + 1 < pow)\n      jz4 = jz4.redMul(jyd4);\n\n    jx = nx;\n    jz = nz;\n    jyd = dny;\n  }\n\n  return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n  if (this.isInfinity())\n    return this;\n\n  if (this.curve.zeroA)\n    return this._zeroDbl();\n  else if (this.curve.threeA)\n    return this._threeDbl();\n  else\n    return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n  var nx;\n  var ny;\n  var nz;\n  // Z = 1\n  if (this.zOne) {\n    // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n    //     #doubling-mdbl-2007-bl\n    // 1M + 5S + 14A\n\n    // XX = X1^2\n    var xx = this.x.redSqr();\n    // YY = Y1^2\n    var yy = this.y.redSqr();\n    // YYYY = YY^2\n    var yyyy = yy.redSqr();\n    // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n    var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n    s = s.redIAdd(s);\n    // M = 3 * XX + a; a = 0\n    var m = xx.redAdd(xx).redIAdd(xx);\n    // T = M ^ 2 - 2*S\n    var t = m.redSqr().redISub(s).redISub(s);\n\n    // 8 * YYYY\n    var yyyy8 = yyyy.redIAdd(yyyy);\n    yyyy8 = yyyy8.redIAdd(yyyy8);\n    yyyy8 = yyyy8.redIAdd(yyyy8);\n\n    // X3 = T\n    nx = t;\n    // Y3 = M * (S - T) - 8 * YYYY\n    ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n    // Z3 = 2*Y1\n    nz = this.y.redAdd(this.y);\n  } else {\n    // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n    //     #doubling-dbl-2009-l\n    // 2M + 5S + 13A\n\n    // A = X1^2\n    var a = this.x.redSqr();\n    // B = Y1^2\n    var b = this.y.redSqr();\n    // C = B^2\n    var c = b.redSqr();\n    // D = 2 * ((X1 + B)^2 - A - C)\n    var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n    d = d.redIAdd(d);\n    // E = 3 * A\n    var e = a.redAdd(a).redIAdd(a);\n    // F = E^2\n    var f = e.redSqr();\n\n    // 8 * C\n    var c8 = c.redIAdd(c);\n    c8 = c8.redIAdd(c8);\n    c8 = c8.redIAdd(c8);\n\n    // X3 = F - 2 * D\n    nx = f.redISub(d).redISub(d);\n    // Y3 = E * (D - X3) - 8 * C\n    ny = e.redMul(d.redISub(nx)).redISub(c8);\n    // Z3 = 2 * Y1 * Z1\n    nz = this.y.redMul(this.z);\n    nz = nz.redIAdd(nz);\n  }\n\n  return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n  var nx;\n  var ny;\n  var nz;\n  // Z = 1\n  if (this.zOne) {\n    // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n    //     #doubling-mdbl-2007-bl\n    // 1M + 5S + 15A\n\n    // XX = X1^2\n    var xx = this.x.redSqr();\n    // YY = Y1^2\n    var yy = this.y.redSqr();\n    // YYYY = YY^2\n    var yyyy = yy.redSqr();\n    // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n    var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n    s = s.redIAdd(s);\n    // M = 3 * XX + a\n    var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n    // T = M^2 - 2 * S\n    var t = m.redSqr().redISub(s).redISub(s);\n    // X3 = T\n    nx = t;\n    // Y3 = M * (S - T) - 8 * YYYY\n    var yyyy8 = yyyy.redIAdd(yyyy);\n    yyyy8 = yyyy8.redIAdd(yyyy8);\n    yyyy8 = yyyy8.redIAdd(yyyy8);\n    ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n    // Z3 = 2 * Y1\n    nz = this.y.redAdd(this.y);\n  } else {\n    // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n    // 3M + 5S\n\n    // delta = Z1^2\n    var delta = this.z.redSqr();\n    // gamma = Y1^2\n    var gamma = this.y.redSqr();\n    // beta = X1 * gamma\n    var beta = this.x.redMul(gamma);\n    // alpha = 3 * (X1 - delta) * (X1 + delta)\n    var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n    alpha = alpha.redAdd(alpha).redIAdd(alpha);\n    // X3 = alpha^2 - 8 * beta\n    var beta4 = beta.redIAdd(beta);\n    beta4 = beta4.redIAdd(beta4);\n    var beta8 = beta4.redAdd(beta4);\n    nx = alpha.redSqr().redISub(beta8);\n    // Z3 = (Y1 + Z1)^2 - gamma - delta\n    nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n    // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n    var ggamma8 = gamma.redSqr();\n    ggamma8 = ggamma8.redIAdd(ggamma8);\n    ggamma8 = ggamma8.redIAdd(ggamma8);\n    ggamma8 = ggamma8.redIAdd(ggamma8);\n    ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n  }\n\n  return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n  var a = this.curve.a;\n\n  // 4M + 6S + 10A\n  var jx = this.x;\n  var jy = this.y;\n  var jz = this.z;\n  var jz4 = jz.redSqr().redSqr();\n\n  var jx2 = jx.redSqr();\n  var jy2 = jy.redSqr();\n\n  var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n  var jxd4 = jx.redAdd(jx);\n  jxd4 = jxd4.redIAdd(jxd4);\n  var t1 = jxd4.redMul(jy2);\n  var nx = c.redSqr().redISub(t1.redAdd(t1));\n  var t2 = t1.redISub(nx);\n\n  var jyd8 = jy2.redSqr();\n  jyd8 = jyd8.redIAdd(jyd8);\n  jyd8 = jyd8.redIAdd(jyd8);\n  jyd8 = jyd8.redIAdd(jyd8);\n  var ny = c.redMul(t2).redISub(jyd8);\n  var nz = jy.redAdd(jy).redMul(jz);\n\n  return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n  if (!this.curve.zeroA)\n    return this.dbl().add(this);\n\n  // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n  // 5M + 10S + ...\n\n  // XX = X1^2\n  var xx = this.x.redSqr();\n  // YY = Y1^2\n  var yy = this.y.redSqr();\n  // ZZ = Z1^2\n  var zz = this.z.redSqr();\n  // YYYY = YY^2\n  var yyyy = yy.redSqr();\n  // M = 3 * XX + a * ZZ2; a = 0\n  var m = xx.redAdd(xx).redIAdd(xx);\n  // MM = M^2\n  var mm = m.redSqr();\n  // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n  var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n  e = e.redIAdd(e);\n  e = e.redAdd(e).redIAdd(e);\n  e = e.redISub(mm);\n  // EE = E^2\n  var ee = e.redSqr();\n  // T = 16*YYYY\n  var t = yyyy.redIAdd(yyyy);\n  t = t.redIAdd(t);\n  t = t.redIAdd(t);\n  t = t.redIAdd(t);\n  // U = (M + E)^2 - MM - EE - T\n  var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n  // X3 = 4 * (X1 * EE - 4 * YY * U)\n  var yyu4 = yy.redMul(u);\n  yyu4 = yyu4.redIAdd(yyu4);\n  yyu4 = yyu4.redIAdd(yyu4);\n  var nx = this.x.redMul(ee).redISub(yyu4);\n  nx = nx.redIAdd(nx);\n  nx = nx.redIAdd(nx);\n  // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n  var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n  ny = ny.redIAdd(ny);\n  ny = ny.redIAdd(ny);\n  ny = ny.redIAdd(ny);\n  // Z3 = (Z1 + E)^2 - ZZ - EE\n  var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n  return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n  k = new BN(k, kbase);\n\n  return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n  if (p.type === 'affine')\n    return this.eq(p.toJ());\n\n  if (this === p)\n    return true;\n\n  // x1 * z2^2 == x2 * z1^2\n  var z2 = this.z.redSqr();\n  var pz2 = p.z.redSqr();\n  if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n    return false;\n\n  // y1 * z2^3 == y2 * z1^3\n  var z3 = z2.redMul(this.z);\n  var pz3 = pz2.redMul(p.z);\n  return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n  var zs = this.z.redSqr();\n  var rx = x.toRed(this.curve.red).redMul(zs);\n  if (this.x.cmp(rx) === 0)\n    return true;\n\n  var xc = x.clone();\n  var t = this.curve.redN.redMul(zs);\n  for (;;) {\n    xc.iadd(this.curve.n);\n    if (xc.cmp(this.curve.p) >= 0)\n      return false;\n\n    rx.redIAdd(t);\n    if (this.x.cmp(rx) === 0)\n      return true;\n  }\n};\n\nJPoint.prototype.inspect = function inspect() {\n  if (this.isInfinity())\n    return '<EC JPoint Infinity>';\n  return '<EC JPoint x: ' + this.x.toString(16, 2) +\n      ' y: ' + this.y.toString(16, 2) +\n      ' z: ' + this.z.toString(16, 2) + '>';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n  // XXX This code assumes that zero is always zero in red\n  return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar curve = require('../curve');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = curve.base;\n\nvar elliptic = require('../../elliptic');\nvar utils = elliptic.utils;\n\nfunction MontCurve(conf) {\n  Base.call(this, 'mont', conf);\n\n  this.a = new BN(conf.a, 16).toRed(this.red);\n  this.b = new BN(conf.b, 16).toRed(this.red);\n  this.i4 = new BN(4).toRed(this.red).redInvm();\n  this.two = new BN(2).toRed(this.red);\n  this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n  var x = point.normalize().x;\n  var x2 = x.redSqr();\n  var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n  var y = rhs.redSqrt();\n\n  return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n  Base.BasePoint.call(this, curve, 'projective');\n  if (x === null && z === null) {\n    this.x = this.curve.one;\n    this.z = this.curve.zero;\n  } else {\n    this.x = new BN(x, 16);\n    this.z = new BN(z, 16);\n    if (!this.x.red)\n      this.x = this.x.toRed(this.curve.red);\n    if (!this.z.red)\n      this.z = this.z.toRed(this.curve.red);\n  }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n  return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n  return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n  return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n  // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n  return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n  return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n  if (this.isInfinity())\n    return '<EC Point Infinity>';\n  return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n      ' z: ' + this.z.fromRed().toString(16, 2) + '>';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n  // XXX This code assumes that zero is always zero in red\n  return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n  // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n  // 2M + 2S + 4A\n\n  // A = X1 + Z1\n  var a = this.x.redAdd(this.z);\n  // AA = A^2\n  var aa = a.redSqr();\n  // B = X1 - Z1\n  var b = this.x.redSub(this.z);\n  // BB = B^2\n  var bb = b.redSqr();\n  // C = AA - BB\n  var c = aa.redSub(bb);\n  // X3 = AA * BB\n  var nx = aa.redMul(bb);\n  // Z3 = C * (BB + A24 * C)\n  var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n  return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n  throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n  // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n  // 4M + 2S + 6A\n\n  // A = X2 + Z2\n  var a = this.x.redAdd(this.z);\n  // B = X2 - Z2\n  var b = this.x.redSub(this.z);\n  // C = X3 + Z3\n  var c = p.x.redAdd(p.z);\n  // D = X3 - Z3\n  var d = p.x.redSub(p.z);\n  // DA = D * A\n  var da = d.redMul(a);\n  // CB = C * B\n  var cb = c.redMul(b);\n  // X5 = Z1 * (DA + CB)^2\n  var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n  // Z5 = X1 * (DA - CB)^2\n  var nz = diff.x.redMul(da.redISub(cb).redSqr());\n  return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n  var t = k.clone();\n  var a = this; // (N / 2) * Q + Q\n  var b = this.curve.point(null, null); // (N / 2) * Q\n  var c = this; // Q\n\n  for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n    bits.push(t.andln(1));\n\n  for (var i = bits.length - 1; i >= 0; i--) {\n    if (bits[i] === 0) {\n      // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n      a = a.diffAdd(b, c);\n      // N * Q = 2 * ((N / 2) * Q + Q))\n      b = b.dbl();\n    } else {\n      // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n      b = a.diffAdd(b, c);\n      // N * Q + Q = 2 * ((N / 2) * Q + Q)\n      a = a.dbl();\n    }\n  }\n  return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n  throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n  throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n  return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n  this.x = this.x.redMul(this.z.redInvm());\n  this.z = this.curve.one;\n  return this;\n};\n\nPoint.prototype.getX = function getX() {\n  // Normalize coordinates\n  this.normalize();\n\n  return this.x.fromRed();\n};\n","'use strict';\n\nvar curve = require('../curve');\nvar elliptic = require('../../elliptic');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = curve.base;\n\nvar assert = elliptic.utils.assert;\n\nfunction EdwardsCurve(conf) {\n  // NOTE: Important as we are creating point in Base.call()\n  this.twisted = (conf.a | 0) !== 1;\n  this.mOneA = this.twisted && (conf.a | 0) === -1;\n  this.extended = this.mOneA;\n\n  Base.call(this, 'edwards', conf);\n\n  this.a = new BN(conf.a, 16).umod(this.red.m);\n  this.a = this.a.toRed(this.red);\n  this.c = new BN(conf.c, 16).toRed(this.red);\n  this.c2 = this.c.redSqr();\n  this.d = new BN(conf.d, 16).toRed(this.red);\n  this.dd = this.d.redAdd(this.d);\n\n  assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n  this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n  if (this.mOneA)\n    return num.redNeg();\n  else\n    return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n  if (this.oneC)\n    return num;\n  else\n    return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n  return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n  x = new BN(x, 16);\n  if (!x.red)\n    x = x.toRed(this.red);\n\n  var x2 = x.redSqr();\n  var rhs = this.c2.redSub(this.a.redMul(x2));\n  var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n  var y2 = rhs.redMul(lhs.redInvm());\n  var y = y2.redSqrt();\n  if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n    throw new Error('invalid point');\n\n  var isOdd = y.fromRed().isOdd();\n  if (odd && !isOdd || !odd && isOdd)\n    y = y.redNeg();\n\n  return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n  y = new BN(y, 16);\n  if (!y.red)\n    y = y.toRed(this.red);\n\n  // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n  var y2 = y.redSqr();\n  var lhs = y2.redSub(this.c2);\n  var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n  var x2 = lhs.redMul(rhs.redInvm());\n\n  if (x2.cmp(this.zero) === 0) {\n    if (odd)\n      throw new Error('invalid point');\n    else\n      return this.point(this.zero, y);\n  }\n\n  var x = x2.redSqrt();\n  if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n    throw new Error('invalid point');\n\n  if (x.fromRed().isOdd() !== odd)\n    x = x.redNeg();\n\n  return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n  if (point.isInfinity())\n    return true;\n\n  // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n  point.normalize();\n\n  var x2 = point.x.redSqr();\n  var y2 = point.y.redSqr();\n  var lhs = x2.redMul(this.a).redAdd(y2);\n  var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n  return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n  Base.BasePoint.call(this, curve, 'projective');\n  if (x === null && y === null && z === null) {\n    this.x = this.curve.zero;\n    this.y = this.curve.one;\n    this.z = this.curve.one;\n    this.t = this.curve.zero;\n    this.zOne = true;\n  } else {\n    this.x = new BN(x, 16);\n    this.y = new BN(y, 16);\n    this.z = z ? new BN(z, 16) : this.curve.one;\n    this.t = t && new BN(t, 16);\n    if (!this.x.red)\n      this.x = this.x.toRed(this.curve.red);\n    if (!this.y.red)\n      this.y = this.y.toRed(this.curve.red);\n    if (!this.z.red)\n      this.z = this.z.toRed(this.curve.red);\n    if (this.t && !this.t.red)\n      this.t = this.t.toRed(this.curve.red);\n    this.zOne = this.z === this.curve.one;\n\n    // Use extended coordinates\n    if (this.curve.extended && !this.t) {\n      this.t = this.x.redMul(this.y);\n      if (!this.zOne)\n        this.t = this.t.redMul(this.z.redInvm());\n    }\n  }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n  return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n  return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n  return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n  if (this.isInfinity())\n    return '<EC Point Infinity>';\n  return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n      ' y: ' + this.y.fromRed().toString(16, 2) +\n      ' z: ' + this.z.fromRed().toString(16, 2) + '>';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n  // XXX This code assumes that zero is always zero in red\n  return this.x.cmpn(0) === 0 &&\n    (this.y.cmp(this.z) === 0 ||\n    (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n  // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n  //     #doubling-dbl-2008-hwcd\n  // 4M + 4S\n\n  // A = X1^2\n  var a = this.x.redSqr();\n  // B = Y1^2\n  var b = this.y.redSqr();\n  // C = 2 * Z1^2\n  var c = this.z.redSqr();\n  c = c.redIAdd(c);\n  // D = a * A\n  var d = this.curve._mulA(a);\n  // E = (X1 + Y1)^2 - A - B\n  var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n  // G = D + B\n  var g = d.redAdd(b);\n  // F = G - C\n  var f = g.redSub(c);\n  // H = D - B\n  var h = d.redSub(b);\n  // X3 = E * F\n  var nx = e.redMul(f);\n  // Y3 = G * H\n  var ny = g.redMul(h);\n  // T3 = E * H\n  var nt = e.redMul(h);\n  // Z3 = F * G\n  var nz = f.redMul(g);\n  return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n  // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n  //     #doubling-dbl-2008-bbjlp\n  //     #doubling-dbl-2007-bl\n  // and others\n  // Generally 3M + 4S or 2M + 4S\n\n  // B = (X1 + Y1)^2\n  var b = this.x.redAdd(this.y).redSqr();\n  // C = X1^2\n  var c = this.x.redSqr();\n  // D = Y1^2\n  var d = this.y.redSqr();\n\n  var nx;\n  var ny;\n  var nz;\n  if (this.curve.twisted) {\n    // E = a * C\n    var e = this.curve._mulA(c);\n    // F = E + D\n    var f = e.redAdd(d);\n    if (this.zOne) {\n      // X3 = (B - C - D) * (F - 2)\n      nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n      // Y3 = F * (E - D)\n      ny = f.redMul(e.redSub(d));\n      // Z3 = F^2 - 2 * F\n      nz = f.redSqr().redSub(f).redSub(f);\n    } else {\n      // H = Z1^2\n      var h = this.z.redSqr();\n      // J = F - 2 * H\n      var j = f.redSub(h).redISub(h);\n      // X3 = (B-C-D)*J\n      nx = b.redSub(c).redISub(d).redMul(j);\n      // Y3 = F * (E - D)\n      ny = f.redMul(e.redSub(d));\n      // Z3 = F * J\n      nz = f.redMul(j);\n    }\n  } else {\n    // E = C + D\n    var e = c.redAdd(d);\n    // H = (c * Z1)^2\n    var h = this.curve._mulC(this.z).redSqr();\n    // J = E - 2 * H\n    var j = e.redSub(h).redSub(h);\n    // X3 = c * (B - E) * J\n    nx = this.curve._mulC(b.redISub(e)).redMul(j);\n    // Y3 = c * E * (C - D)\n    ny = this.curve._mulC(e).redMul(c.redISub(d));\n    // Z3 = E * J\n    nz = e.redMul(j);\n  }\n  return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n  if (this.isInfinity())\n    return this;\n\n  // Double in extended coordinates\n  if (this.curve.extended)\n    return this._extDbl();\n  else\n    return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n  // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n  //     #addition-add-2008-hwcd-3\n  // 8M\n\n  // A = (Y1 - X1) * (Y2 - X2)\n  var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n  // B = (Y1 + X1) * (Y2 + X2)\n  var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n  // C = T1 * k * T2\n  var c = this.t.redMul(this.curve.dd).redMul(p.t);\n  // D = Z1 * 2 * Z2\n  var d = this.z.redMul(p.z.redAdd(p.z));\n  // E = B - A\n  var e = b.redSub(a);\n  // F = D - C\n  var f = d.redSub(c);\n  // G = D + C\n  var g = d.redAdd(c);\n  // H = B + A\n  var h = b.redAdd(a);\n  // X3 = E * F\n  var nx = e.redMul(f);\n  // Y3 = G * H\n  var ny = g.redMul(h);\n  // T3 = E * H\n  var nt = e.redMul(h);\n  // Z3 = F * G\n  var nz = f.redMul(g);\n  return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n  // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n  //     #addition-add-2008-bbjlp\n  //     #addition-add-2007-bl\n  // 10M + 1S\n\n  // A = Z1 * Z2\n  var a = this.z.redMul(p.z);\n  // B = A^2\n  var b = a.redSqr();\n  // C = X1 * X2\n  var c = this.x.redMul(p.x);\n  // D = Y1 * Y2\n  var d = this.y.redMul(p.y);\n  // E = d * C * D\n  var e = this.curve.d.redMul(c).redMul(d);\n  // F = B - E\n  var f = b.redSub(e);\n  // G = B + E\n  var g = b.redAdd(e);\n  // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n  var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n  var nx = a.redMul(f).redMul(tmp);\n  var ny;\n  var nz;\n  if (this.curve.twisted) {\n    // Y3 = A * G * (D - a * C)\n    ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n    // Z3 = F * G\n    nz = f.redMul(g);\n  } else {\n    // Y3 = A * G * (D - C)\n    ny = a.redMul(g).redMul(d.redSub(c));\n    // Z3 = c * F * G\n    nz = this.curve._mulC(f).redMul(g);\n  }\n  return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n  if (this.isInfinity())\n    return p;\n  if (p.isInfinity())\n    return this;\n\n  if (this.curve.extended)\n    return this._extAdd(p);\n  else\n    return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n  if (this._hasDoubles(k))\n    return this.curve._fixedNafMul(this, k);\n  else\n    return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n  return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n  return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n  if (this.zOne)\n    return this;\n\n  // Normalize coordinates\n  var zi = this.z.redInvm();\n  this.x = this.x.redMul(zi);\n  this.y = this.y.redMul(zi);\n  if (this.t)\n    this.t = this.t.redMul(zi);\n  this.z = this.curve.one;\n  this.zOne = true;\n  return this;\n};\n\nPoint.prototype.neg = function neg() {\n  return this.curve.point(this.x.redNeg(),\n                          this.y,\n                          this.z,\n                          this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n  this.normalize();\n  return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n  this.normalize();\n  return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n  return this === other ||\n         this.getX().cmp(other.getX()) === 0 &&\n         this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n  var rx = x.toRed(this.curve.red).redMul(this.z);\n  if (this.x.cmp(rx) === 0)\n    return true;\n\n  var xc = x.clone();\n  var t = this.curve.redN.redMul(this.z);\n  for (;;) {\n    xc.iadd(this.curve.n);\n    if (xc.cmp(this.curve.p) >= 0)\n      return false;\n\n    rx.redIAdd(t);\n    if (this.x.cmp(rx) === 0)\n      return true;\n  }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n","'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction toArray(msg, enc) {\n  if (Array.isArray(msg))\n    return msg.slice();\n  if (!msg)\n    return [];\n  var res = [];\n  if (typeof msg === 'string') {\n    if (!enc) {\n      for (var i = 0; i < msg.length; i++) {\n        var c = msg.charCodeAt(i);\n        var hi = c >> 8;\n        var lo = c & 0xff;\n        if (hi)\n          res.push(hi, lo);\n        else\n          res.push(lo);\n      }\n    } else if (enc === 'hex') {\n      msg = msg.replace(/[^a-z0-9]+/ig, '');\n      if (msg.length % 2 !== 0)\n        msg = '0' + msg;\n      for (i = 0; i < msg.length; i += 2)\n        res.push(parseInt(msg[i] + msg[i + 1], 16));\n    }\n  } else {\n    for (i = 0; i < msg.length; i++)\n      res[i] = msg[i] | 0;\n  }\n  return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n  var res = '';\n  for (var i = 0; i < msg.length; i++)\n    res += zero2(msg[i].toString(16));\n  return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n  var res = (w >>> 24) |\n            ((w >>> 8) & 0xff00) |\n            ((w << 8) & 0xff0000) |\n            ((w & 0xff) << 24);\n  return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n  var res = '';\n  for (var i = 0; i < msg.length; i++) {\n    var w = msg[i];\n    if (endian === 'little')\n      w = htonl(w);\n    res += zero8(w.toString(16));\n  }\n  return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n  if (word.length === 1)\n    return '0' + word;\n  else\n    return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n  if (word.length === 7)\n    return '0' + word;\n  else if (word.length === 6)\n    return '00' + word;\n  else if (word.length === 5)\n    return '000' + word;\n  else if (word.length === 4)\n    return '0000' + word;\n  else if (word.length === 3)\n    return '00000' + word;\n  else if (word.length === 2)\n    return '000000' + word;\n  else if (word.length === 1)\n    return '0000000' + word;\n  else\n    return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n  var len = end - start;\n  assert(len % 4 === 0);\n  var res = new Array(len / 4);\n  for (var i = 0, k = start; i < res.length; i++, k += 4) {\n    var w;\n    if (endian === 'big')\n      w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n    else\n      w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n    res[i] = w >>> 0;\n  }\n  return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n  var res = new Array(msg.length * 4);\n  for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n    var m = msg[i];\n    if (endian === 'big') {\n      res[k] = m >>> 24;\n      res[k + 1] = (m >>> 16) & 0xff;\n      res[k + 2] = (m >>> 8) & 0xff;\n      res[k + 3] = m & 0xff;\n    } else {\n      res[k + 3] = m >>> 24;\n      res[k + 2] = (m >>> 16) & 0xff;\n      res[k + 1] = (m >>> 8) & 0xff;\n      res[k] = m & 0xff;\n    }\n  }\n  return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n  return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n  return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n  return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n  return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n  return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n  return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n  var bh = buf[pos];\n  var bl = buf[pos + 1];\n\n  var lo = (al + bl) >>> 0;\n  var hi = (lo < al ? 1 : 0) + ah + bh;\n  buf[pos] = hi >>> 0;\n  buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n  var lo = (al + bl) >>> 0;\n  var hi = (lo < al ? 1 : 0) + ah + bh;\n  return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n  var lo = al + bl;\n  return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n  var carry = 0;\n  var lo = al;\n  lo = (lo + bl) >>> 0;\n  carry += lo < al ? 1 : 0;\n  lo = (lo + cl) >>> 0;\n  carry += lo < cl ? 1 : 0;\n  lo = (lo + dl) >>> 0;\n  carry += lo < dl ? 1 : 0;\n\n  var hi = ah + bh + ch + dh + carry;\n  return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n  var lo = al + bl + cl + dl;\n  return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n  var carry = 0;\n  var lo = al;\n  lo = (lo + bl) >>> 0;\n  carry += lo < al ? 1 : 0;\n  lo = (lo + cl) >>> 0;\n  carry += lo < cl ? 1 : 0;\n  lo = (lo + dl) >>> 0;\n  carry += lo < dl ? 1 : 0;\n  lo = (lo + el) >>> 0;\n  carry += lo < el ? 1 : 0;\n\n  var hi = ah + bh + ch + dh + eh + carry;\n  return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n  var lo = al + bl + cl + dl + el;\n\n  return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n  var r = (al << (32 - num)) | (ah >>> num);\n  return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n  var r = (ah << (32 - num)) | (al >>> num);\n  return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n  return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n  var r = (ah << (32 - num)) | (al >>> num);\n  return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n  this.pending = null;\n  this.pendingTotal = 0;\n  this.blockSize = this.constructor.blockSize;\n  this.outSize = this.constructor.outSize;\n  this.hmacStrength = this.constructor.hmacStrength;\n  this.padLength = this.constructor.padLength / 8;\n  this.endian = 'big';\n\n  this._delta8 = this.blockSize / 8;\n  this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n  // Convert message to array, pad it, and join into 32bit blocks\n  msg = utils.toArray(msg, enc);\n  if (!this.pending)\n    this.pending = msg;\n  else\n    this.pending = this.pending.concat(msg);\n  this.pendingTotal += msg.length;\n\n  // Enough data, try updating\n  if (this.pending.length >= this._delta8) {\n    msg = this.pending;\n\n    // Process pending data in blocks\n    var r = msg.length % this._delta8;\n    this.pending = msg.slice(msg.length - r, msg.length);\n    if (this.pending.length === 0)\n      this.pending = null;\n\n    msg = utils.join32(msg, 0, msg.length - r, this.endian);\n    for (var i = 0; i < msg.length; i += this._delta32)\n      this._update(msg, i, i + this._delta32);\n  }\n\n  return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n  this.update(this._pad());\n  assert(this.pending === null);\n\n  return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n  var len = this.pendingTotal;\n  var bytes = this._delta8;\n  var k = bytes - ((len + this.padLength) % bytes);\n  var res = new Array(k + this.padLength);\n  res[0] = 0x80;\n  for (var i = 1; i < k; i++)\n    res[i] = 0;\n\n  // Append length\n  len <<= 3;\n  if (this.endian === 'big') {\n    for (var t = 8; t < this.padLength; t++)\n      res[i++] = 0;\n\n    res[i++] = 0;\n    res[i++] = 0;\n    res[i++] = 0;\n    res[i++] = 0;\n    res[i++] = (len >>> 24) & 0xff;\n    res[i++] = (len >>> 16) & 0xff;\n    res[i++] = (len >>> 8) & 0xff;\n    res[i++] = len & 0xff;\n  } else {\n    res[i++] = len & 0xff;\n    res[i++] = (len >>> 8) & 0xff;\n    res[i++] = (len >>> 16) & 0xff;\n    res[i++] = (len >>> 24) & 0xff;\n    res[i++] = 0;\n    res[i++] = 0;\n    res[i++] = 0;\n    res[i++] = 0;\n\n    for (t = 8; t < this.padLength; t++)\n      res[i++] = 0;\n  }\n\n  return res;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n  if (s === 0)\n    return ch32(x, y, z);\n  if (s === 1 || s === 3)\n    return p32(x, y, z);\n  if (s === 2)\n    return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n  return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n  return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n  return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n  return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n  return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n  return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n  return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n  0x5A827999, 0x6ED9EBA1,\n  0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n  if (!(this instanceof SHA1))\n    return new SHA1();\n\n  BlockHash.call(this);\n  this.h = [\n    0x67452301, 0xefcdab89, 0x98badcfe,\n    0x10325476, 0xc3d2e1f0 ];\n  this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n  var W = this.W;\n\n  for (var i = 0; i < 16; i++)\n    W[i] = msg[start + i];\n\n  for(; i < W.length; i++)\n    W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n  var a = this.h[0];\n  var b = this.h[1];\n  var c = this.h[2];\n  var d = this.h[3];\n  var e = this.h[4];\n\n  for (i = 0; i < W.length; i++) {\n    var s = ~~(i / 20);\n    var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n    e = d;\n    d = c;\n    c = rotl32(b, 30);\n    b = a;\n    a = t;\n  }\n\n  this.h[0] = sum32(this.h[0], a);\n  this.h[1] = sum32(this.h[1], b);\n  this.h[2] = sum32(this.h[2], c);\n  this.h[3] = sum32(this.h[3], d);\n  this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n  if (enc === 'hex')\n    return utils.toHex32(this.h, 'big');\n  else\n    return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n  0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n  0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n  0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n  0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n  0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n  0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n  0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n  0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n  0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n  0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n  0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n  0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n  0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n  0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n  0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n  0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n  if (!(this instanceof SHA256))\n    return new SHA256();\n\n  BlockHash.call(this);\n  this.h = [\n    0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n    0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n  ];\n  this.k = sha256_K;\n  this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n  var W = this.W;\n\n  for (var i = 0; i < 16; i++)\n    W[i] = msg[start + i];\n  for (; i < W.length; i++)\n    W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n  var a = this.h[0];\n  var b = this.h[1];\n  var c = this.h[2];\n  var d = this.h[3];\n  var e = this.h[4];\n  var f = this.h[5];\n  var g = this.h[6];\n  var h = this.h[7];\n\n  assert(this.k.length === W.length);\n  for (i = 0; i < W.length; i++) {\n    var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n    var T2 = sum32(s0_256(a), maj32(a, b, c));\n    h = g;\n    g = f;\n    f = e;\n    e = sum32(d, T1);\n    d = c;\n    c = b;\n    b = a;\n    a = sum32(T1, T2);\n  }\n\n  this.h[0] = sum32(this.h[0], a);\n  this.h[1] = sum32(this.h[1], b);\n  this.h[2] = sum32(this.h[2], c);\n  this.h[3] = sum32(this.h[3], d);\n  this.h[4] = sum32(this.h[4], e);\n  this.h[5] = sum32(this.h[5], f);\n  this.h[6] = sum32(this.h[6], g);\n  this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n  if (enc === 'hex')\n    return utils.toHex32(this.h, 'big');\n  else\n    return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n  if (!(this instanceof SHA224))\n    return new SHA224();\n\n  SHA256.call(this);\n  this.h = [\n    0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n    0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n  // Just truncate output\n  if (enc === 'hex')\n    return utils.toHex32(this.h.slice(0, 7), 'big');\n  else\n    return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n  0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n  0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n  0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n  0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n  0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n  0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n  0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n  0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n  0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n  0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n  0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n  0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n  0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n  0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n  0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n  0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n  0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n  0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n  0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n  0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n  0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n  0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n  0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n  0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n  0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n  0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n  0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n  0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n  0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n  0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n  0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n  0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n  0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n  0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n  0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n  0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n  0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n  0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n  0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n  0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n  if (!(this instanceof SHA512))\n    return new SHA512();\n\n  BlockHash.call(this);\n  this.h = [\n    0x6a09e667, 0xf3bcc908,\n    0xbb67ae85, 0x84caa73b,\n    0x3c6ef372, 0xfe94f82b,\n    0xa54ff53a, 0x5f1d36f1,\n    0x510e527f, 0xade682d1,\n    0x9b05688c, 0x2b3e6c1f,\n    0x1f83d9ab, 0xfb41bd6b,\n    0x5be0cd19, 0x137e2179 ];\n  this.k = sha512_K;\n  this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n  var W = this.W;\n\n  // 32 x 32bit words\n  for (var i = 0; i < 32; i++)\n    W[i] = msg[start + i];\n  for (; i < W.length; i += 2) {\n    var c0_hi = g1_512_hi(W[i - 4], W[i - 3]);  // i - 2\n    var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n    var c1_hi = W[i - 14];  // i - 7\n    var c1_lo = W[i - 13];\n    var c2_hi = g0_512_hi(W[i - 30], W[i - 29]);  // i - 15\n    var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n    var c3_hi = W[i - 32];  // i - 16\n    var c3_lo = W[i - 31];\n\n    W[i] = sum64_4_hi(\n      c0_hi, c0_lo,\n      c1_hi, c1_lo,\n      c2_hi, c2_lo,\n      c3_hi, c3_lo);\n    W[i + 1] = sum64_4_lo(\n      c0_hi, c0_lo,\n      c1_hi, c1_lo,\n      c2_hi, c2_lo,\n      c3_hi, c3_lo);\n  }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n  this._prepareBlock(msg, start);\n\n  var W = this.W;\n\n  var ah = this.h[0];\n  var al = this.h[1];\n  var bh = this.h[2];\n  var bl = this.h[3];\n  var ch = this.h[4];\n  var cl = this.h[5];\n  var dh = this.h[6];\n  var dl = this.h[7];\n  var eh = this.h[8];\n  var el = this.h[9];\n  var fh = this.h[10];\n  var fl = this.h[11];\n  var gh = this.h[12];\n  var gl = this.h[13];\n  var hh = this.h[14];\n  var hl = this.h[15];\n\n  assert(this.k.length === W.length);\n  for (var i = 0; i < W.length; i += 2) {\n    var c0_hi = hh;\n    var c0_lo = hl;\n    var c1_hi = s1_512_hi(eh, el);\n    var c1_lo = s1_512_lo(eh, el);\n    var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n    var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n    var c3_hi = this.k[i];\n    var c3_lo = this.k[i + 1];\n    var c4_hi = W[i];\n    var c4_lo = W[i + 1];\n\n    var T1_hi = sum64_5_hi(\n      c0_hi, c0_lo,\n      c1_hi, c1_lo,\n      c2_hi, c2_lo,\n      c3_hi, c3_lo,\n      c4_hi, c4_lo);\n    var T1_lo = sum64_5_lo(\n      c0_hi, c0_lo,\n      c1_hi, c1_lo,\n      c2_hi, c2_lo,\n      c3_hi, c3_lo,\n      c4_hi, c4_lo);\n\n    c0_hi = s0_512_hi(ah, al);\n    c0_lo = s0_512_lo(ah, al);\n    c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n    c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n    var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n    var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n    hh = gh;\n    hl = gl;\n\n    gh = fh;\n    gl = fl;\n\n    fh = eh;\n    fl = el;\n\n    eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n    el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n    dh = ch;\n    dl = cl;\n\n    ch = bh;\n    cl = bl;\n\n    bh = ah;\n    bl = al;\n\n    ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n    al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n  }\n\n  sum64(this.h, 0, ah, al);\n  sum64(this.h, 2, bh, bl);\n  sum64(this.h, 4, ch, cl);\n  sum64(this.h, 6, dh, dl);\n  sum64(this.h, 8, eh, el);\n  sum64(this.h, 10, fh, fl);\n  sum64(this.h, 12, gh, gl);\n  sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n  if (enc === 'hex')\n    return utils.toHex32(this.h, 'big');\n  else\n    return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n  var r = (xh & yh) ^ ((~xh) & zh);\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n  var r = (xl & yl) ^ ((~xl) & zl);\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n  var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n  var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n  var c0_hi = rotr64_hi(xh, xl, 28);\n  var c1_hi = rotr64_hi(xl, xh, 2);  // 34\n  var c2_hi = rotr64_hi(xl, xh, 7);  // 39\n\n  var r = c0_hi ^ c1_hi ^ c2_hi;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n  var c0_lo = rotr64_lo(xh, xl, 28);\n  var c1_lo = rotr64_lo(xl, xh, 2);  // 34\n  var c2_lo = rotr64_lo(xl, xh, 7);  // 39\n\n  var r = c0_lo ^ c1_lo ^ c2_lo;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n  var c0_hi = rotr64_hi(xh, xl, 14);\n  var c1_hi = rotr64_hi(xh, xl, 18);\n  var c2_hi = rotr64_hi(xl, xh, 9);  // 41\n\n  var r = c0_hi ^ c1_hi ^ c2_hi;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n  var c0_lo = rotr64_lo(xh, xl, 14);\n  var c1_lo = rotr64_lo(xh, xl, 18);\n  var c2_lo = rotr64_lo(xl, xh, 9);  // 41\n\n  var r = c0_lo ^ c1_lo ^ c2_lo;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n  var c0_hi = rotr64_hi(xh, xl, 1);\n  var c1_hi = rotr64_hi(xh, xl, 8);\n  var c2_hi = shr64_hi(xh, xl, 7);\n\n  var r = c0_hi ^ c1_hi ^ c2_hi;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n  var c0_lo = rotr64_lo(xh, xl, 1);\n  var c1_lo = rotr64_lo(xh, xl, 8);\n  var c2_lo = shr64_lo(xh, xl, 7);\n\n  var r = c0_lo ^ c1_lo ^ c2_lo;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n  var c0_hi = rotr64_hi(xh, xl, 19);\n  var c1_hi = rotr64_hi(xl, xh, 29);  // 61\n  var c2_hi = shr64_hi(xh, xl, 6);\n\n  var r = c0_hi ^ c1_hi ^ c2_hi;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n  var c0_lo = rotr64_lo(xh, xl, 19);\n  var c1_lo = rotr64_lo(xl, xh, 29);  // 61\n  var c2_lo = shr64_lo(xh, xl, 6);\n\n  var r = c0_lo ^ c1_lo ^ c2_lo;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n  if (!(this instanceof SHA384))\n    return new SHA384();\n\n  SHA512.call(this);\n  this.h = [\n    0xcbbb9d5d, 0xc1059ed8,\n    0x629a292a, 0x367cd507,\n    0x9159015a, 0x3070dd17,\n    0x152fecd8, 0xf70e5939,\n    0x67332667, 0xffc00b31,\n    0x8eb44a87, 0x68581511,\n    0xdb0c2e0d, 0x64f98fa7,\n    0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n  if (enc === 'hex')\n    return utils.toHex32(this.h.slice(0, 12), 'big');\n  else\n    return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n  if (!(this instanceof RIPEMD160))\n    return new RIPEMD160();\n\n  BlockHash.call(this);\n\n  this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n  this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n  var A = this.h[0];\n  var B = this.h[1];\n  var C = this.h[2];\n  var D = this.h[3];\n  var E = this.h[4];\n  var Ah = A;\n  var Bh = B;\n  var Ch = C;\n  var Dh = D;\n  var Eh = E;\n  for (var j = 0; j < 80; j++) {\n    var T = sum32(\n      rotl32(\n        sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n        s[j]),\n      E);\n    A = E;\n    E = D;\n    D = rotl32(C, 10);\n    C = B;\n    B = T;\n    T = sum32(\n      rotl32(\n        sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n        sh[j]),\n      Eh);\n    Ah = Eh;\n    Eh = Dh;\n    Dh = rotl32(Ch, 10);\n    Ch = Bh;\n    Bh = T;\n  }\n  T = sum32_3(this.h[1], C, Dh);\n  this.h[1] = sum32_3(this.h[2], D, Eh);\n  this.h[2] = sum32_3(this.h[3], E, Ah);\n  this.h[3] = sum32_3(this.h[4], A, Bh);\n  this.h[4] = sum32_3(this.h[0], B, Ch);\n  this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n  if (enc === 'hex')\n    return utils.toHex32(this.h, 'little');\n  else\n    return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n  if (j <= 15)\n    return x ^ y ^ z;\n  else if (j <= 31)\n    return (x & y) | ((~x) & z);\n  else if (j <= 47)\n    return (x | (~y)) ^ z;\n  else if (j <= 63)\n    return (x & z) | (y & (~z));\n  else\n    return x ^ (y | (~z));\n}\n\nfunction K(j) {\n  if (j <= 15)\n    return 0x00000000;\n  else if (j <= 31)\n    return 0x5a827999;\n  else if (j <= 47)\n    return 0x6ed9eba1;\n  else if (j <= 63)\n    return 0x8f1bbcdc;\n  else\n    return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n  if (j <= 15)\n    return 0x50a28be6;\n  else if (j <= 31)\n    return 0x5c4dd124;\n  else if (j <= 47)\n    return 0x6d703ef3;\n  else if (j <= 63)\n    return 0x7a6d76e9;\n  else\n    return 0x00000000;\n}\n\nvar r = [\n  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n  7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n  3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n  1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n  4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n  5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n  6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n  15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n  8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n  12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n  11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n  7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n  11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n  11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n  9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n  8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n  9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n  9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n  15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n  8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n  if (!(this instanceof Hmac))\n    return new Hmac(hash, key, enc);\n  this.Hash = hash;\n  this.blockSize = hash.blockSize / 8;\n  this.outSize = hash.outSize / 8;\n  this.inner = null;\n  this.outer = null;\n\n  this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n  // Shorten key, if needed\n  if (key.length > this.blockSize)\n    key = new this.Hash().update(key).digest();\n  assert(key.length <= this.blockSize);\n\n  // Add padding to key\n  for (var i = key.length; i < this.blockSize; i++)\n    key.push(0);\n\n  for (i = 0; i < key.length; i++)\n    key[i] ^= 0x36;\n  this.inner = new this.Hash().update(key);\n\n  // 0x36 ^ 0x5c = 0x6a\n  for (i = 0; i < key.length; i++)\n    key[i] ^= 0x6a;\n  this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n  this.inner.update(msg, enc);\n  return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n  this.outer.update(this.inner.digest());\n  return this.outer.digest(enc);\n};\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","module.exports = {\n  doubles: {\n    step: 4,\n    points: [\n      [\n        'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n        'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821'\n      ],\n      [\n        '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n        '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf'\n      ],\n      [\n        '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n        'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695'\n      ],\n      [\n        '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n        '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9'\n      ],\n      [\n        '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n        '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36'\n      ],\n      [\n        '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n        '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f'\n      ],\n      [\n        'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n        '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999'\n      ],\n      [\n        '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n        'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09'\n      ],\n      [\n        'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n        '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d'\n      ],\n      [\n        'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n        'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088'\n      ],\n      [\n        'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n        '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d'\n      ],\n      [\n        '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n        '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8'\n      ],\n      [\n        '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n        '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a'\n      ],\n      [\n        '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n        '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453'\n      ],\n      [\n        '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n        '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160'\n      ],\n      [\n        '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n        '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0'\n      ],\n      [\n        '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n        '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6'\n      ],\n      [\n        '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n        '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589'\n      ],\n      [\n        '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n        'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17'\n      ],\n      [\n        'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n        '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda'\n      ],\n      [\n        'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n        '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd'\n      ],\n      [\n        '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n        '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2'\n      ],\n      [\n        '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n        '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6'\n      ],\n      [\n        'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n        '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f'\n      ],\n      [\n        '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n        'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01'\n      ],\n      [\n        'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n        '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3'\n      ],\n      [\n        'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n        'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f'\n      ],\n      [\n        'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n        '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7'\n      ],\n      [\n        'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n        'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78'\n      ],\n      [\n        'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n        '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1'\n      ],\n      [\n        '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n        'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150'\n      ],\n      [\n        '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n        '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82'\n      ],\n      [\n        'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n        '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc'\n      ],\n      [\n        '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n        'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b'\n      ],\n      [\n        'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n        '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51'\n      ],\n      [\n        'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n        '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45'\n      ],\n      [\n        'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n        'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120'\n      ],\n      [\n        '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n        '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84'\n      ],\n      [\n        '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n        '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d'\n      ],\n      [\n        '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n        'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d'\n      ],\n      [\n        '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n        '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8'\n      ],\n      [\n        'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n        '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8'\n      ],\n      [\n        '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n        '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac'\n      ],\n      [\n        '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n        'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f'\n      ],\n      [\n        '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n        '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962'\n      ],\n      [\n        'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n        '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907'\n      ],\n      [\n        '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n        'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec'\n      ],\n      [\n        'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n        'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d'\n      ],\n      [\n        'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n        '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414'\n      ],\n      [\n        '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n        'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd'\n      ],\n      [\n        '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n        'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0'\n      ],\n      [\n        'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n        '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811'\n      ],\n      [\n        'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n        '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1'\n      ],\n      [\n        'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n        '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c'\n      ],\n      [\n        '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n        'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73'\n      ],\n      [\n        '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n        '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd'\n      ],\n      [\n        'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n        'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405'\n      ],\n      [\n        '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n        'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589'\n      ],\n      [\n        '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n        '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e'\n      ],\n      [\n        '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n        '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27'\n      ],\n      [\n        'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n        'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1'\n      ],\n      [\n        '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n        '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482'\n      ],\n      [\n        '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n        '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945'\n      ],\n      [\n        'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n        '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573'\n      ],\n      [\n        'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n        'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82'\n      ]\n    ]\n  },\n  naf: {\n    wnd: 7,\n    points: [\n      [\n        'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n        '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672'\n      ],\n      [\n        '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n        'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6'\n      ],\n      [\n        '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n        '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da'\n      ],\n      [\n        'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n        'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37'\n      ],\n      [\n        '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n        'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b'\n      ],\n      [\n        'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n        'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81'\n      ],\n      [\n        'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n        '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58'\n      ],\n      [\n        'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n        '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77'\n      ],\n      [\n        '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n        '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a'\n      ],\n      [\n        '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n        '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c'\n      ],\n      [\n        '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n        '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67'\n      ],\n      [\n        '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n        '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402'\n      ],\n      [\n        'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n        'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55'\n      ],\n      [\n        'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n        '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482'\n      ],\n      [\n        '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n        'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82'\n      ],\n      [\n        '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n        'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396'\n      ],\n      [\n        '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n        '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49'\n      ],\n      [\n        '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n        '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf'\n      ],\n      [\n        '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n        '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a'\n      ],\n      [\n        '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n        'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7'\n      ],\n      [\n        'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n        'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933'\n      ],\n      [\n        '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n        '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a'\n      ],\n      [\n        '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n        '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6'\n      ],\n      [\n        'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n        'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37'\n      ],\n      [\n        '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n        '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e'\n      ],\n      [\n        'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n        'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6'\n      ],\n      [\n        'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n        'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476'\n      ],\n      [\n        '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n        '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40'\n      ],\n      [\n        '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n        '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61'\n      ],\n      [\n        '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n        '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683'\n      ],\n      [\n        'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n        '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5'\n      ],\n      [\n        '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n        '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b'\n      ],\n      [\n        'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n        '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417'\n      ],\n      [\n        '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n        'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868'\n      ],\n      [\n        '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n        'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a'\n      ],\n      [\n        'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n        'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6'\n      ],\n      [\n        '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n        '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996'\n      ],\n      [\n        '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n        'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e'\n      ],\n      [\n        'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n        'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d'\n      ],\n      [\n        '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n        '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2'\n      ],\n      [\n        '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n        'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e'\n      ],\n      [\n        '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n        '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437'\n      ],\n      [\n        '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n        'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311'\n      ],\n      [\n        'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n        '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4'\n      ],\n      [\n        '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n        '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575'\n      ],\n      [\n        '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n        'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d'\n      ],\n      [\n        '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n        'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d'\n      ],\n      [\n        'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n        'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629'\n      ],\n      [\n        'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n        'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06'\n      ],\n      [\n        '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n        '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374'\n      ],\n      [\n        '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n        '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee'\n      ],\n      [\n        'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n        '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1'\n      ],\n      [\n        'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n        'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b'\n      ],\n      [\n        '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n        '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661'\n      ],\n      [\n        '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n        '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6'\n      ],\n      [\n        'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n        '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e'\n      ],\n      [\n        '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n        '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d'\n      ],\n      [\n        'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n        'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc'\n      ],\n      [\n        '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n        'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4'\n      ],\n      [\n        '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n        '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c'\n      ],\n      [\n        'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n        '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b'\n      ],\n      [\n        'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n        '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913'\n      ],\n      [\n        '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n        '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154'\n      ],\n      [\n        '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n        '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865'\n      ],\n      [\n        '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n        'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc'\n      ],\n      [\n        '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n        'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224'\n      ],\n      [\n        '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n        '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e'\n      ],\n      [\n        '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n        '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6'\n      ],\n      [\n        '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n        '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511'\n      ],\n      [\n        '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n        'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b'\n      ],\n      [\n        'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n        'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2'\n      ],\n      [\n        '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n        'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c'\n      ],\n      [\n        'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n        '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3'\n      ],\n      [\n        'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n        '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d'\n      ],\n      [\n        'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n        '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700'\n      ],\n      [\n        'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n        '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4'\n      ],\n      [\n        '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n        'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196'\n      ],\n      [\n        '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n        '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4'\n      ],\n      [\n        '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n        'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257'\n      ],\n      [\n        'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n        'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13'\n      ],\n      [\n        'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n        '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096'\n      ],\n      [\n        'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n        'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38'\n      ],\n      [\n        'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n        '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f'\n      ],\n      [\n        '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n        '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448'\n      ],\n      [\n        'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n        '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a'\n      ],\n      [\n        'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n        '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4'\n      ],\n      [\n        '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n        '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437'\n      ],\n      [\n        '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n        'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7'\n      ],\n      [\n        'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n        '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d'\n      ],\n      [\n        'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n        '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a'\n      ],\n      [\n        'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n        '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54'\n      ],\n      [\n        '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n        '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77'\n      ],\n      [\n        'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n        'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517'\n      ],\n      [\n        '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n        'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10'\n      ],\n      [\n        'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n        'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125'\n      ],\n      [\n        'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n        '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e'\n      ],\n      [\n        '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n        'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1'\n      ],\n      [\n        'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n        '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2'\n      ],\n      [\n        'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n        '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423'\n      ],\n      [\n        'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n        '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8'\n      ],\n      [\n        '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n        'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758'\n      ],\n      [\n        '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n        'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375'\n      ],\n      [\n        'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n        '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d'\n      ],\n      [\n        '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n        'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec'\n      ],\n      [\n        '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n        '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0'\n      ],\n      [\n        '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n        'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c'\n      ],\n      [\n        'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n        'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4'\n      ],\n      [\n        '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n        'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f'\n      ],\n      [\n        '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n        '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649'\n      ],\n      [\n        '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n        'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826'\n      ],\n      [\n        '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n        '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5'\n      ],\n      [\n        'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n        'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87'\n      ],\n      [\n        '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n        '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b'\n      ],\n      [\n        'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n        '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc'\n      ],\n      [\n        '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n        '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c'\n      ],\n      [\n        'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n        'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f'\n      ],\n      [\n        'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n        '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a'\n      ],\n      [\n        'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n        'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46'\n      ],\n      [\n        '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n        'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f'\n      ],\n      [\n        '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n        '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03'\n      ],\n      [\n        '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n        'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08'\n      ],\n      [\n        '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n        '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8'\n      ],\n      [\n        '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n        '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373'\n      ],\n      [\n        '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n        'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3'\n      ],\n      [\n        '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n        '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8'\n      ],\n      [\n        '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n        '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1'\n      ],\n      [\n        '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n        '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9'\n      ]\n    ]\n  }\n};\n","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar elliptic = require('../elliptic');\n\nvar assert = elliptic.utils.assert;\n\nfunction PresetCurve(options) {\n  if (options.type === 'short')\n    this.curve = new elliptic.curve.short(options);\n  else if (options.type === 'edwards')\n    this.curve = new elliptic.curve.edwards(options);\n  else\n    this.curve = new elliptic.curve.mont(options);\n  this.g = this.curve.g;\n  this.n = this.curve.n;\n  this.hash = options.hash;\n\n  assert(this.g.validate(), 'Invalid curve');\n  assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n  Object.defineProperty(curves, name, {\n    configurable: true,\n    enumerable: true,\n    get: function() {\n      var curve = new PresetCurve(options);\n      Object.defineProperty(curves, name, {\n        configurable: true,\n        enumerable: true,\n        value: curve\n      });\n      return curve;\n    }\n  });\n}\n\ndefineCurve('p192', {\n  type: 'short',\n  prime: 'p192',\n  p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n  a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n  b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n  n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n  hash: hash.sha256,\n  gRed: false,\n  g: [\n    '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n    '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811'\n  ]\n});\n\ndefineCurve('p224', {\n  type: 'short',\n  prime: 'p224',\n  p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n  a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n  b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n  n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n  hash: hash.sha256,\n  gRed: false,\n  g: [\n    'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n    'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34'\n  ]\n});\n\ndefineCurve('p256', {\n  type: 'short',\n  prime: null,\n  p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n  a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n  b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n  n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n  hash: hash.sha256,\n  gRed: false,\n  g: [\n    '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n    '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5'\n  ]\n});\n\ndefineCurve('p384', {\n  type: 'short',\n  prime: null,\n  p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n     'fffffffe ffffffff 00000000 00000000 ffffffff',\n  a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n     'fffffffe ffffffff 00000000 00000000 fffffffc',\n  b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n     '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n  n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n     'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n  hash: hash.sha384,\n  gRed: false,\n  g: [\n    'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n    '5502f25d bf55296c 3a545e38 72760ab7',\n    '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n    '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'\n  ]\n});\n\ndefineCurve('p521', {\n  type: 'short',\n  prime: null,\n  p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n     'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n     'ffffffff ffffffff ffffffff ffffffff ffffffff',\n  a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n     'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n     'ffffffff ffffffff ffffffff ffffffff fffffffc',\n  b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n     '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n     '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n  n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n     'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n     'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n  hash: hash.sha512,\n  gRed: false,\n  g: [\n    '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n    '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n    'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n    '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n    '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n    '3fad0761 353c7086 a272c240 88be9476 9fd16650'\n  ]\n});\n\ndefineCurve('curve25519', {\n  type: 'mont',\n  prime: 'p25519',\n  p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n  a: '76d06',\n  b: '1',\n  n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n  hash: hash.sha256,\n  gRed: false,\n  g: [\n    '9'\n  ]\n});\n\ndefineCurve('ed25519', {\n  type: 'edwards',\n  prime: 'p25519',\n  p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n  a: '-1',\n  c: '1',\n  // -121665 * (121666^(-1)) (mod P)\n  d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n  n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n  hash: hash.sha256,\n  gRed: false,\n  g: [\n    '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n    // 4/5\n    '6666666666666666666666666666666666666666666666666666666666666658'\n  ]\n});\n\nvar pre;\ntry {\n  pre = require('./precomputed/secp256k1');\n} catch (e) {\n  pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n  type: 'short',\n  prime: 'k256',\n  p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n  a: '0',\n  b: '7',\n  n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n  h: '1',\n  hash: hash.sha256,\n\n  // Precomputed endomorphism\n  beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n  lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n  basis: [\n    {\n      a: '3086d221a7d46bcde86c90e49284eb15',\n      b: '-e4437ed6010e88286f547fa90abfe4c3'\n    },\n    {\n      a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n      b: '3086d221a7d46bcde86c90e49284eb15'\n    }\n  ],\n\n  gRed: false,\n  g: [\n    '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n    '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n    pre\n  ]\n});\n","'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n  if (!(this instanceof HmacDRBG))\n    return new HmacDRBG(options);\n  this.hash = options.hash;\n  this.predResist = !!options.predResist;\n\n  this.outLen = this.hash.outSize;\n  this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n  this._reseed = null;\n  this.reseedInterval = null;\n  this.K = null;\n  this.V = null;\n\n  var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n  var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n  var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n  assert(entropy.length >= (this.minEntropy / 8),\n         'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n  this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n  var seed = entropy.concat(nonce).concat(pers);\n\n  this.K = new Array(this.outLen / 8);\n  this.V = new Array(this.outLen / 8);\n  for (var i = 0; i < this.V.length; i++) {\n    this.K[i] = 0x00;\n    this.V[i] = 0x01;\n  }\n\n  this._update(seed);\n  this._reseed = 1;\n  this.reseedInterval = 0x1000000000000;  // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n  return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n  var kmac = this._hmac()\n                 .update(this.V)\n                 .update([ 0x00 ]);\n  if (seed)\n    kmac = kmac.update(seed);\n  this.K = kmac.digest();\n  this.V = this._hmac().update(this.V).digest();\n  if (!seed)\n    return;\n\n  this.K = this._hmac()\n               .update(this.V)\n               .update([ 0x01 ])\n               .update(seed)\n               .digest();\n  this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n  // Optional entropy enc\n  if (typeof entropyEnc !== 'string') {\n    addEnc = add;\n    add = entropyEnc;\n    entropyEnc = null;\n  }\n\n  entropy = utils.toArray(entropy, entropyEnc);\n  add = utils.toArray(add, addEnc);\n\n  assert(entropy.length >= (this.minEntropy / 8),\n         'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n  this._update(entropy.concat(add || []));\n  this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n  if (this._reseed > this.reseedInterval)\n    throw new Error('Reseed is required');\n\n  // Optional encoding\n  if (typeof enc !== 'string') {\n    addEnc = add;\n    add = enc;\n    enc = null;\n  }\n\n  // Optional additional data\n  if (add) {\n    add = utils.toArray(add, addEnc || 'hex');\n    this._update(add);\n  }\n\n  var temp = [];\n  while (temp.length < len) {\n    this.V = this._hmac().update(this.V).digest();\n    temp = temp.concat(this.V);\n  }\n\n  var res = temp.slice(0, len);\n  this._update(add);\n  this._reseed++;\n  return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar elliptic = require('../../elliptic');\nvar utils = elliptic.utils;\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n  this.ec = ec;\n  this.priv = null;\n  this.pub = null;\n\n  // KeyPair(ec, { priv: ..., pub: ... })\n  if (options.priv)\n    this._importPrivate(options.priv, options.privEnc);\n  if (options.pub)\n    this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n  if (pub instanceof KeyPair)\n    return pub;\n\n  return new KeyPair(ec, {\n    pub: pub,\n    pubEnc: enc\n  });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n  if (priv instanceof KeyPair)\n    return priv;\n\n  return new KeyPair(ec, {\n    priv: priv,\n    privEnc: enc\n  });\n};\n\nKeyPair.prototype.validate = function validate() {\n  var pub = this.getPublic();\n\n  if (pub.isInfinity())\n    return { result: false, reason: 'Invalid public key' };\n  if (!pub.validate())\n    return { result: false, reason: 'Public key is not a point' };\n  if (!pub.mul(this.ec.curve.n).isInfinity())\n    return { result: false, reason: 'Public key * N != O' };\n\n  return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n  // compact is optional argument\n  if (typeof compact === 'string') {\n    enc = compact;\n    compact = null;\n  }\n\n  if (!this.pub)\n    this.pub = this.ec.g.mul(this.priv);\n\n  if (!enc)\n    return this.pub;\n\n  return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n  if (enc === 'hex')\n    return this.priv.toString(16, 2);\n  else\n    return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n  this.priv = new BN(key, enc || 16);\n\n  // Ensure that the priv won't be bigger than n, otherwise we may fail\n  // in fixed multiplication method\n  this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n  if (key.x || key.y) {\n    // Montgomery points only have an `x` coordinate.\n    // Weierstrass/Edwards points on the other hand have both `x` and\n    // `y` coordinates.\n    if (this.ec.curve.type === 'mont') {\n      assert(key.x, 'Need x coordinate');\n    } else if (this.ec.curve.type === 'short' ||\n               this.ec.curve.type === 'edwards') {\n      assert(key.x && key.y, 'Need both x and y coordinate');\n    }\n    this.pub = this.ec.curve.point(key.x, key.y);\n    return;\n  }\n  this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n  return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n  return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n  return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n  return '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) +\n         ' pub: ' + (this.pub && this.pub.inspect()) + ' >';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar elliptic = require('../../elliptic');\nvar utils = elliptic.utils;\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n  if (options instanceof Signature)\n    return options;\n\n  if (this._importDER(options, enc))\n    return;\n\n  assert(options.r && options.s, 'Signature without r or s');\n  this.r = new BN(options.r, 16);\n  this.s = new BN(options.s, 16);\n  if (options.recoveryParam === undefined)\n    this.recoveryParam = null;\n  else\n    this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n  this.place = 0;\n}\n\nfunction getLength(buf, p) {\n  var initial = buf[p.place++];\n  if (!(initial & 0x80)) {\n    return initial;\n  }\n  var octetLen = initial & 0xf;\n  var val = 0;\n  for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n    val <<= 8;\n    val |= buf[off];\n  }\n  p.place = off;\n  return val;\n}\n\nfunction rmPadding(buf) {\n  var i = 0;\n  var len = buf.length - 1;\n  while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n    i++;\n  }\n  if (i === 0) {\n    return buf;\n  }\n  return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n  data = utils.toArray(data, enc);\n  var p = new Position();\n  if (data[p.place++] !== 0x30) {\n    return false;\n  }\n  var len = getLength(data, p);\n  if ((len + p.place) !== data.length) {\n    return false;\n  }\n  if (data[p.place++] !== 0x02) {\n    return false;\n  }\n  var rlen = getLength(data, p);\n  var r = data.slice(p.place, rlen + p.place);\n  p.place += rlen;\n  if (data[p.place++] !== 0x02) {\n    return false;\n  }\n  var slen = getLength(data, p);\n  if (data.length !== slen + p.place) {\n    return false;\n  }\n  var s = data.slice(p.place, slen + p.place);\n  if (r[0] === 0 && (r[1] & 0x80)) {\n    r = r.slice(1);\n  }\n  if (s[0] === 0 && (s[1] & 0x80)) {\n    s = s.slice(1);\n  }\n\n  this.r = new BN(r);\n  this.s = new BN(s);\n  this.recoveryParam = null;\n\n  return true;\n};\n\nfunction constructLength(arr, len) {\n  if (len < 0x80) {\n    arr.push(len);\n    return;\n  }\n  var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n  arr.push(octets | 0x80);\n  while (--octets) {\n    arr.push((len >>> (octets << 3)) & 0xff);\n  }\n  arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n  var r = this.r.toArray();\n  var s = this.s.toArray();\n\n  // Pad values\n  if (r[0] & 0x80)\n    r = [ 0 ].concat(r);\n  // Pad values\n  if (s[0] & 0x80)\n    s = [ 0 ].concat(s);\n\n  r = rmPadding(r);\n  s = rmPadding(s);\n\n  while (!s[0] && !(s[1] & 0x80)) {\n    s = s.slice(1);\n  }\n  var arr = [ 0x02 ];\n  constructLength(arr, r.length);\n  arr = arr.concat(r);\n  arr.push(0x02);\n  constructLength(arr, s.length);\n  var backHalf = arr.concat(s);\n  var res = [ 0x30 ];\n  constructLength(res, backHalf.length);\n  res = res.concat(backHalf);\n  return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar elliptic = require('../../elliptic');\nvar utils = elliptic.utils;\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n  if (!(this instanceof EC))\n    return new EC(options);\n\n  // Shortcut `elliptic.ec(curve-name)`\n  if (typeof options === 'string') {\n    assert(elliptic.curves.hasOwnProperty(options), 'Unknown curve ' + options);\n\n    options = elliptic.curves[options];\n  }\n\n  // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n  if (options instanceof elliptic.curves.PresetCurve)\n    options = { curve: options };\n\n  this.curve = options.curve.curve;\n  this.n = this.curve.n;\n  this.nh = this.n.ushrn(1);\n  this.g = this.curve.g;\n\n  // Point on curve\n  this.g = options.curve.g;\n  this.g.precompute(options.curve.n.bitLength() + 1);\n\n  // Hash for function for DRBG\n  this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n  return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n  return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n  return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n  if (!options)\n    options = {};\n\n  // Instantiate Hmac_DRBG\n  var drbg = new HmacDRBG({\n    hash: this.hash,\n    pers: options.pers,\n    persEnc: options.persEnc || 'utf8',\n    entropy: options.entropy || elliptic.rand(this.hash.hmacStrength),\n    entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n    nonce: this.n.toArray()\n  });\n\n  var bytes = this.n.byteLength();\n  var ns2 = this.n.sub(new BN(2));\n  do {\n    var priv = new BN(drbg.generate(bytes));\n    if (priv.cmp(ns2) > 0)\n      continue;\n\n    priv.iaddn(1);\n    return this.keyFromPrivate(priv);\n  } while (true);\n};\n\nEC.prototype._truncateToN = function truncateToN(msg, truncOnly) {\n  var delta = msg.byteLength() * 8 - this.n.bitLength();\n  if (delta > 0)\n    msg = msg.ushrn(delta);\n  if (!truncOnly && msg.cmp(this.n) >= 0)\n    return msg.sub(this.n);\n  else\n    return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n  if (typeof enc === 'object') {\n    options = enc;\n    enc = null;\n  }\n  if (!options)\n    options = {};\n\n  key = this.keyFromPrivate(key, enc);\n  msg = this._truncateToN(new BN(msg, 16));\n\n  // Zero-extend key to provide enough entropy\n  var bytes = this.n.byteLength();\n  var bkey = key.getPrivate().toArray('be', bytes);\n\n  // Zero-extend nonce to have the same byte size as N\n  var nonce = msg.toArray('be', bytes);\n\n  // Instantiate Hmac_DRBG\n  var drbg = new HmacDRBG({\n    hash: this.hash,\n    entropy: bkey,\n    nonce: nonce,\n    pers: options.pers,\n    persEnc: options.persEnc || 'utf8'\n  });\n\n  // Number of bytes to generate\n  var ns1 = this.n.sub(new BN(1));\n\n  for (var iter = 0; true; iter++) {\n    var k = options.k ?\n        options.k(iter) :\n        new BN(drbg.generate(this.n.byteLength()));\n    k = this._truncateToN(k, true);\n    if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n      continue;\n\n    var kp = this.g.mul(k);\n    if (kp.isInfinity())\n      continue;\n\n    var kpX = kp.getX();\n    var r = kpX.umod(this.n);\n    if (r.cmpn(0) === 0)\n      continue;\n\n    var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n    s = s.umod(this.n);\n    if (s.cmpn(0) === 0)\n      continue;\n\n    var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n                        (kpX.cmp(r) !== 0 ? 2 : 0);\n\n    // Use complement of `s`, if it is > `n / 2`\n    if (options.canonical && s.cmp(this.nh) > 0) {\n      s = this.n.sub(s);\n      recoveryParam ^= 1;\n    }\n\n    return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n  }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n  msg = this._truncateToN(new BN(msg, 16));\n  key = this.keyFromPublic(key, enc);\n  signature = new Signature(signature, 'hex');\n\n  // Perform primitive values validation\n  var r = signature.r;\n  var s = signature.s;\n  if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n    return false;\n  if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n    return false;\n\n  // Validate signature\n  var sinv = s.invm(this.n);\n  var u1 = sinv.mul(msg).umod(this.n);\n  var u2 = sinv.mul(r).umod(this.n);\n\n  if (!this.curve._maxwellTrick) {\n    var p = this.g.mulAdd(u1, key.getPublic(), u2);\n    if (p.isInfinity())\n      return false;\n\n    return p.getX().umod(this.n).cmp(r) === 0;\n  }\n\n  // NOTE: Greg Maxwell's trick, inspired by:\n  // https://git.io/vad3K\n\n  var p = this.g.jmulAdd(u1, key.getPublic(), u2);\n  if (p.isInfinity())\n    return false;\n\n  // Compare `p.x` of Jacobian point with `r`,\n  // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n  // inverse of `p.z^2`\n  return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n  assert((3 & j) === j, 'The recovery param is more than two bits');\n  signature = new Signature(signature, enc);\n\n  var n = this.n;\n  var e = new BN(msg);\n  var r = signature.r;\n  var s = signature.s;\n\n  // A set LSB signifies that the y-coordinate is odd\n  var isYOdd = j & 1;\n  var isSecondKey = j >> 1;\n  if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n    throw new Error('Unable to find sencond key candinate');\n\n  // 1.1. Let x = r + jn.\n  if (isSecondKey)\n    r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n  else\n    r = this.curve.pointFromX(r, isYOdd);\n\n  var rInv = signature.r.invm(n);\n  var s1 = n.sub(e).mul(rInv).umod(n);\n  var s2 = s.mul(rInv).umod(n);\n\n  // 1.6.1 Compute Q = r^-1 (sR -  eG)\n  //               Q = r^-1 (sR + -eG)\n  return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n  signature = new Signature(signature, enc);\n  if (signature.recoveryParam !== null)\n    return signature.recoveryParam;\n\n  for (var i = 0; i < 4; i++) {\n    var Qprime;\n    try {\n      Qprime = this.recoverPubKey(e, signature, i);\n    } catch (e) {\n      continue;\n    }\n\n    if (Qprime.eq(Q))\n      return i;\n  }\n  throw new Error('Unable to find valid recovery factor');\n};\n","'use strict';\n\nvar elliptic = require('../../elliptic');\nvar utils = elliptic.utils;\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array<Byte>} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array<Byte>} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n  this.eddsa = eddsa;\n  this._secret = parseBytes(params.secret);\n  if (eddsa.isPoint(params.pub))\n    this._pub = params.pub;\n  else\n    this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n  if (pub instanceof KeyPair)\n    return pub;\n  return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n  if (secret instanceof KeyPair)\n    return secret;\n  return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n  return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n  return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n  if (this._pubBytes)\n    return this.eddsa.decodePoint(this._pubBytes);\n  return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n  var eddsa = this.eddsa;\n  var hash = this.hash();\n  var lastIx = eddsa.encodingLength - 1;\n\n  var a = hash.slice(0, eddsa.encodingLength);\n  a[0] &= 248;\n  a[lastIx] &= 127;\n  a[lastIx] |= 64;\n\n  return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n  return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n  return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n  return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n  assert(this._secret, 'KeyPair can only verify');\n  return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n  return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n  assert(this._secret, 'KeyPair is public only');\n  return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n  return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n","'use strict';\n\nvar BN = require('bn.js');\nvar elliptic = require('../../elliptic');\nvar utils = elliptic.utils;\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array<Bytes>|Object} sig -\n* @param {Array<Bytes>|Point} [sig.R] - R point as Point or bytes\n* @param {Array<Bytes>|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array<Bytes>} [sig.Rencoded] - R point encoded\n* @param {Array<Bytes>} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n  this.eddsa = eddsa;\n\n  if (typeof sig !== 'object')\n    sig = parseBytes(sig);\n\n  if (Array.isArray(sig)) {\n    sig = {\n      R: sig.slice(0, eddsa.encodingLength),\n      S: sig.slice(eddsa.encodingLength)\n    };\n  }\n\n  assert(sig.R && sig.S, 'Signature without R or S');\n\n  if (eddsa.isPoint(sig.R))\n    this._R = sig.R;\n  if (sig.S instanceof BN)\n    this._S = sig.S;\n\n  this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n  this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\n\ncachedProperty(Signature, 'S', function S() {\n  return this.eddsa.decodeInt(this.Sencoded());\n});\n\ncachedProperty(Signature, 'R', function R() {\n  return this.eddsa.decodePoint(this.Rencoded());\n});\n\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n  return this.eddsa.encodePoint(this.R());\n});\n\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n  return this.eddsa.encodeInt(this.S());\n});\n\nSignature.prototype.toBytes = function toBytes() {\n  return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n  return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;\n","'use strict';\n\nvar hash = require('hash.js');\nvar elliptic = require('../../elliptic');\nvar utils = elliptic.utils;\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n  assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n  if (!(this instanceof EDDSA))\n    return new EDDSA(curve);\n\n  var curve = elliptic.curves[curve].curve;\n  this.curve = curve;\n  this.g = curve.g;\n  this.g.precompute(curve.n.bitLength() + 1);\n\n  this.pointClass = curve.point().constructor;\n  this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n  this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n  message = parseBytes(message);\n  var key = this.keyFromSecret(secret);\n  var r = this.hashInt(key.messagePrefix(), message);\n  var R = this.g.mul(r);\n  var Rencoded = this.encodePoint(R);\n  var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n               .mul(key.priv());\n  var S = r.add(s_).umod(this.curve.n);\n  return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n  message = parseBytes(message);\n  sig = this.makeSignature(sig);\n  var key = this.keyFromPublic(pub);\n  var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n  var SG = this.g.mul(sig.S());\n  var RplusAh = sig.R().add(key.pub().mul(h));\n  return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n  var hash = this.hash();\n  for (var i = 0; i < arguments.length; i++)\n    hash.update(arguments[i]);\n  return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n  return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n  return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n  if (sig instanceof Signature)\n    return sig;\n  return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n  var enc = point.getY().toArray('le', this.encodingLength);\n  enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n  return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n  bytes = utils.parseBytes(bytes);\n\n  var lastIx = bytes.length - 1;\n  var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n  var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n  var y = utils.intFromLE(normed);\n  return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n  return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n  return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n  return val instanceof this.pointClass;\n};\n","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","\nvar indexOf = [].indexOf;\n\nmodule.exports = function(arr, obj){\n  if (indexOf) return arr.indexOf(obj);\n  for (var i = 0; i < arr.length; ++i) {\n    if (arr[i] === obj) return i;\n  }\n  return -1;\n};","var indexOf = require('indexof');\n\nvar Object_keys = function (obj) {\n    if (Object.keys) return Object.keys(obj)\n    else {\n        var res = [];\n        for (var key in obj) res.push(key)\n        return res;\n    }\n};\n\nvar forEach = function (xs, fn) {\n    if (xs.forEach) return xs.forEach(fn)\n    else for (var i = 0; i < xs.length; i++) {\n        fn(xs[i], i, xs);\n    }\n};\n\nvar defineProp = (function() {\n    try {\n        Object.defineProperty({}, '_', {});\n        return function(obj, name, value) {\n            Object.defineProperty(obj, name, {\n                writable: true,\n                enumerable: false,\n                configurable: true,\n                value: value\n            })\n        };\n    } catch(e) {\n        return function(obj, name, value) {\n            obj[name] = value;\n        };\n    }\n}());\n\nvar globals = ['Array', 'Boolean', 'Date', 'Error', 'EvalError', 'Function',\n'Infinity', 'JSON', 'Math', 'NaN', 'Number', 'Object', 'RangeError',\n'ReferenceError', 'RegExp', 'String', 'SyntaxError', 'TypeError', 'URIError',\n'decodeURI', 'decodeURIComponent', 'encodeURI', 'encodeURIComponent', 'escape',\n'eval', 'isFinite', 'isNaN', 'parseFloat', 'parseInt', 'undefined', 'unescape'];\n\nfunction Context() {}\nContext.prototype = {};\n\nvar Script = exports.Script = function NodeScript (code) {\n    if (!(this instanceof Script)) return new Script(code);\n    this.code = code;\n};\n\nScript.prototype.runInContext = function (context) {\n    if (!(context instanceof Context)) {\n        throw new TypeError(\"needs a 'context' argument.\");\n    }\n    \n    var iframe = document.createElement('iframe');\n    if (!iframe.style) iframe.style = {};\n    iframe.style.display = 'none';\n    \n    document.body.appendChild(iframe);\n    \n    var win = iframe.contentWindow;\n    var wEval = win.eval, wExecScript = win.execScript;\n\n    if (!wEval && wExecScript) {\n        // win.eval() magically appears when this is called in IE:\n        wExecScript.call(win, 'null');\n        wEval = win.eval;\n    }\n    \n    forEach(Object_keys(context), function (key) {\n        win[key] = context[key];\n    });\n    forEach(globals, function (key) {\n        if (context[key]) {\n            win[key] = context[key];\n        }\n    });\n    \n    var winKeys = Object_keys(win);\n\n    var res = wEval.call(win, this.code);\n    \n    forEach(Object_keys(win), function (key) {\n        // Avoid copying circular objects like `top` and `window` by only\n        // updating existing context properties or new properties in the `win`\n        // that was only introduced after the eval.\n        if (key in context || indexOf(winKeys, key) === -1) {\n            context[key] = win[key];\n        }\n    });\n\n    forEach(globals, function (key) {\n        if (!(key in context)) {\n            defineProp(context, key, win[key]);\n        }\n    });\n    \n    document.body.removeChild(iframe);\n    \n    return res;\n};\n\nScript.prototype.runInThisContext = function () {\n    return eval(this.code); // maybe...\n};\n\nScript.prototype.runInNewContext = function (context) {\n    var ctx = Script.createContext(context);\n    var res = this.runInContext(ctx);\n\n    forEach(Object_keys(ctx), function (key) {\n        context[key] = ctx[key];\n    });\n\n    return res;\n};\n\nforEach(Object_keys(Script.prototype), function (name) {\n    exports[name] = Script[name] = function (code) {\n        var s = Script(code);\n        return s[name].apply(s, [].slice.call(arguments, 1));\n    };\n});\n\nexports.createScript = function (code) {\n    return exports.Script(code);\n};\n\nexports.createContext = Script.createContext = function (context) {\n    var copy = new Context();\n    if(typeof context === 'object') {\n        forEach(Object_keys(context), function (key) {\n            copy[key] = context[key];\n        });\n    }\n    return copy;\n};\n","var asn1 = require('../asn1');\nvar inherits = require('inherits');\n\nvar api = exports;\n\napi.define = function define(name, body) {\n  return new Entity(name, body);\n};\n\nfunction Entity(name, body) {\n  this.name = name;\n  this.body = body;\n\n  this.decoders = {};\n  this.encoders = {};\n};\n\nEntity.prototype._createNamed = function createNamed(base) {\n  var named;\n  try {\n    named = require('vm').runInThisContext(\n      '(function ' + this.name + '(entity) {\\n' +\n      '  this._initNamed(entity);\\n' +\n      '})'\n    );\n  } catch (e) {\n    named = function (entity) {\n      this._initNamed(entity);\n    };\n  }\n  inherits(named, base);\n  named.prototype._initNamed = function initnamed(entity) {\n    base.call(this, entity);\n  };\n\n  return new named(this);\n};\n\nEntity.prototype._getDecoder = function _getDecoder(enc) {\n  enc = enc || 'der';\n  // Lazily create decoder\n  if (!this.decoders.hasOwnProperty(enc))\n    this.decoders[enc] = this._createNamed(asn1.decoders[enc]);\n  return this.decoders[enc];\n};\n\nEntity.prototype.decode = function decode(data, enc, options) {\n  return this._getDecoder(enc).decode(data, options);\n};\n\nEntity.prototype._getEncoder = function _getEncoder(enc) {\n  enc = enc || 'der';\n  // Lazily create encoder\n  if (!this.encoders.hasOwnProperty(enc))\n    this.encoders[enc] = this._createNamed(asn1.encoders[enc]);\n  return this.encoders[enc];\n};\n\nEntity.prototype.encode = function encode(data, enc, /* internal */ reporter) {\n  return this._getEncoder(enc).encode(data, reporter);\n};\n","var inherits = require('inherits');\n\nfunction Reporter(options) {\n  this._reporterState = {\n    obj: null,\n    path: [],\n    options: options || {},\n    errors: []\n  };\n}\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n  return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n  var state = this._reporterState;\n\n  return { obj: state.obj, pathLen: state.path.length };\n};\n\nReporter.prototype.restore = function restore(data) {\n  var state = this._reporterState;\n\n  state.obj = data.obj;\n  state.path = state.path.slice(0, data.pathLen);\n};\n\nReporter.prototype.enterKey = function enterKey(key) {\n  return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n  var state = this._reporterState;\n\n  state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n  var state = this._reporterState;\n\n  this.exitKey(index);\n  if (state.obj !== null)\n    state.obj[key] = value;\n};\n\nReporter.prototype.path = function path() {\n  return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n  var state = this._reporterState;\n\n  var prev = state.obj;\n  state.obj = {};\n  return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n  var state = this._reporterState;\n\n  var now = state.obj;\n  state.obj = prev;\n  return now;\n};\n\nReporter.prototype.error = function error(msg) {\n  var err;\n  var state = this._reporterState;\n\n  var inherited = msg instanceof ReporterError;\n  if (inherited) {\n    err = msg;\n  } else {\n    err = new ReporterError(state.path.map(function(elem) {\n      return '[' + JSON.stringify(elem) + ']';\n    }).join(''), msg.message || msg, msg.stack);\n  }\n\n  if (!state.options.partial)\n    throw err;\n\n  if (!inherited)\n    state.errors.push(err);\n\n  return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n  var state = this._reporterState;\n  if (!state.options.partial)\n    return result;\n\n  return {\n    result: this.isError(result) ? null : result,\n    errors: state.errors\n  };\n};\n\nfunction ReporterError(path, msg) {\n  this.path = path;\n  this.rethrow(msg);\n};\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n  this.message = msg + ' at: ' + (this.path || '(shallow)');\n  if (Error.captureStackTrace)\n    Error.captureStackTrace(this, ReporterError);\n\n  if (!this.stack) {\n    try {\n      // IE only adds stack when thrown\n      throw new Error(this.message);\n    } catch (e) {\n      this.stack = e.stack;\n    }\n  }\n  return this;\n};\n","var inherits = require('inherits');\nvar Reporter = require('../base').Reporter;\nvar Buffer = require('buffer').Buffer;\n\nfunction DecoderBuffer(base, options) {\n  Reporter.call(this, options);\n  if (!Buffer.isBuffer(base)) {\n    this.error('Input not Buffer');\n    return;\n  }\n\n  this.base = base;\n  this.offset = 0;\n  this.length = base.length;\n}\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.prototype.save = function save() {\n  return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n  // Return skipped data\n  var res = new DecoderBuffer(this.base);\n  res.offset = save.offset;\n  res.length = this.offset;\n\n  this.offset = save.offset;\n  Reporter.prototype.restore.call(this, save.reporter);\n\n  return res;\n};\n\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n  return this.offset === this.length;\n};\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n  if (this.offset + 1 <= this.length)\n    return this.base.readUInt8(this.offset++, true);\n  else\n    return this.error(fail || 'DecoderBuffer overrun');\n}\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n  if (!(this.offset + bytes <= this.length))\n    return this.error(fail || 'DecoderBuffer overrun');\n\n  var res = new DecoderBuffer(this.base);\n\n  // Share reporter state\n  res._reporterState = this._reporterState;\n\n  res.offset = this.offset;\n  res.length = this.offset + bytes;\n  this.offset += bytes;\n  return res;\n}\n\nDecoderBuffer.prototype.raw = function raw(save) {\n  return this.base.slice(save ? save.offset : this.offset, this.length);\n}\n\nfunction EncoderBuffer(value, reporter) {\n  if (Array.isArray(value)) {\n    this.length = 0;\n    this.value = value.map(function(item) {\n      if (!(item instanceof EncoderBuffer))\n        item = new EncoderBuffer(item, reporter);\n      this.length += item.length;\n      return item;\n    }, this);\n  } else if (typeof value === 'number') {\n    if (!(0 <= value && value <= 0xff))\n      return reporter.error('non-byte EncoderBuffer value');\n    this.value = value;\n    this.length = 1;\n  } else if (typeof value === 'string') {\n    this.value = value;\n    this.length = Buffer.byteLength(value);\n  } else if (Buffer.isBuffer(value)) {\n    this.value = value;\n    this.length = value.length;\n  } else {\n    return reporter.error('Unsupported type: ' + typeof value);\n  }\n}\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n  if (!out)\n    out = new Buffer(this.length);\n  if (!offset)\n    offset = 0;\n\n  if (this.length === 0)\n    return out;\n\n  if (Array.isArray(this.value)) {\n    this.value.forEach(function(item) {\n      item.join(out, offset);\n      offset += item.length;\n    });\n  } else {\n    if (typeof this.value === 'number')\n      out[offset] = this.value;\n    else if (typeof this.value === 'string')\n      out.write(this.value, offset);\n    else if (Buffer.isBuffer(this.value))\n      this.value.copy(out, offset);\n    offset += this.length;\n  }\n\n  return out;\n};\n","var Reporter = require('../base').Reporter;\nvar EncoderBuffer = require('../base').EncoderBuffer;\nvar DecoderBuffer = require('../base').DecoderBuffer;\nvar assert = require('minimalistic-assert');\n\n// Supported tags\nvar tags = [\n  'seq', 'seqof', 'set', 'setof', 'objid', 'bool',\n  'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',\n  'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',\n  'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'\n];\n\n// Public methods list\nvar methods = [\n  'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',\n  'any', 'contains'\n].concat(tags);\n\n// Overrided methods list\nvar overrided = [\n  '_peekTag', '_decodeTag', '_use',\n  '_decodeStr', '_decodeObjid', '_decodeTime',\n  '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',\n\n  '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',\n  '_encodeNull', '_encodeInt', '_encodeBool'\n];\n\nfunction Node(enc, parent) {\n  var state = {};\n  this._baseState = state;\n\n  state.enc = enc;\n\n  state.parent = parent || null;\n  state.children = null;\n\n  // State\n  state.tag = null;\n  state.args = null;\n  state.reverseArgs = null;\n  state.choice = null;\n  state.optional = false;\n  state.any = false;\n  state.obj = false;\n  state.use = null;\n  state.useDecoder = null;\n  state.key = null;\n  state['default'] = null;\n  state.explicit = null;\n  state.implicit = null;\n  state.contains = null;\n\n  // Should create new instance on each method\n  if (!state.parent) {\n    state.children = [];\n    this._wrap();\n  }\n}\nmodule.exports = Node;\n\nvar stateProps = [\n  'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',\n  'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',\n  'implicit', 'contains'\n];\n\nNode.prototype.clone = function clone() {\n  var state = this._baseState;\n  var cstate = {};\n  stateProps.forEach(function(prop) {\n    cstate[prop] = state[prop];\n  });\n  var res = new this.constructor(cstate.parent);\n  res._baseState = cstate;\n  return res;\n};\n\nNode.prototype._wrap = function wrap() {\n  var state = this._baseState;\n  methods.forEach(function(method) {\n    this[method] = function _wrappedMethod() {\n      var clone = new this.constructor(this);\n      state.children.push(clone);\n      return clone[method].apply(clone, arguments);\n    };\n  }, this);\n};\n\nNode.prototype._init = function init(body) {\n  var state = this._baseState;\n\n  assert(state.parent === null);\n  body.call(this);\n\n  // Filter children\n  state.children = state.children.filter(function(child) {\n    return child._baseState.parent === this;\n  }, this);\n  assert.equal(state.children.length, 1, 'Root node can have only one child');\n};\n\nNode.prototype._useArgs = function useArgs(args) {\n  var state = this._baseState;\n\n  // Filter children and args\n  var children = args.filter(function(arg) {\n    return arg instanceof this.constructor;\n  }, this);\n  args = args.filter(function(arg) {\n    return !(arg instanceof this.constructor);\n  }, this);\n\n  if (children.length !== 0) {\n    assert(state.children === null);\n    state.children = children;\n\n    // Replace parent to maintain backward link\n    children.forEach(function(child) {\n      child._baseState.parent = this;\n    }, this);\n  }\n  if (args.length !== 0) {\n    assert(state.args === null);\n    state.args = args;\n    state.reverseArgs = args.map(function(arg) {\n      if (typeof arg !== 'object' || arg.constructor !== Object)\n        return arg;\n\n      var res = {};\n      Object.keys(arg).forEach(function(key) {\n        if (key == (key | 0))\n          key |= 0;\n        var value = arg[key];\n        res[value] = key;\n      });\n      return res;\n    });\n  }\n};\n\n//\n// Overrided methods\n//\n\noverrided.forEach(function(method) {\n  Node.prototype[method] = function _overrided() {\n    var state = this._baseState;\n    throw new Error(method + ' not implemented for encoding: ' + state.enc);\n  };\n});\n\n//\n// Public methods\n//\n\ntags.forEach(function(tag) {\n  Node.prototype[tag] = function _tagMethod() {\n    var state = this._baseState;\n    var args = Array.prototype.slice.call(arguments);\n\n    assert(state.tag === null);\n    state.tag = tag;\n\n    this._useArgs(args);\n\n    return this;\n  };\n});\n\nNode.prototype.use = function use(item) {\n  assert(item);\n  var state = this._baseState;\n\n  assert(state.use === null);\n  state.use = item;\n\n  return this;\n};\n\nNode.prototype.optional = function optional() {\n  var state = this._baseState;\n\n  state.optional = true;\n\n  return this;\n};\n\nNode.prototype.def = function def(val) {\n  var state = this._baseState;\n\n  assert(state['default'] === null);\n  state['default'] = val;\n  state.optional = true;\n\n  return this;\n};\n\nNode.prototype.explicit = function explicit(num) {\n  var state = this._baseState;\n\n  assert(state.explicit === null && state.implicit === null);\n  state.explicit = num;\n\n  return this;\n};\n\nNode.prototype.implicit = function implicit(num) {\n  var state = this._baseState;\n\n  assert(state.explicit === null && state.implicit === null);\n  state.implicit = num;\n\n  return this;\n};\n\nNode.prototype.obj = function obj() {\n  var state = this._baseState;\n  var args = Array.prototype.slice.call(arguments);\n\n  state.obj = true;\n\n  if (args.length !== 0)\n    this._useArgs(args);\n\n  return this;\n};\n\nNode.prototype.key = function key(newKey) {\n  var state = this._baseState;\n\n  assert(state.key === null);\n  state.key = newKey;\n\n  return this;\n};\n\nNode.prototype.any = function any() {\n  var state = this._baseState;\n\n  state.any = true;\n\n  return this;\n};\n\nNode.prototype.choice = function choice(obj) {\n  var state = this._baseState;\n\n  assert(state.choice === null);\n  state.choice = obj;\n  this._useArgs(Object.keys(obj).map(function(key) {\n    return obj[key];\n  }));\n\n  return this;\n};\n\nNode.prototype.contains = function contains(item) {\n  var state = this._baseState;\n\n  assert(state.use === null);\n  state.contains = item;\n\n  return this;\n};\n\n//\n// Decoding\n//\n\nNode.prototype._decode = function decode(input, options) {\n  var state = this._baseState;\n\n  // Decode root node\n  if (state.parent === null)\n    return input.wrapResult(state.children[0]._decode(input, options));\n\n  var result = state['default'];\n  var present = true;\n\n  var prevKey = null;\n  if (state.key !== null)\n    prevKey = input.enterKey(state.key);\n\n  // Check if tag is there\n  if (state.optional) {\n    var tag = null;\n    if (state.explicit !== null)\n      tag = state.explicit;\n    else if (state.implicit !== null)\n      tag = state.implicit;\n    else if (state.tag !== null)\n      tag = state.tag;\n\n    if (tag === null && !state.any) {\n      // Trial and Error\n      var save = input.save();\n      try {\n        if (state.choice === null)\n          this._decodeGeneric(state.tag, input, options);\n        else\n          this._decodeChoice(input, options);\n        present = true;\n      } catch (e) {\n        present = false;\n      }\n      input.restore(save);\n    } else {\n      present = this._peekTag(input, tag, state.any);\n\n      if (input.isError(present))\n        return present;\n    }\n  }\n\n  // Push object on stack\n  var prevObj;\n  if (state.obj && present)\n    prevObj = input.enterObject();\n\n  if (present) {\n    // Unwrap explicit values\n    if (state.explicit !== null) {\n      var explicit = this._decodeTag(input, state.explicit);\n      if (input.isError(explicit))\n        return explicit;\n      input = explicit;\n    }\n\n    var start = input.offset;\n\n    // Unwrap implicit and normal values\n    if (state.use === null && state.choice === null) {\n      if (state.any)\n        var save = input.save();\n      var body = this._decodeTag(\n        input,\n        state.implicit !== null ? state.implicit : state.tag,\n        state.any\n      );\n      if (input.isError(body))\n        return body;\n\n      if (state.any)\n        result = input.raw(save);\n      else\n        input = body;\n    }\n\n    if (options && options.track && state.tag !== null)\n      options.track(input.path(), start, input.length, 'tagged');\n\n    if (options && options.track && state.tag !== null)\n      options.track(input.path(), input.offset, input.length, 'content');\n\n    // Select proper method for tag\n    if (state.any)\n      result = result;\n    else if (state.choice === null)\n      result = this._decodeGeneric(state.tag, input, options);\n    else\n      result = this._decodeChoice(input, options);\n\n    if (input.isError(result))\n      return result;\n\n    // Decode children\n    if (!state.any && state.choice === null && state.children !== null) {\n      state.children.forEach(function decodeChildren(child) {\n        // NOTE: We are ignoring errors here, to let parser continue with other\n        // parts of encoded data\n        child._decode(input, options);\n      });\n    }\n\n    // Decode contained/encoded by schema, only in bit or octet strings\n    if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n      var data = new DecoderBuffer(result);\n      result = this._getUse(state.contains, input._reporterState.obj)\n          ._decode(data, options);\n    }\n  }\n\n  // Pop object\n  if (state.obj && present)\n    result = input.leaveObject(prevObj);\n\n  // Set key\n  if (state.key !== null && (result !== null || present === true))\n    input.leaveKey(prevKey, state.key, result);\n  else if (prevKey !== null)\n    input.exitKey(prevKey);\n\n  return result;\n};\n\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n  var state = this._baseState;\n\n  if (tag === 'seq' || tag === 'set')\n    return null;\n  if (tag === 'seqof' || tag === 'setof')\n    return this._decodeList(input, tag, state.args[0], options);\n  else if (/str$/.test(tag))\n    return this._decodeStr(input, tag, options);\n  else if (tag === 'objid' && state.args)\n    return this._decodeObjid(input, state.args[0], state.args[1], options);\n  else if (tag === 'objid')\n    return this._decodeObjid(input, null, null, options);\n  else if (tag === 'gentime' || tag === 'utctime')\n    return this._decodeTime(input, tag, options);\n  else if (tag === 'null_')\n    return this._decodeNull(input, options);\n  else if (tag === 'bool')\n    return this._decodeBool(input, options);\n  else if (tag === 'objDesc')\n    return this._decodeStr(input, tag, options);\n  else if (tag === 'int' || tag === 'enum')\n    return this._decodeInt(input, state.args && state.args[0], options);\n\n  if (state.use !== null) {\n    return this._getUse(state.use, input._reporterState.obj)\n        ._decode(input, options);\n  } else {\n    return input.error('unknown tag: ' + tag);\n  }\n};\n\nNode.prototype._getUse = function _getUse(entity, obj) {\n\n  var state = this._baseState;\n  // Create altered use decoder if implicit is set\n  state.useDecoder = this._use(entity, obj);\n  assert(state.useDecoder._baseState.parent === null);\n  state.useDecoder = state.useDecoder._baseState.children[0];\n  if (state.implicit !== state.useDecoder._baseState.implicit) {\n    state.useDecoder = state.useDecoder.clone();\n    state.useDecoder._baseState.implicit = state.implicit;\n  }\n  return state.useDecoder;\n};\n\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n  var state = this._baseState;\n  var result = null;\n  var match = false;\n\n  Object.keys(state.choice).some(function(key) {\n    var save = input.save();\n    var node = state.choice[key];\n    try {\n      var value = node._decode(input, options);\n      if (input.isError(value))\n        return false;\n\n      result = { type: key, value: value };\n      match = true;\n    } catch (e) {\n      input.restore(save);\n      return false;\n    }\n    return true;\n  }, this);\n\n  if (!match)\n    return input.error('Choice not matched');\n\n  return result;\n};\n\n//\n// Encoding\n//\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n  return new EncoderBuffer(data, this.reporter);\n};\n\nNode.prototype._encode = function encode(data, reporter, parent) {\n  var state = this._baseState;\n  if (state['default'] !== null && state['default'] === data)\n    return;\n\n  var result = this._encodeValue(data, reporter, parent);\n  if (result === undefined)\n    return;\n\n  if (this._skipDefault(result, reporter, parent))\n    return;\n\n  return result;\n};\n\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n  var state = this._baseState;\n\n  // Decode root node\n  if (state.parent === null)\n    return state.children[0]._encode(data, reporter || new Reporter());\n\n  var result = null;\n\n  // Set reporter to share it with a child class\n  this.reporter = reporter;\n\n  // Check if data is there\n  if (state.optional && data === undefined) {\n    if (state['default'] !== null)\n      data = state['default']\n    else\n      return;\n  }\n\n  // Encode children first\n  var content = null;\n  var primitive = false;\n  if (state.any) {\n    // Anything that was given is translated to buffer\n    result = this._createEncoderBuffer(data);\n  } else if (state.choice) {\n    result = this._encodeChoice(data, reporter);\n  } else if (state.contains) {\n    content = this._getUse(state.contains, parent)._encode(data, reporter);\n    primitive = true;\n  } else if (state.children) {\n    content = state.children.map(function(child) {\n      if (child._baseState.tag === 'null_')\n        return child._encode(null, reporter, data);\n\n      if (child._baseState.key === null)\n        return reporter.error('Child should have a key');\n      var prevKey = reporter.enterKey(child._baseState.key);\n\n      if (typeof data !== 'object')\n        return reporter.error('Child expected, but input is not object');\n\n      var res = child._encode(data[child._baseState.key], reporter, data);\n      reporter.leaveKey(prevKey);\n\n      return res;\n    }, this).filter(function(child) {\n      return child;\n    });\n    content = this._createEncoderBuffer(content);\n  } else {\n    if (state.tag === 'seqof' || state.tag === 'setof') {\n      // TODO(indutny): this should be thrown on DSL level\n      if (!(state.args && state.args.length === 1))\n        return reporter.error('Too many args for : ' + state.tag);\n\n      if (!Array.isArray(data))\n        return reporter.error('seqof/setof, but data is not Array');\n\n      var child = this.clone();\n      child._baseState.implicit = null;\n      content = this._createEncoderBuffer(data.map(function(item) {\n        var state = this._baseState;\n\n        return this._getUse(state.args[0], data)._encode(item, reporter);\n      }, child));\n    } else if (state.use !== null) {\n      result = this._getUse(state.use, parent)._encode(data, reporter);\n    } else {\n      content = this._encodePrimitive(state.tag, data);\n      primitive = true;\n    }\n  }\n\n  // Encode data itself\n  var result;\n  if (!state.any && state.choice === null) {\n    var tag = state.implicit !== null ? state.implicit : state.tag;\n    var cls = state.implicit === null ? 'universal' : 'context';\n\n    if (tag === null) {\n      if (state.use === null)\n        reporter.error('Tag could be omitted only for .use()');\n    } else {\n      if (state.use === null)\n        result = this._encodeComposite(tag, primitive, cls, content);\n    }\n  }\n\n  // Wrap in explicit\n  if (state.explicit !== null)\n    result = this._encodeComposite(state.explicit, false, 'context', result);\n\n  return result;\n};\n\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n  var state = this._baseState;\n\n  var node = state.choice[data.type];\n  if (!node) {\n    assert(\n        false,\n        data.type + ' not found in ' +\n            JSON.stringify(Object.keys(state.choice)));\n  }\n  return node._encode(data.value, reporter);\n};\n\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n  var state = this._baseState;\n\n  if (/str$/.test(tag))\n    return this._encodeStr(data, tag);\n  else if (tag === 'objid' && state.args)\n    return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n  else if (tag === 'objid')\n    return this._encodeObjid(data, null, null);\n  else if (tag === 'gentime' || tag === 'utctime')\n    return this._encodeTime(data, tag);\n  else if (tag === 'null_')\n    return this._encodeNull();\n  else if (tag === 'int' || tag === 'enum')\n    return this._encodeInt(data, state.args && state.reverseArgs[0]);\n  else if (tag === 'bool')\n    return this._encodeBool(data);\n  else if (tag === 'objDesc')\n    return this._encodeStr(data, tag);\n  else\n    throw new Error('Unsupported tag: ' + tag);\n};\n\nNode.prototype._isNumstr = function isNumstr(str) {\n  return /^[0-9 ]*$/.test(str);\n};\n\nNode.prototype._isPrintstr = function isPrintstr(str) {\n  return /^[A-Za-z0-9 '\\(\\)\\+,\\-\\.\\/:=\\?]*$/.test(str);\n};\n","var base = exports;\n\nbase.Reporter = require('./reporter').Reporter;\nbase.DecoderBuffer = require('./buffer').DecoderBuffer;\nbase.EncoderBuffer = require('./buffer').EncoderBuffer;\nbase.Node = require('./node');\n","var constants = require('../constants');\n\nexports.tagClass = {\n  0: 'universal',\n  1: 'application',\n  2: 'context',\n  3: 'private'\n};\nexports.tagClassByName = constants._reverse(exports.tagClass);\n\nexports.tag = {\n  0x00: 'end',\n  0x01: 'bool',\n  0x02: 'int',\n  0x03: 'bitstr',\n  0x04: 'octstr',\n  0x05: 'null_',\n  0x06: 'objid',\n  0x07: 'objDesc',\n  0x08: 'external',\n  0x09: 'real',\n  0x0a: 'enum',\n  0x0b: 'embed',\n  0x0c: 'utf8str',\n  0x0d: 'relativeOid',\n  0x10: 'seq',\n  0x11: 'set',\n  0x12: 'numstr',\n  0x13: 'printstr',\n  0x14: 't61str',\n  0x15: 'videostr',\n  0x16: 'ia5str',\n  0x17: 'utctime',\n  0x18: 'gentime',\n  0x19: 'graphstr',\n  0x1a: 'iso646str',\n  0x1b: 'genstr',\n  0x1c: 'unistr',\n  0x1d: 'charstr',\n  0x1e: 'bmpstr'\n};\nexports.tagByName = constants._reverse(exports.tag);\n","var constants = exports;\n\n// Helper\nconstants._reverse = function reverse(map) {\n  var res = {};\n\n  Object.keys(map).forEach(function(key) {\n    // Convert key to integer if it is stringified\n    if ((key | 0) == key)\n      key = key | 0;\n\n    var value = map[key];\n    res[value] = key;\n  });\n\n  return res;\n};\n\nconstants.der = require('./der');\n","var inherits = require('inherits');\n\nvar asn1 = require('../../asn1');\nvar base = asn1.base;\nvar bignum = asn1.bignum;\n\n// Import DER constants\nvar der = asn1.constants.der;\n\nfunction DERDecoder(entity) {\n  this.enc = 'der';\n  this.name = entity.name;\n  this.entity = entity;\n\n  // Construct base tree\n  this.tree = new DERNode();\n  this.tree._init(entity.body);\n};\nmodule.exports = DERDecoder;\n\nDERDecoder.prototype.decode = function decode(data, options) {\n  if (!(data instanceof base.DecoderBuffer))\n    data = new base.DecoderBuffer(data, options);\n\n  return this.tree._decode(data, options);\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n  base.Node.call(this, 'der', parent);\n}\ninherits(DERNode, base.Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n  if (buffer.isEmpty())\n    return false;\n\n  var state = buffer.save();\n  var decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n  if (buffer.isError(decodedTag))\n    return decodedTag;\n\n  buffer.restore(state);\n\n  return decodedTag.tag === tag || decodedTag.tagStr === tag ||\n    (decodedTag.tagStr + 'of') === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n  var decodedTag = derDecodeTag(buffer,\n                                'Failed to decode tag of \"' + tag + '\"');\n  if (buffer.isError(decodedTag))\n    return decodedTag;\n\n  var len = derDecodeLen(buffer,\n                         decodedTag.primitive,\n                         'Failed to get length of \"' + tag + '\"');\n\n  // Failure\n  if (buffer.isError(len))\n    return len;\n\n  if (!any &&\n      decodedTag.tag !== tag &&\n      decodedTag.tagStr !== tag &&\n      decodedTag.tagStr + 'of' !== tag) {\n    return buffer.error('Failed to match tag: \"' + tag + '\"');\n  }\n\n  if (decodedTag.primitive || len !== null)\n    return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n  // Indefinite length... find END tag\n  var state = buffer.save();\n  var res = this._skipUntilEnd(\n      buffer,\n      'Failed to skip indefinite length body: \"' + this.tag + '\"');\n  if (buffer.isError(res))\n    return res;\n\n  len = buffer.offset - state.offset;\n  buffer.restore(state);\n  return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n  while (true) {\n    var tag = derDecodeTag(buffer, fail);\n    if (buffer.isError(tag))\n      return tag;\n    var len = derDecodeLen(buffer, tag.primitive, fail);\n    if (buffer.isError(len))\n      return len;\n\n    var res;\n    if (tag.primitive || len !== null)\n      res = buffer.skip(len)\n    else\n      res = this._skipUntilEnd(buffer, fail);\n\n    // Failure\n    if (buffer.isError(res))\n      return res;\n\n    if (tag.tagStr === 'end')\n      break;\n  }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,\n                                                    options) {\n  var result = [];\n  while (!buffer.isEmpty()) {\n    var possibleEnd = this._peekTag(buffer, 'end');\n    if (buffer.isError(possibleEnd))\n      return possibleEnd;\n\n    var res = decoder.decode(buffer, 'der', options);\n    if (buffer.isError(res) && possibleEnd)\n      break;\n    result.push(res);\n  }\n  return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n  if (tag === 'bitstr') {\n    var unused = buffer.readUInt8();\n    if (buffer.isError(unused))\n      return unused;\n    return { unused: unused, data: buffer.raw() };\n  } else if (tag === 'bmpstr') {\n    var raw = buffer.raw();\n    if (raw.length % 2 === 1)\n      return buffer.error('Decoding of string type: bmpstr length mismatch');\n\n    var str = '';\n    for (var i = 0; i < raw.length / 2; i++) {\n      str += String.fromCharCode(raw.readUInt16BE(i * 2));\n    }\n    return str;\n  } else if (tag === 'numstr') {\n    var numstr = buffer.raw().toString('ascii');\n    if (!this._isNumstr(numstr)) {\n      return buffer.error('Decoding of string type: ' +\n                          'numstr unsupported characters');\n    }\n    return numstr;\n  } else if (tag === 'octstr') {\n    return buffer.raw();\n  } else if (tag === 'objDesc') {\n    return buffer.raw();\n  } else if (tag === 'printstr') {\n    var printstr = buffer.raw().toString('ascii');\n    if (!this._isPrintstr(printstr)) {\n      return buffer.error('Decoding of string type: ' +\n                          'printstr unsupported characters');\n    }\n    return printstr;\n  } else if (/str$/.test(tag)) {\n    return buffer.raw().toString();\n  } else {\n    return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n  }\n};\n\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n  var result;\n  var identifiers = [];\n  var ident = 0;\n  while (!buffer.isEmpty()) {\n    var subident = buffer.readUInt8();\n    ident <<= 7;\n    ident |= subident & 0x7f;\n    if ((subident & 0x80) === 0) {\n      identifiers.push(ident);\n      ident = 0;\n    }\n  }\n  if (subident & 0x80)\n    identifiers.push(ident);\n\n  var first = (identifiers[0] / 40) | 0;\n  var second = identifiers[0] % 40;\n\n  if (relative)\n    result = identifiers;\n  else\n    result = [first, second].concat(identifiers.slice(1));\n\n  if (values) {\n    var tmp = values[result.join(' ')];\n    if (tmp === undefined)\n      tmp = values[result.join('.')];\n    if (tmp !== undefined)\n      result = tmp;\n  }\n\n  return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n  var str = buffer.raw().toString();\n  if (tag === 'gentime') {\n    var year = str.slice(0, 4) | 0;\n    var mon = str.slice(4, 6) | 0;\n    var day = str.slice(6, 8) | 0;\n    var hour = str.slice(8, 10) | 0;\n    var min = str.slice(10, 12) | 0;\n    var sec = str.slice(12, 14) | 0;\n  } else if (tag === 'utctime') {\n    var year = str.slice(0, 2) | 0;\n    var mon = str.slice(2, 4) | 0;\n    var day = str.slice(4, 6) | 0;\n    var hour = str.slice(6, 8) | 0;\n    var min = str.slice(8, 10) | 0;\n    var sec = str.slice(10, 12) | 0;\n    if (year < 70)\n      year = 2000 + year;\n    else\n      year = 1900 + year;\n  } else {\n    return buffer.error('Decoding ' + tag + ' time is not supported yet');\n  }\n\n  return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\n\nDERNode.prototype._decodeNull = function decodeNull(buffer) {\n  return null;\n};\n\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n  var res = buffer.readUInt8();\n  if (buffer.isError(res))\n    return res;\n  else\n    return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n  // Bigint, return as it is (assume big endian)\n  var raw = buffer.raw();\n  var res = new bignum(raw);\n\n  if (values)\n    res = values[res.toString(10)] || res;\n\n  return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n  if (typeof entity === 'function')\n    entity = entity(obj);\n  return entity._getDecoder('der').tree;\n};\n\n// Utility methods\n\nfunction derDecodeTag(buf, fail) {\n  var tag = buf.readUInt8(fail);\n  if (buf.isError(tag))\n    return tag;\n\n  var cls = der.tagClass[tag >> 6];\n  var primitive = (tag & 0x20) === 0;\n\n  // Multi-octet tag - load\n  if ((tag & 0x1f) === 0x1f) {\n    var oct = tag;\n    tag = 0;\n    while ((oct & 0x80) === 0x80) {\n      oct = buf.readUInt8(fail);\n      if (buf.isError(oct))\n        return oct;\n\n      tag <<= 7;\n      tag |= oct & 0x7f;\n    }\n  } else {\n    tag &= 0x1f;\n  }\n  var tagStr = der.tag[tag];\n\n  return {\n    cls: cls,\n    primitive: primitive,\n    tag: tag,\n    tagStr: tagStr\n  };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n  var len = buf.readUInt8(fail);\n  if (buf.isError(len))\n    return len;\n\n  // Indefinite form\n  if (!primitive && len === 0x80)\n    return null;\n\n  // Definite form\n  if ((len & 0x80) === 0) {\n    // Short form\n    return len;\n  }\n\n  // Long form\n  var num = len & 0x7f;\n  if (num > 4)\n    return buf.error('length octect is too long');\n\n  len = 0;\n  for (var i = 0; i < num; i++) {\n    len <<= 8;\n    var j = buf.readUInt8(fail);\n    if (buf.isError(j))\n      return j;\n    len |= j;\n  }\n\n  return len;\n}\n","var inherits = require('inherits');\nvar Buffer = require('buffer').Buffer;\n\nvar DERDecoder = require('./der');\n\nfunction PEMDecoder(entity) {\n  DERDecoder.call(this, entity);\n  this.enc = 'pem';\n};\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n  var lines = data.toString().split(/[\\r\\n]+/g);\n\n  var label = options.label.toUpperCase();\n\n  var re = /^-----(BEGIN|END) ([^-]+)-----$/;\n  var start = -1;\n  var end = -1;\n  for (var i = 0; i < lines.length; i++) {\n    var match = lines[i].match(re);\n    if (match === null)\n      continue;\n\n    if (match[2] !== label)\n      continue;\n\n    if (start === -1) {\n      if (match[1] !== 'BEGIN')\n        break;\n      start = i;\n    } else {\n      if (match[1] !== 'END')\n        break;\n      end = i;\n      break;\n    }\n  }\n  if (start === -1 || end === -1)\n    throw new Error('PEM section not found for: ' + label);\n\n  var base64 = lines.slice(start + 1, end).join('');\n  // Remove excessive symbols\n  base64.replace(/[^a-z0-9\\+\\/=]+/gi, '');\n\n  var input = new Buffer(base64, 'base64');\n  return DERDecoder.prototype.decode.call(this, input, options);\n};\n","var decoders = exports;\n\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');\n","var inherits = require('inherits');\nvar Buffer = require('buffer').Buffer;\n\nvar asn1 = require('../../asn1');\nvar base = asn1.base;\n\n// Import DER constants\nvar der = asn1.constants.der;\n\nfunction DEREncoder(entity) {\n  this.enc = 'der';\n  this.name = entity.name;\n  this.entity = entity;\n\n  // Construct base tree\n  this.tree = new DERNode();\n  this.tree._init(entity.body);\n};\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n  return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n  base.Node.call(this, 'der', parent);\n}\ninherits(DERNode, base.Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n                                                              primitive,\n                                                              cls,\n                                                              content) {\n  var encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n  // Short form\n  if (content.length < 0x80) {\n    var header = new Buffer(2);\n    header[0] = encodedTag;\n    header[1] = content.length;\n    return this._createEncoderBuffer([ header, content ]);\n  }\n\n  // Long form\n  // Count octets required to store length\n  var lenOctets = 1;\n  for (var i = content.length; i >= 0x100; i >>= 8)\n    lenOctets++;\n\n  var header = new Buffer(1 + 1 + lenOctets);\n  header[0] = encodedTag;\n  header[1] = 0x80 | lenOctets;\n\n  for (var i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n    header[i] = j & 0xff;\n\n  return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n  if (tag === 'bitstr') {\n    return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n  } else if (tag === 'bmpstr') {\n    var buf = new Buffer(str.length * 2);\n    for (var i = 0; i < str.length; i++) {\n      buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n    }\n    return this._createEncoderBuffer(buf);\n  } else if (tag === 'numstr') {\n    if (!this._isNumstr(str)) {\n      return this.reporter.error('Encoding of string type: numstr supports ' +\n                                 'only digits and space');\n    }\n    return this._createEncoderBuffer(str);\n  } else if (tag === 'printstr') {\n    if (!this._isPrintstr(str)) {\n      return this.reporter.error('Encoding of string type: printstr supports ' +\n                                 'only latin upper and lower case letters, ' +\n                                 'digits, space, apostrophe, left and rigth ' +\n                                 'parenthesis, plus sign, comma, hyphen, ' +\n                                 'dot, slash, colon, equal sign, ' +\n                                 'question mark');\n    }\n    return this._createEncoderBuffer(str);\n  } else if (/str$/.test(tag)) {\n    return this._createEncoderBuffer(str);\n  } else if (tag === 'objDesc') {\n    return this._createEncoderBuffer(str);\n  } else {\n    return this.reporter.error('Encoding of string type: ' + tag +\n                               ' unsupported');\n  }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n  if (typeof id === 'string') {\n    if (!values)\n      return this.reporter.error('string objid given, but no values map found');\n    if (!values.hasOwnProperty(id))\n      return this.reporter.error('objid not found in values map');\n    id = values[id].split(/[\\s\\.]+/g);\n    for (var i = 0; i < id.length; i++)\n      id[i] |= 0;\n  } else if (Array.isArray(id)) {\n    id = id.slice();\n    for (var i = 0; i < id.length; i++)\n      id[i] |= 0;\n  }\n\n  if (!Array.isArray(id)) {\n    return this.reporter.error('objid() should be either array or string, ' +\n                               'got: ' + JSON.stringify(id));\n  }\n\n  if (!relative) {\n    if (id[1] >= 40)\n      return this.reporter.error('Second objid identifier OOB');\n    id.splice(0, 2, id[0] * 40 + id[1]);\n  }\n\n  // Count number of octets\n  var size = 0;\n  for (var i = 0; i < id.length; i++) {\n    var ident = id[i];\n    for (size++; ident >= 0x80; ident >>= 7)\n      size++;\n  }\n\n  var objid = new Buffer(size);\n  var offset = objid.length - 1;\n  for (var i = id.length - 1; i >= 0; i--) {\n    var ident = id[i];\n    objid[offset--] = ident & 0x7f;\n    while ((ident >>= 7) > 0)\n      objid[offset--] = 0x80 | (ident & 0x7f);\n  }\n\n  return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n  if (num < 10)\n    return '0' + num;\n  else\n    return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n  var str;\n  var date = new Date(time);\n\n  if (tag === 'gentime') {\n    str = [\n      two(date.getFullYear()),\n      two(date.getUTCMonth() + 1),\n      two(date.getUTCDate()),\n      two(date.getUTCHours()),\n      two(date.getUTCMinutes()),\n      two(date.getUTCSeconds()),\n      'Z'\n    ].join('');\n  } else if (tag === 'utctime') {\n    str = [\n      two(date.getFullYear() % 100),\n      two(date.getUTCMonth() + 1),\n      two(date.getUTCDate()),\n      two(date.getUTCHours()),\n      two(date.getUTCMinutes()),\n      two(date.getUTCSeconds()),\n      'Z'\n    ].join('');\n  } else {\n    this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n  }\n\n  return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n  return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n  if (typeof num === 'string') {\n    if (!values)\n      return this.reporter.error('String int or enum given, but no values map');\n    if (!values.hasOwnProperty(num)) {\n      return this.reporter.error('Values map doesn\\'t contain: ' +\n                                 JSON.stringify(num));\n    }\n    num = values[num];\n  }\n\n  // Bignum, assume big endian\n  if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n    var numArray = num.toArray();\n    if (!num.sign && numArray[0] & 0x80) {\n      numArray.unshift(0);\n    }\n    num = new Buffer(numArray);\n  }\n\n  if (Buffer.isBuffer(num)) {\n    var size = num.length;\n    if (num.length === 0)\n      size++;\n\n    var out = new Buffer(size);\n    num.copy(out);\n    if (num.length === 0)\n      out[0] = 0\n    return this._createEncoderBuffer(out);\n  }\n\n  if (num < 0x80)\n    return this._createEncoderBuffer(num);\n\n  if (num < 0x100)\n    return this._createEncoderBuffer([0, num]);\n\n  var size = 1;\n  for (var i = num; i >= 0x100; i >>= 8)\n    size++;\n\n  var out = new Array(size);\n  for (var i = out.length - 1; i >= 0; i--) {\n    out[i] = num & 0xff;\n    num >>= 8;\n  }\n  if(out[0] & 0x80) {\n    out.unshift(0);\n  }\n\n  return this._createEncoderBuffer(new Buffer(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n  return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n  if (typeof entity === 'function')\n    entity = entity(obj);\n  return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n  var state = this._baseState;\n  var i;\n  if (state['default'] === null)\n    return false;\n\n  var data = dataBuffer.join();\n  if (state.defaultBuffer === undefined)\n    state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n  if (data.length !== state.defaultBuffer.length)\n    return false;\n\n  for (i=0; i < data.length; i++)\n    if (data[i] !== state.defaultBuffer[i])\n      return false;\n\n  return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n  var res;\n\n  if (tag === 'seqof')\n    tag = 'seq';\n  else if (tag === 'setof')\n    tag = 'set';\n\n  if (der.tagByName.hasOwnProperty(tag))\n    res = der.tagByName[tag];\n  else if (typeof tag === 'number' && (tag | 0) === tag)\n    res = tag;\n  else\n    return reporter.error('Unknown tag: ' + tag);\n\n  if (res >= 0x1f)\n    return reporter.error('Multi-octet tag encoding unsupported');\n\n  if (!primitive)\n    res |= 0x20;\n\n  res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n  return res;\n}\n","var inherits = require('inherits');\n\nvar DEREncoder = require('./der');\n\nfunction PEMEncoder(entity) {\n  DEREncoder.call(this, entity);\n  this.enc = 'pem';\n};\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n  var buf = DEREncoder.prototype.encode.call(this, data);\n\n  var p = buf.toString('base64');\n  var out = [ '-----BEGIN ' + options.label + '-----' ];\n  for (var i = 0; i < p.length; i += 64)\n    out.push(p.slice(i, i + 64));\n  out.push('-----END ' + options.label + '-----');\n  return out.join('\\n');\n};\n","var encoders = exports;\n\nencoders.der = require('./der');\nencoders.pem = require('./pem');\n","var asn1 = exports;\n\nasn1.bignum = require('bn.js');\n\nasn1.define = require('./asn1/api').define;\nasn1.base = require('./asn1/base');\nasn1.constants = require('./asn1/constants');\nasn1.decoders = require('./asn1/decoders');\nasn1.encoders = require('./asn1/encoders');\n","// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js\n// thanks to @Rantanen\n\n'use strict'\n\nvar asn = require('asn1.js')\n\nvar Time = asn.define('Time', function () {\n  this.choice({\n    utcTime: this.utctime(),\n    generalTime: this.gentime()\n  })\n})\n\nvar AttributeTypeValue = asn.define('AttributeTypeValue', function () {\n  this.seq().obj(\n    this.key('type').objid(),\n    this.key('value').any()\n  )\n})\n\nvar AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () {\n  this.seq().obj(\n    this.key('algorithm').objid(),\n    this.key('parameters').optional()\n  )\n})\n\nvar SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () {\n  this.seq().obj(\n    this.key('algorithm').use(AlgorithmIdentifier),\n    this.key('subjectPublicKey').bitstr()\n  )\n})\n\nvar RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () {\n  this.setof(AttributeTypeValue)\n})\n\nvar RDNSequence = asn.define('RDNSequence', function () {\n  this.seqof(RelativeDistinguishedName)\n})\n\nvar Name = asn.define('Name', function () {\n  this.choice({\n    rdnSequence: this.use(RDNSequence)\n  })\n})\n\nvar Validity = asn.define('Validity', function () {\n  this.seq().obj(\n    this.key('notBefore').use(Time),\n    this.key('notAfter').use(Time)\n  )\n})\n\nvar Extension = asn.define('Extension', function () {\n  this.seq().obj(\n    this.key('extnID').objid(),\n    this.key('critical').bool().def(false),\n    this.key('extnValue').octstr()\n  )\n})\n\nvar TBSCertificate = asn.define('TBSCertificate', function () {\n  this.seq().obj(\n    this.key('version').explicit(0).int(),\n    this.key('serialNumber').int(),\n    this.key('signature').use(AlgorithmIdentifier),\n    this.key('issuer').use(Name),\n    this.key('validity').use(Validity),\n    this.key('subject').use(Name),\n    this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo),\n    this.key('issuerUniqueID').implicit(1).bitstr().optional(),\n    this.key('subjectUniqueID').implicit(2).bitstr().optional(),\n    this.key('extensions').explicit(3).seqof(Extension).optional()\n  )\n})\n\nvar X509Certificate = asn.define('X509Certificate', function () {\n  this.seq().obj(\n    this.key('tbsCertificate').use(TBSCertificate),\n    this.key('signatureAlgorithm').use(AlgorithmIdentifier),\n    this.key('signatureValue').bitstr()\n  )\n})\n\nmodule.exports = X509Certificate\n","// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js\n// Fedor, you are amazing.\n'use strict'\n\nvar asn1 = require('asn1.js')\n\nexports.certificate = require('./certificate')\n\nvar RSAPrivateKey = asn1.define('RSAPrivateKey', function () {\n  this.seq().obj(\n    this.key('version').int(),\n    this.key('modulus').int(),\n    this.key('publicExponent').int(),\n    this.key('privateExponent').int(),\n    this.key('prime1').int(),\n    this.key('prime2').int(),\n    this.key('exponent1').int(),\n    this.key('exponent2').int(),\n    this.key('coefficient').int()\n  )\n})\nexports.RSAPrivateKey = RSAPrivateKey\n\nvar RSAPublicKey = asn1.define('RSAPublicKey', function () {\n  this.seq().obj(\n    this.key('modulus').int(),\n    this.key('publicExponent').int()\n  )\n})\nexports.RSAPublicKey = RSAPublicKey\n\nvar PublicKey = asn1.define('SubjectPublicKeyInfo', function () {\n  this.seq().obj(\n    this.key('algorithm').use(AlgorithmIdentifier),\n    this.key('subjectPublicKey').bitstr()\n  )\n})\nexports.PublicKey = PublicKey\n\nvar AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {\n  this.seq().obj(\n    this.key('algorithm').objid(),\n    this.key('none').null_().optional(),\n    this.key('curve').objid().optional(),\n    this.key('params').seq().obj(\n      this.key('p').int(),\n      this.key('q').int(),\n      this.key('g').int()\n    ).optional()\n  )\n})\n\nvar PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {\n  this.seq().obj(\n    this.key('version').int(),\n    this.key('algorithm').use(AlgorithmIdentifier),\n    this.key('subjectPrivateKey').octstr()\n  )\n})\nexports.PrivateKey = PrivateKeyInfo\nvar EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {\n  this.seq().obj(\n    this.key('algorithm').seq().obj(\n      this.key('id').objid(),\n      this.key('decrypt').seq().obj(\n        this.key('kde').seq().obj(\n          this.key('id').objid(),\n          this.key('kdeparams').seq().obj(\n            this.key('salt').octstr(),\n            this.key('iters').int()\n          )\n        ),\n        this.key('cipher').seq().obj(\n          this.key('algo').objid(),\n          this.key('iv').octstr()\n        )\n      )\n    ),\n    this.key('subjectPrivateKey').octstr()\n  )\n})\n\nexports.EncryptedPrivateKey = EncryptedPrivateKeyInfo\n\nvar DSAPrivateKey = asn1.define('DSAPrivateKey', function () {\n  this.seq().obj(\n    this.key('version').int(),\n    this.key('p').int(),\n    this.key('q').int(),\n    this.key('g').int(),\n    this.key('pub_key').int(),\n    this.key('priv_key').int()\n  )\n})\nexports.DSAPrivateKey = DSAPrivateKey\n\nexports.DSAparam = asn1.define('DSAparam', function () {\n  this.int()\n})\n\nvar ECPrivateKey = asn1.define('ECPrivateKey', function () {\n  this.seq().obj(\n    this.key('version').int(),\n    this.key('privateKey').octstr(),\n    this.key('parameters').optional().explicit(0).use(ECParameters),\n    this.key('publicKey').optional().explicit(1).bitstr()\n  )\n})\nexports.ECPrivateKey = ECPrivateKey\n\nvar ECParameters = asn1.define('ECParameters', function () {\n  this.choice({\n    namedCurve: this.objid()\n  })\n})\n\nexports.signature = asn1.define('signature', function () {\n  this.seq().obj(\n    this.key('r').int(),\n    this.key('s').int()\n  )\n})\n","// adapted from https://github.com/apatil/pemstrip\nvar findProc = /Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r\\+\\/\\=]+)[\\n\\r]+/m\nvar startRegex = /^-----BEGIN ((?:.* KEY)|CERTIFICATE)-----/m\nvar fullRegex = /^-----BEGIN ((?:.* KEY)|CERTIFICATE)-----([0-9A-z\\n\\r\\+\\/\\=]+)-----END \\1-----$/m\nvar evp = require('evp_bytestokey')\nvar ciphers = require('browserify-aes')\nmodule.exports = function (okey, password) {\n  var key = okey.toString()\n  var match = key.match(findProc)\n  var decrypted\n  if (!match) {\n    var match2 = key.match(fullRegex)\n    decrypted = new Buffer(match2[2].replace(/[\\r\\n]/g, ''), 'base64')\n  } else {\n    var suite = 'aes' + match[1]\n    var iv = new Buffer(match[2], 'hex')\n    var cipherText = new Buffer(match[3].replace(/[\\r\\n]/g, ''), 'base64')\n    var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key\n    var out = []\n    var cipher = ciphers.createDecipheriv(suite, cipherKey, iv)\n    out.push(cipher.update(cipherText))\n    out.push(cipher.final())\n    decrypted = Buffer.concat(out)\n  }\n  var tag = key.match(startRegex)[1]\n  return {\n    tag: tag,\n    data: decrypted\n  }\n}\n","var asn1 = require('./asn1')\nvar aesid = require('./aesid.json')\nvar fixProc = require('./fixProc')\nvar ciphers = require('browserify-aes')\nvar compat = require('pbkdf2')\nmodule.exports = parseKeys\n\nfunction parseKeys (buffer) {\n  var password\n  if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n    password = buffer.passphrase\n    buffer = buffer.key\n  }\n  if (typeof buffer === 'string') {\n    buffer = new Buffer(buffer)\n  }\n\n  var stripped = fixProc(buffer, password)\n\n  var type = stripped.tag\n  var data = stripped.data\n  var subtype, ndata\n  switch (type) {\n    case 'CERTIFICATE':\n      ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo\n      // falls through\n    case 'PUBLIC KEY':\n      if (!ndata) {\n        ndata = asn1.PublicKey.decode(data, 'der')\n      }\n      subtype = ndata.algorithm.algorithm.join('.')\n      switch (subtype) {\n        case '1.2.840.113549.1.1.1':\n          return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der')\n        case '1.2.840.10045.2.1':\n          ndata.subjectPrivateKey = ndata.subjectPublicKey\n          return {\n            type: 'ec',\n            data: ndata\n          }\n        case '1.2.840.10040.4.1':\n          ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der')\n          return {\n            type: 'dsa',\n            data: ndata.algorithm.params\n          }\n        default: throw new Error('unknown key id ' + subtype)\n      }\n      throw new Error('unknown key type ' + type)\n    case 'ENCRYPTED PRIVATE KEY':\n      data = asn1.EncryptedPrivateKey.decode(data, 'der')\n      data = decrypt(data, password)\n      // falls through\n    case 'PRIVATE KEY':\n      ndata = asn1.PrivateKey.decode(data, 'der')\n      subtype = ndata.algorithm.algorithm.join('.')\n      switch (subtype) {\n        case '1.2.840.113549.1.1.1':\n          return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der')\n        case '1.2.840.10045.2.1':\n          return {\n            curve: ndata.algorithm.curve,\n            privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey\n          }\n        case '1.2.840.10040.4.1':\n          ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der')\n          return {\n            type: 'dsa',\n            params: ndata.algorithm.params\n          }\n        default: throw new Error('unknown key id ' + subtype)\n      }\n      throw new Error('unknown key type ' + type)\n    case 'RSA PUBLIC KEY':\n      return asn1.RSAPublicKey.decode(data, 'der')\n    case 'RSA PRIVATE KEY':\n      return asn1.RSAPrivateKey.decode(data, 'der')\n    case 'DSA PRIVATE KEY':\n      return {\n        type: 'dsa',\n        params: asn1.DSAPrivateKey.decode(data, 'der')\n      }\n    case 'EC PRIVATE KEY':\n      data = asn1.ECPrivateKey.decode(data, 'der')\n      return {\n        curve: data.parameters.value,\n        privateKey: data.privateKey\n      }\n    default: throw new Error('unknown key type ' + type)\n  }\n}\nparseKeys.signature = asn1.signature\nfunction decrypt (data, password) {\n  var salt = data.algorithm.decrypt.kde.kdeparams.salt\n  var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10)\n  var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')]\n  var iv = data.algorithm.decrypt.cipher.iv\n  var cipherText = data.subjectPrivateKey\n  var keylen = parseInt(algo.split('-')[1], 10) / 8\n  var key = compat.pbkdf2Sync(password, salt, iters, keylen)\n  var cipher = ciphers.createDecipheriv(algo, key, iv)\n  var out = []\n  out.push(cipher.update(cipherText))\n  out.push(cipher.final())\n  return Buffer.concat(out)\n}\n","// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar createHmac = require('create-hmac')\nvar crt = require('browserify-rsa')\nvar EC = require('elliptic').ec\nvar BN = require('bn.js')\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction sign (hash, key, hashType, signType, tag) {\n  var priv = parseKeys(key)\n  if (priv.curve) {\n    // rsa keys can be interpreted as ecdsa ones in openssl\n    if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n    return ecSign(hash, priv)\n  } else if (priv.type === 'dsa') {\n    if (signType !== 'dsa') throw new Error('wrong private key type')\n    return dsaSign(hash, priv, hashType)\n  } else {\n    if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n  }\n  hash = Buffer.concat([tag, hash])\n  var len = priv.modulus.byteLength()\n  var pad = [ 0, 1 ]\n  while (hash.length + pad.length + 1 < len) pad.push(0xff)\n  pad.push(0x00)\n  var i = -1\n  while (++i < hash.length) pad.push(hash[i])\n\n  var out = crt(pad, priv)\n  return out\n}\n\nfunction ecSign (hash, priv) {\n  var curveId = curves[priv.curve.join('.')]\n  if (!curveId) throw new Error('unknown curve ' + priv.curve.join('.'))\n\n  var curve = new EC(curveId)\n  var key = curve.keyFromPrivate(priv.privateKey)\n  var out = key.sign(hash)\n\n  return new Buffer(out.toDER())\n}\n\nfunction dsaSign (hash, priv, algo) {\n  var x = priv.params.priv_key\n  var p = priv.params.p\n  var q = priv.params.q\n  var g = priv.params.g\n  var r = new BN(0)\n  var k\n  var H = bits2int(hash, q).mod(q)\n  var s = false\n  var kv = getKey(x, q, hash, algo)\n  while (s === false) {\n    k = makeKey(q, kv, algo)\n    r = makeR(g, k, p, q)\n    s = k.invm(q).imul(H.add(x.mul(r))).mod(q)\n    if (s.cmpn(0) === 0) {\n      s = false\n      r = new BN(0)\n    }\n  }\n  return toDER(r, s)\n}\n\nfunction toDER (r, s) {\n  r = r.toArray()\n  s = s.toArray()\n\n  // Pad values\n  if (r[0] & 0x80) r = [ 0 ].concat(r)\n  if (s[0] & 0x80) s = [ 0 ].concat(s)\n\n  var total = r.length + s.length + 4\n  var res = [ 0x30, total, 0x02, r.length ]\n  res = res.concat(r, [ 0x02, s.length ], s)\n  return new Buffer(res)\n}\n\nfunction getKey (x, q, hash, algo) {\n  x = new Buffer(x.toArray())\n  if (x.length < q.byteLength()) {\n    var zeros = new Buffer(q.byteLength() - x.length)\n    zeros.fill(0)\n    x = Buffer.concat([ zeros, x ])\n  }\n  var hlen = hash.length\n  var hbits = bits2octets(hash, q)\n  var v = new Buffer(hlen)\n  v.fill(1)\n  var k = new Buffer(hlen)\n  k.fill(0)\n  k = createHmac(algo, k).update(v).update(new Buffer([ 0 ])).update(x).update(hbits).digest()\n  v = createHmac(algo, k).update(v).digest()\n  k = createHmac(algo, k).update(v).update(new Buffer([ 1 ])).update(x).update(hbits).digest()\n  v = createHmac(algo, k).update(v).digest()\n  return { k: k, v: v }\n}\n\nfunction bits2int (obits, q) {\n  var bits = new BN(obits)\n  var shift = (obits.length << 3) - q.bitLength()\n  if (shift > 0) bits.ishrn(shift)\n  return bits\n}\n\nfunction bits2octets (bits, q) {\n  bits = bits2int(bits, q)\n  bits = bits.mod(q)\n  var out = new Buffer(bits.toArray())\n  if (out.length < q.byteLength()) {\n    var zeros = new Buffer(q.byteLength() - out.length)\n    zeros.fill(0)\n    out = Buffer.concat([ zeros, out ])\n  }\n  return out\n}\n\nfunction makeKey (q, kv, algo) {\n  var t\n  var k\n\n  do {\n    t = new Buffer(0)\n\n    while (t.length * 8 < q.bitLength()) {\n      kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n      t = Buffer.concat([ t, kv.v ])\n    }\n\n    k = bits2int(t, q)\n    kv.k = createHmac(algo, kv.k).update(kv.v).update(new Buffer([ 0 ])).digest()\n    kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n  } while (k.cmp(q) !== -1)\n\n  return k\n}\n\nfunction makeR (g, k, p, q) {\n  return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q)\n}\n\nmodule.exports = sign\nmodule.exports.getKey = getKey\nmodule.exports.makeKey = makeKey\n","// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar BN = require('bn.js')\nvar EC = require('elliptic').ec\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction verify (sig, hash, key, signType, tag) {\n  var pub = parseKeys(key)\n  if (pub.type === 'ec') {\n    // rsa keys can be interpreted as ecdsa ones in openssl\n    if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n    return ecVerify(sig, hash, pub)\n  } else if (pub.type === 'dsa') {\n    if (signType !== 'dsa') throw new Error('wrong public key type')\n    return dsaVerify(sig, hash, pub)\n  } else {\n    if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n  }\n  hash = Buffer.concat([tag, hash])\n  var len = pub.modulus.byteLength()\n  var pad = [ 1 ]\n  var padNum = 0\n  while (hash.length + pad.length + 2 < len) {\n    pad.push(0xff)\n    padNum++\n  }\n  pad.push(0x00)\n  var i = -1\n  while (++i < hash.length) {\n    pad.push(hash[i])\n  }\n  pad = new Buffer(pad)\n  var red = BN.mont(pub.modulus)\n  sig = new BN(sig).toRed(red)\n\n  sig = sig.redPow(new BN(pub.publicExponent))\n  sig = new Buffer(sig.fromRed().toArray())\n  var out = padNum < 8 ? 1 : 0\n  len = Math.min(sig.length, pad.length)\n  if (sig.length !== pad.length) out = 1\n\n  i = -1\n  while (++i < len) out |= sig[i] ^ pad[i]\n  return out === 0\n}\n\nfunction ecVerify (sig, hash, pub) {\n  var curveId = curves[pub.data.algorithm.curve.join('.')]\n  if (!curveId) throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.'))\n\n  var curve = new EC(curveId)\n  var pubkey = pub.data.subjectPrivateKey.data\n\n  return curve.verify(hash, sig, pubkey)\n}\n\nfunction dsaVerify (sig, hash, pub) {\n  var p = pub.data.p\n  var q = pub.data.q\n  var g = pub.data.g\n  var y = pub.data.pub_key\n  var unpacked = parseKeys.signature.decode(sig, 'der')\n  var s = unpacked.s\n  var r = unpacked.r\n  checkValue(s, q)\n  checkValue(r, q)\n  var montp = BN.mont(p)\n  var w = s.invm(q)\n  var v = g.toRed(montp)\n    .redPow(new BN(hash).mul(w).mod(q))\n    .fromRed()\n    .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed())\n    .mod(p)\n    .mod(q)\n  return v.cmp(r) === 0\n}\n\nfunction checkValue (b, q) {\n  if (b.cmpn(0) <= 0) throw new Error('invalid sig')\n  if (b.cmp(q) >= q) throw new Error('invalid sig')\n}\n\nmodule.exports = verify\n","var createHash = require('create-hash')\nvar stream = require('stream')\nvar inherits = require('inherits')\nvar sign = require('./sign')\nvar verify = require('./verify')\n\nvar algorithms = require('./algorithms.json')\nObject.keys(algorithms).forEach(function (key) {\n  algorithms[key].id = new Buffer(algorithms[key].id, 'hex')\n  algorithms[key.toLowerCase()] = algorithms[key]\n})\n\nfunction Sign (algorithm) {\n  stream.Writable.call(this)\n\n  var data = algorithms[algorithm]\n  if (!data) throw new Error('Unknown message digest')\n\n  this._hashType = data.hash\n  this._hash = createHash(data.hash)\n  this._tag = data.id\n  this._signType = data.sign\n}\ninherits(Sign, stream.Writable)\n\nSign.prototype._write = function _write (data, _, done) {\n  this._hash.update(data)\n  done()\n}\n\nSign.prototype.update = function update (data, enc) {\n  if (typeof data === 'string') data = new Buffer(data, enc)\n\n  this._hash.update(data)\n  return this\n}\n\nSign.prototype.sign = function signMethod (key, enc) {\n  this.end()\n  var hash = this._hash.digest()\n  var sig = sign(hash, key, this._hashType, this._signType, this._tag)\n\n  return enc ? sig.toString(enc) : sig\n}\n\nfunction Verify (algorithm) {\n  stream.Writable.call(this)\n\n  var data = algorithms[algorithm]\n  if (!data) throw new Error('Unknown message digest')\n\n  this._hash = createHash(data.hash)\n  this._tag = data.id\n  this._signType = data.sign\n}\ninherits(Verify, stream.Writable)\n\nVerify.prototype._write = function _write (data, _, done) {\n  this._hash.update(data)\n  done()\n}\n\nVerify.prototype.update = function update (data, enc) {\n  if (typeof data === 'string') data = new Buffer(data, enc)\n\n  this._hash.update(data)\n  return this\n}\n\nVerify.prototype.verify = function verifyMethod (key, sig, enc) {\n  if (typeof sig === 'string') sig = new Buffer(sig, enc)\n\n  this.end()\n  var hash = this._hash.digest()\n  return verify(sig, hash, key, this._signType, this._tag)\n}\n\nfunction createSign (algorithm) {\n  return new Sign(algorithm)\n}\n\nfunction createVerify (algorithm) {\n  return new Verify(algorithm)\n}\n\nmodule.exports = {\n  Sign: createSign,\n  Verify: createVerify,\n  createSign: createSign,\n  createVerify: createVerify\n}\n","var elliptic = require('elliptic')\nvar BN = require('bn.js')\n\nmodule.exports = function createECDH (curve) {\n  return new ECDH(curve)\n}\n\nvar aliases = {\n  secp256k1: {\n    name: 'secp256k1',\n    byteLength: 32\n  },\n  secp224r1: {\n    name: 'p224',\n    byteLength: 28\n  },\n  prime256v1: {\n    name: 'p256',\n    byteLength: 32\n  },\n  prime192v1: {\n    name: 'p192',\n    byteLength: 24\n  },\n  ed25519: {\n    name: 'ed25519',\n    byteLength: 32\n  },\n  secp384r1: {\n    name: 'p384',\n    byteLength: 48\n  },\n  secp521r1: {\n    name: 'p521',\n    byteLength: 66\n  }\n}\n\naliases.p224 = aliases.secp224r1\naliases.p256 = aliases.secp256r1 = aliases.prime256v1\naliases.p192 = aliases.secp192r1 = aliases.prime192v1\naliases.p384 = aliases.secp384r1\naliases.p521 = aliases.secp521r1\n\nfunction ECDH (curve) {\n  this.curveType = aliases[curve]\n  if (!this.curveType) {\n    this.curveType = {\n      name: curve\n    }\n  }\n  this.curve = new elliptic.ec(this.curveType.name) // eslint-disable-line new-cap\n  this.keys = void 0\n}\n\nECDH.prototype.generateKeys = function (enc, format) {\n  this.keys = this.curve.genKeyPair()\n  return this.getPublicKey(enc, format)\n}\n\nECDH.prototype.computeSecret = function (other, inenc, enc) {\n  inenc = inenc || 'utf8'\n  if (!Buffer.isBuffer(other)) {\n    other = new Buffer(other, inenc)\n  }\n  var otherPub = this.curve.keyFromPublic(other).getPublic()\n  var out = otherPub.mul(this.keys.getPrivate()).getX()\n  return formatReturnValue(out, enc, this.curveType.byteLength)\n}\n\nECDH.prototype.getPublicKey = function (enc, format) {\n  var key = this.keys.getPublic(format === 'compressed', true)\n  if (format === 'hybrid') {\n    if (key[key.length - 1] % 2) {\n      key[0] = 7\n    } else {\n      key[0] = 6\n    }\n  }\n  return formatReturnValue(key, enc)\n}\n\nECDH.prototype.getPrivateKey = function (enc) {\n  return formatReturnValue(this.keys.getPrivate(), enc)\n}\n\nECDH.prototype.setPublicKey = function (pub, enc) {\n  enc = enc || 'utf8'\n  if (!Buffer.isBuffer(pub)) {\n    pub = new Buffer(pub, enc)\n  }\n  this.keys._importPublic(pub)\n  return this\n}\n\nECDH.prototype.setPrivateKey = function (priv, enc) {\n  enc = enc || 'utf8'\n  if (!Buffer.isBuffer(priv)) {\n    priv = new Buffer(priv, enc)\n  }\n\n  var _priv = new BN(priv)\n  _priv = _priv.toString(16)\n  this.keys = this.curve.genKeyPair()\n  this.keys._importPrivate(_priv)\n  return this\n}\n\nfunction formatReturnValue (bn, enc, len) {\n  if (!Array.isArray(bn)) {\n    bn = bn.toArray()\n  }\n  var buf = new Buffer(bn)\n  if (len && buf.length < len) {\n    var zeros = new Buffer(len - buf.length)\n    zeros.fill(0)\n    buf = Buffer.concat([zeros, buf])\n  }\n  if (!enc) {\n    return buf\n  } else {\n    return buf.toString(enc)\n  }\n}\n","var createHash = require('create-hash');\nmodule.exports = function (seed, len) {\n  var t = new Buffer('');\n  var  i = 0, c;\n  while (t.length < len) {\n    c = i2ops(i++);\n    t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()]);\n  }\n  return t.slice(0, len);\n};\n\nfunction i2ops(c) {\n  var out = new Buffer(4);\n  out.writeUInt32BE(c,0);\n  return out;\n}","module.exports = function xor(a, b) {\n  var len = a.length;\n  var i = -1;\n  while (++i < len) {\n    a[i] ^= b[i];\n  }\n  return a\n};","var bn = require('bn.js');\nfunction withPublic(paddedMsg, key) {\n  return new Buffer(paddedMsg\n    .toRed(bn.mont(key.modulus))\n    .redPow(new bn(key.publicExponent))\n    .fromRed()\n    .toArray());\n}\n\nmodule.exports = withPublic;","var parseKeys = require('parse-asn1');\nvar randomBytes = require('randombytes');\nvar createHash = require('create-hash');\nvar mgf = require('./mgf');\nvar xor = require('./xor');\nvar bn = require('bn.js');\nvar withPublic = require('./withPublic');\nvar crt = require('browserify-rsa');\n\nvar constants = {\n  RSA_PKCS1_OAEP_PADDING: 4,\n  RSA_PKCS1_PADDIN: 1,\n  RSA_NO_PADDING: 3\n};\n\nmodule.exports = function publicEncrypt(public_key, msg, reverse) {\n  var padding;\n  if (public_key.padding) {\n    padding = public_key.padding;\n  } else if (reverse) {\n    padding = 1;\n  } else {\n    padding = 4;\n  }\n  var key = parseKeys(public_key);\n  var paddedMsg;\n  if (padding === 4) {\n    paddedMsg = oaep(key, msg);\n  } else if (padding === 1) {\n    paddedMsg = pkcs1(key, msg, reverse);\n  } else if (padding === 3) {\n    paddedMsg = new bn(msg);\n    if (paddedMsg.cmp(key.modulus) >= 0) {\n      throw new Error('data too long for modulus');\n    }\n  } else {\n    throw new Error('unknown padding');\n  }\n  if (reverse) {\n    return crt(paddedMsg, key);\n  } else {\n    return withPublic(paddedMsg, key);\n  }\n};\n\nfunction oaep(key, msg){\n  var k = key.modulus.byteLength();\n  var mLen = msg.length;\n  var iHash = createHash('sha1').update(new Buffer('')).digest();\n  var hLen = iHash.length;\n  var hLen2 = 2 * hLen;\n  if (mLen > k - hLen2 - 2) {\n    throw new Error('message too long');\n  }\n  var ps = new Buffer(k - mLen - hLen2 - 2);\n  ps.fill(0);\n  var dblen = k - hLen - 1;\n  var seed = randomBytes(hLen);\n  var maskedDb = xor(Buffer.concat([iHash, ps, new Buffer([1]), msg], dblen), mgf(seed, dblen));\n  var maskedSeed = xor(seed, mgf(maskedDb, hLen));\n  return new bn(Buffer.concat([new Buffer([0]), maskedSeed, maskedDb], k));\n}\nfunction pkcs1(key, msg, reverse){\n  var mLen = msg.length;\n  var k = key.modulus.byteLength();\n  if (mLen > k - 11) {\n    throw new Error('message too long');\n  }\n  var ps;\n  if (reverse) {\n    ps = new Buffer(k - mLen - 3);\n    ps.fill(0xff);\n  } else {\n    ps = nonZero(k - mLen - 3);\n  }\n  return new bn(Buffer.concat([new Buffer([0, reverse?1:2]), ps, new Buffer([0]), msg], k));\n}\nfunction nonZero(len, crypto) {\n  var out = new Buffer(len);\n  var i = 0;\n  var cache = randomBytes(len*2);\n  var cur = 0;\n  var num;\n  while (i < len) {\n    if (cur === cache.length) {\n      cache = randomBytes(len*2);\n      cur = 0;\n    }\n    num = cache[cur++];\n    if (num) {\n      out[i++] = num;\n    }\n  }\n  return out;\n}","var parseKeys = require('parse-asn1');\nvar mgf = require('./mgf');\nvar xor = require('./xor');\nvar bn = require('bn.js');\nvar crt = require('browserify-rsa');\nvar createHash = require('create-hash');\nvar withPublic = require('./withPublic');\nmodule.exports = function privateDecrypt(private_key, enc, reverse) {\n  var padding;\n  if (private_key.padding) {\n    padding = private_key.padding;\n  } else if (reverse) {\n    padding = 1;\n  } else {\n    padding = 4;\n  }\n  \n  var key = parseKeys(private_key);\n  var k = key.modulus.byteLength();\n  if (enc.length > k || new bn(enc).cmp(key.modulus) >= 0) {\n    throw new Error('decryption error');\n  }\n  var msg;\n  if (reverse) {\n    msg = withPublic(new bn(enc), key);\n  } else {\n    msg = crt(enc, key);\n  }\n  var zBuffer = new Buffer(k - msg.length);\n  zBuffer.fill(0);\n  msg = Buffer.concat([zBuffer, msg], k);\n  if (padding === 4) {\n    return oaep(key, msg);\n  } else if (padding === 1) {\n    return pkcs1(key, msg, reverse);\n  } else if (padding === 3) {\n    return msg;\n  } else {\n    throw new Error('unknown padding');\n  }\n};\n\nfunction oaep(key, msg){\n  var n = key.modulus;\n  var k = key.modulus.byteLength();\n  var mLen = msg.length;\n  var iHash = createHash('sha1').update(new Buffer('')).digest();\n  var hLen = iHash.length;\n  var hLen2 = 2 * hLen;\n  if (msg[0] !== 0) {\n    throw new Error('decryption error');\n  }\n  var maskedSeed = msg.slice(1, hLen + 1);\n  var maskedDb =  msg.slice(hLen + 1);\n  var seed = xor(maskedSeed, mgf(maskedDb, hLen));\n  var db = xor(maskedDb, mgf(seed, k - hLen - 1));\n  if (compare(iHash, db.slice(0, hLen))) {\n    throw new Error('decryption error');\n  }\n  var i = hLen;\n  while (db[i] === 0) {\n    i++;\n  }\n  if (db[i++] !== 1) {\n    throw new Error('decryption error');\n  }\n  return db.slice(i);\n}\n\nfunction pkcs1(key, msg, reverse){\n  var p1 = msg.slice(0, 2);\n  var i = 2;\n  var status = 0;\n  while (msg[i++] !== 0) {\n    if (i >= msg.length) {\n      status++;\n      break;\n    }\n  }\n  var ps = msg.slice(2, i - 1);\n  var p2 = msg.slice(i - 1, i);\n\n  if ((p1.toString('hex') !== '0002' && !reverse) || (p1.toString('hex') !== '0001' && reverse)){\n    status++;\n  }\n  if (ps.length < 8) {\n    status++;\n  }\n  if (status) {\n    throw new Error('decryption error');\n  }\n  return  msg.slice(i);\n}\nfunction compare(a, b){\n  a = new Buffer(a);\n  b = new Buffer(b);\n  var dif = 0;\n  var len = a.length;\n  if (a.length !== b.length) {\n    dif++;\n    len = Math.min(a.length, b.length);\n  }\n  var i = -1;\n  while (++i < len) {\n    dif += (a[i] ^ b[i]);\n  }\n  return dif;\n}","exports.publicEncrypt = require('./publicEncrypt');\nexports.privateDecrypt = require('./privateDecrypt');\n\nexports.privateEncrypt = function privateEncrypt(key, buf) {\n  return exports.publicEncrypt(key, buf, true);\n};\n\nexports.publicDecrypt = function publicDecrypt(key, buf) {\n  return exports.privateDecrypt(key, buf, true);\n};","'use strict'\n\nfunction oldBrowser () {\n  throw new Error('secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11')\n}\nvar safeBuffer = require('safe-buffer')\nvar randombytes = require('randombytes')\nvar Buffer = safeBuffer.Buffer\nvar kBufferMaxLength = safeBuffer.kMaxLength\nvar crypto = global.crypto || global.msCrypto\nvar kMaxUint32 = Math.pow(2, 32) - 1\nfunction assertOffset (offset, length) {\n  if (typeof offset !== 'number' || offset !== offset) { // eslint-disable-line no-self-compare\n    throw new TypeError('offset must be a number')\n  }\n\n  if (offset > kMaxUint32 || offset < 0) {\n    throw new TypeError('offset must be a uint32')\n  }\n\n  if (offset > kBufferMaxLength || offset > length) {\n    throw new RangeError('offset out of range')\n  }\n}\n\nfunction assertSize (size, offset, length) {\n  if (typeof size !== 'number' || size !== size) { // eslint-disable-line no-self-compare\n    throw new TypeError('size must be a number')\n  }\n\n  if (size > kMaxUint32 || size < 0) {\n    throw new TypeError('size must be a uint32')\n  }\n\n  if (size + offset > length || size > kBufferMaxLength) {\n    throw new RangeError('buffer too small')\n  }\n}\nif ((crypto && crypto.getRandomValues) || !process.browser) {\n  exports.randomFill = randomFill\n  exports.randomFillSync = randomFillSync\n} else {\n  exports.randomFill = oldBrowser\n  exports.randomFillSync = oldBrowser\n}\nfunction randomFill (buf, offset, size, cb) {\n  if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n    throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n  }\n\n  if (typeof offset === 'function') {\n    cb = offset\n    offset = 0\n    size = buf.length\n  } else if (typeof size === 'function') {\n    cb = size\n    size = buf.length - offset\n  } else if (typeof cb !== 'function') {\n    throw new TypeError('\"cb\" argument must be a function')\n  }\n  assertOffset(offset, buf.length)\n  assertSize(size, offset, buf.length)\n  return actualFill(buf, offset, size, cb)\n}\n\nfunction actualFill (buf, offset, size, cb) {\n  if (process.browser) {\n    var ourBuf = buf.buffer\n    var uint = new Uint8Array(ourBuf, offset, size)\n    crypto.getRandomValues(uint)\n    if (cb) {\n      process.nextTick(function () {\n        cb(null, buf)\n      })\n      return\n    }\n    return buf\n  }\n  if (cb) {\n    randombytes(size, function (err, bytes) {\n      if (err) {\n        return cb(err)\n      }\n      bytes.copy(buf, offset)\n      cb(null, buf)\n    })\n    return\n  }\n  var bytes = randombytes(size)\n  bytes.copy(buf, offset)\n  return buf\n}\nfunction randomFillSync (buf, offset, size) {\n  if (typeof offset === 'undefined') {\n    offset = 0\n  }\n  if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n    throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n  }\n\n  assertOffset(offset, buf.length)\n\n  if (size === undefined) size = buf.length - offset\n\n  assertSize(size, offset, buf.length)\n\n  return actualFill(buf, offset, size)\n}\n","'use strict'\n\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes')\nexports.createHash = exports.Hash = require('create-hash')\nexports.createHmac = exports.Hmac = require('create-hmac')\n\nvar algos = require('browserify-sign/algos')\nvar algoKeys = Object.keys(algos)\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys)\nexports.getHashes = function () {\n  return hashes\n}\n\nvar p = require('pbkdf2')\nexports.pbkdf2 = p.pbkdf2\nexports.pbkdf2Sync = p.pbkdf2Sync\n\nvar aes = require('browserify-cipher')\n\nexports.Cipher = aes.Cipher\nexports.createCipher = aes.createCipher\nexports.Cipheriv = aes.Cipheriv\nexports.createCipheriv = aes.createCipheriv\nexports.Decipher = aes.Decipher\nexports.createDecipher = aes.createDecipher\nexports.Decipheriv = aes.Decipheriv\nexports.createDecipheriv = aes.createDecipheriv\nexports.getCiphers = aes.getCiphers\nexports.listCiphers = aes.listCiphers\n\nvar dh = require('diffie-hellman')\n\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup\nexports.getDiffieHellman = dh.getDiffieHellman\nexports.createDiffieHellman = dh.createDiffieHellman\nexports.DiffieHellman = dh.DiffieHellman\n\nvar sign = require('browserify-sign')\n\nexports.createSign = sign.createSign\nexports.Sign = sign.Sign\nexports.createVerify = sign.createVerify\nexports.Verify = sign.Verify\n\nexports.createECDH = require('create-ecdh')\n\nvar publicEncrypt = require('public-encrypt')\n\nexports.publicEncrypt = publicEncrypt.publicEncrypt\nexports.privateEncrypt = publicEncrypt.privateEncrypt\nexports.publicDecrypt = publicEncrypt.publicDecrypt\nexports.privateDecrypt = publicEncrypt.privateDecrypt\n\n// the least I can do is make error messages for the rest of the node.js/crypto api.\n// ;[\n//   'createCredentials'\n// ].forEach(function (name) {\n//   exports[name] = function () {\n//     throw new Error([\n//       'sorry, ' + name + ' is not implemented yet',\n//       'we accept pull requests',\n//       'https://github.com/crypto-browserify/crypto-browserify'\n//     ].join('\\n'))\n//   }\n// })\n\nvar rf = require('randomfill')\n\nexports.randomFill = rf.randomFill\nexports.randomFillSync = rf.randomFillSync\n\nexports.createCredentials = function () {\n  throw new Error([\n    'sorry, createCredentials is not implemented yet',\n    'we accept pull requests',\n    'https://github.com/crypto-browserify/crypto-browserify'\n  ].join('\\n'))\n}\n\nexports.constants = {\n  'DH_CHECK_P_NOT_SAFE_PRIME': 2,\n  'DH_CHECK_P_NOT_PRIME': 1,\n  'DH_UNABLE_TO_CHECK_GENERATOR': 4,\n  'DH_NOT_SUITABLE_GENERATOR': 8,\n  'NPN_ENABLED': 1,\n  'ALPN_ENABLED': 1,\n  'RSA_PKCS1_PADDING': 1,\n  'RSA_SSLV23_PADDING': 2,\n  'RSA_NO_PADDING': 3,\n  'RSA_PKCS1_OAEP_PADDING': 4,\n  'RSA_X931_PADDING': 5,\n  'RSA_PKCS1_PSS_PADDING': 6,\n  'POINT_CONVERSION_COMPRESSED': 2,\n  'POINT_CONVERSION_UNCOMPRESSED': 4,\n  'POINT_CONVERSION_HYBRID': 6\n}\n","// The Module object: Our interface to the outside world. We import\n// and export values on it, and do the work to get that through\n// closure compiler if necessary. There are various ways Module can be used:\n// 1. Not defined. We create it here\n// 2. A function parameter, function(Module) { ..generated code.. }\n// 3. pre-run appended it, var Module = {}; ..generated code..\n// 4. External script tag defines var Module.\n// We need to do an eval in order to handle the closure compiler\n// case, where this code here is minified but Module was defined\n// elsewhere (e.g. case 4 above). We also need to check if Module\n// already exists (e.g. case 3 above).\n// Note that if you want to run closure, and also to use Module\n// after the generated code, you will need to define   var Module = {};\n// before the code. Then that object will be used in the code, and you\n// can continue to use Module afterwards as well.\nvar Module;\nif (!Module) Module = (typeof Module !== 'undefined' ? Module : null) || {};\n\n// Sometimes an existing Module object exists with properties\n// meant to overwrite the default module functionality. Here\n// we collect those properties and reapply _after_ we configure\n// the current environment's defaults to avoid having to be so\n// defensive during initialization.\nvar moduleOverrides = {};\nfor (var key in Module) {\n  if (Module.hasOwnProperty(key)) {\n    moduleOverrides[key] = Module[key];\n  }\n}\n\n// The environment setup code below is customized to use Module.\n// *** Environment setup code ***\nvar ENVIRONMENT_IS_WEB = typeof window === 'object';\n// Three configurations we can be running in:\n// 1) We could be the application main() thread running in the main JS UI thread. (ENVIRONMENT_IS_WORKER == false and ENVIRONMENT_IS_PTHREAD == false)\n// 2) We could be the application main() thread proxied to worker. (with Emscripten -s PROXY_TO_WORKER=1) (ENVIRONMENT_IS_WORKER == true, ENVIRONMENT_IS_PTHREAD == false)\n// 3) We could be an application pthread running in a worker. (ENVIRONMENT_IS_WORKER == true and ENVIRONMENT_IS_PTHREAD == true)\nvar ENVIRONMENT_IS_WORKER = typeof importScripts === 'function';\nvar ENVIRONMENT_IS_NODE = typeof process === 'object' && typeof require === 'function' && !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_WORKER;\nvar ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;\n\nif (ENVIRONMENT_IS_NODE) {\n  // Expose functionality in the same simple way that the shells work\n  // Note that we pollute the global namespace here, otherwise we break in node\n  if (!Module['print']) Module['print'] = function print(x) {\n    process['stdout'].write(x + '\\n');\n  };\n  if (!Module['printErr']) Module['printErr'] = function printErr(x) {\n    process['stderr'].write(x + '\\n');\n  };\n\n  var nodeFS = require('fs');\n  var nodePath = require('path');\n\n  Module['read'] = function read(filename, binary) {\n    filename = nodePath['normalize'](filename);\n    var ret = nodeFS['readFileSync'](filename);\n    // The path is absolute if the normalized version is the same as the resolved.\n    if (!ret && filename != nodePath['resolve'](filename)) {\n      filename = path.join(__dirname, '..', 'src', filename);\n      ret = nodeFS['readFileSync'](filename);\n    }\n    if (ret && !binary) ret = ret.toString();\n    return ret;\n  };\n\n  Module['readBinary'] = function readBinary(filename) {\n    var ret = Module['read'](filename, true);\n    if (!ret.buffer) {\n      ret = new Uint8Array(ret);\n    }\n    assert(ret.buffer);\n    return ret;\n  };\n\n  Module['load'] = function load(f) {\n    globalEval(read(f));\n  };\n\n  if (!Module['thisProgram']) {\n    if (process['argv'].length > 1) {\n      Module['thisProgram'] = process['argv'][1].replace(/\\\\/g, '/');\n    } else {\n      Module['thisProgram'] = 'unknown-program';\n    }\n  }\n\n  Module['arguments'] = process['argv'].slice(2);\n\n  if (typeof module !== 'undefined') {\n    module['exports'] = Module;\n  }\n\n  process['on']('uncaughtException', function(ex) {\n    // suppress ExitStatus exceptions from showing an error\n    if (!(ex instanceof ExitStatus)) {\n      throw ex;\n    }\n  });\n\n  Module['inspect'] = function () { return '[Emscripten Module object]'; };\n}\nelse if (ENVIRONMENT_IS_SHELL) {\n  if (!Module['print']) Module['print'] = print;\n  if (typeof printErr != 'undefined') Module['printErr'] = printErr; // not present in v8 or older sm\n\n  if (typeof read != 'undefined') {\n    Module['read'] = read;\n  } else {\n    Module['read'] = function read() { throw 'no read() available (jsc?)' };\n  }\n\n  Module['readBinary'] = function readBinary(f) {\n    if (typeof readbuffer === 'function') {\n      return new Uint8Array(readbuffer(f));\n    }\n    var data = read(f, 'binary');\n    assert(typeof data === 'object');\n    return data;\n  };\n\n  if (typeof scriptArgs != 'undefined') {\n    Module['arguments'] = scriptArgs;\n  } else if (typeof arguments != 'undefined') {\n    Module['arguments'] = arguments;\n  }\n\n}\nelse if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n  Module['read'] = function read(url) {\n    var xhr = new XMLHttpRequest();\n    xhr.open('GET', url, false);\n    xhr.send(null);\n    return xhr.responseText;\n  };\n\n  if (typeof arguments != 'undefined') {\n    Module['arguments'] = arguments;\n  }\n\n  if (typeof console !== 'undefined') {\n    if (!Module['print']) Module['print'] = function print(x) {\n      console.log(x);\n    };\n    if (!Module['printErr']) Module['printErr'] = function printErr(x) {\n      console.log(x);\n    };\n  } else {\n    // Probably a worker, and without console.log. We can do very little here...\n    var TRY_USE_DUMP = false;\n    if (!Module['print']) Module['print'] = (TRY_USE_DUMP && (typeof(dump) !== \"undefined\") ? (function(x) {\n      dump(x);\n    }) : (function(x) {\n      // self.postMessage(x); // enable this if you want stdout to be sent as messages\n    }));\n  }\n\n  if (ENVIRONMENT_IS_WORKER) {\n    Module['load'] = importScripts;\n  }\n\n  if (typeof Module['setWindowTitle'] === 'undefined') {\n    Module['setWindowTitle'] = function(title) { document.title = title };\n  }\n}\nelse {\n  // Unreachable because SHELL is dependant on the others\n  throw 'Unknown runtime environment. Where are we?';\n}\n\nfunction globalEval(x) {\n  eval.call(null, x);\n}\nif (!Module['load'] && Module['read']) {\n  Module['load'] = function load(f) {\n    globalEval(Module['read'](f));\n  };\n}\nif (!Module['print']) {\n  Module['print'] = function(){};\n}\nif (!Module['printErr']) {\n  Module['printErr'] = Module['print'];\n}\nif (!Module['arguments']) {\n  Module['arguments'] = [];\n}\nif (!Module['thisProgram']) {\n  Module['thisProgram'] = './this.program';\n}\n\n// *** Environment setup code ***\n\n// Closure helpers\nModule.print = Module['print'];\nModule.printErr = Module['printErr'];\n\n// Callbacks\nModule['preRun'] = [];\nModule['postRun'] = [];\n\n// Merge back in the overrides\nfor (var key in moduleOverrides) {\n  if (moduleOverrides.hasOwnProperty(key)) {\n    Module[key] = moduleOverrides[key];\n  }\n}\n\n\n\n// === Preamble library stuff ===\n\n// Documentation for the public APIs defined in this file must be updated in: \n//    site/source/docs/api_reference/preamble.js.rst\n// A prebuilt local version of the documentation is available at: \n//    site/build/text/docs/api_reference/preamble.js.txt\n// You can also build docs locally as HTML or other formats in site/\n// An online HTML version (which may be of a different version of Emscripten)\n//    is up at http://kripken.github.io/emscripten-site/docs/api_reference/preamble.js.html\n\n//========================================\n// Runtime code shared with compiler\n//========================================\n\nvar Runtime = {\n  setTempRet0: function (value) {\n    tempRet0 = value;\n  },\n  getTempRet0: function () {\n    return tempRet0;\n  },\n  stackSave: function () {\n    return STACKTOP;\n  },\n  stackRestore: function (stackTop) {\n    STACKTOP = stackTop;\n  },\n  getNativeTypeSize: function (type) {\n    switch (type) {\n      case 'i1': case 'i8': return 1;\n      case 'i16': return 2;\n      case 'i32': return 4;\n      case 'i64': return 8;\n      case 'float': return 4;\n      case 'double': return 8;\n      default: {\n        if (type[type.length-1] === '*') {\n          return Runtime.QUANTUM_SIZE; // A pointer\n        } else if (type[0] === 'i') {\n          var bits = parseInt(type.substr(1));\n          assert(bits % 8 === 0);\n          return bits/8;\n        } else {\n          return 0;\n        }\n      }\n    }\n  },\n  getNativeFieldSize: function (type) {\n    return Math.max(Runtime.getNativeTypeSize(type), Runtime.QUANTUM_SIZE);\n  },\n  STACK_ALIGN: 16,\n  prepVararg: function (ptr, type) {\n    if (type === 'double' || type === 'i64') {\n      // move so the load is aligned\n      if (ptr & 7) {\n        assert((ptr & 7) === 4);\n        ptr += 4;\n      }\n    } else {\n      assert((ptr & 3) === 0);\n    }\n    return ptr;\n  },\n  getAlignSize: function (type, size, vararg) {\n    // we align i64s and doubles on 64-bit boundaries, unlike x86\n    if (!vararg && (type == 'i64' || type == 'double')) return 8;\n    if (!type) return Math.min(size, 8); // align structures internally to 64 bits\n    return Math.min(size || (type ? Runtime.getNativeFieldSize(type) : 0), Runtime.QUANTUM_SIZE);\n  },\n  dynCall: function (sig, ptr, args) {\n    if (args && args.length) {\n      assert(args.length == sig.length-1);\n      if (!args.splice) args = Array.prototype.slice.call(args);\n      args.splice(0, 0, ptr);\n      assert(('dynCall_' + sig) in Module, 'bad function pointer type - no table for sig \\'' + sig + '\\'');\n      return Module['dynCall_' + sig].apply(null, args);\n    } else {\n      assert(sig.length == 1);\n      assert(('dynCall_' + sig) in Module, 'bad function pointer type - no table for sig \\'' + sig + '\\'');\n      return Module['dynCall_' + sig].call(null, ptr);\n    }\n  },\n  functionPointers: [],\n  addFunction: function (func) {\n    for (var i = 0; i < Runtime.functionPointers.length; i++) {\n      if (!Runtime.functionPointers[i]) {\n        Runtime.functionPointers[i] = func;\n        return 2*(1 + i);\n      }\n    }\n    throw 'Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.';\n  },\n  removeFunction: function (index) {\n    Runtime.functionPointers[(index-2)/2] = null;\n  },\n  warnOnce: function (text) {\n    if (!Runtime.warnOnce.shown) Runtime.warnOnce.shown = {};\n    if (!Runtime.warnOnce.shown[text]) {\n      Runtime.warnOnce.shown[text] = 1;\n      Module.printErr(text);\n    }\n  },\n  funcWrappers: {},\n  getFuncWrapper: function (func, sig) {\n    assert(sig);\n    if (!Runtime.funcWrappers[sig]) {\n      Runtime.funcWrappers[sig] = {};\n    }\n    var sigCache = Runtime.funcWrappers[sig];\n    if (!sigCache[func]) {\n      sigCache[func] = function dynCall_wrapper() {\n        return Runtime.dynCall(sig, func, arguments);\n      };\n    }\n    return sigCache[func];\n  },\n  getCompilerSetting: function (name) {\n    throw 'You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work';\n  },\n  stackAlloc: function (size) { var ret = STACKTOP;STACKTOP = (STACKTOP + size)|0;STACKTOP = (((STACKTOP)+15)&-16);(assert((((STACKTOP|0) < (STACK_MAX|0))|0))|0); return ret; },\n  staticAlloc: function (size) { var ret = STATICTOP;STATICTOP = (STATICTOP + (assert(!staticSealed),size))|0;STATICTOP = (((STATICTOP)+15)&-16); return ret; },\n  dynamicAlloc: function (size) { var ret = DYNAMICTOP;DYNAMICTOP = (DYNAMICTOP + (assert(DYNAMICTOP > 0),size))|0;DYNAMICTOP = (((DYNAMICTOP)+15)&-16); if (DYNAMICTOP >= TOTAL_MEMORY) { var success = enlargeMemory(); if (!success) { DYNAMICTOP = ret;  return 0; } }; return ret; },\n  alignMemory: function (size,quantum) { var ret = size = Math.ceil((size)/(quantum ? quantum : 16))*(quantum ? quantum : 16); return ret; },\n  makeBigInt: function (low,high,unsigned) { var ret = (unsigned ? ((+((low>>>0)))+((+((high>>>0)))*(+4294967296))) : ((+((low>>>0)))+((+((high|0)))*(+4294967296)))); return ret; },\n  GLOBAL_BASE: 8,\n  QUANTUM_SIZE: 4,\n  __dummy__: 0\n}\n\n\n\nModule[\"Runtime\"] = Runtime;\n\n\n\n//========================================\n// Runtime essentials\n//========================================\n\nvar __THREW__ = 0; // Used in checking for thrown exceptions.\n\nvar ABORT = false; // whether we are quitting the application. no code should run after this. set in exit() and abort()\nvar EXITSTATUS = 0;\n\nvar undef = 0;\n// tempInt is used for 32-bit signed values or smaller. tempBigInt is used\n// for 32-bit unsigned values or more than 32 bits. TODO: audit all uses of tempInt\nvar tempValue, tempInt, tempBigInt, tempInt2, tempBigInt2, tempPair, tempBigIntI, tempBigIntR, tempBigIntS, tempBigIntP, tempBigIntD, tempDouble, tempFloat;\nvar tempI64, tempI64b;\nvar tempRet0, tempRet1, tempRet2, tempRet3, tempRet4, tempRet5, tempRet6, tempRet7, tempRet8, tempRet9;\n\nfunction assert(condition, text) {\n  if (!condition) {\n    abort('Assertion failed: ' + text);\n  }\n}\n\nvar globalScope = this;\n\n// Returns the C function with a specified identifier (for C++, you need to do manual name mangling)\nfunction getCFunc(ident) {\n  var func = Module['_' + ident]; // closure exported function\n  if (!func) {\n    try {\n      func = eval('_' + ident); // explicit lookup\n    } catch(e) {}\n  }\n  assert(func, 'Cannot call unknown function ' + ident + ' (perhaps LLVM optimizations or closure removed it?)');\n  return func;\n}\n\nvar cwrap, ccall;\n(function(){\n  var JSfuncs = {\n    // Helpers for cwrap -- it can't refer to Runtime directly because it might\n    // be renamed by closure, instead it calls JSfuncs['stackSave'].body to find\n    // out what the minified function name is.\n    'stackSave': function() {\n      Runtime.stackSave()\n    },\n    'stackRestore': function() {\n      Runtime.stackRestore()\n    },\n    // type conversion from js to c\n    'arrayToC' : function(arr) {\n      var ret = Runtime.stackAlloc(arr.length);\n      writeArrayToMemory(arr, ret);\n      return ret;\n    },\n    'stringToC' : function(str) {\n      var ret = 0;\n      if (str !== null && str !== undefined && str !== 0) { // null string\n        // at most 4 bytes per UTF-8 code point, +1 for the trailing '\\0'\n        ret = Runtime.stackAlloc((str.length << 2) + 1);\n        writeStringToMemory(str, ret);\n      }\n      return ret;\n    }\n  };\n  // For fast lookup of conversion functions\n  var toC = {'string' : JSfuncs['stringToC'], 'array' : JSfuncs['arrayToC']};\n\n  // C calling interface. \n  ccall = function ccallFunc(ident, returnType, argTypes, args, opts) {\n    var func = getCFunc(ident);\n    var cArgs = [];\n    var stack = 0;\n    assert(returnType !== 'array', 'Return type should not be \"array\".');\n    if (args) {\n      for (var i = 0; i < args.length; i++) {\n        var converter = toC[argTypes[i]];\n        if (converter) {\n          if (stack === 0) stack = Runtime.stackSave();\n          cArgs[i] = converter(args[i]);\n        } else {\n          cArgs[i] = args[i];\n        }\n      }\n    }\n    var ret = func.apply(null, cArgs);\n    if ((!opts || !opts.async) && typeof EmterpreterAsync === 'object') {\n      assert(!EmterpreterAsync.state, 'cannot start async op with normal JS calling ccall');\n    }\n    if (opts && opts.async) assert(!returnType, 'async ccalls cannot return values');\n    if (returnType === 'string') ret = Pointer_stringify(ret);\n    if (stack !== 0) {\n      if (opts && opts.async) {\n        EmterpreterAsync.asyncFinalizers.push(function() {\n          Runtime.stackRestore(stack);\n        });\n        return;\n      }\n      Runtime.stackRestore(stack);\n    }\n    return ret;\n  }\n\n  var sourceRegex = /^function\\s*\\(([^)]*)\\)\\s*{\\s*([^*]*?)[\\s;]*(?:return\\s*(.*?)[;\\s]*)?}$/;\n  function parseJSFunc(jsfunc) {\n    // Match the body and the return value of a javascript function source\n    var parsed = jsfunc.toString().match(sourceRegex).slice(1);\n    return {arguments : parsed[0], body : parsed[1], returnValue: parsed[2]}\n  }\n  var JSsource = {};\n  for (var fun in JSfuncs) {\n    if (JSfuncs.hasOwnProperty(fun)) {\n      // Elements of toCsource are arrays of three items:\n      // the code, and the return value\n      JSsource[fun] = parseJSFunc(JSfuncs[fun]);\n    }\n  }\n\n  \n  cwrap = function cwrap(ident, returnType, argTypes) {\n    argTypes = argTypes || [];\n    var cfunc = getCFunc(ident);\n    // When the function takes numbers and returns a number, we can just return\n    // the original function\n    var numericArgs = argTypes.every(function(type){ return type === 'number'});\n    var numericRet = (returnType !== 'string');\n    if ( numericRet && numericArgs) {\n      return cfunc;\n    }\n    // Creation of the arguments list ([\"$1\",\"$2\",...,\"$nargs\"])\n    var argNames = argTypes.map(function(x,i){return '$'+i});\n    var funcstr = \"(function(\" + argNames.join(',') + \") {\";\n    var nargs = argTypes.length;\n    if (!numericArgs) {\n      // Generate the code needed to convert the arguments from javascript\n      // values to pointers\n      funcstr += 'var stack = ' + JSsource['stackSave'].body + ';';\n      for (var i = 0; i < nargs; i++) {\n        var arg = argNames[i], type = argTypes[i];\n        if (type === 'number') continue;\n        var convertCode = JSsource[type + 'ToC']; // [code, return]\n        funcstr += 'var ' + convertCode.arguments + ' = ' + arg + ';';\n        funcstr += convertCode.body + ';';\n        funcstr += arg + '=' + convertCode.returnValue + ';';\n      }\n    }\n\n    // When the code is compressed, the name of cfunc is not literally 'cfunc' anymore\n    var cfuncname = parseJSFunc(function(){return cfunc}).returnValue;\n    // Call the function\n    funcstr += 'var ret = ' + cfuncname + '(' + argNames.join(',') + ');';\n    if (!numericRet) { // Return type can only by 'string' or 'number'\n      // Convert the result to a string\n      var strgfy = parseJSFunc(function(){return Pointer_stringify}).returnValue;\n      funcstr += 'ret = ' + strgfy + '(ret);';\n    }\n    funcstr += \"if (typeof EmterpreterAsync === 'object') { assert(!EmterpreterAsync.state, 'cannot start async op with normal JS calling cwrap') }\";\n    if (!numericArgs) {\n      // If we had a stack, restore it\n      funcstr += JSsource['stackRestore'].body.replace('()', '(stack)') + ';';\n    }\n    funcstr += 'return ret})';\n    return eval(funcstr);\n  };\n})();\nModule[\"ccall\"] = ccall;\nModule[\"cwrap\"] = cwrap;\n\nfunction setValue(ptr, value, type, noSafe) {\n  type = type || 'i8';\n  if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit\n    switch(type) {\n      case 'i1': HEAP8[((ptr)>>0)]=value; break;\n      case 'i8': HEAP8[((ptr)>>0)]=value; break;\n      case 'i16': HEAP16[((ptr)>>1)]=value; break;\n      case 'i32': HEAP32[((ptr)>>2)]=value; break;\n      case 'i64': (tempI64 = [value>>>0,(tempDouble=value,(+(Math_abs(tempDouble))) >= (+1) ? (tempDouble > (+0) ? ((Math_min((+(Math_floor((tempDouble)/(+4294967296)))), (+4294967295)))|0)>>>0 : (~~((+(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/(+4294967296))))))>>>0) : 0)],HEAP32[((ptr)>>2)]=tempI64[0],HEAP32[(((ptr)+(4))>>2)]=tempI64[1]); break;\n      case 'float': HEAPF32[((ptr)>>2)]=value; break;\n      case 'double': HEAPF64[((ptr)>>3)]=value; break;\n      default: abort('invalid type for setValue: ' + type);\n    }\n}\nModule[\"setValue\"] = setValue;\n\n\nfunction getValue(ptr, type, noSafe) {\n  type = type || 'i8';\n  if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit\n    switch(type) {\n      case 'i1': return HEAP8[((ptr)>>0)];\n      case 'i8': return HEAP8[((ptr)>>0)];\n      case 'i16': return HEAP16[((ptr)>>1)];\n      case 'i32': return HEAP32[((ptr)>>2)];\n      case 'i64': return HEAP32[((ptr)>>2)];\n      case 'float': return HEAPF32[((ptr)>>2)];\n      case 'double': return HEAPF64[((ptr)>>3)];\n      default: abort('invalid type for setValue: ' + type);\n    }\n  return null;\n}\nModule[\"getValue\"] = getValue;\n\nvar ALLOC_NORMAL = 0; // Tries to use _malloc()\nvar ALLOC_STACK = 1; // Lives for the duration of the current function call\nvar ALLOC_STATIC = 2; // Cannot be freed\nvar ALLOC_DYNAMIC = 3; // Cannot be freed except through sbrk\nvar ALLOC_NONE = 4; // Do not allocate\nModule[\"ALLOC_NORMAL\"] = ALLOC_NORMAL;\nModule[\"ALLOC_STACK\"] = ALLOC_STACK;\nModule[\"ALLOC_STATIC\"] = ALLOC_STATIC;\nModule[\"ALLOC_DYNAMIC\"] = ALLOC_DYNAMIC;\nModule[\"ALLOC_NONE\"] = ALLOC_NONE;\n\n// allocate(): This is for internal use. You can use it yourself as well, but the interface\n//             is a little tricky (see docs right below). The reason is that it is optimized\n//             for multiple syntaxes to save space in generated code. So you should\n//             normally not use allocate(), and instead allocate memory using _malloc(),\n//             initialize it with setValue(), and so forth.\n// @slab: An array of data, or a number. If a number, then the size of the block to allocate,\n//        in *bytes* (note that this is sometimes confusing: the next parameter does not\n//        affect this!)\n// @types: Either an array of types, one for each byte (or 0 if no type at that position),\n//         or a single type which is used for the entire block. This only matters if there\n//         is initial data - if @slab is a number, then this does not matter at all and is\n//         ignored.\n// @allocator: How to allocate memory, see ALLOC_*\nfunction allocate(slab, types, allocator, ptr) {\n  var zeroinit, size;\n  if (typeof slab === 'number') {\n    zeroinit = true;\n    size = slab;\n  } else {\n    zeroinit = false;\n    size = slab.length;\n  }\n\n  var singleType = typeof types === 'string' ? types : null;\n\n  var ret;\n  if (allocator == ALLOC_NONE) {\n    ret = ptr;\n  } else {\n    ret = [_malloc, Runtime.stackAlloc, Runtime.staticAlloc, Runtime.dynamicAlloc][allocator === undefined ? ALLOC_STATIC : allocator](Math.max(size, singleType ? 1 : types.length));\n  }\n\n  if (zeroinit) {\n    var ptr = ret, stop;\n    assert((ret & 3) == 0);\n    stop = ret + (size & ~3);\n    for (; ptr < stop; ptr += 4) {\n      HEAP32[((ptr)>>2)]=0;\n    }\n    stop = ret + size;\n    while (ptr < stop) {\n      HEAP8[((ptr++)>>0)]=0;\n    }\n    return ret;\n  }\n\n  if (singleType === 'i8') {\n    if (slab.subarray || slab.slice) {\n      HEAPU8.set(slab, ret);\n    } else {\n      HEAPU8.set(new Uint8Array(slab), ret);\n    }\n    return ret;\n  }\n\n  var i = 0, type, typeSize, previousType;\n  while (i < size) {\n    var curr = slab[i];\n\n    if (typeof curr === 'function') {\n      curr = Runtime.getFunctionIndex(curr);\n    }\n\n    type = singleType || types[i];\n    if (type === 0) {\n      i++;\n      continue;\n    }\n    assert(type, 'Must know what type to store in allocate!');\n\n    if (type == 'i64') type = 'i32'; // special case: we have one i32 here, and one i32 later\n\n    setValue(ret+i, curr, type);\n\n    // no need to look up size unless type changes, so cache it\n    if (previousType !== type) {\n      typeSize = Runtime.getNativeTypeSize(type);\n      previousType = type;\n    }\n    i += typeSize;\n  }\n\n  return ret;\n}\nModule[\"allocate\"] = allocate;\n\n// Allocate memory during any stage of startup - static memory early on, dynamic memory later, malloc when ready\nfunction getMemory(size) {\n  if (!staticSealed) return Runtime.staticAlloc(size);\n  if ((typeof _sbrk !== 'undefined' && !_sbrk.called) || !runtimeInitialized) return Runtime.dynamicAlloc(size);\n  return _malloc(size);\n}\nModule[\"getMemory\"] = getMemory;\n\nfunction Pointer_stringify(ptr, /* optional */ length) {\n  if (length === 0 || !ptr) return '';\n  // TODO: use TextDecoder\n  // Find the length, and check for UTF while doing so\n  var hasUtf = 0;\n  var t;\n  var i = 0;\n  while (1) {\n    assert(ptr + i < TOTAL_MEMORY);\n    t = HEAPU8[(((ptr)+(i))>>0)];\n    hasUtf |= t;\n    if (t == 0 && !length) break;\n    i++;\n    if (length && i == length) break;\n  }\n  if (!length) length = i;\n\n  var ret = '';\n\n  if (hasUtf < 128) {\n    var MAX_CHUNK = 1024; // split up into chunks, because .apply on a huge string can overflow the stack\n    var curr;\n    while (length > 0) {\n      curr = String.fromCharCode.apply(String, HEAPU8.subarray(ptr, ptr + Math.min(length, MAX_CHUNK)));\n      ret = ret ? ret + curr : curr;\n      ptr += MAX_CHUNK;\n      length -= MAX_CHUNK;\n    }\n    return ret;\n  }\n  return Module['UTF8ToString'](ptr);\n}\nModule[\"Pointer_stringify\"] = Pointer_stringify;\n\n// Given a pointer 'ptr' to a null-terminated ASCII-encoded string in the emscripten HEAP, returns\n// a copy of that string as a Javascript String object.\n\nfunction AsciiToString(ptr) {\n  var str = '';\n  while (1) {\n    var ch = HEAP8[((ptr++)>>0)];\n    if (!ch) return str;\n    str += String.fromCharCode(ch);\n  }\n}\nModule[\"AsciiToString\"] = AsciiToString;\n\n// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr',\n// null-terminated and encoded in ASCII form. The copy will require at most str.length+1 bytes of space in the HEAP.\n\nfunction stringToAscii(str, outPtr) {\n  return writeAsciiToMemory(str, outPtr, false);\n}\nModule[\"stringToAscii\"] = stringToAscii;\n\n// Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the given array that contains uint8 values, returns\n// a copy of that string as a Javascript String object.\n\nfunction UTF8ArrayToString(u8Array, idx) {\n  var u0, u1, u2, u3, u4, u5;\n\n  var str = '';\n  while (1) {\n    // For UTF8 byte structure, see http://en.wikipedia.org/wiki/UTF-8#Description and https://www.ietf.org/rfc/rfc2279.txt and https://tools.ietf.org/html/rfc3629\n    u0 = u8Array[idx++];\n    if (!u0) return str;\n    if (!(u0 & 0x80)) { str += String.fromCharCode(u0); continue; }\n    u1 = u8Array[idx++] & 63;\n    if ((u0 & 0xE0) == 0xC0) { str += String.fromCharCode(((u0 & 31) << 6) | u1); continue; }\n    u2 = u8Array[idx++] & 63;\n    if ((u0 & 0xF0) == 0xE0) {\n      u0 = ((u0 & 15) << 12) | (u1 << 6) | u2;\n    } else {\n      u3 = u8Array[idx++] & 63;\n      if ((u0 & 0xF8) == 0xF0) {\n        u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | u3;\n      } else {\n        u4 = u8Array[idx++] & 63;\n        if ((u0 & 0xFC) == 0xF8) {\n          u0 = ((u0 & 3) << 24) | (u1 << 18) | (u2 << 12) | (u3 << 6) | u4;\n        } else {\n          u5 = u8Array[idx++] & 63;\n          u0 = ((u0 & 1) << 30) | (u1 << 24) | (u2 << 18) | (u3 << 12) | (u4 << 6) | u5;\n        }\n      }\n    }\n    if (u0 < 0x10000) {\n      str += String.fromCharCode(u0);\n    } else {\n      var ch = u0 - 0x10000;\n      str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF));\n    }\n  }\n}\nModule[\"UTF8ArrayToString\"] = UTF8ArrayToString;\n\n// Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the emscripten HEAP, returns\n// a copy of that string as a Javascript String object.\n\nfunction UTF8ToString(ptr) {\n  return UTF8ArrayToString(HEAPU8,ptr);\n}\nModule[\"UTF8ToString\"] = UTF8ToString;\n\n// Copies the given Javascript String object 'str' to the given byte array at address 'outIdx',\n// encoded in UTF8 form and null-terminated. The copy will require at most str.length*4+1 bytes of space in the HEAP.\n// Use the function lengthBytesUTF8() to compute the exact number of bytes (excluding null terminator) that this function will write.\n// Parameters:\n//   str: the Javascript string to copy.\n//   outU8Array: the array to copy to. Each index in this array is assumed to be one 8-byte element.\n//   outIdx: The starting offset in the array to begin the copying.\n//   maxBytesToWrite: The maximum number of bytes this function can write to the array. This count should include the null \n//                    terminator, i.e. if maxBytesToWrite=1, only the null terminator will be written and nothing else.\n//                    maxBytesToWrite=0 does not write any bytes to the output, not even the null terminator.\n// Returns the number of bytes written, EXCLUDING the null terminator.\n\nfunction stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) {\n  if (!(maxBytesToWrite > 0)) // Parameter maxBytesToWrite is not optional. Negative values, 0, null, undefined and false each don't write out any bytes.\n    return 0;\n\n  var startIdx = outIdx;\n  var endIdx = outIdx + maxBytesToWrite - 1; // -1 for string null terminator.\n  for (var i = 0; i < str.length; ++i) {\n    // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! So decode UTF16->UTF32->UTF8.\n    // See http://unicode.org/faq/utf_bom.html#utf16-3\n    // For UTF8 byte structure, see http://en.wikipedia.org/wiki/UTF-8#Description and https://www.ietf.org/rfc/rfc2279.txt and https://tools.ietf.org/html/rfc3629\n    var u = str.charCodeAt(i); // possibly a lead surrogate\n    if (u >= 0xD800 && u <= 0xDFFF) u = 0x10000 + ((u & 0x3FF) << 10) | (str.charCodeAt(++i) & 0x3FF);\n    if (u <= 0x7F) {\n      if (outIdx >= endIdx) break;\n      outU8Array[outIdx++] = u;\n    } else if (u <= 0x7FF) {\n      if (outIdx + 1 >= endIdx) break;\n      outU8Array[outIdx++] = 0xC0 | (u >> 6);\n      outU8Array[outIdx++] = 0x80 | (u & 63);\n    } else if (u <= 0xFFFF) {\n      if (outIdx + 2 >= endIdx) break;\n      outU8Array[outIdx++] = 0xE0 | (u >> 12);\n      outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63);\n      outU8Array[outIdx++] = 0x80 | (u & 63);\n    } else if (u <= 0x1FFFFF) {\n      if (outIdx + 3 >= endIdx) break;\n      outU8Array[outIdx++] = 0xF0 | (u >> 18);\n      outU8Array[outIdx++] = 0x80 | ((u >> 12) & 63);\n      outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63);\n      outU8Array[outIdx++] = 0x80 | (u & 63);\n    } else if (u <= 0x3FFFFFF) {\n      if (outIdx + 4 >= endIdx) break;\n      outU8Array[outIdx++] = 0xF8 | (u >> 24);\n      outU8Array[outIdx++] = 0x80 | ((u >> 18) & 63);\n      outU8Array[outIdx++] = 0x80 | ((u >> 12) & 63);\n      outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63);\n      outU8Array[outIdx++] = 0x80 | (u & 63);\n    } else {\n      if (outIdx + 5 >= endIdx) break;\n      outU8Array[outIdx++] = 0xFC | (u >> 30);\n      outU8Array[outIdx++] = 0x80 | ((u >> 24) & 63);\n      outU8Array[outIdx++] = 0x80 | ((u >> 18) & 63);\n      outU8Array[outIdx++] = 0x80 | ((u >> 12) & 63);\n      outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63);\n      outU8Array[outIdx++] = 0x80 | (u & 63);\n    }\n  }\n  // Null-terminate the pointer to the buffer.\n  outU8Array[outIdx] = 0;\n  return outIdx - startIdx;\n}\nModule[\"stringToUTF8Array\"] = stringToUTF8Array;\n\n// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr',\n// null-terminated and encoded in UTF8 form. The copy will require at most str.length*4+1 bytes of space in the HEAP.\n// Use the function lengthBytesUTF8() to compute the exact number of bytes (excluding null terminator) that this function will write.\n// Returns the number of bytes written, EXCLUDING the null terminator.\n\nfunction stringToUTF8(str, outPtr, maxBytesToWrite) {\n  assert(typeof maxBytesToWrite == 'number', 'stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!');\n  return stringToUTF8Array(str, HEAPU8,outPtr, maxBytesToWrite);\n}\nModule[\"stringToUTF8\"] = stringToUTF8;\n\n// Returns the number of bytes the given Javascript string takes if encoded as a UTF8 byte array, EXCLUDING the null terminator byte.\n\nfunction lengthBytesUTF8(str) {\n  var len = 0;\n  for (var i = 0; i < str.length; ++i) {\n    // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! So decode UTF16->UTF32->UTF8.\n    // See http://unicode.org/faq/utf_bom.html#utf16-3\n    var u = str.charCodeAt(i); // possibly a lead surrogate\n    if (u >= 0xD800 && u <= 0xDFFF) u = 0x10000 + ((u & 0x3FF) << 10) | (str.charCodeAt(++i) & 0x3FF);\n    if (u <= 0x7F) {\n      ++len;\n    } else if (u <= 0x7FF) {\n      len += 2;\n    } else if (u <= 0xFFFF) {\n      len += 3;\n    } else if (u <= 0x1FFFFF) {\n      len += 4;\n    } else if (u <= 0x3FFFFFF) {\n      len += 5;\n    } else {\n      len += 6;\n    }\n  }\n  return len;\n}\nModule[\"lengthBytesUTF8\"] = lengthBytesUTF8;\n\n// Given a pointer 'ptr' to a null-terminated UTF16LE-encoded string in the emscripten HEAP, returns\n// a copy of that string as a Javascript String object.\n\nfunction UTF16ToString(ptr) {\n  var i = 0;\n\n  var str = '';\n  while (1) {\n    var codeUnit = HEAP16[(((ptr)+(i*2))>>1)];\n    if (codeUnit == 0)\n      return str;\n    ++i;\n    // fromCharCode constructs a character from a UTF-16 code unit, so we can pass the UTF16 string right through.\n    str += String.fromCharCode(codeUnit);\n  }\n}\nModule[\"UTF16ToString\"] = UTF16ToString;\n\n// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr',\n// null-terminated and encoded in UTF16 form. The copy will require at most str.length*4+2 bytes of space in the HEAP.\n// Use the function lengthBytesUTF16() to compute the exact number of bytes (excluding null terminator) that this function will write.\n// Parameters:\n//   str: the Javascript string to copy.\n//   outPtr: Byte address in Emscripten HEAP where to write the string to.\n//   maxBytesToWrite: The maximum number of bytes this function can write to the array. This count should include the null \n//                    terminator, i.e. if maxBytesToWrite=2, only the null terminator will be written and nothing else.\n//                    maxBytesToWrite<2 does not write any bytes to the output, not even the null terminator.\n// Returns the number of bytes written, EXCLUDING the null terminator.\n\nfunction stringToUTF16(str, outPtr, maxBytesToWrite) {\n  assert(typeof maxBytesToWrite == 'number', 'stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!');\n  // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed.\n  if (maxBytesToWrite === undefined) {\n    maxBytesToWrite = 0x7FFFFFFF;\n  }\n  if (maxBytesToWrite < 2) return 0;\n  maxBytesToWrite -= 2; // Null terminator.\n  var startPtr = outPtr;\n  var numCharsToWrite = (maxBytesToWrite < str.length*2) ? (maxBytesToWrite / 2) : str.length;\n  for (var i = 0; i < numCharsToWrite; ++i) {\n    // charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP.\n    var codeUnit = str.charCodeAt(i); // possibly a lead surrogate\n    HEAP16[((outPtr)>>1)]=codeUnit;\n    outPtr += 2;\n  }\n  // Null-terminate the pointer to the HEAP.\n  HEAP16[((outPtr)>>1)]=0;\n  return outPtr - startPtr;\n}\nModule[\"stringToUTF16\"] = stringToUTF16;\n\n// Returns the number of bytes the given Javascript string takes if encoded as a UTF16 byte array, EXCLUDING the null terminator byte.\n\nfunction lengthBytesUTF16(str) {\n  return str.length*2;\n}\nModule[\"lengthBytesUTF16\"] = lengthBytesUTF16;\n\nfunction UTF32ToString(ptr) {\n  var i = 0;\n\n  var str = '';\n  while (1) {\n    var utf32 = HEAP32[(((ptr)+(i*4))>>2)];\n    if (utf32 == 0)\n      return str;\n    ++i;\n    // Gotcha: fromCharCode constructs a character from a UTF-16 encoded code (pair), not from a Unicode code point! So encode the code point to UTF-16 for constructing.\n    // See http://unicode.org/faq/utf_bom.html#utf16-3\n    if (utf32 >= 0x10000) {\n      var ch = utf32 - 0x10000;\n      str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF));\n    } else {\n      str += String.fromCharCode(utf32);\n    }\n  }\n}\nModule[\"UTF32ToString\"] = UTF32ToString;\n\n// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr',\n// null-terminated and encoded in UTF32 form. The copy will require at most str.length*4+4 bytes of space in the HEAP.\n// Use the function lengthBytesUTF32() to compute the exact number of bytes (excluding null terminator) that this function will write.\n// Parameters:\n//   str: the Javascript string to copy.\n//   outPtr: Byte address in Emscripten HEAP where to write the string to.\n//   maxBytesToWrite: The maximum number of bytes this function can write to the array. This count should include the null \n//                    terminator, i.e. if maxBytesToWrite=4, only the null terminator will be written and nothing else.\n//                    maxBytesToWrite<4 does not write any bytes to the output, not even the null terminator.\n// Returns the number of bytes written, EXCLUDING the null terminator.\n\nfunction stringToUTF32(str, outPtr, maxBytesToWrite) {\n  assert(typeof maxBytesToWrite == 'number', 'stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!');\n  // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed.\n  if (maxBytesToWrite === undefined) {\n    maxBytesToWrite = 0x7FFFFFFF;\n  }\n  if (maxBytesToWrite < 4) return 0;\n  var startPtr = outPtr;\n  var endPtr = startPtr + maxBytesToWrite - 4;\n  for (var i = 0; i < str.length; ++i) {\n    // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap.\n    // See http://unicode.org/faq/utf_bom.html#utf16-3\n    var codeUnit = str.charCodeAt(i); // possibly a lead surrogate\n    if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) {\n      var trailSurrogate = str.charCodeAt(++i);\n      codeUnit = 0x10000 + ((codeUnit & 0x3FF) << 10) | (trailSurrogate & 0x3FF);\n    }\n    HEAP32[((outPtr)>>2)]=codeUnit;\n    outPtr += 4;\n    if (outPtr + 4 > endPtr) break;\n  }\n  // Null-terminate the pointer to the HEAP.\n  HEAP32[((outPtr)>>2)]=0;\n  return outPtr - startPtr;\n}\nModule[\"stringToUTF32\"] = stringToUTF32;\n\n// Returns the number of bytes the given Javascript string takes if encoded as a UTF16 byte array, EXCLUDING the null terminator byte.\n\nfunction lengthBytesUTF32(str) {\n  var len = 0;\n  for (var i = 0; i < str.length; ++i) {\n    // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap.\n    // See http://unicode.org/faq/utf_bom.html#utf16-3\n    var codeUnit = str.charCodeAt(i);\n    if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) ++i; // possibly a lead surrogate, so skip over the tail surrogate.\n    len += 4;\n  }\n\n  return len;\n}\nModule[\"lengthBytesUTF32\"] = lengthBytesUTF32;\n\nfunction demangle(func) {\n  var hasLibcxxabi = !!Module['___cxa_demangle'];\n  if (hasLibcxxabi) {\n    try {\n      var buf = _malloc(func.length);\n      writeStringToMemory(func.substr(1), buf);\n      var status = _malloc(4);\n      var ret = Module['___cxa_demangle'](buf, 0, 0, status);\n      if (getValue(status, 'i32') === 0 && ret) {\n        return Pointer_stringify(ret);\n      }\n      // otherwise, libcxxabi failed, we can try ours which may return a partial result\n    } catch(e) {\n      // failure when using libcxxabi, we can try ours which may return a partial result\n    } finally {\n      if (buf) _free(buf);\n      if (status) _free(status);\n      if (ret) _free(ret);\n    }\n  }\n  var i = 3;\n  // params, etc.\n  var basicTypes = {\n    'v': 'void',\n    'b': 'bool',\n    'c': 'char',\n    's': 'short',\n    'i': 'int',\n    'l': 'long',\n    'f': 'float',\n    'd': 'double',\n    'w': 'wchar_t',\n    'a': 'signed char',\n    'h': 'unsigned char',\n    't': 'unsigned short',\n    'j': 'unsigned int',\n    'm': 'unsigned long',\n    'x': 'long long',\n    'y': 'unsigned long long',\n    'z': '...'\n  };\n  var subs = [];\n  var first = true;\n  function dump(x) {\n    //return;\n    if (x) Module.print(x);\n    Module.print(func);\n    var pre = '';\n    for (var a = 0; a < i; a++) pre += ' ';\n    Module.print (pre + '^');\n  }\n  function parseNested() {\n    i++;\n    if (func[i] === 'K') i++; // ignore const\n    var parts = [];\n    while (func[i] !== 'E') {\n      if (func[i] === 'S') { // substitution\n        i++;\n        var next = func.indexOf('_', i);\n        var num = func.substring(i, next) || 0;\n        parts.push(subs[num] || '?');\n        i = next+1;\n        continue;\n      }\n      if (func[i] === 'C') { // constructor\n        parts.push(parts[parts.length-1]);\n        i += 2;\n        continue;\n      }\n      var size = parseInt(func.substr(i));\n      var pre = size.toString().length;\n      if (!size || !pre) { i--; break; } // counter i++ below us\n      var curr = func.substr(i + pre, size);\n      parts.push(curr);\n      subs.push(curr);\n      i += pre + size;\n    }\n    i++; // skip E\n    return parts;\n  }\n  function parse(rawList, limit, allowVoid) { // main parser\n    limit = limit || Infinity;\n    var ret = '', list = [];\n    function flushList() {\n      return '(' + list.join(', ') + ')';\n    }\n    var name;\n    if (func[i] === 'N') {\n      // namespaced N-E\n      name = parseNested().join('::');\n      limit--;\n      if (limit === 0) return rawList ? [name] : name;\n    } else {\n      // not namespaced\n      if (func[i] === 'K' || (first && func[i] === 'L')) i++; // ignore const and first 'L'\n      var size = parseInt(func.substr(i));\n      if (size) {\n        var pre = size.toString().length;\n        name = func.substr(i + pre, size);\n        i += pre + size;\n      }\n    }\n    first = false;\n    if (func[i] === 'I') {\n      i++;\n      var iList = parse(true);\n      var iRet = parse(true, 1, true);\n      ret += iRet[0] + ' ' + name + '<' + iList.join(', ') + '>';\n    } else {\n      ret = name;\n    }\n    paramLoop: while (i < func.length && limit-- > 0) {\n      //dump('paramLoop');\n      var c = func[i++];\n      if (c in basicTypes) {\n        list.push(basicTypes[c]);\n      } else {\n        switch (c) {\n          case 'P': list.push(parse(true, 1, true)[0] + '*'); break; // pointer\n          case 'R': list.push(parse(true, 1, true)[0] + '&'); break; // reference\n          case 'L': { // literal\n            i++; // skip basic type\n            var end = func.indexOf('E', i);\n            var size = end - i;\n            list.push(func.substr(i, size));\n            i += size + 2; // size + 'EE'\n            break;\n          }\n          case 'A': { // array\n            var size = parseInt(func.substr(i));\n            i += size.toString().length;\n            if (func[i] !== '_') throw '?';\n            i++; // skip _\n            list.push(parse(true, 1, true)[0] + ' [' + size + ']');\n            break;\n          }\n          case 'E': break paramLoop;\n          default: ret += '?' + c; break paramLoop;\n        }\n      }\n    }\n    if (!allowVoid && list.length === 1 && list[0] === 'void') list = []; // avoid (void)\n    if (rawList) {\n      if (ret) {\n        list.push(ret + '?');\n      }\n      return list;\n    } else {\n      return ret + flushList();\n    }\n  }\n  var parsed = func;\n  try {\n    // Special-case the entry point, since its name differs from other name mangling.\n    if (func == 'Object._main' || func == '_main') {\n      return 'main()';\n    }\n    if (typeof func === 'number') func = Pointer_stringify(func);\n    if (func[0] !== '_') return func;\n    if (func[1] !== '_') return func; // C function\n    if (func[2] !== 'Z') return func;\n    switch (func[3]) {\n      case 'n': return 'operator new()';\n      case 'd': return 'operator delete()';\n    }\n    parsed = parse();\n  } catch(e) {\n    parsed += '?';\n  }\n  if (parsed.indexOf('?') >= 0 && !hasLibcxxabi) {\n    Runtime.warnOnce('warning: a problem occurred in builtin C++ name demangling; build with  -s DEMANGLE_SUPPORT=1  to link in libcxxabi demangling');\n  }\n  return parsed;\n}\n\nfunction demangleAll(text) {\n  return text.replace(/__Z[\\w\\d_]+/g, function(x) { var y = demangle(x); return x === y ? x : (x + ' [' + y + ']') });\n}\n\nfunction jsStackTrace() {\n  var err = new Error();\n  if (!err.stack) {\n    // IE10+ special cases: It does have callstack info, but it is only populated if an Error object is thrown,\n    // so try that as a special-case.\n    try {\n      throw new Error(0);\n    } catch(e) {\n      err = e;\n    }\n    if (!err.stack) {\n      return '(no stack trace available)';\n    }\n  }\n  return err.stack.toString();\n}\n\nfunction stackTrace() {\n  return demangleAll(jsStackTrace());\n}\nModule[\"stackTrace\"] = stackTrace;\n\n// Memory management\n\nvar PAGE_SIZE = 4096;\n\nfunction alignMemoryPage(x) {\n  if (x % 4096 > 0) {\n    x += (4096 - (x % 4096));\n  }\n  return x;\n}\n\nvar HEAP;\nvar HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n\nvar STATIC_BASE = 0, STATICTOP = 0, staticSealed = false; // static area\nvar STACK_BASE = 0, STACKTOP = 0, STACK_MAX = 0; // stack area\nvar DYNAMIC_BASE = 0, DYNAMICTOP = 0; // dynamic area handled by sbrk\n\n\n\nfunction enlargeMemory() {\n  // TOTAL_MEMORY is the current size of the actual array, and DYNAMICTOP is the new top.\n  assert(DYNAMICTOP >= TOTAL_MEMORY);\n  assert(TOTAL_MEMORY > 4); // So the loop below will not be infinite\n\n  var OLD_TOTAL_MEMORY = TOTAL_MEMORY;\n\n\n  var LIMIT = Math.pow(2, 31); // 2GB is a practical maximum, as we use signed ints as pointers\n                               // and JS engines seem unhappy to give us 2GB arrays currently\n  if (DYNAMICTOP >= LIMIT) return false;\n\n  while (TOTAL_MEMORY <= DYNAMICTOP) { // Simple heuristic.\n    if (TOTAL_MEMORY < LIMIT/2) {\n      TOTAL_MEMORY = alignMemoryPage(2*TOTAL_MEMORY); // double until 1GB\n    } else {\n      var last = TOTAL_MEMORY;\n      TOTAL_MEMORY = alignMemoryPage((3*TOTAL_MEMORY + LIMIT)/4); // add smaller increments towards 2GB, which we cannot reach\n      if (TOTAL_MEMORY <= last) return false;\n    }\n  }\n\n  TOTAL_MEMORY = Math.max(TOTAL_MEMORY, 16*1024*1024);\n\n  if (TOTAL_MEMORY >= LIMIT) return false;\n\n  Module.printErr('Warning: Enlarging memory arrays, this is not fast! ' + [OLD_TOTAL_MEMORY, TOTAL_MEMORY]);\n\n\n  var start = Date.now();\n\n  try {\n    if (ArrayBuffer.transfer) {\n      buffer = ArrayBuffer.transfer(buffer, TOTAL_MEMORY);\n    } else {\n      var oldHEAP8 = HEAP8;\n      buffer = new ArrayBuffer(TOTAL_MEMORY);\n    }\n  } catch(e) {\n    return false;\n  }\n\n  var success = _emscripten_replace_memory(buffer);\n  if (!success) return false;\n\n  // everything worked\n\n  Module['buffer'] = buffer;\n  Module['HEAP8'] = HEAP8 = new Int8Array(buffer);\n  Module['HEAP16'] = HEAP16 = new Int16Array(buffer);\n  Module['HEAP32'] = HEAP32 = new Int32Array(buffer);\n  Module['HEAPU8'] = HEAPU8 = new Uint8Array(buffer);\n  Module['HEAPU16'] = HEAPU16 = new Uint16Array(buffer);\n  Module['HEAPU32'] = HEAPU32 = new Uint32Array(buffer);\n  Module['HEAPF32'] = HEAPF32 = new Float32Array(buffer);\n  Module['HEAPF64'] = HEAPF64 = new Float64Array(buffer);\n  if (!ArrayBuffer.transfer) {\n    HEAP8.set(oldHEAP8);\n  }\n\n  Module.printErr('enlarged memory arrays from ' + OLD_TOTAL_MEMORY + ' to ' + TOTAL_MEMORY + ', took ' + (Date.now() - start) + ' ms (has ArrayBuffer.transfer? ' + (!!ArrayBuffer.transfer) + ')');\n\n  return true;\n}\n\nvar byteLength;\ntry {\n  byteLength = Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, 'byteLength').get);\n  byteLength(new ArrayBuffer(4)); // can fail on older ie\n} catch(e) { // can fail on older node/v8\n  byteLength = function(buffer) { return buffer.byteLength; };\n}\n\nvar TOTAL_STACK = Module['TOTAL_STACK'] || 5242880;\nvar TOTAL_MEMORY = Module['TOTAL_MEMORY'] || 268435456;\n\nvar totalMemory = 64*1024;\nwhile (totalMemory < TOTAL_MEMORY || totalMemory < 2*TOTAL_STACK) {\n  if (totalMemory < 16*1024*1024) {\n    totalMemory *= 2;\n  } else {\n    totalMemory += 16*1024*1024\n  }\n}\ntotalMemory = Math.max(totalMemory, 16*1024*1024);\nif (totalMemory !== TOTAL_MEMORY) {\n  Module.printErr('increasing TOTAL_MEMORY to ' + totalMemory + ' to be compliant with the asm.js spec (and given that TOTAL_STACK=' + TOTAL_STACK + ')');\n  TOTAL_MEMORY = totalMemory;\n}\n\n// Initialize the runtime's memory\n// check for full engine support (use string 'subarray' to avoid closure compiler confusion)\nassert(typeof Int32Array !== 'undefined' && typeof Float64Array !== 'undefined' && !!(new Int32Array(1)['subarray']) && !!(new Int32Array(1)['set']),\n       'JS engine does not provide full typed array support');\n\nvar buffer;\n\n\n\nbuffer = new ArrayBuffer(TOTAL_MEMORY);\nHEAP8 = new Int8Array(buffer);\nHEAP16 = new Int16Array(buffer);\nHEAP32 = new Int32Array(buffer);\nHEAPU8 = new Uint8Array(buffer);\nHEAPU16 = new Uint16Array(buffer);\nHEAPU32 = new Uint32Array(buffer);\nHEAPF32 = new Float32Array(buffer);\nHEAPF64 = new Float64Array(buffer);\n\n\n// Endianness check (note: assumes compiler arch was little-endian)\nHEAP32[0] = 255;\nassert(HEAPU8[0] === 255 && HEAPU8[3] === 0, 'Typed arrays 2 must be run on a little-endian system');\n\nModule['HEAP'] = HEAP;\nModule['buffer'] = buffer;\nModule['HEAP8'] = HEAP8;\nModule['HEAP16'] = HEAP16;\nModule['HEAP32'] = HEAP32;\nModule['HEAPU8'] = HEAPU8;\nModule['HEAPU16'] = HEAPU16;\nModule['HEAPU32'] = HEAPU32;\nModule['HEAPF32'] = HEAPF32;\nModule['HEAPF64'] = HEAPF64;\n\nfunction callRuntimeCallbacks(callbacks) {\n  while(callbacks.length > 0) {\n    var callback = callbacks.shift();\n    if (typeof callback == 'function') {\n      callback();\n      continue;\n    }\n    var func = callback.func;\n    if (typeof func === 'number') {\n      if (callback.arg === undefined) {\n        Runtime.dynCall('v', func);\n      } else {\n        Runtime.dynCall('vi', func, [callback.arg]);\n      }\n    } else {\n      func(callback.arg === undefined ? null : callback.arg);\n    }\n  }\n}\n\nvar __ATPRERUN__  = []; // functions called before the runtime is initialized\nvar __ATINIT__    = []; // functions called during startup\nvar __ATMAIN__    = []; // functions called when main() is to be run\nvar __ATEXIT__    = []; // functions called during shutdown\nvar __ATPOSTRUN__ = []; // functions called after the runtime has exited\n\nvar runtimeInitialized = false;\nvar runtimeExited = false;\n\n\nfunction preRun() {\n  // compatibility - merge in anything from Module['preRun'] at this time\n  if (Module['preRun']) {\n    if (typeof Module['preRun'] == 'function') Module['preRun'] = [Module['preRun']];\n    while (Module['preRun'].length) {\n      addOnPreRun(Module['preRun'].shift());\n    }\n  }\n  callRuntimeCallbacks(__ATPRERUN__);\n}\n\nfunction ensureInitRuntime() {\n  if (runtimeInitialized) return;\n  runtimeInitialized = true;\n  callRuntimeCallbacks(__ATINIT__);\n}\n\nfunction preMain() {\n  callRuntimeCallbacks(__ATMAIN__);\n}\n\nfunction exitRuntime() {\n  callRuntimeCallbacks(__ATEXIT__);\n  runtimeExited = true;\n}\n\nfunction postRun() {\n  // compatibility - merge in anything from Module['postRun'] at this time\n  if (Module['postRun']) {\n    if (typeof Module['postRun'] == 'function') Module['postRun'] = [Module['postRun']];\n    while (Module['postRun'].length) {\n      addOnPostRun(Module['postRun'].shift());\n    }\n  }\n  callRuntimeCallbacks(__ATPOSTRUN__);\n}\n\nfunction addOnPreRun(cb) {\n  __ATPRERUN__.unshift(cb);\n}\nModule[\"addOnPreRun\"] = addOnPreRun;\n\nfunction addOnInit(cb) {\n  __ATINIT__.unshift(cb);\n}\nModule[\"addOnInit\"] = addOnInit;\n\nfunction addOnPreMain(cb) {\n  __ATMAIN__.unshift(cb);\n}\nModule[\"addOnPreMain\"] = addOnPreMain;\n\nfunction addOnExit(cb) {\n  __ATEXIT__.unshift(cb);\n}\nModule[\"addOnExit\"] = addOnExit;\n\nfunction addOnPostRun(cb) {\n  __ATPOSTRUN__.unshift(cb);\n}\nModule[\"addOnPostRun\"] = addOnPostRun;\n\n// Tools\n\n\nfunction intArrayFromString(stringy, dontAddNull, length /* optional */) {\n  var len = length > 0 ? length : lengthBytesUTF8(stringy)+1;\n  var u8array = new Array(len);\n  var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);\n  if (dontAddNull) u8array.length = numBytesWritten;\n  return u8array;\n}\nModule[\"intArrayFromString\"] = intArrayFromString;\n\nfunction intArrayToString(array) {\n  var ret = [];\n  for (var i = 0; i < array.length; i++) {\n    var chr = array[i];\n    if (chr > 0xFF) {\n      assert(false, 'Character code ' + chr + ' (' + String.fromCharCode(chr) + ')  at offset ' + i + ' not in 0x00-0xFF.');\n      chr &= 0xFF;\n    }\n    ret.push(String.fromCharCode(chr));\n  }\n  return ret.join('');\n}\nModule[\"intArrayToString\"] = intArrayToString;\n\nfunction writeStringToMemory(string, buffer, dontAddNull) {\n  var array = intArrayFromString(string, dontAddNull);\n  var i = 0;\n  while (i < array.length) {\n    var chr = array[i];\n    HEAP8[(((buffer)+(i))>>0)]=chr;\n    i = i + 1;\n  }\n}\nModule[\"writeStringToMemory\"] = writeStringToMemory;\n\nfunction writeArrayToMemory(array, buffer) {\n  for (var i = 0; i < array.length; i++) {\n    HEAP8[((buffer++)>>0)]=array[i];\n  }\n}\nModule[\"writeArrayToMemory\"] = writeArrayToMemory;\n\nfunction writeAsciiToMemory(str, buffer, dontAddNull) {\n  for (var i = 0; i < str.length; ++i) {\n    assert(str.charCodeAt(i) === str.charCodeAt(i)&0xff);\n    HEAP8[((buffer++)>>0)]=str.charCodeAt(i);\n  }\n  // Null-terminate the pointer to the HEAP.\n  if (!dontAddNull) HEAP8[((buffer)>>0)]=0;\n}\nModule[\"writeAsciiToMemory\"] = writeAsciiToMemory;\n\nfunction unSign(value, bits, ignore) {\n  if (value >= 0) {\n    return value;\n  }\n  return bits <= 32 ? 2*Math.abs(1 << (bits-1)) + value // Need some trickery, since if bits == 32, we are right at the limit of the bits JS uses in bitshifts\n                    : Math.pow(2, bits)         + value;\n}\nfunction reSign(value, bits, ignore) {\n  if (value <= 0) {\n    return value;\n  }\n  var half = bits <= 32 ? Math.abs(1 << (bits-1)) // abs is needed if bits == 32\n                        : Math.pow(2, bits-1);\n  if (value >= half && (bits <= 32 || value > half)) { // for huge values, we can hit the precision limit and always get true here. so don't do that\n                                                       // but, in general there is no perfect solution here. With 64-bit ints, we get rounding and errors\n                                                       // TODO: In i64 mode 1, resign the two parts separately and safely\n    value = -2*half + value; // Cannot bitshift half, as it may be at the limit of the bits JS uses in bitshifts\n  }\n  return value;\n}\n\n\n// check for imul support, and also for correctness ( https://bugs.webkit.org/show_bug.cgi?id=126345 )\nif (!Math['imul'] || Math['imul'](0xffffffff, 5) !== -5) Math['imul'] = function imul(a, b) {\n  var ah  = a >>> 16;\n  var al = a & 0xffff;\n  var bh  = b >>> 16;\n  var bl = b & 0xffff;\n  return (al*bl + ((ah*bl + al*bh) << 16))|0;\n};\nMath.imul = Math['imul'];\n\n\nif (!Math['clz32']) Math['clz32'] = function(x) {\n  x = x >>> 0;\n  for (var i = 0; i < 32; i++) {\n    if (x & (1 << (31 - i))) return i;\n  }\n  return 32;\n};\nMath.clz32 = Math['clz32']\n\nvar Math_abs = Math.abs;\nvar Math_cos = Math.cos;\nvar Math_sin = Math.sin;\nvar Math_tan = Math.tan;\nvar Math_acos = Math.acos;\nvar Math_asin = Math.asin;\nvar Math_atan = Math.atan;\nvar Math_atan2 = Math.atan2;\nvar Math_exp = Math.exp;\nvar Math_log = Math.log;\nvar Math_sqrt = Math.sqrt;\nvar Math_ceil = Math.ceil;\nvar Math_floor = Math.floor;\nvar Math_pow = Math.pow;\nvar Math_imul = Math.imul;\nvar Math_fround = Math.fround;\nvar Math_min = Math.min;\nvar Math_clz32 = Math.clz32;\n\n// A counter of dependencies for calling run(). If we need to\n// do asynchronous work before running, increment this and\n// decrement it. Incrementing must happen in a place like\n// PRE_RUN_ADDITIONS (used by emcc to add file preloading).\n// Note that you can add dependencies in preRun, even though\n// it happens right before run - run will be postponed until\n// the dependencies are met.\nvar runDependencies = 0;\nvar runDependencyWatcher = null;\nvar dependenciesFulfilled = null; // overridden to take different actions when all run dependencies are fulfilled\nvar runDependencyTracking = {};\n\nfunction getUniqueRunDependency(id) {\n  var orig = id;\n  while (1) {\n    if (!runDependencyTracking[id]) return id;\n    id = orig + Math.random();\n  }\n  return id;\n}\n\nfunction addRunDependency(id) {\n  runDependencies++;\n  if (Module['monitorRunDependencies']) {\n    Module['monitorRunDependencies'](runDependencies);\n  }\n  if (id) {\n    assert(!runDependencyTracking[id]);\n    runDependencyTracking[id] = 1;\n    if (runDependencyWatcher === null && typeof setInterval !== 'undefined') {\n      // Check for missing dependencies every few seconds\n      runDependencyWatcher = setInterval(function() {\n        if (ABORT) {\n          clearInterval(runDependencyWatcher);\n          runDependencyWatcher = null;\n          return;\n        }\n        var shown = false;\n        for (var dep in runDependencyTracking) {\n          if (!shown) {\n            shown = true;\n            Module.printErr('still waiting on run dependencies:');\n          }\n          Module.printErr('dependency: ' + dep);\n        }\n        if (shown) {\n          Module.printErr('(end of list)');\n        }\n      }, 10000);\n    }\n  } else {\n    Module.printErr('warning: run dependency added without ID');\n  }\n}\nModule[\"addRunDependency\"] = addRunDependency;\n\nfunction removeRunDependency(id) {\n  runDependencies--;\n  if (Module['monitorRunDependencies']) {\n    Module['monitorRunDependencies'](runDependencies);\n  }\n  if (id) {\n    assert(runDependencyTracking[id]);\n    delete runDependencyTracking[id];\n  } else {\n    Module.printErr('warning: run dependency removed without ID');\n  }\n  if (runDependencies == 0) {\n    if (runDependencyWatcher !== null) {\n      clearInterval(runDependencyWatcher);\n      runDependencyWatcher = null;\n    }\n    if (dependenciesFulfilled) {\n      var callback = dependenciesFulfilled;\n      dependenciesFulfilled = null;\n      callback(); // can add another dependenciesFulfilled\n    }\n  }\n}\nModule[\"removeRunDependency\"] = removeRunDependency;\n\nModule[\"preloadedImages\"] = {}; // maps url to image data\nModule[\"preloadedAudios\"] = {}; // maps url to audio data\n\n\n\nvar memoryInitializer = null;\n\n\n\n// === Body ===\n\nvar ASM_CONSTS = [function($0, $1, $2, $3) { { if (!artoolkit[\"multiEachMarkerInfo\"]) { artoolkit[\"multiEachMarkerInfo\"] = ({}); } var multiEachMarker = artoolkit[\"multiEachMarkerInfo\"]; multiEachMarker['visible'] = $0; multiEachMarker['pattId'] = $1; multiEachMarker['pattType'] = $2; multiEachMarker['width'] = $3; } },\n function($0, $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23, $24, $25, $26, $27, $28, $29, $30, $31, $32) { { var $a = arguments; var i = 12; if (!artoolkit[\"markerInfo\"]) { artoolkit[\"markerInfo\"] = ({ pos: [0,0], line: [[0,0,0], [0,0,0], [0,0,0], [0,0,0]], vertex: [[0,0], [0,0], [0,0], [0,0]] }); } var markerInfo = artoolkit[\"markerInfo\"]; markerInfo[\"area\"] = $0; markerInfo[\"id\"] = $1; markerInfo[\"idPatt\"] = $2; markerInfo[\"idMatrix\"] = $3; markerInfo[\"dir\"] = $4; markerInfo[\"dirPatt\"] = $5; markerInfo[\"dirMatrix\"] = $6; markerInfo[\"cf\"] = $7; markerInfo[\"cfPatt\"] = $8; markerInfo[\"cfMatrix\"] = $9; markerInfo[\"pos\"][0] = $10; markerInfo[\"pos\"][1] = $11; markerInfo[\"line\"][0][0] = $a[i++]; markerInfo[\"line\"][0][1] = $a[i++]; markerInfo[\"line\"][0][2] = $a[i++]; markerInfo[\"line\"][1][0] = $a[i++]; markerInfo[\"line\"][1][1] = $a[i++]; markerInfo[\"line\"][1][2] = $a[i++]; markerInfo[\"line\"][2][0] = $a[i++]; markerInfo[\"line\"][2][1] = $a[i++]; markerInfo[\"line\"][2][2] = $a[i++]; markerInfo[\"line\"][3][0] = $a[i++]; markerInfo[\"line\"][3][1] = $a[i++]; markerInfo[\"line\"][3][2] = $a[i++]; markerInfo[\"vertex\"][0][0] = $a[i++]; markerInfo[\"vertex\"][0][1] = $a[i++]; markerInfo[\"vertex\"][1][0] = $a[i++]; markerInfo[\"vertex\"][1][1] = $a[i++]; markerInfo[\"vertex\"][2][0] = $a[i++]; markerInfo[\"vertex\"][2][1] = $a[i++]; markerInfo[\"vertex\"][3][0] = $a[i++]; markerInfo[\"vertex\"][3][1] = $a[i++]; markerInfo[\"errorCorrected\"] = $a[i++]; } },\n function($0, $1, $2, $3, $4) { { if (!artoolkit[\"frameMalloc\"]) { artoolkit[\"frameMalloc\"] = ({}); } var frameMalloc = artoolkit[\"frameMalloc\"]; frameMalloc[\"framepointer\"] = $1; frameMalloc[\"framesize\"] = $2; frameMalloc[\"camera\"] = $3; frameMalloc[\"transform\"] = $4; } }];\n\nfunction _emscripten_asm_const_33(code, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32) {\n return ASM_CONSTS[code](a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32);\n}\n\nfunction _emscripten_asm_const_4(code, a0, a1, a2, a3) {\n return ASM_CONSTS[code](a0, a1, a2, a3);\n}\n\nfunction _emscripten_asm_const_5(code, a0, a1, a2, a3, a4) {\n return ASM_CONSTS[code](a0, a1, a2, a3, a4);\n}\n\n\n\nSTATIC_BASE = 8;\n\nSTATICTOP = STATIC_BASE + 18320;\n  /* global initializers */  __ATINIT__.push({ func: function() { __GLOBAL__sub_I_ARToolKitJS_cpp() } }, { func: function() { __GLOBAL__sub_I_bind_cpp() } });\n  \n\n/* memory initializer */ allocate([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,9,0,0,52,42,0,0,0,0,0,0,1,0,0,0,128,1,0,0,0,0,0,0,228,8,0,0,115,42,0,0,52,9,0,0,12,47,0,0,0,0,0,0,1,0,0,0,128,1,0,0,0,0,0,0,52,9,0,0,205,46,0,0,0,0,0,0,1,0,0,0,128,1,0,0,0,0,0,0,228,8,0,0,186,46,0,0,228,8,0,0,155,46,0,0,228,8,0,0,194,45,0,0,228,8,0,0,163,45,0,0,228,8,0,0,132,45,0,0,228,8,0,0,101,45,0,0,228,8,0,0,70,45,0,0,228,8,0,0,225,45,0,0,228,8,0,0,0,46,0,0,228,8,0,0,31,46,0,0,228,8,0,0,62,46,0,0,228,8,0,0,93,46,0,0,228,8,0,0,124,46,0,0,12,9,0,0,75,47,0,0,48,2,0,0,0,0,0,0,228,8,0,0,88,47,0,0,228,8,0,0,101,47,0,0,12,9,0,0,114,47,0,0,56,2,0,0,0,0,0,0,12,9,0,0,147,47,0,0,64,2,0,0,0,0,0,0,12,9,0,0,181,47,0,0,64,2,0,0,0,0,0,0,200,8,0,0,221,47,0,0,200,8,0,0,223,47,0,0,200,8,0,0,225,47,0,0,200,8,0,0,227,47,0,0,200,8,0,0,229,47,0,0,200,8,0,0,231,47,0,0,200,8,0,0,233,47,0,0,200,8,0,0,235,47,0,0,200,8,0,0,237,47,0,0,200,8,0,0,244,53,0,0,200,8,0,0,239,47,0,0,200,8,0,0,241,47,0,0,200,8,0,0,243,47,0,0,12,9,0,0,245,47,0,0,80,2,0,0,0,0,0,0,12,9,0,0,26,48,0,0,80,2,0,0,0,0,0,0,255,15,0,0,6,16,0,0,18,16,0,0,28,16,0,0,255,255,255,255,255,255,255,255,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,1,0,0,0,2,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,6,0,0,0,12,0,0,0,11,0,0,0,5,0,0,0,10,0,0,0,7,0,0,0,14,0,0,0,15,0,0,0,13,0,0,0,9,0,0,0,1,0,0,0,2,0,0,0,4,0,0,0,8,0,0,0,16,0,0,0,32,0,0,0,64,0,0,0,3,0,0,0,6,0,0,0,12,0,0,0,24,0,0,0,48,0,0,0,96,0,0,0,67,0,0,0,5,0,0,0,10,0,0,0,20,0,0,0,40,0,0,0,80,0,0,0,35,0,0,0,70,0,0,0,15,0,0,0,30,0,0,0,60,0,0,0,120,0,0,0,115,0,0,0,101,0,0,0,73,0,0,0,17,0,0,0,34,0,0,0,68,0,0,0,11,0,0,0,22,0,0,0,44,0,0,0,88,0,0,0,51,0,0,0,102,0,0,0,79,0,0,0,29,0,0,0,58,0,0,0,116,0,0,0,107,0,0,0,85,0,0,0,41,0,0,0,82,0,0,0,39,0,0,0,78,0,0,0,31,0,0,0,62,0,0,0,124,0,0,0,123,0,0,0,117,0,0,0,105,0,0,0,81,0,0,0,33,0,0,0,66,0,0,0,7,0,0,0,14,0,0,0,28,0,0,0,56,0,0,0,112,0,0,0,99,0,0,0,69,0,0,0,9,0,0,0,18,0,0,0,36,0,0,0,72,0,0,0,19,0,0,0,38,0,0,0,76,0,0,0,27,0,0,0,54,0,0,0,108,0,0,0,91,0,0,0,53,0,0,0,106,0,0,0,87,0,0,0,45,0,0,0,90,0,0,0,55,0,0,0,110,0,0,0,95,0,0,0,61,0,0,0,122,0,0,0,119,0,0,0,109,0,0,0,89,0,0,0,49,0,0,0,98,0,0,0,71,0,0,0,13,0,0,0,26,0,0,0,52,0,0,0,104,0,0,0,83,0,0,0,37,0,0,0,74,0,0,0,23,0,0,0,46,0,0,0,92,0,0,0,59,0,0,0,118,0,0,0,111,0,0,0,93,0,0,0,57,0,0,0,114,0,0,0,103,0,0,0,77,0,0,0,25,0,0,0,50,0,0,0,100,0,0,0,75,0,0,0,21,0,0,0,42,0,0,0,84,0,0,0,43,0,0,0,86,0,0,0,47,0,0,0,94,0,0,0,63,0,0,0,126,0,0,0,127,0,0,0,125,0,0,0,121,0,0,0,113,0,0,0,97,0,0,0,65,0,0,0,255,255,255,255,0,0,0,0,1,0,0,0,4,0,0,0,2,0,0,0,8,0,0,0,5,0,0,0,10,0,0,0,3,0,0,0,14,0,0,0,9,0,0,0,7,0,0,0,6,0,0,0,13,0,0,0,11,0,0,0,12,0,0,0,255,255,255,255,0,0,0,0,1,0,0,0,7,0,0,0,2,0,0,0,14,0,0,0,8,0,0,0,56,0,0,0,3,0,0,0,63,0,0,0,15,0,0,0,31,0,0,0,9,0,0,0,90,0,0,0,57,0,0,0,21,0,0,0,4,0,0,0,28,0,0,0,64,0,0,0,67,0,0,0,16,0,0,0,112,0,0,0,32,0,0,0,97,0,0,0,10,0,0,0,108,0,0,0,91,0,0,0,70,0,0,0,58,0,0,0,38,0,0,0,22,0,0,0,47,0,0,0,5,0,0,0,54,0,0,0,29,0,0,0,19,0,0,0,65,0,0,0,95,0,0,0,68,0,0,0,45,0,0,0,17,0,0,0,43,0,0,0,113,0,0,0,115,0,0,0,33,0,0,0,77,0,0,0,98,0,0,0,117,0,0,0,11,0,0,0,87,0,0,0,109,0,0,0,35,0,0,0,92,0,0,0,74,0,0,0,71,0,0,0,79,0,0,0,59,0,0,0,104,0,0,0,39,0,0,0,100,0,0,0,23,0,0,0,82,0,0,0,48,0,0,0,119,0,0,0,6,0,0,0,126,0,0,0,55,0,0,0,13,0,0,0,30,0,0,0,62,0,0,0,20,0,0,0,89,0,0,0,66,0,0,0,27,0,0,0,96,0,0,0,111,0,0,0,69,0,0,0,107,0,0,0,46,0,0,0,37,0,0,0,18,0,0,0,53,0,0,0,44,0,0,0,94,0,0,0,114,0,0,0,42,0,0,0,116,0,0,0,76,0,0,0,34,0,0,0,86,0,0,0,78,0,0,0,73,0,0,0,99,0,0,0,103,0,0,0,118,0,0,0,81,0,0,0,12,0,0,0,125,0,0,0,88,0,0,0,61,0,0,0,110,0,0,0,26,0,0,0,36,0,0,0,106,0,0,0,93,0,0,0,52,0,0,0,75,0,0,0,41,0,0,0,72,0,0,0,85,0,0,0,80,0,0,0,102,0,0,0,60,0,0,0,124,0,0,0,105,0,0,0,25,0,0,0,40,0,0,0,51,0,0,0,101,0,0,0,84,0,0,0,24,0,0,0,123,0,0,0,83,0,0,0,50,0,0,0,49,0,0,0,122,0,0,0,120,0,0,0,121,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,136,0,0,0,5,0,0,0,144,0,0,0,6,0,0,0,152,0,0,0,9,0,0,0,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,253,255,255,255,254,255,255,255,0,0,0,0,112,2,0,0,168,2,0,0,200,2,0,0,112,2,0,0,168,2,0,0,168,2,0,0,208,2,0,0,168,2,0,0,112,2,0,0,168,2,0,0,208,2,0,0,168,2,0,0,112,2,0,0,168,2,0,0,168,2,0,0,104,1,0,0,168,2,0,0,168,2,0,0,168,2,0,0,168,2,0,0,168,2,0,0,104,1,0,0,168,2,0,0,168,2,0,0,168,2,0,0,168,2,0,0,168,2,0,0,168,2,0,0,0,0,0,0,32,2,0,0,1,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,96,2,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,0,0,0,0,80,2,0,0,3,0,0,0,7,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,216,2,0,0,3,0,0,0,8,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,232,2,0,0,3,0,0,0,9,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,192,3,0,0,192,4,0,0,192,5,0,0,192,6,0,0,192,7,0,0,192,8,0,0,192,9,0,0,192,10,0,0,192,11,0,0,192,12,0,0,192,13,0,0,192,14,0,0,192,15,0,0,192,16,0,0,192,17,0,0,192,18,0,0,192,19,0,0,192,20,0,0,192,21,0,0,192,22,0,0,192,23,0,0,192,24,0,0,192,25,0,0,192,26,0,0,192,27,0,0,192,28,0,0,192,29,0,0,192,30,0,0,192,31,0,0,192,0,0,0,179,1,0,0,195,2,0,0,195,3,0,0,195,4,0,0,195,5,0,0,195,6,0,0,195,7,0,0,195,8,0,0,195,9,0,0,195,10,0,0,195,11,0,0,195,12,0,0,195,13,0,0,211,14,0,0,195,15,0,0,195,0,0,12,187,1,0,12,195,2,0,12,195,3,0,12,195,4,0,12,211,240,10,0,0,96,11,0,0,0,0,0,0,10,0,0,0,100,0,0,0,232,3,0,0,16,39,0,0,160,134,1,0,64,66,15,0,128,150,152,0,0,225,245,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,5,0,0,0,113,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,105,65,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,7,0,0,0,11,0,0,0,13,0,0,0,17,0,0,0,19,0,0,0,23,0,0,0,29,0,0,0,31,0,0,0,37,0,0,0,41,0,0,0,43,0,0,0,47,0,0,0,53,0,0,0,59,0,0,0,61,0,0,0,67,0,0,0,71,0,0,0,73,0,0,0,79,0,0,0,83,0,0,0,89,0,0,0,97,0,0,0,101,0,0,0,103,0,0,0,107,0,0,0,109,0,0,0,113,0,0,0,127,0,0,0,131,0,0,0,137,0,0,0,139,0,0,0,149,0,0,0,151,0,0,0,157,0,0,0,163,0,0,0,167,0,0,0,173,0,0,0,179,0,0,0,181,0,0,0,191,0,0,0,193,0,0,0,197,0,0,0,199,0,0,0,211,0,0,0,1,0,0,0,11,0,0,0,13,0,0,0,17,0,0,0,19,0,0,0,23,0,0,0,29,0,0,0,31,0,0,0,37,0,0,0,41,0,0,0,43,0,0,0,47,0,0,0,53,0,0,0,59,0,0,0,61,0,0,0,67,0,0,0,71,0,0,0,73,0,0,0,79,0,0,0,83,0,0,0,89,0,0,0,97,0,0,0,101,0,0,0,103,0,0,0,107,0,0,0,109,0,0,0,113,0,0,0,121,0,0,0,127,0,0,0,131,0,0,0,137,0,0,0,139,0,0,0,143,0,0,0,149,0,0,0,151,0,0,0,157,0,0,0,163,0,0,0,167,0,0,0,169,0,0,0,173,0,0,0,179,0,0,0,181,0,0,0,187,0,0,0,191,0,0,0,193,0,0,0,197,0,0,0,199,0,0,0,209,0,0,0,69,114,114,111,114,58,32,108,97,98,101,108,105,110,103,32,119,111,114,107,32,111,118,101,114,102,108,111,119,46,10,0,69,114,114,111,114,58,32,85,110,115,117,112,112,111,114,116,101,100,32,112,105,120,101,108,32,102,111,114,109,97,116,32,40,37,100,41,32,114,101,113,117,101,115,116,101,100,46,10,0,85,110,107,110,111,119,110,32,111,114,32,117,110,115,117,112,112,111,114,116,101,100,32,108,97,98,101,108,105,110,103,32,116,104,114,101,115,104,111,108,100,32,109,111,100,101,32,114,101,113,117,101,115,116,101,100,46,32,83,101,116,32,116,111,32,109,97,110,117,97,108,46,10,0,76,97,98,101,108,105,110,103,32,116,104,114,101,115,104,111,108,100,32,109,111,100,101,32,115,101,116,32,116,111,32,37,115,46,10,0,77,65,78,85,65,76,0,65,85,84,79,95,77,69,68,73,65,78,0,65,85,84,79,95,79,84,83,85,0,65,85,84,79,95,65,68,65,80,84,73,86,69,65,85,84,79,95,66,82,65,67,75,69,84,73,78,71,0,65,117,116,111,32,116,104,114,101,115,104,111,108,100,32,40,98,114,97,99,107,101,116,41,32,109,97,114,107,101,114,32,99,111,117,110,116,115,32,45,91,37,51,100,58,32,37,51,100,93,32,91,37,51,100,58,32,37,51,100,93,32,91,37,51,100,58,32,37,51,100,93,43,46,10,0,65,117,116,111,32,116,104,114,101,115,104,111,108,100,32,40,98,114,97,99,107,101,116,41,32,97,100,106,117,115,116,101,100,32,116,104,114,101,115,104,111,108,100,32,116,111,32,37,100,46,10,0,109,101,100,105,97,110,0,79,116,115,117,0,65,117,116,111,32,116,104,114,101,115,104,111,108,100,32,40,37,115,41,32,97,100,106,117,115,116,101,100,32,116,104,114,101,115,104,111,108,100,32,116,111,32,37,100,46,10,0,63,63,63,32,49,10,0,63,63,63,32,50,10,0,63,63,63,32,51,10,0,69,114,114,111,114,58,32,85,110,115,117,112,112,111,114,116,101,100,32,112,105,120,101,108,32,102,111,114,109,97,116,32,112,97,115,115,101,100,32,116,111,32,97,114,73,109,97,103,101,80,114,111,99,72,105,115,116,40,41,46,10,0,0,0,0,1,0,1,1,1,0,2,4,255,255,5,3,1,0,2,255,6,7,255,3,1,2,2,3,2,3,2,3,3,0,255,4,6,7,5,255,1,4,5,4,4,5,5,4,5,7,6,6,6,7,7,7,6,255,2,4,6,7,5,3,255,0,1,1,1,1,1,1,0,1,1,1,0,0,1,1,1,1,1,0,1,1,0,1,1,1,0,1,1,1,1,0,1,1,0,1,1,1,1,0,1,1,1,0,1,1,0,1,1,1,1,1,0,0,1,1,1,0,1,1,1,1,1,1,0,0,255,255,3,255,5,6,255,255,9,10,255,12,255,255,15,255,17,18,255,20,255,255,23,24,255,255,27,255,29,30,255,255,1,2,255,4,255,255,7,8,255,255,11,255,13,14,255,16,255,255,19,255,21,22,255,255,25,26,255,28,255,255,31,69,114,114,111,114,58,32,117,110,115,117,112,112,111,114,116,101,100,32,112,105,120,101,108,32,102,111,114,109,97,116,46,10,0,69,114,114,111,114,58,32,78,85,76,76,32,112,97,116,116,72,97,110,100,108,101,46,10,0,69,114,114,111,114,58,32,99,97,110,39,116,32,108,111,97,100,32,112,97,116,116,101,114,110,32,102,114,111,109,32,78,85,76,76,32,98,117,102,102,101,114,46,10,0,69,114,114,111,114,58,32,111,117,116,32,111,102,32,109,101,109,111,114,121,46,10,0,32,9,10,13,0,80,97,116,116,101,114,110,32,68,97,116,97,32,114,101,97,100,32,101,114,114,111,114,33,33,10,0,69,114,114,111,114,32,111,112,101,110,105,110,103,32,112,97,116,116,101,114,110,32,102,105,108,101,32,39,37,115,39,32,102,111,114,32,114,101,97,100,105,110,103,46,10,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,112,97,116,116,101,114,110,32,102,105,108,101,32,39,37,115,39,46,10,0,114,98,0,69,114,114,111,114,32,40,37,100,41,58,32,117,110,97,98,108,101,32,116,111,32,111,112,101,110,32,99,97,109,101,114,97,32,112,97,114,97,109,101,116,101,114,115,32,102,105,108,101,32,34,37,115,34,32,102,111,114,32,114,101,97,100,105,110,103,46,10,0,69,114,114,111,114,32,40,37,100,41,58,32,117,110,97,98,108,101,32,116,111,32,100,101,116,101,114,109,105,110,101,32,102,105,108,101,32,108,101,110,103,116,104,46,0,69,114,114,111,114,58,32,115,117,112,112,108,105,101,100,32,102,105,108,101,32,100,111,101,115,32,110,111,116,32,97,112,112,101,97,114,32,116,111,32,98,101,32,97,110,32,65,82,84,111,111,108,75,105,116,32,99,97,109,101,114,97,32,112,97,114,97,109,101,116,101,114,32,102,105,108,101,46,10,0,69,114,114,111,114,32,40,37,100,41,58,32,117,110,97,98,108,101,32,116,111,32,114,101,97,100,32,102,114,111,109,32,102,105,108,101,46,0,69,114,114,111,114,58,32,105,99,112,71,101,116,74,95,85,95,88,99,0,69,114,114,111,114,58,32,109,97,108,108,111,99,10,0,69,114,114,111,114,32,49,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,50,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,51,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,52,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,53,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,54,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,55,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,114,0,69,114,114,111,114,58,32,117,110,97,98,108,101,32,116,111,32,111,112,101,110,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,46,10,0,37,115,37,115,10,0,37,100,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,58,32,70,105,114,115,116,32,108,105,110,101,32,109,117,115,116,32,98,101,32,110,117,109,98,101,114,32,111,102,32,109,97,114,107,101,114,32,99,111,110,102,105,103,115,32,116,111,32,114,101,97,100,46,10,0,79,117,116,32,111,102,32,109,101,109,111,114,121,33,33,10,0,37,108,108,117,37,99,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,58,32,112,97,116,116,101,114,110,32,39,37,115,39,32,115,112,101,99,105,102,105,101,100,32,105,110,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,117,114,97,116,105,111,110,32,119,104,105,108,101,32,105,110,32,98,97,114,99,111,100,101,45,111,110,108,121,32,109,111,100,101,46,10,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,58,32,85,110,97,98,108,101,32,116,111,32,100,101,116,101,114,109,105,110,101,32,100,105,114,101,99,116,111,114,121,32,110,97,109,101,46,10,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,58,32,85,110,97,98,108,101,32,116,111,32,108,111,97,100,32,112,97,116,116,101,114,110,32,39,37,115,39,46,10,0,37,108,102,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,44,32,109,97,114,107,101,114,32,100,101,102,105,110,105,116,105,111,110,32,37,51,100,58,32,70,105,114,115,116,32,108,105,110,101,32,109,117,115,116,32,98,101,32,112,97,116,116,101,114,110,32,119,105,100,116,104,46,10,0,37,108,102,32,37,108,102,32,37,108,102,32,37,108,102,0,37,102,32,37,102,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,44,32,109,97,114,107,101,114,32,100,101,102,105,110,105,116,105,111,110,32,37,51,100,58,32,76,105,110,101,115,32,50,32,45,32,52,32,109,117,115,116,32,98,101,32,109,97,114,107,101,114,32,116,114,97,110,115,102,111,114,109,46,10,0,97,114,103,108,67,97,109,101,114,97,70,114,117,115,116,117,109,40,41,58,32,97,114,80,97,114,97,109,68,101,99,111,109,112,77,97,116,40,41,32,105,110,100,105,99,97,116,101,100,32,112,97,114,97,109,101,116,101,114,32,101,114,114,111,114,46,10,0,108,111,97,100,67,97,109,101,114,97,40,41,58,32,69,114,114,111,114,32,108,111,97,100,105,110,103,32,112,97,114,97,109,101,116,101,114,32,102,105,108,101,32,37,115,32,102,111,114,32,99,97,109,101,114,97,46,10,0,42,42,42,32,67,97,109,101,114,97,32,80,97,114,97,109,101,116,101,114,32,114,101,115,105,122,101,100,32,102,114,111,109,32,37,100,44,32,37,100,46,32,42,42,42,10,0,115,101,116,67,97,109,101,114,97,40,41,58,32,69,114,114,111,114,58,32,97,114,80,97,114,97,109,76,84,67,114,101,97,116,101,46,10,0,115,101,116,67,97,109,101,114,97,40,41,58,32,69,114,114,111,114,58,32,97,114,67,114,101,97,116,101,72,97,110,100,108,101,46,10,0,115,101,116,67,97,109,101,114,97,40,41,58,32,69,114,114,111,114,32,99,114,101,97,116,105,110,103,32,51,68,32,104,97,110,100,108,101,0,108,111,97,100,77,97,114,107,101,114,40,41,58,32,69,114,114,111,114,32,108,111,97,100,105,110,103,32,112,97,116,116,101,114,110,32,102,105,108,101,32,37,115,46,10,0,65,82,84,111,111,108,75,105,116,74,83,40,41,58,32,85,110,97,98,108,101,32,116,111,32,115,101,116,32,117,112,32,65,82,32,109,97,114,107,101,114,46,10,0,99,111,110,102,105,103,32,100,97,116,97,32,108,111,97,100,32,101,114,114,111,114,32,33,33,10,0,65,82,84,111,111,108,75,105,116,74,83,40,41,58,32,85,110,97,98,108,101,32,116,111,32,115,101,116,32,117,112,32,65,82,32,109,117,108,116,105,109,97,114,107,101,114,46,10,0,80,97,116,116,101,114,110,32,100,101,116,101,99,116,105,111,110,32,109,111,100,101,32,115,101,116,32,116,111,32,37,100,46,10,0,80,97,116,116,101,114,110,32,114,97,116,105,111,32,115,105,122,101,32,115,101,116,32,116,111,32,37,102,46,10,0,76,97,98,101,108,105,110,103,32,109,111,100,101,32,115,101,116,32,116,111,32,37,100,10,0,84,104,114,101,115,104,111,108,100,32,115,101,116,32,116,111,32,37,100,10,0,84,104,114,101,115,104,111,108,100,32,109,111,100,101,32,115,101,116,32,116,111,32,37,100,10,0,111,110,46,0,111,102,102,46,0,68,101,98,117,103,32,109,111,100,101,32,115,101,116,32,116,111,32,37,115,10,0,73,109,97,103,101,32,112,114,111,99,46,32,109,111,100,101,32,115,101,116,32,116,111,32,37,100,46,10,0,123,32,105,102,32,40,33,97,114,116,111,111,108,107,105,116,91,34,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,73,110,102,111,34,93,41,32,123,32,97,114,116,111,111,108,107,105,116,91,34,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,73,110,102,111,34,93,32,61,32,40,123,125,41,59,32,125,32,118,97,114,32,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,32,61,32,97,114,116,111,111,108,107,105,116,91,34,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,73,110,102,111,34,93,59,32,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,91,39,118,105,115,105,98,108,101,39,93,32,61,32,36,48,59,32,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,91,39,112,97,116,116,73,100,39,93,32,61,32,36,49,59,32,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,91,39,112,97,116,116,84,121,112,101,39,93,32,61,32,36,50,59,32,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,91,39,119,105,100,116,104,39,93,32,61,32,36,51,59,32,125,0,123,32,118,97,114,32,36,97,32,61,32,97,114,103,117,109,101,110,116,115,59,32,118,97,114,32,105,32,61,32,49,50,59,32,105,102,32,40,33,97,114,116,111,111,108,107,105,116,91,34,109,97,114,107,101,114,73,110,102,111,34,93,41,32,123,32,97,114,116,111,111,108,107,105,116,91,34,109,97,114,107,101,114,73,110,102,111,34,93,32,61,32,40,123,32,112,111,115,58,32,91,48,44,48,93,44,32,108,105,110,101,58,32,91,91,48,44,48,44,48,93,44,32,91,48,44,48,44,48,93,44,32,91,48,44,48,44,48,93,44,32,91,48,44,48,44,48,93,93,44,32,118,101,114,116,101,120,58,32,91,91,48,44,48,93,44,32,91,48,44,48,93,44,32,91,48,44,48,93,44,32,91,48,44,48,93,93,32,125,41,59,32,125,32,118,97,114,32,109,97,114,107,101,114,73,110,102,111,32,61,32,97,114,116,111,111,108,107,105,116,91,34,109,97,114,107,101,114,73,110,102,111,34,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,97,114,101,97,34,93,32,61,32,36,48,59,32,109,97,114,107,101,114,73,110,102,111,91,34,105,100,34,93,32,61,32,36,49,59,32,109,97,114,107,101,114,73,110,102,111,91,34,105,100,80,97,116,116,34,93,32,61,32,36,50,59,32,109,97,114,107,101,114,73,110,102,111,91,34,105,100,77,97,116,114,105,120,34,93,32,61,32,36,51,59,32,109,97,114,107,101,114,73,110,102,111,91,34,100,105,114,34,93,32,61,32,36,52,59,32,109,97,114,107,101,114,73,110,102,111,91,34,100,105,114,80,97,116,116,34,93,32,61,32,36,53,59,32,109,97,114,107,101,114,73,110,102,111,91,34,100,105,114,77,97,116,114,105,120,34,93,32,61,32,36,54,59,32,109,97,114,107,101,114,73,110,102,111,91,34,99,102,34,93,32,61,32,36,55,59,32,109,97,114,107,101,114,73,110,102,111,91,34,99,102,80,97,116,116,34,93,32,61,32,36,56,59,32,109,97,114,107,101,114,73,110,102,111,91,34,99,102,77,97,116,114,105,120,34,93,32,61,32,36,57,59,32,109,97,114,107,101,114,73,110,102,111,91,34,112,111,115,34,93,91,48,93,32,61,32,36,49,48,59,32,109,97,114,107,101,114,73,110,102,111,91,34,112,111,115,34,93,91,49,93,32,61,32,36,49,49,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,48,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,48,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,48,93,91,50,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,49,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,49,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,49,93,91,50,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,50,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,50,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,50,93,91,50,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,51,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,51,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,51,93,91,50,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,48,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,48,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,49,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,49,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,50,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,50,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,51,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,51,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,101,114,114,111,114,67,111,114,114,101,99,116,101,100,34,93,32,61,32,36,97,91,105,43,43,93,59,32,125,0,115,101,116,117,112,40,41,58,32,69,114,114,111,114,58,32,97,114,80,97,116,116,67,114,101,97,116,101,72,97,110,100,108,101,46,10,0,65,108,108,111,99,97,116,101,100,32,118,105,100,101,111,70,114,97,109,101,83,105,122,101,32,37,100,10,0,123,32,105,102,32,40,33,97,114,116,111,111,108,107,105,116,91,34,102,114,97,109,101,77,97,108,108,111,99,34,93,41,32,123,32,97,114,116,111,111,108,107,105,116,91,34,102,114,97,109,101,77,97,108,108,111,99,34,93,32,61,32,40,123,125,41,59,32,125,32,118,97,114,32,102,114,97,109,101,77,97,108,108,111,99,32,61,32,97,114,116,111,111,108,107,105,116,91,34,102,114,97,109,101,77,97,108,108,111,99,34,93,59,32,102,114,97,109,101,77,97,108,108,111,99,91,34,102,114,97,109,101,112,111,105,110,116,101,114,34,93,32,61,32,36,49,59,32,102,114,97,109,101,77,97,108,108,111,99,91,34,102,114,97,109,101,115,105,122,101,34,93,32,61,32,36,50,59,32,102,114,97,109,101,77,97,108,108,111,99,91,34,99,97,109,101,114,97,34,93,32,61,32,36,51,59,32,102,114,97,109,101,77,97,108,108,111,99,91,34,116,114,97,110,115,102,111,114,109,34,93,32,61,32,36,52,59,32,125,0,115,101,116,117,112,0,116,101,97,114,100,111,119,110,0,95,97,100,100,77,97,114,107,101,114,0,95,97,100,100,77,117,108,116,105,77,97,114,107,101,114,0,103,101,116,77,117,108,116,105,77,97,114,107,101,114,78,117,109,0,103,101,116,77,117,108,116,105,77,97,114,107,101,114,67,111,117,110,116,0,95,108,111,97,100,67,97,109,101,114,97,0,115,101,116,77,97,114,107,101,114,73,110,102,111,68,105,114,0,115,101,116,77,97,114,107,101,114,73,110,102,111,86,101,114,116,101,120,0,103,101,116,84,114,97,110,115,77,97,116,83,113,117,97,114,101,0,103,101,116,84,114,97,110,115,77,97,116,83,113,117,97,114,101,67,111,110,116,0,103,101,116,84,114,97,110,115,77,97,116,77,117,108,116,105,83,113,117,97,114,101,0,103,101,116,84,114,97,110,115,77,97,116,77,117,108,116,105,83,113,117,97,114,101,82,111,98,117,115,116,0,100,101,116,101,99,116,77,97,114,107,101,114,0,103,101,116,77,97,114,107,101,114,78,117,109,0,103,101,116,77,117,108,116,105,69,97,99,104,77,97,114,107,101,114,0,103,101,116,77,97,114,107,101,114,0,115,101,116,68,101,98,117,103,77,111,100,101,0,103,101,116,68,101,98,117,103,77,111,100,101,0,103,101,116,80,114,111,99,101,115,115,105,110,103,73,109,97,103,101,0,115,101,116,76,111,103,76,101,118,101,108,0,103,101,116,76,111,103,76,101,118,101,108,0,115,101,116,80,114,111,106,101,99,116,105,111,110,78,101,97,114,80,108,97,110,101,0,103,101,116,80,114,111,106,101,99,116,105,111,110,78,101,97,114,80,108,97,110,101,0,115,101,116,80,114,111,106,101,99,116,105,111,110,70,97,114,80,108,97,110,101,0,103,101,116,80,114,111,106,101,99,116,105,111,110,70,97,114,80,108,97,110,101,0,115,101,116,84,104,114,101,115,104,111,108,100,77,111,100,101,0,103,101,116,84,104,114,101,115,104,111,108,100,77,111,100,101,0,115,101,116,84,104,114,101,115,104,111,108,100,0,103,101,116,84,104,114,101,115,104,111,108,100,0,115,101,116,80,97,116,116,101,114,110,68,101,116,101,99,116,105,111,110,77,111,100,101,0,103,101,116,80,97,116,116,101,114,110,68,101,116,101,99,116,105,111,110,77,111,100,101,0,115,101,116,80,97,116,116,82,97,116,105,111,0,103,101,116,80,97,116,116,82,97,116,105,111,0,115,101,116,77,97,116,114,105,120,67,111,100,101,84,121,112,101,0,103,101,116,77,97,116,114,105,120,67,111,100,101,84,121,112,101,0,115,101,116,76,97,98,101,108,105,110,103,77,111,100,101,0,103,101,116,76,97,98,101,108,105,110,103,77,111,100,101,0,115,101,116,73,109,97,103,101,80,114,111,99,77,111,100,101,0,103,101,116,73,109,97,103,101,80,114,111,99,77,111,100,101,0,69,82,82,79,82,95,65,82,67,79,78,84,82,79,76,76,69,82,95,78,79,84,95,70,79,85,78,68,0,69,82,82,79,82,95,77,85,76,84,73,77,65,82,75,69,82,95,78,79,84,95,70,79,85,78,68,0,69,82,82,79,82,95,77,65,82,75,69,82,95,73,78,68,69,88,95,79,85,84,95,79,70,95,66,79,85,78,68,83,0,65,82,95,68,69,66,85,71,95,68,73,83,65,66,76,69,0,65,82,95,68,69,66,85,71,95,69,78,65,66,76,69,0,65,82,95,68,69,70,65,85,76,84,95,68,69,66,85,71,95,77,79,68,69,0,65,82,95,76,65,66,69,76,73,78,71,95,87,72,73,84,69,95,82,69,71,73,79,78,0,65,82,95,76,65,66,69,76,73,78,71,95,66,76,65,67,75,95,82,69,71,73,79,78,0,65,82,95,68,69,70,65,85,76,84,95,76,65,66,69,76,73,78,71,95,77,79,68,69,0,65,82,95,68,69,70,65,85,76,84,95,76,65,66,69,76,73,78,71,95,84,72,82,69,83,72,0,65,82,95,73,77,65,71,69,95,80,82,79,67,95,70,82,65,77,69,95,73,77,65,71,69,0,65,82,95,73,77,65,71,69,95,80,82,79,67,95,70,73,69,76,68,95,73,77,65,71,69,0,65,82,95,68,69,70,65,85,76,84,95,73,77,65,71,69,95,80,82,79,67,95,77,79,68,69,0,65,82,95,84,69,77,80,76,65,84,69,95,77,65,84,67,72,73,78,71,95,67,79,76,79,82,0,65,82,95,84,69,77,80,76,65,84,69,95,77,65,84,67,72,73,78,71,95,77,79,78,79,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,68,69,84,69,67,84,73,79,78,0,65,82,95,84,69,77,80,76,65,84,69,95,77,65,84,67,72,73,78,71,95,67,79,76,79,82,95,65,78,68,95,77,65,84,82,73,88,0,65,82,95,84,69,77,80,76,65,84,69,95,77,65,84,67,72,73,78,71,95,77,79,78,79,95,65,78,68,95,77,65,84,82,73,88,0,65,82,95,68,69,70,65,85,76,84,95,80,65,84,84,69,82,78,95,68,69,84,69,67,84,73,79,78,95,77,79,68,69,0,65,82,95,85,83,69,95,84,82,65,67,75,73,78,71,95,72,73,83,84,79,82,89,0,65,82,95,78,79,85,83,69,95,84,82,65,67,75,73,78,71,95,72,73,83,84,79,82,89,0,65,82,95,85,83,69,95,84,82,65,67,75,73,78,71,95,72,73,83,84,79,82,89,95,86,50,0,65,82,95,68,69,70,65,85,76,84,95,77,65,82,75,69,82,95,69,88,84,82,65,67,84,73,79,78,95,77,79,68,69,0,65,82,95,77,65,88,95,76,79,79,80,95,67,79,85,78,84,0,65,82,95,76,79,79,80,95,66,82,69,65,75,95,84,72,82,69,83,72,0,65,82,95,76,79,71,95,76,69,86,69,76,95,68,69,66,85,71,0,65,82,95,76,79,71,95,76,69,86,69,76,95,73,78,70,79,0,65,82,95,76,79,71,95,76,69,86,69,76,95,87,65,82,78,0,65,82,95,76,79,71,95,76,69,86,69,76,95,69,82,82,79,82,0,65,82,95,76,79,71,95,76,69,86,69,76,95,82,69,76,95,73,78,70,79,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,51,120,51,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,51,120,51,95,72,65,77,77,73,78,71,54,51,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,51,120,51,95,80,65,82,73,84,89,54,53,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,52,120,52,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,52,120,52,95,66,67,72,95,49,51,95,57,95,51,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,52,120,52,95,66,67,72,95,49,51,95,53,95,53,0,65,82,95,76,65,66,69,76,73,78,71,95,84,72,82,69,83,72,95,77,79,68,69,95,77,65,78,85,65,76,0,65,82,95,76,65,66,69,76,73,78,71,95,84,72,82,69,83,72,95,77,79,68,69,95,65,85,84,79,95,77,69,68,73,65,78,0,65,82,95,76,65,66], \"i8\", ALLOC_NONE, Runtime.GLOBAL_BASE);\n/* memory initializer */ allocate([69,76,73,78,71,95,84,72,82,69,83,72,95,77,79,68,69,95,65,85,84,79,95,79,84,83,85,0,65,82,95,76,65,66,69,76,73,78,71,95,84,72,82,69,83,72,95,77,79,68,69,95,65,85,84,79,95,65,68,65,80,84,73,86,69,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,78,79,78,69,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,80,65,84,84,69,82,78,95,69,88,84,82,65,67,84,73,79,78,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,77,65,84,67,72,95,71,69,78,69,82,73,67,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,77,65,84,67,72,95,67,79,78,84,82,65,83,84,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,77,65,84,67,72,95,66,65,82,67,79,68,69,95,78,79,84,95,70,79,85,78,68,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,77,65,84,67,72,95,66,65,82,67,79,68,69,95,69,68,67,95,70,65,73,76,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,77,65,84,67,72,95,67,79,78,70,73,68,69,78,67,69,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,80,79,83,69,95,69,82,82,79,82,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,80,79,83,69,95,69,82,82,79,82,95,77,85,76,84,73,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,72,69,85,82,73,83,84,73,67,95,84,82,79,85,66,76,69,83,79,77,69,95,77,65,84,82,73,88,95,67,79,68,69,83,0,118,105,105,102,0,118,105,105,105,0,100,105,105,0,118,105,105,100,0,105,105,0,118,105,105,0,105,105,105,0,78,83,116,51,95,95,49,49,50,98,97,115,105,99,95,115,116,114,105,110,103,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,99,69,69,69,69,0,78,83,116,51,95,95,49,50,49,95,95,98,97,115,105,99,95,115,116,114,105,110,103,95,99,111,109,109,111,110,73,76,98,49,69,69,69,0,105,105,105,105,0,105,105,105,105,105,0,115,116,100,58,58,98,97,115,105,99,95,115,116,114,105,110,103,60,117,110,115,105,103,110,101,100,32,99,104,97,114,62,0,115,116,100,58,58,119,115,116,114,105,110,103,0,101,109,115,99,114,105,112,116,101,110,58,58,118,97,108,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,99,104,97,114,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,115,105,103,110,101,100,32,99,104,97,114,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,99,104,97,114,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,115,104,111,114,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,115,104,111,114,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,105,110,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,108,111,110,103,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,108,111,110,103,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,56,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,105,110,116,56,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,49,54,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,105,110,116,49,54,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,51,50,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,105,110,116,51,50,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,102,108,111,97,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,100,111,117,98,108,101,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,108,111,110,103,32,100,111,117,98,108,101,62,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,101,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,100,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,102,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,109,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,108,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,106,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,105,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,116,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,115,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,104,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,97,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,99,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,51,118,97,108,69,0,78,83,116,51,95,95,49,49,50,98,97,115,105,99,95,115,116,114,105,110,103,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,119,69,69,69,69,0,78,83,116,51,95,95,49,49,50,98,97,115,105,99,95,115,116,114,105,110,103,73,104,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,104,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,104,69,69,69,69,0,83,116,57,98,97,100,95,97,108,108,111,99,0,83,116,57,101,120,99,101,112,116,105,111,110,0,83,116,57,116,121,112,101,95,105,110,102,111,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,54,95,95,115,104,105,109,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,51,95,95,102,117,110,100,97,109,101,110,116,97,108,95,116,121,112,101,95,105,110,102,111,69,0,118,0,98,0,99,0,104,0,97,0,115,0,116,0,105,0,106,0,109,0,102,0,100,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,48,95,95,115,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,49,95,95,118,109,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,33,34,118,101,99,116,111,114,32,108,101,110,103,116,104,95,101,114,114,111,114,34,0,47,85,115,101,114,115,47,106,101,114,111,109,101,47,119,101,98,119,111,114,107,47,101,109,115,100,107,47,101,109,115,99,114,105,112,116,101,110,47,49,46,51,53,46,48,47,115,121,115,116,101,109,47,105,110,99,108,117,100,101,47,108,105,98,99,120,120,47,118,101,99,116,111,114,0,95,95,116,104,114,111,119,95,108,101,110,103,116,104,95,101,114,114,111,114,0,115,116,100,58,58,98,97,100,95,97,108,108,111,99,0,33,34,98,97,115,105,99,95,115,116,114,105,110,103,32,108,101,110,103,116,104,95,101,114,114,111,114,34,0,47,85,115,101,114,115,47,106,101,114,111,109,101,47,119,101,98,119,111,114,107,47,101,109,115,100,107,47,101,109,115,99,114,105,112,116,101,110,47,49,46,51,53,46,48,47,115,121,115,116,101,109,47,105,110,99,108,117,100,101,47,108,105,98,99,120,120,47,115,116,114,105,110,103,0,32,40,0,41,0,95,98,108,111,99,107,95,105,110,118,111,107,101,0,105,110,118,111,99,97,116,105,111,110,32,102,117,110,99,116,105,111,110,32,102,111,114,32,98,108,111,99,107,32,105,110,32,0,32,99,111,110,115,116,0,32,118,111,108,97,116,105,108,101,0,32,114,101,115,116,114,105,99,116,0,32,91,0,32,91,93,0,93,0,32,99,111,109,112,108,101,120,0,40,0,44,32,0,32,38,0,32,38,38,0,32,0,32,105,109,97,103,105,110,97,114,121,0,58,58,42,0,38,38,0,111,98,106,99,95,111,98,106,101,99,116,60,0,42,0,105,100,0,38,0,111,98,106,99,112,114,111,116,111,0,60,0,62,0,32,118,101,99,116,111,114,91,0,112,105,120,101,108,32,118,101,99,116,111,114,91,0,100,101,99,108,116,121,112,101,40,0,115,116,100,58,58,97,108,108,111,99,97,116,111,114,0,115,116,100,58,58,98,97,115,105,99,95,115,116,114,105,110,103,0,115,116,100,58,58,115,116,114,105,110,103,0,115,116,100,58,58,105,115,116,114,101,97,109,0,115,116,100,58,58,111,115,116,114,101,97,109,0,115,116,100,58,58,105,111,115,116,114,101,97,109,0,115,116,100,0,58,58,0,58,58,115,116,114,105,110,103,32,108,105,116,101,114,97,108,0,115,116,100,58,58,0,126,0,39,117,110,110,97,109,101,100,0,39,108,97,109,98,100,97,39,40,0,111,112,101,114,97,116,111,114,38,38,0,111,112,101,114,97,116,111,114,38,0,111,112,101,114,97,116,111,114,38,61,0,111,112,101,114,97,116,111,114,61,0,111,112,101,114,97,116,111,114,40,41,0,111,112,101,114,97,116,111,114,44,0,111,112,101,114,97,116,111,114,126,0,111,112,101,114,97,116,111,114,32,0,111,112,101,114,97,116,111,114,32,100,101,108,101,116,101,91,93,0,111,112,101,114,97,116,111,114,42,0,111,112,101,114,97,116,111,114,32,100,101,108,101,116,101,0,111,112,101,114,97,116,111,114,47,0,111,112,101,114,97,116,111,114,47,61,0,111,112,101,114,97,116,111,114,94,0,111,112,101,114,97,116,111,114,94,61,0,111,112,101,114,97,116,111,114,61,61,0,111,112,101,114,97,116,111,114,62,61,0,111,112,101,114,97,116,111,114,62,0,111,112,101,114,97,116,111,114,91,93,0,111,112,101,114,97,116,111,114,60,61,0,111,112,101,114,97,116,111,114,34,34,32,0,111,112,101,114,97,116,111,114,60,60,0,111,112,101,114,97,116,111,114,60,60,61,0,111,112,101,114,97,116,111,114,60,0,111,112,101,114,97,116,111,114,45,0,111,112,101,114,97,116,111,114,45,61,0,111,112,101,114,97,116,111,114,42,61,0,111,112,101,114,97,116,111,114,45,45,0,111,112,101,114,97,116,111,114,32,110,101,119,91,93,0,111,112,101,114,97,116,111,114,33,61,0,111,112,101,114,97,116,111,114,33,0,111,112,101,114,97,116,111,114,32,110,101,119,0,111,112,101,114,97,116,111,114,124,124,0,111,112,101,114,97,116,111,114,124,0,111,112,101,114,97,116,111,114,124,61,0,111,112,101,114,97,116,111,114,45,62,42,0,111,112,101,114,97,116,111,114,43,0,111,112,101,114,97,116,111,114,43,61,0,111,112,101,114,97,116,111,114,43,43,0,111,112,101,114,97,116,111,114,45,62,0,111,112,101,114,97,116,111,114,63,0,111,112,101,114,97,116,111,114,37,0,111,112,101,114,97,116,111,114,37,61,0,111,112,101,114,97,116,111,114,62,62,0,111,112,101,114,97,116,111,114,62,62,61,0,115,116,100,58,58,98,97,115,105,99,95,115,116,114,105,110,103,60,99,104,97,114,44,32,115,116,100,58,58,99,104,97,114,95,116,114,97,105,116,115,60,99,104,97,114,62,44,32,115,116,100,58,58,97,108,108,111,99,97,116,111,114,60,99,104,97,114,62,32,62,0,98,97,115,105,99,95,115,116,114,105,110,103,0,115,116,100,58,58,98,97,115,105,99,95,105,115,116,114,101,97,109,60,99,104,97,114,44,32,115,116,100,58,58,99,104,97,114,95,116,114,97,105,116,115,60,99,104,97,114,62,32,62,0,98,97,115,105,99,95,105,115,116,114,101,97,109,0,115,116,100,58,58,98,97,115,105,99,95,111,115,116,114,101,97,109,60,99,104,97,114,44,32,115,116,100,58,58,99,104,97,114,95,116,114,97,105,116,115,60,99,104,97,114,62,32,62,0,98,97,115,105,99,95,111,115,116,114,101,97,109,0,115,116,100,58,58,98,97,115,105,99,95,105,111,115,116,114,101,97,109,60,99,104,97,114,44,32,115,116,100,58,58,99,104,97,114,95,116,114,97,105,116,115,60,99,104,97,114,62,32,62,0,98,97,115,105,99,95,105,111,115,116,114,101,97,109,0,95,71,76,79,66,65,76,95,95,78,0,40,97,110,111,110,121,109,111,117,115,32,110,97,109,101,115,112,97,99,101,41,0,32,62,0,119,99,104,97,114,95,116,0,102,97,108,115,101,0,116,114,117,101,0,99,104,97,114,0,115,105,103,110,101,100,32,99,104,97,114,0,117,110,115,105,103,110,101,100,32,99,104,97,114,0,115,104,111,114,116,0,117,110,115,105,103,110,101,100,32,115,104,111,114,116,0,0,117,0,108,0,117,108,0,108,108,0,117,108,108,0,95,95,105,110,116,49,50,56,0,117,110,115,105,103,110,101,100,32,95,95,105,110,116,49,50,56,0,37,97,102,0,37,97,0,37,76,97,76,0,38,61,0,61,0,97,108,105,103,110,111,102,32,40,0,99,111,110,115,116,95,99,97,115,116,60,0,62,40,0,44,0,41,40,0,100,101,108,101,116,101,91,93,32,0,100,121,110,97,109,105,99,95,99,97,115,116,60,0,100,101,108,101,116,101,32,0,46,42,0,47,0,47,61,0,94,0,94,61,0,61,61,0,62,61,0,41,91,0,60,61,0,60,60,0,60,60,61,0,45,0,45,61,0,42,61,0,45,45,0,41,45,45,0,91,93,32,0,41,32,0,33,61,0,33,0,110,111,101,120,99,101,112,116,32,40,0,124,124,0,124,0,124,61,0,45,62,42,0,43,0,43,61,0,43,43,0,41,43,43,0,45,62,0,41,32,63,32,40,0,41,32,58,32,40,0,114,101,105,110,116,101,114,112,114,101,116,95,99,97,115,116,60,0,37,0,37,61,0,62,62,0,62,62,61,0,115,116,97,116,105,99,95,99,97,115,116,60,0,115,105,122,101,111,102,32,40,0,115,105,122,101,111,102,46,46,46,40,0,116,121,112,101,105,100,40,0,116,104,114,111,119,0,116,104,114,111,119,32,0,102,112,0,33,34,98,97,115,105,99,95,115,116,114,105,110,103,32,111,117,116,95,111,102,95,114,97,110,103,101,34,0,95,95,116,104,114,111,119,95,111,117,116,95,111,102,95,114,97,110,103,101,0,118,111,105,100,0,98,111,111,108,0,105,110,116,0,117,110,115,105,103,110,101,100,32,105,110,116,0,108,111,110,103,0,117,110,115,105,103,110,101,100,32,108,111,110,103,0,108,111,110,103,32,108,111,110,103,0,117,110,115,105,103,110,101,100,32,108,111,110,103,32,108,111,110,103,0,102,108,111,97,116,0,100,111,117,98,108,101,0,108,111,110,103,32,100,111,117,98,108,101,0,95,95,102,108,111,97,116,49,50,56,0,46,46,46,0,100,101,99,105,109,97,108,54,52,0,100,101,99,105,109,97,108,49,50,56,0,100,101,99,105,109,97,108,51,50,0,100,101,99,105,109,97,108,49,54,0,99,104,97,114,51,50,95,116,0,99,104,97,114,49,54,95,116,0,97,117,116,111,0,115,116,100,58,58,110,117,108,108,112,116,114,95,116,0,118,116,97,98,108,101,32,102,111,114,32,0,86,84,84,32,102,111,114,32,0,116,121,112,101,105,110,102,111,32,102,111,114,32,0,116,121,112,101,105,110,102,111,32,110,97,109,101,32,102,111,114,32,0,99,111,118,97,114,105,97,110,116,32,114,101,116,117,114,110,32,116,104,117,110,107,32,116,111,32,0,99,111,110,115,116,114,117,99,116,105,111,110,32,118,116,97,98,108,101,32,102,111,114,32,0,45,105,110,45,0,118,105,114,116,117,97,108,32,116,104,117,110,107,32,116,111,32,0,110,111,110,45,118,105,114,116,117,97,108,32,116,104,117,110,107,32,116,111,32,0,103,117,97,114,100,32,118,97,114,105,97,98,108,101,32,102,111,114,32,0,114,101,102,101,114,101,110,99,101,32,116,101,109,112,111,114,97,114,121,32,102,111,114,32,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0,105,110,102,105,110,105,116,121,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,255,255,255,255,255,255,255,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,255,255,255,255,255,255,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,1,2,4,7,3,6,5,0,114,119,97], \"i8\", ALLOC_NONE, Runtime.GLOBAL_BASE+10240);\n/* memory initializer */ allocate([17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,46,0], \"i8\", ALLOC_NONE, Runtime.GLOBAL_BASE+17769);\n\n\n\n\n\n/* no memory initializer */\nvar tempDoublePtr = Runtime.alignMemory(allocate(12, \"i8\", ALLOC_STATIC), 8);\n\nassert(tempDoublePtr % 8 == 0);\n\nfunction copyTempFloat(ptr) { // functions, because inlining this code increases code size too much\n\n  HEAP8[tempDoublePtr] = HEAP8[ptr];\n\n  HEAP8[tempDoublePtr+1] = HEAP8[ptr+1];\n\n  HEAP8[tempDoublePtr+2] = HEAP8[ptr+2];\n\n  HEAP8[tempDoublePtr+3] = HEAP8[ptr+3];\n\n}\n\nfunction copyTempDouble(ptr) {\n\n  HEAP8[tempDoublePtr] = HEAP8[ptr];\n\n  HEAP8[tempDoublePtr+1] = HEAP8[ptr+1];\n\n  HEAP8[tempDoublePtr+2] = HEAP8[ptr+2];\n\n  HEAP8[tempDoublePtr+3] = HEAP8[ptr+3];\n\n  HEAP8[tempDoublePtr+4] = HEAP8[ptr+4];\n\n  HEAP8[tempDoublePtr+5] = HEAP8[ptr+5];\n\n  HEAP8[tempDoublePtr+6] = HEAP8[ptr+6];\n\n  HEAP8[tempDoublePtr+7] = HEAP8[ptr+7];\n\n}\n\n// {{PRE_LIBRARY}}\n\n\n  \n  function _atexit(func, arg) {\n      __ATEXIT__.unshift({ func: func, arg: arg });\n    }function ___cxa_atexit() {\n  return _atexit.apply(null, arguments)\n  }\n\n   \n  Module[\"_i64Subtract\"] = _i64Subtract;\n\n  function ___assert_fail(condition, filename, line, func) {\n      ABORT = true;\n      throw 'Assertion failed: ' + Pointer_stringify(condition) + ', at: ' + [filename ? Pointer_stringify(filename) : 'unknown filename', line, func ? Pointer_stringify(func) : 'unknown function'] + ' at ' + stackTrace();\n    }\n\n  \n  \n  \n  function embind_init_charCodes() {\n      var codes = new Array(256);\n      for (var i = 0; i < 256; ++i) {\n          codes[i] = String.fromCharCode(i);\n      }\n      embind_charCodes = codes;\n    }var embind_charCodes=undefined;function readLatin1String(ptr) {\n      var ret = \"\";\n      var c = ptr;\n      while (HEAPU8[c]) {\n          ret += embind_charCodes[HEAPU8[c++]];\n      }\n      return ret;\n    }\n  \n  \n  var awaitingDependencies={};\n  \n  var registeredTypes={};\n  \n  var typeDependencies={};\n  \n  \n  \n  \n  \n  \n  var char_0=48;\n  \n  var char_9=57;function makeLegalFunctionName(name) {\n      if (undefined === name) {\n          return '_unknown';\n      }\n      name = name.replace(/[^a-zA-Z0-9_]/g, '$');\n      var f = name.charCodeAt(0);\n      if (f >= char_0 && f <= char_9) {\n          return '_' + name;\n      } else {\n          return name;\n      }\n    }function createNamedFunction(name, body) {\n      name = makeLegalFunctionName(name);\n      /*jshint evil:true*/\n      return new Function(\n          \"body\",\n          \"return function \" + name + \"() {\\n\" +\n          \"    \\\"use strict\\\";\" +\n          \"    return body.apply(this, arguments);\\n\" +\n          \"};\\n\"\n      )(body);\n    }function extendError(baseErrorType, errorName) {\n      var errorClass = createNamedFunction(errorName, function(message) {\n          this.name = errorName;\n          this.message = message;\n  \n          var stack = (new Error(message)).stack;\n          if (stack !== undefined) {\n              this.stack = this.toString() + '\\n' +\n                  stack.replace(/^Error(:[^\\n]*)?\\n/, '');\n          }\n      });\n      errorClass.prototype = Object.create(baseErrorType.prototype);\n      errorClass.prototype.constructor = errorClass;\n      errorClass.prototype.toString = function() {\n          if (this.message === undefined) {\n              return this.name;\n          } else {\n              return this.name + ': ' + this.message;\n          }\n      };\n  \n      return errorClass;\n    }var BindingError=undefined;function throwBindingError(message) {\n      throw new BindingError(message);\n    }\n  \n  \n  \n  var InternalError=undefined;function throwInternalError(message) {\n      throw new InternalError(message);\n    }function whenDependentTypesAreResolved(myTypes, dependentTypes, getTypeConverters) {\n      myTypes.forEach(function(type) {\n          typeDependencies[type] = dependentTypes;\n      });\n  \n      function onComplete(typeConverters) {\n          var myTypeConverters = getTypeConverters(typeConverters);\n          if (myTypeConverters.length !== myTypes.length) {\n              throwInternalError('Mismatched type converter count');\n          }\n          for (var i = 0; i < myTypes.length; ++i) {\n              registerType(myTypes[i], myTypeConverters[i]);\n          }\n      }\n  \n      var typeConverters = new Array(dependentTypes.length);\n      var unregisteredTypes = [];\n      var registered = 0;\n      dependentTypes.forEach(function(dt, i) {\n          if (registeredTypes.hasOwnProperty(dt)) {\n              typeConverters[i] = registeredTypes[dt];\n          } else {\n              unregisteredTypes.push(dt);\n              if (!awaitingDependencies.hasOwnProperty(dt)) {\n                  awaitingDependencies[dt] = [];\n              }\n              awaitingDependencies[dt].push(function() {\n                  typeConverters[i] = registeredTypes[dt];\n                  ++registered;\n                  if (registered === unregisteredTypes.length) {\n                      onComplete(typeConverters);\n                  }\n              });\n          }\n      });\n      if (0 === unregisteredTypes.length) {\n          onComplete(typeConverters);\n      }\n    }function registerType(rawType, registeredInstance, options) {\n      options = options || {};\n  \n      if (!('argPackAdvance' in registeredInstance)) {\n          throw new TypeError('registerType registeredInstance requires argPackAdvance');\n      }\n  \n      var name = registeredInstance.name;\n      if (!rawType) {\n          throwBindingError('type \"' + name + '\" must have a positive integer typeid pointer');\n      }\n      if (registeredTypes.hasOwnProperty(rawType)) {\n          if (options.ignoreDuplicateRegistrations) {\n              return;\n          } else {\n              throwBindingError(\"Cannot register type '\" + name + \"' twice\");\n          }\n      }\n  \n      registeredTypes[rawType] = registeredInstance;\n      delete typeDependencies[rawType];\n  \n      if (awaitingDependencies.hasOwnProperty(rawType)) {\n          var callbacks = awaitingDependencies[rawType];\n          delete awaitingDependencies[rawType];\n          callbacks.forEach(function(cb) {\n              cb();\n          });\n      }\n    }function __embind_register_void(rawType, name) {\n      name = readLatin1String(name);\n      registerType(rawType, {\n          isVoid: true, // void return values can be optimized out sometimes\n          name: name,\n          'argPackAdvance': 0,\n          'fromWireType': function() {\n              return undefined;\n          },\n          'toWireType': function(destructors, o) {\n              // TODO: assert if anything else is given?\n              return undefined;\n          },\n      });\n    }\n\n  \n  function __ZSt18uncaught_exceptionv() { // std::uncaught_exception()\n      return !!__ZSt18uncaught_exceptionv.uncaught_exception;\n    }\n  \n  \n  \n  var EXCEPTIONS={last:0,caught:[],infos:{},deAdjust:function (adjusted) {\n        if (!adjusted || EXCEPTIONS.infos[adjusted]) return adjusted;\n        for (var ptr in EXCEPTIONS.infos) {\n          var info = EXCEPTIONS.infos[ptr];\n          if (info.adjusted === adjusted) {\n            return ptr;\n          }\n        }\n        return adjusted;\n      },addRef:function (ptr) {\n        if (!ptr) return;\n        var info = EXCEPTIONS.infos[ptr];\n        info.refcount++;\n      },decRef:function (ptr) {\n        if (!ptr) return;\n        var info = EXCEPTIONS.infos[ptr];\n        assert(info.refcount > 0);\n        info.refcount--;\n        if (info.refcount === 0) {\n          if (info.destructor) {\n            Runtime.dynCall('vi', info.destructor, [ptr]);\n          }\n          delete EXCEPTIONS.infos[ptr];\n          ___cxa_free_exception(ptr);\n        }\n      },clearRef:function (ptr) {\n        if (!ptr) return;\n        var info = EXCEPTIONS.infos[ptr];\n        info.refcount = 0;\n      }};\n  function ___resumeException(ptr) {\n      if (!EXCEPTIONS.last) { EXCEPTIONS.last = ptr; }\n      EXCEPTIONS.clearRef(EXCEPTIONS.deAdjust(ptr)); // exception refcount should be cleared, but don't free it\n      throw ptr + \" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.\";\n    }function ___cxa_find_matching_catch() {\n      var thrown = EXCEPTIONS.last;\n      if (!thrown) {\n        // just pass through the null ptr\n        return ((asm[\"setTempRet0\"](0),0)|0);\n      }\n      var info = EXCEPTIONS.infos[thrown];\n      var throwntype = info.type;\n      if (!throwntype) {\n        // just pass through the thrown ptr\n        return ((asm[\"setTempRet0\"](0),thrown)|0);\n      }\n      var typeArray = Array.prototype.slice.call(arguments);\n  \n      var pointer = Module['___cxa_is_pointer_type'](throwntype);\n      // can_catch receives a **, add indirection\n      if (!___cxa_find_matching_catch.buffer) ___cxa_find_matching_catch.buffer = _malloc(4);\n      HEAP32[((___cxa_find_matching_catch.buffer)>>2)]=thrown;\n      thrown = ___cxa_find_matching_catch.buffer;\n      // The different catch blocks are denoted by different types.\n      // Due to inheritance, those types may not precisely match the\n      // type of the thrown object. Find one which matches, and\n      // return the type of the catch block which should be called.\n      for (var i = 0; i < typeArray.length; i++) {\n        if (typeArray[i] && Module['___cxa_can_catch'](typeArray[i], throwntype, thrown)) {\n          thrown = HEAP32[((thrown)>>2)]; // undo indirection\n          info.adjusted = thrown;\n          return ((asm[\"setTempRet0\"](typeArray[i]),thrown)|0);\n        }\n      }\n      // Shouldn't happen unless we have bogus data in typeArray\n      // or encounter a type for which emscripten doesn't have suitable\n      // typeinfo defined. Best-efforts match just in case.\n      thrown = HEAP32[((thrown)>>2)]; // undo indirection\n      return ((asm[\"setTempRet0\"](throwntype),thrown)|0);\n    }function ___cxa_throw(ptr, type, destructor) {\n      EXCEPTIONS.infos[ptr] = {\n        ptr: ptr,\n        adjusted: ptr,\n        type: type,\n        destructor: destructor,\n        refcount: 0\n      };\n      EXCEPTIONS.last = ptr;\n      if (!(\"uncaught_exception\" in __ZSt18uncaught_exceptionv)) {\n        __ZSt18uncaught_exceptionv.uncaught_exception = 1;\n      } else {\n        __ZSt18uncaught_exceptionv.uncaught_exception++;\n      }\n      throw ptr + \" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.\";\n    }\n\n   \n  Module[\"_memset\"] = _memset;\n\n  var _BDtoILow=true;\n\n  \n  function getShiftFromSize(size) {\n      switch (size) {\n          case 1: return 0;\n          case 2: return 1;\n          case 4: return 2;\n          case 8: return 3;\n          default:\n              throw new TypeError('Unknown type size: ' + size);\n      }\n    }function __embind_register_bool(rawType, name, size, trueValue, falseValue) {\n      var shift = getShiftFromSize(size);\n  \n      name = readLatin1String(name);\n      registerType(rawType, {\n          name: name,\n          'fromWireType': function(wt) {\n              // ambiguous emscripten ABI: sometimes return values are\n              // true or false, and sometimes integers (0 or 1)\n              return !!wt;\n          },\n          'toWireType': function(destructors, o) {\n              return o ? trueValue : falseValue;\n          },\n          'argPackAdvance': 8,\n          'readValueFromPointer': function(pointer) {\n              // TODO: if heap is fixed (like in asm.js) this could be executed outside\n              var heap;\n              if (size === 1) {\n                  heap = HEAP8;\n              } else if (size === 2) {\n                  heap = HEAP16;\n              } else if (size === 4) {\n                  heap = HEAP32;\n              } else {\n                  throw new TypeError(\"Unknown boolean type size: \" + name);\n              }\n              return this['fromWireType'](heap[pointer >> shift]);\n          },\n          destructorFunction: null, // This type does not need a destructor\n      });\n    }\n\n   \n  Module[\"_bitshift64Shl\"] = _bitshift64Shl;\n\n  function _abort() {\n      Module['abort']();\n    }\n\n  \n  function _free() {\n  }\n  Module[\"_free\"] = _free;\n  \n  function _malloc(bytes) {\n      /* Over-allocate to make sure it is byte-aligned by 8.\n       * This will leak memory, but this is only the dummy\n       * implementation (replaced by dlmalloc normally) so\n       * not an issue.\n       */\n      var ptr = Runtime.dynamicAlloc(bytes + 8);\n      return (ptr+8) & 0xFFFFFFF8;\n    }\n  Module[\"_malloc\"] = _malloc;\n  \n  function simpleReadValueFromPointer(pointer) {\n      return this['fromWireType'](HEAPU32[pointer >> 2]);\n    }function __embind_register_std_string(rawType, name) {\n      name = readLatin1String(name);\n      registerType(rawType, {\n          name: name,\n          'fromWireType': function(value) {\n              var length = HEAPU32[value >> 2];\n              var a = new Array(length);\n              for (var i = 0; i < length; ++i) {\n                  a[i] = String.fromCharCode(HEAPU8[value + 4 + i]);\n              }\n              _free(value);\n              return a.join('');\n          },\n          'toWireType': function(destructors, value) {\n              if (value instanceof ArrayBuffer) {\n                  value = new Uint8Array(value);\n              }\n  \n              function getTAElement(ta, index) {\n                  return ta[index];\n              }\n              function getStringElement(string, index) {\n                  return string.charCodeAt(index);\n              }\n              var getElement;\n              if (value instanceof Uint8Array) {\n                  getElement = getTAElement;\n              } else if (value instanceof Int8Array) {\n                  getElement = getTAElement;\n              } else if (typeof value === 'string') {\n                  getElement = getStringElement;\n              } else {\n                  throwBindingError('Cannot pass non-string to std::string');\n              }\n  \n              // assumes 4-byte alignment\n              var length = value.length;\n              var ptr = _malloc(4 + length);\n              HEAPU32[ptr >> 2] = length;\n              for (var i = 0; i < length; ++i) {\n                  var charCode = getElement(value, i);\n                  if (charCode > 255) {\n                      _free(ptr);\n                      throwBindingError('String has UTF-16 code units that do not fit in 8 bits');\n                  }\n                  HEAPU8[ptr + 4 + i] = charCode;\n              }\n              if (destructors !== null) {\n                  destructors.push(_free, ptr);\n              }\n              return ptr;\n          },\n          'argPackAdvance': 8,\n          'readValueFromPointer': simpleReadValueFromPointer,\n          destructorFunction: function(ptr) { _free(ptr); },\n      });\n    }\n\n  function __embind_register_std_wstring(rawType, charSize, name) {\n      // nb. do not cache HEAPU16 and HEAPU32, they may be destroyed by enlargeMemory().\n      name = readLatin1String(name);\n      var getHeap, shift;\n      if (charSize === 2) {\n          getHeap = function() { return HEAPU16; };\n          shift = 1;\n      } else if (charSize === 4) {\n          getHeap = function() { return HEAPU32; };\n          shift = 2;\n      }\n      registerType(rawType, {\n          name: name,\n          'fromWireType': function(value) {\n              var HEAP = getHeap();\n              var length = HEAPU32[value >> 2];\n              var a = new Array(length);\n              var start = (value + 4) >> shift;\n              for (var i = 0; i < length; ++i) {\n                  a[i] = String.fromCharCode(HEAP[start + i]);\n              }\n              _free(value);\n              return a.join('');\n          },\n          'toWireType': function(destructors, value) {\n              // assumes 4-byte alignment\n              var HEAP = getHeap();\n              var length = value.length;\n              var ptr = _malloc(4 + length * charSize);\n              HEAPU32[ptr >> 2] = length;\n              var start = (ptr + 4) >> shift;\n              for (var i = 0; i < length; ++i) {\n                  HEAP[start + i] = value.charCodeAt(i);\n              }\n              if (destructors !== null) {\n                  destructors.push(_free, ptr);\n              }\n              return ptr;\n          },\n          'argPackAdvance': 8,\n          'readValueFromPointer': simpleReadValueFromPointer,\n          destructorFunction: function(ptr) { _free(ptr); },\n      });\n    }\n\n  function ___lock() {}\n\n  function ___unlock() {}\n\n  var _emscripten_asm_const_int=true;\n\n   \n  Module[\"_i64Add\"] = _i64Add;\n\n  var _fabs=Math_abs;\n\n  var _sqrt=Math_sqrt;\n\n  \n  function _embind_repr(v) {\n      if (v === null) {\n          return 'null';\n      }\n      var t = typeof v;\n      if (t === 'object' || t === 'array' || t === 'function') {\n          return v.toString();\n      } else {\n          return '' + v;\n      }\n    }\n  \n  function integerReadValueFromPointer(name, shift, signed) {\n      // integers are quite common, so generate very specialized functions\n      switch (shift) {\n          case 0: return signed ?\n              function readS8FromPointer(pointer) { return HEAP8[pointer]; } :\n              function readU8FromPointer(pointer) { return HEAPU8[pointer]; };\n          case 1: return signed ?\n              function readS16FromPointer(pointer) { return HEAP16[pointer >> 1]; } :\n              function readU16FromPointer(pointer) { return HEAPU16[pointer >> 1]; };\n          case 2: return signed ?\n              function readS32FromPointer(pointer) { return HEAP32[pointer >> 2]; } :\n              function readU32FromPointer(pointer) { return HEAPU32[pointer >> 2]; };\n          default:\n              throw new TypeError(\"Unknown integer type: \" + name);\n      }\n    }function __embind_register_integer(primitiveType, name, size, minRange, maxRange) {\n      name = readLatin1String(name);\n      if (maxRange === -1) { // LLVM doesn't have signed and unsigned 32-bit types, so u32 literals come out as 'i32 -1'. Always treat those as max u32.\n          maxRange = 4294967295;\n      }\n  \n      var shift = getShiftFromSize(size);\n      \n      var fromWireType = function(value) {\n          return value;\n      };\n      \n      if (minRange === 0) {\n          var bitshift = 32 - 8*size;\n          fromWireType = function(value) {\n              return (value << bitshift) >>> bitshift;\n          };\n      }\n  \n      registerType(primitiveType, {\n          name: name,\n          'fromWireType': fromWireType,\n          'toWireType': function(destructors, value) {\n              // todo: Here we have an opportunity for -O3 level \"unsafe\" optimizations: we could\n              // avoid the following two if()s and assume value is of proper type.\n              if (typeof value !== \"number\" && typeof value !== \"boolean\") {\n                  throw new TypeError('Cannot convert \"' + _embind_repr(value) + '\" to ' + this.name);\n              }\n              if (value < minRange || value > maxRange) {\n                  throw new TypeError('Passing a number \"' + _embind_repr(value) + '\" from JS side to C/C++ side to an argument of type \"' + name + '\", which is outside the valid range [' + minRange + ', ' + maxRange + ']!');\n              }\n              return value | 0;\n          },\n          'argPackAdvance': 8,\n          'readValueFromPointer': integerReadValueFromPointer(name, shift, minRange !== 0),\n          destructorFunction: null, // This type does not need a destructor\n      });\n    }\n\n  \n  \n  var emval_free_list=[];\n  \n  var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle) {\n      if (handle > 4 && 0 === --emval_handle_array[handle].refcount) {\n          emval_handle_array[handle] = undefined;\n          emval_free_list.push(handle);\n      }\n    }\n  \n  \n  \n  function count_emval_handles() {\n      var count = 0;\n      for (var i = 5; i < emval_handle_array.length; ++i) {\n          if (emval_handle_array[i] !== undefined) {\n              ++count;\n          }\n      }\n      return count;\n    }\n  \n  function get_first_emval() {\n      for (var i = 5; i < emval_handle_array.length; ++i) {\n          if (emval_handle_array[i] !== undefined) {\n              return emval_handle_array[i];\n          }\n      }\n      return null;\n    }function init_emval() {\n      Module['count_emval_handles'] = count_emval_handles;\n      Module['get_first_emval'] = get_first_emval;\n    }function __emval_register(value) {\n  \n      switch(value){\n        case undefined :{ return 1; }\n        case null :{ return 2; }\n        case true :{ return 3; }\n        case false :{ return 4; }\n        default:{\n          var handle = emval_free_list.length ?\n              emval_free_list.pop() :\n              emval_handle_array.length;\n  \n          emval_handle_array[handle] = {refcount: 1, value: value};\n          return handle;\n          }\n        }\n    }function __embind_register_emval(rawType, name) {\n      name = readLatin1String(name);\n      registerType(rawType, {\n          name: name,\n          'fromWireType': function(handle) {\n              var rv = emval_handle_array[handle].value;\n              __emval_decref(handle);\n              return rv;\n          },\n          'toWireType': function(destructors, value) {\n              return __emval_register(value);\n          },\n          'argPackAdvance': 8,\n          'readValueFromPointer': simpleReadValueFromPointer,\n          destructorFunction: null, // This type does not need a destructor\n  \n          // TODO: do we need a deleteObject here?  write a test where\n          // emval is passed into JS via an interface\n      });\n    }\n\n  function ___cxa_allocate_exception(size) {\n      return _malloc(size);\n    }\n\n  var _sin=Math_sin;\n\n  \n  function ___setErrNo(value) {\n      if (Module['___errno_location']) HEAP32[((Module['___errno_location']())>>2)]=value;\n      else Module.printErr('failed to set errno from JS');\n      return value;\n    }\n  \n  var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};function _sysconf(name) {\n      // long sysconf(int name);\n      // http://pubs.opengroup.org/onlinepubs/009695399/functions/sysconf.html\n      switch(name) {\n        case 30: return PAGE_SIZE;\n        case 85: return totalMemory / PAGE_SIZE;\n        case 132:\n        case 133:\n        case 12:\n        case 137:\n        case 138:\n        case 15:\n        case 235:\n        case 16:\n        case 17:\n        case 18:\n        case 19:\n        case 20:\n        case 149:\n        case 13:\n        case 10:\n        case 236:\n        case 153:\n        case 9:\n        case 21:\n        case 22:\n        case 159:\n        case 154:\n        case 14:\n        case 77:\n        case 78:\n        case 139:\n        case 80:\n        case 81:\n        case 82:\n        case 68:\n        case 67:\n        case 164:\n        case 11:\n        case 29:\n        case 47:\n        case 48:\n        case 95:\n        case 52:\n        case 51:\n        case 46:\n          return 200809;\n        case 79:\n          return 0;\n        case 27:\n        case 246:\n        case 127:\n        case 128:\n        case 23:\n        case 24:\n        case 160:\n        case 161:\n        case 181:\n        case 182:\n        case 242:\n        case 183:\n        case 184:\n        case 243:\n        case 244:\n        case 245:\n        case 165:\n        case 178:\n        case 179:\n        case 49:\n        case 50:\n        case 168:\n        case 169:\n        case 175:\n        case 170:\n        case 171:\n        case 172:\n        case 97:\n        case 76:\n        case 32:\n        case 173:\n        case 35:\n          return -1;\n        case 176:\n        case 177:\n        case 7:\n        case 155:\n        case 8:\n        case 157:\n        case 125:\n        case 126:\n        case 92:\n        case 93:\n        case 129:\n        case 130:\n        case 131:\n        case 94:\n        case 91:\n          return 1;\n        case 74:\n        case 60:\n        case 69:\n        case 70:\n        case 4:\n          return 1024;\n        case 31:\n        case 42:\n        case 72:\n          return 32;\n        case 87:\n        case 26:\n        case 33:\n          return 2147483647;\n        case 34:\n        case 1:\n          return 47839;\n        case 38:\n        case 36:\n          return 99;\n        case 43:\n        case 37:\n          return 2048;\n        case 0: return 2097152;\n        case 3: return 65536;\n        case 28: return 32768;\n        case 44: return 32767;\n        case 75: return 16384;\n        case 39: return 1000;\n        case 89: return 700;\n        case 71: return 256;\n        case 40: return 255;\n        case 2: return 100;\n        case 180: return 64;\n        case 25: return 20;\n        case 5: return 16;\n        case 6: return 6;\n        case 73: return 4;\n        case 84: {\n          if (typeof navigator === 'object') return navigator['hardwareConcurrency'] || 1;\n          return 1;\n        }\n      }\n      ___setErrNo(ERRNO_CODES.EINVAL);\n      return -1;\n    }\n\n   \n  Module[\"_bitshift64Lshr\"] = _bitshift64Lshr;\n\n  \n  function __exit(status) {\n      // void _exit(int status);\n      // http://pubs.opengroup.org/onlinepubs/000095399/functions/exit.html\n      Module['exit'](status);\n    }function _exit(status) {\n      __exit(status);\n    }\n\n  var _llvm_ctlz_i32=true;\n\n  \n  function floatReadValueFromPointer(name, shift) {\n      switch (shift) {\n          case 2: return function(pointer) {\n              return this['fromWireType'](HEAPF32[pointer >> 2]);\n          };\n          case 3: return function(pointer) {\n              return this['fromWireType'](HEAPF64[pointer >> 3]);\n          };\n          default:\n              throw new TypeError(\"Unknown float type: \" + name);\n      }\n    }function __embind_register_float(rawType, name, size) {\n      var shift = getShiftFromSize(size);\n      name = readLatin1String(name);\n      registerType(rawType, {\n          name: name,\n          'fromWireType': function(value) {\n              return value;\n          },\n          'toWireType': function(destructors, value) {\n              // todo: Here we have an opportunity for -O3 level \"unsafe\" optimizations: we could\n              // avoid the following if() and assume value is of proper type.\n              if (typeof value !== \"number\" && typeof value !== \"boolean\") {\n                  throw new TypeError('Cannot convert \"' + _embind_repr(value) + '\" to ' + this.name);\n              }\n              return value;\n          },\n          'argPackAdvance': 8,\n          'readValueFromPointer': floatReadValueFromPointer(name, shift),\n          destructorFunction: null, // This type does not need a destructor\n      });\n    }\n\n  var _BDtoIHigh=true;\n\n  function _pthread_cleanup_push(routine, arg) {\n      __ATEXIT__.push(function() { Runtime.dynCall('vi', routine, [arg]) })\n      _pthread_cleanup_push.level = __ATEXIT__.length;\n    }\n\n  \n  \n  function new_(constructor, argumentList) {\n      if (!(constructor instanceof Function)) {\n          throw new TypeError('new_ called with constructor type ' + typeof(constructor) + \" which is not a function\");\n      }\n  \n      /*\n       * Previously, the following line was just:\n  \n       function dummy() {};\n  \n       * Unfortunately, Chrome was preserving 'dummy' as the object's name, even though at creation, the 'dummy' has the\n       * correct constructor name.  Thus, objects created with IMVU.new would show up in the debugger as 'dummy', which\n       * isn't very helpful.  Using IMVU.createNamedFunction addresses the issue.  Doublely-unfortunately, there's no way\n       * to write a test for this behavior.  -NRD 2013.02.22\n       */\n      var dummy = createNamedFunction(constructor.name || 'unknownFunctionName', function(){});\n      dummy.prototype = constructor.prototype;\n      var obj = new dummy;\n  \n      var r = constructor.apply(obj, argumentList);\n      return (r instanceof Object) ? r : obj;\n    }\n  \n  function runDestructors(destructors) {\n      while (destructors.length) {\n          var ptr = destructors.pop();\n          var del = destructors.pop();\n          del(ptr);\n      }\n    }function craftInvokerFunction(humanName, argTypes, classType, cppInvokerFunc, cppTargetFunc) {\n      // humanName: a human-readable string name for the function to be generated.\n      // argTypes: An array that contains the embind type objects for all types in the function signature.\n      //    argTypes[0] is the type object for the function return value.\n      //    argTypes[1] is the type object for function this object/class type, or null if not crafting an invoker for a class method.\n      //    argTypes[2...] are the actual function parameters.\n      // classType: The embind type object for the class to be bound, or null if this is not a method of a class.\n      // cppInvokerFunc: JS Function object to the C++-side function that interops into C++ code.\n      // cppTargetFunc: Function pointer (an integer to FUNCTION_TABLE) to the target C++ function the cppInvokerFunc will end up calling.\n      var argCount = argTypes.length;\n  \n      if (argCount < 2) {\n          throwBindingError(\"argTypes array size mismatch! Must at least get return value and 'this' types!\");\n      }\n  \n      var isClassMethodFunc = (argTypes[1] !== null && classType !== null);\n  \n      // Free functions with signature \"void function()\" do not need an invoker that marshalls between wire types.\n  // TODO: This omits argument count check - enable only at -O3 or similar.\n  //    if (ENABLE_UNSAFE_OPTS && argCount == 2 && argTypes[0].name == \"void\" && !isClassMethodFunc) {\n  //       return FUNCTION_TABLE[fn];\n  //    }\n  \n      var argsList = \"\";\n      var argsListWired = \"\";\n      for(var i = 0; i < argCount - 2; ++i) {\n          argsList += (i!==0?\", \":\"\")+\"arg\"+i;\n          argsListWired += (i!==0?\", \":\"\")+\"arg\"+i+\"Wired\";\n      }\n  \n      var invokerFnBody =\n          \"return function \"+makeLegalFunctionName(humanName)+\"(\"+argsList+\") {\\n\" +\n          \"if (arguments.length !== \"+(argCount - 2)+\") {\\n\" +\n              \"throwBindingError('function \"+humanName+\" called with ' + arguments.length + ' arguments, expected \"+(argCount - 2)+\" args!');\\n\" +\n          \"}\\n\";\n  \n  \n      // Determine if we need to use a dynamic stack to store the destructors for the function parameters.\n      // TODO: Remove this completely once all function invokers are being dynamically generated.\n      var needsDestructorStack = false;\n  \n      for(var i = 1; i < argTypes.length; ++i) { // Skip return value at index 0 - it's not deleted here.\n          if (argTypes[i] !== null && argTypes[i].destructorFunction === undefined) { // The type does not define a destructor function - must use dynamic stack\n              needsDestructorStack = true;\n              break;\n          }\n      }\n  \n      if (needsDestructorStack) {\n          invokerFnBody +=\n              \"var destructors = [];\\n\";\n      }\n  \n      var dtorStack = needsDestructorStack ? \"destructors\" : \"null\";\n      var args1 = [\"throwBindingError\", \"invoker\", \"fn\", \"runDestructors\", \"retType\", \"classParam\"];\n      var args2 = [throwBindingError, cppInvokerFunc, cppTargetFunc, runDestructors, argTypes[0], argTypes[1]];\n  \n  \n      if (isClassMethodFunc) {\n          invokerFnBody += \"var thisWired = classParam.toWireType(\"+dtorStack+\", this);\\n\";\n      }\n  \n      for(var i = 0; i < argCount - 2; ++i) {\n          invokerFnBody += \"var arg\"+i+\"Wired = argType\"+i+\".toWireType(\"+dtorStack+\", arg\"+i+\"); // \"+argTypes[i+2].name+\"\\n\";\n          args1.push(\"argType\"+i);\n          args2.push(argTypes[i+2]);\n      }\n  \n      if (isClassMethodFunc) {\n          argsListWired = \"thisWired\" + (argsListWired.length > 0 ? \", \" : \"\") + argsListWired;\n      }\n  \n      var returns = (argTypes[0].name !== \"void\");\n  \n      invokerFnBody +=\n          (returns?\"var rv = \":\"\") + \"invoker(fn\"+(argsListWired.length>0?\", \":\"\")+argsListWired+\");\\n\";\n  \n      if (needsDestructorStack) {\n          invokerFnBody += \"runDestructors(destructors);\\n\";\n      } else {\n          for(var i = isClassMethodFunc?1:2; i < argTypes.length; ++i) { // Skip return value at index 0 - it's not deleted here. Also skip class type if not a method.\n              var paramName = (i === 1 ? \"thisWired\" : (\"arg\"+(i - 2)+\"Wired\"));\n              if (argTypes[i].destructorFunction !== null) {\n                  invokerFnBody += paramName+\"_dtor(\"+paramName+\"); // \"+argTypes[i].name+\"\\n\";\n                  args1.push(paramName+\"_dtor\");\n                  args2.push(argTypes[i].destructorFunction);\n              }\n          }\n      }\n  \n      if (returns) {\n          invokerFnBody += \"var ret = retType.fromWireType(rv);\\n\" +\n                           \"return ret;\\n\";\n      } else {\n      }\n      invokerFnBody += \"}\\n\";\n  \n      args1.push(invokerFnBody);\n  \n      var invokerFunction = new_(Function, args1).apply(null, args2);\n      return invokerFunction;\n    }\n  \n  \n  function ensureOverloadTable(proto, methodName, humanName) {\n      if (undefined === proto[methodName].overloadTable) {\n          var prevFunc = proto[methodName];\n          // Inject an overload resolver function that routes to the appropriate overload based on the number of arguments.\n          proto[methodName] = function() {\n              // TODO This check can be removed in -O3 level \"unsafe\" optimizations.\n              if (!proto[methodName].overloadTable.hasOwnProperty(arguments.length)) {\n                  throwBindingError(\"Function '\" + humanName + \"' called with an invalid number of arguments (\" + arguments.length + \") - expects one of (\" + proto[methodName].overloadTable + \")!\");\n              }\n              return proto[methodName].overloadTable[arguments.length].apply(this, arguments);\n          };\n          // Move the previous function into the overload table.\n          proto[methodName].overloadTable = [];\n          proto[methodName].overloadTable[prevFunc.argCount] = prevFunc;\n      }\n    }function exposePublicSymbol(name, value, numArguments) {\n      if (Module.hasOwnProperty(name)) {\n          if (undefined === numArguments || (undefined !== Module[name].overloadTable && undefined !== Module[name].overloadTable[numArguments])) {\n              throwBindingError(\"Cannot register public name '\" + name + \"' twice\");\n          }\n  \n          // We are exposing a function with the same name as an existing function. Create an overload table and a function selector\n          // that routes between the two.\n          ensureOverloadTable(Module, name, name);\n          if (Module.hasOwnProperty(numArguments)) {\n              throwBindingError(\"Cannot register multiple overloads of a function with the same number of arguments (\" + numArguments + \")!\");\n          }\n          // Add the new function into the overload table.\n          Module[name].overloadTable[numArguments] = value;\n      }\n      else {\n          Module[name] = value;\n          if (undefined !== numArguments) {\n              Module[name].numArguments = numArguments;\n          }\n      }\n    }\n  \n  function heap32VectorToArray(count, firstElement) {\n      var array = [];\n      for (var i = 0; i < count; i++) {\n          array.push(HEAP32[(firstElement >> 2) + i]);\n      }\n      return array;\n    }\n  \n  function replacePublicSymbol(name, value, numArguments) {\n      if (!Module.hasOwnProperty(name)) {\n          throwInternalError('Replacing nonexistant public symbol');\n      }\n      // If there's an overload table for this symbol, replace the symbol in the overload table instead.\n      if (undefined !== Module[name].overloadTable && undefined !== numArguments) {\n          Module[name].overloadTable[numArguments] = value;\n      }\n      else {\n          Module[name] = value;\n      }\n    }\n  \n  function requireFunction(signature, rawFunction) {\n      signature = readLatin1String(signature);\n  \n      function makeDynCaller(dynCall) {\n          var args = [];\n          for (var i = 1; i < signature.length; ++i) {\n              args.push('a' + i);\n          }\n  \n          var name = 'dynCall_' + signature + '_' + rawFunction;\n          var body = 'return function ' + name + '(' + args.join(', ') + ') {\\n';\n          body    += '    return dynCall(rawFunction' + (args.length ? ', ' : '') + args.join(', ') + ');\\n';\n          body    += '};\\n';\n  \n          return (new Function('dynCall', 'rawFunction', body))(dynCall, rawFunction);\n      }\n  \n      var fp;\n      if (Module['FUNCTION_TABLE_' + signature] !== undefined) {\n          fp = Module['FUNCTION_TABLE_' + signature][rawFunction];\n      } else if (typeof FUNCTION_TABLE !== \"undefined\") {\n          fp = FUNCTION_TABLE[rawFunction];\n      } else {\n          // asm.js does not give direct access to the function tables,\n          // and thus we must go through the dynCall interface which allows\n          // calling into a signature's function table by pointer value.\n          //\n          // https://github.com/dherman/asm.js/issues/83\n          //\n          // This has three main penalties:\n          // - dynCall is another function call in the path from JavaScript to C++.\n          // - JITs may not predict through the function table indirection at runtime.\n          var dc = asm['dynCall_' + signature];\n          if (dc === undefined) {\n              // We will always enter this branch if the signature\n              // contains 'f' and PRECISE_F32 is not enabled.\n              //\n              // Try again, replacing 'f' with 'd'.\n              dc = asm['dynCall_' + signature.replace(/f/g, 'd')];\n              if (dc === undefined) {\n                  throwBindingError(\"No dynCall invoker for signature: \" + signature);\n              }\n          }\n          fp = makeDynCaller(dc);\n      }\n  \n      if (typeof fp !== \"function\") {\n          throwBindingError(\"unknown function pointer with signature \" + signature + \": \" + rawFunction);\n      }\n      return fp;\n    }\n  \n  \n  var UnboundTypeError=undefined;\n  \n  function getTypeName(type) {\n      var ptr = ___getTypeName(type);\n      var rv = readLatin1String(ptr);\n      _free(ptr);\n      return rv;\n    }function throwUnboundTypeError(message, types) {\n      var unboundTypes = [];\n      var seen = {};\n      function visit(type) {\n          if (seen[type]) {\n              return;\n          }\n          if (registeredTypes[type]) {\n              return;\n          }\n          if (typeDependencies[type]) {\n              typeDependencies[type].forEach(visit);\n              return;\n          }\n          unboundTypes.push(type);\n          seen[type] = true;\n      }\n      types.forEach(visit);\n  \n      throw new UnboundTypeError(message + ': ' + unboundTypes.map(getTypeName).join([', ']));\n    }function __embind_register_function(name, argCount, rawArgTypesAddr, signature, rawInvoker, fn) {\n      var argTypes = heap32VectorToArray(argCount, rawArgTypesAddr);\n      name = readLatin1String(name);\n      \n      rawInvoker = requireFunction(signature, rawInvoker);\n  \n      exposePublicSymbol(name, function() {\n          throwUnboundTypeError('Cannot call ' + name + ' due to unbound types', argTypes);\n      }, argCount - 1);\n  \n      whenDependentTypesAreResolved([], argTypes, function(argTypes) {\n          var invokerArgsArray = [argTypes[0] /* return value */, null /* no class 'this'*/].concat(argTypes.slice(1) /* actual params */);\n          replacePublicSymbol(name, craftInvokerFunction(name, invokerArgsArray, null /* no class 'this'*/, rawInvoker, fn), argCount - 1);\n          return [];\n      });\n    }\n\n  function __embind_register_constant(name, type, value) {\n      name = readLatin1String(name);\n      whenDependentTypesAreResolved([], [type], function(type) {\n          type = type[0];\n          Module[name] = type['fromWireType'](value);\n          return [];\n      });\n    }\n\n  function _pthread_cleanup_pop() {\n      assert(_pthread_cleanup_push.level == __ATEXIT__.length, 'cannot pop if something else added meanwhile!');\n      __ATEXIT__.pop();\n      _pthread_cleanup_push.level = __ATEXIT__.length;\n    }\n\n  \n  \n  \n  var ERRNO_MESSAGES={0:\"Success\",1:\"Not super-user\",2:\"No such file or directory\",3:\"No such process\",4:\"Interrupted system call\",5:\"I/O error\",6:\"No such device or address\",7:\"Arg list too long\",8:\"Exec format error\",9:\"Bad file number\",10:\"No children\",11:\"No more processes\",12:\"Not enough core\",13:\"Permission denied\",14:\"Bad address\",15:\"Block device required\",16:\"Mount device busy\",17:\"File exists\",18:\"Cross-device link\",19:\"No such device\",20:\"Not a directory\",21:\"Is a directory\",22:\"Invalid argument\",23:\"Too many open files in system\",24:\"Too many open files\",25:\"Not a typewriter\",26:\"Text file busy\",27:\"File too large\",28:\"No space left on device\",29:\"Illegal seek\",30:\"Read only file system\",31:\"Too many links\",32:\"Broken pipe\",33:\"Math arg out of domain of func\",34:\"Math result not representable\",35:\"File locking deadlock error\",36:\"File or path name too long\",37:\"No record locks available\",38:\"Function not implemented\",39:\"Directory not empty\",40:\"Too many symbolic links\",42:\"No message of desired type\",43:\"Identifier removed\",44:\"Channel number out of range\",45:\"Level 2 not synchronized\",46:\"Level 3 halted\",47:\"Level 3 reset\",48:\"Link number out of range\",49:\"Protocol driver not attached\",50:\"No CSI structure available\",51:\"Level 2 halted\",52:\"Invalid exchange\",53:\"Invalid request descriptor\",54:\"Exchange full\",55:\"No anode\",56:\"Invalid request code\",57:\"Invalid slot\",59:\"Bad font file fmt\",60:\"Device not a stream\",61:\"No data (for no delay io)\",62:\"Timer expired\",63:\"Out of streams resources\",64:\"Machine is not on the network\",65:\"Package not installed\",66:\"The object is remote\",67:\"The link has been severed\",68:\"Advertise error\",69:\"Srmount error\",70:\"Communication error on send\",71:\"Protocol error\",72:\"Multihop attempted\",73:\"Cross mount point (not really error)\",74:\"Trying to read unreadable message\",75:\"Value too large for defined data type\",76:\"Given log. name not unique\",77:\"f.d. invalid for this operation\",78:\"Remote address changed\",79:\"Can   access a needed shared lib\",80:\"Accessing a corrupted shared lib\",81:\".lib section in a.out corrupted\",82:\"Attempting to link in too many libs\",83:\"Attempting to exec a shared library\",84:\"Illegal byte sequence\",86:\"Streams pipe error\",87:\"Too many users\",88:\"Socket operation on non-socket\",89:\"Destination address required\",90:\"Message too long\",91:\"Protocol wrong type for socket\",92:\"Protocol not available\",93:\"Unknown protocol\",94:\"Socket type not supported\",95:\"Not supported\",96:\"Protocol family not supported\",97:\"Address family not supported by protocol family\",98:\"Address already in use\",99:\"Address not available\",100:\"Network interface is not configured\",101:\"Network is unreachable\",102:\"Connection reset by network\",103:\"Connection aborted\",104:\"Connection reset by peer\",105:\"No buffer space available\",106:\"Socket is already connected\",107:\"Socket is not connected\",108:\"Can't send after socket shutdown\",109:\"Too many references\",110:\"Connection timed out\",111:\"Connection refused\",112:\"Host is down\",113:\"Host is unreachable\",114:\"Socket already connected\",115:\"Connection already in progress\",116:\"Stale file handle\",122:\"Quota exceeded\",123:\"No medium (in tape drive)\",125:\"Operation canceled\",130:\"Previous owner died\",131:\"State not recoverable\"};\n  \n  var PATH={splitPath:function (filename) {\n        var splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\n        return splitPathRe.exec(filename).slice(1);\n      },normalizeArray:function (parts, allowAboveRoot) {\n        // if the path tries to go above the root, `up` ends up > 0\n        var up = 0;\n        for (var i = parts.length - 1; i >= 0; i--) {\n          var last = parts[i];\n          if (last === '.') {\n            parts.splice(i, 1);\n          } else if (last === '..') {\n            parts.splice(i, 1);\n            up++;\n          } else if (up) {\n            parts.splice(i, 1);\n            up--;\n          }\n        }\n        // if the path is allowed to go above the root, restore leading ..s\n        if (allowAboveRoot) {\n          for (; up--; up) {\n            parts.unshift('..');\n          }\n        }\n        return parts;\n      },normalize:function (path) {\n        var isAbsolute = path.charAt(0) === '/',\n            trailingSlash = path.substr(-1) === '/';\n        // Normalize the path\n        path = PATH.normalizeArray(path.split('/').filter(function(p) {\n          return !!p;\n        }), !isAbsolute).join('/');\n        if (!path && !isAbsolute) {\n          path = '.';\n        }\n        if (path && trailingSlash) {\n          path += '/';\n        }\n        return (isAbsolute ? '/' : '') + path;\n      },dirname:function (path) {\n        var result = PATH.splitPath(path),\n            root = result[0],\n            dir = result[1];\n        if (!root && !dir) {\n          // No dirname whatsoever\n          return '.';\n        }\n        if (dir) {\n          // It has a dirname, strip trailing slash\n          dir = dir.substr(0, dir.length - 1);\n        }\n        return root + dir;\n      },basename:function (path) {\n        // EMSCRIPTEN return '/'' for '/', not an empty string\n        if (path === '/') return '/';\n        var lastSlash = path.lastIndexOf('/');\n        if (lastSlash === -1) return path;\n        return path.substr(lastSlash+1);\n      },extname:function (path) {\n        return PATH.splitPath(path)[3];\n      },join:function () {\n        var paths = Array.prototype.slice.call(arguments, 0);\n        return PATH.normalize(paths.join('/'));\n      },join2:function (l, r) {\n        return PATH.normalize(l + '/' + r);\n      },resolve:function () {\n        var resolvedPath = '',\n          resolvedAbsolute = false;\n        for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n          var path = (i >= 0) ? arguments[i] : FS.cwd();\n          // Skip empty and invalid entries\n          if (typeof path !== 'string') {\n            throw new TypeError('Arguments to path.resolve must be strings');\n          } else if (!path) {\n            return ''; // an invalid portion invalidates the whole thing\n          }\n          resolvedPath = path + '/' + resolvedPath;\n          resolvedAbsolute = path.charAt(0) === '/';\n        }\n        // At this point the path should be resolved to a full absolute path, but\n        // handle relative paths to be safe (might happen when process.cwd() fails)\n        resolvedPath = PATH.normalizeArray(resolvedPath.split('/').filter(function(p) {\n          return !!p;\n        }), !resolvedAbsolute).join('/');\n        return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n      },relative:function (from, to) {\n        from = PATH.resolve(from).substr(1);\n        to = PATH.resolve(to).substr(1);\n        function trim(arr) {\n          var start = 0;\n          for (; start < arr.length; start++) {\n            if (arr[start] !== '') break;\n          }\n          var end = arr.length - 1;\n          for (; end >= 0; end--) {\n            if (arr[end] !== '') break;\n          }\n          if (start > end) return [];\n          return arr.slice(start, end - start + 1);\n        }\n        var fromParts = trim(from.split('/'));\n        var toParts = trim(to.split('/'));\n        var length = Math.min(fromParts.length, toParts.length);\n        var samePartsLength = length;\n        for (var i = 0; i < length; i++) {\n          if (fromParts[i] !== toParts[i]) {\n            samePartsLength = i;\n            break;\n          }\n        }\n        var outputParts = [];\n        for (var i = samePartsLength; i < fromParts.length; i++) {\n          outputParts.push('..');\n        }\n        outputParts = outputParts.concat(toParts.slice(samePartsLength));\n        return outputParts.join('/');\n      }};\n  \n  var TTY={ttys:[],init:function () {\n        // https://github.com/kripken/emscripten/pull/1555\n        // if (ENVIRONMENT_IS_NODE) {\n        //   // currently, FS.init does not distinguish if process.stdin is a file or TTY\n        //   // device, it always assumes it's a TTY device. because of this, we're forcing\n        //   // process.stdin to UTF8 encoding to at least make stdin reading compatible\n        //   // with text files until FS.init can be refactored.\n        //   process['stdin']['setEncoding']('utf8');\n        // }\n      },shutdown:function () {\n        // https://github.com/kripken/emscripten/pull/1555\n        // if (ENVIRONMENT_IS_NODE) {\n        //   // inolen: any idea as to why node -e 'process.stdin.read()' wouldn't exit immediately (with process.stdin being a tty)?\n        //   // isaacs: because now it's reading from the stream, you've expressed interest in it, so that read() kicks off a _read() which creates a ReadReq operation\n        //   // inolen: I thought read() in that case was a synchronous operation that just grabbed some amount of buffered data if it exists?\n        //   // isaacs: it is. but it also triggers a _read() call, which calls readStart() on the handle\n        //   // isaacs: do process.stdin.pause() and i'd think it'd probably close the pending call\n        //   process['stdin']['pause']();\n        // }\n      },register:function (dev, ops) {\n        TTY.ttys[dev] = { input: [], output: [], ops: ops };\n        FS.registerDevice(dev, TTY.stream_ops);\n      },stream_ops:{open:function (stream) {\n          var tty = TTY.ttys[stream.node.rdev];\n          if (!tty) {\n            throw new FS.ErrnoError(ERRNO_CODES.ENODEV);\n          }\n          stream.tty = tty;\n          stream.seekable = false;\n        },close:function (stream) {\n          // flush any pending line data\n          stream.tty.ops.flush(stream.tty);\n        },flush:function (stream) {\n          stream.tty.ops.flush(stream.tty);\n        },read:function (stream, buffer, offset, length, pos /* ignored */) {\n          if (!stream.tty || !stream.tty.ops.get_char) {\n            throw new FS.ErrnoError(ERRNO_CODES.ENXIO);\n          }\n          var bytesRead = 0;\n          for (var i = 0; i < length; i++) {\n            var result;\n            try {\n              result = stream.tty.ops.get_char(stream.tty);\n            } catch (e) {\n              throw new FS.ErrnoError(ERRNO_CODES.EIO);\n            }\n            if (result === undefined && bytesRead === 0) {\n              throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);\n            }\n            if (result === null || result === undefined) break;\n            bytesRead++;\n            buffer[offset+i] = result;\n          }\n          if (bytesRead) {\n            stream.node.timestamp = Date.now();\n          }\n          return bytesRead;\n        },write:function (stream, buffer, offset, length, pos) {\n          if (!stream.tty || !stream.tty.ops.put_char) {\n            throw new FS.ErrnoError(ERRNO_CODES.ENXIO);\n          }\n          for (var i = 0; i < length; i++) {\n            try {\n              stream.tty.ops.put_char(stream.tty, buffer[offset+i]);\n            } catch (e) {\n              throw new FS.ErrnoError(ERRNO_CODES.EIO);\n            }\n          }\n          if (length) {\n            stream.node.timestamp = Date.now();\n          }\n          return i;\n        }},default_tty_ops:{get_char:function (tty) {\n          if (!tty.input.length) {\n            var result = null;\n            if (ENVIRONMENT_IS_NODE) {\n              // we will read data by chunks of BUFSIZE\n              var BUFSIZE = 256;\n              var buf = new Buffer(BUFSIZE);\n              var bytesRead = 0;\n  \n              var fd = process.stdin.fd;\n              // Linux and Mac cannot use process.stdin.fd (which isn't set up as sync)\n              var usingDevice = false;\n              try {\n                fd = fs.openSync('/dev/stdin', 'r');\n                usingDevice = true;\n              } catch (e) {}\n  \n              bytesRead = fs.readSync(fd, buf, 0, BUFSIZE, null);\n  \n              if (usingDevice) { fs.closeSync(fd); }\n              if (bytesRead > 0) {\n                result = buf.slice(0, bytesRead).toString('utf-8');\n              } else {\n                result = null;\n              }\n  \n            } else if (typeof window != 'undefined' &&\n              typeof window.prompt == 'function') {\n              // Browser.\n              result = window.prompt('Input: ');  // returns null on cancel\n              if (result !== null) {\n                result += '\\n';\n              }\n            } else if (typeof readline == 'function') {\n              // Command line.\n              result = readline();\n              if (result !== null) {\n                result += '\\n';\n              }\n            }\n            if (!result) {\n              return null;\n            }\n            tty.input = intArrayFromString(result, true);\n          }\n          return tty.input.shift();\n        },put_char:function (tty, val) {\n          if (val === null || val === 10) {\n            Module['print'](UTF8ArrayToString(tty.output, 0));\n            tty.output = [];\n          } else {\n            if (val != 0) tty.output.push(val); // val == 0 would cut text output off in the middle.\n          }\n        },flush:function (tty) {\n          if (tty.output && tty.output.length > 0) {\n            Module['print'](UTF8ArrayToString(tty.output, 0));\n            tty.output = [];\n          }\n        }},default_tty1_ops:{put_char:function (tty, val) {\n          if (val === null || val === 10) {\n            Module['printErr'](UTF8ArrayToString(tty.output, 0));\n            tty.output = [];\n          } else {\n            if (val != 0) tty.output.push(val);\n          }\n        },flush:function (tty) {\n          if (tty.output && tty.output.length > 0) {\n            Module['printErr'](UTF8ArrayToString(tty.output, 0));\n            tty.output = [];\n          }\n        }}};\n  \n  var MEMFS={ops_table:null,mount:function (mount) {\n        return MEMFS.createNode(null, '/', 16384 | 511 /* 0777 */, 0);\n      },createNode:function (parent, name, mode, dev) {\n        if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {\n          // no supported\n          throw new FS.ErrnoError(ERRNO_CODES.EPERM);\n        }\n        if (!MEMFS.ops_table) {\n          MEMFS.ops_table = {\n            dir: {\n              node: {\n                getattr: MEMFS.node_ops.getattr,\n                setattr: MEMFS.node_ops.setattr,\n                lookup: MEMFS.node_ops.lookup,\n                mknod: MEMFS.node_ops.mknod,\n                rename: MEMFS.node_ops.rename,\n                unlink: MEMFS.node_ops.unlink,\n                rmdir: MEMFS.node_ops.rmdir,\n                readdir: MEMFS.node_ops.readdir,\n                symlink: MEMFS.node_ops.symlink\n              },\n              stream: {\n                llseek: MEMFS.stream_ops.llseek\n              }\n            },\n            file: {\n              node: {\n                getattr: MEMFS.node_ops.getattr,\n                setattr: MEMFS.node_ops.setattr\n              },\n              stream: {\n                llseek: MEMFS.stream_ops.llseek,\n                read: MEMFS.stream_ops.read,\n                write: MEMFS.stream_ops.write,\n                allocate: MEMFS.stream_ops.allocate,\n                mmap: MEMFS.stream_ops.mmap,\n                msync: MEMFS.stream_ops.msync\n              }\n            },\n            link: {\n              node: {\n                getattr: MEMFS.node_ops.getattr,\n                setattr: MEMFS.node_ops.setattr,\n                readlink: MEMFS.node_ops.readlink\n              },\n              stream: {}\n            },\n            chrdev: {\n              node: {\n                getattr: MEMFS.node_ops.getattr,\n                setattr: MEMFS.node_ops.setattr\n              },\n              stream: FS.chrdev_stream_ops\n            }\n          };\n        }\n        var node = FS.createNode(parent, name, mode, dev);\n        if (FS.isDir(node.mode)) {\n          node.node_ops = MEMFS.ops_table.dir.node;\n          node.stream_ops = MEMFS.ops_table.dir.stream;\n          node.contents = {};\n        } else if (FS.isFile(node.mode)) {\n          node.node_ops = MEMFS.ops_table.file.node;\n          node.stream_ops = MEMFS.ops_table.file.stream;\n          node.usedBytes = 0; // The actual number of bytes used in the typed array, as opposed to contents.buffer.byteLength which gives the whole capacity.\n          // When the byte data of the file is populated, this will point to either a typed array, or a normal JS array. Typed arrays are preferred\n          // for performance, and used by default. However, typed arrays are not resizable like normal JS arrays are, so there is a small disk size\n          // penalty involved for appending file writes that continuously grow a file similar to std::vector capacity vs used -scheme.\n          node.contents = null; \n        } else if (FS.isLink(node.mode)) {\n          node.node_ops = MEMFS.ops_table.link.node;\n          node.stream_ops = MEMFS.ops_table.link.stream;\n        } else if (FS.isChrdev(node.mode)) {\n          node.node_ops = MEMFS.ops_table.chrdev.node;\n          node.stream_ops = MEMFS.ops_table.chrdev.stream;\n        }\n        node.timestamp = Date.now();\n        // add the new node to the parent\n        if (parent) {\n          parent.contents[name] = node;\n        }\n        return node;\n      },getFileDataAsRegularArray:function (node) {\n        if (node.contents && node.contents.subarray) {\n          var arr = [];\n          for (var i = 0; i < node.usedBytes; ++i) arr.push(node.contents[i]);\n          return arr; // Returns a copy of the original data.\n        }\n        return node.contents; // No-op, the file contents are already in a JS array. Return as-is.\n      },getFileDataAsTypedArray:function (node) {\n        if (!node.contents) return new Uint8Array;\n        if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes); // Make sure to not return excess unused bytes.\n        return new Uint8Array(node.contents);\n      },expandFileStorage:function (node, newCapacity) {\n        // If we are asked to expand the size of a file that already exists, revert to using a standard JS array to store the file\n        // instead of a typed array. This makes resizing the array more flexible because we can just .push() elements at the back to\n        // increase the size.\n        if (node.contents && node.contents.subarray && newCapacity > node.contents.length) {\n          node.contents = MEMFS.getFileDataAsRegularArray(node);\n          node.usedBytes = node.contents.length; // We might be writing to a lazy-loaded file which had overridden this property, so force-reset it.\n        }\n  \n        if (!node.contents || node.contents.subarray) { // Keep using a typed array if creating a new storage, or if old one was a typed array as well.\n          var prevCapacity = node.contents ? node.contents.buffer.byteLength : 0;\n          if (prevCapacity >= newCapacity) return; // No need to expand, the storage was already large enough.\n          // Don't expand strictly to the given requested limit if it's only a very small increase, but instead geometrically grow capacity.\n          // For small filesizes (<1MB), perform size*2 geometric increase, but for large sizes, do a much more conservative size*1.125 increase to\n          // avoid overshooting the allocation cap by a very large margin.\n          var CAPACITY_DOUBLING_MAX = 1024 * 1024;\n          newCapacity = Math.max(newCapacity, (prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2.0 : 1.125)) | 0);\n          if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256); // At minimum allocate 256b for each file when expanding.\n          var oldContents = node.contents;\n          node.contents = new Uint8Array(newCapacity); // Allocate new storage.\n          if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0); // Copy old data over to the new storage.\n          return;\n        }\n        // Not using a typed array to back the file storage. Use a standard JS array instead.\n        if (!node.contents && newCapacity > 0) node.contents = [];\n        while (node.contents.length < newCapacity) node.contents.push(0);\n      },resizeFileStorage:function (node, newSize) {\n        if (node.usedBytes == newSize) return;\n        if (newSize == 0) {\n          node.contents = null; // Fully decommit when requesting a resize to zero.\n          node.usedBytes = 0;\n          return;\n        }\n        if (!node.contents || node.contents.subarray) { // Resize a typed array if that is being used as the backing store.\n          var oldContents = node.contents;\n          node.contents = new Uint8Array(new ArrayBuffer(newSize)); // Allocate new storage.\n          if (oldContents) {\n            node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes))); // Copy old data over to the new storage.\n          }\n          node.usedBytes = newSize;\n          return;\n        }\n        // Backing with a JS array.\n        if (!node.contents) node.contents = [];\n        if (node.contents.length > newSize) node.contents.length = newSize;\n        else while (node.contents.length < newSize) node.contents.push(0);\n        node.usedBytes = newSize;\n      },node_ops:{getattr:function (node) {\n          var attr = {};\n          // device numbers reuse inode numbers.\n          attr.dev = FS.isChrdev(node.mode) ? node.id : 1;\n          attr.ino = node.id;\n          attr.mode = node.mode;\n          attr.nlink = 1;\n          attr.uid = 0;\n          attr.gid = 0;\n          attr.rdev = node.rdev;\n          if (FS.isDir(node.mode)) {\n            attr.size = 4096;\n          } else if (FS.isFile(node.mode)) {\n            attr.size = node.usedBytes;\n          } else if (FS.isLink(node.mode)) {\n            attr.size = node.link.length;\n          } else {\n            attr.size = 0;\n          }\n          attr.atime = new Date(node.timestamp);\n          attr.mtime = new Date(node.timestamp);\n          attr.ctime = new Date(node.timestamp);\n          // NOTE: In our implementation, st_blocks = Math.ceil(st_size/st_blksize),\n          //       but this is not required by the standard.\n          attr.blksize = 4096;\n          attr.blocks = Math.ceil(attr.size / attr.blksize);\n          return attr;\n        },setattr:function (node, attr) {\n          if (attr.mode !== undefined) {\n            node.mode = attr.mode;\n          }\n          if (attr.timestamp !== undefined) {\n            node.timestamp = attr.timestamp;\n          }\n          if (attr.size !== undefined) {\n            MEMFS.resizeFileStorage(node, attr.size);\n          }\n        },lookup:function (parent, name) {\n          throw FS.genericErrors[ERRNO_CODES.ENOENT];\n        },mknod:function (parent, name, mode, dev) {\n          return MEMFS.createNode(parent, name, mode, dev);\n        },rename:function (old_node, new_dir, new_name) {\n          // if we're overwriting a directory at new_name, make sure it's empty.\n          if (FS.isDir(old_node.mode)) {\n            var new_node;\n            try {\n              new_node = FS.lookupNode(new_dir, new_name);\n            } catch (e) {\n            }\n            if (new_node) {\n              for (var i in new_node.contents) {\n                throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);\n              }\n            }\n          }\n          // do the internal rewiring\n          delete old_node.parent.contents[old_node.name];\n          old_node.name = new_name;\n          new_dir.contents[new_name] = old_node;\n          old_node.parent = new_dir;\n        },unlink:function (parent, name) {\n          delete parent.contents[name];\n        },rmdir:function (parent, name) {\n          var node = FS.lookupNode(parent, name);\n          for (var i in node.contents) {\n            throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);\n          }\n          delete parent.contents[name];\n        },readdir:function (node) {\n          var entries = ['.', '..']\n          for (var key in node.contents) {\n            if (!node.contents.hasOwnProperty(key)) {\n              continue;\n            }\n            entries.push(key);\n          }\n          return entries;\n        },symlink:function (parent, newname, oldpath) {\n          var node = MEMFS.createNode(parent, newname, 511 /* 0777 */ | 40960, 0);\n          node.link = oldpath;\n          return node;\n        },readlink:function (node) {\n          if (!FS.isLink(node.mode)) {\n            throw new FS.ErrnoError(ERRNO_CODES.EINVAL);\n          }\n          return node.link;\n        }},stream_ops:{read:function (stream, buffer, offset, length, position) {\n          var contents = stream.node.contents;\n          if (position >= stream.node.usedBytes) return 0;\n          var size = Math.min(stream.node.usedBytes - position, length);\n          assert(size >= 0);\n          if (size > 8 && contents.subarray) { // non-trivial, and typed array\n            buffer.set(contents.subarray(position, position + size), offset);\n          } else {\n            for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i];\n          }\n          return size;\n        },write:function (stream, buffer, offset, length, position, canOwn) {\n          if (!length) return 0;\n          var node = stream.node;\n          node.timestamp = Date.now();\n  \n          if (buffer.subarray && (!node.contents || node.contents.subarray)) { // This write is from a typed array to a typed array?\n            if (canOwn) { // Can we just reuse the buffer we are given?\n              assert(position === 0, 'canOwn must imply no weird position inside the file');\n              node.contents = buffer.subarray(offset, offset + length);\n              node.usedBytes = length;\n              return length;\n            } else if (node.usedBytes === 0 && position === 0) { // If this is a simple first write to an empty file, do a fast set since we don't need to care about old data.\n              node.contents = new Uint8Array(buffer.subarray(offset, offset + length));\n              node.usedBytes = length;\n              return length;\n            } else if (position + length <= node.usedBytes) { // Writing to an already allocated and used subrange of the file?\n              node.contents.set(buffer.subarray(offset, offset + length), position);\n              return length;\n            }\n          }\n  \n          // Appending to an existing file and we need to reallocate, or source data did not come as a typed array.\n          MEMFS.expandFileStorage(node, position+length);\n          if (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position); // Use typed array write if available.\n          else {\n            for (var i = 0; i < length; i++) {\n             node.contents[position + i] = buffer[offset + i]; // Or fall back to manual write if not.\n            }\n          }\n          node.usedBytes = Math.max(node.usedBytes, position+length);\n          return length;\n        },llseek:function (stream, offset, whence) {\n          var position = offset;\n          if (whence === 1) {  // SEEK_CUR.\n            position += stream.position;\n          } else if (whence === 2) {  // SEEK_END.\n            if (FS.isFile(stream.node.mode)) {\n              position += stream.node.usedBytes;\n            }\n          }\n          if (position < 0) {\n            throw new FS.ErrnoError(ERRNO_CODES.EINVAL);\n          }\n          return position;\n        },allocate:function (stream, offset, length) {\n          MEMFS.expandFileStorage(stream.node, offset + length);\n          stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);\n        },mmap:function (stream, buffer, offset, length, position, prot, flags) {\n          if (!FS.isFile(stream.node.mode)) {\n            throw new FS.ErrnoError(ERRNO_CODES.ENODEV);\n          }\n          var ptr;\n          var allocated;\n          var contents = stream.node.contents;\n          // Only make a new copy when MAP_PRIVATE is specified.\n          if ( !(flags & 2) &&\n                (contents.buffer === buffer || contents.buffer === buffer.buffer) ) {\n            // We can't emulate MAP_SHARED when the file is not backed by the buffer\n            // we're mapping to (e.g. the HEAP buffer).\n            allocated = false;\n            ptr = contents.byteOffset;\n          } else {\n            // Try to avoid unnecessary slices.\n            if (position > 0 || position + length < stream.node.usedBytes) {\n              if (contents.subarray) {\n                contents = contents.subarray(position, position + length);\n              } else {\n                contents = Array.prototype.slice.call(contents, position, position + length);\n              }\n            }\n            allocated = true;\n            ptr = _malloc(length);\n            if (!ptr) {\n              throw new FS.ErrnoError(ERRNO_CODES.ENOMEM);\n            }\n            buffer.set(contents, ptr);\n          }\n          return { ptr: ptr, allocated: allocated };\n        },msync:function (stream, buffer, offset, length, mmapFlags) {\n          if (!FS.isFile(stream.node.mode)) {\n            throw new FS.ErrnoError(ERRNO_CODES.ENODEV);\n          }\n          if (mmapFlags & 2) {\n            // MAP_PRIVATE calls need not to be synced back to underlying fs\n            return 0;\n          }\n  \n          var bytesWritten = MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);\n          // should we check if bytesWritten and length are the same?\n          return 0;\n        }}};\n  \n  var IDBFS={dbs:{},indexedDB:function () {\n        if (typeof indexedDB !== 'undefined') return indexedDB;\n        var ret = null;\n        if (typeof window === 'object') ret = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;\n        assert(ret, 'IDBFS used, but indexedDB not supported');\n        return ret;\n      },DB_VERSION:21,DB_STORE_NAME:\"FILE_DATA\",mount:function (mount) {\n        // reuse all of the core MEMFS functionality\n        return MEMFS.mount.apply(null, arguments);\n      },syncfs:function (mount, populate, callback) {\n        IDBFS.getLocalSet(mount, function(err, local) {\n          if (err) return callback(err);\n  \n          IDBFS.getRemoteSet(mount, function(err, remote) {\n            if (err) return callback(err);\n  \n            var src = populate ? remote : local;\n            var dst = populate ? local : remote;\n  \n            IDBFS.reconcile(src, dst, callback);\n          });\n        });\n      },getDB:function (name, callback) {\n        // check the cache first\n        var db = IDBFS.dbs[name];\n        if (db) {\n          return callback(null, db);\n        }\n  \n        var req;\n        try {\n          req = IDBFS.indexedDB().open(name, IDBFS.DB_VERSION);\n        } catch (e) {\n          return callback(e);\n        }\n        req.onupgradeneeded = function(e) {\n          var db = e.target.result;\n          var transaction = e.target.transaction;\n  \n          var fileStore;\n  \n          if (db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)) {\n            fileStore = transaction.objectStore(IDBFS.DB_STORE_NAME);\n          } else {\n            fileStore = db.createObjectStore(IDBFS.DB_STORE_NAME);\n          }\n  \n          if (!fileStore.indexNames.contains('timestamp')) {\n            fileStore.createIndex('timestamp', 'timestamp', { unique: false });\n          }\n        };\n        req.onsuccess = function() {\n          db = req.result;\n  \n          // add to the cache\n          IDBFS.dbs[name] = db;\n          callback(null, db);\n        };\n        req.onerror = function(e) {\n          callback(this.error);\n          e.preventDefault();\n        };\n      },getLocalSet:function (mount, callback) {\n        var entries = {};\n  \n        function isRealDir(p) {\n          return p !== '.' && p !== '..';\n        };\n        function toAbsolute(root) {\n          return function(p) {\n            return PATH.join2(root, p);\n          }\n        };\n  \n        var check = FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint));\n  \n        while (check.length) {\n          var path = check.pop();\n          var stat;\n  \n          try {\n            stat = FS.stat(path);\n          } catch (e) {\n            return callback(e);\n          }\n  \n          if (FS.isDir(stat.mode)) {\n            check.push.apply(check, FS.readdir(path).filter(isRealDir).map(toAbsolute(path)));\n          }\n  \n          entries[path] = { timestamp: stat.mtime };\n        }\n  \n        return callback(null, { type: 'local', entries: entries });\n      },getRemoteSet:function (mount, callback) {\n        var entries = {};\n  \n        IDBFS.getDB(mount.mountpoint, function(err, db) {\n          if (err) return callback(err);\n  \n          var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readonly');\n          transaction.onerror = function(e) {\n            callback(this.error);\n            e.preventDefault();\n          };\n  \n          var store = transaction.objectStore(IDBFS.DB_STORE_NAME);\n          var index = store.index('timestamp');\n  \n          index.openKeyCursor().onsuccess = function(event) {\n            var cursor = event.target.result;\n  \n            if (!cursor) {\n              return callback(null, { type: 'remote', db: db, entries: entries });\n            }\n  \n            entries[cursor.primaryKey] = { timestamp: cursor.key };\n  \n            cursor.continue();\n          };\n        });\n      },loadLocalEntry:function (path, callback) {\n        var stat, node;\n  \n        try {\n          var lookup = FS.lookupPath(path);\n          node = lookup.node;\n          stat = FS.stat(path);\n        } catch (e) {\n          return callback(e);\n        }\n  \n        if (FS.isDir(stat.mode)) {\n          return callback(null, { timestamp: stat.mtime, mode: stat.mode });\n        } else if (FS.isFile(stat.mode)) {\n          // Performance consideration: storing a normal JavaScript array to a IndexedDB is much slower than storing a typed array.\n          // Therefore always convert the file contents to a typed array first before writing the data to IndexedDB.\n          node.contents = MEMFS.getFileDataAsTypedArray(node);\n          return callback(null, { timestamp: stat.mtime, mode: stat.mode, contents: node.contents });\n        } else {\n          return callback(new Error('node type not supported'));\n        }\n      },storeLocalEntry:function (path, entry, callback) {\n        try {\n          if (FS.isDir(entry.mode)) {\n            FS.mkdir(path, entry.mode);\n          } else if (FS.isFile(entry.mode)) {\n            FS.writeFile(path, entry.contents, { encoding: 'binary', canOwn: true });\n          } else {\n            return callback(new Error('node type not supported'));\n          }\n  \n          FS.chmod(path, entry.mode);\n          FS.utime(path, entry.timestamp, entry.timestamp);\n        } catch (e) {\n          return callback(e);\n        }\n  \n        callback(null);\n      },removeLocalEntry:function (path, callback) {\n        try {\n          var lookup = FS.lookupPath(path);\n          var stat = FS.stat(path);\n  \n          if (FS.isDir(stat.mode)) {\n            FS.rmdir(path);\n          } else if (FS.isFile(stat.mode)) {\n            FS.unlink(path);\n          }\n        } catch (e) {\n          return callback(e);\n        }\n  \n        callback(null);\n      },loadRemoteEntry:function (store, path, callback) {\n        var req = store.get(path);\n        req.onsuccess = function(event) { callback(null, event.target.result); };\n        req.onerror = function(e) {\n          callback(this.error);\n          e.preventDefault();\n        };\n      },storeRemoteEntry:function (store, path, entry, callback) {\n        var req = store.put(entry, path);\n        req.onsuccess = function() { callback(null); };\n        req.onerror = function(e) {\n          callback(this.error);\n          e.preventDefault();\n        };\n      },removeRemoteEntry:function (store, path, callback) {\n        var req = store.delete(path);\n        req.onsuccess = function() { callback(null); };\n        req.onerror = function(e) {\n          callback(this.error);\n          e.preventDefault();\n        };\n      },reconcile:function (src, dst, callback) {\n        var total = 0;\n  \n        var create = [];\n        Object.keys(src.entries).forEach(function (key) {\n          var e = src.entries[key];\n          var e2 = dst.entries[key];\n          if (!e2 || e.timestamp > e2.timestamp) {\n            create.push(key);\n            total++;\n          }\n        });\n  \n        var remove = [];\n        Object.keys(dst.entries).forEach(function (key) {\n          var e = dst.entries[key];\n          var e2 = src.entries[key];\n          if (!e2) {\n            remove.push(key);\n            total++;\n          }\n        });\n  \n        if (!total) {\n          return callback(null);\n        }\n  \n        var errored = false;\n        var completed = 0;\n        var db = src.type === 'remote' ? src.db : dst.db;\n        var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readwrite');\n        var store = transaction.objectStore(IDBFS.DB_STORE_NAME);\n  \n        function done(err) {\n          if (err) {\n            if (!done.errored) {\n              done.errored = true;\n              return callback(err);\n            }\n            return;\n          }\n          if (++completed >= total) {\n            return callback(null);\n          }\n        };\n  \n        transaction.onerror = function(e) {\n          done(this.error);\n          e.preventDefault();\n        };\n  \n        // sort paths in ascending order so directory entries are created\n        // before the files inside them\n        create.sort().forEach(function (path) {\n          if (dst.type === 'local') {\n            IDBFS.loadRemoteEntry(store, path, function (err, entry) {\n              if (err) return done(err);\n              IDBFS.storeLocalEntry(path, entry, done);\n            });\n          } else {\n            IDBFS.loadLocalEntry(path, function (err, entry) {\n              if (err) return done(err);\n              IDBFS.storeRemoteEntry(store, path, entry, done);\n            });\n          }\n        });\n  \n        // sort paths in descending order so files are deleted before their\n        // parent directories\n        remove.sort().reverse().forEach(function(path) {\n          if (dst.type === 'local') {\n            IDBFS.removeLocalEntry(path, done);\n          } else {\n            IDBFS.removeRemoteEntry(store, path, done);\n          }\n        });\n      }};\n  \n  var NODEFS={isWindows:false,staticInit:function () {\n        NODEFS.isWindows = !!process.platform.match(/^win/);\n      },mount:function (mount) {\n        assert(ENVIRONMENT_IS_NODE);\n        return NODEFS.createNode(null, '/', NODEFS.getMode(mount.opts.root), 0);\n      },createNode:function (parent, name, mode, dev) {\n        if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) {\n          throw new FS.ErrnoError(ERRNO_CODES.EINVAL);\n        }\n        var node = FS.createNode(parent, name, mode);\n        node.node_ops = NODEFS.node_ops;\n        node.stream_ops = NODEFS.stream_ops;\n        return node;\n      },getMode:function (path) {\n        var stat;\n        try {\n          stat = fs.lstatSync(path);\n          if (NODEFS.isWindows) {\n            // On Windows, directories return permission bits 'rw-rw-rw-', even though they have 'rwxrwxrwx', so\n            // propagate write bits to execute bits.\n            stat.mode = stat.mode | ((stat.mode & 146) >> 1);\n          }\n        } catch (e) {\n          if (!e.code) throw e;\n          throw new FS.ErrnoError(ERRNO_CODES[e.code]);\n        }\n        return stat.mode;\n      },realPath:function (node) {\n        var parts = [];\n        while (node.parent !== node) {\n          parts.push(node.name);\n          node = node.parent;\n        }\n        parts.push(node.mount.opts.root);\n        parts.reverse();\n        return PATH.join.apply(null, parts);\n      },flagsToPermissionStringMap:{0:\"r\",1:\"r+\",2:\"r+\",64:\"r\",65:\"r+\",66:\"r+\",129:\"rx+\",193:\"rx+\",514:\"w+\",577:\"w\",578:\"w+\",705:\"wx\",706:\"wx+\",1024:\"a\",1025:\"a\",1026:\"a+\",1089:\"a\",1090:\"a+\",1153:\"ax\",1154:\"ax+\",1217:\"ax\",1218:\"ax+\",4096:\"rs\",4098:\"rs+\"},flagsToPermissionString:function (flags) {\n        flags &= ~0100000 /*O_LARGEFILE*/; // Ignore this flag from musl, otherwise node.js fails to open the file.\n        if (flags in NODEFS.flagsToPermissionStringMap) {\n          return NODEFS.flagsToPermissionStringMap[flags];\n        } else {\n          throw new FS.ErrnoError(ERRNO_CODES.EINVAL);\n        }\n      },node_ops:{getattr:function (node) {\n          var path = NODEFS.realPath(node);\n          var stat;\n          try {\n            stat = fs.lstatSync(path);\n          } catch (e) {\n            if (!e.code) throw e;\n            throw new FS.ErrnoError(ERRNO_CODES[e.code]);\n          }\n          // node.js v0.10.20 doesn't report blksize and blocks on Windows. Fake them with default blksize of 4096.\n          // See http://support.microsoft.com/kb/140365\n          if (NODEFS.isWindows && !stat.blksize) {\n            stat.blksize = 4096;\n          }\n          if (NODEFS.isWindows && !stat.blocks) {\n            stat.blocks = (stat.size+stat.blksize-1)/stat.blksize|0;\n          }\n          return {\n            dev: stat.dev,\n            ino: stat.ino,\n            mode: stat.mode,\n            nlink: stat.nlink,\n            uid: stat.uid,\n            gid: stat.gid,\n            rdev: stat.rdev,\n            size: stat.size,\n            atime: stat.atime,\n            mtime: stat.mtime,\n            ctime: stat.ctime,\n            blksize: stat.blksize,\n            blocks: stat.blocks\n          };\n        },setattr:function (node, attr) {\n          var path = NODEFS.realPath(node);\n          try {\n            if (attr.mode !== undefined) {\n              fs.chmodSync(path, attr.mode);\n              // update the common node structure mode as well\n              node.mode = attr.mode;\n            }\n            if (attr.timestamp !== undefined) {\n              var date = new Date(attr.timestamp);\n              fs.utimesSync(path, date, date);\n            }\n            if (attr.size !== undefined) {\n              fs.truncateSync(path, attr.size);\n            }\n          } catch (e) {\n            if (!e.code) throw e;\n            throw new FS.ErrnoError(ERRNO_CODES[e.code]);\n          }\n        },lookup:function (parent, name) {\n          var path = PATH.join2(NODEFS.realPath(parent), name);\n          var mode = NODEFS.getMode(path);\n          return NODEFS.createNode(parent, name, mode);\n        },mknod:function (parent, name, mode, dev) {\n          var node = NODEFS.createNode(parent, name, mode, dev);\n          // create the backing node for this in the fs root as well\n          var path = NODEFS.realPath(node);\n          try {\n            if (FS.isDir(node.mode)) {\n              fs.mkdirSync(path, node.mode);\n            } else {\n              fs.writeFileSync(path, '', { mode: node.mode });\n            }\n          } catch (e) {\n            if (!e.code) throw e;\n            throw new FS.ErrnoError(ERRNO_CODES[e.code]);\n          }\n          return node;\n        },rename:function (oldNode, newDir, newName) {\n          var oldPath = NODEFS.realPath(oldNode);\n          var newPath = PATH.join2(NODEFS.realPath(newDir), newName);\n          try {\n            fs.renameSync(oldPath, newPath);\n          } catch (e) {\n            if (!e.code) throw e;\n            throw new FS.ErrnoError(ERRNO_CODES[e.code]);\n          }\n        },unlink:function (parent, name) {\n          var path = PATH.join2(NODEFS.realPath(parent), name);\n          try {\n            fs.unlinkSync(path);\n          } catch (e) {\n            if (!e.code) throw e;\n            throw new FS.ErrnoError(ERRNO_CODES[e.code]);\n          }\n        },rmdir:function (parent, name) {\n          var path = PATH.join2(NODEFS.realPath(parent), name);\n          try {\n            fs.rmdirSync(path);\n          } catch (e) {\n            if (!e.code) throw e;\n            throw new FS.ErrnoError(ERRNO_CODES[e.code]);\n          }\n        },readdir:function (node) {\n          var path = NODEFS.realPath(node);\n          try {\n            return fs.readdirSync(path);\n          } catch (e) {\n            if (!e.code) throw e;\n            throw new FS.ErrnoError(ERRNO_CODES[e.code]);\n          }\n        },symlink:function (parent, newName, oldPath) {\n          var newPath = PATH.join2(NODEFS.realPath(parent), newName);\n          try {\n            fs.symlinkSync(oldPath, newPath);\n          } catch (e) {\n            if (!e.code) throw e;\n            throw new FS.ErrnoError(ERRNO_CODES[e.code]);\n          }\n        },readlink:function (node) {\n          var path = NODEFS.realPath(node);\n          try {\n            path = fs.readlinkSync(path);\n            path = NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root), path);\n            return path;\n          } catch (e) {\n            if (!e.code) throw e;\n            throw new FS.ErrnoError(ERRNO_CODES[e.code]);\n          }\n        }},stream_ops:{open:function (stream) {\n          var path = NODEFS.realPath(stream.node);\n          try {\n            if (FS.isFile(stream.node.mode)) {\n              stream.nfd = fs.openSync(path, NODEFS.flagsToPermissionString(stream.flags));\n            }\n          } catch (e) {\n            if (!e.code) throw e;\n            throw new FS.ErrnoError(ERRNO_CODES[e.code]);\n          }\n        },close:function (stream) {\n          try {\n            if (FS.isFile(stream.node.mode) && stream.nfd) {\n              fs.closeSync(stream.nfd);\n            }\n          } catch (e) {\n            if (!e.code) throw e;\n            throw new FS.ErrnoError(ERRNO_CODES[e.code]);\n          }\n        },read:function (stream, buffer, offset, length, position) {\n          if (length === 0) return 0; // node errors on 0 length reads\n          // FIXME this is terrible.\n          var nbuffer = new Buffer(length);\n          var res;\n          try {\n            res = fs.readSync(stream.nfd, nbuffer, 0, length, position);\n          } catch (e) {\n            throw new FS.ErrnoError(ERRNO_CODES[e.code]);\n          }\n          if (res > 0) {\n            for (var i = 0; i < res; i++) {\n              buffer[offset + i] = nbuffer[i];\n            }\n          }\n          return res;\n        },write:function (stream, buffer, offset, length, position) {\n          // FIXME this is terrible.\n          var nbuffer = new Buffer(buffer.subarray(offset, offset + length));\n          var res;\n          try {\n            res = fs.writeSync(stream.nfd, nbuffer, 0, length, position);\n          } catch (e) {\n            throw new FS.ErrnoError(ERRNO_CODES[e.code]);\n          }\n          return res;\n        },llseek:function (stream, offset, whence) {\n          var position = offset;\n          if (whence === 1) {  // SEEK_CUR.\n            position += stream.position;\n          } else if (whence === 2) {  // SEEK_END.\n            if (FS.isFile(stream.node.mode)) {\n              try {\n                var stat = fs.fstatSync(stream.nfd);\n                position += stat.size;\n              } catch (e) {\n                throw new FS.ErrnoError(ERRNO_CODES[e.code]);\n              }\n            }\n          }\n  \n          if (position < 0) {\n            throw new FS.ErrnoError(ERRNO_CODES.EINVAL);\n          }\n  \n          return position;\n        }}};\n  \n  var WORKERFS={DIR_MODE:16895,FILE_MODE:33279,reader:null,mount:function (mount) {\n        assert(ENVIRONMENT_IS_WORKER);\n        if (!WORKERFS.reader) WORKERFS.reader = new FileReaderSync();\n        var root = WORKERFS.createNode(null, '/', WORKERFS.DIR_MODE, 0);\n        var createdParents = {};\n        function ensureParent(path) {\n          // return the parent node, creating subdirs as necessary\n          var parts = path.split('/');\n          var parent = root;\n          for (var i = 0; i < parts.length-1; i++) {\n            var curr = parts.slice(0, i+1).join('/');\n            if (!createdParents[curr]) {\n              createdParents[curr] = WORKERFS.createNode(parent, curr, WORKERFS.DIR_MODE, 0);\n            }\n            parent = createdParents[curr];\n          }\n          return parent;\n        }\n        function base(path) {\n          var parts = path.split('/');\n          return parts[parts.length-1];\n        }\n        // We also accept FileList here, by using Array.prototype\n        Array.prototype.forEach.call(mount.opts[\"files\"] || [], function(file) {\n          WORKERFS.createNode(ensureParent(file.name), base(file.name), WORKERFS.FILE_MODE, 0, file, file.lastModifiedDate);\n        });\n        (mount.opts[\"blobs\"] || []).forEach(function(obj) {\n          WORKERFS.createNode(ensureParent(obj[\"name\"]), base(obj[\"name\"]), WORKERFS.FILE_MODE, 0, obj[\"data\"]);\n        });\n        (mount.opts[\"packages\"] || []).forEach(function(pack) {\n          pack['metadata'].files.forEach(function(file) {\n            var name = file.filename.substr(1); // remove initial slash\n            WORKERFS.createNode(ensureParent(name), base(name), WORKERFS.FILE_MODE, 0, pack['blob'].slice(file.start, file.end));\n          });\n        });\n        return root;\n      },createNode:function (parent, name, mode, dev, contents, mtime) {\n        var node = FS.createNode(parent, name, mode);\n        node.mode = mode;\n        node.node_ops = WORKERFS.node_ops;\n        node.stream_ops = WORKERFS.stream_ops;\n        node.timestamp = (mtime || new Date).getTime();\n        assert(WORKERFS.FILE_MODE !== WORKERFS.DIR_MODE);\n        if (mode === WORKERFS.FILE_MODE) {\n          node.size = contents.size;\n          node.contents = contents;\n        } else {\n          node.size = 4096;\n          node.contents = {};\n        }\n        if (parent) {\n          parent.contents[name] = node;\n        }\n        return node;\n      },node_ops:{getattr:function (node) {\n          return {\n            dev: 1,\n            ino: undefined,\n            mode: node.mode,\n            nlink: 1,\n            uid: 0,\n            gid: 0,\n            rdev: undefined,\n            size: node.size,\n            atime: new Date(node.timestamp),\n            mtime: new Date(node.timestamp),\n            ctime: new Date(node.timestamp),\n            blksize: 4096,\n            blocks: Math.ceil(node.size / 4096),\n          };\n        },setattr:function (node, attr) {\n          if (attr.mode !== undefined) {\n            node.mode = attr.mode;\n          }\n          if (attr.timestamp !== undefined) {\n            node.timestamp = attr.timestamp;\n          }\n        },lookup:function (parent, name) {\n          throw new FS.ErrnoError(ERRNO_CODES.ENOENT);\n        },mknod:function (parent, name, mode, dev) {\n          throw new FS.ErrnoError(ERRNO_CODES.EPERM);\n        },rename:function (oldNode, newDir, newName) {\n          throw new FS.ErrnoError(ERRNO_CODES.EPERM);\n        },unlink:function (parent, name) {\n          throw new FS.ErrnoError(ERRNO_CODES.EPERM);\n        },rmdir:function (parent, name) {\n          throw new FS.ErrnoError(ERRNO_CODES.EPERM);\n        },readdir:function (node) {\n          throw new FS.ErrnoError(ERRNO_CODES.EPERM);\n        },symlink:function (parent, newName, oldPath) {\n          throw new FS.ErrnoError(ERRNO_CODES.EPERM);\n        },readlink:function (node) {\n          throw new FS.ErrnoError(ERRNO_CODES.EPERM);\n        }},stream_ops:{read:function (stream, buffer, offset, length, position) {\n          if (position >= stream.node.size) return 0;\n          var chunk = stream.node.contents.slice(position, position + length);\n          var ab = WORKERFS.reader.readAsArrayBuffer(chunk);\n          buffer.set(new Uint8Array(ab), offset);\n          return chunk.size;\n        },write:function (stream, buffer, offset, length, position) {\n          throw new FS.ErrnoError(ERRNO_CODES.EIO);\n        },llseek:function (stream, offset, whence) {\n          var position = offset;\n          if (whence === 1) {  // SEEK_CUR.\n            position += stream.position;\n          } else if (whence === 2) {  // SEEK_END.\n            if (FS.isFile(stream.node.mode)) {\n              position += stream.node.size;\n            }\n          }\n          if (position < 0) {\n            throw new FS.ErrnoError(ERRNO_CODES.EINVAL);\n          }\n          return position;\n        }}};\n  \n  var _stdin=allocate(1, \"i32*\", ALLOC_STATIC);\n  \n  var _stdout=allocate(1, \"i32*\", ALLOC_STATIC);\n  \n  var _stderr=allocate(1, \"i32*\", ALLOC_STATIC);\n  var FS={\n    root:null,mounts:[],devices:[null],streams:[],nextInode:1,nameTable:null,currentPath:\"/\",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,\n  handleFSError:function (e) {\n        if (!(e instanceof FS.ErrnoError)) throw e + ' : ' + stackTrace();\n        return ___setErrNo(e.errno);\n      },lookupPath:function (path, opts) {\n        path = PATH.resolve(FS.cwd(), path);\n        opts = opts || {};\n  \n        if (!path) return { path: '', node: null };\n  \n        var defaults = {\n          follow_mount: true,\n          recurse_count: 0\n        };\n        for (var key in defaults) {\n          if (opts[key] === undefined) {\n            opts[key] = defaults[key];\n          }\n        }\n  \n        if (opts.recurse_count > 8) {  // max recursive lookup of 8\n          throw new FS.ErrnoError(ERRNO_CODES.ELOOP);\n        }\n  \n        // split the path\n        var parts = PATH.normalizeArray(path.split('/').filter(function(p) {\n          return !!p;\n        }), false);\n  \n        // start at the root\n        var current = FS.root;\n        var current_path = '/';\n  \n        for (var i = 0; i < parts.length; i++) {\n          var islast = (i === parts.length-1);\n          if (islast && opts.parent) {\n            // stop resolving\n            break;\n          }\n  \n          current = FS.lookupNode(current, parts[i]);\n          current_path = PATH.join2(current_path, parts[i]);\n  \n          // jump to the mount's root node if this is a mountpoint\n          if (FS.isMountpoint(current)) {\n            if (!islast || (islast && opts.follow_mount)) {\n              current = current.mounted.root;\n            }\n          }\n  \n          // by default, lookupPath will not follow a symlink if it is the final path component.\n          // setting opts.follow = true will override this behavior.\n          if (!islast || opts.follow) {\n            var count = 0;\n            while (FS.isLink(current.mode)) {\n              var link = FS.readlink(current_path);\n              current_path = PATH.resolve(PATH.dirname(current_path), link);\n  \n              var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count });\n              current = lookup.node;\n  \n              if (count++ > 40) {  // limit max consecutive symlinks to 40 (SYMLOOP_MAX).\n                throw new FS.ErrnoError(ERRNO_CODES.ELOOP);\n              }\n            }\n          }\n        }\n  \n        return { path: current_path, node: current };\n      },getPath:function (node) {\n        var path;\n        while (true) {\n          if (FS.isRoot(node)) {\n            var mount = node.mount.mountpoint;\n            if (!path) return mount;\n            return mount[mount.length-1] !== '/' ? mount + '/' + path : mount + path;\n          }\n          path = path ? node.name + '/' + path : node.name;\n          node = node.parent;\n        }\n      },hashName:function (parentid, name) {\n        var hash = 0;\n  \n  \n        for (var i = 0; i < name.length; i++) {\n          hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0;\n        }\n        return ((parentid + hash) >>> 0) % FS.nameTable.length;\n      },hashAddNode:function (node) {\n        var hash = FS.hashName(node.parent.id, node.name);\n        node.name_next = FS.nameTable[hash];\n        FS.nameTable[hash] = node;\n      },hashRemoveNode:function (node) {\n        var hash = FS.hashName(node.parent.id, node.name);\n        if (FS.nameTable[hash] === node) {\n          FS.nameTable[hash] = node.name_next;\n        } else {\n          var current = FS.nameTable[hash];\n          while (current) {\n            if (current.name_next === node) {\n              current.name_next = node.name_next;\n              break;\n            }\n            current = current.name_next;\n          }\n        }\n      },lookupNode:function (parent, name) {\n        var err = FS.mayLookup(parent);\n        if (err) {\n          throw new FS.ErrnoError(err, parent);\n        }\n        var hash = FS.hashName(parent.id, name);\n        for (var node = FS.nameTable[hash]; node; node = node.name_next) {\n          var nodeName = node.name;\n          if (node.parent.id === parent.id && nodeName === name) {\n            return node;\n          }\n        }\n        // if we failed to find it in the cache, call into the VFS\n        return FS.lookup(parent, name);\n      },createNode:function (parent, name, mode, rdev) {\n        if (!FS.FSNode) {\n          FS.FSNode = function(parent, name, mode, rdev) {\n            if (!parent) {\n              parent = this;  // root node sets parent to itself\n            }\n            this.parent = parent;\n            this.mount = parent.mount;\n            this.mounted = null;\n            this.id = FS.nextInode++;\n            this.name = name;\n            this.mode = mode;\n            this.node_ops = {};\n            this.stream_ops = {};\n            this.rdev = rdev;\n          };\n  \n          FS.FSNode.prototype = {};\n  \n          // compatibility\n          var readMode = 292 | 73;\n          var writeMode = 146;\n  \n          // NOTE we must use Object.defineProperties instead of individual calls to\n          // Object.defineProperty in order to make closure compiler happy\n          Object.defineProperties(FS.FSNode.prototype, {\n            read: {\n              get: function() { return (this.mode & readMode) === readMode; },\n              set: function(val) { val ? this.mode |= readMode : this.mode &= ~readMode; }\n            },\n            write: {\n              get: function() { return (this.mode & writeMode) === writeMode; },\n              set: function(val) { val ? this.mode |= writeMode : this.mode &= ~writeMode; }\n            },\n            isFolder: {\n              get: function() { return FS.isDir(this.mode); }\n            },\n            isDevice: {\n              get: function() { return FS.isChrdev(this.mode); }\n            }\n          });\n        }\n  \n        var node = new FS.FSNode(parent, name, mode, rdev);\n  \n        FS.hashAddNode(node);\n  \n        return node;\n      },destroyNode:function (node) {\n        FS.hashRemoveNode(node);\n      },isRoot:function (node) {\n        return node === node.parent;\n      },isMountpoint:function (node) {\n        return !!node.mounted;\n      },isFile:function (mode) {\n        return (mode & 61440) === 32768;\n      },isDir:function (mode) {\n        return (mode & 61440) === 16384;\n      },isLink:function (mode) {\n        return (mode & 61440) === 40960;\n      },isChrdev:function (mode) {\n        return (mode & 61440) === 8192;\n      },isBlkdev:function (mode) {\n        return (mode & 61440) === 24576;\n      },isFIFO:function (mode) {\n        return (mode & 61440) === 4096;\n      },isSocket:function (mode) {\n        return (mode & 49152) === 49152;\n      },flagModes:{\"r\":0,\"rs\":1052672,\"r+\":2,\"w\":577,\"wx\":705,\"xw\":705,\"w+\":578,\"wx+\":706,\"xw+\":706,\"a\":1089,\"ax\":1217,\"xa\":1217,\"a+\":1090,\"ax+\":1218,\"xa+\":1218},modeStringToFlags:function (str) {\n        var flags = FS.flagModes[str];\n        if (typeof flags === 'undefined') {\n          throw new Error('Unknown file open mode: ' + str);\n        }\n        return flags;\n      },flagsToPermissionString:function (flag) {\n        var perms = ['r', 'w', 'rw'][flag & 3];\n        if ((flag & 512)) {\n          perms += 'w';\n        }\n        return perms;\n      },nodePermissions:function (node, perms) {\n        if (FS.ignorePermissions) {\n          return 0;\n        }\n        // return 0 if any user, group or owner bits are set.\n        if (perms.indexOf('r') !== -1 && !(node.mode & 292)) {\n          return ERRNO_CODES.EACCES;\n        } else if (perms.indexOf('w') !== -1 && !(node.mode & 146)) {\n          return ERRNO_CODES.EACCES;\n        } else if (perms.indexOf('x') !== -1 && !(node.mode & 73)) {\n          return ERRNO_CODES.EACCES;\n        }\n        return 0;\n      },mayLookup:function (dir) {\n        var err = FS.nodePermissions(dir, 'x');\n        if (err) return err;\n        if (!dir.node_ops.lookup) return ERRNO_CODES.EACCES;\n        return 0;\n      },mayCreate:function (dir, name) {\n        try {\n          var node = FS.lookupNode(dir, name);\n          return ERRNO_CODES.EEXIST;\n        } catch (e) {\n        }\n        return FS.nodePermissions(dir, 'wx');\n      },mayDelete:function (dir, name, isdir) {\n        var node;\n        try {\n          node = FS.lookupNode(dir, name);\n        } catch (e) {\n          return e.errno;\n        }\n        var err = FS.nodePermissions(dir, 'wx');\n        if (err) {\n          return err;\n        }\n        if (isdir) {\n          if (!FS.isDir(node.mode)) {\n            return ERRNO_CODES.ENOTDIR;\n          }\n          if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {\n            return ERRNO_CODES.EBUSY;\n          }\n        } else {\n          if (FS.isDir(node.mode)) {\n            return ERRNO_CODES.EISDIR;\n          }\n        }\n        return 0;\n      },mayOpen:function (node, flags) {\n        if (!node) {\n          return ERRNO_CODES.ENOENT;\n        }\n        if (FS.isLink(node.mode)) {\n          return ERRNO_CODES.ELOOP;\n        } else if (FS.isDir(node.mode)) {\n          if ((flags & 2097155) !== 0 ||  // opening for write\n              (flags & 512)) {\n            return ERRNO_CODES.EISDIR;\n          }\n        }\n        return FS.nodePermissions(node, FS.flagsToPermissionString(flags));\n      },MAX_OPEN_FDS:4096,nextfd:function (fd_start, fd_end) {\n        fd_start = fd_start || 0;\n        fd_end = fd_end || FS.MAX_OPEN_FDS;\n        for (var fd = fd_start; fd <= fd_end; fd++) {\n          if (!FS.streams[fd]) {\n            return fd;\n          }\n        }\n        throw new FS.ErrnoError(ERRNO_CODES.EMFILE);\n      },getStream:function (fd) {\n        return FS.streams[fd];\n      },createStream:function (stream, fd_start, fd_end) {\n        if (!FS.FSStream) {\n          FS.FSStream = function(){};\n          FS.FSStream.prototype = {};\n          // compatibility\n          Object.defineProperties(FS.FSStream.prototype, {\n            object: {\n              get: function() { return this.node; },\n              set: function(val) { this.node = val; }\n            },\n            isRead: {\n              get: function() { return (this.flags & 2097155) !== 1; }\n            },\n            isWrite: {\n              get: function() { return (this.flags & 2097155) !== 0; }\n            },\n            isAppend: {\n              get: function() { return (this.flags & 1024); }\n            }\n          });\n        }\n        // clone it, so we can return an instance of FSStream\n        var newStream = new FS.FSStream();\n        for (var p in stream) {\n          newStream[p] = stream[p];\n        }\n        stream = newStream;\n        var fd = FS.nextfd(fd_start, fd_end);\n        stream.fd = fd;\n        FS.streams[fd] = stream;\n        return stream;\n      },closeStream:function (fd) {\n        FS.streams[fd] = null;\n      },chrdev_stream_ops:{open:function (stream) {\n          var device = FS.getDevice(stream.node.rdev);\n          // override node's stream ops with the device's\n          stream.stream_ops = device.stream_ops;\n          // forward the open call\n          if (stream.stream_ops.open) {\n            stream.stream_ops.open(stream);\n          }\n        },llseek:function () {\n          throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);\n        }},major:function (dev) {\n        return ((dev) >> 8);\n      },minor:function (dev) {\n        return ((dev) & 0xff);\n      },makedev:function (ma, mi) {\n        return ((ma) << 8 | (mi));\n      },registerDevice:function (dev, ops) {\n        FS.devices[dev] = { stream_ops: ops };\n      },getDevice:function (dev) {\n        return FS.devices[dev];\n      },getMounts:function (mount) {\n        var mounts = [];\n        var check = [mount];\n  \n        while (check.length) {\n          var m = check.pop();\n  \n          mounts.push(m);\n  \n          check.push.apply(check, m.mounts);\n        }\n  \n        return mounts;\n      },syncfs:function (populate, callback) {\n        if (typeof(populate) === 'function') {\n          callback = populate;\n          populate = false;\n        }\n  \n        var mounts = FS.getMounts(FS.root.mount);\n        var completed = 0;\n  \n        function done(err) {\n          if (err) {\n            if (!done.errored) {\n              done.errored = true;\n              return callback(err);\n            }\n            return;\n          }\n          if (++completed >= mounts.length) {\n            callback(null);\n          }\n        };\n  \n        // sync all mounts\n        mounts.forEach(function (mount) {\n          if (!mount.type.syncfs) {\n            return done(null);\n          }\n          mount.type.syncfs(mount, populate, done);\n        });\n      },mount:function (type, opts, mountpoint) {\n        var root = mountpoint === '/';\n        var pseudo = !mountpoint;\n        var node;\n  \n        if (root && FS.root) {\n          throw new FS.ErrnoError(ERRNO_CODES.EBUSY);\n        } else if (!root && !pseudo) {\n          var lookup = FS.lookupPath(mountpoint, { follow_mount: false });\n  \n          mountpoint = lookup.path;  // use the absolute path\n          node = lookup.node;\n  \n          if (FS.isMountpoint(node)) {\n            throw new FS.ErrnoError(ERRNO_CODES.EBUSY);\n          }\n  \n          if (!FS.isDir(node.mode)) {\n            throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);\n          }\n        }\n  \n        var mount = {\n          type: type,\n          opts: opts,\n          mountpoint: mountpoint,\n          mounts: []\n        };\n  \n        // create a root node for the fs\n        var mountRoot = type.mount(mount);\n        mountRoot.mount = mount;\n        mount.root = mountRoot;\n  \n        if (root) {\n          FS.root = mountRoot;\n        } else if (node) {\n          // set as a mountpoint\n          node.mounted = mount;\n  \n          // add the new mount to the current mount's children\n          if (node.mount) {\n            node.mount.mounts.push(mount);\n          }\n        }\n  \n        return mountRoot;\n      },unmount:function (mountpoint) {\n        var lookup = FS.lookupPath(mountpoint, { follow_mount: false });\n  \n        if (!FS.isMountpoint(lookup.node)) {\n          throw new FS.ErrnoError(ERRNO_CODES.EINVAL);\n        }\n  \n        // destroy the nodes for this mount, and all its child mounts\n        var node = lookup.node;\n        var mount = node.mounted;\n        var mounts = FS.getMounts(mount);\n  \n        Object.keys(FS.nameTable).forEach(function (hash) {\n          var current = FS.nameTable[hash];\n  \n          while (current) {\n            var next = current.name_next;\n  \n            if (mounts.indexOf(current.mount) !== -1) {\n              FS.destroyNode(current);\n            }\n  \n            current = next;\n          }\n        });\n  \n        // no longer a mountpoint\n        node.mounted = null;\n  \n        // remove this mount from the child mounts\n        var idx = node.mount.mounts.indexOf(mount);\n        assert(idx !== -1);\n        node.mount.mounts.splice(idx, 1);\n      },lookup:function (parent, name) {\n        return parent.node_ops.lookup(parent, name);\n      },mknod:function (path, mode, dev) {\n        var lookup = FS.lookupPath(path, { parent: true });\n        var parent = lookup.node;\n        var name = PATH.basename(path);\n        if (!name || name === '.' || name === '..') {\n          throw new FS.ErrnoError(ERRNO_CODES.EINVAL);\n        }\n        var err = FS.mayCreate(parent, name);\n        if (err) {\n          throw new FS.ErrnoError(err);\n        }\n        if (!parent.node_ops.mknod) {\n          throw new FS.ErrnoError(ERRNO_CODES.EPERM);\n        }\n        return parent.node_ops.mknod(parent, name, mode, dev);\n      },create:function (path, mode) {\n        mode = mode !== undefined ? mode : 438 /* 0666 */;\n        mode &= 4095;\n        mode |= 32768;\n        return FS.mknod(path, mode, 0);\n      },mkdir:function (path, mode) {\n        mode = mode !== undefined ? mode : 511 /* 0777 */;\n        mode &= 511 | 512;\n        mode |= 16384;\n        return FS.mknod(path, mode, 0);\n      },mkdev:function (path, mode, dev) {\n        if (typeof(dev) === 'undefined') {\n          dev = mode;\n          mode = 438 /* 0666 */;\n        }\n        mode |= 8192;\n        return FS.mknod(path, mode, dev);\n      },symlink:function (oldpath, newpath) {\n        if (!PATH.resolve(oldpath)) {\n          throw new FS.ErrnoError(ERRNO_CODES.ENOENT);\n        }\n        var lookup = FS.lookupPath(newpath, { parent: true });\n        var parent = lookup.node;\n        if (!parent) {\n          throw new FS.ErrnoError(ERRNO_CODES.ENOENT);\n        }\n        var newname = PATH.basename(newpath);\n        var err = FS.mayCreate(parent, newname);\n        if (err) {\n          throw new FS.ErrnoError(err);\n        }\n        if (!parent.node_ops.symlink) {\n          throw new FS.ErrnoError(ERRNO_CODES.EPERM);\n        }\n        return parent.node_ops.symlink(parent, newname, oldpath);\n      },rename:function (old_path, new_path) {\n        var old_dirname = PATH.dirname(old_path);\n        var new_dirname = PATH.dirname(new_path);\n        var old_name = PATH.basename(old_path);\n        var new_name = PATH.basename(new_path);\n        // parents must exist\n        var lookup, old_dir, new_dir;\n        try {\n          lookup = FS.lookupPath(old_path, { parent: true });\n          old_dir = lookup.node;\n          lookup = FS.lookupPath(new_path, { parent: true });\n          new_dir = lookup.node;\n        } catch (e) {\n          throw new FS.ErrnoError(ERRNO_CODES.EBUSY);\n        }\n        if (!old_dir || !new_dir) throw new FS.ErrnoError(ERRNO_CODES.ENOENT);\n        // need to be part of the same mount\n        if (old_dir.mount !== new_dir.mount) {\n          throw new FS.ErrnoError(ERRNO_CODES.EXDEV);\n        }\n        // source must exist\n        var old_node = FS.lookupNode(old_dir, old_name);\n        // old path should not be an ancestor of the new path\n        var relative = PATH.relative(old_path, new_dirname);\n        if (relative.charAt(0) !== '.') {\n          throw new FS.ErrnoError(ERRNO_CODES.EINVAL);\n        }\n        // new path should not be an ancestor of the old path\n        relative = PATH.relative(new_path, old_dirname);\n        if (relative.charAt(0) !== '.') {\n          throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);\n        }\n        // see if the new path already exists\n        var new_node;\n        try {\n          new_node = FS.lookupNode(new_dir, new_name);\n        } catch (e) {\n          // not fatal\n        }\n        // early out if nothing needs to change\n        if (old_node === new_node) {\n          return;\n        }\n        // we'll need to delete the old entry\n        var isdir = FS.isDir(old_node.mode);\n        var err = FS.mayDelete(old_dir, old_name, isdir);\n        if (err) {\n          throw new FS.ErrnoError(err);\n        }\n        // need delete permissions if we'll be overwriting.\n        // need create permissions if new doesn't already exist.\n        err = new_node ?\n          FS.mayDelete(new_dir, new_name, isdir) :\n          FS.mayCreate(new_dir, new_name);\n        if (err) {\n          throw new FS.ErrnoError(err);\n        }\n        if (!old_dir.node_ops.rename) {\n          throw new FS.ErrnoError(ERRNO_CODES.EPERM);\n        }\n        if (FS.isMountpoint(old_node) || (new_node && FS.isMountpoint(new_node))) {\n          throw new FS.ErrnoError(ERRNO_CODES.EBUSY);\n        }\n        // if we are going to change the parent, check write permissions\n        if (new_dir !== old_dir) {\n          err = FS.nodePermissions(old_dir, 'w');\n          if (err) {\n            throw new FS.ErrnoError(err);\n          }\n        }\n        try {\n          if (FS.trackingDelegate['willMovePath']) {\n            FS.trackingDelegate['willMovePath'](old_path, new_path);\n          }\n        } catch(e) {\n          console.log(\"FS.trackingDelegate['willMovePath']('\"+old_path+\"', '\"+new_path+\"') threw an exception: \" + e.message);\n        }\n        // remove the node from the lookup hash\n        FS.hashRemoveNode(old_node);\n        // do the underlying fs rename\n        try {\n          old_dir.node_ops.rename(old_node, new_dir, new_name);\n        } catch (e) {\n          throw e;\n        } finally {\n          // add the node back to the hash (in case node_ops.rename\n          // changed its name)\n          FS.hashAddNode(old_node);\n        }\n        try {\n          if (FS.trackingDelegate['onMovePath']) FS.trackingDelegate['onMovePath'](old_path, new_path);\n        } catch(e) {\n          console.log(\"FS.trackingDelegate['onMovePath']('\"+old_path+\"', '\"+new_path+\"') threw an exception: \" + e.message);\n        }\n      },rmdir:function (path) {\n        var lookup = FS.lookupPath(path, { parent: true });\n        var parent = lookup.node;\n        var name = PATH.basename(path);\n        var node = FS.lookupNode(parent, name);\n        var err = FS.mayDelete(parent, name, true);\n        if (err) {\n          throw new FS.ErrnoError(err);\n        }\n        if (!parent.node_ops.rmdir) {\n          throw new FS.ErrnoError(ERRNO_CODES.EPERM);\n        }\n        if (FS.isMountpoint(node)) {\n          throw new FS.ErrnoError(ERRNO_CODES.EBUSY);\n        }\n        try {\n          if (FS.trackingDelegate['willDeletePath']) {\n            FS.trackingDelegate['willDeletePath'](path);\n          }\n        } catch(e) {\n          console.log(\"FS.trackingDelegate['willDeletePath']('\"+path+\"') threw an exception: \" + e.message);\n        }\n        parent.node_ops.rmdir(parent, name);\n        FS.destroyNode(node);\n        try {\n          if (FS.trackingDelegate['onDeletePath']) FS.trackingDelegate['onDeletePath'](path);\n        } catch(e) {\n          console.log(\"FS.trackingDelegate['onDeletePath']('\"+path+\"') threw an exception: \" + e.message);\n        }\n      },readdir:function (path) {\n        var lookup = FS.lookupPath(path, { follow: true });\n        var node = lookup.node;\n        if (!node.node_ops.readdir) {\n          throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);\n        }\n        return node.node_ops.readdir(node);\n      },unlink:function (path) {\n        var lookup = FS.lookupPath(path, { parent: true });\n        var parent = lookup.node;\n        var name = PATH.basename(path);\n        var node = FS.lookupNode(parent, name);\n        var err = FS.mayDelete(parent, name, false);\n        if (err) {\n          // POSIX says unlink should set EPERM, not EISDIR\n          if (err === ERRNO_CODES.EISDIR) err = ERRNO_CODES.EPERM;\n          throw new FS.ErrnoError(err);\n        }\n        if (!parent.node_ops.unlink) {\n          throw new FS.ErrnoError(ERRNO_CODES.EPERM);\n        }\n        if (FS.isMountpoint(node)) {\n          throw new FS.ErrnoError(ERRNO_CODES.EBUSY);\n        }\n        try {\n          if (FS.trackingDelegate['willDeletePath']) {\n            FS.trackingDelegate['willDeletePath'](path);\n          }\n        } catch(e) {\n          console.log(\"FS.trackingDelegate['willDeletePath']('\"+path+\"') threw an exception: \" + e.message);\n        }\n        parent.node_ops.unlink(parent, name);\n        FS.destroyNode(node);\n        try {\n          if (FS.trackingDelegate['onDeletePath']) FS.trackingDelegate['onDeletePath'](path);\n        } catch(e) {\n          console.log(\"FS.trackingDelegate['onDeletePath']('\"+path+\"') threw an exception: \" + e.message);\n        }\n      },readlink:function (path) {\n        var lookup = FS.lookupPath(path);\n        var link = lookup.node;\n        if (!link) {\n          throw new FS.ErrnoError(ERRNO_CODES.ENOENT);\n        }\n        if (!link.node_ops.readlink) {\n          throw new FS.ErrnoError(ERRNO_CODES.EINVAL);\n        }\n        return PATH.resolve(FS.getPath(link.parent), link.node_ops.readlink(link));\n      },stat:function (path, dontFollow) {\n        var lookup = FS.lookupPath(path, { follow: !dontFollow });\n        var node = lookup.node;\n        if (!node) {\n          throw new FS.ErrnoError(ERRNO_CODES.ENOENT);\n        }\n        if (!node.node_ops.getattr) {\n          throw new FS.ErrnoError(ERRNO_CODES.EPERM);\n        }\n        return node.node_ops.getattr(node);\n      },lstat:function (path) {\n        return FS.stat(path, true);\n      },chmod:function (path, mode, dontFollow) {\n        var node;\n        if (typeof path === 'string') {\n          var lookup = FS.lookupPath(path, { follow: !dontFollow });\n          node = lookup.node;\n        } else {\n          node = path;\n        }\n        if (!node.node_ops.setattr) {\n          throw new FS.ErrnoError(ERRNO_CODES.EPERM);\n        }\n        node.node_ops.setattr(node, {\n          mode: (mode & 4095) | (node.mode & ~4095),\n          timestamp: Date.now()\n        });\n      },lchmod:function (path, mode) {\n        FS.chmod(path, mode, true);\n      },fchmod:function (fd, mode) {\n        var stream = FS.getStream(fd);\n        if (!stream) {\n          throw new FS.ErrnoError(ERRNO_CODES.EBADF);\n        }\n        FS.chmod(stream.node, mode);\n      },chown:function (path, uid, gid, dontFollow) {\n        var node;\n        if (typeof path === 'string') {\n          var lookup = FS.lookupPath(path, { follow: !dontFollow });\n          node = lookup.node;\n        } else {\n          node = path;\n        }\n        if (!node.node_ops.setattr) {\n          throw new FS.ErrnoError(ERRNO_CODES.EPERM);\n        }\n        node.node_ops.setattr(node, {\n          timestamp: Date.now()\n          // we ignore the uid / gid for now\n        });\n      },lchown:function (path, uid, gid) {\n        FS.chown(path, uid, gid, true);\n      },fchown:function (fd, uid, gid) {\n        var stream = FS.getStream(fd);\n        if (!stream) {\n          throw new FS.ErrnoError(ERRNO_CODES.EBADF);\n        }\n        FS.chown(stream.node, uid, gid);\n      },truncate:function (path, len) {\n        if (len < 0) {\n          throw new FS.ErrnoError(ERRNO_CODES.EINVAL);\n        }\n        var node;\n        if (typeof path === 'string') {\n          var lookup = FS.lookupPath(path, { follow: true });\n          node = lookup.node;\n        } else {\n          node = path;\n        }\n        if (!node.node_ops.setattr) {\n          throw new FS.ErrnoError(ERRNO_CODES.EPERM);\n        }\n        if (FS.isDir(node.mode)) {\n          throw new FS.ErrnoError(ERRNO_CODES.EISDIR);\n        }\n        if (!FS.isFile(node.mode)) {\n          throw new FS.ErrnoError(ERRNO_CODES.EINVAL);\n        }\n        var err = FS.nodePermissions(node, 'w');\n        if (err) {\n          throw new FS.ErrnoError(err);\n        }\n        node.node_ops.setattr(node, {\n          size: len,\n          timestamp: Date.now()\n        });\n      },ftruncate:function (fd, len) {\n        var stream = FS.getStream(fd);\n        if (!stream) {\n          throw new FS.ErrnoError(ERRNO_CODES.EBADF);\n        }\n        if ((stream.flags & 2097155) === 0) {\n          throw new FS.ErrnoError(ERRNO_CODES.EINVAL);\n        }\n        FS.truncate(stream.node, len);\n      },utime:function (path, atime, mtime) {\n        var lookup = FS.lookupPath(path, { follow: true });\n        var node = lookup.node;\n        node.node_ops.setattr(node, {\n          timestamp: Math.max(atime, mtime)\n        });\n      },open:function (path, flags, mode, fd_start, fd_end) {\n        if (path === \"\") {\n          throw new FS.ErrnoError(ERRNO_CODES.ENOENT);\n        }\n        flags = typeof flags === 'string' ? FS.modeStringToFlags(flags) : flags;\n        mode = typeof mode === 'undefined' ? 438 /* 0666 */ : mode;\n        if ((flags & 64)) {\n          mode = (mode & 4095) | 32768;\n        } else {\n          mode = 0;\n        }\n        var node;\n        if (typeof path === 'object') {\n          node = path;\n        } else {\n          path = PATH.normalize(path);\n          try {\n            var lookup = FS.lookupPath(path, {\n              follow: !(flags & 131072)\n            });\n            node = lookup.node;\n          } catch (e) {\n            // ignore\n          }\n        }\n        // perhaps we need to create the node\n        var created = false;\n        if ((flags & 64)) {\n          if (node) {\n            // if O_CREAT and O_EXCL are set, error out if the node already exists\n            if ((flags & 128)) {\n              throw new FS.ErrnoError(ERRNO_CODES.EEXIST);\n            }\n          } else {\n            // node doesn't exist, try to create it\n            node = FS.mknod(path, mode, 0);\n            created = true;\n          }\n        }\n        if (!node) {\n          throw new FS.ErrnoError(ERRNO_CODES.ENOENT);\n        }\n        // can't truncate a device\n        if (FS.isChrdev(node.mode)) {\n          flags &= ~512;\n        }\n        // if asked only for a directory, then this must be one\n        if ((flags & 65536) && !FS.isDir(node.mode)) {\n          throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);\n        }\n        // check permissions, if this is not a file we just created now (it is ok to\n        // create and write to a file with read-only permissions; it is read-only\n        // for later use)\n        if (!created) {\n          var err = FS.mayOpen(node, flags);\n          if (err) {\n            throw new FS.ErrnoError(err);\n          }\n        }\n        // do truncation if necessary\n        if ((flags & 512)) {\n          FS.truncate(node, 0);\n        }\n        // we've already handled these, don't pass down to the underlying vfs\n        flags &= ~(128 | 512);\n  \n        // register the stream with the filesystem\n        var stream = FS.createStream({\n          node: node,\n          path: FS.getPath(node),  // we want the absolute path to the node\n          flags: flags,\n          seekable: true,\n          position: 0,\n          stream_ops: node.stream_ops,\n          // used by the file family libc calls (fopen, fwrite, ferror, etc.)\n          ungotten: [],\n          error: false\n        }, fd_start, fd_end);\n        // call the new stream's open function\n        if (stream.stream_ops.open) {\n          stream.stream_ops.open(stream);\n        }\n        if (Module['logReadFiles'] && !(flags & 1)) {\n          if (!FS.readFiles) FS.readFiles = {};\n          if (!(path in FS.readFiles)) {\n            FS.readFiles[path] = 1;\n            Module['printErr']('read file: ' + path);\n          }\n        }\n        try {\n          if (FS.trackingDelegate['onOpenFile']) {\n            var trackingFlags = 0;\n            if ((flags & 2097155) !== 1) {\n              trackingFlags |= FS.tracking.openFlags.READ;\n            }\n            if ((flags & 2097155) !== 0) {\n              trackingFlags |= FS.tracking.openFlags.WRITE;\n            }\n            FS.trackingDelegate['onOpenFile'](path, trackingFlags);\n          }\n        } catch(e) {\n          console.log(\"FS.trackingDelegate['onOpenFile']('\"+path+\"', flags) threw an exception: \" + e.message);\n        }\n        return stream;\n      },close:function (stream) {\n        if (stream.getdents) stream.getdents = null; // free readdir state\n        try {\n          if (stream.stream_ops.close) {\n            stream.stream_ops.close(stream);\n          }\n        } catch (e) {\n          throw e;\n        } finally {\n          FS.closeStream(stream.fd);\n        }\n      },llseek:function (stream, offset, whence) {\n        if (!stream.seekable || !stream.stream_ops.llseek) {\n          throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);\n        }\n        stream.position = stream.stream_ops.llseek(stream, offset, whence);\n        stream.ungotten = [];\n        return stream.position;\n      },read:function (stream, buffer, offset, length, position) {\n        if (length < 0 || position < 0) {\n          throw new FS.ErrnoError(ERRNO_CODES.EINVAL);\n        }\n        if ((stream.flags & 2097155) === 1) {\n          throw new FS.ErrnoError(ERRNO_CODES.EBADF);\n        }\n        if (FS.isDir(stream.node.mode)) {\n          throw new FS.ErrnoError(ERRNO_CODES.EISDIR);\n        }\n        if (!stream.stream_ops.read) {\n          throw new FS.ErrnoError(ERRNO_CODES.EINVAL);\n        }\n        var seeking = true;\n        if (typeof position === 'undefined') {\n          position = stream.position;\n          seeking = false;\n        } else if (!stream.seekable) {\n          throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);\n        }\n        var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);\n        if (!seeking) stream.position += bytesRead;\n        return bytesRead;\n      },write:function (stream, buffer, offset, length, position, canOwn) {\n        if (length < 0 || position < 0) {\n          throw new FS.ErrnoError(ERRNO_CODES.EINVAL);\n        }\n        if ((stream.flags & 2097155) === 0) {\n          throw new FS.ErrnoError(ERRNO_CODES.EBADF);\n        }\n        if (FS.isDir(stream.node.mode)) {\n          throw new FS.ErrnoError(ERRNO_CODES.EISDIR);\n        }\n        if (!stream.stream_ops.write) {\n          throw new FS.ErrnoError(ERRNO_CODES.EINVAL);\n        }\n        if (stream.flags & 1024) {\n          // seek to the end before writing in append mode\n          FS.llseek(stream, 0, 2);\n        }\n        var seeking = true;\n        if (typeof position === 'undefined') {\n          position = stream.position;\n          seeking = false;\n        } else if (!stream.seekable) {\n          throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);\n        }\n        var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);\n        if (!seeking) stream.position += bytesWritten;\n        try {\n          if (stream.path && FS.trackingDelegate['onWriteToFile']) FS.trackingDelegate['onWriteToFile'](stream.path);\n        } catch(e) {\n          console.log(\"FS.trackingDelegate['onWriteToFile']('\"+path+\"') threw an exception: \" + e.message);\n        }\n        return bytesWritten;\n      },allocate:function (stream, offset, length) {\n        if (offset < 0 || length <= 0) {\n          throw new FS.ErrnoError(ERRNO_CODES.EINVAL);\n        }\n        if ((stream.flags & 2097155) === 0) {\n          throw new FS.ErrnoError(ERRNO_CODES.EBADF);\n        }\n        if (!FS.isFile(stream.node.mode) && !FS.isDir(node.mode)) {\n          throw new FS.ErrnoError(ERRNO_CODES.ENODEV);\n        }\n        if (!stream.stream_ops.allocate) {\n          throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP);\n        }\n        stream.stream_ops.allocate(stream, offset, length);\n      },mmap:function (stream, buffer, offset, length, position, prot, flags) {\n        // TODO if PROT is PROT_WRITE, make sure we have write access\n        if ((stream.flags & 2097155) === 1) {\n          throw new FS.ErrnoError(ERRNO_CODES.EACCES);\n        }\n        if (!stream.stream_ops.mmap) {\n          throw new FS.ErrnoError(ERRNO_CODES.ENODEV);\n        }\n        return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags);\n      },msync:function (stream, buffer, offset, length, mmapFlags) {\n        if (!stream || !stream.stream_ops.msync) {\n          return 0;\n        }\n        return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);\n      },munmap:function (stream) {\n        return 0;\n      },ioctl:function (stream, cmd, arg) {\n        if (!stream.stream_ops.ioctl) {\n          throw new FS.ErrnoError(ERRNO_CODES.ENOTTY);\n        }\n        return stream.stream_ops.ioctl(stream, cmd, arg);\n      },readFile:function (path, opts) {\n        opts = opts || {};\n        opts.flags = opts.flags || 'r';\n        opts.encoding = opts.encoding || 'binary';\n        if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') {\n          throw new Error('Invalid encoding type \"' + opts.encoding + '\"');\n        }\n        var ret;\n        var stream = FS.open(path, opts.flags);\n        var stat = FS.stat(path);\n        var length = stat.size;\n        var buf = new Uint8Array(length);\n        FS.read(stream, buf, 0, length, 0);\n        if (opts.encoding === 'utf8') {\n          ret = UTF8ArrayToString(buf, 0);\n        } else if (opts.encoding === 'binary') {\n          ret = buf;\n        }\n        FS.close(stream);\n        return ret;\n      },writeFile:function (path, data, opts) {\n        opts = opts || {};\n        opts.flags = opts.flags || 'w';\n        opts.encoding = opts.encoding || 'utf8';\n        if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') {\n          throw new Error('Invalid encoding type \"' + opts.encoding + '\"');\n        }\n        var stream = FS.open(path, opts.flags, opts.mode);\n        if (opts.encoding === 'utf8') {\n          var buf = new Uint8Array(lengthBytesUTF8(data)+1);\n          var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);\n          FS.write(stream, buf, 0, actualNumBytes, 0, opts.canOwn);\n        } else if (opts.encoding === 'binary') {\n          FS.write(stream, data, 0, data.length, 0, opts.canOwn);\n        }\n        FS.close(stream);\n      },cwd:function () {\n        return FS.currentPath;\n      },chdir:function (path) {\n        var lookup = FS.lookupPath(path, { follow: true });\n        if (!FS.isDir(lookup.node.mode)) {\n          throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);\n        }\n        var err = FS.nodePermissions(lookup.node, 'x');\n        if (err) {\n          throw new FS.ErrnoError(err);\n        }\n        FS.currentPath = lookup.path;\n      },createDefaultDirectories:function () {\n        FS.mkdir('/tmp');\n        FS.mkdir('/home');\n        FS.mkdir('/home/web_user');\n      },createDefaultDevices:function () {\n        // create /dev\n        FS.mkdir('/dev');\n        // setup /dev/null\n        FS.registerDevice(FS.makedev(1, 3), {\n          read: function() { return 0; },\n          write: function(stream, buffer, offset, length, pos) { return length; }\n        });\n        FS.mkdev('/dev/null', FS.makedev(1, 3));\n        // setup /dev/tty and /dev/tty1\n        // stderr needs to print output using Module['printErr']\n        // so we register a second tty just for it.\n        TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);\n        TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);\n        FS.mkdev('/dev/tty', FS.makedev(5, 0));\n        FS.mkdev('/dev/tty1', FS.makedev(6, 0));\n        // setup /dev/[u]random\n        var random_device;\n        if (typeof crypto !== 'undefined') {\n          // for modern web browsers\n          var randomBuffer = new Uint8Array(1);\n          random_device = function() { crypto.getRandomValues(randomBuffer); return randomBuffer[0]; };\n        } else if (ENVIRONMENT_IS_NODE) {\n          // for nodejs\n          random_device = function() { return require('crypto').randomBytes(1)[0]; };\n        } else {\n          // default for ES5 platforms\n          random_device = function() { return (Math.random()*256)|0; };\n        }\n        FS.createDevice('/dev', 'random', random_device);\n        FS.createDevice('/dev', 'urandom', random_device);\n        // we're not going to emulate the actual shm device,\n        // just create the tmp dirs that reside in it commonly\n        FS.mkdir('/dev/shm');\n        FS.mkdir('/dev/shm/tmp');\n      },createSpecialDirectories:function () {\n        // create /proc/self/fd which allows /proc/self/fd/6 => readlink gives the name of the stream for fd 6 (see test_unistd_ttyname)\n        FS.mkdir('/proc');\n        FS.mkdir('/proc/self');\n        FS.mkdir('/proc/self/fd');\n        FS.mount({\n          mount: function() {\n            var node = FS.createNode('/proc/self', 'fd', 16384 | 0777, 73);\n            node.node_ops = {\n              lookup: function(parent, name) {\n                var fd = +name;\n                var stream = FS.getStream(fd);\n                if (!stream) throw new FS.ErrnoError(ERRNO_CODES.EBADF);\n                var ret = {\n                  parent: null,\n                  mount: { mountpoint: 'fake' },\n                  node_ops: { readlink: function() { return stream.path } }\n                };\n                ret.parent = ret; // make it look like a simple root node\n                return ret;\n              }\n            };\n            return node;\n          }\n        }, {}, '/proc/self/fd');\n      },createStandardStreams:function () {\n        // TODO deprecate the old functionality of a single\n        // input / output callback and that utilizes FS.createDevice\n        // and instead require a unique set of stream ops\n  \n        // by default, we symlink the standard streams to the\n        // default tty devices. however, if the standard streams\n        // have been overwritten we create a unique device for\n        // them instead.\n        if (Module['stdin']) {\n          FS.createDevice('/dev', 'stdin', Module['stdin']);\n        } else {\n          FS.symlink('/dev/tty', '/dev/stdin');\n        }\n        if (Module['stdout']) {\n          FS.createDevice('/dev', 'stdout', null, Module['stdout']);\n        } else {\n          FS.symlink('/dev/tty', '/dev/stdout');\n        }\n        if (Module['stderr']) {\n          FS.createDevice('/dev', 'stderr', null, Module['stderr']);\n        } else {\n          FS.symlink('/dev/tty1', '/dev/stderr');\n        }\n  \n        // open default streams for the stdin, stdout and stderr devices\n        var stdin = FS.open('/dev/stdin', 'r');\n        assert(stdin.fd === 0, 'invalid handle for stdin (' + stdin.fd + ')');\n  \n        var stdout = FS.open('/dev/stdout', 'w');\n        assert(stdout.fd === 1, 'invalid handle for stdout (' + stdout.fd + ')');\n  \n        var stderr = FS.open('/dev/stderr', 'w');\n        assert(stderr.fd === 2, 'invalid handle for stderr (' + stderr.fd + ')');\n      },ensureErrnoError:function () {\n        if (FS.ErrnoError) return;\n        FS.ErrnoError = function ErrnoError(errno, node) {\n          //Module.printErr(stackTrace()); // useful for debugging\n          this.node = node;\n          this.setErrno = function(errno) {\n            this.errno = errno;\n            for (var key in ERRNO_CODES) {\n              if (ERRNO_CODES[key] === errno) {\n                this.code = key;\n                break;\n              }\n            }\n          };\n          this.setErrno(errno);\n          this.message = ERRNO_MESSAGES[errno];\n          if (this.stack) this.stack = demangleAll(this.stack);\n        };\n        FS.ErrnoError.prototype = new Error();\n        FS.ErrnoError.prototype.constructor = FS.ErrnoError;\n        // Some errors may happen quite a bit, to avoid overhead we reuse them (and suffer a lack of stack info)\n        [ERRNO_CODES.ENOENT].forEach(function(code) {\n          FS.genericErrors[code] = new FS.ErrnoError(code);\n          FS.genericErrors[code].stack = '<generic error, no stack>';\n        });\n      },staticInit:function () {\n        FS.ensureErrnoError();\n  \n        FS.nameTable = new Array(4096);\n  \n        FS.mount(MEMFS, {}, '/');\n  \n        FS.createDefaultDirectories();\n        FS.createDefaultDevices();\n        FS.createSpecialDirectories();\n  \n        FS.filesystems = {\n          'MEMFS': MEMFS,\n          'IDBFS': IDBFS,\n          'NODEFS': NODEFS,\n          'WORKERFS': WORKERFS,\n        };\n      },init:function (input, output, error) {\n        assert(!FS.init.initialized, 'FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)');\n        FS.init.initialized = true;\n  \n        FS.ensureErrnoError();\n  \n        // Allow Module.stdin etc. to provide defaults, if none explicitly passed to us here\n        Module['stdin'] = input || Module['stdin'];\n        Module['stdout'] = output || Module['stdout'];\n        Module['stderr'] = error || Module['stderr'];\n  \n        FS.createStandardStreams();\n      },quit:function () {\n        FS.init.initialized = false;\n        // force-flush all streams, so we get musl std streams printed out\n        var fflush = Module['_fflush'];\n        if (fflush) fflush(0);\n        // close all of our streams\n        for (var i = 0; i < FS.streams.length; i++) {\n          var stream = FS.streams[i];\n          if (!stream) {\n            continue;\n          }\n          FS.close(stream);\n        }\n      },getMode:function (canRead, canWrite) {\n        var mode = 0;\n        if (canRead) mode |= 292 | 73;\n        if (canWrite) mode |= 146;\n        return mode;\n      },joinPath:function (parts, forceRelative) {\n        var path = PATH.join.apply(null, parts);\n        if (forceRelative && path[0] == '/') path = path.substr(1);\n        return path;\n      },absolutePath:function (relative, base) {\n        return PATH.resolve(base, relative);\n      },standardizePath:function (path) {\n        return PATH.normalize(path);\n      },findObject:function (path, dontResolveLastLink) {\n        var ret = FS.analyzePath(path, dontResolveLastLink);\n        if (ret.exists) {\n          return ret.object;\n        } else {\n          ___setErrNo(ret.error);\n          return null;\n        }\n      },analyzePath:function (path, dontResolveLastLink) {\n        // operate from within the context of the symlink's target\n        try {\n          var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });\n          path = lookup.path;\n        } catch (e) {\n        }\n        var ret = {\n          isRoot: false, exists: false, error: 0, name: null, path: null, object: null,\n          parentExists: false, parentPath: null, parentObject: null\n        };\n        try {\n          var lookup = FS.lookupPath(path, { parent: true });\n          ret.parentExists = true;\n          ret.parentPath = lookup.path;\n          ret.parentObject = lookup.node;\n          ret.name = PATH.basename(path);\n          lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });\n          ret.exists = true;\n          ret.path = lookup.path;\n          ret.object = lookup.node;\n          ret.name = lookup.node.name;\n          ret.isRoot = lookup.path === '/';\n        } catch (e) {\n          ret.error = e.errno;\n        };\n        return ret;\n      },createFolder:function (parent, name, canRead, canWrite) {\n        var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);\n        var mode = FS.getMode(canRead, canWrite);\n        return FS.mkdir(path, mode);\n      },createPath:function (parent, path, canRead, canWrite) {\n        parent = typeof parent === 'string' ? parent : FS.getPath(parent);\n        var parts = path.split('/').reverse();\n        while (parts.length) {\n          var part = parts.pop();\n          if (!part) continue;\n          var current = PATH.join2(parent, part);\n          try {\n            FS.mkdir(current);\n          } catch (e) {\n            // ignore EEXIST\n          }\n          parent = current;\n        }\n        return current;\n      },createFile:function (parent, name, properties, canRead, canWrite) {\n        var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);\n        var mode = FS.getMode(canRead, canWrite);\n        return FS.create(path, mode);\n      },createDataFile:function (parent, name, data, canRead, canWrite, canOwn) {\n        var path = name ? PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name) : parent;\n        var mode = FS.getMode(canRead, canWrite);\n        var node = FS.create(path, mode);\n        if (data) {\n          if (typeof data === 'string') {\n            var arr = new Array(data.length);\n            for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i);\n            data = arr;\n          }\n          // make sure we can write to the file\n          FS.chmod(node, mode | 146);\n          var stream = FS.open(node, 'w');\n          FS.write(stream, data, 0, data.length, 0, canOwn);\n          FS.close(stream);\n          FS.chmod(node, mode);\n        }\n        return node;\n      },createDevice:function (parent, name, input, output) {\n        var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);\n        var mode = FS.getMode(!!input, !!output);\n        if (!FS.createDevice.major) FS.createDevice.major = 64;\n        var dev = FS.makedev(FS.createDevice.major++, 0);\n        // Create a fake device that a set of stream ops to emulate\n        // the old behavior.\n        FS.registerDevice(dev, {\n          open: function(stream) {\n            stream.seekable = false;\n          },\n          close: function(stream) {\n            // flush any pending line data\n            if (output && output.buffer && output.buffer.length) {\n              output(10);\n            }\n          },\n          read: function(stream, buffer, offset, length, pos /* ignored */) {\n            var bytesRead = 0;\n            for (var i = 0; i < length; i++) {\n              var result;\n              try {\n                result = input();\n              } catch (e) {\n                throw new FS.ErrnoError(ERRNO_CODES.EIO);\n              }\n              if (result === undefined && bytesRead === 0) {\n                throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);\n              }\n              if (result === null || result === undefined) break;\n              bytesRead++;\n              buffer[offset+i] = result;\n            }\n            if (bytesRead) {\n              stream.node.timestamp = Date.now();\n            }\n            return bytesRead;\n          },\n          write: function(stream, buffer, offset, length, pos) {\n            for (var i = 0; i < length; i++) {\n              try {\n                output(buffer[offset+i]);\n              } catch (e) {\n                throw new FS.ErrnoError(ERRNO_CODES.EIO);\n              }\n            }\n            if (length) {\n              stream.node.timestamp = Date.now();\n            }\n            return i;\n          }\n        });\n        return FS.mkdev(path, mode, dev);\n      },createLink:function (parent, name, target, canRead, canWrite) {\n        var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);\n        return FS.symlink(target, path);\n      },forceLoadFile:function (obj) {\n        if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;\n        var success = true;\n        if (typeof XMLHttpRequest !== 'undefined') {\n          throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\");\n        } else if (Module['read']) {\n          // Command-line.\n          try {\n            // WARNING: Can't read binary files in V8's d8 or tracemonkey's js, as\n            //          read() will try to parse UTF8.\n            obj.contents = intArrayFromString(Module['read'](obj.url), true);\n            obj.usedBytes = obj.contents.length;\n          } catch (e) {\n            success = false;\n          }\n        } else {\n          throw new Error('Cannot load without read() or XMLHttpRequest.');\n        }\n        if (!success) ___setErrNo(ERRNO_CODES.EIO);\n        return success;\n      },createLazyFile:function (parent, name, url, canRead, canWrite) {\n        // Lazy chunked Uint8Array (implements get and length from Uint8Array). Actual getting is abstracted away for eventual reuse.\n        function LazyUint8Array() {\n          this.lengthKnown = false;\n          this.chunks = []; // Loaded chunks. Index is the chunk number\n        }\n        LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {\n          if (idx > this.length-1 || idx < 0) {\n            return undefined;\n          }\n          var chunkOffset = idx % this.chunkSize;\n          var chunkNum = (idx / this.chunkSize)|0;\n          return this.getter(chunkNum)[chunkOffset];\n        }\n        LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {\n          this.getter = getter;\n        }\n        LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {\n          // Find length\n          var xhr = new XMLHttpRequest();\n          xhr.open('HEAD', url, false);\n          xhr.send(null);\n          if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n          var datalength = Number(xhr.getResponseHeader(\"Content-length\"));\n          var header;\n          var hasByteServing = (header = xhr.getResponseHeader(\"Accept-Ranges\")) && header === \"bytes\";\n          var chunkSize = 1024*1024; // Chunk size in bytes\n  \n          if (!hasByteServing) chunkSize = datalength;\n  \n          // Function to get a range from the remote URL.\n          var doXHR = (function(from, to) {\n            if (from > to) throw new Error(\"invalid range (\" + from + \", \" + to + \") or no bytes requested!\");\n            if (to > datalength-1) throw new Error(\"only \" + datalength + \" bytes available! programmer error!\");\n  \n            // TODO: Use mozResponseArrayBuffer, responseStream, etc. if available.\n            var xhr = new XMLHttpRequest();\n            xhr.open('GET', url, false);\n            if (datalength !== chunkSize) xhr.setRequestHeader(\"Range\", \"bytes=\" + from + \"-\" + to);\n  \n            // Some hints to the browser that we want binary data.\n            if (typeof Uint8Array != 'undefined') xhr.responseType = 'arraybuffer';\n            if (xhr.overrideMimeType) {\n              xhr.overrideMimeType('text/plain; charset=x-user-defined');\n            }\n  \n            xhr.send(null);\n            if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n            if (xhr.response !== undefined) {\n              return new Uint8Array(xhr.response || []);\n            } else {\n              return intArrayFromString(xhr.responseText || '', true);\n            }\n          });\n          var lazyArray = this;\n          lazyArray.setDataGetter(function(chunkNum) {\n            var start = chunkNum * chunkSize;\n            var end = (chunkNum+1) * chunkSize - 1; // including this byte\n            end = Math.min(end, datalength-1); // if datalength-1 is selected, this is the last block\n            if (typeof(lazyArray.chunks[chunkNum]) === \"undefined\") {\n              lazyArray.chunks[chunkNum] = doXHR(start, end);\n            }\n            if (typeof(lazyArray.chunks[chunkNum]) === \"undefined\") throw new Error(\"doXHR failed!\");\n            return lazyArray.chunks[chunkNum];\n          });\n  \n          this._length = datalength;\n          this._chunkSize = chunkSize;\n          this.lengthKnown = true;\n        }\n        if (typeof XMLHttpRequest !== 'undefined') {\n          if (!ENVIRONMENT_IS_WORKER) throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc';\n          var lazyArray = new LazyUint8Array();\n          Object.defineProperty(lazyArray, \"length\", {\n              get: function() {\n                  if(!this.lengthKnown) {\n                      this.cacheLength();\n                  }\n                  return this._length;\n              }\n          });\n          Object.defineProperty(lazyArray, \"chunkSize\", {\n              get: function() {\n                  if(!this.lengthKnown) {\n                      this.cacheLength();\n                  }\n                  return this._chunkSize;\n              }\n          });\n  \n          var properties = { isDevice: false, contents: lazyArray };\n        } else {\n          var properties = { isDevice: false, url: url };\n        }\n  \n        var node = FS.createFile(parent, name, properties, canRead, canWrite);\n        // This is a total hack, but I want to get this lazy file code out of the\n        // core of MEMFS. If we want to keep this lazy file concept I feel it should\n        // be its own thin LAZYFS proxying calls to MEMFS.\n        if (properties.contents) {\n          node.contents = properties.contents;\n        } else if (properties.url) {\n          node.contents = null;\n          node.url = properties.url;\n        }\n        // Add a function that defers querying the file size until it is asked the first time.\n        Object.defineProperty(node, \"usedBytes\", {\n            get: function() { return this.contents.length; }\n        });\n        // override each stream op with one that tries to force load the lazy file first\n        var stream_ops = {};\n        var keys = Object.keys(node.stream_ops);\n        keys.forEach(function(key) {\n          var fn = node.stream_ops[key];\n          stream_ops[key] = function forceLoadLazyFile() {\n            if (!FS.forceLoadFile(node)) {\n              throw new FS.ErrnoError(ERRNO_CODES.EIO);\n            }\n            return fn.apply(null, arguments);\n          };\n        });\n        // use a custom read function\n        stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) {\n          if (!FS.forceLoadFile(node)) {\n            throw new FS.ErrnoError(ERRNO_CODES.EIO);\n          }\n          var contents = stream.node.contents;\n          if (position >= contents.length)\n            return 0;\n          var size = Math.min(contents.length - position, length);\n          assert(size >= 0);\n          if (contents.slice) { // normal array\n            for (var i = 0; i < size; i++) {\n              buffer[offset + i] = contents[position + i];\n            }\n          } else {\n            for (var i = 0; i < size; i++) { // LazyUint8Array from sync binary XHR\n              buffer[offset + i] = contents.get(position + i);\n            }\n          }\n          return size;\n        };\n        node.stream_ops = stream_ops;\n        return node;\n      },createPreloadedFile:function (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) {\n        Browser.init();\n        // TODO we should allow people to just pass in a complete filename instead\n        // of parent and name being that we just join them anyways\n        var fullname = name ? PATH.resolve(PATH.join2(parent, name)) : parent;\n        var dep = getUniqueRunDependency('cp ' + fullname); // might have several active requests for the same fullname\n        function processData(byteArray) {\n          function finish(byteArray) {\n            if (preFinish) preFinish();\n            if (!dontCreateFile) {\n              FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);\n            }\n            if (onload) onload();\n            removeRunDependency(dep);\n          }\n          var handled = false;\n          Module['preloadPlugins'].forEach(function(plugin) {\n            if (handled) return;\n            if (plugin['canHandle'](fullname)) {\n              plugin['handle'](byteArray, fullname, finish, function() {\n                if (onerror) onerror();\n                removeRunDependency(dep);\n              });\n              handled = true;\n            }\n          });\n          if (!handled) finish(byteArray);\n        }\n        addRunDependency(dep);\n        if (typeof url == 'string') {\n          Browser.asyncLoad(url, function(byteArray) {\n            processData(byteArray);\n          }, onerror);\n        } else {\n          processData(url);\n        }\n      },indexedDB:function () {\n        return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;\n      },DB_NAME:function () {\n        return 'EM_FS_' + window.location.pathname;\n      },DB_VERSION:20,DB_STORE_NAME:\"FILE_DATA\",saveFilesToDB:function (paths, onload, onerror) {\n        onload = onload || function(){};\n        onerror = onerror || function(){};\n        var indexedDB = FS.indexedDB();\n        try {\n          var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n        } catch (e) {\n          return onerror(e);\n        }\n        openRequest.onupgradeneeded = function openRequest_onupgradeneeded() {\n          console.log('creating db');\n          var db = openRequest.result;\n          db.createObjectStore(FS.DB_STORE_NAME);\n        };\n        openRequest.onsuccess = function openRequest_onsuccess() {\n          var db = openRequest.result;\n          var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite');\n          var files = transaction.objectStore(FS.DB_STORE_NAME);\n          var ok = 0, fail = 0, total = paths.length;\n          function finish() {\n            if (fail == 0) onload(); else onerror();\n          }\n          paths.forEach(function(path) {\n            var putRequest = files.put(FS.analyzePath(path).object.contents, path);\n            putRequest.onsuccess = function putRequest_onsuccess() { ok++; if (ok + fail == total) finish() };\n            putRequest.onerror = function putRequest_onerror() { fail++; if (ok + fail == total) finish() };\n          });\n          transaction.onerror = onerror;\n        };\n        openRequest.onerror = onerror;\n      },loadFilesFromDB:function (paths, onload, onerror) {\n        onload = onload || function(){};\n        onerror = onerror || function(){};\n        var indexedDB = FS.indexedDB();\n        try {\n          var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n        } catch (e) {\n          return onerror(e);\n        }\n        openRequest.onupgradeneeded = onerror; // no database to load from\n        openRequest.onsuccess = function openRequest_onsuccess() {\n          var db = openRequest.result;\n          try {\n            var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly');\n          } catch(e) {\n            onerror(e);\n            return;\n          }\n          var files = transaction.objectStore(FS.DB_STORE_NAME);\n          var ok = 0, fail = 0, total = paths.length;\n          function finish() {\n            if (fail == 0) onload(); else onerror();\n          }\n          paths.forEach(function(path) {\n            var getRequest = files.get(path);\n            getRequest.onsuccess = function getRequest_onsuccess() {\n              if (FS.analyzePath(path).exists) {\n                FS.unlink(path);\n              }\n              FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);\n              ok++;\n              if (ok + fail == total) finish();\n            };\n            getRequest.onerror = function getRequest_onerror() { fail++; if (ok + fail == total) finish() };\n          });\n          transaction.onerror = onerror;\n        };\n        openRequest.onerror = onerror;\n      }};var SYSCALLS={DEFAULT_POLLMASK:5,mappings:{},umask:511,calculateAt:function (dirfd, path) {\n        if (path[0] !== '/') {\n          // relative path\n          var dir;\n          if (dirfd === -100) {\n            dir = FS.cwd();\n          } else {\n            var dirstream = FS.getStream(dirfd);\n            if (!dirstream) throw new FS.ErrnoError(ERRNO_CODES.EBADF);\n            dir = dirstream.path;\n          }\n          path = PATH.join2(dir, path);\n        }\n        return path;\n      },doStat:function (func, path, buf) {\n        try {\n          var stat = func(path);\n        } catch (e) {\n          if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) {\n            // an error occurred while trying to look up the path; we should just report ENOTDIR\n            return -ERRNO_CODES.ENOTDIR;\n          }\n          throw e;\n        }\n        HEAP32[((buf)>>2)]=stat.dev;\n        HEAP32[(((buf)+(4))>>2)]=0;\n        HEAP32[(((buf)+(8))>>2)]=stat.ino;\n        HEAP32[(((buf)+(12))>>2)]=stat.mode;\n        HEAP32[(((buf)+(16))>>2)]=stat.nlink;\n        HEAP32[(((buf)+(20))>>2)]=stat.uid;\n        HEAP32[(((buf)+(24))>>2)]=stat.gid;\n        HEAP32[(((buf)+(28))>>2)]=stat.rdev;\n        HEAP32[(((buf)+(32))>>2)]=0;\n        HEAP32[(((buf)+(36))>>2)]=stat.size;\n        HEAP32[(((buf)+(40))>>2)]=4096;\n        HEAP32[(((buf)+(44))>>2)]=stat.blocks;\n        HEAP32[(((buf)+(48))>>2)]=(stat.atime.getTime() / 1000)|0;\n        HEAP32[(((buf)+(52))>>2)]=0;\n        HEAP32[(((buf)+(56))>>2)]=(stat.mtime.getTime() / 1000)|0;\n        HEAP32[(((buf)+(60))>>2)]=0;\n        HEAP32[(((buf)+(64))>>2)]=(stat.ctime.getTime() / 1000)|0;\n        HEAP32[(((buf)+(68))>>2)]=0;\n        HEAP32[(((buf)+(72))>>2)]=stat.ino;\n        return 0;\n      },doMsync:function (addr, stream, len, flags) {\n        var buffer = new Uint8Array(HEAPU8.subarray(addr, addr + len));\n        FS.msync(stream, buffer, 0, len, flags);\n      },doMkdir:function (path, mode) {\n        // remove a trailing slash, if one - /a/b/ has basename of '', but\n        // we want to create b in the context of this function\n        path = PATH.normalize(path);\n        if (path[path.length-1] === '/') path = path.substr(0, path.length-1);\n        FS.mkdir(path, mode, 0);\n        return 0;\n      },doMknod:function (path, mode, dev) {\n        // we don't want this in the JS API as it uses mknod to create all nodes.\n        switch (mode & 61440) {\n          case 32768:\n          case 8192:\n          case 24576:\n          case 4096:\n          case 49152:\n            break;\n          default: return -ERRNO_CODES.EINVAL;\n        }\n        FS.mknod(path, mode, dev);\n        return 0;\n      },doReadlink:function (path, buf, bufsize) {\n        if (bufsize <= 0) return -ERRNO_CODES.EINVAL;\n        var ret = FS.readlink(path);\n        ret = ret.slice(0, Math.max(0, bufsize));\n        writeStringToMemory(ret, buf, true);\n        return ret.length;\n      },doAccess:function (path, amode) {\n        if (amode & ~7) {\n          // need a valid mode\n          return -ERRNO_CODES.EINVAL;\n        }\n        var node;\n        var lookup = FS.lookupPath(path, { follow: true });\n        node = lookup.node;\n        var perms = '';\n        if (amode & 4) perms += 'r';\n        if (amode & 2) perms += 'w';\n        if (amode & 1) perms += 'x';\n        if (perms /* otherwise, they've just passed F_OK */ && FS.nodePermissions(node, perms)) {\n          return -ERRNO_CODES.EACCES;\n        }\n        return 0;\n      },doDup:function (path, flags, suggestFD) {\n        var suggest = FS.getStream(suggestFD);\n        if (suggest) FS.close(suggest);\n        return FS.open(path, flags, 0, suggestFD, suggestFD).fd;\n      },doReadv:function (stream, iov, iovcnt, offset) {\n        var ret = 0;\n        for (var i = 0; i < iovcnt; i++) {\n          var ptr = HEAP32[(((iov)+(i*8))>>2)];\n          var len = HEAP32[(((iov)+(i*8 + 4))>>2)];\n          var curr = FS.read(stream, HEAP8,ptr, len, offset);\n          if (curr < 0) return -1;\n          ret += curr;\n          if (curr < len) break; // nothing more to read\n        }\n        return ret;\n      },doWritev:function (stream, iov, iovcnt, offset) {\n        var ret = 0;\n        for (var i = 0; i < iovcnt; i++) {\n          var ptr = HEAP32[(((iov)+(i*8))>>2)];\n          var len = HEAP32[(((iov)+(i*8 + 4))>>2)];\n          var curr = FS.write(stream, HEAP8,ptr, len, offset);\n          if (curr < 0) return -1;\n          ret += curr;\n        }\n        return ret;\n      },varargs:0,get:function (varargs) {\n        SYSCALLS.varargs += 4;\n        var ret = HEAP32[(((SYSCALLS.varargs)-(4))>>2)];\n        return ret;\n      },getStr:function () {\n        var ret = Pointer_stringify(SYSCALLS.get());\n        return ret;\n      },getStreamFromFD:function () {\n        var stream = FS.getStream(SYSCALLS.get());\n        if (!stream) throw new FS.ErrnoError(ERRNO_CODES.EBADF);\n        return stream;\n      },getSocketFromFD:function () {\n        var socket = SOCKFS.getSocket(SYSCALLS.get());\n        if (!socket) throw new FS.ErrnoError(ERRNO_CODES.EBADF);\n        return socket;\n      },getSocketAddress:function (allowNull) {\n        var addrp = SYSCALLS.get(), addrlen = SYSCALLS.get();\n        if (allowNull && addrp === 0) return null;\n        var info = __read_sockaddr(addrp, addrlen);\n        if (info.errno) throw new FS.ErrnoError(info.errno);\n        info.addr = DNS.lookup_addr(info.addr) || info.addr;\n        return info;\n      },get64:function () {\n        var low = SYSCALLS.get(), high = SYSCALLS.get();\n        if (low >= 0) assert(high === 0);\n        else assert(high === -1);\n        return low;\n      },getZero:function () {\n        assert(SYSCALLS.get() === 0);\n      }};function ___syscall5(which, varargs) {SYSCALLS.varargs = varargs;\n  try {\n   // open\n      var pathname = SYSCALLS.getStr(), flags = SYSCALLS.get(), mode = SYSCALLS.get() // optional TODO\n      var stream = FS.open(pathname, flags, mode);\n      return stream.fd;\n    } catch (e) {\n    if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);\n    return -e.errno;\n  }\n  }\n\n  \n  function _emscripten_memcpy_big(dest, src, num) {\n      HEAPU8.set(HEAPU8.subarray(src, src+num), dest);\n      return dest;\n    } \n  Module[\"_memcpy\"] = _memcpy;\n\n  function ___syscall6(which, varargs) {SYSCALLS.varargs = varargs;\n  try {\n   // close\n      var stream = SYSCALLS.getStreamFromFD();\n      FS.close(stream);\n      return 0;\n    } catch (e) {\n    if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);\n    return -e.errno;\n  }\n  }\n\n  var _cos=Math_cos;\n\n  function _sbrk(bytes) {\n      // Implement a Linux-like 'memory area' for our 'process'.\n      // Changes the size of the memory area by |bytes|; returns the\n      // address of the previous top ('break') of the memory area\n      // We control the \"dynamic\" memory - DYNAMIC_BASE to DYNAMICTOP\n      var self = _sbrk;\n      if (!self.called) {\n        DYNAMICTOP = alignMemoryPage(DYNAMICTOP); // make sure we start out aligned\n        self.called = true;\n        assert(Runtime.dynamicAlloc);\n        self.alloc = Runtime.dynamicAlloc;\n        Runtime.dynamicAlloc = function() { abort('cannot dynamically allocate, sbrk now has control') };\n      }\n      var ret = DYNAMICTOP;\n      if (bytes != 0) {\n        var success = self.alloc(bytes);\n        if (!success) return -1 >>> 0; // sbrk failure code\n      }\n      return ret;  // Previous break location.\n    }\n\n   \n  Module[\"_memmove\"] = _memmove;\n\n  var _BItoD=true;\n\n  function ___syscall54(which, varargs) {SYSCALLS.varargs = varargs;\n  try {\n   // ioctl\n      var stream = SYSCALLS.getStreamFromFD(), op = SYSCALLS.get();\n      switch (op) {\n        case 21505: {\n          if (!stream.tty) return -ERRNO_CODES.ENOTTY;\n          return 0;\n        }\n        case 21506: {\n          if (!stream.tty) return -ERRNO_CODES.ENOTTY;\n          return 0; // no-op, not actually adjusting terminal settings\n        }\n        case 21519: {\n          if (!stream.tty) return -ERRNO_CODES.ENOTTY;\n          var argp = SYSCALLS.get();\n          HEAP32[((argp)>>2)]=0;\n          return 0;\n        }\n        case 21520: {\n          if (!stream.tty) return -ERRNO_CODES.ENOTTY;\n          return -ERRNO_CODES.EINVAL; // not supported\n        }\n        case 21531: {\n          var argp = SYSCALLS.get();\n          return FS.ioctl(stream, op, argp);\n        }\n        default: abort('bad ioctl syscall ' + op);\n      }\n    } catch (e) {\n    if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);\n    return -e.errno;\n  }\n  }\n\n  var _ceilf=Math_ceil;\n\n  function __embind_register_memory_view(rawType, dataTypeIndex, name) {\n      var typeMapping = [\n          Int8Array,\n          Uint8Array,\n          Int16Array,\n          Uint16Array,\n          Int32Array,\n          Uint32Array,\n          Float32Array,\n          Float64Array,\n      ];\n  \n      var TA = typeMapping[dataTypeIndex];\n  \n      function decodeMemoryView(handle) {\n          handle = handle >> 2;\n          var heap = HEAPU32;\n          var size = heap[handle]; // in elements\n          var data = heap[handle + 1]; // byte offset into emscripten heap\n          return new TA(heap['buffer'], data, size);\n      }\n  \n      name = readLatin1String(name);\n      registerType(rawType, {\n          name: name,\n          'fromWireType': decodeMemoryView,\n          'argPackAdvance': 8,\n          'readValueFromPointer': decodeMemoryView,\n      }, {\n          ignoreDuplicateRegistrations: true,\n      });\n    }\n\n  function _time(ptr) {\n      var ret = (Date.now()/1000)|0;\n      if (ptr) {\n        HEAP32[((ptr)>>2)]=ret;\n      }\n      return ret;\n    }\n\n  function _pthread_self() {\n      //FIXME: assumes only a single thread\n      return 0;\n    }\n\n  function ___syscall140(which, varargs) {SYSCALLS.varargs = varargs;\n  try {\n   // llseek\n      var stream = SYSCALLS.getStreamFromFD(), offset_high = SYSCALLS.get(), offset_low = SYSCALLS.get(), result = SYSCALLS.get(), whence = SYSCALLS.get();\n      var offset = offset_low;\n      assert(offset_high === 0);\n      FS.llseek(stream, offset, whence);\n      HEAP32[((result)>>2)]=stream.position;\n      if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null; // reset readdir state\n      return 0;\n    } catch (e) {\n    if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);\n    return -e.errno;\n  }\n  }\n\n  function ___syscall146(which, varargs) {SYSCALLS.varargs = varargs;\n  try {\n   // writev\n      var stream = SYSCALLS.getStreamFromFD(), iov = SYSCALLS.get(), iovcnt = SYSCALLS.get();\n      return SYSCALLS.doWritev(stream, iov, iovcnt);\n    } catch (e) {\n    if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);\n    return -e.errno;\n  }\n  }\n\n  function ___syscall221(which, varargs) {SYSCALLS.varargs = varargs;\n  try {\n   // fcntl64\n      var stream = SYSCALLS.getStreamFromFD(), cmd = SYSCALLS.get();\n      switch (cmd) {\n        case 0: {\n          var arg = SYSCALLS.get();\n          if (arg < 0) {\n            return -ERRNO_CODES.EINVAL;\n          }\n          var newStream;\n          newStream = FS.open(stream.path, stream.flags, 0, arg);\n          return newStream.fd;\n        }\n        case 1:\n        case 2:\n          return 0;  // FD_CLOEXEC makes no sense for a single process.\n        case 3:\n          return stream.flags;\n        case 4: {\n          var arg = SYSCALLS.get();\n          stream.flags |= arg;\n          return 0;\n        }\n        case 12:\n        case 12: {\n          var arg = SYSCALLS.get();\n          var offset = 0;\n          // We're always unlocked.\n          HEAP16[(((arg)+(offset))>>1)]=2;\n          return 0;\n        }\n        case 13:\n        case 14:\n        case 13:\n        case 14:\n          return 0; // Pretend that the locking is successful.\n        case 16:\n        case 8:\n          return -ERRNO_CODES.EINVAL; // These are for sockets. We don't have them fully implemented yet.\n        case 9:\n          // musl trusts getown return values, due to a bug where they must be, as they overlap with errors. just return -1 here, so fnctl() returns that, and we set errno ourselves.\n          ___setErrNo(ERRNO_CODES.EINVAL);\n          return -1;\n        default: {\n          return -ERRNO_CODES.EINVAL;\n        }\n      }\n    } catch (e) {\n    if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);\n    return -e.errno;\n  }\n  }\n\n  function ___syscall145(which, varargs) {SYSCALLS.varargs = varargs;\n  try {\n   // readv\n      var stream = SYSCALLS.getStreamFromFD(), iov = SYSCALLS.get(), iovcnt = SYSCALLS.get();\n      return SYSCALLS.doReadv(stream, iov, iovcnt);\n    } catch (e) {\n    if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);\n    return -e.errno;\n  }\n  }\n\n  var ___dso_handle=allocate(1, \"i32*\", ALLOC_STATIC);\nembind_init_charCodes()\nBindingError = Module['BindingError'] = extendError(Error, 'BindingError');\nInternalError = Module['InternalError'] = extendError(Error, 'InternalError');\ninit_emval();\nUnboundTypeError = Module['UnboundTypeError'] = extendError(Error, 'UnboundTypeError');\nFS.staticInit();__ATINIT__.unshift(function() { if (!Module[\"noFSInit\"] && !FS.init.initialized) FS.init() });__ATMAIN__.push(function() { FS.ignorePermissions = false });__ATEXIT__.push(function() { FS.quit() });Module[\"FS_createFolder\"] = FS.createFolder;Module[\"FS_createPath\"] = FS.createPath;Module[\"FS_createDataFile\"] = FS.createDataFile;Module[\"FS_createPreloadedFile\"] = FS.createPreloadedFile;Module[\"FS_createLazyFile\"] = FS.createLazyFile;Module[\"FS_createLink\"] = FS.createLink;Module[\"FS_createDevice\"] = FS.createDevice;Module[\"FS_unlink\"] = FS.unlink;\n__ATINIT__.unshift(function() { TTY.init() });__ATEXIT__.push(function() { TTY.shutdown() });\nif (ENVIRONMENT_IS_NODE) { var fs = require(\"fs\"); var NODEJS_PATH = require(\"path\"); NODEFS.staticInit(); }\nSTACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP);\n\nstaticSealed = true; // seal the static portion of memory\n\nSTACK_MAX = STACK_BASE + TOTAL_STACK;\n\nDYNAMIC_BASE = DYNAMICTOP = Runtime.alignMemory(STACK_MAX);\n\nassert(DYNAMIC_BASE < TOTAL_MEMORY, \"TOTAL_MEMORY not big enough for stack\");\n\n var cttz_i8 = allocate([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\", ALLOC_DYNAMIC);\n\n\nfunction nullFunc_iiii(x) { Module[\"printErr\"](\"Invalid function pointer called with signature 'iiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)\");  Module[\"printErr\"](\"Build with ASSERTIONS=2 for more info.\");abort(x) }\n\nfunction nullFunc_viiiii(x) { Module[\"printErr\"](\"Invalid function pointer called with signature 'viiiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)\");  Module[\"printErr\"](\"Build with ASSERTIONS=2 for more info.\");abort(x) }\n\nfunction nullFunc_dii(x) { Module[\"printErr\"](\"Invalid function pointer called with signature 'dii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)\");  Module[\"printErr\"](\"Build with ASSERTIONS=2 for more info.\");abort(x) }\n\nfunction nullFunc_vid(x) { Module[\"printErr\"](\"Invalid function pointer called with signature 'vid'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)\");  Module[\"printErr\"](\"Build with ASSERTIONS=2 for more info.\");abort(x) }\n\nfunction nullFunc_di(x) { Module[\"printErr\"](\"Invalid function pointer called with signature 'di'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)\");  Module[\"printErr\"](\"Build with ASSERTIONS=2 for more info.\");abort(x) }\n\nfunction nullFunc_i(x) { Module[\"printErr\"](\"Invalid function pointer called with signature 'i'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)\");  Module[\"printErr\"](\"Build with ASSERTIONS=2 for more info.\");abort(x) }\n\nfunction nullFunc_vi(x) { Module[\"printErr\"](\"Invalid function pointer called with signature 'vi'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)\");  Module[\"printErr\"](\"Build with ASSERTIONS=2 for more info.\");abort(x) }\n\nfunction nullFunc_vii(x) { Module[\"printErr\"](\"Invalid function pointer called with signature 'vii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)\");  Module[\"printErr\"](\"Build with ASSERTIONS=2 for more info.\");abort(x) }\n\nfunction nullFunc_ii(x) { Module[\"printErr\"](\"Invalid function pointer called with signature 'ii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)\");  Module[\"printErr\"](\"Build with ASSERTIONS=2 for more info.\");abort(x) }\n\nfunction nullFunc_viii(x) { Module[\"printErr\"](\"Invalid function pointer called with signature 'viii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)\");  Module[\"printErr\"](\"Build with ASSERTIONS=2 for more info.\");abort(x) }\n\nfunction nullFunc_v(x) { Module[\"printErr\"](\"Invalid function pointer called with signature 'v'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)\");  Module[\"printErr\"](\"Build with ASSERTIONS=2 for more info.\");abort(x) }\n\nfunction nullFunc_viid(x) { Module[\"printErr\"](\"Invalid function pointer called with signature 'viid'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)\");  Module[\"printErr\"](\"Build with ASSERTIONS=2 for more info.\");abort(x) }\n\nfunction nullFunc_iiiii(x) { Module[\"printErr\"](\"Invalid function pointer called with signature 'iiiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)\");  Module[\"printErr\"](\"Build with ASSERTIONS=2 for more info.\");abort(x) }\n\nfunction nullFunc_viiiiii(x) { Module[\"printErr\"](\"Invalid function pointer called with signature 'viiiiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)\");  Module[\"printErr\"](\"Build with ASSERTIONS=2 for more info.\");abort(x) }\n\nfunction nullFunc_iii(x) { Module[\"printErr\"](\"Invalid function pointer called with signature 'iii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)\");  Module[\"printErr\"](\"Build with ASSERTIONS=2 for more info.\");abort(x) }\n\nfunction nullFunc_viiii(x) { Module[\"printErr\"](\"Invalid function pointer called with signature 'viiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)\");  Module[\"printErr\"](\"Build with ASSERTIONS=2 for more info.\");abort(x) }\n\nfunction invoke_iiii(index,a1,a2,a3) {\n  try {\n    return Module[\"dynCall_iiii\"](index,a1,a2,a3);\n  } catch(e) {\n    if (typeof e !== 'number' && e !== 'longjmp') throw e;\n    asm[\"setThrew\"](1, 0);\n  }\n}\n\nfunction invoke_viiiii(index,a1,a2,a3,a4,a5) {\n  try {\n    Module[\"dynCall_viiiii\"](index,a1,a2,a3,a4,a5);\n  } catch(e) {\n    if (typeof e !== 'number' && e !== 'longjmp') throw e;\n    asm[\"setThrew\"](1, 0);\n  }\n}\n\nfunction invoke_dii(index,a1,a2) {\n  try {\n    return Module[\"dynCall_dii\"](index,a1,a2);\n  } catch(e) {\n    if (typeof e !== 'number' && e !== 'longjmp') throw e;\n    asm[\"setThrew\"](1, 0);\n  }\n}\n\nfunction invoke_vid(index,a1,a2) {\n  try {\n    Module[\"dynCall_vid\"](index,a1,a2);\n  } catch(e) {\n    if (typeof e !== 'number' && e !== 'longjmp') throw e;\n    asm[\"setThrew\"](1, 0);\n  }\n}\n\nfunction invoke_di(index,a1) {\n  try {\n    return Module[\"dynCall_di\"](index,a1);\n  } catch(e) {\n    if (typeof e !== 'number' && e !== 'longjmp') throw e;\n    asm[\"setThrew\"](1, 0);\n  }\n}\n\nfunction invoke_i(index) {\n  try {\n    return Module[\"dynCall_i\"](index);\n  } catch(e) {\n    if (typeof e !== 'number' && e !== 'longjmp') throw e;\n    asm[\"setThrew\"](1, 0);\n  }\n}\n\nfunction invoke_vi(index,a1) {\n  try {\n    Module[\"dynCall_vi\"](index,a1);\n  } catch(e) {\n    if (typeof e !== 'number' && e !== 'longjmp') throw e;\n    asm[\"setThrew\"](1, 0);\n  }\n}\n\nfunction invoke_vii(index,a1,a2) {\n  try {\n    Module[\"dynCall_vii\"](index,a1,a2);\n  } catch(e) {\n    if (typeof e !== 'number' && e !== 'longjmp') throw e;\n    asm[\"setThrew\"](1, 0);\n  }\n}\n\nfunction invoke_ii(index,a1) {\n  try {\n    return Module[\"dynCall_ii\"](index,a1);\n  } catch(e) {\n    if (typeof e !== 'number' && e !== 'longjmp') throw e;\n    asm[\"setThrew\"](1, 0);\n  }\n}\n\nfunction invoke_viii(index,a1,a2,a3) {\n  try {\n    Module[\"dynCall_viii\"](index,a1,a2,a3);\n  } catch(e) {\n    if (typeof e !== 'number' && e !== 'longjmp') throw e;\n    asm[\"setThrew\"](1, 0);\n  }\n}\n\nfunction invoke_v(index) {\n  try {\n    Module[\"dynCall_v\"](index);\n  } catch(e) {\n    if (typeof e !== 'number' && e !== 'longjmp') throw e;\n    asm[\"setThrew\"](1, 0);\n  }\n}\n\nfunction invoke_viid(index,a1,a2,a3) {\n  try {\n    Module[\"dynCall_viid\"](index,a1,a2,a3);\n  } catch(e) {\n    if (typeof e !== 'number' && e !== 'longjmp') throw e;\n    asm[\"setThrew\"](1, 0);\n  }\n}\n\nfunction invoke_iiiii(index,a1,a2,a3,a4) {\n  try {\n    return Module[\"dynCall_iiiii\"](index,a1,a2,a3,a4);\n  } catch(e) {\n    if (typeof e !== 'number' && e !== 'longjmp') throw e;\n    asm[\"setThrew\"](1, 0);\n  }\n}\n\nfunction invoke_viiiiii(index,a1,a2,a3,a4,a5,a6) {\n  try {\n    Module[\"dynCall_viiiiii\"](index,a1,a2,a3,a4,a5,a6);\n  } catch(e) {\n    if (typeof e !== 'number' && e !== 'longjmp') throw e;\n    asm[\"setThrew\"](1, 0);\n  }\n}\n\nfunction invoke_iii(index,a1,a2) {\n  try {\n    return Module[\"dynCall_iii\"](index,a1,a2);\n  } catch(e) {\n    if (typeof e !== 'number' && e !== 'longjmp') throw e;\n    asm[\"setThrew\"](1, 0);\n  }\n}\n\nfunction invoke_viiii(index,a1,a2,a3,a4) {\n  try {\n    Module[\"dynCall_viiii\"](index,a1,a2,a3,a4);\n  } catch(e) {\n    if (typeof e !== 'number' && e !== 'longjmp') throw e;\n    asm[\"setThrew\"](1, 0);\n  }\n}\n\nModule.asmGlobalArg = { \"Math\": Math, \"Int8Array\": Int8Array, \"Int16Array\": Int16Array, \"Int32Array\": Int32Array, \"Uint8Array\": Uint8Array, \"Uint16Array\": Uint16Array, \"Uint32Array\": Uint32Array, \"Float32Array\": Float32Array, \"Float64Array\": Float64Array, \"NaN\": NaN, \"Infinity\": Infinity, \"byteLength\": byteLength };\n\nModule.asmLibraryArg = { \"abort\": abort, \"assert\": assert, \"nullFunc_iiii\": nullFunc_iiii, \"nullFunc_viiiii\": nullFunc_viiiii, \"nullFunc_dii\": nullFunc_dii, \"nullFunc_vid\": nullFunc_vid, \"nullFunc_di\": nullFunc_di, \"nullFunc_i\": nullFunc_i, \"nullFunc_vi\": nullFunc_vi, \"nullFunc_vii\": nullFunc_vii, \"nullFunc_ii\": nullFunc_ii, \"nullFunc_viii\": nullFunc_viii, \"nullFunc_v\": nullFunc_v, \"nullFunc_viid\": nullFunc_viid, \"nullFunc_iiiii\": nullFunc_iiiii, \"nullFunc_viiiiii\": nullFunc_viiiiii, \"nullFunc_iii\": nullFunc_iii, \"nullFunc_viiii\": nullFunc_viiii, \"invoke_iiii\": invoke_iiii, \"invoke_viiiii\": invoke_viiiii, \"invoke_dii\": invoke_dii, \"invoke_vid\": invoke_vid, \"invoke_di\": invoke_di, \"invoke_i\": invoke_i, \"invoke_vi\": invoke_vi, \"invoke_vii\": invoke_vii, \"invoke_ii\": invoke_ii, \"invoke_viii\": invoke_viii, \"invoke_v\": invoke_v, \"invoke_viid\": invoke_viid, \"invoke_iiiii\": invoke_iiiii, \"invoke_viiiiii\": invoke_viiiiii, \"invoke_iii\": invoke_iii, \"invoke_viiii\": invoke_viiii, \"_fabs\": _fabs, \"___syscall221\": ___syscall221, \"_sin\": _sin, \"floatReadValueFromPointer\": floatReadValueFromPointer, \"simpleReadValueFromPointer\": simpleReadValueFromPointer, \"___syscall54\": ___syscall54, \"__embind_register_memory_view\": __embind_register_memory_view, \"throwInternalError\": throwInternalError, \"get_first_emval\": get_first_emval, \"_abort\": _abort, \"_pthread_cleanup_push\": _pthread_cleanup_push, \"extendError\": extendError, \"__embind_register_integer\": __embind_register_integer, \"___assert_fail\": ___assert_fail, \"init_emval\": init_emval, \"___cxa_allocate_exception\": ___cxa_allocate_exception, \"__ZSt18uncaught_exceptionv\": __ZSt18uncaught_exceptionv, \"_ceilf\": _ceilf, \"getShiftFromSize\": getShiftFromSize, \"__embind_register_function\": __embind_register_function, \"__embind_register_emval\": __embind_register_emval, \"_emscripten_asm_const_33\": _emscripten_asm_const_33, \"__embind_register_constant\": __embind_register_constant, \"___setErrNo\": ___setErrNo, \"__emval_register\": __emval_register, \"_sbrk\": _sbrk, \"readLatin1String\": readLatin1String, \"__embind_register_void\": __embind_register_void, \"_emscripten_memcpy_big\": _emscripten_memcpy_big, \"__embind_register_bool\": __embind_register_bool, \"___resumeException\": ___resumeException, \"___cxa_find_matching_catch\": ___cxa_find_matching_catch, \"_sysconf\": _sysconf, \"_embind_repr\": _embind_repr, \"__embind_register_std_wstring\": __embind_register_std_wstring, \"createNamedFunction\": createNamedFunction, \"embind_init_charCodes\": embind_init_charCodes, \"_cos\": _cos, \"getTypeName\": getTypeName, \"throwUnboundTypeError\": throwUnboundTypeError, \"_pthread_self\": _pthread_self, \"craftInvokerFunction\": craftInvokerFunction, \"__emval_decref\": __emval_decref, \"_sqrt\": _sqrt, \"__embind_register_float\": __embind_register_float, \"makeLegalFunctionName\": makeLegalFunctionName, \"integerReadValueFromPointer\": integerReadValueFromPointer, \"___unlock\": ___unlock, \"heap32VectorToArray\": heap32VectorToArray, \"_pthread_cleanup_pop\": _pthread_cleanup_pop, \"whenDependentTypesAreResolved\": whenDependentTypesAreResolved, \"_exit\": _exit, \"___syscall5\": ___syscall5, \"_emscripten_asm_const_4\": _emscripten_asm_const_4, \"___cxa_atexit\": ___cxa_atexit, \"registerType\": registerType, \"___cxa_throw\": ___cxa_throw, \"__exit\": __exit, \"___lock\": ___lock, \"___syscall6\": ___syscall6, \"throwBindingError\": throwBindingError, \"ensureOverloadTable\": ensureOverloadTable, \"count_emval_handles\": count_emval_handles, \"_time\": _time, \"requireFunction\": requireFunction, \"runDestructors\": runDestructors, \"new_\": new_, \"_atexit\": _atexit, \"___syscall140\": ___syscall140, \"exposePublicSymbol\": exposePublicSymbol, \"_emscripten_asm_const_5\": _emscripten_asm_const_5, \"__embind_register_std_string\": __embind_register_std_string, \"replacePublicSymbol\": replacePublicSymbol, \"___syscall145\": ___syscall145, \"___syscall146\": ___syscall146, \"STACKTOP\": STACKTOP, \"STACK_MAX\": STACK_MAX, \"tempDoublePtr\": tempDoublePtr, \"ABORT\": ABORT, \"cttz_i8\": cttz_i8, \"___dso_handle\": ___dso_handle };\n// EMSCRIPTEN_START_ASM\nvar asm = (function(global, env, buffer) {\n  'use asm';\n  \n  \n  var Int8View = global.Int8Array;\n  var Int16View = global.Int16Array;\n  var Int32View = global.Int32Array;\n  var Uint8View = global.Uint8Array;\n  var Uint16View = global.Uint16Array;\n  var Uint32View = global.Uint32Array;\n  var Float32View = global.Float32Array;\n  var Float64View = global.Float64Array;\n  var HEAP8 = new Int8View(buffer);\n  var HEAP16 = new Int16View(buffer);\n  var HEAP32 = new Int32View(buffer);\n  var HEAPU8 = new Uint8View(buffer);\n  var HEAPU16 = new Uint16View(buffer);\n  var HEAPU32 = new Uint32View(buffer);\n  var HEAPF32 = new Float32View(buffer);\n  var HEAPF64 = new Float64View(buffer);\n  var byteLength = global.byteLength;\n\n\n  var STACKTOP=env.STACKTOP|0;\n  var STACK_MAX=env.STACK_MAX|0;\n  var tempDoublePtr=env.tempDoublePtr|0;\n  var ABORT=env.ABORT|0;\n  var cttz_i8=env.cttz_i8|0;\n  var ___dso_handle=env.___dso_handle|0;\n\n  var __THREW__ = 0;\n  var threwValue = 0;\n  var setjmpId = 0;\n  var undef = 0;\n  var nan = global.NaN, inf = global.Infinity;\n  var tempInt = 0, tempBigInt = 0, tempBigIntP = 0, tempBigIntS = 0, tempBigIntR = 0.0, tempBigIntI = 0, tempBigIntD = 0, tempValue = 0, tempDouble = 0.0;\n\n  var tempRet0 = 0;\n  var tempRet1 = 0;\n  var tempRet2 = 0;\n  var tempRet3 = 0;\n  var tempRet4 = 0;\n  var tempRet5 = 0;\n  var tempRet6 = 0;\n  var tempRet7 = 0;\n  var tempRet8 = 0;\n  var tempRet9 = 0;\n  var Math_floor=global.Math.floor;\n  var Math_abs=global.Math.abs;\n  var Math_sqrt=global.Math.sqrt;\n  var Math_pow=global.Math.pow;\n  var Math_cos=global.Math.cos;\n  var Math_sin=global.Math.sin;\n  var Math_tan=global.Math.tan;\n  var Math_acos=global.Math.acos;\n  var Math_asin=global.Math.asin;\n  var Math_atan=global.Math.atan;\n  var Math_atan2=global.Math.atan2;\n  var Math_exp=global.Math.exp;\n  var Math_log=global.Math.log;\n  var Math_ceil=global.Math.ceil;\n  var Math_imul=global.Math.imul;\n  var Math_min=global.Math.min;\n  var Math_clz32=global.Math.clz32;\n  var abort=env.abort;\n  var assert=env.assert;\n  var nullFunc_iiii=env.nullFunc_iiii;\n  var nullFunc_viiiii=env.nullFunc_viiiii;\n  var nullFunc_dii=env.nullFunc_dii;\n  var nullFunc_vid=env.nullFunc_vid;\n  var nullFunc_di=env.nullFunc_di;\n  var nullFunc_i=env.nullFunc_i;\n  var nullFunc_vi=env.nullFunc_vi;\n  var nullFunc_vii=env.nullFunc_vii;\n  var nullFunc_ii=env.nullFunc_ii;\n  var nullFunc_viii=env.nullFunc_viii;\n  var nullFunc_v=env.nullFunc_v;\n  var nullFunc_viid=env.nullFunc_viid;\n  var nullFunc_iiiii=env.nullFunc_iiiii;\n  var nullFunc_viiiiii=env.nullFunc_viiiiii;\n  var nullFunc_iii=env.nullFunc_iii;\n  var nullFunc_viiii=env.nullFunc_viiii;\n  var invoke_iiii=env.invoke_iiii;\n  var invoke_viiiii=env.invoke_viiiii;\n  var invoke_dii=env.invoke_dii;\n  var invoke_vid=env.invoke_vid;\n  var invoke_di=env.invoke_di;\n  var invoke_i=env.invoke_i;\n  var invoke_vi=env.invoke_vi;\n  var invoke_vii=env.invoke_vii;\n  var invoke_ii=env.invoke_ii;\n  var invoke_viii=env.invoke_viii;\n  var invoke_v=env.invoke_v;\n  var invoke_viid=env.invoke_viid;\n  var invoke_iiiii=env.invoke_iiiii;\n  var invoke_viiiiii=env.invoke_viiiiii;\n  var invoke_iii=env.invoke_iii;\n  var invoke_viiii=env.invoke_viiii;\n  var _fabs=env._fabs;\n  var ___syscall221=env.___syscall221;\n  var _sin=env._sin;\n  var floatReadValueFromPointer=env.floatReadValueFromPointer;\n  var simpleReadValueFromPointer=env.simpleReadValueFromPointer;\n  var ___syscall54=env.___syscall54;\n  var __embind_register_memory_view=env.__embind_register_memory_view;\n  var throwInternalError=env.throwInternalError;\n  var get_first_emval=env.get_first_emval;\n  var _abort=env._abort;\n  var _pthread_cleanup_push=env._pthread_cleanup_push;\n  var extendError=env.extendError;\n  var __embind_register_integer=env.__embind_register_integer;\n  var ___assert_fail=env.___assert_fail;\n  var init_emval=env.init_emval;\n  var ___cxa_allocate_exception=env.___cxa_allocate_exception;\n  var __ZSt18uncaught_exceptionv=env.__ZSt18uncaught_exceptionv;\n  var _ceilf=env._ceilf;\n  var getShiftFromSize=env.getShiftFromSize;\n  var __embind_register_function=env.__embind_register_function;\n  var __embind_register_emval=env.__embind_register_emval;\n  var _emscripten_asm_const_33=env._emscripten_asm_const_33;\n  var __embind_register_constant=env.__embind_register_constant;\n  var ___setErrNo=env.___setErrNo;\n  var __emval_register=env.__emval_register;\n  var _sbrk=env._sbrk;\n  var readLatin1String=env.readLatin1String;\n  var __embind_register_void=env.__embind_register_void;\n  var _emscripten_memcpy_big=env._emscripten_memcpy_big;\n  var __embind_register_bool=env.__embind_register_bool;\n  var ___resumeException=env.___resumeException;\n  var ___cxa_find_matching_catch=env.___cxa_find_matching_catch;\n  var _sysconf=env._sysconf;\n  var _embind_repr=env._embind_repr;\n  var __embind_register_std_wstring=env.__embind_register_std_wstring;\n  var createNamedFunction=env.createNamedFunction;\n  var embind_init_charCodes=env.embind_init_charCodes;\n  var _cos=env._cos;\n  var getTypeName=env.getTypeName;\n  var throwUnboundTypeError=env.throwUnboundTypeError;\n  var _pthread_self=env._pthread_self;\n  var craftInvokerFunction=env.craftInvokerFunction;\n  var __emval_decref=env.__emval_decref;\n  var _sqrt=env._sqrt;\n  var __embind_register_float=env.__embind_register_float;\n  var makeLegalFunctionName=env.makeLegalFunctionName;\n  var integerReadValueFromPointer=env.integerReadValueFromPointer;\n  var ___unlock=env.___unlock;\n  var heap32VectorToArray=env.heap32VectorToArray;\n  var _pthread_cleanup_pop=env._pthread_cleanup_pop;\n  var whenDependentTypesAreResolved=env.whenDependentTypesAreResolved;\n  var _exit=env._exit;\n  var ___syscall5=env.___syscall5;\n  var _emscripten_asm_const_4=env._emscripten_asm_const_4;\n  var ___cxa_atexit=env.___cxa_atexit;\n  var registerType=env.registerType;\n  var ___cxa_throw=env.___cxa_throw;\n  var __exit=env.__exit;\n  var ___lock=env.___lock;\n  var ___syscall6=env.___syscall6;\n  var throwBindingError=env.throwBindingError;\n  var ensureOverloadTable=env.ensureOverloadTable;\n  var count_emval_handles=env.count_emval_handles;\n  var _time=env._time;\n  var requireFunction=env.requireFunction;\n  var runDestructors=env.runDestructors;\n  var new_=env.new_;\n  var _atexit=env._atexit;\n  var ___syscall140=env.___syscall140;\n  var exposePublicSymbol=env.exposePublicSymbol;\n  var _emscripten_asm_const_5=env._emscripten_asm_const_5;\n  var __embind_register_std_string=env.__embind_register_std_string;\n  var replacePublicSymbol=env.replacePublicSymbol;\n  var ___syscall145=env.___syscall145;\n  var ___syscall146=env.___syscall146;\n  var tempFloat = 0.0;\n\nfunction _emscripten_replace_memory(newBuffer) {\n  if ((byteLength(newBuffer) & 0xffffff || byteLength(newBuffer) <= 0xffffff) || byteLength(newBuffer) > 0x80000000) return false;\n  HEAP8 = new Int8View(newBuffer);\n  HEAP16 = new Int16View(newBuffer);\n  HEAP32 = new Int32View(newBuffer);\n  HEAPU8 = new Uint8View(newBuffer);\n  HEAPU16 = new Uint16View(newBuffer);\n  HEAPU32 = new Uint32View(newBuffer);\n  HEAPF32 = new Float32View(newBuffer);\n  HEAPF64 = new Float64View(newBuffer);\n  buffer = newBuffer;\n  return true;\n}\n\n// EMSCRIPTEN_START_FUNCS\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) {\n $first = $first | 0;\n $last = $last | 0;\n $db = $db | 0;\n var $$0 = 0, $$0$i = 0, $$0$i$i = 0, $$0$i$i$i = 0, $$0$i$i$i$i = 0, $$0$i$i$i105 = 0, $$0$i$i$i113 = 0, $$0$i$i$i123 = 0, $$0$i$i$i131 = 0, $$0$i$i$i136 = 0, $$0$i$i$i148 = 0, $$0$i$i$i153 = 0, $$0$i$i$i17 = 0, $$0$i$i$i181 = 0, $$0$i$i$i191509 = 0, $$0$i$i$i22 = 0, $$0$i$i$i27 = 0, $$0$i$i$i29 = 0, $$0$i$i$i31 = 0, $$0$i$i$i38 = 0, $$0$i$i$i43 = 0, $$0$i$i$i51 = 0, $$0$i$i$i56 = 0, $$0$i$i$i61 = 0, $$0$i$i$i66 = 0, $$0$i$i$i71 = 0, $$0$i$i$i76 = 0, $$0$i$i$i81 = 0, $$0$i$i$i87 = 0, $$0$i$i$i95 = 0, $$01$i$i = 0, $$03$i$i = 0, $$08$i = 0, $$1$i$i = 0, $$1$i263 = 0, $$12$i$i = 0, $$13$i259$ph = 0, $$14$i$i = 0, $$2$i$i = 0, $$in = 0, $$lcssa667 = 0, $$lcssa674 = 0, $$lcssa682 = 0, $$lcssa690 = 0, $$lcssa698 = 0, $$lcssa706 = 0, $$ph390 = 0, $$pre$i$i$i$i = 0, $$pre$i$i$i$i203 = 0, $$pre$i$i$i21$i = 0, $$pre$i$i$i36$i = 0, $$pre$i$i$i52$i = 0, $$pre$i$i$i71$i = 0, $0 = 0, $1 = 0, $10 = 0, $1001 = 0, $1003 = 0, $1006 = 0, $101 = 0, $1010 = 0, $1013 = 0, $1018 = 0, $1019 = 0, $1022 = 0, $1023 = 0, $1025 = 0, $1026 = 0, $1035 = 0, $1038 = 0, $104 = 0, $1043 = 0, $1044 = 0, $1049 = 0, $1051 = 0, $1054 = 0, $1058 = 0, $1061 = 0, $1066 = 0, $1067 = 0, $107 = 0, $1070 = 0, $1071 = 0, $1073 = 0, $1074 = 0, $108 = 0, $1083 = 0, $1086 = 0, $1094 = 0, $1096 = 0, $11 = 0, $1100 = 0, $1101 = 0, $1103 = 0, $1110 = 0, $1112 = 0, $1120 = 0, $1121 = 0, $1122 = 0, $1123 = 0, $1126 = 0, $1129 = 0, $113 = 0, $1132 = 0, $1133 = 0, $1139 = 0, $1141 = 0, $1145 = 0, $115 = 0, $1151 = 0, $1152 = 0, $1153 = 0, $1159 = 0, $1161 = 0, $1164 = 0, $1165 = 0, $1166 = 0, $1168 = 0, $117 = 0, $1178 = 0, $1179 = 0, $1180 = 0, $1181 = 0, $1184 = 0, $1187 = 0, $119 = 0, $1190 = 0, $1191 = 0, $1196 = 0, $1197 = 0, $1198 = 0, $1199 = 0, $12 = 0, $120 = 0, $1201 = 0, $1202 = 0, $1203 = 0, $1205 = 0, $1210 = 0, $1217 = 0, $1219 = 0, $122 = 0, $1223 = 0, $1226 = 0, $1228 = 0, $123 = 0, $1233 = 0, $1237 = 0, $124 = 0, $1245 = 0, $1252 = 0, $1253 = 0, $1254 = 0, $1255 = 0, $1256 = 0, $1257 = 0, $126 = 0, $1269 = 0, $1270 = 0, $1271 = 0, $1274 = 0, $1277 = 0, $1283 = 0, $1289 = 0, $1290 = 0, $1291 = 0, $1297 = 0, $1299 = 0, $13 = 0, $1302 = 0, $1303 = 0, $1304 = 0, $1306 = 0, $1316 = 0, $1317 = 0, $1318 = 0, $1319 = 0, $1322 = 0, $1325 = 0, $1328 = 0, $1329 = 0, $1334 = 0, $1335 = 0, $1336 = 0, $1337 = 0, $1338 = 0, $1339 = 0, $134 = 0, $1340 = 0, $1342 = 0, $1343 = 0, $1344 = 0, $1346 = 0, $1351 = 0, $1358 = 0, $136 = 0, $1360 = 0, $1364 = 0, $1367 = 0, $1369 = 0, $1374 = 0, $1378 = 0, $1386 = 0, $1393 = 0, $1394 = 0, $1395 = 0, $1397 = 0, $14 = 0, $1402 = 0, $1409 = 0, $1411 = 0, $1415 = 0, $1418 = 0, $1420 = 0, $1425 = 0, $1426 = 0, $1427 = 0, $1428 = 0, $1432 = 0, $1436 = 0, $1439 = 0, $1443 = 0, $1444 = 0, $1446 = 0, $1449 = 0, $1455 = 0, $1458 = 0, $147 = 0, $1470 = 0, $1474 = 0, $1475 = 0, $1486 = 0, $1487 = 0, $1488 = 0, $1489 = 0, $149 = 0, $1490 = 0, $1491 = 0, $15 = 0, $1503 = 0, $1504 = 0, $1505 = 0, $1508 = 0, $1511 = 0, $1517 = 0, $1523 = 0, $1524 = 0, $1525 = 0, $1531 = 0, $1533 = 0, $1536 = 0, $1537 = 0, $1538 = 0, $1540 = 0, $1550 = 0, $1551 = 0, $1552 = 0, $1553 = 0, $1556 = 0, $1559 = 0, $1562 = 0, $1563 = 0, $1568 = 0, $1569 = 0, $1570 = 0, $1571 = 0, $1573 = 0, $1574 = 0, $1575 = 0, $1577 = 0, $1582 = 0, $1589 = 0, $1591 = 0, $1595 = 0, $1598 = 0, $16 = 0, $1600 = 0, $1605 = 0, $1609 = 0, $1617 = 0, $1624 = 0, $1625 = 0, $1626 = 0, $1627 = 0, $1628 = 0, $1629 = 0, $164 = 0, $1641 = 0, $1642 = 0, $1643 = 0, $1646 = 0, $1649 = 0, $165 = 0, $1655 = 0, $166 = 0, $1661 = 0, $1662 = 0, $1668 = 0, $167 = 0, $1670 = 0, $1671 = 0, $1673 = 0, $1674 = 0, $1675 = 0, $1676 = 0, $1677 = 0, $168 = 0, $1687 = 0, $1688 = 0, $1689 = 0, $169 = 0, $1690 = 0, $1693 = 0, $1696 = 0, $1699 = 0, $17 = 0, $1700 = 0, $1705 = 0, $1707 = 0, $1708 = 0, $1709 = 0, $1710 = 0, $1711 = 0, $1712 = 0, $1724 = 0, $1725 = 0, $1726 = 0, $1729 = 0, $1732 = 0, $1743 = 0, $1747 = 0, $1748 = 0, $1749 = 0, $1750 = 0, $1753 = 0, $1755 = 0, $1766 = 0, $1768 = 0, $1769 = 0, $1776 = 0, $1778 = 0, $1786 = 0, $1787 = 0, $1788 = 0, $1789 = 0, $1792 = 0, $1795 = 0, $1798 = 0, $1799 = 0, $18 = 0, $1805 = 0, $1807 = 0, $181 = 0, $1811 = 0, $1813 = 0, $1815 = 0, $1817 = 0, $1818 = 0, $182 = 0, $1826 = 0, $1827 = 0, $1828 = 0, $1829 = 0, $183 = 0, $1831 = 0, $1832 = 0, $1834 = 0, $1839 = 0, $1846 = 0, $1848 = 0, $1853 = 0, $1858 = 0, $186 = 0, $1860 = 0, $1866 = 0, $1869 = 0, $1871 = 0, $1881 = 0, $1884 = 0, $1885 = 0, $1886 = 0, $1887 = 0, $1889 = 0, $189 = 0, $1891 = 0, $1892 = 0, $1894 = 0, $1895 = 0, $1897 = 0, $19 = 0, $1903 = 0, $1912 = 0, $1915 = 0, $1917 = 0, $1927 = 0, $1930 = 0, $1933 = 0, $1935 = 0, $1942 = 0, $1945 = 0, $1947 = 0, $195 = 0, $1954 = 0, $1955 = 0, $1956 = 0, $1957 = 0, $1961 = 0, $1963 = 0, $1966 = 0, $1967 = 0, $197 = 0, $1970 = 0, $1973 = 0, $1974 = 0, $1975 = 0, $1977 = 0, $1984 = 0, $1986 = 0, $1994 = 0, $1995 = 0, $1996 = 0, $1997 = 0, $2 = 0, $20 = 0, $200 = 0, $2000 = 0, $2003 = 0, $2006 = 0, $2007 = 0, $2013 = 0, $2015 = 0, $2019 = 0, $202 = 0, $2023 = 0, $2027 = 0, $2029 = 0, $2033 = 0, $2034 = 0, $2036 = 0, $204 = 0, $2043 = 0, $2045 = 0, $205 = 0, $2053 = 0, $2054 = 0, $2055 = 0, $2056 = 0, $2059 = 0, $2062 = 0, $2065 = 0, $2066 = 0, $2072 = 0, $2074 = 0, $2078 = 0, $208 = 0, $2080 = 0, $2082 = 0, $2083 = 0, $209 = 0, $2091 = 0, $2092 = 0, $2093 = 0, $2094 = 0, $2097 = 0, $2099 = 0, $21 = 0, $211 = 0, $2110 = 0, $2113 = 0, $2114 = 0, $2115 = 0, $2117 = 0, $212 = 0, $2124 = 0, $2126 = 0, $2134 = 0, $2135 = 0, $2136 = 0, $2137 = 0, $214 = 0, $2140 = 0, $2143 = 0, $2146 = 0, $2147 = 0, $2153 = 0, $2155 = 0, $2159 = 0, $2161 = 0, $2163 = 0, $2169 = 0, $2170 = 0, $2171 = 0, $2177 = 0, $2179 = 0, $2182 = 0, $2183 = 0, $2184 = 0, $2186 = 0, $219 = 0, $2196 = 0, $2197 = 0, $2198 = 0, $2199 = 0, $22 = 0, $2202 = 0, $2205 = 0, $2208 = 0, $2209 = 0, $2214 = 0, $2216 = 0, $2217 = 0, $2218 = 0, $2219 = 0, $2220 = 0, $2221 = 0, $2233 = 0, $2234 = 0, $2235 = 0, $2238 = 0, $2241 = 0, $2247 = 0, $2251 = 0, $2253 = 0, $2257 = 0, $2258 = 0, $226 = 0, $2260 = 0, $2267 = 0, $2269 = 0, $2277 = 0, $2278 = 0, $2279 = 0, $228 = 0, $2280 = 0, $2283 = 0, $2286 = 0, $2289 = 0, $2290 = 0, $2296 = 0, $2298 = 0, $23 = 0, $2308 = 0, $2309 = 0, $2311 = 0, $2317 = 0, $2318 = 0, $2322 = 0, $2326 = 0, $2329 = 0, $233 = 0, $2332 = 0, $2335 = 0, $2337 = 0, $2347 = 0, $2348 = 0, $2351 = 0, $2354 = 0, $2355 = 0, $2357 = 0, $2364 = 0, $2365 = 0, $2366 = 0, $2367 = 0, $2371 = 0, $2373 = 0, $2376 = 0, $2377 = 0, $238 = 0, $2382 = 0, $2385 = 0, $2386 = 0, $2393 = 0, $2394 = 0, $2395 = 0, $2396 = 0, $2398 = 0, $24 = 0, $240 = 0, $2402 = 0, $2405 = 0, $2408 = 0, $2424 = 0, $2425 = 0, $2426 = 0, $2427 = 0, $2432 = 0, $2434 = 0, $2438 = 0, $2441 = 0, $2444 = 0, $2446 = 0, $2459 = 0, $2461 = 0, $2465 = 0, $2466 = 0, $2468 = 0, $2475 = 0, $2477 = 0, $2485 = 0, $2486 = 0, $2487 = 0, $2488 = 0, $2491 = 0, $2494 = 0, $2497 = 0, $2498 = 0, $25 = 0, $250 = 0, $2504 = 0, $2506 = 0, $2510 = 0, $2512 = 0, $2516 = 0, $2518 = 0, $2522 = 0, $2523 = 0, $2525 = 0, $2532 = 0, $2534 = 0, $254 = 0, $2542 = 0, $2543 = 0, $2544 = 0, $2545 = 0, $2548 = 0, $255 = 0, $2551 = 0, $2554 = 0, $2555 = 0, $2561 = 0, $2563 = 0, $2567 = 0, $2568 = 0, $2569 = 0, $2570 = 0, $2571 = 0, $2572 = 0, $2573 = 0, $258 = 0, $259 = 0, $26 = 0, $261 = 0, $262 = 0, $264 = 0, $269 = 0, $27 = 0, $276 = 0, $278 = 0, $28 = 0, $283 = 0, $288 = 0, $29 = 0, $290 = 0, $298 = 0, $3 = 0, $30 = 0, $301 = 0, $308 = 0, $309 = 0, $31 = 0, $318 = 0, $32 = 0, $321 = 0, $324 = 0, $326 = 0, $33 = 0, $336 = 0, $34 = 0, $341 = 0, $342 = 0, $344 = 0, $345 = 0, $35 = 0, $353 = 0, $354 = 0, $355 = 0, $356 = 0, $359 = 0, $36 = 0, $360 = 0, $365 = 0, $367 = 0, $37 = 0, $370 = 0, $374 = 0, $377 = 0, $38 = 0, $382 = 0, $383 = 0, $386 = 0, $387 = 0, $389 = 0, $39 = 0, $390 = 0, $399 = 0, $4 = 0, $40 = 0, $402 = 0, $407 = 0, $408 = 0, $41 = 0, $410 = 0, $411 = 0, $415 = 0, $416 = 0, $418 = 0, $42 = 0, $422 = 0, $424 = 0, $429 = 0, $43 = 0, $434 = 0, $436 = 0, $44 = 0, $441 = 0, $442 = 0, $443 = 0, $446 = 0, $449 = 0, $45 = 0, $451 = 0, $458 = 0, $46 = 0, $465 = 0, $467 = 0, $47 = 0, $470 = 0, $474 = 0, $477 = 0, $48 = 0, $482 = 0, $483 = 0, $486 = 0, $487 = 0, $489 = 0, $49 = 0, $490 = 0, $499 = 0, $5 = 0, $50 = 0, $502 = 0, $510 = 0, $512 = 0, $516 = 0, $517 = 0, $519 = 0, $526 = 0, $528 = 0, $536 = 0, $537 = 0, $538 = 0, $539 = 0, $54 = 0, $542 = 0, $545 = 0, $548 = 0, $549 = 0, $555 = 0, $557 = 0, $56 = 0, $561 = 0, $562 = 0, $565 = 0, $566 = 0, $569 = 0, $57 = 0, $571 = 0, $574 = 0, $575 = 0, $577 = 0, $584 = 0, $586 = 0, $594 = 0, $595 = 0, $596 = 0, $597 = 0, $6 = 0, $600 = 0, $603 = 0, $606 = 0, $607 = 0, $613 = 0, $615 = 0, $620 = 0, $624 = 0, $626 = 0, $628 = 0, $629 = 0, $63 = 0, $630 = 0, $631 = 0, $632 = 0, $635 = 0, $636 = 0, $637 = 0, $638 = 0, $64 = 0, $641 = 0, $644 = 0, $648 = 0, $657 = 0, $658 = 0, $664 = 0, $669 = 0, $679 = 0, $681 = 0, $690 = 0, $691 = 0, $692 = 0, $693 = 0, $698 = 0, $7 = 0, $70 = 0, $703 = 0, $705 = 0, $716 = 0, $718 = 0, $72 = 0, $722 = 0, $723 = 0, $725 = 0, $73 = 0, $732 = 0, $734 = 0, $74 = 0, $742 = 0, $743 = 0, $744 = 0, $745 = 0, $748 = 0, $75 = 0, $751 = 0, $754 = 0, $755 = 0, $76 = 0, $761 = 0, $763 = 0, $767 = 0, $768 = 0, $77 = 0, $771 = 0, $772 = 0, $775 = 0, $777 = 0, $780 = 0, $781 = 0, $783 = 0, $79 = 0, $790 = 0, $792 = 0, $8 = 0, $800 = 0, $801 = 0, $802 = 0, $803 = 0, $806 = 0, $809 = 0, $812 = 0, $813 = 0, $819 = 0, $82 = 0, $821 = 0, $826 = 0, $827 = 0, $829 = 0, $831 = 0, $832 = 0, $84 = 0, $840 = 0, $841 = 0, $842 = 0, $843 = 0, $846 = 0, $856 = 0, $857 = 0, $858 = 0, $86 = 0, $861 = 0, $863 = 0, $873 = 0, $876 = 0, $883 = 0, $885 = 0, $888 = 0, $892 = 0, $895 = 0, $9 = 0, $900 = 0, $901 = 0, $904 = 0, $905 = 0, $907 = 0, $908 = 0, $917 = 0, $920 = 0, $925 = 0, $926 = 0, $929 = 0, $934 = 0, $936 = 0, $939 = 0, $943 = 0, $946 = 0, $95 = 0, $951 = 0, $952 = 0, $955 = 0, $956 = 0, $958 = 0, $959 = 0, $96 = 0, $968 = 0, $97 = 0, $971 = 0, $976 = 0, $979 = 0, $98 = 0, $981 = 0, $991 = 0, $994 = 0, $__p$0$i$i$i508 = 0, $__p$0$ph$i$i$i = 0, $__v$i$i$i = 0, $args = 0, $cv = 0, $k$0$i515 = 0, $k$0560 = 0, $k11$0540 = 0, $k15$0543 = 0, $k2$0$i516 = 0, $k20$0550 = 0, $k5$0533 = 0, $k8$0536 = 0, $num1$i = 0, $p$0 = 0, $p$1 = 0, $p$2 = 0, $phitmp$i$i$i$i$i$i$i240 = 0, $phitmp$i2$i$i$i$i$i$i243 = 0, $proto = 0, $ref_qual$0$i$ph$ph = 0, $ref_qual$0$i$ph521 = 0, $ref_qual$0$i$ph521$lcssa = 0, $t$0$i = 0, $t$1$i$be = 0, $t$1$i$ph$ph = 0, $t$1$i$ph520 = 0, $t$1$i518 = 0, $t$1$i518$lcssa = 0, $t12$0$i = 0, $template_args = 0, $type = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 784 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $__v$i$i$i = sp + 752 | 0;\n $0 = sp + 728 | 0;\n $1 = sp + 716 | 0;\n $2 = sp + 704 | 0;\n $3 = sp + 680 | 0;\n $4 = sp + 656 | 0;\n $5 = sp + 632 | 0;\n $6 = sp + 620 | 0;\n $num1$i = sp + 608 | 0;\n $7 = sp + 596 | 0;\n $8 = sp + 584 | 0;\n $9 = sp + 572 | 0;\n $cv = sp + 568 | 0;\n $10 = sp + 552 | 0;\n $11 = sp + 544 | 0;\n $12 = sp + 528 | 0;\n $13 = sp + 520 | 0;\n $14 = sp + 504 | 0;\n $15 = sp + 496 | 0;\n $16 = sp + 480 | 0;\n $17 = sp + 472 | 0;\n $18 = sp + 456 | 0;\n $19 = sp + 452 | 0;\n $20 = sp + 440 | 0;\n $21 = sp + 428 | 0;\n $22 = sp + 416 | 0;\n $23 = sp + 404 | 0;\n $args = sp + 392 | 0;\n $24 = sp + 376 | 0;\n $25 = sp + 368 | 0;\n $type = sp + 356 | 0;\n $26 = sp + 344 | 0;\n $27 = sp + 320 | 0;\n $28 = sp + 308 | 0;\n $29 = sp + 296 | 0;\n $30 = sp + 284 | 0;\n $proto = sp + 272 | 0;\n $31 = sp + 248 | 0;\n $32 = sp + 236 | 0;\n $33 = sp + 224 | 0;\n $34 = sp + 212 | 0;\n $35 = sp + 200 | 0;\n $36 = sp + 176 | 0;\n $37 = sp + 164 | 0;\n $38 = sp + 152 | 0;\n $39 = sp + 136 | 0;\n $40 = sp + 128 | 0;\n $41 = sp + 112 | 0;\n $42 = sp + 108 | 0;\n $template_args = sp + 96 | 0;\n $43 = sp + 80 | 0;\n $44 = sp + 72 | 0;\n $45 = sp + 56 | 0;\n $46 = sp + 48 | 0;\n $47 = sp + 32 | 0;\n $48 = sp + 24 | 0;\n $49 = sp + 8 | 0;\n $50 = sp;\n L1 : do if (($first | 0) == ($last | 0)) $$0 = $first; else {\n  switch (HEAP8[$first >> 0] | 0) {\n  case 75:\n  case 86:\n  case 114:\n   {\n    HEAP32[$cv >> 2] = 0;\n    $54 = __ZN10__cxxabiv112_GLOBAL__N_119parse_cv_qualifiersEPKcS2_Rj($first, $last, $cv) | 0;\n    if (($54 | 0) == ($first | 0)) {\n     $$0 = $first;\n     break L1;\n    }\n    $56 = HEAP8[$54 >> 0] | 0;\n    $57 = $db + 4 | 0;\n    $63 = ((HEAP32[$57 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0;\n    $64 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($54, $last, $db) | 0;\n    $70 = ((HEAP32[$57 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0;\n    if (($64 | 0) == ($54 | 0)) {\n     $$0 = $first;\n     break L1;\n    }\n    $72 = $56 << 24 >> 24 == 70;\n    $73 = $db + 20 | 0;\n    $74 = HEAP32[$73 >> 2] | 0;\n    if ($72) {\n     $75 = $74 + -16 | 0;\n     $77 = $74;\n     do {\n      $76 = $77 + -16 | 0;\n      HEAP32[$73 >> 2] = $76;\n      __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($76);\n      $77 = HEAP32[$73 >> 2] | 0;\n     } while (($77 | 0) != ($75 | 0));\n     $86 = $75;\n    } else $86 = $74;\n    $79 = $db + 16 | 0;\n    $82 = HEAP32[$db + 12 >> 2] | 0;\n    $84 = HEAP32[$db + 24 >> 2] | 0;\n    if ($86 >>> 0 < $84 >>> 0) {\n     HEAP32[$86 >> 2] = 0;\n     HEAP32[$86 + 4 >> 2] = 0;\n     HEAP32[$86 + 8 >> 2] = 0;\n     HEAP32[$86 + 12 >> 2] = $82;\n     HEAP32[$73 >> 2] = (HEAP32[$73 >> 2] | 0) + 16;\n    } else {\n     $95 = HEAP32[$79 >> 2] | 0;\n     $96 = $86 - $95 | 0;\n     $97 = $96 >> 4;\n     $98 = $97 + 1 | 0;\n     if (($96 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($79);\n     $101 = $84 - $95 | 0;\n     if ($101 >> 4 >>> 0 < 1073741823) {\n      $104 = $101 >> 3;\n      $$0$i$i$i38 = $104 >>> 0 < $98 >>> 0 ? $98 : $104;\n     } else $$0$i$i$i38 = 2147483647;\n     __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i38, $97, $db + 28 | 0);\n     $107 = $__v$i$i$i + 8 | 0;\n     $108 = HEAP32[$107 >> 2] | 0;\n     HEAP32[$108 >> 2] = 0;\n     HEAP32[$108 + 4 >> 2] = 0;\n     HEAP32[$108 + 8 >> 2] = 0;\n     HEAP32[$108 + 12 >> 2] = $82;\n     HEAP32[$107 >> 2] = $108 + 16;\n     __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($79, $__v$i$i$i);\n     __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i);\n    }\n    $113 = HEAP32[$cv >> 2] | 0;\n    $115 = ($113 & 1 | 0) == 0;\n    $117 = ($113 & 2 | 0) == 0;\n    $119 = ($113 & 4 | 0) == 0;\n    $120 = $__v$i$i$i + 8 | 0;\n    if ($63 >>> 0 < $70 >>> 0) $k$0560 = $63; else {\n     $$0 = $64;\n     break L1;\n    }\n    while (1) {\n     if ($72) {\n      $122 = HEAP32[$db >> 2] | 0;\n      $123 = $122 + ($k$0560 * 24 | 0) + 12 | 0;\n      $124 = HEAP8[$123 >> 0] | 0;\n      $126 = ($124 & 1) == 0;\n      if ($126) {\n       $$in = ($124 & 255) >>> 1;\n       $136 = $123 + 1 | 0;\n      } else {\n       $$in = HEAP32[$122 + ($k$0560 * 24 | 0) + 16 >> 2] | 0;\n       $136 = HEAP32[$122 + ($k$0560 * 24 | 0) + 20 >> 2] | 0;\n      }\n      $134 = $$in + -2 | 0;\n      if ((HEAP8[$136 + $134 >> 0] | 0) == 38) $p$0 = $$in + -3 | 0; else {\n       if ($126) {\n        $147 = ($124 & 255) >>> 1;\n        $149 = $123 + 1 | 0;\n       } else {\n        $147 = HEAP32[$122 + ($k$0560 * 24 | 0) + 16 >> 2] | 0;\n        $149 = HEAP32[$122 + ($k$0560 * 24 | 0) + 20 >> 2] | 0;\n       }\n       $p$0 = (HEAP8[$149 + ($147 + -1) >> 0] | 0) == 38 ? $134 : $$in;\n      }\n      if ($115) $p$1 = $p$0; else {\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($123, $p$0, 12643) | 0;\n       $p$1 = $p$0 + 6 | 0;\n      }\n      if ($117) $p$2 = $p$1; else {\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc((HEAP32[$db >> 2] | 0) + ($k$0560 * 24 | 0) + 12 | 0, $p$1, 12650) | 0;\n       $p$2 = $p$1 + 9 | 0;\n      }\n      if (!$119) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc((HEAP32[$db >> 2] | 0) + ($k$0560 * 24 | 0) + 12 | 0, $p$2, 12660) | 0;\n     } else {\n      if (!$115) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[$db >> 2] | 0) + ($k$0560 * 24 | 0) | 0, 12643) | 0;\n      if (!$117) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[$db >> 2] | 0) + ($k$0560 * 24 | 0) | 0, 12650) | 0;\n      if (!$119) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[$db >> 2] | 0) + ($k$0560 * 24 | 0) | 0, 12660) | 0;\n     }\n     $164 = HEAP32[$73 >> 2] | 0;\n     $165 = $164 + -16 | 0;\n     $166 = HEAP32[$db >> 2] | 0;\n     $167 = $166 + ($k$0560 * 24 | 0) | 0;\n     $168 = $164 + -12 | 0;\n     $169 = HEAP32[$168 >> 2] | 0;\n     if (($169 | 0) == (HEAP32[$164 + -8 >> 2] | 0)) {\n      $181 = $169 - (HEAP32[$165 >> 2] | 0) | 0;\n      $182 = ($181 | 0) / 24 | 0;\n      $183 = $182 + 1 | 0;\n      if (($181 | 0) < -24) {\n       $$lcssa706 = $165;\n       break;\n      }\n      if ($182 >>> 0 < 1073741823) {\n       $186 = $182 << 1;\n       $$0$i$i$i43 = $186 >>> 0 < $183 >>> 0 ? $183 : $186;\n      } else $$0$i$i$i43 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i$i, $$0$i$i$i43, $182, $164 + -4 | 0);\n      $189 = HEAP32[$120 >> 2] | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($189, $167);\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($189 + 12 | 0, $166 + ($k$0560 * 24 | 0) + 12 | 0);\n      HEAP32[$120 >> 2] = $189 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($165, $__v$i$i$i);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i$i);\n     } else {\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($169, $167);\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($169 + 12 | 0, $166 + ($k$0560 * 24 | 0) + 12 | 0);\n      HEAP32[$168 >> 2] = (HEAP32[$168 >> 2] | 0) + 24;\n     }\n     $k$0560 = $k$0560 + 1 | 0;\n     if ($k$0560 >>> 0 >= $70 >>> 0) {\n      $$0 = $64;\n      break L1;\n     }\n    }\n    __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($$lcssa706);\n    break;\n   }\n  default:\n   {}\n  }\n  $195 = __ZN10__cxxabiv112_GLOBAL__N_118parse_builtin_typeINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;\n  if (($195 | 0) == ($first | 0)) {\n   $197 = HEAP8[$first >> 0] | 0;\n   L65 : do switch ($197 << 24 >> 24 | 0) {\n   case 65:\n    {\n     do if ($197 << 24 >> 24 == 65) {\n      $200 = $first + 1 | 0;\n      if (($200 | 0) == ($last | 0)) $$0$i = $first; else {\n       $202 = HEAP8[$200 >> 0] | 0;\n       if ($202 << 24 >> 24 == 95) {\n        $204 = $first + 2 | 0;\n        $205 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($204, $last, $db) | 0;\n        if (($205 | 0) == ($204 | 0)) {\n         $$0$i = $first;\n         break;\n        }\n        $208 = $db + 4 | 0;\n        $209 = HEAP32[$208 >> 2] | 0;\n        if ((HEAP32[$db >> 2] | 0) == ($209 | 0)) {\n         $$0$i = $first;\n         break;\n        }\n        $211 = $209 + -12 | 0;\n        $212 = HEAP8[$211 >> 0] | 0;\n        $214 = ($212 & 1) == 0;\n        $219 = $214 ? ($212 & 255) >>> 1 : HEAP32[$209 + -8 >> 2] | 0;\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($__v$i$i$i, $214 ? $211 + 1 | 0 : HEAP32[$209 + -4 >> 2] | 0, $219 >>> 0 < 2 ? $219 : 2);\n        $226 = HEAP8[$__v$i$i$i >> 0] | 0;\n        $228 = ($226 & 1) == 0;\n        $233 = $228 ? ($226 & 255) >>> 1 : HEAP32[$__v$i$i$i + 4 >> 2] | 0;\n        $238 = $233 >>> 0 > 2;\n        $240 = _memcmp($228 ? $__v$i$i$i + 1 | 0 : HEAP32[$__v$i$i$i + 8 >> 2] | 0, 12670, $238 ? 2 : $233) | 0;\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($__v$i$i$i);\n        if (!((($240 | 0) == 0 ? ($233 >>> 0 < 2 ? -1 : $238 & 1) : $240) | 0)) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE5eraseEjj((HEAP32[$208 >> 2] | 0) + -12 | 0);\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc((HEAP32[$208 >> 2] | 0) + -12 | 0, 0, 12673) | 0;\n        $$0$i = $205;\n        break;\n       }\n       if (($202 + -49 & 255) < 9) {\n        $250 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_($200, $last) | 0;\n        if (($250 | 0) == ($last | 0)) {\n         $$0$i = $first;\n         break;\n        }\n        if ((HEAP8[$250 >> 0] | 0) != 95) {\n         $$0$i = $first;\n         break;\n        }\n        $254 = $250 + 1 | 0;\n        $255 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($254, $last, $db) | 0;\n        if (($255 | 0) == ($254 | 0)) {\n         $$0$i = $first;\n         break;\n        }\n        $258 = $db + 4 | 0;\n        $259 = HEAP32[$258 >> 2] | 0;\n        if ((HEAP32[$db >> 2] | 0) == ($259 | 0)) {\n         $$0$i = $first;\n         break;\n        }\n        $261 = $259 + -12 | 0;\n        $262 = HEAP8[$261 >> 0] | 0;\n        $264 = ($262 & 1) == 0;\n        $269 = $264 ? ($262 & 255) >>> 1 : HEAP32[$259 + -8 >> 2] | 0;\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($0, $264 ? $261 + 1 | 0 : HEAP32[$259 + -4 >> 2] | 0, $269 >>> 0 < 2 ? $269 : 2);\n        $276 = HEAP8[$0 >> 0] | 0;\n        $278 = ($276 & 1) == 0;\n        $283 = $278 ? ($276 & 255) >>> 1 : HEAP32[$0 + 4 >> 2] | 0;\n        $288 = $283 >>> 0 > 2;\n        $290 = _memcmp($278 ? $0 + 1 | 0 : HEAP32[$0 + 8 >> 2] | 0, 12670, $288 ? 2 : $283) | 0;\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);\n        if (!((($290 | 0) == 0 ? ($283 >>> 0 < 2 ? -1 : $288 & 1) : $290) | 0)) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE5eraseEjj((HEAP32[$258 >> 2] | 0) + -12 | 0);\n        $298 = (HEAP32[$258 >> 2] | 0) + -12 | 0;\n        $301 = $250 - $200 | 0;\n        if ($301 >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv($3);\n        if ($301 >>> 0 < 11) {\n         HEAP8[$3 >> 0] = $301 << 1;\n         $__p$0$ph$i$i$i = $3 + 1 | 0;\n        } else {\n         $308 = $301 + 16 & -16;\n         $309 = _malloc($308) | 0;\n         HEAP32[$3 + 8 >> 2] = $309;\n         HEAP32[$3 >> 2] = $308 | 1;\n         HEAP32[$3 + 4 >> 2] = $301;\n         $__p$0$ph$i$i$i = $309;\n        }\n        if (($200 | 0) != ($250 | 0)) {\n         $$0$i$i$i191509 = $200;\n         $__p$0$i$i$i508 = $__p$0$ph$i$i$i;\n         while (1) {\n          HEAP8[$__p$0$i$i$i508 >> 0] = HEAP8[$$0$i$i$i191509 >> 0] | 0;\n          $$0$i$i$i191509 = $$0$i$i$i191509 + 1 | 0;\n          if (($$0$i$i$i191509 | 0) == ($250 | 0)) break; else $__p$0$i$i$i508 = $__p$0$i$i$i508 + 1 | 0;\n         }\n        }\n        HEAP8[$__p$0$ph$i$i$i + $301 >> 0] = 0;\n        $318 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($3, 0, 12670) | 0;\n        HEAP32[$2 >> 2] = HEAP32[$318 >> 2];\n        HEAP32[$2 + 4 >> 2] = HEAP32[$318 + 4 >> 2];\n        HEAP32[$2 + 8 >> 2] = HEAP32[$318 + 8 >> 2];\n        HEAP32[$318 >> 2] = 0;\n        HEAP32[$318 + 4 >> 2] = 0;\n        HEAP32[$318 + 8 >> 2] = 0;\n        $321 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($2, 12677) | 0;\n        HEAP32[$1 >> 2] = HEAP32[$321 >> 2];\n        HEAP32[$1 + 4 >> 2] = HEAP32[$321 + 4 >> 2];\n        HEAP32[$1 + 8 >> 2] = HEAP32[$321 + 8 >> 2];\n        HEAP32[$321 >> 2] = 0;\n        HEAP32[$321 + 4 >> 2] = 0;\n        HEAP32[$321 + 8 >> 2] = 0;\n        $324 = HEAP8[$1 >> 0] | 0;\n        $326 = ($324 & 1) == 0;\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKcj($298, 0, $326 ? $1 + 1 | 0 : HEAP32[$1 + 8 >> 2] | 0, $326 ? ($324 & 255) >>> 1 : HEAP32[$1 + 4 >> 2] | 0) | 0;\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);\n        $$0$i = $255;\n        break;\n       }\n       $336 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($200, $last, $db) | 0;\n       if (($336 | 0) == ($200 | 0) | ($336 | 0) == ($last | 0)) $$0$i = $first; else if ((HEAP8[$336 >> 0] | 0) == 95) {\n        $341 = $336 + 1 | 0;\n        $342 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($341, $last, $db) | 0;\n        if (($342 | 0) == ($341 | 0)) $$0$i = $first; else {\n         $344 = $db + 4 | 0;\n         $345 = HEAP32[$344 >> 2] | 0;\n         if ((($345 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$0$i = $first; else {\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($4, $345 + -24 | 0);\n          $353 = HEAP32[$344 >> 2] | 0;\n          $354 = $353 + -24 | 0;\n          $356 = $353;\n          do {\n           $355 = $356 + -24 | 0;\n           HEAP32[$344 >> 2] = $355;\n           __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($355);\n           $356 = HEAP32[$344 >> 2] | 0;\n          } while (($356 | 0) != ($354 | 0));\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($5, $353 + -48 | 0);\n          $359 = HEAP32[$344 >> 2] | 0;\n          $360 = $359 + -24 | 0;\n          do if (!(HEAP8[$360 >> 0] & 1)) {\n           HEAP8[$360 + 1 >> 0] = 0;\n           HEAP8[$360 >> 0] = 0;\n          } else {\n           $365 = $359 + -16 | 0;\n           HEAP8[HEAP32[$365 >> 2] >> 0] = 0;\n           $367 = $359 + -20 | 0;\n           HEAP32[$367 >> 2] = 0;\n           $$pre$i$i$i$i203 = HEAP8[$360 >> 0] | 0;\n           if (!($$pre$i$i$i$i203 & 1)) {\n            $374 = $$pre$i$i$i$i203;\n            $383 = 10;\n           } else {\n            $370 = HEAP32[$360 >> 2] | 0;\n            $374 = $370 & 255;\n            $383 = ($370 & -2) + -1 | 0;\n           }\n           if (!($374 & 1)) {\n            $377 = ($374 & 255) >>> 1;\n            if (($374 & 255) < 22) {\n             $2567 = 1;\n             $382 = 10;\n             $402 = $377;\n            } else {\n             $2567 = 1;\n             $382 = ($377 + 16 & 240) + -1 | 0;\n             $402 = $377;\n            }\n           } else {\n            $2567 = 0;\n            $382 = 10;\n            $402 = 0;\n           }\n           if (($382 | 0) != ($383 | 0)) {\n            if (($382 | 0) == 10) {\n             $389 = $360 + 1 | 0;\n             $390 = HEAP32[$365 >> 2] | 0;\n             if ($2567) {\n              _memcpy($389 | 0, $390 | 0, (($374 & 255) >>> 1) + 1 | 0) | 0;\n              _free($390);\n             } else {\n              HEAP8[$389 >> 0] = HEAP8[$390 >> 0] | 0;\n              _free($390);\n             }\n             HEAP8[$360 >> 0] = $402 << 1;\n             break;\n            }\n            $386 = $382 + 1 | 0;\n            $387 = _malloc($386) | 0;\n            if (!($382 >>> 0 <= $383 >>> 0 & ($387 | 0) == 0)) {\n             if ($2567) _memcpy($387 | 0, $360 + 1 | 0, (($374 & 255) >>> 1) + 1 | 0) | 0; else {\n              $399 = HEAP32[$365 >> 2] | 0;\n              HEAP8[$387 >> 0] = HEAP8[$399 >> 0] | 0;\n              _free($399);\n             }\n             HEAP32[$360 >> 2] = $386 | 1;\n             HEAP32[$367 >> 2] = $402;\n             HEAP32[$365 >> 2] = $387;\n            }\n           }\n          } while (0);\n          HEAP32[$360 >> 2] = HEAP32[$4 >> 2];\n          HEAP32[$360 + 4 >> 2] = HEAP32[$4 + 4 >> 2];\n          HEAP32[$360 + 8 >> 2] = HEAP32[$4 + 8 >> 2];\n          HEAP32[$4 >> 2] = 0;\n          HEAP32[$4 + 4 >> 2] = 0;\n          HEAP32[$4 + 8 >> 2] = 0;\n          $407 = $4 + 12 | 0;\n          $408 = HEAP8[$407 >> 0] | 0;\n          $410 = ($408 & 1) == 0;\n          $411 = $4 + 16 | 0;\n          $415 = $410 ? ($408 & 255) >>> 1 : HEAP32[$411 >> 2] | 0;\n          $416 = $4 + 20 | 0;\n          $418 = $407 + 1 | 0;\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($6, $410 ? $418 : HEAP32[$416 >> 2] | 0, $415 >>> 0 < 2 ? $415 : 2);\n          $422 = HEAP8[$6 >> 0] | 0;\n          $424 = ($422 & 1) == 0;\n          $429 = $424 ? ($422 & 255) >>> 1 : HEAP32[$6 + 4 >> 2] | 0;\n          $434 = $429 >>> 0 > 2;\n          $436 = _memcmp($424 ? $6 + 1 | 0 : HEAP32[$6 + 8 >> 2] | 0, 12670, $434 ? 2 : $429) | 0;\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($6);\n          if (!((($436 | 0) == 0 ? ($429 >>> 0 < 2 ? -1 : $434 & 1) : $436) | 0)) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE5eraseEjj($407);\n          $441 = HEAP32[$344 >> 2] | 0;\n          $442 = $441 + -12 | 0;\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($9, $5);\n          $443 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($9, 0, 12670) | 0;\n          HEAP32[$8 >> 2] = HEAP32[$443 >> 2];\n          HEAP32[$8 + 4 >> 2] = HEAP32[$443 + 4 >> 2];\n          HEAP32[$8 + 8 >> 2] = HEAP32[$443 + 8 >> 2];\n          HEAP32[$443 >> 2] = 0;\n          HEAP32[$443 + 4 >> 2] = 0;\n          HEAP32[$443 + 8 >> 2] = 0;\n          $446 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($8, 12677) | 0;\n          HEAP32[$7 >> 2] = HEAP32[$446 >> 2];\n          HEAP32[$7 + 4 >> 2] = HEAP32[$446 + 4 >> 2];\n          HEAP32[$7 + 8 >> 2] = HEAP32[$446 + 8 >> 2];\n          HEAP32[$446 >> 2] = 0;\n          HEAP32[$446 + 4 >> 2] = 0;\n          HEAP32[$446 + 8 >> 2] = 0;\n          $449 = HEAP8[$407 >> 0] | 0;\n          $451 = ($449 & 1) == 0;\n          $458 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($7, $451 ? $418 : HEAP32[$416 >> 2] | 0, $451 ? ($449 & 255) >>> 1 : HEAP32[$411 >> 2] | 0) | 0;\n          HEAP32[$num1$i >> 2] = HEAP32[$458 >> 2];\n          HEAP32[$num1$i + 4 >> 2] = HEAP32[$458 + 4 >> 2];\n          HEAP32[$num1$i + 8 >> 2] = HEAP32[$458 + 8 >> 2];\n          HEAP32[$458 >> 2] = 0;\n          HEAP32[$458 + 4 >> 2] = 0;\n          HEAP32[$458 + 8 >> 2] = 0;\n          do if (!(HEAP8[$442 >> 0] & 1)) {\n           HEAP8[$442 + 1 >> 0] = 0;\n           HEAP8[$442 >> 0] = 0;\n          } else {\n           $465 = $441 + -4 | 0;\n           HEAP8[HEAP32[$465 >> 2] >> 0] = 0;\n           $467 = $441 + -8 | 0;\n           HEAP32[$467 >> 2] = 0;\n           $$pre$i$i$i36$i = HEAP8[$442 >> 0] | 0;\n           if (!($$pre$i$i$i36$i & 1)) {\n            $474 = $$pre$i$i$i36$i;\n            $483 = 10;\n           } else {\n            $470 = HEAP32[$442 >> 2] | 0;\n            $474 = $470 & 255;\n            $483 = ($470 & -2) + -1 | 0;\n           }\n           do if (!($474 & 1)) {\n            $477 = ($474 & 255) >>> 1;\n            if (($474 & 255) < 22) {\n             $2568 = 1;\n             $482 = 10;\n             $502 = $477;\n             break;\n            }\n            $2568 = 1;\n            $482 = ($477 + 16 & 240) + -1 | 0;\n            $502 = $477;\n           } else {\n            $2568 = 0;\n            $482 = 10;\n            $502 = 0;\n           } while (0);\n           if (($482 | 0) != ($483 | 0)) {\n            if (($482 | 0) == 10) {\n             $489 = $442 + 1 | 0;\n             $490 = HEAP32[$465 >> 2] | 0;\n             if ($2568) {\n              _memcpy($489 | 0, $490 | 0, (($474 & 255) >>> 1) + 1 | 0) | 0;\n              _free($490);\n             } else {\n              HEAP8[$489 >> 0] = HEAP8[$490 >> 0] | 0;\n              _free($490);\n             }\n             HEAP8[$442 >> 0] = $502 << 1;\n             break;\n            }\n            $486 = $482 + 1 | 0;\n            $487 = _malloc($486) | 0;\n            if ($482 >>> 0 <= $483 >>> 0 & ($487 | 0) == 0) break;\n            if ($2568) _memcpy($487 | 0, $442 + 1 | 0, (($474 & 255) >>> 1) + 1 | 0) | 0; else {\n             $499 = HEAP32[$465 >> 2] | 0;\n             HEAP8[$487 >> 0] = HEAP8[$499 >> 0] | 0;\n             _free($499);\n            }\n            HEAP32[$442 >> 2] = $486 | 1;\n            HEAP32[$467 >> 2] = $502;\n            HEAP32[$465 >> 2] = $487;\n           }\n          } while (0);\n          HEAP32[$442 >> 2] = HEAP32[$num1$i >> 2];\n          HEAP32[$442 + 4 >> 2] = HEAP32[$num1$i + 4 >> 2];\n          HEAP32[$442 + 8 >> 2] = HEAP32[$num1$i + 8 >> 2];\n          HEAP32[$num1$i >> 2] = 0;\n          HEAP32[$num1$i + 4 >> 2] = 0;\n          HEAP32[$num1$i + 8 >> 2] = 0;\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($num1$i);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($7);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($8);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($9);\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($5);\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($4);\n          $$0$i = $342;\n         }\n        }\n       } else $$0$i = $first;\n      }\n     } else $$0$i = $first; while (0);\n     if (($$0$i | 0) == ($first | 0)) {\n      $$0 = $first;\n      break L1;\n     }\n     $510 = HEAP32[$db + 4 >> 2] | 0;\n     if ((HEAP32[$db >> 2] | 0) == ($510 | 0)) {\n      $$0 = $first;\n      break L1;\n     }\n     $512 = $db + 16 | 0;\n     HEAP32[$11 >> 2] = HEAP32[$db + 12 >> 2];\n     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($10, $510 + -24 | 0, $11);\n     $516 = $db + 20 | 0;\n     $517 = HEAP32[$516 >> 2] | 0;\n     $519 = HEAP32[$db + 24 >> 2] | 0;\n     if ($517 >>> 0 < $519 >>> 0) {\n      HEAP32[$517 + 12 >> 2] = HEAP32[$10 + 12 >> 2];\n      HEAP32[$517 >> 2] = HEAP32[$10 >> 2];\n      $526 = $10 + 4 | 0;\n      HEAP32[$517 + 4 >> 2] = HEAP32[$526 >> 2];\n      $528 = $10 + 8 | 0;\n      HEAP32[$517 + 8 >> 2] = HEAP32[$528 >> 2];\n      HEAP32[$528 >> 2] = 0;\n      HEAP32[$526 >> 2] = 0;\n      HEAP32[$10 >> 2] = 0;\n      HEAP32[$516 >> 2] = (HEAP32[$516 >> 2] | 0) + 16;\n     } else {\n      $536 = HEAP32[$512 >> 2] | 0;\n      $537 = $517 - $536 | 0;\n      $538 = $537 >> 4;\n      $539 = $538 + 1 | 0;\n      if (($537 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($512);\n      $542 = $519 - $536 | 0;\n      if ($542 >> 4 >>> 0 < 1073741823) {\n       $545 = $542 >> 3;\n       $$0$i$i$i56 = $545 >>> 0 < $539 >>> 0 ? $539 : $545;\n      } else $$0$i$i$i56 = 2147483647;\n      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i56, $538, $db + 28 | 0);\n      $548 = $__v$i$i$i + 8 | 0;\n      $549 = HEAP32[$548 >> 2] | 0;\n      HEAP32[$549 + 12 >> 2] = HEAP32[$10 + 12 >> 2];\n      HEAP32[$549 >> 2] = HEAP32[$10 >> 2];\n      $555 = $10 + 4 | 0;\n      HEAP32[$549 + 4 >> 2] = HEAP32[$555 >> 2];\n      $557 = $10 + 8 | 0;\n      HEAP32[$549 + 8 >> 2] = HEAP32[$557 >> 2];\n      HEAP32[$557 >> 2] = 0;\n      HEAP32[$555 >> 2] = 0;\n      HEAP32[$10 >> 2] = 0;\n      HEAP32[$548 >> 2] = $549 + 16;\n      __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($512, $__v$i$i$i);\n      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i);\n     }\n     __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($10);\n     $$0 = $$0$i;\n     break L1;\n     break;\n    }\n   case 67:\n    {\n     $561 = $first + 1 | 0;\n     $562 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($561, $last, $db) | 0;\n     if (($562 | 0) == ($561 | 0)) {\n      $$0 = $first;\n      break L1;\n     }\n     $565 = $db + 4 | 0;\n     $566 = HEAP32[$565 >> 2] | 0;\n     if ((HEAP32[$db >> 2] | 0) == ($566 | 0)) {\n      $$0 = $first;\n      break L1;\n     }\n     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($566 + -24 | 0, 12679) | 0;\n     $569 = $db + 16 | 0;\n     $571 = (HEAP32[$565 >> 2] | 0) + -24 | 0;\n     HEAP32[$13 >> 2] = HEAP32[$db + 12 >> 2];\n     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($12, $571, $13);\n     $574 = $db + 20 | 0;\n     $575 = HEAP32[$574 >> 2] | 0;\n     $577 = HEAP32[$db + 24 >> 2] | 0;\n     if ($575 >>> 0 < $577 >>> 0) {\n      HEAP32[$575 + 12 >> 2] = HEAP32[$12 + 12 >> 2];\n      HEAP32[$575 >> 2] = HEAP32[$12 >> 2];\n      $584 = $12 + 4 | 0;\n      HEAP32[$575 + 4 >> 2] = HEAP32[$584 >> 2];\n      $586 = $12 + 8 | 0;\n      HEAP32[$575 + 8 >> 2] = HEAP32[$586 >> 2];\n      HEAP32[$586 >> 2] = 0;\n      HEAP32[$584 >> 2] = 0;\n      HEAP32[$12 >> 2] = 0;\n      HEAP32[$574 >> 2] = (HEAP32[$574 >> 2] | 0) + 16;\n     } else {\n      $594 = HEAP32[$569 >> 2] | 0;\n      $595 = $575 - $594 | 0;\n      $596 = $595 >> 4;\n      $597 = $596 + 1 | 0;\n      if (($595 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($569);\n      $600 = $577 - $594 | 0;\n      if ($600 >> 4 >>> 0 < 1073741823) {\n       $603 = $600 >> 3;\n       $$0$i$i$i61 = $603 >>> 0 < $597 >>> 0 ? $597 : $603;\n      } else $$0$i$i$i61 = 2147483647;\n      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i61, $596, $db + 28 | 0);\n      $606 = $__v$i$i$i + 8 | 0;\n      $607 = HEAP32[$606 >> 2] | 0;\n      HEAP32[$607 + 12 >> 2] = HEAP32[$12 + 12 >> 2];\n      HEAP32[$607 >> 2] = HEAP32[$12 >> 2];\n      $613 = $12 + 4 | 0;\n      HEAP32[$607 + 4 >> 2] = HEAP32[$613 >> 2];\n      $615 = $12 + 8 | 0;\n      HEAP32[$607 + 8 >> 2] = HEAP32[$615 >> 2];\n      HEAP32[$615 >> 2] = 0;\n      HEAP32[$613 >> 2] = 0;\n      HEAP32[$12 >> 2] = 0;\n      HEAP32[$606 >> 2] = $607 + 16;\n      __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($569, $__v$i$i$i);\n      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i);\n     }\n     __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($12);\n     $$0 = $562;\n     break L1;\n     break;\n    }\n   case 70:\n    {\n     do if ($197 << 24 >> 24 == 70) {\n      $620 = $first + 1 | 0;\n      if (($620 | 0) != ($last | 0)) {\n       if ((HEAP8[$620 >> 0] | 0) == 89) {\n        $624 = $first + 2 | 0;\n        if (($624 | 0) == ($last | 0)) break; else $t$0$i = $624;\n       } else $t$0$i = $620;\n       $626 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($t$0$i, $last, $db) | 0;\n       if (($626 | 0) != ($t$0$i | 0)) {\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($__v$i$i$i, 12688, 1);\n        $628 = $db + 4 | 0;\n        $629 = $__v$i$i$i + 4 | 0;\n        $630 = $0 + 8 | 0;\n        $631 = $0 + 1 | 0;\n        $632 = $0 + 4 | 0;\n        L191 : do if (($626 | 0) == ($last | 0)) label = 144; else {\n         $ref_qual$0$i$ph521 = 0;\n         $t$1$i$ph520 = $626;\n         L192 : while (1) {\n          $t$1$i518 = $t$1$i$ph520;\n          L194 : while (1) {\n           switch (HEAP8[$t$1$i518 >> 0] | 0) {\n           case 69:\n            {\n             $ref_qual$0$i$ph521$lcssa = $ref_qual$0$i$ph521;\n             $t$1$i518$lcssa = $t$1$i518;\n             break L192;\n             break;\n            }\n           case 118:\n            {\n             $t$1$i$be = $t$1$i518 + 1 | 0;\n             break;\n            }\n           case 82:\n            {\n             $644 = $t$1$i518 + 1 | 0;\n             if (($644 | 0) == ($last | 0)) label = 154; else if ((HEAP8[$644 >> 0] | 0) == 69) {\n              $ref_qual$0$i$ph$ph = 1;\n              $t$1$i$ph$ph = $644;\n              break L194;\n             } else label = 154;\n             break;\n            }\n           case 79:\n            {\n             $648 = $t$1$i518 + 1 | 0;\n             if (($648 | 0) == ($last | 0)) label = 154; else if ((HEAP8[$648 >> 0] | 0) == 69) {\n              $ref_qual$0$i$ph$ph = 2;\n              $t$1$i$ph$ph = $648;\n              break L194;\n             } else label = 154;\n             break;\n            }\n           default:\n            label = 154;\n           }\n           if ((label | 0) == 154) {\n            label = 0;\n            $657 = ((HEAP32[$628 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0;\n            $658 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($t$1$i518, $last, $db) | 0;\n            $664 = ((HEAP32[$628 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0;\n            if (($658 | 0) == ($t$1$i518 | 0) | ($658 | 0) == ($last | 0)) break L191;\n            if ($657 >>> 0 < $664 >>> 0) {\n             $k$0$i515 = $657;\n             do {\n              $669 = HEAP8[$__v$i$i$i >> 0] | 0;\n              if ((($669 & 1) == 0 ? ($669 & 255) >>> 1 : HEAP32[$629 >> 2] | 0) >>> 0 > 1) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($__v$i$i$i, 12690) | 0;\n              __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($0, (HEAP32[$db >> 2] | 0) + ($k$0$i515 * 24 | 0) | 0);\n              $679 = HEAP8[$0 >> 0] | 0;\n              $681 = ($679 & 1) == 0;\n              __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($__v$i$i$i, $681 ? $631 : HEAP32[$630 >> 2] | 0, $681 ? ($679 & 255) >>> 1 : HEAP32[$632 >> 2] | 0) | 0;\n              __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);\n              $k$0$i515 = $k$0$i515 + 1 | 0;\n             } while ($k$0$i515 >>> 0 < $664 >>> 0);\n            }\n            if ($657 >>> 0 < $664 >>> 0) {\n             $k2$0$i516 = $657;\n             do {\n              $690 = HEAP32[$628 >> 2] | 0;\n              $691 = $690 + -24 | 0;\n              $693 = $690;\n              do {\n               $692 = $693 + -24 | 0;\n               HEAP32[$628 >> 2] = $692;\n               __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($692);\n               $693 = HEAP32[$628 >> 2] | 0;\n              } while (($693 | 0) != ($691 | 0));\n              $k2$0$i516 = $k2$0$i516 + 1 | 0;\n             } while ($k2$0$i516 >>> 0 < $664 >>> 0);\n             $t$1$i$be = $658;\n            } else $t$1$i$be = $658;\n           }\n           if (($t$1$i$be | 0) == ($last | 0)) {\n            label = 144;\n            break L191;\n           } else $t$1$i518 = $t$1$i$be;\n          }\n          if (($t$1$i$ph$ph | 0) == ($last | 0)) {\n           label = 144;\n           break L191;\n          } else {\n           $ref_qual$0$i$ph521 = $ref_qual$0$i$ph$ph;\n           $t$1$i$ph520 = $t$1$i$ph$ph;\n          }\n         }\n         $641 = $t$1$i518$lcssa + 1 | 0;\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($__v$i$i$i, 12593) | 0;\n         switch ($ref_qual$0$i$ph521$lcssa | 0) {\n         case 1:\n          {\n           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($__v$i$i$i, 12693) | 0;\n           break;\n          }\n         case 2:\n          {\n           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($__v$i$i$i, 12696) | 0;\n           break;\n          }\n         default:\n          {}\n         }\n         $698 = HEAP32[$628 >> 2] | 0;\n         if ((HEAP32[$db >> 2] | 0) != ($698 | 0)) {\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($698 + -24 | 0, 12700) | 0;\n          $703 = HEAP8[$__v$i$i$i >> 0] | 0;\n          $705 = ($703 & 1) == 0;\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKcj((HEAP32[$628 >> 2] | 0) + -12 | 0, 0, $705 ? $__v$i$i$i + 1 | 0 : HEAP32[$__v$i$i$i + 8 >> 2] | 0, $705 ? ($703 & 255) >>> 1 : HEAP32[$629 >> 2] | 0) | 0;\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($__v$i$i$i);\n          if (($641 | 0) == ($first | 0)) {\n           $$0 = $first;\n           break L1;\n          }\n          $716 = HEAP32[$628 >> 2] | 0;\n          if ((HEAP32[$db >> 2] | 0) == ($716 | 0)) {\n           $$0 = $first;\n           break L1;\n          }\n          $718 = $db + 16 | 0;\n          HEAP32[$15 >> 2] = HEAP32[$db + 12 >> 2];\n          __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($14, $716 + -24 | 0, $15);\n          $722 = $db + 20 | 0;\n          $723 = HEAP32[$722 >> 2] | 0;\n          $725 = HEAP32[$db + 24 >> 2] | 0;\n          if ($723 >>> 0 < $725 >>> 0) {\n           HEAP32[$723 + 12 >> 2] = HEAP32[$14 + 12 >> 2];\n           HEAP32[$723 >> 2] = HEAP32[$14 >> 2];\n           $732 = $14 + 4 | 0;\n           HEAP32[$723 + 4 >> 2] = HEAP32[$732 >> 2];\n           $734 = $14 + 8 | 0;\n           HEAP32[$723 + 8 >> 2] = HEAP32[$734 >> 2];\n           HEAP32[$734 >> 2] = 0;\n           HEAP32[$732 >> 2] = 0;\n           HEAP32[$14 >> 2] = 0;\n           HEAP32[$722 >> 2] = (HEAP32[$722 >> 2] | 0) + 16;\n          } else {\n           $742 = HEAP32[$718 >> 2] | 0;\n           $743 = $723 - $742 | 0;\n           $744 = $743 >> 4;\n           $745 = $744 + 1 | 0;\n           if (($743 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($718);\n           $748 = $725 - $742 | 0;\n           if ($748 >> 4 >>> 0 < 1073741823) {\n            $751 = $748 >> 3;\n            $$0$i$i$i66 = $751 >>> 0 < $745 >>> 0 ? $745 : $751;\n           } else $$0$i$i$i66 = 2147483647;\n           __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i66, $744, $db + 28 | 0);\n           $754 = $__v$i$i$i + 8 | 0;\n           $755 = HEAP32[$754 >> 2] | 0;\n           HEAP32[$755 + 12 >> 2] = HEAP32[$14 + 12 >> 2];\n           HEAP32[$755 >> 2] = HEAP32[$14 >> 2];\n           $761 = $14 + 4 | 0;\n           HEAP32[$755 + 4 >> 2] = HEAP32[$761 >> 2];\n           $763 = $14 + 8 | 0;\n           HEAP32[$755 + 8 >> 2] = HEAP32[$763 >> 2];\n           HEAP32[$763 >> 2] = 0;\n           HEAP32[$761 >> 2] = 0;\n           HEAP32[$14 >> 2] = 0;\n           HEAP32[$754 >> 2] = $755 + 16;\n           __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($718, $__v$i$i$i);\n           __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i);\n          }\n          __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($14);\n          $$0 = $641;\n          break L1;\n         }\n        } while (0);\n        if ((label | 0) == 144) {\n         $635 = HEAP32[$628 >> 2] | 0;\n         $636 = $635 + -24 | 0;\n         $638 = $635;\n         do {\n          $637 = $638 + -24 | 0;\n          HEAP32[$628 >> 2] = $637;\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($637);\n          $638 = HEAP32[$628 >> 2] | 0;\n         } while (($638 | 0) != ($636 | 0));\n        }\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($__v$i$i$i);\n       }\n      }\n     } while (0);\n     $$0 = $first;\n     break L1;\n     break;\n    }\n   case 71:\n    {\n     $767 = $first + 1 | 0;\n     $768 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($767, $last, $db) | 0;\n     if (($768 | 0) == ($767 | 0)) {\n      $$0 = $first;\n      break L1;\n     }\n     $771 = $db + 4 | 0;\n     $772 = HEAP32[$771 >> 2] | 0;\n     if ((HEAP32[$db >> 2] | 0) == ($772 | 0)) {\n      $$0 = $first;\n      break L1;\n     }\n     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($772 + -24 | 0, 12702) | 0;\n     $775 = $db + 16 | 0;\n     $777 = (HEAP32[$771 >> 2] | 0) + -24 | 0;\n     HEAP32[$17 >> 2] = HEAP32[$db + 12 >> 2];\n     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($16, $777, $17);\n     $780 = $db + 20 | 0;\n     $781 = HEAP32[$780 >> 2] | 0;\n     $783 = HEAP32[$db + 24 >> 2] | 0;\n     if ($781 >>> 0 < $783 >>> 0) {\n      HEAP32[$781 + 12 >> 2] = HEAP32[$16 + 12 >> 2];\n      HEAP32[$781 >> 2] = HEAP32[$16 >> 2];\n      $790 = $16 + 4 | 0;\n      HEAP32[$781 + 4 >> 2] = HEAP32[$790 >> 2];\n      $792 = $16 + 8 | 0;\n      HEAP32[$781 + 8 >> 2] = HEAP32[$792 >> 2];\n      HEAP32[$792 >> 2] = 0;\n      HEAP32[$790 >> 2] = 0;\n      HEAP32[$16 >> 2] = 0;\n      HEAP32[$780 >> 2] = (HEAP32[$780 >> 2] | 0) + 16;\n     } else {\n      $800 = HEAP32[$775 >> 2] | 0;\n      $801 = $781 - $800 | 0;\n      $802 = $801 >> 4;\n      $803 = $802 + 1 | 0;\n      if (($801 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($775);\n      $806 = $783 - $800 | 0;\n      if ($806 >> 4 >>> 0 < 1073741823) {\n       $809 = $806 >> 3;\n       $$0$i$i$i71 = $809 >>> 0 < $803 >>> 0 ? $803 : $809;\n      } else $$0$i$i$i71 = 2147483647;\n      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i71, $802, $db + 28 | 0);\n      $812 = $__v$i$i$i + 8 | 0;\n      $813 = HEAP32[$812 >> 2] | 0;\n      HEAP32[$813 + 12 >> 2] = HEAP32[$16 + 12 >> 2];\n      HEAP32[$813 >> 2] = HEAP32[$16 >> 2];\n      $819 = $16 + 4 | 0;\n      HEAP32[$813 + 4 >> 2] = HEAP32[$819 >> 2];\n      $821 = $16 + 8 | 0;\n      HEAP32[$813 + 8 >> 2] = HEAP32[$821 >> 2];\n      HEAP32[$821 >> 2] = 0;\n      HEAP32[$819 >> 2] = 0;\n      HEAP32[$16 >> 2] = 0;\n      HEAP32[$812 >> 2] = $813 + 16;\n      __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($775, $__v$i$i$i);\n      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i);\n     }\n     __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($16);\n     $$0 = $768;\n     break L1;\n     break;\n    }\n   case 77:\n    {\n     if ($197 << 24 >> 24 == 77) {\n      $826 = $first + 1 | 0;\n      $827 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($826, $last, $db) | 0;\n      if (($827 | 0) == ($826 | 0)) $$08$i = $first; else {\n       $829 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($827, $last, $db) | 0;\n       if (($829 | 0) == ($827 | 0)) $$08$i = $first; else {\n        $831 = $db + 4 | 0;\n        $832 = HEAP32[$831 >> 2] | 0;\n        if ((($832 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$08$i = $first; else {\n         __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($__v$i$i$i, $832 + -24 | 0);\n         $840 = HEAP32[$831 >> 2] | 0;\n         $841 = $840 + -24 | 0;\n         $843 = $840;\n         do {\n          $842 = $843 + -24 | 0;\n          HEAP32[$831 >> 2] = $842;\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($842);\n          $843 = HEAP32[$831 >> 2] | 0;\n         } while (($843 | 0) != ($841 | 0));\n         __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($0, $840 + -48 | 0);\n         $846 = $__v$i$i$i + 12 | 0;\n         $856 = HEAP32[$831 >> 2] | 0;\n         $857 = $856 + -24 | 0;\n         if ((HEAP8[((HEAP8[$846 >> 0] & 1) == 0 ? $846 + 1 | 0 : HEAP32[$__v$i$i$i + 20 >> 2] | 0) >> 0] | 0) == 40) {\n          $858 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($__v$i$i$i, 12688) | 0;\n          HEAP32[$3 >> 2] = HEAP32[$858 >> 2];\n          HEAP32[$3 + 4 >> 2] = HEAP32[$858 + 4 >> 2];\n          HEAP32[$3 + 8 >> 2] = HEAP32[$858 + 8 >> 2];\n          HEAP32[$858 >> 2] = 0;\n          HEAP32[$858 + 4 >> 2] = 0;\n          HEAP32[$858 + 8 >> 2] = 0;\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($4, $0);\n          $861 = HEAP8[$4 >> 0] | 0;\n          $863 = ($861 & 1) == 0;\n          $873 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($3, $863 ? $4 + 1 | 0 : HEAP32[$4 + 8 >> 2] | 0, $863 ? ($861 & 255) >>> 1 : HEAP32[$4 + 4 >> 2] | 0) | 0;\n          HEAP32[$2 >> 2] = HEAP32[$873 >> 2];\n          HEAP32[$2 + 4 >> 2] = HEAP32[$873 + 4 >> 2];\n          HEAP32[$2 + 8 >> 2] = HEAP32[$873 + 8 >> 2];\n          HEAP32[$873 >> 2] = 0;\n          HEAP32[$873 + 4 >> 2] = 0;\n          HEAP32[$873 + 8 >> 2] = 0;\n          $876 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($2, 12713) | 0;\n          HEAP32[$1 >> 2] = HEAP32[$876 >> 2];\n          HEAP32[$1 + 4 >> 2] = HEAP32[$876 + 4 >> 2];\n          HEAP32[$1 + 8 >> 2] = HEAP32[$876 + 8 >> 2];\n          HEAP32[$876 >> 2] = 0;\n          HEAP32[$876 + 4 >> 2] = 0;\n          HEAP32[$876 + 8 >> 2] = 0;\n          do if (!(HEAP8[$857 >> 0] & 1)) {\n           HEAP8[$857 + 1 >> 0] = 0;\n           HEAP8[$857 >> 0] = 0;\n          } else {\n           $883 = $856 + -16 | 0;\n           HEAP8[HEAP32[$883 >> 2] >> 0] = 0;\n           $885 = $856 + -20 | 0;\n           HEAP32[$885 >> 2] = 0;\n           $$pre$i$i$i$i = HEAP8[$857 >> 0] | 0;\n           if (!($$pre$i$i$i$i & 1)) {\n            $892 = $$pre$i$i$i$i;\n            $901 = 10;\n           } else {\n            $888 = HEAP32[$857 >> 2] | 0;\n            $892 = $888 & 255;\n            $901 = ($888 & -2) + -1 | 0;\n           }\n           if (!($892 & 1)) {\n            $895 = ($892 & 255) >>> 1;\n            if (($892 & 255) < 22) {\n             $2569 = 1;\n             $900 = 10;\n             $920 = $895;\n            } else {\n             $2569 = 1;\n             $900 = ($895 + 16 & 240) + -1 | 0;\n             $920 = $895;\n            }\n           } else {\n            $2569 = 0;\n            $900 = 10;\n            $920 = 0;\n           }\n           if (($900 | 0) != ($901 | 0)) {\n            if (($900 | 0) == 10) {\n             $907 = $857 + 1 | 0;\n             $908 = HEAP32[$883 >> 2] | 0;\n             if ($2569) {\n              _memcpy($907 | 0, $908 | 0, (($892 & 255) >>> 1) + 1 | 0) | 0;\n              _free($908);\n             } else {\n              HEAP8[$907 >> 0] = HEAP8[$908 >> 0] | 0;\n              _free($908);\n             }\n             HEAP8[$857 >> 0] = $920 << 1;\n             break;\n            }\n            $904 = $900 + 1 | 0;\n            $905 = _malloc($904) | 0;\n            if (!($900 >>> 0 <= $901 >>> 0 & ($905 | 0) == 0)) {\n             if ($2569) _memcpy($905 | 0, $857 + 1 | 0, (($892 & 255) >>> 1) + 1 | 0) | 0; else {\n              $917 = HEAP32[$883 >> 2] | 0;\n              HEAP8[$905 >> 0] = HEAP8[$917 >> 0] | 0;\n              _free($917);\n             }\n             HEAP32[$857 >> 2] = $904 | 1;\n             HEAP32[$885 >> 2] = $920;\n             HEAP32[$883 >> 2] = $905;\n            }\n           }\n          } while (0);\n          HEAP32[$857 >> 2] = HEAP32[$1 >> 2];\n          HEAP32[$857 + 4 >> 2] = HEAP32[$1 + 4 >> 2];\n          HEAP32[$857 + 8 >> 2] = HEAP32[$1 + 8 >> 2];\n          HEAP32[$1 >> 2] = 0;\n          HEAP32[$1 + 4 >> 2] = 0;\n          HEAP32[$1 + 8 >> 2] = 0;\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);\n          $925 = HEAP32[$831 >> 2] | 0;\n          $926 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($846, 0, 12593) | 0;\n          HEAP32[$5 >> 2] = HEAP32[$926 >> 2];\n          HEAP32[$5 + 4 >> 2] = HEAP32[$926 + 4 >> 2];\n          HEAP32[$5 + 8 >> 2] = HEAP32[$926 + 8 >> 2];\n          HEAP32[$926 >> 2] = 0;\n          HEAP32[$926 + 4 >> 2] = 0;\n          HEAP32[$926 + 8 >> 2] = 0;\n          $929 = $925 + -12 | 0;\n          do if (!(HEAP8[$929 >> 0] & 1)) {\n           HEAP8[$929 + 1 >> 0] = 0;\n           HEAP8[$929 >> 0] = 0;\n          } else {\n           $934 = $925 + -4 | 0;\n           HEAP8[HEAP32[$934 >> 2] >> 0] = 0;\n           $936 = $925 + -8 | 0;\n           HEAP32[$936 >> 2] = 0;\n           $$pre$i$i$i21$i = HEAP8[$929 >> 0] | 0;\n           if (!($$pre$i$i$i21$i & 1)) {\n            $943 = $$pre$i$i$i21$i;\n            $952 = 10;\n           } else {\n            $939 = HEAP32[$929 >> 2] | 0;\n            $943 = $939 & 255;\n            $952 = ($939 & -2) + -1 | 0;\n           }\n           if (!($943 & 1)) {\n            $946 = ($943 & 255) >>> 1;\n            if (($943 & 255) < 22) {\n             $2570 = 1;\n             $951 = 10;\n             $971 = $946;\n            } else {\n             $2570 = 1;\n             $951 = ($946 + 16 & 240) + -1 | 0;\n             $971 = $946;\n            }\n           } else {\n            $2570 = 0;\n            $951 = 10;\n            $971 = 0;\n           }\n           if (($951 | 0) != ($952 | 0)) {\n            if (($951 | 0) == 10) {\n             $958 = $929 + 1 | 0;\n             $959 = HEAP32[$934 >> 2] | 0;\n             if ($2570) {\n              _memcpy($958 | 0, $959 | 0, (($943 & 255) >>> 1) + 1 | 0) | 0;\n              _free($959);\n             } else {\n              HEAP8[$958 >> 0] = HEAP8[$959 >> 0] | 0;\n              _free($959);\n             }\n             HEAP8[$929 >> 0] = $971 << 1;\n             break;\n            }\n            $955 = $951 + 1 | 0;\n            $956 = _malloc($955) | 0;\n            if (!($951 >>> 0 <= $952 >>> 0 & ($956 | 0) == 0)) {\n             if ($2570) _memcpy($956 | 0, $929 + 1 | 0, (($943 & 255) >>> 1) + 1 | 0) | 0; else {\n              $968 = HEAP32[$934 >> 2] | 0;\n              HEAP8[$956 >> 0] = HEAP8[$968 >> 0] | 0;\n              _free($968);\n             }\n             HEAP32[$929 >> 2] = $955 | 1;\n             HEAP32[$936 >> 2] = $971;\n             HEAP32[$934 >> 2] = $956;\n            }\n           }\n          } while (0);\n          HEAP32[$929 >> 2] = HEAP32[$5 >> 2];\n          HEAP32[$929 + 4 >> 2] = HEAP32[$5 + 4 >> 2];\n          HEAP32[$929 + 8 >> 2] = HEAP32[$5 + 8 >> 2];\n          HEAP32[$5 >> 2] = 0;\n          HEAP32[$5 + 4 >> 2] = 0;\n          HEAP32[$5 + 8 >> 2] = 0;\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($5);\n         } else {\n          $976 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($__v$i$i$i, 12700) | 0;\n          HEAP32[$7 >> 2] = HEAP32[$976 >> 2];\n          HEAP32[$7 + 4 >> 2] = HEAP32[$976 + 4 >> 2];\n          HEAP32[$7 + 8 >> 2] = HEAP32[$976 + 8 >> 2];\n          HEAP32[$976 >> 2] = 0;\n          HEAP32[$976 + 4 >> 2] = 0;\n          HEAP32[$976 + 8 >> 2] = 0;\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($8, $0);\n          $979 = HEAP8[$8 >> 0] | 0;\n          $981 = ($979 & 1) == 0;\n          $991 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($7, $981 ? $8 + 1 | 0 : HEAP32[$8 + 8 >> 2] | 0, $981 ? ($979 & 255) >>> 1 : HEAP32[$8 + 4 >> 2] | 0) | 0;\n          HEAP32[$num1$i >> 2] = HEAP32[$991 >> 2];\n          HEAP32[$num1$i + 4 >> 2] = HEAP32[$991 + 4 >> 2];\n          HEAP32[$num1$i + 8 >> 2] = HEAP32[$991 + 8 >> 2];\n          HEAP32[$991 >> 2] = 0;\n          HEAP32[$991 + 4 >> 2] = 0;\n          HEAP32[$991 + 8 >> 2] = 0;\n          $994 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($num1$i, 12713) | 0;\n          HEAP32[$6 >> 2] = HEAP32[$994 >> 2];\n          HEAP32[$6 + 4 >> 2] = HEAP32[$994 + 4 >> 2];\n          HEAP32[$6 + 8 >> 2] = HEAP32[$994 + 8 >> 2];\n          HEAP32[$994 >> 2] = 0;\n          HEAP32[$994 + 4 >> 2] = 0;\n          HEAP32[$994 + 8 >> 2] = 0;\n          do if (!(HEAP8[$857 >> 0] & 1)) {\n           HEAP8[$857 + 1 >> 0] = 0;\n           HEAP8[$857 >> 0] = 0;\n          } else {\n           $1001 = $856 + -16 | 0;\n           HEAP8[HEAP32[$1001 >> 2] >> 0] = 0;\n           $1003 = $856 + -20 | 0;\n           HEAP32[$1003 >> 2] = 0;\n           $$pre$i$i$i52$i = HEAP8[$857 >> 0] | 0;\n           if (!($$pre$i$i$i52$i & 1)) {\n            $1010 = $$pre$i$i$i52$i;\n            $1019 = 10;\n           } else {\n            $1006 = HEAP32[$857 >> 2] | 0;\n            $1010 = $1006 & 255;\n            $1019 = ($1006 & -2) + -1 | 0;\n           }\n           if (!($1010 & 1)) {\n            $1013 = ($1010 & 255) >>> 1;\n            if (($1010 & 255) < 22) {\n             $1018 = 10;\n             $1038 = $1013;\n             $2571 = 1;\n            } else {\n             $1018 = ($1013 + 16 & 240) + -1 | 0;\n             $1038 = $1013;\n             $2571 = 1;\n            }\n           } else {\n            $1018 = 10;\n            $1038 = 0;\n            $2571 = 0;\n           }\n           if (($1018 | 0) != ($1019 | 0)) {\n            if (($1018 | 0) == 10) {\n             $1025 = $857 + 1 | 0;\n             $1026 = HEAP32[$1001 >> 2] | 0;\n             if ($2571) {\n              _memcpy($1025 | 0, $1026 | 0, (($1010 & 255) >>> 1) + 1 | 0) | 0;\n              _free($1026);\n             } else {\n              HEAP8[$1025 >> 0] = HEAP8[$1026 >> 0] | 0;\n              _free($1026);\n             }\n             HEAP8[$857 >> 0] = $1038 << 1;\n             break;\n            }\n            $1022 = $1018 + 1 | 0;\n            $1023 = _malloc($1022) | 0;\n            if (!($1018 >>> 0 <= $1019 >>> 0 & ($1023 | 0) == 0)) {\n             if ($2571) _memcpy($1023 | 0, $857 + 1 | 0, (($1010 & 255) >>> 1) + 1 | 0) | 0; else {\n              $1035 = HEAP32[$1001 >> 2] | 0;\n              HEAP8[$1023 >> 0] = HEAP8[$1035 >> 0] | 0;\n              _free($1035);\n             }\n             HEAP32[$857 >> 2] = $1022 | 1;\n             HEAP32[$1003 >> 2] = $1038;\n             HEAP32[$1001 >> 2] = $1023;\n            }\n           }\n          } while (0);\n          HEAP32[$857 >> 2] = HEAP32[$6 >> 2];\n          HEAP32[$857 + 4 >> 2] = HEAP32[$6 + 4 >> 2];\n          HEAP32[$857 + 8 >> 2] = HEAP32[$6 + 8 >> 2];\n          HEAP32[$6 >> 2] = 0;\n          HEAP32[$6 + 4 >> 2] = 0;\n          HEAP32[$6 + 8 >> 2] = 0;\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($6);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($num1$i);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($8);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($7);\n          $1043 = HEAP32[$831 >> 2] | 0;\n          $1044 = $1043 + -12 | 0;\n          do if (!(HEAP8[$1044 >> 0] & 1)) {\n           HEAP8[$1044 + 1 >> 0] = 0;\n           HEAP8[$1044 >> 0] = 0;\n          } else {\n           $1049 = $1043 + -4 | 0;\n           HEAP8[HEAP32[$1049 >> 2] >> 0] = 0;\n           $1051 = $1043 + -8 | 0;\n           HEAP32[$1051 >> 2] = 0;\n           $$pre$i$i$i71$i = HEAP8[$1044 >> 0] | 0;\n           if (!($$pre$i$i$i71$i & 1)) {\n            $1058 = $$pre$i$i$i71$i;\n            $1067 = 10;\n           } else {\n            $1054 = HEAP32[$1044 >> 2] | 0;\n            $1058 = $1054 & 255;\n            $1067 = ($1054 & -2) + -1 | 0;\n           }\n           if (!($1058 & 1)) {\n            $1061 = ($1058 & 255) >>> 1;\n            if (($1058 & 255) < 22) {\n             $1066 = 10;\n             $1086 = $1061;\n             $2572 = 1;\n            } else {\n             $1066 = ($1061 + 16 & 240) + -1 | 0;\n             $1086 = $1061;\n             $2572 = 1;\n            }\n           } else {\n            $1066 = 10;\n            $1086 = 0;\n            $2572 = 0;\n           }\n           if (($1066 | 0) != ($1067 | 0)) {\n            if (($1066 | 0) == 10) {\n             $1073 = $1044 + 1 | 0;\n             $1074 = HEAP32[$1049 >> 2] | 0;\n             if ($2572) {\n              _memcpy($1073 | 0, $1074 | 0, (($1058 & 255) >>> 1) + 1 | 0) | 0;\n              _free($1074);\n             } else {\n              HEAP8[$1073 >> 0] = HEAP8[$1074 >> 0] | 0;\n              _free($1074);\n             }\n             HEAP8[$1044 >> 0] = $1086 << 1;\n             break;\n            }\n            $1070 = $1066 + 1 | 0;\n            $1071 = _malloc($1070) | 0;\n            if (!($1066 >>> 0 <= $1067 >>> 0 & ($1071 | 0) == 0)) {\n             if ($2572) _memcpy($1071 | 0, $1044 + 1 | 0, (($1058 & 255) >>> 1) + 1 | 0) | 0; else {\n              $1083 = HEAP32[$1049 >> 2] | 0;\n              HEAP8[$1071 >> 0] = HEAP8[$1083 >> 0] | 0;\n              _free($1083);\n             }\n             HEAP32[$1044 >> 2] = $1070 | 1;\n             HEAP32[$1051 >> 2] = $1086;\n             HEAP32[$1049 >> 2] = $1071;\n            }\n           }\n          } while (0);\n          HEAP32[$1044 >> 2] = HEAP32[$846 >> 2];\n          HEAP32[$1044 + 4 >> 2] = HEAP32[$846 + 4 >> 2];\n          HEAP32[$1044 + 8 >> 2] = HEAP32[$846 + 8 >> 2];\n          HEAP32[$846 >> 2] = 0;\n          HEAP32[$846 + 4 >> 2] = 0;\n          HEAP32[$846 + 8 >> 2] = 0;\n         }\n         __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0);\n         __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($__v$i$i$i);\n         $$08$i = $829;\n        }\n       }\n      }\n     } else $$08$i = $first;\n     if (($$08$i | 0) == ($first | 0)) {\n      $$0 = $first;\n      break L1;\n     }\n     $1094 = HEAP32[$db + 4 >> 2] | 0;\n     if ((HEAP32[$db >> 2] | 0) == ($1094 | 0)) {\n      $$0 = $first;\n      break L1;\n     }\n     $1096 = $db + 16 | 0;\n     HEAP32[$19 >> 2] = HEAP32[$db + 12 >> 2];\n     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($18, $1094 + -24 | 0, $19);\n     $1100 = $db + 20 | 0;\n     $1101 = HEAP32[$1100 >> 2] | 0;\n     $1103 = HEAP32[$db + 24 >> 2] | 0;\n     if ($1101 >>> 0 < $1103 >>> 0) {\n      HEAP32[$1101 + 12 >> 2] = HEAP32[$18 + 12 >> 2];\n      HEAP32[$1101 >> 2] = HEAP32[$18 >> 2];\n      $1110 = $18 + 4 | 0;\n      HEAP32[$1101 + 4 >> 2] = HEAP32[$1110 >> 2];\n      $1112 = $18 + 8 | 0;\n      HEAP32[$1101 + 8 >> 2] = HEAP32[$1112 >> 2];\n      HEAP32[$1112 >> 2] = 0;\n      HEAP32[$1110 >> 2] = 0;\n      HEAP32[$18 >> 2] = 0;\n      HEAP32[$1100 >> 2] = (HEAP32[$1100 >> 2] | 0) + 16;\n     } else {\n      $1120 = HEAP32[$1096 >> 2] | 0;\n      $1121 = $1101 - $1120 | 0;\n      $1122 = $1121 >> 4;\n      $1123 = $1122 + 1 | 0;\n      if (($1121 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($1096);\n      $1126 = $1103 - $1120 | 0;\n      if ($1126 >> 4 >>> 0 < 1073741823) {\n       $1129 = $1126 >> 3;\n       $$0$i$i$i76 = $1129 >>> 0 < $1123 >>> 0 ? $1123 : $1129;\n      } else $$0$i$i$i76 = 2147483647;\n      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i76, $1122, $db + 28 | 0);\n      $1132 = $__v$i$i$i + 8 | 0;\n      $1133 = HEAP32[$1132 >> 2] | 0;\n      HEAP32[$1133 + 12 >> 2] = HEAP32[$18 + 12 >> 2];\n      HEAP32[$1133 >> 2] = HEAP32[$18 >> 2];\n      $1139 = $18 + 4 | 0;\n      HEAP32[$1133 + 4 >> 2] = HEAP32[$1139 >> 2];\n      $1141 = $18 + 8 | 0;\n      HEAP32[$1133 + 8 >> 2] = HEAP32[$1141 >> 2];\n      HEAP32[$1141 >> 2] = 0;\n      HEAP32[$1139 >> 2] = 0;\n      HEAP32[$18 >> 2] = 0;\n      HEAP32[$1132 >> 2] = $1133 + 16;\n      __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($1096, $__v$i$i$i);\n      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i);\n     }\n     __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($18);\n     $$0 = $$08$i;\n     break L1;\n     break;\n    }\n   case 79:\n    {\n     $1145 = $db + 4 | 0;\n     $1151 = ((HEAP32[$1145 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0;\n     $1152 = $first + 1 | 0;\n     $1153 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($1152, $last, $db) | 0;\n     $1159 = ((HEAP32[$1145 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0;\n     if (($1153 | 0) == ($1152 | 0)) {\n      $$0 = $first;\n      break L1;\n     }\n     $1161 = $db + 16 | 0;\n     $1164 = HEAP32[$db + 12 >> 2] | 0;\n     $1165 = $db + 20 | 0;\n     $1166 = HEAP32[$1165 >> 2] | 0;\n     $1168 = HEAP32[$db + 24 >> 2] | 0;\n     if ($1166 >>> 0 < $1168 >>> 0) {\n      HEAP32[$1166 >> 2] = 0;\n      HEAP32[$1166 + 4 >> 2] = 0;\n      HEAP32[$1166 + 8 >> 2] = 0;\n      HEAP32[$1166 + 12 >> 2] = $1164;\n      HEAP32[$1165 >> 2] = (HEAP32[$1165 >> 2] | 0) + 16;\n     } else {\n      $1178 = HEAP32[$1161 >> 2] | 0;\n      $1179 = $1166 - $1178 | 0;\n      $1180 = $1179 >> 4;\n      $1181 = $1180 + 1 | 0;\n      if (($1179 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($1161);\n      $1184 = $1168 - $1178 | 0;\n      if ($1184 >> 4 >>> 0 < 1073741823) {\n       $1187 = $1184 >> 3;\n       $$0$i$i$i81 = $1187 >>> 0 < $1181 >>> 0 ? $1181 : $1187;\n      } else $$0$i$i$i81 = 2147483647;\n      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i81, $1180, $db + 28 | 0);\n      $1190 = $__v$i$i$i + 8 | 0;\n      $1191 = HEAP32[$1190 >> 2] | 0;\n      HEAP32[$1191 >> 2] = 0;\n      HEAP32[$1191 + 4 >> 2] = 0;\n      HEAP32[$1191 + 8 >> 2] = 0;\n      HEAP32[$1191 + 12 >> 2] = $1164;\n      HEAP32[$1190 >> 2] = $1191 + 16;\n      __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($1161, $__v$i$i$i);\n      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i);\n     }\n     $1196 = $20 + 4 | 0;\n     $1197 = $20 + 8 | 0;\n     $1198 = $20 + 1 | 0;\n     $1199 = $__v$i$i$i + 8 | 0;\n     if ($1151 >>> 0 < $1159 >>> 0) $k5$0533 = $1151; else {\n      $$0 = $1153;\n      break L1;\n     }\n     while (1) {\n      $1201 = HEAP32[$db >> 2] | 0;\n      $1202 = $1201 + ($k5$0533 * 24 | 0) + 12 | 0;\n      $1203 = HEAP8[$1202 >> 0] | 0;\n      $1205 = ($1203 & 1) == 0;\n      $1210 = $1205 ? ($1203 & 255) >>> 1 : HEAP32[$1201 + ($k5$0533 * 24 | 0) + 16 >> 2] | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($20, $1205 ? $1202 + 1 | 0 : HEAP32[$1201 + ($k5$0533 * 24 | 0) + 20 >> 2] | 0, $1210 >>> 0 < 2 ? $1210 : 2);\n      $1217 = HEAP8[$20 >> 0] | 0;\n      $1219 = ($1217 & 1) == 0;\n      $1223 = $1219 ? ($1217 & 255) >>> 1 : HEAP32[$1196 >> 2] | 0;\n      $1226 = $1223 >>> 0 > 2;\n      $1228 = _memcmp($1219 ? $1198 : HEAP32[$1197 >> 2] | 0, 12670, $1226 ? 2 : $1223) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($20);\n      $1233 = HEAP32[$db >> 2] | 0;\n      if (!((($1228 | 0) == 0 ? ($1223 >>> 0 < 2 ? -1 : $1226 & 1) : $1228) | 0)) {\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1233 + ($k5$0533 * 24 | 0) | 0, 12590) | 0;\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc((HEAP32[$db >> 2] | 0) + ($k5$0533 * 24 | 0) + 12 | 0, 0, 12593) | 0;\n      } else {\n       $1237 = $1233 + ($k5$0533 * 24 | 0) + 12 | 0;\n       if (!(HEAP8[$1237 >> 0] & 1)) $1245 = $1237 + 1 | 0; else $1245 = HEAP32[$1233 + ($k5$0533 * 24 | 0) + 20 >> 2] | 0;\n       if ((HEAP8[$1245 >> 0] | 0) == 40) {\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1233 + ($k5$0533 * 24 | 0) | 0, 12688) | 0;\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc((HEAP32[$db >> 2] | 0) + ($k5$0533 * 24 | 0) + 12 | 0, 0, 12593) | 0;\n       }\n      }\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[$db >> 2] | 0) + ($k5$0533 * 24 | 0) | 0, 12717) | 0;\n      $1252 = HEAP32[$1165 >> 2] | 0;\n      $1253 = $1252 + -16 | 0;\n      $1254 = HEAP32[$db >> 2] | 0;\n      $1255 = $1254 + ($k5$0533 * 24 | 0) | 0;\n      $1256 = $1252 + -12 | 0;\n      $1257 = HEAP32[$1256 >> 2] | 0;\n      if (($1257 | 0) == (HEAP32[$1252 + -8 >> 2] | 0)) {\n       $1269 = $1257 - (HEAP32[$1253 >> 2] | 0) | 0;\n       $1270 = ($1269 | 0) / 24 | 0;\n       $1271 = $1270 + 1 | 0;\n       if (($1269 | 0) < -24) {\n        $$lcssa667 = $1253;\n        break;\n       }\n       if ($1270 >>> 0 < 1073741823) {\n        $1274 = $1270 << 1;\n        $$0$i$i$i87 = $1274 >>> 0 < $1271 >>> 0 ? $1271 : $1274;\n       } else $$0$i$i$i87 = 2147483647;\n       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i$i, $$0$i$i$i87, $1270, $1252 + -4 | 0);\n       $1277 = HEAP32[$1199 >> 2] | 0;\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1277, $1255);\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1277 + 12 | 0, $1254 + ($k5$0533 * 24 | 0) + 12 | 0);\n       HEAP32[$1199 >> 2] = $1277 + 24;\n       __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($1253, $__v$i$i$i);\n       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i$i);\n      } else {\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1257, $1255);\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1257 + 12 | 0, $1254 + ($k5$0533 * 24 | 0) + 12 | 0);\n       HEAP32[$1256 >> 2] = (HEAP32[$1256 >> 2] | 0) + 24;\n      }\n      $k5$0533 = $k5$0533 + 1 | 0;\n      if ($k5$0533 >>> 0 >= $1159 >>> 0) {\n       $$0 = $1153;\n       break L1;\n      }\n     }\n     __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($$lcssa667);\n     break;\n    }\n   case 80:\n    {\n     $1283 = $db + 4 | 0;\n     $1289 = ((HEAP32[$1283 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0;\n     $1290 = $first + 1 | 0;\n     $1291 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($1290, $last, $db) | 0;\n     $1297 = ((HEAP32[$1283 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0;\n     if (($1291 | 0) == ($1290 | 0)) {\n      $$0 = $first;\n      break L1;\n     }\n     $1299 = $db + 16 | 0;\n     $1302 = HEAP32[$db + 12 >> 2] | 0;\n     $1303 = $db + 20 | 0;\n     $1304 = HEAP32[$1303 >> 2] | 0;\n     $1306 = HEAP32[$db + 24 >> 2] | 0;\n     if ($1304 >>> 0 < $1306 >>> 0) {\n      HEAP32[$1304 >> 2] = 0;\n      HEAP32[$1304 + 4 >> 2] = 0;\n      HEAP32[$1304 + 8 >> 2] = 0;\n      HEAP32[$1304 + 12 >> 2] = $1302;\n      HEAP32[$1303 >> 2] = (HEAP32[$1303 >> 2] | 0) + 16;\n     } else {\n      $1316 = HEAP32[$1299 >> 2] | 0;\n      $1317 = $1304 - $1316 | 0;\n      $1318 = $1317 >> 4;\n      $1319 = $1318 + 1 | 0;\n      if (($1317 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($1299);\n      $1322 = $1306 - $1316 | 0;\n      if ($1322 >> 4 >>> 0 < 1073741823) {\n       $1325 = $1322 >> 3;\n       $$0$i$i$i95 = $1325 >>> 0 < $1319 >>> 0 ? $1319 : $1325;\n      } else $$0$i$i$i95 = 2147483647;\n      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i95, $1318, $db + 28 | 0);\n      $1328 = $__v$i$i$i + 8 | 0;\n      $1329 = HEAP32[$1328 >> 2] | 0;\n      HEAP32[$1329 >> 2] = 0;\n      HEAP32[$1329 + 4 >> 2] = 0;\n      HEAP32[$1329 + 8 >> 2] = 0;\n      HEAP32[$1329 + 12 >> 2] = $1302;\n      HEAP32[$1328 >> 2] = $1329 + 16;\n      __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($1299, $__v$i$i$i);\n      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i);\n     }\n     $1334 = $21 + 4 | 0;\n     $1335 = $21 + 8 | 0;\n     $1336 = $21 + 1 | 0;\n     $1337 = $22 + 4 | 0;\n     $1338 = $22 + 8 | 0;\n     $1339 = $22 + 1 | 0;\n     $1340 = $__v$i$i$i + 8 | 0;\n     if ($1289 >>> 0 < $1297 >>> 0) $k8$0536 = $1289; else {\n      $$0 = $1291;\n      break L1;\n     }\n     while (1) {\n      $1342 = HEAP32[$db >> 2] | 0;\n      $1343 = $1342 + ($k8$0536 * 24 | 0) + 12 | 0;\n      $1344 = HEAP8[$1343 >> 0] | 0;\n      $1346 = ($1344 & 1) == 0;\n      $1351 = $1346 ? ($1344 & 255) >>> 1 : HEAP32[$1342 + ($k8$0536 * 24 | 0) + 16 >> 2] | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($21, $1346 ? $1343 + 1 | 0 : HEAP32[$1342 + ($k8$0536 * 24 | 0) + 20 >> 2] | 0, $1351 >>> 0 < 2 ? $1351 : 2);\n      $1358 = HEAP8[$21 >> 0] | 0;\n      $1360 = ($1358 & 1) == 0;\n      $1364 = $1360 ? ($1358 & 255) >>> 1 : HEAP32[$1334 >> 2] | 0;\n      $1367 = $1364 >>> 0 > 2;\n      $1369 = _memcmp($1360 ? $1336 : HEAP32[$1335 >> 2] | 0, 12670, $1367 ? 2 : $1364) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($21);\n      $1374 = HEAP32[$db >> 2] | 0;\n      if (!((($1369 | 0) == 0 ? ($1364 >>> 0 < 2 ? -1 : $1367 & 1) : $1369) | 0)) {\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1374 + ($k8$0536 * 24 | 0) | 0, 12590) | 0;\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc((HEAP32[$db >> 2] | 0) + ($k8$0536 * 24 | 0) + 12 | 0, 0, 12593) | 0;\n      } else {\n       $1378 = $1374 + ($k8$0536 * 24 | 0) + 12 | 0;\n       if (!(HEAP8[$1378 >> 0] & 1)) $1386 = $1378 + 1 | 0; else $1386 = HEAP32[$1374 + ($k8$0536 * 24 | 0) + 20 >> 2] | 0;\n       if ((HEAP8[$1386 >> 0] | 0) == 40) {\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1374 + ($k8$0536 * 24 | 0) | 0, 12688) | 0;\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc((HEAP32[$db >> 2] | 0) + ($k8$0536 * 24 | 0) + 12 | 0, 0, 12593) | 0;\n       }\n      }\n      $1393 = HEAP32[$db >> 2] | 0;\n      $1394 = $1393 + ($k8$0536 * 24 | 0) | 0;\n      do if ((HEAP8[$1290 >> 0] | 0) == 85) {\n       $1395 = HEAP8[$1394 >> 0] | 0;\n       $1397 = ($1395 & 1) == 0;\n       $1402 = $1397 ? ($1395 & 255) >>> 1 : HEAP32[$1393 + ($k8$0536 * 24 | 0) + 4 >> 2] | 0;\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($22, $1397 ? $1394 + 1 | 0 : HEAP32[$1393 + ($k8$0536 * 24 | 0) + 8 >> 2] | 0, $1402 >>> 0 < 12 ? $1402 : 12);\n       $1409 = HEAP8[$22 >> 0] | 0;\n       $1411 = ($1409 & 1) == 0;\n       $1415 = $1411 ? ($1409 & 255) >>> 1 : HEAP32[$1337 >> 2] | 0;\n       $1418 = $1415 >>> 0 > 12;\n       $1420 = _memcmp($1411 ? $1339 : HEAP32[$1338 >> 2] | 0, 12720, $1418 ? 12 : $1415) | 0;\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($22);\n       $1425 = HEAP32[$db >> 2] | 0;\n       $1426 = $1425 + ($k8$0536 * 24 | 0) | 0;\n       if (!((($1420 | 0) == 0 ? ($1415 >>> 0 < 12 ? -1 : $1418 & 1) : $1420) | 0)) {\n        $1428 = HEAP8[$1426 >> 0] | 0;\n        if (!($1428 & 1)) {\n         $1432 = ($1428 & 255) >>> 1;\n         $1443 = $1432 >>> 0 < 11 ? $1432 : 11;\n         $1444 = $1432;\n         $1446 = 10;\n         $1449 = $1428;\n        } else {\n         $1436 = HEAP32[$1425 + ($k8$0536 * 24 | 0) + 4 >> 2] | 0;\n         $1439 = HEAP32[$1426 >> 2] | 0;\n         $1443 = $1436 >>> 0 < 11 ? $1436 : 11;\n         $1444 = $1436;\n         $1446 = ($1439 & -2) + -1 | 0;\n         $1449 = $1439 & 255;\n        }\n        if (($1443 - $1444 + $1446 | 0) >>> 0 < 2) {\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE21__grow_by_and_replaceEjjjjjjPKc($1426, $1446, 2 - $1443 + $1444 - $1446 | 0, $1444, 0, $1443, 2, 12735);\n         break;\n        }\n        if (!($1449 & 1)) $1458 = $1426 + 1 | 0; else $1458 = HEAP32[$1425 + ($k8$0536 * 24 | 0) + 8 >> 2] | 0;\n        do if (($1443 | 0) == 2) {\n         $$1$i$i = 0;\n         $$12$i$i = 12735;\n         $$14$i$i = 2;\n         $2573 = 2;\n         label = 339;\n        } else {\n         $1455 = $1444 - $1443 | 0;\n         if (($1444 | 0) == ($1443 | 0)) {\n          $$1$i$i = 0;\n          $$12$i$i = 12735;\n          $$14$i$i = 2;\n          $2573 = $1443;\n          label = 339;\n         } else {\n          if ($1443 >>> 0 > 2) {\n           HEAP8[$1458 >> 0] = 105;\n           HEAP8[$1458 + 1 >> 0] = 100;\n           _memmove($1458 + 2 | 0, $1458 + $1443 | 0, $1455 | 0) | 0;\n           $$2$i$i = 2;\n           $1474 = $1443;\n           break;\n          }\n          do if ($1458 >>> 0 < 12735 >>> 0 & ($1458 + $1444 | 0) >>> 0 > 12735 >>> 0) if (($1458 + $1443 | 0) >>> 0 > 12735 >>> 0) {\n           _memcpy($1458 | 0, 12735, $1443 | 0) | 0;\n           $$0$i$i = $1443;\n           $$01$i$i = 12737;\n           $$03$i$i = 2 - $1443 | 0;\n           $1470 = 0;\n           break;\n          } else {\n           $$0$i$i = 0;\n           $$01$i$i = 12735 + (2 - $1443) | 0;\n           $$03$i$i = 2;\n           $1470 = $1443;\n           break;\n          } else {\n           $$0$i$i = 0;\n           $$01$i$i = 12735;\n           $$03$i$i = 2;\n           $1470 = $1443;\n          } while (0);\n          _memmove($1458 + ($$0$i$i + $$03$i$i) | 0, $1458 + ($$0$i$i + $1470) | 0, $1455 | 0) | 0;\n          $$1$i$i = $$0$i$i;\n          $$12$i$i = $$01$i$i;\n          $$14$i$i = $$03$i$i;\n          $2573 = $1470;\n          label = 339;\n         }\n        } while (0);\n        if ((label | 0) == 339) {\n         label = 0;\n         _memmove($1458 + $$1$i$i | 0, $$12$i$i | 0, $$14$i$i | 0) | 0;\n         $$2$i$i = $$14$i$i;\n         $1474 = $2573;\n        }\n        $1475 = $$2$i$i - $1474 + $1444 | 0;\n        if (!(HEAP8[$1426 >> 0] & 1)) HEAP8[$1426 >> 0] = $1475 << 1; else HEAP32[$1425 + ($k8$0536 * 24 | 0) + 4 >> 2] = $1475;\n        HEAP8[$1458 + $1475 >> 0] = 0;\n       } else {\n        $1427 = $1426;\n        label = 322;\n       }\n      } else {\n       $1427 = $1394;\n       label = 322;\n      } while (0);\n      if ((label | 0) == 322) {\n       label = 0;\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1427, 12733) | 0;\n      }\n      $1486 = HEAP32[$1303 >> 2] | 0;\n      $1487 = $1486 + -16 | 0;\n      $1488 = HEAP32[$db >> 2] | 0;\n      $1489 = $1488 + ($k8$0536 * 24 | 0) | 0;\n      $1490 = $1486 + -12 | 0;\n      $1491 = HEAP32[$1490 >> 2] | 0;\n      if (($1491 | 0) == (HEAP32[$1486 + -8 >> 2] | 0)) {\n       $1503 = $1491 - (HEAP32[$1487 >> 2] | 0) | 0;\n       $1504 = ($1503 | 0) / 24 | 0;\n       $1505 = $1504 + 1 | 0;\n       if (($1503 | 0) < -24) {\n        $$lcssa674 = $1487;\n        break;\n       }\n       if ($1504 >>> 0 < 1073741823) {\n        $1508 = $1504 << 1;\n        $$0$i$i$i105 = $1508 >>> 0 < $1505 >>> 0 ? $1505 : $1508;\n       } else $$0$i$i$i105 = 2147483647;\n       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i$i, $$0$i$i$i105, $1504, $1486 + -4 | 0);\n       $1511 = HEAP32[$1340 >> 2] | 0;\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1511, $1489);\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1511 + 12 | 0, $1488 + ($k8$0536 * 24 | 0) + 12 | 0);\n       HEAP32[$1340 >> 2] = $1511 + 24;\n       __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($1487, $__v$i$i$i);\n       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i$i);\n      } else {\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1491, $1489);\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1491 + 12 | 0, $1488 + ($k8$0536 * 24 | 0) + 12 | 0);\n       HEAP32[$1490 >> 2] = (HEAP32[$1490 >> 2] | 0) + 24;\n      }\n      $k8$0536 = $k8$0536 + 1 | 0;\n      if ($k8$0536 >>> 0 >= $1297 >>> 0) {\n       $$0 = $1291;\n       break L1;\n      }\n     }\n     __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($$lcssa674);\n     break;\n    }\n   case 82:\n    {\n     $1517 = $db + 4 | 0;\n     $1523 = ((HEAP32[$1517 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0;\n     $1524 = $first + 1 | 0;\n     $1525 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($1524, $last, $db) | 0;\n     $1531 = ((HEAP32[$1517 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0;\n     if (($1525 | 0) == ($1524 | 0)) {\n      $$0 = $first;\n      break L1;\n     }\n     $1533 = $db + 16 | 0;\n     $1536 = HEAP32[$db + 12 >> 2] | 0;\n     $1537 = $db + 20 | 0;\n     $1538 = HEAP32[$1537 >> 2] | 0;\n     $1540 = HEAP32[$db + 24 >> 2] | 0;\n     if ($1538 >>> 0 < $1540 >>> 0) {\n      HEAP32[$1538 >> 2] = 0;\n      HEAP32[$1538 + 4 >> 2] = 0;\n      HEAP32[$1538 + 8 >> 2] = 0;\n      HEAP32[$1538 + 12 >> 2] = $1536;\n      HEAP32[$1537 >> 2] = (HEAP32[$1537 >> 2] | 0) + 16;\n     } else {\n      $1550 = HEAP32[$1533 >> 2] | 0;\n      $1551 = $1538 - $1550 | 0;\n      $1552 = $1551 >> 4;\n      $1553 = $1552 + 1 | 0;\n      if (($1551 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($1533);\n      $1556 = $1540 - $1550 | 0;\n      if ($1556 >> 4 >>> 0 < 1073741823) {\n       $1559 = $1556 >> 3;\n       $$0$i$i$i113 = $1559 >>> 0 < $1553 >>> 0 ? $1553 : $1559;\n      } else $$0$i$i$i113 = 2147483647;\n      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i113, $1552, $db + 28 | 0);\n      $1562 = $__v$i$i$i + 8 | 0;\n      $1563 = HEAP32[$1562 >> 2] | 0;\n      HEAP32[$1563 >> 2] = 0;\n      HEAP32[$1563 + 4 >> 2] = 0;\n      HEAP32[$1563 + 8 >> 2] = 0;\n      HEAP32[$1563 + 12 >> 2] = $1536;\n      HEAP32[$1562 >> 2] = $1563 + 16;\n      __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($1533, $__v$i$i$i);\n      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i);\n     }\n     $1568 = $23 + 4 | 0;\n     $1569 = $23 + 8 | 0;\n     $1570 = $23 + 1 | 0;\n     $1571 = $__v$i$i$i + 8 | 0;\n     if ($1523 >>> 0 < $1531 >>> 0) $k11$0540 = $1523; else {\n      $$0 = $1525;\n      break L1;\n     }\n     while (1) {\n      $1573 = HEAP32[$db >> 2] | 0;\n      $1574 = $1573 + ($k11$0540 * 24 | 0) + 12 | 0;\n      $1575 = HEAP8[$1574 >> 0] | 0;\n      $1577 = ($1575 & 1) == 0;\n      $1582 = $1577 ? ($1575 & 255) >>> 1 : HEAP32[$1573 + ($k11$0540 * 24 | 0) + 16 >> 2] | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($23, $1577 ? $1574 + 1 | 0 : HEAP32[$1573 + ($k11$0540 * 24 | 0) + 20 >> 2] | 0, $1582 >>> 0 < 2 ? $1582 : 2);\n      $1589 = HEAP8[$23 >> 0] | 0;\n      $1591 = ($1589 & 1) == 0;\n      $1595 = $1591 ? ($1589 & 255) >>> 1 : HEAP32[$1568 >> 2] | 0;\n      $1598 = $1595 >>> 0 > 2;\n      $1600 = _memcmp($1591 ? $1570 : HEAP32[$1569 >> 2] | 0, 12670, $1598 ? 2 : $1595) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($23);\n      $1605 = HEAP32[$db >> 2] | 0;\n      if (!((($1600 | 0) == 0 ? ($1595 >>> 0 < 2 ? -1 : $1598 & 1) : $1600) | 0)) {\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1605 + ($k11$0540 * 24 | 0) | 0, 12590) | 0;\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc((HEAP32[$db >> 2] | 0) + ($k11$0540 * 24 | 0) + 12 | 0, 0, 12593) | 0;\n      } else {\n       $1609 = $1605 + ($k11$0540 * 24 | 0) + 12 | 0;\n       if (!(HEAP8[$1609 >> 0] & 1)) $1617 = $1609 + 1 | 0; else $1617 = HEAP32[$1605 + ($k11$0540 * 24 | 0) + 20 >> 2] | 0;\n       if ((HEAP8[$1617 >> 0] | 0) == 40) {\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1605 + ($k11$0540 * 24 | 0) | 0, 12688) | 0;\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc((HEAP32[$db >> 2] | 0) + ($k11$0540 * 24 | 0) + 12 | 0, 0, 12593) | 0;\n       }\n      }\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[$db >> 2] | 0) + ($k11$0540 * 24 | 0) | 0, 12738) | 0;\n      $1624 = HEAP32[$1537 >> 2] | 0;\n      $1625 = $1624 + -16 | 0;\n      $1626 = HEAP32[$db >> 2] | 0;\n      $1627 = $1626 + ($k11$0540 * 24 | 0) | 0;\n      $1628 = $1624 + -12 | 0;\n      $1629 = HEAP32[$1628 >> 2] | 0;\n      if (($1629 | 0) == (HEAP32[$1624 + -8 >> 2] | 0)) {\n       $1641 = $1629 - (HEAP32[$1625 >> 2] | 0) | 0;\n       $1642 = ($1641 | 0) / 24 | 0;\n       $1643 = $1642 + 1 | 0;\n       if (($1641 | 0) < -24) {\n        $$lcssa682 = $1625;\n        break;\n       }\n       if ($1642 >>> 0 < 1073741823) {\n        $1646 = $1642 << 1;\n        $$0$i$i$i123 = $1646 >>> 0 < $1643 >>> 0 ? $1643 : $1646;\n       } else $$0$i$i$i123 = 2147483647;\n       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i$i, $$0$i$i$i123, $1642, $1624 + -4 | 0);\n       $1649 = HEAP32[$1571 >> 2] | 0;\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1649, $1627);\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1649 + 12 | 0, $1626 + ($k11$0540 * 24 | 0) + 12 | 0);\n       HEAP32[$1571 >> 2] = $1649 + 24;\n       __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($1625, $__v$i$i$i);\n       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i$i);\n      } else {\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1629, $1627);\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1629 + 12 | 0, $1626 + ($k11$0540 * 24 | 0) + 12 | 0);\n       HEAP32[$1628 >> 2] = (HEAP32[$1628 >> 2] | 0) + 24;\n      }\n      $k11$0540 = $k11$0540 + 1 | 0;\n      if ($k11$0540 >>> 0 >= $1531 >>> 0) {\n       $$0 = $1525;\n       break L1;\n      }\n     }\n     __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($$lcssa682);\n     break;\n    }\n   case 84:\n    {\n     $1655 = $db + 4 | 0;\n     $1661 = ((HEAP32[$1655 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0;\n     $1662 = __ZN10__cxxabiv112_GLOBAL__N_120parse_template_paramINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;\n     $1668 = ((HEAP32[$1655 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0;\n     if (($1662 | 0) == ($first | 0)) {\n      $$0 = $first;\n      break L1;\n     }\n     $1670 = $db + 16 | 0;\n     $1671 = $db + 12 | 0;\n     $1673 = HEAP32[$1671 >> 2] | 0;\n     $1674 = $db + 20 | 0;\n     $1675 = HEAP32[$1674 >> 2] | 0;\n     $1676 = $db + 24 | 0;\n     $1677 = HEAP32[$1676 >> 2] | 0;\n     if ($1675 >>> 0 < $1677 >>> 0) {\n      HEAP32[$1675 >> 2] = 0;\n      HEAP32[$1675 + 4 >> 2] = 0;\n      HEAP32[$1675 + 8 >> 2] = 0;\n      HEAP32[$1675 + 12 >> 2] = $1673;\n      HEAP32[$1674 >> 2] = (HEAP32[$1674 >> 2] | 0) + 16;\n     } else {\n      $1687 = HEAP32[$1670 >> 2] | 0;\n      $1688 = $1675 - $1687 | 0;\n      $1689 = $1688 >> 4;\n      $1690 = $1689 + 1 | 0;\n      if (($1688 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($1670);\n      $1693 = $1677 - $1687 | 0;\n      if ($1693 >> 4 >>> 0 < 1073741823) {\n       $1696 = $1693 >> 3;\n       $$0$i$i$i131 = $1696 >>> 0 < $1690 >>> 0 ? $1690 : $1696;\n      } else $$0$i$i$i131 = 2147483647;\n      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i131, $1689, $db + 28 | 0);\n      $1699 = $__v$i$i$i + 8 | 0;\n      $1700 = HEAP32[$1699 >> 2] | 0;\n      HEAP32[$1700 >> 2] = 0;\n      HEAP32[$1700 + 4 >> 2] = 0;\n      HEAP32[$1700 + 8 >> 2] = 0;\n      HEAP32[$1700 + 12 >> 2] = $1673;\n      HEAP32[$1699 >> 2] = $1700 + 16;\n      __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($1670, $__v$i$i$i);\n      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i);\n     }\n     $1705 = $__v$i$i$i + 8 | 0;\n     L522 : do if ($1661 >>> 0 < $1668 >>> 0) {\n      $k15$0543 = $1661;\n      while (1) {\n       $1707 = HEAP32[$1674 >> 2] | 0;\n       $1708 = $1707 + -16 | 0;\n       $1709 = HEAP32[$db >> 2] | 0;\n       $1710 = $1709 + ($k15$0543 * 24 | 0) | 0;\n       $1711 = $1707 + -12 | 0;\n       $1712 = HEAP32[$1711 >> 2] | 0;\n       if (($1712 | 0) == (HEAP32[$1707 + -8 >> 2] | 0)) {\n        $1724 = $1712 - (HEAP32[$1708 >> 2] | 0) | 0;\n        $1725 = ($1724 | 0) / 24 | 0;\n        $1726 = $1725 + 1 | 0;\n        if (($1724 | 0) < -24) {\n         $$lcssa690 = $1708;\n         break;\n        }\n        if ($1725 >>> 0 < 1073741823) {\n         $1729 = $1725 << 1;\n         $$0$i$i$i136 = $1729 >>> 0 < $1726 >>> 0 ? $1726 : $1729;\n        } else $$0$i$i$i136 = 2147483647;\n        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i$i, $$0$i$i$i136, $1725, $1707 + -4 | 0);\n        $1732 = HEAP32[$1705 >> 2] | 0;\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1732, $1710);\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1732 + 12 | 0, $1709 + ($k15$0543 * 24 | 0) + 12 | 0);\n        HEAP32[$1705 >> 2] = $1732 + 24;\n        __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($1708, $__v$i$i$i);\n        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i$i);\n       } else {\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1712, $1710);\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1712 + 12 | 0, $1709 + ($k15$0543 * 24 | 0) + 12 | 0);\n        HEAP32[$1711 >> 2] = (HEAP32[$1711 >> 2] | 0) + 24;\n       }\n       $k15$0543 = $k15$0543 + 1 | 0;\n       if ($k15$0543 >>> 0 >= $1668 >>> 0) break L522;\n      }\n      __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($$lcssa690);\n     } while (0);\n     if (!(($1668 | 0) == ($1661 + 1 | 0) & (HEAP8[$db + 63 >> 0] | 0) != 0)) {\n      $$0 = $1662;\n      break L1;\n     }\n     $1743 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_($1662, $last, $db) | 0;\n     if (($1743 | 0) == ($1662 | 0)) {\n      $$0 = $1662;\n      break L1;\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($args, (HEAP32[$1655 >> 2] | 0) + -24 | 0);\n     $1747 = HEAP32[$1655 >> 2] | 0;\n     $1748 = $1747 + -24 | 0;\n     $1750 = $1747;\n     do {\n      $1749 = $1750 + -24 | 0;\n      HEAP32[$1655 >> 2] = $1749;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1749);\n      $1750 = HEAP32[$1655 >> 2] | 0;\n     } while (($1750 | 0) != ($1748 | 0));\n     $1753 = HEAP8[$args >> 0] | 0;\n     $1755 = ($1753 & 1) == 0;\n     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($1747 + -48 | 0, $1755 ? $args + 1 | 0 : HEAP32[$args + 8 >> 2] | 0, $1755 ? ($1753 & 255) >>> 1 : HEAP32[$args + 4 >> 2] | 0) | 0;\n     $1766 = (HEAP32[$1655 >> 2] | 0) + -24 | 0;\n     HEAP32[$25 >> 2] = HEAP32[$1671 >> 2];\n     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($24, $1766, $25);\n     $1768 = HEAP32[$1674 >> 2] | 0;\n     $1769 = HEAP32[$1676 >> 2] | 0;\n     if ($1768 >>> 0 < $1769 >>> 0) {\n      HEAP32[$1768 + 12 >> 2] = HEAP32[$24 + 12 >> 2];\n      HEAP32[$1768 >> 2] = HEAP32[$24 >> 2];\n      $1776 = $24 + 4 | 0;\n      HEAP32[$1768 + 4 >> 2] = HEAP32[$1776 >> 2];\n      $1778 = $24 + 8 | 0;\n      HEAP32[$1768 + 8 >> 2] = HEAP32[$1778 >> 2];\n      HEAP32[$1778 >> 2] = 0;\n      HEAP32[$1776 >> 2] = 0;\n      HEAP32[$24 >> 2] = 0;\n      HEAP32[$1674 >> 2] = (HEAP32[$1674 >> 2] | 0) + 16;\n     } else {\n      $1786 = HEAP32[$1670 >> 2] | 0;\n      $1787 = $1768 - $1786 | 0;\n      $1788 = $1787 >> 4;\n      $1789 = $1788 + 1 | 0;\n      if (($1787 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($1670);\n      $1792 = $1769 - $1786 | 0;\n      if ($1792 >> 4 >>> 0 < 1073741823) {\n       $1795 = $1792 >> 3;\n       $$0$i$i$i148 = $1795 >>> 0 < $1789 >>> 0 ? $1789 : $1795;\n      } else $$0$i$i$i148 = 2147483647;\n      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i148, $1788, $db + 28 | 0);\n      $1798 = $__v$i$i$i + 8 | 0;\n      $1799 = HEAP32[$1798 >> 2] | 0;\n      HEAP32[$1799 + 12 >> 2] = HEAP32[$24 + 12 >> 2];\n      HEAP32[$1799 >> 2] = HEAP32[$24 >> 2];\n      $1805 = $24 + 4 | 0;\n      HEAP32[$1799 + 4 >> 2] = HEAP32[$1805 >> 2];\n      $1807 = $24 + 8 | 0;\n      HEAP32[$1799 + 8 >> 2] = HEAP32[$1807 >> 2];\n      HEAP32[$1807 >> 2] = 0;\n      HEAP32[$1805 >> 2] = 0;\n      HEAP32[$24 >> 2] = 0;\n      HEAP32[$1798 >> 2] = $1799 + 16;\n      __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($1670, $__v$i$i$i);\n      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i);\n     }\n     __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($24);\n     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($args);\n     $$0 = $1743;\n     break L1;\n     break;\n    }\n   case 85:\n    {\n     $1811 = $first + 1 | 0;\n     if (($1811 | 0) == ($last | 0)) {\n      $$0 = $first;\n      break L1;\n     }\n     $1813 = __ZN10__cxxabiv112_GLOBAL__N_117parse_source_nameINS0_2DbEEEPKcS4_S4_RT_($1811, $last, $db) | 0;\n     if (($1813 | 0) == ($1811 | 0)) {\n      $$0 = $first;\n      break L1;\n     }\n     $1815 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($1813, $last, $db) | 0;\n     if (($1815 | 0) == ($1813 | 0)) {\n      $$0 = $first;\n      break L1;\n     }\n     $1817 = $db + 4 | 0;\n     $1818 = HEAP32[$1817 >> 2] | 0;\n     if ((($1818 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {\n      $$0 = $first;\n      break L1;\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($type, $1818 + -24 | 0);\n     $1826 = HEAP32[$1817 >> 2] | 0;\n     $1827 = $1826 + -24 | 0;\n     $1829 = $1826;\n     do {\n      $1828 = $1829 + -24 | 0;\n      HEAP32[$1817 >> 2] = $1828;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1828);\n      $1829 = HEAP32[$1817 >> 2] | 0;\n     } while (($1829 | 0) != ($1827 | 0));\n     $1831 = $1826 + -48 | 0;\n     $1832 = HEAP8[$1831 >> 0] | 0;\n     $1834 = ($1832 & 1) == 0;\n     $1839 = $1834 ? ($1832 & 255) >>> 1 : HEAP32[$1826 + -44 >> 2] | 0;\n     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($26, $1834 ? $1831 + 1 | 0 : HEAP32[$1826 + -40 >> 2] | 0, $1839 >>> 0 < 9 ? $1839 : 9);\n     $1846 = HEAP8[$26 >> 0] | 0;\n     $1848 = ($1846 & 1) == 0;\n     $1853 = $1848 ? ($1846 & 255) >>> 1 : HEAP32[$26 + 4 >> 2] | 0;\n     $1858 = $1853 >>> 0 > 9;\n     $1860 = _memcmp($1848 ? $26 + 1 | 0 : HEAP32[$26 + 8 >> 2] | 0, 12740, $1858 ? 9 : $1853) | 0;\n     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($26);\n     $1866 = (HEAP32[$1817 >> 2] | 0) + -24 | 0;\n     if (!((($1860 | 0) == 0 ? ($1853 >>> 0 < 9 ? -1 : $1858 & 1) : $1860) | 0)) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($proto, $1866);\n      $1884 = HEAP32[$1817 >> 2] | 0;\n      $1885 = $1884 + -24 | 0;\n      $1887 = $1884;\n      do {\n       $1886 = $1887 + -24 | 0;\n       HEAP32[$1817 >> 2] = $1886;\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1886);\n       $1887 = HEAP32[$1817 >> 2] | 0;\n      } while (($1887 | 0) != ($1885 | 0));\n      $1889 = HEAP8[$proto >> 0] | 0;\n      $1891 = ($1889 & 1) == 0;\n      $1892 = $proto + 8 | 0;\n      $1894 = $proto + 1 | 0;\n      $1895 = $1891 ? $1894 : HEAP32[$1892 >> 2] | 0;\n      $1897 = $proto + 4 | 0;\n      $1903 = __ZN10__cxxabiv112_GLOBAL__N_117parse_source_nameINS0_2DbEEEPKcS4_S4_RT_($1895 + 9 | 0, $1895 + ($1891 ? ($1889 & 255) >>> 1 : HEAP32[$1897 >> 2] | 0) | 0, $db) | 0;\n      if (($1903 | 0) == (((HEAP8[$proto >> 0] & 1) == 0 ? $1894 : HEAP32[$1892 >> 2] | 0) + 9 | 0)) {\n       __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EERKSB_PKS8_($38, $type, 12700);\n       $1933 = HEAP8[$proto >> 0] | 0;\n       $1935 = ($1933 & 1) == 0;\n       $1942 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($38, $1935 ? $1894 : HEAP32[$1892 >> 2] | 0, $1935 ? ($1933 & 255) >>> 1 : HEAP32[$1897 >> 2] | 0) | 0;\n       HEAP32[$37 >> 2] = HEAP32[$1942 >> 2];\n       HEAP32[$37 + 4 >> 2] = HEAP32[$1942 + 4 >> 2];\n       HEAP32[$37 + 8 >> 2] = HEAP32[$1942 + 8 >> 2];\n       HEAP32[$1942 >> 2] = 0;\n       HEAP32[$1942 + 4 >> 2] = 0;\n       HEAP32[$1942 + 8 >> 2] = 0;\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($36, $37);\n       $1945 = HEAP32[$1817 >> 2] | 0;\n       $1947 = HEAP32[$db + 8 >> 2] | 0;\n       if ($1945 >>> 0 < $1947 >>> 0) {\n        __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1945, $36);\n        HEAP32[$1817 >> 2] = (HEAP32[$1817 >> 2] | 0) + 24;\n       } else {\n        $1954 = HEAP32[$db >> 2] | 0;\n        $1955 = $1945 - $1954 | 0;\n        $1956 = ($1955 | 0) / 24 | 0;\n        $1957 = $1956 + 1 | 0;\n        if (($1955 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n        $1961 = ($1947 - $1954 | 0) / 24 | 0;\n        if ($1961 >>> 0 < 1073741823) {\n         $1963 = $1961 << 1;\n         $$0$i$i$i181 = $1963 >>> 0 < $1957 >>> 0 ? $1957 : $1963;\n        } else $$0$i$i$i181 = 2147483647;\n        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i$i, $$0$i$i$i181, $1956, $db + 12 | 0);\n        $1966 = $__v$i$i$i + 8 | 0;\n        $1967 = HEAP32[$1966 >> 2] | 0;\n        __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1967, $36);\n        HEAP32[$1966 >> 2] = $1967 + 24;\n        __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i$i);\n        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i$i);\n       }\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($36);\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($37);\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($38);\n      } else {\n       $1912 = (HEAP32[$1817 >> 2] | 0) + -24 | 0;\n       __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EERKSB_PKS8_($34, $type, 12750);\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($35, (HEAP32[$1817 >> 2] | 0) + -24 | 0);\n       $1915 = HEAP8[$35 >> 0] | 0;\n       $1917 = ($1915 & 1) == 0;\n       $1927 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($34, $1917 ? $35 + 1 | 0 : HEAP32[$35 + 8 >> 2] | 0, $1917 ? ($1915 & 255) >>> 1 : HEAP32[$35 + 4 >> 2] | 0) | 0;\n       HEAP32[$33 >> 2] = HEAP32[$1927 >> 2];\n       HEAP32[$33 + 4 >> 2] = HEAP32[$1927 + 4 >> 2];\n       HEAP32[$33 + 8 >> 2] = HEAP32[$1927 + 8 >> 2];\n       HEAP32[$1927 >> 2] = 0;\n       HEAP32[$1927 + 4 >> 2] = 0;\n       HEAP32[$1927 + 8 >> 2] = 0;\n       $1930 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($33, 12752) | 0;\n       HEAP32[$32 >> 2] = HEAP32[$1930 >> 2];\n       HEAP32[$32 + 4 >> 2] = HEAP32[$1930 + 4 >> 2];\n       HEAP32[$32 + 8 >> 2] = HEAP32[$1930 + 8 >> 2];\n       HEAP32[$1930 >> 2] = 0;\n       HEAP32[$1930 + 4 >> 2] = 0;\n       HEAP32[$1930 + 8 >> 2] = 0;\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($31, $32);\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($1912, $31);\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($31);\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($32);\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($33);\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($35);\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($34);\n      }\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($proto);\n     } else {\n      __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EERKSB_PKS8_($29, $type, 12700);\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($30, (HEAP32[$1817 >> 2] | 0) + -24 | 0);\n      $1869 = HEAP8[$30 >> 0] | 0;\n      $1871 = ($1869 & 1) == 0;\n      $1881 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($29, $1871 ? $30 + 1 | 0 : HEAP32[$30 + 8 >> 2] | 0, $1871 ? ($1869 & 255) >>> 1 : HEAP32[$30 + 4 >> 2] | 0) | 0;\n      HEAP32[$28 >> 2] = HEAP32[$1881 >> 2];\n      HEAP32[$28 + 4 >> 2] = HEAP32[$1881 + 4 >> 2];\n      HEAP32[$28 + 8 >> 2] = HEAP32[$1881 + 8 >> 2];\n      HEAP32[$1881 >> 2] = 0;\n      HEAP32[$1881 + 4 >> 2] = 0;\n      HEAP32[$1881 + 8 >> 2] = 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($27, $28);\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($1866, $27);\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($27);\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($28);\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($30);\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($29);\n     }\n     $1970 = (HEAP32[$1817 >> 2] | 0) + -24 | 0;\n     HEAP32[$40 >> 2] = HEAP32[$db + 12 >> 2];\n     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($39, $1970, $40);\n     $1973 = $db + 16 | 0;\n     $1974 = $db + 20 | 0;\n     $1975 = HEAP32[$1974 >> 2] | 0;\n     $1977 = HEAP32[$db + 24 >> 2] | 0;\n     if ($1975 >>> 0 < $1977 >>> 0) {\n      HEAP32[$1975 + 12 >> 2] = HEAP32[$39 + 12 >> 2];\n      HEAP32[$1975 >> 2] = HEAP32[$39 >> 2];\n      $1984 = $39 + 4 | 0;\n      HEAP32[$1975 + 4 >> 2] = HEAP32[$1984 >> 2];\n      $1986 = $39 + 8 | 0;\n      HEAP32[$1975 + 8 >> 2] = HEAP32[$1986 >> 2];\n      HEAP32[$1986 >> 2] = 0;\n      HEAP32[$1984 >> 2] = 0;\n      HEAP32[$39 >> 2] = 0;\n      HEAP32[$1974 >> 2] = (HEAP32[$1974 >> 2] | 0) + 16;\n     } else {\n      $1994 = HEAP32[$1973 >> 2] | 0;\n      $1995 = $1975 - $1994 | 0;\n      $1996 = $1995 >> 4;\n      $1997 = $1996 + 1 | 0;\n      if (($1995 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($1973);\n      $2000 = $1977 - $1994 | 0;\n      if ($2000 >> 4 >>> 0 < 1073741823) {\n       $2003 = $2000 >> 3;\n       $$0$i$i$i153 = $2003 >>> 0 < $1997 >>> 0 ? $1997 : $2003;\n      } else $$0$i$i$i153 = 2147483647;\n      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i153, $1996, $db + 28 | 0);\n      $2006 = $__v$i$i$i + 8 | 0;\n      $2007 = HEAP32[$2006 >> 2] | 0;\n      HEAP32[$2007 + 12 >> 2] = HEAP32[$39 + 12 >> 2];\n      HEAP32[$2007 >> 2] = HEAP32[$39 >> 2];\n      $2013 = $39 + 4 | 0;\n      HEAP32[$2007 + 4 >> 2] = HEAP32[$2013 >> 2];\n      $2015 = $39 + 8 | 0;\n      HEAP32[$2007 + 8 >> 2] = HEAP32[$2015 >> 2];\n      HEAP32[$2015 >> 2] = 0;\n      HEAP32[$2013 >> 2] = 0;\n      HEAP32[$39 >> 2] = 0;\n      HEAP32[$2006 >> 2] = $2007 + 16;\n      __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($1973, $__v$i$i$i);\n      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i);\n     }\n     __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($39);\n     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($type);\n     $$0 = $1815;\n     break L1;\n     break;\n    }\n   case 83:\n    {\n     $2019 = $first + 1 | 0;\n     if (($2019 | 0) != ($last | 0)) if ((HEAP8[$2019 >> 0] | 0) == 116) {\n      $2023 = __ZN10__cxxabiv112_GLOBAL__N_110parse_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;\n      if (($2023 | 0) == ($first | 0)) {\n       $$0 = $first;\n       break L1;\n      }\n      $2027 = HEAP32[$db + 4 >> 2] | 0;\n      if ((HEAP32[$db >> 2] | 0) == ($2027 | 0)) {\n       $$0 = $first;\n       break L1;\n      }\n      $2029 = $db + 16 | 0;\n      HEAP32[$42 >> 2] = HEAP32[$db + 12 >> 2];\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($41, $2027 + -24 | 0, $42);\n      $2033 = $db + 20 | 0;\n      $2034 = HEAP32[$2033 >> 2] | 0;\n      $2036 = HEAP32[$db + 24 >> 2] | 0;\n      if ($2034 >>> 0 < $2036 >>> 0) {\n       HEAP32[$2034 + 12 >> 2] = HEAP32[$41 + 12 >> 2];\n       HEAP32[$2034 >> 2] = HEAP32[$41 >> 2];\n       $2043 = $41 + 4 | 0;\n       HEAP32[$2034 + 4 >> 2] = HEAP32[$2043 >> 2];\n       $2045 = $41 + 8 | 0;\n       HEAP32[$2034 + 8 >> 2] = HEAP32[$2045 >> 2];\n       HEAP32[$2045 >> 2] = 0;\n       HEAP32[$2043 >> 2] = 0;\n       HEAP32[$41 >> 2] = 0;\n       HEAP32[$2033 >> 2] = (HEAP32[$2033 >> 2] | 0) + 16;\n      } else {\n       $2053 = HEAP32[$2029 >> 2] | 0;\n       $2054 = $2034 - $2053 | 0;\n       $2055 = $2054 >> 4;\n       $2056 = $2055 + 1 | 0;\n       if (($2054 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($2029);\n       $2059 = $2036 - $2053 | 0;\n       if ($2059 >> 4 >>> 0 < 1073741823) {\n        $2062 = $2059 >> 3;\n        $$0$i$i$i51 = $2062 >>> 0 < $2056 >>> 0 ? $2056 : $2062;\n       } else $$0$i$i$i51 = 2147483647;\n       __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i51, $2055, $db + 28 | 0);\n       $2065 = $__v$i$i$i + 8 | 0;\n       $2066 = HEAP32[$2065 >> 2] | 0;\n       HEAP32[$2066 + 12 >> 2] = HEAP32[$41 + 12 >> 2];\n       HEAP32[$2066 >> 2] = HEAP32[$41 >> 2];\n       $2072 = $41 + 4 | 0;\n       HEAP32[$2066 + 4 >> 2] = HEAP32[$2072 >> 2];\n       $2074 = $41 + 8 | 0;\n       HEAP32[$2066 + 8 >> 2] = HEAP32[$2074 >> 2];\n       HEAP32[$2074 >> 2] = 0;\n       HEAP32[$2072 >> 2] = 0;\n       HEAP32[$41 >> 2] = 0;\n       HEAP32[$2065 >> 2] = $2066 + 16;\n       __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($2029, $__v$i$i$i);\n       __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i);\n      }\n      __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($41);\n      $$0 = $2023;\n      break L1;\n     }\n     $2078 = __ZN10__cxxabiv112_GLOBAL__N_118parse_substitutionINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;\n     if (($2078 | 0) == ($first | 0)) {\n      $$0 = $first;\n      break L1;\n     }\n     $2080 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_($2078, $last, $db) | 0;\n     if (($2080 | 0) == ($2078 | 0)) {\n      $$0 = $2078;\n      break L1;\n     }\n     $2082 = $db + 4 | 0;\n     $2083 = HEAP32[$2082 >> 2] | 0;\n     if ((($2083 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {\n      $$0 = $2078;\n      break L1;\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($template_args, $2083 + -24 | 0);\n     $2091 = HEAP32[$2082 >> 2] | 0;\n     $2092 = $2091 + -24 | 0;\n     $2094 = $2091;\n     do {\n      $2093 = $2094 + -24 | 0;\n      HEAP32[$2082 >> 2] = $2093;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($2093);\n      $2094 = HEAP32[$2082 >> 2] | 0;\n     } while (($2094 | 0) != ($2092 | 0));\n     $2097 = HEAP8[$template_args >> 0] | 0;\n     $2099 = ($2097 & 1) == 0;\n     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($2091 + -48 | 0, $2099 ? $template_args + 1 | 0 : HEAP32[$template_args + 8 >> 2] | 0, $2099 ? ($2097 & 255) >>> 1 : HEAP32[$template_args + 4 >> 2] | 0) | 0;\n     $2110 = (HEAP32[$2082 >> 2] | 0) + -24 | 0;\n     HEAP32[$44 >> 2] = HEAP32[$db + 12 >> 2];\n     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($43, $2110, $44);\n     $2113 = $db + 16 | 0;\n     $2114 = $db + 20 | 0;\n     $2115 = HEAP32[$2114 >> 2] | 0;\n     $2117 = HEAP32[$db + 24 >> 2] | 0;\n     if ($2115 >>> 0 < $2117 >>> 0) {\n      HEAP32[$2115 + 12 >> 2] = HEAP32[$43 + 12 >> 2];\n      HEAP32[$2115 >> 2] = HEAP32[$43 >> 2];\n      $2124 = $43 + 4 | 0;\n      HEAP32[$2115 + 4 >> 2] = HEAP32[$2124 >> 2];\n      $2126 = $43 + 8 | 0;\n      HEAP32[$2115 + 8 >> 2] = HEAP32[$2126 >> 2];\n      HEAP32[$2126 >> 2] = 0;\n      HEAP32[$2124 >> 2] = 0;\n      HEAP32[$43 >> 2] = 0;\n      HEAP32[$2114 >> 2] = (HEAP32[$2114 >> 2] | 0) + 16;\n     } else {\n      $2134 = HEAP32[$2113 >> 2] | 0;\n      $2135 = $2115 - $2134 | 0;\n      $2136 = $2135 >> 4;\n      $2137 = $2136 + 1 | 0;\n      if (($2135 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($2113);\n      $2140 = $2117 - $2134 | 0;\n      if ($2140 >> 4 >>> 0 < 1073741823) {\n       $2143 = $2140 >> 3;\n       $$0$i$i$i31 = $2143 >>> 0 < $2137 >>> 0 ? $2137 : $2143;\n      } else $$0$i$i$i31 = 2147483647;\n      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i31, $2136, $db + 28 | 0);\n      $2146 = $__v$i$i$i + 8 | 0;\n      $2147 = HEAP32[$2146 >> 2] | 0;\n      HEAP32[$2147 + 12 >> 2] = HEAP32[$43 + 12 >> 2];\n      HEAP32[$2147 >> 2] = HEAP32[$43 >> 2];\n      $2153 = $43 + 4 | 0;\n      HEAP32[$2147 + 4 >> 2] = HEAP32[$2153 >> 2];\n      $2155 = $43 + 8 | 0;\n      HEAP32[$2147 + 8 >> 2] = HEAP32[$2155 >> 2];\n      HEAP32[$2155 >> 2] = 0;\n      HEAP32[$2153 >> 2] = 0;\n      HEAP32[$43 >> 2] = 0;\n      HEAP32[$2146 >> 2] = $2147 + 16;\n      __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($2113, $__v$i$i$i);\n      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i);\n     }\n     __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($43);\n     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($template_args);\n     $$0 = $2080;\n     break L1;\n     break;\n    }\n   case 68:\n    {\n     $2159 = $first + 1 | 0;\n     if (($2159 | 0) != ($last | 0)) {\n      $2161 = HEAP8[$2159 >> 0] | 0;\n      switch ($2161 << 24 >> 24 | 0) {\n      case 112:\n       {\n        $2163 = $db + 4 | 0;\n        $2169 = ((HEAP32[$2163 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0;\n        $2170 = $first + 2 | 0;\n        $2171 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($2170, $last, $db) | 0;\n        $2177 = ((HEAP32[$2163 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0;\n        if (($2171 | 0) == ($2170 | 0)) break L65;\n        $2179 = $db + 16 | 0;\n        $2182 = HEAP32[$db + 12 >> 2] | 0;\n        $2183 = $db + 20 | 0;\n        $2184 = HEAP32[$2183 >> 2] | 0;\n        $2186 = HEAP32[$db + 24 >> 2] | 0;\n        if ($2184 >>> 0 < $2186 >>> 0) {\n         HEAP32[$2184 >> 2] = 0;\n         HEAP32[$2184 + 4 >> 2] = 0;\n         HEAP32[$2184 + 8 >> 2] = 0;\n         HEAP32[$2184 + 12 >> 2] = $2182;\n         HEAP32[$2183 >> 2] = (HEAP32[$2183 >> 2] | 0) + 16;\n        } else {\n         $2196 = HEAP32[$2179 >> 2] | 0;\n         $2197 = $2184 - $2196 | 0;\n         $2198 = $2197 >> 4;\n         $2199 = $2198 + 1 | 0;\n         if (($2197 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($2179);\n         $2202 = $2186 - $2196 | 0;\n         if ($2202 >> 4 >>> 0 < 1073741823) {\n          $2205 = $2202 >> 3;\n          $$0$i$i$i29 = $2205 >>> 0 < $2199 >>> 0 ? $2199 : $2205;\n         } else $$0$i$i$i29 = 2147483647;\n         __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i29, $2198, $db + 28 | 0);\n         $2208 = $__v$i$i$i + 8 | 0;\n         $2209 = HEAP32[$2208 >> 2] | 0;\n         HEAP32[$2209 >> 2] = 0;\n         HEAP32[$2209 + 4 >> 2] = 0;\n         HEAP32[$2209 + 8 >> 2] = 0;\n         HEAP32[$2209 + 12 >> 2] = $2182;\n         HEAP32[$2208 >> 2] = $2209 + 16;\n         __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($2179, $__v$i$i$i);\n         __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i);\n        }\n        $2214 = $__v$i$i$i + 8 | 0;\n        if ($2169 >>> 0 < $2177 >>> 0) $k20$0550 = $2169; else {\n         $$0 = $2171;\n         break L1;\n        }\n        while (1) {\n         $2216 = HEAP32[$2183 >> 2] | 0;\n         $2217 = $2216 + -16 | 0;\n         $2218 = HEAP32[$db >> 2] | 0;\n         $2219 = $2218 + ($k20$0550 * 24 | 0) | 0;\n         $2220 = $2216 + -12 | 0;\n         $2221 = HEAP32[$2220 >> 2] | 0;\n         if (($2221 | 0) == (HEAP32[$2216 + -8 >> 2] | 0)) {\n          $2233 = $2221 - (HEAP32[$2217 >> 2] | 0) | 0;\n          $2234 = ($2233 | 0) / 24 | 0;\n          $2235 = $2234 + 1 | 0;\n          if (($2233 | 0) < -24) {\n           $$lcssa698 = $2217;\n           break;\n          }\n          if ($2234 >>> 0 < 1073741823) {\n           $2238 = $2234 << 1;\n           $$0$i$i$i27 = $2238 >>> 0 < $2235 >>> 0 ? $2235 : $2238;\n          } else $$0$i$i$i27 = 2147483647;\n          __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i$i, $$0$i$i$i27, $2234, $2216 + -4 | 0);\n          $2241 = HEAP32[$2214 >> 2] | 0;\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($2241, $2219);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($2241 + 12 | 0, $2218 + ($k20$0550 * 24 | 0) + 12 | 0);\n          HEAP32[$2214 >> 2] = $2241 + 24;\n          __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($2217, $__v$i$i$i);\n          __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i$i);\n         } else {\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($2221, $2219);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($2221 + 12 | 0, $2218 + ($k20$0550 * 24 | 0) + 12 | 0);\n          HEAP32[$2220 >> 2] = (HEAP32[$2220 >> 2] | 0) + 24;\n         }\n         $k20$0550 = $k20$0550 + 1 | 0;\n         if ($k20$0550 >>> 0 >= $2177 >>> 0) {\n          $$0 = $2171;\n          break L1;\n         }\n        }\n        __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($$lcssa698);\n        break;\n       }\n      case 84:\n      case 116:\n       {\n        $2247 = __ZN10__cxxabiv112_GLOBAL__N_114parse_decltypeINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;\n        if (($2247 | 0) == ($first | 0)) break L65;\n        $2251 = HEAP32[$db + 4 >> 2] | 0;\n        if ((HEAP32[$db >> 2] | 0) == ($2251 | 0)) {\n         $$0 = $first;\n         break L1;\n        }\n        $2253 = $db + 16 | 0;\n        HEAP32[$46 >> 2] = HEAP32[$db + 12 >> 2];\n        __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($45, $2251 + -24 | 0, $46);\n        $2257 = $db + 20 | 0;\n        $2258 = HEAP32[$2257 >> 2] | 0;\n        $2260 = HEAP32[$db + 24 >> 2] | 0;\n        if ($2258 >>> 0 < $2260 >>> 0) {\n         HEAP32[$2258 + 12 >> 2] = HEAP32[$45 + 12 >> 2];\n         HEAP32[$2258 >> 2] = HEAP32[$45 >> 2];\n         $2267 = $45 + 4 | 0;\n         HEAP32[$2258 + 4 >> 2] = HEAP32[$2267 >> 2];\n         $2269 = $45 + 8 | 0;\n         HEAP32[$2258 + 8 >> 2] = HEAP32[$2269 >> 2];\n         HEAP32[$2269 >> 2] = 0;\n         HEAP32[$2267 >> 2] = 0;\n         HEAP32[$45 >> 2] = 0;\n         HEAP32[$2257 >> 2] = (HEAP32[$2257 >> 2] | 0) + 16;\n        } else {\n         $2277 = HEAP32[$2253 >> 2] | 0;\n         $2278 = $2258 - $2277 | 0;\n         $2279 = $2278 >> 4;\n         $2280 = $2279 + 1 | 0;\n         if (($2278 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($2253);\n         $2283 = $2260 - $2277 | 0;\n         if ($2283 >> 4 >>> 0 < 1073741823) {\n          $2286 = $2283 >> 3;\n          $$0$i$i$i22 = $2286 >>> 0 < $2280 >>> 0 ? $2280 : $2286;\n         } else $$0$i$i$i22 = 2147483647;\n         __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i22, $2279, $db + 28 | 0);\n         $2289 = $__v$i$i$i + 8 | 0;\n         $2290 = HEAP32[$2289 >> 2] | 0;\n         HEAP32[$2290 + 12 >> 2] = HEAP32[$45 + 12 >> 2];\n         HEAP32[$2290 >> 2] = HEAP32[$45 >> 2];\n         $2296 = $45 + 4 | 0;\n         HEAP32[$2290 + 4 >> 2] = HEAP32[$2296 >> 2];\n         $2298 = $45 + 8 | 0;\n         HEAP32[$2290 + 8 >> 2] = HEAP32[$2298 >> 2];\n         HEAP32[$2298 >> 2] = 0;\n         HEAP32[$2296 >> 2] = 0;\n         HEAP32[$45 >> 2] = 0;\n         HEAP32[$2289 >> 2] = $2290 + 16;\n         __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($2253, $__v$i$i$i);\n         __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i);\n        }\n        __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($45);\n        $$0 = $2247;\n        break L1;\n        break;\n       }\n      case 118:\n       {\n        L662 : do if (($last - $first | 0) > 3 & $197 << 24 >> 24 == 68 & $2161 << 24 >> 24 == 118) {\n         $2308 = $first + 2 | 0;\n         $2309 = HEAP8[$2308 >> 0] | 0;\n         if (($2309 + -49 & 255) < 9) {\n          $2311 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_($2308, $last) | 0;\n          if (($2311 | 0) == ($last | 0)) {\n           $$1$i263 = $first;\n           break;\n          }\n          if ((HEAP8[$2311 >> 0] | 0) != 95) {\n           $$1$i263 = $first;\n           break;\n          }\n          $2317 = $2311 - $2308 | 0;\n          $2318 = $2311 + 1 | 0;\n          if (($2318 | 0) == ($last | 0)) {\n           $$1$i263 = $first;\n           break;\n          }\n          if ((HEAP8[$2318 >> 0] | 0) != 112) {\n           $2322 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($2318, $last, $db) | 0;\n           if (($2322 | 0) == ($2318 | 0)) {\n            $$1$i263 = $first;\n            break;\n           }\n           $2326 = HEAP32[$db + 4 >> 2] | 0;\n           if ((HEAP32[$db >> 2] | 0) == ($2326 | 0)) {\n            $$1$i263 = $first;\n            break;\n           }\n           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($2, $2308, $2317);\n           $2329 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($2, 0, 12754) | 0;\n           HEAP32[$1 >> 2] = HEAP32[$2329 >> 2];\n           HEAP32[$1 + 4 >> 2] = HEAP32[$2329 + 4 >> 2];\n           HEAP32[$1 + 8 >> 2] = HEAP32[$2329 + 8 >> 2];\n           HEAP32[$2329 >> 2] = 0;\n           HEAP32[$2329 + 4 >> 2] = 0;\n           HEAP32[$2329 + 8 >> 2] = 0;\n           $2332 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1, 12677) | 0;\n           HEAP32[$0 >> 2] = HEAP32[$2332 >> 2];\n           HEAP32[$0 + 4 >> 2] = HEAP32[$2332 + 4 >> 2];\n           HEAP32[$0 + 8 >> 2] = HEAP32[$2332 + 8 >> 2];\n           HEAP32[$2332 >> 2] = 0;\n           HEAP32[$2332 + 4 >> 2] = 0;\n           HEAP32[$2332 + 8 >> 2] = 0;\n           $2335 = HEAP8[$0 >> 0] | 0;\n           $2337 = ($2335 & 1) == 0;\n           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($2326 + -24 | 0, $2337 ? $0 + 1 | 0 : HEAP32[$0 + 8 >> 2] | 0, $2337 ? ($2335 & 255) >>> 1 : HEAP32[$0 + 4 >> 2] | 0) | 0;\n           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);\n           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);\n           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);\n           $$1$i263 = $2322;\n           break;\n          }\n          $2347 = $2311 + 2 | 0;\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($6, $2308, $2317);\n          $2348 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($6, 0, 12763) | 0;\n          HEAP32[$5 >> 2] = HEAP32[$2348 >> 2];\n          HEAP32[$5 + 4 >> 2] = HEAP32[$2348 + 4 >> 2];\n          HEAP32[$5 + 8 >> 2] = HEAP32[$2348 + 8 >> 2];\n          HEAP32[$2348 >> 2] = 0;\n          HEAP32[$2348 + 4 >> 2] = 0;\n          HEAP32[$2348 + 8 >> 2] = 0;\n          $2351 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($5, 12677) | 0;\n          HEAP32[$4 >> 2] = HEAP32[$2351 >> 2];\n          HEAP32[$4 + 4 >> 2] = HEAP32[$2351 + 4 >> 2];\n          HEAP32[$4 + 8 >> 2] = HEAP32[$2351 + 8 >> 2];\n          HEAP32[$2351 >> 2] = 0;\n          HEAP32[$2351 + 4 >> 2] = 0;\n          HEAP32[$2351 + 8 >> 2] = 0;\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($3, $4);\n          $2354 = $db + 4 | 0;\n          $2355 = HEAP32[$2354 >> 2] | 0;\n          $2357 = HEAP32[$db + 8 >> 2] | 0;\n          if ($2355 >>> 0 < $2357 >>> 0) {\n           __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($2355, $3);\n           HEAP32[$2354 >> 2] = (HEAP32[$2354 >> 2] | 0) + 24;\n          } else {\n           $2364 = HEAP32[$db >> 2] | 0;\n           $2365 = $2355 - $2364 | 0;\n           $2366 = ($2365 | 0) / 24 | 0;\n           $2367 = $2366 + 1 | 0;\n           if (($2365 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n           $2371 = ($2357 - $2364 | 0) / 24 | 0;\n           if ($2371 >>> 0 < 1073741823) {\n            $2373 = $2371 << 1;\n            $$0$i$i$i$i = $2373 >>> 0 < $2367 >>> 0 ? $2367 : $2373;\n           } else $$0$i$i$i$i = 2147483647;\n           __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i$i, $$0$i$i$i$i, $2366, $db + 12 | 0);\n           $2376 = $__v$i$i$i + 8 | 0;\n           $2377 = HEAP32[$2376 >> 2] | 0;\n           __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($2377, $3);\n           HEAP32[$2376 >> 2] = $2377 + 24;\n           __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i$i);\n           __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i$i);\n          }\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($3);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($5);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($6);\n          $$1$i263 = $2347;\n          break;\n         }\n         HEAP32[$num1$i >> 2] = 0;\n         HEAP32[$num1$i + 4 >> 2] = 0;\n         HEAP32[$num1$i + 8 >> 2] = 0;\n         if ($2309 << 24 >> 24 == 95) {\n          $t12$0$i = $2308;\n          label = 521;\n         } else {\n          $2382 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($2308, $last, $db) | 0;\n          if (($2382 | 0) == ($2308 | 0)) {\n           $t12$0$i = $2308;\n           label = 521;\n          } else {\n           $2385 = $db + 4 | 0;\n           $2386 = HEAP32[$2385 >> 2] | 0;\n           if ((HEAP32[$db >> 2] | 0) != ($2386 | 0)) {\n            __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($7, $2386 + -24 | 0);\n            L689 : do if (!(HEAP8[$num1$i >> 0] & 1)) {\n             HEAP8[$num1$i + 1 >> 0] = 0;\n             HEAP8[$num1$i >> 0] = 0;\n            } else {\n             $2393 = $num1$i + 8 | 0;\n             $2394 = HEAP32[$2393 >> 2] | 0;\n             HEAP8[$2394 >> 0] = 0;\n             $2395 = $num1$i + 4 | 0;\n             HEAP32[$2395 >> 2] = 0;\n             $2396 = HEAP32[$num1$i >> 2] | 0;\n             $phitmp$i$i$i$i$i$i$i240 = ($2396 & -2) + -1 | 0;\n             $2398 = $2396 & 255;\n             do if (!($2398 & 1)) {\n              $2402 = $2396 >>> 1 & 127;\n              if (($2398 & 255) < 22) {\n               _memcpy($num1$i + 1 | 0, $2394 | 0, ($2396 >>> 1 & 127) + 1 | 0) | 0;\n               _free($2394);\n               $$ph390 = $2402;\n               break;\n              }\n              $2405 = $2402 + 16 & 240;\n              $phitmp$i2$i$i$i$i$i$i243 = $2405 + -1 | 0;\n              if (($phitmp$i2$i$i$i$i$i$i243 | 0) == ($phitmp$i$i$i$i$i$i$i240 | 0)) break L689;\n              $2408 = _malloc($2405) | 0;\n              if ($phitmp$i2$i$i$i$i$i$i243 >>> 0 <= $phitmp$i$i$i$i$i$i$i240 >>> 0 & ($2408 | 0) == 0) break L689;\n              _memcpy($2408 | 0, $num1$i + 1 | 0, ($2396 >>> 1 & 127) + 1 | 0) | 0;\n              HEAP32[$num1$i >> 2] = $2405 | 1;\n              HEAP32[$2395 >> 2] = $2402;\n              HEAP32[$2393 >> 2] = $2408;\n              break L689;\n             } else {\n              HEAP8[$num1$i + 1 >> 0] = 0;\n              _free($2394);\n              $$ph390 = 0;\n             } while (0);\n             HEAP8[$num1$i >> 0] = $$ph390 << 1;\n            } while (0);\n            HEAP32[$num1$i >> 2] = HEAP32[$7 >> 2];\n            HEAP32[$num1$i + 4 >> 2] = HEAP32[$7 + 4 >> 2];\n            HEAP32[$num1$i + 8 >> 2] = HEAP32[$7 + 8 >> 2];\n            HEAP32[$7 >> 2] = 0;\n            HEAP32[$7 + 4 >> 2] = 0;\n            HEAP32[$7 + 8 >> 2] = 0;\n            __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($7);\n            $2424 = HEAP32[$2385 >> 2] | 0;\n            $2425 = $2424 + -24 | 0;\n            $2427 = $2424;\n            do {\n             $2426 = $2427 + -24 | 0;\n             HEAP32[$2385 >> 2] = $2426;\n             __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($2426);\n             $2427 = HEAP32[$2385 >> 2] | 0;\n            } while (($2427 | 0) != ($2425 | 0));\n            $t12$0$i = $2382;\n            label = 521;\n           }\n          }\n         }\n         do if ((label | 0) == 521) {\n          if (($t12$0$i | 0) == ($last | 0)) $$13$i259$ph = $first; else if ((HEAP8[$t12$0$i >> 0] | 0) == 95) {\n           $2432 = $t12$0$i + 1 | 0;\n           if (($2432 | 0) == ($last | 0)) $$13$i259$ph = $first; else {\n            $2434 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($2432, $last, $db) | 0;\n            if (($2434 | 0) == ($2432 | 0)) $$13$i259$ph = $first; else {\n             $2438 = HEAP32[$db + 4 >> 2] | 0;\n             if ((HEAP32[$db >> 2] | 0) == ($2438 | 0)) break;\n             __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($9, 12754, $num1$i);\n             $2441 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($9, 12677) | 0;\n             HEAP32[$8 >> 2] = HEAP32[$2441 >> 2];\n             HEAP32[$8 + 4 >> 2] = HEAP32[$2441 + 4 >> 2];\n             HEAP32[$8 + 8 >> 2] = HEAP32[$2441 + 8 >> 2];\n             HEAP32[$2441 >> 2] = 0;\n             HEAP32[$2441 + 4 >> 2] = 0;\n             HEAP32[$2441 + 8 >> 2] = 0;\n             $2444 = HEAP8[$8 >> 0] | 0;\n             $2446 = ($2444 & 1) == 0;\n             __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($2438 + -24 | 0, $2446 ? $8 + 1 | 0 : HEAP32[$8 + 8 >> 2] | 0, $2446 ? ($2444 & 255) >>> 1 : HEAP32[$8 + 4 >> 2] | 0) | 0;\n             __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($8);\n             __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($9);\n             $$13$i259$ph = $2434;\n            }\n           }\n          } else $$13$i259$ph = $first;\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($num1$i);\n          $$1$i263 = $$13$i259$ph;\n          break L662;\n         } while (0);\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($num1$i);\n         $$1$i263 = $first;\n        } else $$1$i263 = $first; while (0);\n        if (($$1$i263 | 0) == ($first | 0)) break L65;\n        $2459 = HEAP32[$db + 4 >> 2] | 0;\n        if ((HEAP32[$db >> 2] | 0) == ($2459 | 0)) {\n         $$0 = $first;\n         break L1;\n        }\n        $2461 = $db + 16 | 0;\n        HEAP32[$48 >> 2] = HEAP32[$db + 12 >> 2];\n        __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($47, $2459 + -24 | 0, $48);\n        $2465 = $db + 20 | 0;\n        $2466 = HEAP32[$2465 >> 2] | 0;\n        $2468 = HEAP32[$db + 24 >> 2] | 0;\n        if ($2466 >>> 0 < $2468 >>> 0) {\n         HEAP32[$2466 + 12 >> 2] = HEAP32[$47 + 12 >> 2];\n         HEAP32[$2466 >> 2] = HEAP32[$47 >> 2];\n         $2475 = $47 + 4 | 0;\n         HEAP32[$2466 + 4 >> 2] = HEAP32[$2475 >> 2];\n         $2477 = $47 + 8 | 0;\n         HEAP32[$2466 + 8 >> 2] = HEAP32[$2477 >> 2];\n         HEAP32[$2477 >> 2] = 0;\n         HEAP32[$2475 >> 2] = 0;\n         HEAP32[$47 >> 2] = 0;\n         HEAP32[$2465 >> 2] = (HEAP32[$2465 >> 2] | 0) + 16;\n        } else {\n         $2485 = HEAP32[$2461 >> 2] | 0;\n         $2486 = $2466 - $2485 | 0;\n         $2487 = $2486 >> 4;\n         $2488 = $2487 + 1 | 0;\n         if (($2486 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($2461);\n         $2491 = $2468 - $2485 | 0;\n         if ($2491 >> 4 >>> 0 < 1073741823) {\n          $2494 = $2491 >> 3;\n          $$0$i$i$i17 = $2494 >>> 0 < $2488 >>> 0 ? $2488 : $2494;\n         } else $$0$i$i$i17 = 2147483647;\n         __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i17, $2487, $db + 28 | 0);\n         $2497 = $__v$i$i$i + 8 | 0;\n         $2498 = HEAP32[$2497 >> 2] | 0;\n         HEAP32[$2498 + 12 >> 2] = HEAP32[$47 + 12 >> 2];\n         HEAP32[$2498 >> 2] = HEAP32[$47 >> 2];\n         $2504 = $47 + 4 | 0;\n         HEAP32[$2498 + 4 >> 2] = HEAP32[$2504 >> 2];\n         $2506 = $47 + 8 | 0;\n         HEAP32[$2498 + 8 >> 2] = HEAP32[$2506 >> 2];\n         HEAP32[$2506 >> 2] = 0;\n         HEAP32[$2504 >> 2] = 0;\n         HEAP32[$47 >> 2] = 0;\n         HEAP32[$2497 >> 2] = $2498 + 16;\n         __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($2461, $__v$i$i$i);\n         __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i);\n        }\n        __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($47);\n        $$0 = $$1$i263;\n        break L1;\n        break;\n       }\n      default:\n       break L65;\n      }\n     }\n     break;\n    }\n   default:\n    {}\n   } while (0);\n   $2510 = __ZN10__cxxabiv112_GLOBAL__N_118parse_builtin_typeINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;\n   if (($2510 | 0) == ($first | 0)) {\n    $2512 = __ZN10__cxxabiv112_GLOBAL__N_110parse_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;\n    if (($2512 | 0) == ($first | 0)) $$0 = $first; else {\n     $2516 = HEAP32[$db + 4 >> 2] | 0;\n     if ((HEAP32[$db >> 2] | 0) == ($2516 | 0)) $$0 = $first; else {\n      $2518 = $db + 16 | 0;\n      HEAP32[$50 >> 2] = HEAP32[$db + 12 >> 2];\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($49, $2516 + -24 | 0, $50);\n      $2522 = $db + 20 | 0;\n      $2523 = HEAP32[$2522 >> 2] | 0;\n      $2525 = HEAP32[$db + 24 >> 2] | 0;\n      if ($2523 >>> 0 < $2525 >>> 0) {\n       HEAP32[$2523 + 12 >> 2] = HEAP32[$49 + 12 >> 2];\n       HEAP32[$2523 >> 2] = HEAP32[$49 >> 2];\n       $2532 = $49 + 4 | 0;\n       HEAP32[$2523 + 4 >> 2] = HEAP32[$2532 >> 2];\n       $2534 = $49 + 8 | 0;\n       HEAP32[$2523 + 8 >> 2] = HEAP32[$2534 >> 2];\n       HEAP32[$2534 >> 2] = 0;\n       HEAP32[$2532 >> 2] = 0;\n       HEAP32[$49 >> 2] = 0;\n       HEAP32[$2522 >> 2] = (HEAP32[$2522 >> 2] | 0) + 16;\n      } else {\n       $2542 = HEAP32[$2518 >> 2] | 0;\n       $2543 = $2523 - $2542 | 0;\n       $2544 = $2543 >> 4;\n       $2545 = $2544 + 1 | 0;\n       if (($2543 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($2518);\n       $2548 = $2525 - $2542 | 0;\n       if ($2548 >> 4 >>> 0 < 1073741823) {\n        $2551 = $2548 >> 3;\n        $$0$i$i$i = $2551 >>> 0 < $2545 >>> 0 ? $2545 : $2551;\n       } else $$0$i$i$i = 2147483647;\n       __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i, $2544, $db + 28 | 0);\n       $2554 = $__v$i$i$i + 8 | 0;\n       $2555 = HEAP32[$2554 >> 2] | 0;\n       HEAP32[$2555 + 12 >> 2] = HEAP32[$49 + 12 >> 2];\n       HEAP32[$2555 >> 2] = HEAP32[$49 >> 2];\n       $2561 = $49 + 4 | 0;\n       HEAP32[$2555 + 4 >> 2] = HEAP32[$2561 >> 2];\n       $2563 = $49 + 8 | 0;\n       HEAP32[$2555 + 8 >> 2] = HEAP32[$2563 >> 2];\n       HEAP32[$2563 >> 2] = 0;\n       HEAP32[$2561 >> 2] = 0;\n       HEAP32[$49 >> 2] = 0;\n       HEAP32[$2554 >> 2] = $2555 + 16;\n       __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($2518, $__v$i$i$i);\n       __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i);\n      }\n      __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($49);\n      $$0 = $2512;\n     }\n    }\n   } else $$0 = $2510;\n  } else $$0 = $195;\n } while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\nfunction __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) {\n $first = $first | 0;\n $last = $last | 0;\n $db = $db | 0;\n var $$0 = 0, $$0$i$i$i = 0, $$0$i$i$i$i = 0, $$0$i$i$i$i299 = 0, $$0$i$i$i$i348 = 0, $$0$i254 = 0, $$019$i = 0, $$02$i = 0, $$02$i310 = 0, $$02$i317 = 0, $$03$i = 0, $$03$i174 = 0, $$03$i189 = 0, $$03$i200 = 0, $$03$i211 = 0, $$03$i265 = 0, $$03$i456 = 0, $$03$i486 = 0, $$06$i = 0, $$06$i248 = 0, $$06$i345 = 0, $$06$i426 = 0, $$2$i302 = 0, $$2$i398 = 0, $$221$i = 0, $$311$i = 0, $$9$i = 0, $$first$i = 0, $$ph518 = 0, $$ph520524 = 0, $$phi$trans$insert = 0, $$pre$i$i$i = 0, $$pre$i$i$i$i = 0, $$pre$i$i$i$i372 = 0, $$pre$i$i$i$i436 = 0, $$pre$i$i$i$i466 = 0, $$pre$i$i$i87 = 0, $$pre$phi511Z2D = 0, $$pre$phiZ2D = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $1015 = 0, $1016 = 0, $1017 = 0, $1018 = 0, $1022 = 0, $1024 = 0, $1025 = 0, $1026 = 0, $1027 = 0, $103 = 0, $1038 = 0, $1039 = 0, $104 = 0, $1040 = 0, $1041 = 0, $1043 = 0, $1047 = 0, $1050 = 0, $1053 = 0, $106 = 0, $1069 = 0, $107 = 0, $1070 = 0, $1071 = 0, $1072 = 0, $1076 = 0, $1079 = 0, $1081 = 0, $109 = 0, $1091 = 0, $1093 = 0, $11 = 0, $110 = 0, $1103 = 0, $1106 = 0, $1108 = 0, $112 = 0, $1120 = 0, $1122 = 0, $1129 = 0, $113 = 0, $1130 = 0, $1131 = 0, $1132 = 0, $1136 = 0, $1138 = 0, $1141 = 0, $1142 = 0, $1145 = 0, $1146 = 0, $1148 = 0, $1149 = 0, $1151 = 0, $1152 = 0, $1154 = 0, $1155 = 0, $1159 = 0, $1161 = 0, $1162 = 0, $1165 = 0, $1172 = 0, $1174 = 0, $1177 = 0, $1181 = 0, $1184 = 0, $1189 = 0, $1190 = 0, $1193 = 0, $1194 = 0, $1196 = 0, $1197 = 0, $12 = 0, $1206 = 0, $1209 = 0, $121 = 0, $1219 = 0, $122 = 0, $1220 = 0, $1222 = 0, $1223 = 0, $1225 = 0, $1226 = 0, $1231 = 0, $1232 = 0, $1234 = 0, $1235 = 0, $1237 = 0, $1238 = 0, $1240 = 0, $1244 = 0, $1245 = 0, $1247 = 0, $1251 = 0, $1253 = 0, $1254 = 0, $1257 = 0, $126 = 0, $1260 = 0, $1261 = 0, $1269 = 0, $1270 = 0, $1272 = 0, $1274 = 0, $1275 = 0, $128 = 0, $1283 = 0, $1284 = 0, $1285 = 0, $1286 = 0, $129 = 0, $1291 = 0, $1293 = 0, $13 = 0, $1306 = 0, $1307 = 0, $1309 = 0, $1311 = 0, $1313 = 0, $1314 = 0, $132 = 0, $1322 = 0, $1323 = 0, $1324 = 0, $1325 = 0, $1328 = 0, $1329 = 0, $1330 = 0, $1331 = 0, $1335 = 0, $1336 = 0, $1339 = 0, $1341 = 0, $1351 = 0, $1354 = 0, $1357 = 0, $1359 = 0, $1369 = 0, $1372 = 0, $1375 = 0, $1376 = 0, $1377 = 0, $1379 = 0, $1380 = 0, $1381 = 0, $1383 = 0, $1384 = 0, $1385 = 0, $1386 = 0, $1387 = 0, $139 = 0, $1398 = 0, $1399 = 0, $14 = 0, $1401 = 0, $1403 = 0, $1404 = 0, $141 = 0, $1412 = 0, $1413 = 0, $1414 = 0, $1415 = 0, $1417 = 0, $1418 = 0, $1421 = 0, $1424 = 0, $1426 = 0, $1436 = 0, $1439 = 0, $144 = 0, $1442 = 0, $1443 = 0, $1445 = 0, $1446 = 0, $1448 = 0, $1449 = 0, $1451 = 0, $1452 = 0, $1463 = 0, $1464 = 0, $1466 = 0, $1468 = 0, $1469 = 0, $1477 = 0, $1478 = 0, $1479 = 0, $148 = 0, $1480 = 0, $1482 = 0, $1483 = 0, $1486 = 0, $1489 = 0, $1491 = 0, $15 = 0, $1501 = 0, $1504 = 0, $151 = 0, $1513 = 0, $1514 = 0, $1523 = 0, $1524 = 0, $1528 = 0, $1530 = 0, $1531 = 0, $1534 = 0, $1543 = 0, $1544 = 0, $1548 = 0, $1550 = 0, $1551 = 0, $1554 = 0, $156 = 0, $1569 = 0, $157 = 0, $1572 = 0, $1578 = 0, $1579 = 0, $1581 = 0, $1585 = 0, $1591 = 0, $1593 = 0, $16 = 0, $160 = 0, $1603 = 0, $1604 = 0, $1605 = 0, $1609 = 0, $161 = 0, $1612 = 0, $1614 = 0, $1623 = 0, $1624 = 0, $1625 = 0, $1626 = 0, $163 = 0, $1632 = 0, $1634 = 0, $164 = 0, $1641 = 0, $1642 = 0, $1643 = 0, $1644 = 0, $1648 = 0, $1650 = 0, $1653 = 0, $1654 = 0, $1662 = 0, $1665 = 0, $1669 = 0, $1671 = 0, $1672 = 0, $1675 = 0, $1685 = 0, $1687 = 0, $1693 = 0, $1695 = 0, $1696 = 0, $1699 = 0, $17 = 0, $1702 = 0, $1703 = 0, $1705 = 0, $1712 = 0, $1713 = 0, $1714 = 0, $1715 = 0, $1719 = 0, $1721 = 0, $1724 = 0, $1725 = 0, $173 = 0, $1734 = 0, $1735 = 0, $1739 = 0, $1741 = 0, $1742 = 0, $1746 = 0, $1747 = 0, $1748 = 0, $1749 = 0, $1750 = 0, $1751 = 0, $176 = 0, $18 = 0, $187 = 0, $188 = 0, $19 = 0, $192 = 0, $194 = 0, $195 = 0, $198 = 0, $2 = 0, $20 = 0, $205 = 0, $207 = 0, $21 = 0, $210 = 0, $214 = 0, $217 = 0, $22 = 0, $222 = 0, $223 = 0, $226 = 0, $227 = 0, $229 = 0, $23 = 0, $230 = 0, $239 = 0, $24 = 0, $242 = 0, $25 = 0, $256 = 0, $257 = 0, $259 = 0, $26 = 0, $261 = 0, $262 = 0, $27 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0, $275 = 0, $276 = 0, $279 = 0, $28 = 0, $282 = 0, $284 = 0, $29 = 0, $294 = 0, $297 = 0, $3 = 0, $30 = 0, $305 = 0, $306 = 0, $31 = 0, $310 = 0, $311 = 0, $314 = 0, $315 = 0, $317 = 0, $32 = 0, $327 = 0, $33 = 0, $330 = 0, $335 = 0, $337 = 0, $34 = 0, $340 = 0, $344 = 0, $347 = 0, $35 = 0, $352 = 0, $353 = 0, $356 = 0, $357 = 0, $359 = 0, $36 = 0, $360 = 0, $369 = 0, $37 = 0, $372 = 0, $379 = 0, $38 = 0, $380 = 0, $381 = 0, $384 = 0, $388 = 0, $39 = 0, $391 = 0, $392 = 0, $393 = 0, $394 = 0, $396 = 0, $398 = 0, $4 = 0, $40 = 0, $402 = 0, $41 = 0, $412 = 0, $416 = 0, $417 = 0, $419 = 0, $42 = 0, $420 = 0, $428 = 0, $429 = 0, $43 = 0, $430 = 0, $431 = 0, $436 = 0, $438 = 0, $44 = 0, $442 = 0, $443 = 0, $445 = 0, $449 = 0, $45 = 0, $457 = 0, $458 = 0, $459 = 0, $46 = 0, $460 = 0, $464 = 0, $466 = 0, $469 = 0, $47 = 0, $470 = 0, $473 = 0, $477 = 0, $48 = 0, $482 = 0, $483 = 0, $49 = 0, $491 = 0, $492 = 0, $493 = 0, $494 = 0, $496 = 0, $497 = 0, $5 = 0, $50 = 0, $500 = 0, $503 = 0, $505 = 0, $51 = 0, $515 = 0, $518 = 0, $52 = 0, $524 = 0, $525 = 0, $528 = 0, $529 = 0, $53 = 0, $531 = 0, $534 = 0, $539 = 0, $54 = 0, $541 = 0, $55 = 0, $551 = 0, $558 = 0, $56 = 0, $560 = 0, $563 = 0, $567 = 0, $57 = 0, $570 = 0, $575 = 0, $576 = 0, $579 = 0, $58 = 0, $580 = 0, $582 = 0, $583 = 0, $59 = 0, $592 = 0, $595 = 0, $6 = 0, $60 = 0, $606 = 0, $607 = 0, $609 = 0, $61 = 0, $611 = 0, $612 = 0, $62 = 0, $620 = 0, $621 = 0, $622 = 0, $623 = 0, $625 = 0, $626 = 0, $629 = 0, $63 = 0, $632 = 0, $634 = 0, $64 = 0, $644 = 0, $647 = 0, $65 = 0, $650 = 0, $651 = 0, $653 = 0, $654 = 0, $657 = 0, $658 = 0, $66 = 0, $660 = 0, $663 = 0, $668 = 0, $67 = 0, $670 = 0, $68 = 0, $680 = 0, $687 = 0, $689 = 0, $69 = 0, $692 = 0, $696 = 0, $699 = 0, $7 = 0, $70 = 0, $704 = 0, $705 = 0, $708 = 0, $709 = 0, $71 = 0, $711 = 0, $712 = 0, $72 = 0, $721 = 0, $724 = 0, $73 = 0, $736 = 0, $737 = 0, $739 = 0, $74 = 0, $741 = 0, $742 = 0, $75 = 0, $750 = 0, $751 = 0, $752 = 0, $753 = 0, $756 = 0, $758 = 0, $76 = 0, $77 = 0, $774 = 0, $775 = 0, $777 = 0, $779 = 0, $78 = 0, $780 = 0, $788 = 0, $789 = 0, $79 = 0, $790 = 0, $791 = 0, $794 = 0, $796 = 0, $8 = 0, $80 = 0, $806 = 0, $807 = 0, $809 = 0, $81 = 0, $810 = 0, $815 = 0, $816 = 0, $818 = 0, $819 = 0, $821 = 0, $822 = 0, $827 = 0, $828 = 0, $83 = 0, $830 = 0, $831 = 0, $836 = 0, $837 = 0, $839 = 0, $841 = 0, $842 = 0, $85 = 0, $850 = 0, $851 = 0, $852 = 0, $853 = 0, $857 = 0, $858 = 0, $861 = 0, $863 = 0, $873 = 0, $876 = 0, $879 = 0, $880 = 0, $881 = 0, $886 = 0, $887 = 0, $889 = 0, $890 = 0, $892 = 0, $893 = 0, $895 = 0, $896 = 0, $9 = 0, $90 = 0, $901 = 0, $902 = 0, $904 = 0, $905 = 0, $907 = 0, $908 = 0, $910 = 0, $911 = 0, $913 = 0, $917 = 0, $918 = 0, $920 = 0, $924 = 0, $926 = 0, $927 = 0, $930 = 0, $936 = 0, $940 = 0, $943 = 0, $945 = 0, $946 = 0, $947 = 0, $954 = 0, $955 = 0, $961 = 0, $976 = 0, $977 = 0, $984 = 0, $985 = 0, $986 = 0, $987 = 0, $989 = 0, $993 = 0, $996 = 0, $999 = 0, $has_expr_list$0$off0$i = 0, $has_expr_list$0$off0$i$lcssa = 0, $has_init$0$off0$i513 = 0, $k$0$i621 = 0, $k$0$i622 = 0, $k1$0$i618 = 0, $op1 = 0, $op18 = 0, $op2 = 0, $op27 = 0, $op3 = 0, $parsed_gs$0$off0 = 0, $parsed_gs$0$off0$i = 0, $phitmp$i$i$i$i$i$i$i273 = 0, $phitmp$i$i$i$i$i$i32$i = 0, $phitmp$i2$i$i$i$i$i$i276 = 0, $phitmp$i2$i$i$i$i$i35$i = 0, $t$0 = 0, $t$0$i = 0, $t$0$i267 = 0, $t$0$i349567 = 0, $t$0$i390$lcssa = 0, $t$0$i390556 = 0, $t$1$i = 0, $t$1$i$lcssa = 0, $t$1$i350 = 0, $t$2$i = 0, $t$2$i351 = 0, $t$3$i512 = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0, $t$1$i$looptemp = 0, $t$2$i$looptemp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 1168 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $0 = sp + 1144 | 0;\n $1 = sp + 1120 | 0;\n $2 = sp + 1096 | 0;\n $3 = sp + 1084 | 0;\n $4 = sp + 1072 | 0;\n $5 = sp + 1048 | 0;\n $6 = sp + 1032 | 0;\n $7 = sp + 900 | 0;\n $8 = sp + 632 | 0;\n $9 = sp + 620 | 0;\n $10 = sp + 584 | 0;\n $11 = sp + 560 | 0;\n $12 = sp + 524 | 0;\n $13 = sp + 1020 | 0;\n $14 = sp + 1008 | 0;\n $15 = sp + 996 | 0;\n $16 = sp + 984 | 0;\n $17 = sp + 972 | 0;\n $18 = sp + 960 | 0;\n $19 = sp + 948 | 0;\n $20 = sp + 936 | 0;\n $21 = sp + 924 | 0;\n $22 = sp + 912 | 0;\n $23 = sp + 888 | 0;\n $24 = sp + 876 | 0;\n $25 = sp + 864 | 0;\n $26 = sp + 852 | 0;\n $27 = sp + 840 | 0;\n $28 = sp + 828 | 0;\n $29 = sp + 816 | 0;\n $30 = sp + 804 | 0;\n $31 = sp + 792 | 0;\n $32 = sp + 780 | 0;\n $33 = sp + 768 | 0;\n $34 = sp + 756 | 0;\n $35 = sp + 744 | 0;\n $op2 = sp + 732 | 0;\n $op1 = sp + 720 | 0;\n $36 = sp + 696 | 0;\n $37 = sp + 680 | 0;\n $38 = sp + 668 | 0;\n $39 = sp + 656 | 0;\n $40 = sp + 644 | 0;\n $41 = sp + 608 | 0;\n $42 = sp + 596 | 0;\n $43 = sp + 548 | 0;\n $44 = sp + 536 | 0;\n $45 = sp + 512 | 0;\n $46 = sp + 500 | 0;\n $47 = sp + 488 | 0;\n $48 = sp + 476 | 0;\n $49 = sp + 464 | 0;\n $50 = sp + 440 | 0;\n $51 = sp + 424 | 0;\n $52 = sp + 412 | 0;\n $53 = sp + 400 | 0;\n $54 = sp + 388 | 0;\n $55 = sp + 376 | 0;\n $56 = sp + 364 | 0;\n $57 = sp + 352 | 0;\n $58 = sp + 340 | 0;\n $59 = sp + 328 | 0;\n $60 = sp + 316 | 0;\n $61 = sp + 304 | 0;\n $62 = sp + 292 | 0;\n $63 = sp + 280 | 0;\n $64 = sp + 256 | 0;\n $65 = sp + 240 | 0;\n $66 = sp + 228 | 0;\n $67 = sp + 216 | 0;\n $68 = sp + 204 | 0;\n $op3 = sp + 192 | 0;\n $op27 = sp + 180 | 0;\n $op18 = sp + 168 | 0;\n $69 = sp + 144 | 0;\n $70 = sp + 132 | 0;\n $71 = sp + 120 | 0;\n $72 = sp + 108 | 0;\n $73 = sp + 96 | 0;\n $74 = sp + 84 | 0;\n $75 = sp + 72 | 0;\n $76 = sp + 60 | 0;\n $77 = sp + 48 | 0;\n $78 = sp + 36 | 0;\n $79 = sp + 24 | 0;\n $80 = sp;\n $81 = $last;\n $83 = $81 - $first | 0;\n L1 : do if (($83 | 0) > 1) {\n  $85 = ($83 | 0) > 3;\n  if ($85) if ((HEAP8[$first >> 0] | 0) == 103) {\n   $90 = (HEAP8[$first + 1 >> 0] | 0) == 115;\n   $parsed_gs$0$off0 = $90;\n   $t$0 = $90 ? $first + 2 | 0 : $first;\n  } else {\n   $parsed_gs$0$off0 = 0;\n   $t$0 = $first;\n  } else {\n   $parsed_gs$0$off0 = 0;\n   $t$0 = $first;\n  }\n  do switch (HEAP8[$t$0 >> 0] | 0) {\n  case 76:\n   {\n    $$0 = __ZN10__cxxabiv112_GLOBAL__N_118parse_expr_primaryINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;\n    break L1;\n    break;\n   }\n  case 84:\n   {\n    $$0 = __ZN10__cxxabiv112_GLOBAL__N_120parse_template_paramINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;\n    break L1;\n    break;\n   }\n  case 102:\n   {\n    $$0 = __ZN10__cxxabiv112_GLOBAL__N_120parse_function_paramINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;\n    break L1;\n    break;\n   }\n  case 97:\n   {\n    switch (HEAP8[$t$0 + 1 >> 0] | 0) {\n    case 97:\n     {\n      $100 = $first + 2 | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($13, 12717, 2);\n      $101 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($100, $last, $13, $db) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($13);\n      $$0 = ($101 | 0) == ($100 | 0) ? $first : $101;\n      break L1;\n      break;\n     }\n    case 100:\n     {\n      $103 = $first + 2 | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($14, 12738, 1);\n      $104 = __ZN10__cxxabiv112_GLOBAL__N_123parse_prefix_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($103, $last, $14, $db) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($14);\n      $$0 = ($104 | 0) == ($103 | 0) ? $first : $104;\n      break L1;\n      break;\n     }\n    case 110:\n     {\n      $106 = $first + 2 | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($15, 12738, 1);\n      $107 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($106, $last, $15, $db) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($15);\n      $$0 = ($107 | 0) == ($106 | 0) ? $first : $107;\n      break L1;\n      break;\n     }\n    case 78:\n     {\n      $109 = $first + 2 | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($16, 13863, 2);\n      $110 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($109, $last, $16, $db) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($16);\n      $$0 = ($110 | 0) == ($109 | 0) ? $first : $110;\n      break L1;\n      break;\n     }\n    case 83:\n     {\n      $112 = $first + 2 | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($17, 13866, 1);\n      $113 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($112, $last, $17, $db) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($17);\n      $$0 = ($113 | 0) == ($112 | 0) ? $first : $113;\n      break L1;\n      break;\n     }\n    case 116:\n     {\n      if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 97) if ((HEAP8[$first + 1 >> 0] | 0) == 116) {\n       $121 = $first + 2 | 0;\n       $122 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($121, $last, $db) | 0;\n       if (($122 | 0) == ($121 | 0)) $$03$i486 = $first; else {\n        $126 = HEAP32[$db + 4 >> 2] | 0;\n        if ((HEAP32[$db >> 2] | 0) == ($126 | 0)) $$03$i486 = $first; else {\n         $128 = $126 + -24 | 0;\n         __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($2, $128);\n         $129 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($2, 0, 13868) | 0;\n         HEAP32[$1 >> 2] = HEAP32[$129 >> 2];\n         HEAP32[$1 + 4 >> 2] = HEAP32[$129 + 4 >> 2];\n         HEAP32[$1 + 8 >> 2] = HEAP32[$129 + 8 >> 2];\n         HEAP32[$129 >> 2] = 0;\n         HEAP32[$129 + 4 >> 2] = 0;\n         HEAP32[$129 + 8 >> 2] = 0;\n         $132 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1, 12593) | 0;\n         HEAP32[$0 >> 2] = HEAP32[$132 >> 2];\n         HEAP32[$0 + 4 >> 2] = HEAP32[$132 + 4 >> 2];\n         HEAP32[$0 + 8 >> 2] = HEAP32[$132 + 8 >> 2];\n         HEAP32[$132 >> 2] = 0;\n         HEAP32[$132 + 4 >> 2] = 0;\n         HEAP32[$132 + 8 >> 2] = 0;\n         do if (!(HEAP8[$128 >> 0] & 1)) {\n          HEAP8[$128 + 1 >> 0] = 0;\n          HEAP8[$128 >> 0] = 0;\n         } else {\n          $139 = $126 + -16 | 0;\n          HEAP8[HEAP32[$139 >> 2] >> 0] = 0;\n          $141 = $126 + -20 | 0;\n          HEAP32[$141 >> 2] = 0;\n          $$pre$i$i$i$i466 = HEAP8[$128 >> 0] | 0;\n          if (!($$pre$i$i$i$i466 & 1)) {\n           $148 = $$pre$i$i$i$i466;\n           $157 = 10;\n          } else {\n           $144 = HEAP32[$128 >> 2] | 0;\n           $148 = $144 & 255;\n           $157 = ($144 & -2) + -1 | 0;\n          }\n          if (!($148 & 1)) {\n           $151 = ($148 & 255) >>> 1;\n           if (($148 & 255) < 22) {\n            $156 = 10;\n            $1746 = 1;\n            $176 = $151;\n           } else {\n            $156 = ($151 + 16 & 240) + -1 | 0;\n            $1746 = 1;\n            $176 = $151;\n           }\n          } else {\n           $156 = 10;\n           $1746 = 0;\n           $176 = 0;\n          }\n          if (($156 | 0) != ($157 | 0)) {\n           if (($156 | 0) == 10) {\n            $163 = $128 + 1 | 0;\n            $164 = HEAP32[$139 >> 2] | 0;\n            if ($1746) {\n             _memcpy($163 | 0, $164 | 0, (($148 & 255) >>> 1) + 1 | 0) | 0;\n             _free($164);\n            } else {\n             HEAP8[$163 >> 0] = HEAP8[$164 >> 0] | 0;\n             _free($164);\n            }\n            HEAP8[$128 >> 0] = $176 << 1;\n            break;\n           }\n           $160 = $156 + 1 | 0;\n           $161 = _malloc($160) | 0;\n           if (!($156 >>> 0 <= $157 >>> 0 & ($161 | 0) == 0)) {\n            if ($1746) _memcpy($161 | 0, $128 + 1 | 0, (($148 & 255) >>> 1) + 1 | 0) | 0; else {\n             $173 = HEAP32[$139 >> 2] | 0;\n             HEAP8[$161 >> 0] = HEAP8[$173 >> 0] | 0;\n             _free($173);\n            }\n            HEAP32[$128 >> 2] = $160 | 1;\n            HEAP32[$141 >> 2] = $176;\n            HEAP32[$139 >> 2] = $161;\n           }\n          }\n         } while (0);\n         HEAP32[$128 >> 2] = HEAP32[$0 >> 2];\n         HEAP32[$128 + 4 >> 2] = HEAP32[$0 + 4 >> 2];\n         HEAP32[$128 + 8 >> 2] = HEAP32[$0 + 8 >> 2];\n         HEAP32[$0 >> 2] = 0;\n         HEAP32[$0 + 4 >> 2] = 0;\n         HEAP32[$0 + 8 >> 2] = 0;\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);\n         $$03$i486 = $122;\n        }\n       }\n      } else $$03$i486 = $first; else $$03$i486 = $first; else $$03$i486 = $first;\n      $$0 = $$03$i486;\n      break L1;\n      break;\n     }\n    case 122:\n     {\n      if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 97) if ((HEAP8[$first + 1 >> 0] | 0) == 122) {\n       $187 = $first + 2 | 0;\n       $188 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($187, $last, $db) | 0;\n       if (($188 | 0) == ($187 | 0)) $$03$i456 = $first; else {\n        $192 = HEAP32[$db + 4 >> 2] | 0;\n        if ((HEAP32[$db >> 2] | 0) == ($192 | 0)) $$03$i456 = $first; else {\n         $194 = $192 + -24 | 0;\n         __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($2, $194);\n         $195 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($2, 0, 13868) | 0;\n         HEAP32[$1 >> 2] = HEAP32[$195 >> 2];\n         HEAP32[$1 + 4 >> 2] = HEAP32[$195 + 4 >> 2];\n         HEAP32[$1 + 8 >> 2] = HEAP32[$195 + 8 >> 2];\n         HEAP32[$195 >> 2] = 0;\n         HEAP32[$195 + 4 >> 2] = 0;\n         HEAP32[$195 + 8 >> 2] = 0;\n         $198 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1, 12593) | 0;\n         HEAP32[$0 >> 2] = HEAP32[$198 >> 2];\n         HEAP32[$0 + 4 >> 2] = HEAP32[$198 + 4 >> 2];\n         HEAP32[$0 + 8 >> 2] = HEAP32[$198 + 8 >> 2];\n         HEAP32[$198 >> 2] = 0;\n         HEAP32[$198 + 4 >> 2] = 0;\n         HEAP32[$198 + 8 >> 2] = 0;\n         do if (!(HEAP8[$194 >> 0] & 1)) {\n          HEAP8[$194 + 1 >> 0] = 0;\n          HEAP8[$194 >> 0] = 0;\n         } else {\n          $205 = $192 + -16 | 0;\n          HEAP8[HEAP32[$205 >> 2] >> 0] = 0;\n          $207 = $192 + -20 | 0;\n          HEAP32[$207 >> 2] = 0;\n          $$pre$i$i$i$i436 = HEAP8[$194 >> 0] | 0;\n          if (!($$pre$i$i$i$i436 & 1)) {\n           $214 = $$pre$i$i$i$i436;\n           $223 = 10;\n          } else {\n           $210 = HEAP32[$194 >> 2] | 0;\n           $214 = $210 & 255;\n           $223 = ($210 & -2) + -1 | 0;\n          }\n          if (!($214 & 1)) {\n           $217 = ($214 & 255) >>> 1;\n           if (($214 & 255) < 22) {\n            $1747 = 1;\n            $222 = 10;\n            $242 = $217;\n           } else {\n            $1747 = 1;\n            $222 = ($217 + 16 & 240) + -1 | 0;\n            $242 = $217;\n           }\n          } else {\n           $1747 = 0;\n           $222 = 10;\n           $242 = 0;\n          }\n          if (($222 | 0) != ($223 | 0)) {\n           if (($222 | 0) == 10) {\n            $229 = $194 + 1 | 0;\n            $230 = HEAP32[$205 >> 2] | 0;\n            if ($1747) {\n             _memcpy($229 | 0, $230 | 0, (($214 & 255) >>> 1) + 1 | 0) | 0;\n             _free($230);\n            } else {\n             HEAP8[$229 >> 0] = HEAP8[$230 >> 0] | 0;\n             _free($230);\n            }\n            HEAP8[$194 >> 0] = $242 << 1;\n            break;\n           }\n           $226 = $222 + 1 | 0;\n           $227 = _malloc($226) | 0;\n           if (!($222 >>> 0 <= $223 >>> 0 & ($227 | 0) == 0)) {\n            if ($1747) _memcpy($227 | 0, $194 + 1 | 0, (($214 & 255) >>> 1) + 1 | 0) | 0; else {\n             $239 = HEAP32[$205 >> 2] | 0;\n             HEAP8[$227 >> 0] = HEAP8[$239 >> 0] | 0;\n             _free($239);\n            }\n            HEAP32[$194 >> 2] = $226 | 1;\n            HEAP32[$207 >> 2] = $242;\n            HEAP32[$205 >> 2] = $227;\n           }\n          }\n         } while (0);\n         HEAP32[$194 >> 2] = HEAP32[$0 >> 2];\n         HEAP32[$194 + 4 >> 2] = HEAP32[$0 + 4 >> 2];\n         HEAP32[$194 + 8 >> 2] = HEAP32[$0 + 8 >> 2];\n         HEAP32[$0 >> 2] = 0;\n         HEAP32[$0 + 4 >> 2] = 0;\n         HEAP32[$0 + 8 >> 2] = 0;\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);\n         $$03$i456 = $188;\n        }\n       }\n      } else $$03$i456 = $first; else $$03$i456 = $first; else $$03$i456 = $first;\n      $$0 = $$03$i456;\n      break L1;\n      break;\n     }\n    default:\n     {\n      $$0 = $first;\n      break L1;\n     }\n    }\n    break;\n   }\n  case 99:\n   {\n    switch (HEAP8[$t$0 + 1 >> 0] | 0) {\n    case 99:\n     {\n      if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 99) if ((HEAP8[$first + 1 >> 0] | 0) == 99) {\n       $256 = $first + 2 | 0;\n       $257 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($256, $last, $db) | 0;\n       if (($257 | 0) == ($256 | 0)) $$06$i426 = $first; else {\n        $259 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($257, $last, $db) | 0;\n        if (($259 | 0) == ($257 | 0)) $$06$i426 = $first; else {\n         $261 = $db + 4 | 0;\n         $262 = HEAP32[$261 >> 2] | 0;\n         if ((($262 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$06$i426 = $first; else {\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($0, $262 + -24 | 0);\n          $270 = HEAP32[$261 >> 2] | 0;\n          $271 = $270 + -24 | 0;\n          $273 = $270;\n          do {\n           $272 = $273 + -24 | 0;\n           HEAP32[$261 >> 2] = $272;\n           __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($272);\n           $273 = HEAP32[$261 >> 2] | 0;\n          } while (($273 | 0) != ($271 | 0));\n          $275 = $270 + -48 | 0;\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($6, $275);\n          $276 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($6, 0, 13878) | 0;\n          HEAP32[$5 >> 2] = HEAP32[$276 >> 2];\n          HEAP32[$5 + 4 >> 2] = HEAP32[$276 + 4 >> 2];\n          HEAP32[$5 + 8 >> 2] = HEAP32[$276 + 8 >> 2];\n          HEAP32[$276 >> 2] = 0;\n          HEAP32[$276 + 4 >> 2] = 0;\n          HEAP32[$276 + 8 >> 2] = 0;\n          $279 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($5, 13890) | 0;\n          HEAP32[$4 >> 2] = HEAP32[$279 >> 2];\n          HEAP32[$4 + 4 >> 2] = HEAP32[$279 + 4 >> 2];\n          HEAP32[$4 + 8 >> 2] = HEAP32[$279 + 8 >> 2];\n          HEAP32[$279 >> 2] = 0;\n          HEAP32[$279 + 4 >> 2] = 0;\n          HEAP32[$279 + 8 >> 2] = 0;\n          $282 = HEAP8[$0 >> 0] | 0;\n          $284 = ($282 & 1) == 0;\n          $294 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($4, $284 ? $0 + 1 | 0 : HEAP32[$0 + 8 >> 2] | 0, $284 ? ($282 & 255) >>> 1 : HEAP32[$0 + 4 >> 2] | 0) | 0;\n          HEAP32[$3 >> 2] = HEAP32[$294 >> 2];\n          HEAP32[$3 + 4 >> 2] = HEAP32[$294 + 4 >> 2];\n          HEAP32[$3 + 8 >> 2] = HEAP32[$294 + 8 >> 2];\n          HEAP32[$294 >> 2] = 0;\n          HEAP32[$294 + 4 >> 2] = 0;\n          HEAP32[$294 + 8 >> 2] = 0;\n          $297 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($3, 12593) | 0;\n          HEAP32[$2 >> 2] = HEAP32[$297 >> 2];\n          HEAP32[$2 + 4 >> 2] = HEAP32[$297 + 4 >> 2];\n          HEAP32[$2 + 8 >> 2] = HEAP32[$297 + 8 >> 2];\n          HEAP32[$297 >> 2] = 0;\n          HEAP32[$297 + 4 >> 2] = 0;\n          HEAP32[$297 + 8 >> 2] = 0;\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($1, $2);\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($275, $1);\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($5);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($6);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);\n          $$06$i426 = $259;\n         }\n        }\n       }\n      } else $$06$i426 = $first; else $$06$i426 = $first; else $$06$i426 = $first;\n      $$0 = $$06$i426;\n      break L1;\n      break;\n     }\n    case 108:\n     {\n      L97 : do if ($85) if ((HEAP8[$first >> 0] | 0) == 99) if ((HEAP8[$first + 1 >> 0] | 0) == 108) {\n       $305 = $first + 2 | 0;\n       $306 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($305, $last, $db) | 0;\n       if (($306 | 0) == ($305 | 0) | ($306 | 0) == ($last | 0)) $$2$i398 = $first; else {\n        $310 = $db + 4 | 0;\n        $311 = HEAP32[$310 >> 2] | 0;\n        if ((HEAP32[$db >> 2] | 0) == ($311 | 0)) $$2$i398 = $first; else {\n         $314 = $311 + -12 | 0;\n         $315 = HEAP8[$314 >> 0] | 0;\n         $317 = ($315 & 1) == 0;\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($311 + -24 | 0, $317 ? $314 + 1 | 0 : HEAP32[$311 + -4 >> 2] | 0, $317 ? ($315 & 255) >>> 1 : HEAP32[$311 + -8 >> 2] | 0) | 0;\n         $327 = HEAP32[$310 >> 2] | 0;\n         HEAP32[$0 >> 2] = 0;\n         HEAP32[$0 + 4 >> 2] = 0;\n         HEAP32[$0 + 8 >> 2] = 0;\n         $330 = $327 + -12 | 0;\n         do if (!(HEAP8[$330 >> 0] & 1)) {\n          HEAP8[$330 + 1 >> 0] = 0;\n          HEAP8[$330 >> 0] = 0;\n         } else {\n          $335 = $327 + -4 | 0;\n          HEAP8[HEAP32[$335 >> 2] >> 0] = 0;\n          $337 = $327 + -8 | 0;\n          HEAP32[$337 >> 2] = 0;\n          $$pre$i$i$i$i372 = HEAP8[$330 >> 0] | 0;\n          if (!($$pre$i$i$i$i372 & 1)) {\n           $344 = $$pre$i$i$i$i372;\n           $353 = 10;\n          } else {\n           $340 = HEAP32[$330 >> 2] | 0;\n           $344 = $340 & 255;\n           $353 = ($340 & -2) + -1 | 0;\n          }\n          if (!($344 & 1)) {\n           $347 = ($344 & 255) >>> 1;\n           if (($344 & 255) < 22) {\n            $1748 = 1;\n            $352 = 10;\n            $372 = $347;\n           } else {\n            $1748 = 1;\n            $352 = ($347 + 16 & 240) + -1 | 0;\n            $372 = $347;\n           }\n          } else {\n           $1748 = 0;\n           $352 = 10;\n           $372 = 0;\n          }\n          if (($352 | 0) != ($353 | 0)) {\n           if (($352 | 0) == 10) {\n            $359 = $330 + 1 | 0;\n            $360 = HEAP32[$335 >> 2] | 0;\n            if ($1748) {\n             _memcpy($359 | 0, $360 | 0, (($344 & 255) >>> 1) + 1 | 0) | 0;\n             _free($360);\n            } else {\n             HEAP8[$359 >> 0] = HEAP8[$360 >> 0] | 0;\n             _free($360);\n            }\n            HEAP8[$330 >> 0] = $372 << 1;\n            break;\n           }\n           $356 = $352 + 1 | 0;\n           $357 = _malloc($356) | 0;\n           if (!($352 >>> 0 <= $353 >>> 0 & ($357 | 0) == 0)) {\n            if ($1748) _memcpy($357 | 0, $330 + 1 | 0, (($344 & 255) >>> 1) + 1 | 0) | 0; else {\n             $369 = HEAP32[$335 >> 2] | 0;\n             HEAP8[$357 >> 0] = HEAP8[$369 >> 0] | 0;\n             _free($369);\n            }\n            HEAP32[$330 >> 2] = $356 | 1;\n            HEAP32[$337 >> 2] = $372;\n            HEAP32[$335 >> 2] = $357;\n           }\n          }\n         } while (0);\n         HEAP32[$330 >> 2] = HEAP32[$0 >> 2];\n         HEAP32[$330 + 4 >> 2] = HEAP32[$0 + 4 >> 2];\n         HEAP32[$330 + 8 >> 2] = HEAP32[$0 + 8 >> 2];\n         HEAP32[$0 >> 2] = 0;\n         HEAP32[$0 + 4 >> 2] = 0;\n         HEAP32[$0 + 8 >> 2] = 0;\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[$310 >> 2] | 0) + -24 | 0, 12688) | 0;\n         $379 = $1 + 4 | 0;\n         $380 = $1 + 8 | 0;\n         $381 = $1 + 1 | 0;\n         L127 : do if ((HEAP8[$306 >> 0] | 0) == 69) $t$0$i390$lcssa = $306; else {\n          $t$0$i390556 = $306;\n          while (1) {\n           $384 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($t$0$i390556, $last, $db) | 0;\n           if (($384 | 0) == ($t$0$i390556 | 0) | ($384 | 0) == ($last | 0)) {\n            $$2$i398 = $first;\n            break L97;\n           }\n           $388 = HEAP32[$310 >> 2] | 0;\n           if ((HEAP32[$db >> 2] | 0) == ($388 | 0)) {\n            $$2$i398 = $first;\n            break L97;\n           }\n           __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($1, $388 + -24 | 0);\n           $391 = HEAP32[$310 >> 2] | 0;\n           $392 = $391 + -24 | 0;\n           $394 = $391;\n           do {\n            $393 = $394 + -24 | 0;\n            HEAP32[$310 >> 2] = $393;\n            __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($393);\n            $394 = HEAP32[$310 >> 2] | 0;\n           } while (($394 | 0) != ($392 | 0));\n           $396 = HEAP8[$1 >> 0] | 0;\n           $398 = ($396 & 1) == 0;\n           $402 = $398 ? ($396 & 255) >>> 1 : HEAP32[$379 >> 2] | 0;\n           if ($402) {\n            if ((HEAP32[$db >> 2] | 0) == ($392 | 0)) break;\n            __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($391 + -48 | 0, $398 ? $381 : HEAP32[$380 >> 2] | 0, $402) | 0;\n           }\n           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);\n           if ((HEAP8[$384 >> 0] | 0) == 69) {\n            $t$0$i390$lcssa = $384;\n            break L127;\n           } else $t$0$i390556 = $384;\n          }\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);\n          $$2$i398 = $first;\n          break L97;\n         } while (0);\n         $412 = HEAP32[$310 >> 2] | 0;\n         if ((HEAP32[$db >> 2] | 0) == ($412 | 0)) $$2$i398 = $first; else {\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($412 + -24 | 0, 12593) | 0;\n          $$2$i398 = $t$0$i390$lcssa + 1 | 0;\n         }\n        }\n       }\n      } else $$2$i398 = $first; else $$2$i398 = $first; else $$2$i398 = $first; while (0);\n      $$0 = $$2$i398;\n      break L1;\n      break;\n     }\n    case 109:\n     {\n      $416 = $first + 2 | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($18, 13893, 1);\n      $417 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($416, $last, $18, $db) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($18);\n      $$0 = ($417 | 0) == ($416 | 0) ? $first : $417;\n      break L1;\n      break;\n     }\n    case 111:\n     {\n      $419 = $first + 2 | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($19, 12902, 1);\n      $420 = __ZN10__cxxabiv112_GLOBAL__N_123parse_prefix_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($419, $last, $19, $db) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($19);\n      $$0 = ($420 | 0) == ($419 | 0) ? $first : $420;\n      break L1;\n      break;\n     }\n    case 118:\n     {\n      L146 : do if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 99) if ((HEAP8[$first + 1 >> 0] | 0) == 118) {\n       $428 = $db + 63 | 0;\n       $429 = HEAP8[$428 >> 0] | 0;\n       HEAP8[$428 >> 0] = 0;\n       $430 = $first + 2 | 0;\n       $431 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($430, $last, $db) | 0;\n       HEAP8[$428 >> 0] = $429;\n       if (($431 | 0) == ($430 | 0) | ($431 | 0) == ($last | 0)) $$311$i = $first; else {\n        if ((HEAP8[$431 >> 0] | 0) == 95) {\n         $438 = $431 + 1 | 0;\n         if (($438 | 0) == ($last | 0)) {\n          $$311$i = $first;\n          break;\n         }\n         do if ((HEAP8[$438 >> 0] | 0) == 69) {\n          $442 = $db + 4 | 0;\n          $443 = HEAP32[$442 >> 2] | 0;\n          $445 = HEAP32[$db + 8 >> 2] | 0;\n          if ($443 >>> 0 < $445 >>> 0) {\n           HEAP32[$443 >> 2] = 0;\n           HEAP32[$443 + 4 >> 2] = 0;\n           HEAP32[$443 + 8 >> 2] = 0;\n           HEAP32[$443 + 12 >> 2] = 0;\n           HEAP32[$443 + 16 >> 2] = 0;\n           HEAP32[$443 + 20 >> 2] = 0;\n           HEAP32[$443 >> 2] = 0;\n           HEAP32[$443 + 4 >> 2] = 0;\n           HEAP32[$443 + 8 >> 2] = 0;\n           $449 = $443 + 12 | 0;\n           HEAP32[$449 >> 2] = 0;\n           HEAP32[$449 + 4 >> 2] = 0;\n           HEAP32[$449 + 8 >> 2] = 0;\n           HEAP32[$442 >> 2] = (HEAP32[$442 >> 2] | 0) + 24;\n           $t$1$i350 = $438;\n           break;\n          }\n          $457 = HEAP32[$db >> 2] | 0;\n          $458 = $443 - $457 | 0;\n          $459 = ($458 | 0) / 24 | 0;\n          $460 = $459 + 1 | 0;\n          if (($458 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n          $464 = ($445 - $457 | 0) / 24 | 0;\n          if ($464 >>> 0 < 1073741823) {\n           $466 = $464 << 1;\n           $$0$i$i$i$i348 = $466 >>> 0 < $460 >>> 0 ? $460 : $466;\n          } else $$0$i$i$i$i348 = 2147483647;\n          __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($0, $$0$i$i$i$i348, $459, $db + 12 | 0);\n          $469 = $0 + 8 | 0;\n          $470 = HEAP32[$469 >> 2] | 0;\n          HEAP32[$470 >> 2] = 0;\n          HEAP32[$470 + 4 >> 2] = 0;\n          HEAP32[$470 + 8 >> 2] = 0;\n          HEAP32[$470 + 12 >> 2] = 0;\n          HEAP32[$470 + 16 >> 2] = 0;\n          HEAP32[$470 + 20 >> 2] = 0;\n          HEAP32[$470 >> 2] = 0;\n          HEAP32[$470 + 4 >> 2] = 0;\n          HEAP32[$470 + 8 >> 2] = 0;\n          $473 = $470 + 12 | 0;\n          HEAP32[$473 >> 2] = 0;\n          HEAP32[$473 + 4 >> 2] = 0;\n          HEAP32[$473 + 8 >> 2] = 0;\n          HEAP32[$469 >> 2] = $470 + 24;\n          __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $0);\n          __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($0);\n          $t$1$i350 = $438;\n         } else {\n          $t$0$i349567 = $438;\n          while (1) {\n           $477 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($t$0$i349567, $last, $db) | 0;\n           if (($477 | 0) == ($t$0$i349567 | 0) | ($477 | 0) == ($last | 0)) {\n            $$311$i = $first;\n            break L146;\n           }\n           if ((HEAP8[$477 >> 0] | 0) == 69) {\n            $t$1$i350 = $477;\n            break;\n           } else $t$0$i349567 = $477;\n          }\n         } while (0);\n         $t$2$i351 = $t$1$i350 + 1 | 0;\n        } else {\n         $436 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($431, $last, $db) | 0;\n         if (($436 | 0) == ($431 | 0)) {\n          $$311$i = $first;\n          break;\n         } else $t$2$i351 = $436;\n        }\n        $482 = $db + 4 | 0;\n        $483 = HEAP32[$482 >> 2] | 0;\n        if ((($483 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$311$i = $first; else {\n         __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($1, $483 + -24 | 0);\n         $491 = HEAP32[$482 >> 2] | 0;\n         $492 = $491 + -24 | 0;\n         $494 = $491;\n         do {\n          $493 = $494 + -24 | 0;\n          HEAP32[$482 >> 2] = $493;\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($493);\n          $494 = HEAP32[$482 >> 2] | 0;\n         } while (($494 | 0) != ($492 | 0));\n         $496 = $491 + -48 | 0;\n         __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($7, $496);\n         $497 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($7, 0, 12688) | 0;\n         HEAP32[$6 >> 2] = HEAP32[$497 >> 2];\n         HEAP32[$6 + 4 >> 2] = HEAP32[$497 + 4 >> 2];\n         HEAP32[$6 + 8 >> 2] = HEAP32[$497 + 8 >> 2];\n         HEAP32[$497 >> 2] = 0;\n         HEAP32[$497 + 4 >> 2] = 0;\n         HEAP32[$497 + 8 >> 2] = 0;\n         $500 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($6, 13895) | 0;\n         HEAP32[$5 >> 2] = HEAP32[$500 >> 2];\n         HEAP32[$5 + 4 >> 2] = HEAP32[$500 + 4 >> 2];\n         HEAP32[$5 + 8 >> 2] = HEAP32[$500 + 8 >> 2];\n         HEAP32[$500 >> 2] = 0;\n         HEAP32[$500 + 4 >> 2] = 0;\n         HEAP32[$500 + 8 >> 2] = 0;\n         $503 = HEAP8[$1 >> 0] | 0;\n         $505 = ($503 & 1) == 0;\n         $515 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($5, $505 ? $1 + 1 | 0 : HEAP32[$1 + 8 >> 2] | 0, $505 ? ($503 & 255) >>> 1 : HEAP32[$1 + 4 >> 2] | 0) | 0;\n         HEAP32[$4 >> 2] = HEAP32[$515 >> 2];\n         HEAP32[$4 + 4 >> 2] = HEAP32[$515 + 4 >> 2];\n         HEAP32[$4 + 8 >> 2] = HEAP32[$515 + 8 >> 2];\n         HEAP32[$515 >> 2] = 0;\n         HEAP32[$515 + 4 >> 2] = 0;\n         HEAP32[$515 + 8 >> 2] = 0;\n         $518 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($4, 12593) | 0;\n         HEAP32[$3 >> 2] = HEAP32[$518 >> 2];\n         HEAP32[$3 + 4 >> 2] = HEAP32[$518 + 4 >> 2];\n         HEAP32[$3 + 8 >> 2] = HEAP32[$518 + 8 >> 2];\n         HEAP32[$518 >> 2] = 0;\n         HEAP32[$518 + 4 >> 2] = 0;\n         HEAP32[$518 + 8 >> 2] = 0;\n         __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($2, $3);\n         __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($496, $2);\n         __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($2);\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4);\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($5);\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($6);\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($7);\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);\n         $$311$i = $t$2$i351;\n        }\n       }\n      } else $$311$i = $first; else $$311$i = $first; else $$311$i = $first; while (0);\n      $$0 = $$311$i;\n      break L1;\n      break;\n     }\n    default:\n     {\n      $$0 = $first;\n      break L1;\n     }\n    }\n    break;\n   }\n  case 100:\n   {\n    switch (HEAP8[$t$0 + 1 >> 0] | 0) {\n    case 97:\n     {\n      $524 = $t$0 + 2 | 0;\n      $525 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($524, $last, $db) | 0;\n      if (($525 | 0) == ($524 | 0)) {\n       $$0 = $first;\n       break L1;\n      }\n      $528 = $db + 4 | 0;\n      $529 = HEAP32[$528 >> 2] | 0;\n      if ((HEAP32[$db >> 2] | 0) == ($529 | 0)) {\n       $$0 = $first;\n       break L1;\n      }\n      $531 = $529 + -24 | 0;\n      if ($parsed_gs$0$off0) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($22, 12876, 2); else {\n       HEAP32[$22 >> 2] = 0;\n       HEAP32[$22 + 4 >> 2] = 0;\n       HEAP32[$22 + 8 >> 2] = 0;\n      }\n      $534 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($22, 13898) | 0;\n      HEAP32[$21 >> 2] = HEAP32[$534 >> 2];\n      HEAP32[$21 + 4 >> 2] = HEAP32[$534 + 4 >> 2];\n      HEAP32[$21 + 8 >> 2] = HEAP32[$534 + 8 >> 2];\n      HEAP32[$534 >> 2] = 0;\n      HEAP32[$534 + 4 >> 2] = 0;\n      HEAP32[$534 + 8 >> 2] = 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($23, (HEAP32[$528 >> 2] | 0) + -24 | 0);\n      $539 = HEAP8[$23 >> 0] | 0;\n      $541 = ($539 & 1) == 0;\n      $551 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($21, $541 ? $23 + 1 | 0 : HEAP32[$23 + 8 >> 2] | 0, $541 ? ($539 & 255) >>> 1 : HEAP32[$23 + 4 >> 2] | 0) | 0;\n      HEAP32[$20 >> 2] = HEAP32[$551 >> 2];\n      HEAP32[$20 + 4 >> 2] = HEAP32[$551 + 4 >> 2];\n      HEAP32[$20 + 8 >> 2] = HEAP32[$551 + 8 >> 2];\n      HEAP32[$551 >> 2] = 0;\n      HEAP32[$551 + 4 >> 2] = 0;\n      HEAP32[$551 + 8 >> 2] = 0;\n      do if (!(HEAP8[$531 >> 0] & 1)) {\n       HEAP8[$531 + 1 >> 0] = 0;\n       HEAP8[$531 >> 0] = 0;\n      } else {\n       $558 = $529 + -16 | 0;\n       HEAP8[HEAP32[$558 >> 2] >> 0] = 0;\n       $560 = $529 + -20 | 0;\n       HEAP32[$560 >> 2] = 0;\n       $$pre$i$i$i = HEAP8[$531 >> 0] | 0;\n       if (!($$pre$i$i$i & 1)) {\n        $567 = $$pre$i$i$i;\n        $576 = 10;\n       } else {\n        $563 = HEAP32[$531 >> 2] | 0;\n        $567 = $563 & 255;\n        $576 = ($563 & -2) + -1 | 0;\n       }\n       if (!($567 & 1)) {\n        $570 = ($567 & 255) >>> 1;\n        if (($567 & 255) < 22) {\n         $1749 = 1;\n         $575 = 10;\n         $595 = $570;\n        } else {\n         $1749 = 1;\n         $575 = ($570 + 16 & 240) + -1 | 0;\n         $595 = $570;\n        }\n       } else {\n        $1749 = 0;\n        $575 = 10;\n        $595 = 0;\n       }\n       if (($575 | 0) != ($576 | 0)) {\n        if (($575 | 0) == 10) {\n         $582 = $531 + 1 | 0;\n         $583 = HEAP32[$558 >> 2] | 0;\n         if ($1749) {\n          _memcpy($582 | 0, $583 | 0, (($567 & 255) >>> 1) + 1 | 0) | 0;\n          _free($583);\n         } else {\n          HEAP8[$582 >> 0] = HEAP8[$583 >> 0] | 0;\n          _free($583);\n         }\n         HEAP8[$531 >> 0] = $595 << 1;\n         break;\n        }\n        $579 = $575 + 1 | 0;\n        $580 = _malloc($579) | 0;\n        if (!($575 >>> 0 <= $576 >>> 0 & ($580 | 0) == 0)) {\n         if ($1749) _memcpy($580 | 0, $531 + 1 | 0, (($567 & 255) >>> 1) + 1 | 0) | 0; else {\n          $592 = HEAP32[$558 >> 2] | 0;\n          HEAP8[$580 >> 0] = HEAP8[$592 >> 0] | 0;\n          _free($592);\n         }\n         HEAP32[$531 >> 2] = $579 | 1;\n         HEAP32[$560 >> 2] = $595;\n         HEAP32[$558 >> 2] = $580;\n        }\n       }\n      } while (0);\n      HEAP32[$531 >> 2] = HEAP32[$20 >> 2];\n      HEAP32[$531 + 4 >> 2] = HEAP32[$20 + 4 >> 2];\n      HEAP32[$531 + 8 >> 2] = HEAP32[$20 + 8 >> 2];\n      HEAP32[$20 >> 2] = 0;\n      HEAP32[$20 + 4 >> 2] = 0;\n      HEAP32[$20 + 8 >> 2] = 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($20);\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($23);\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($21);\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($22);\n      $$0 = $525;\n      break L1;\n      break;\n     }\n    case 99:\n     {\n      if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 100) if ((HEAP8[$first + 1 >> 0] | 0) == 99) {\n       $606 = $first + 2 | 0;\n       $607 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($606, $last, $db) | 0;\n       if (($607 | 0) == ($606 | 0)) $$06$i345 = $first; else {\n        $609 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($607, $last, $db) | 0;\n        if (($609 | 0) == ($607 | 0)) $$06$i345 = $first; else {\n         $611 = $db + 4 | 0;\n         $612 = HEAP32[$611 >> 2] | 0;\n         if ((($612 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$06$i345 = $first; else {\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($0, $612 + -24 | 0);\n          $620 = HEAP32[$611 >> 2] | 0;\n          $621 = $620 + -24 | 0;\n          $623 = $620;\n          do {\n           $622 = $623 + -24 | 0;\n           HEAP32[$611 >> 2] = $622;\n           __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($622);\n           $623 = HEAP32[$611 >> 2] | 0;\n          } while (($623 | 0) != ($621 | 0));\n          $625 = $620 + -48 | 0;\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($6, $625);\n          $626 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($6, 0, 13908) | 0;\n          HEAP32[$5 >> 2] = HEAP32[$626 >> 2];\n          HEAP32[$5 + 4 >> 2] = HEAP32[$626 + 4 >> 2];\n          HEAP32[$5 + 8 >> 2] = HEAP32[$626 + 8 >> 2];\n          HEAP32[$626 >> 2] = 0;\n          HEAP32[$626 + 4 >> 2] = 0;\n          HEAP32[$626 + 8 >> 2] = 0;\n          $629 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($5, 13890) | 0;\n          HEAP32[$4 >> 2] = HEAP32[$629 >> 2];\n          HEAP32[$4 + 4 >> 2] = HEAP32[$629 + 4 >> 2];\n          HEAP32[$4 + 8 >> 2] = HEAP32[$629 + 8 >> 2];\n          HEAP32[$629 >> 2] = 0;\n          HEAP32[$629 + 4 >> 2] = 0;\n          HEAP32[$629 + 8 >> 2] = 0;\n          $632 = HEAP8[$0 >> 0] | 0;\n          $634 = ($632 & 1) == 0;\n          $644 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($4, $634 ? $0 + 1 | 0 : HEAP32[$0 + 8 >> 2] | 0, $634 ? ($632 & 255) >>> 1 : HEAP32[$0 + 4 >> 2] | 0) | 0;\n          HEAP32[$3 >> 2] = HEAP32[$644 >> 2];\n          HEAP32[$3 + 4 >> 2] = HEAP32[$644 + 4 >> 2];\n          HEAP32[$3 + 8 >> 2] = HEAP32[$644 + 8 >> 2];\n          HEAP32[$644 >> 2] = 0;\n          HEAP32[$644 + 4 >> 2] = 0;\n          HEAP32[$644 + 8 >> 2] = 0;\n          $647 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($3, 12593) | 0;\n          HEAP32[$2 >> 2] = HEAP32[$647 >> 2];\n          HEAP32[$2 + 4 >> 2] = HEAP32[$647 + 4 >> 2];\n          HEAP32[$2 + 8 >> 2] = HEAP32[$647 + 8 >> 2];\n          HEAP32[$647 >> 2] = 0;\n          HEAP32[$647 + 4 >> 2] = 0;\n          HEAP32[$647 + 8 >> 2] = 0;\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($1, $2);\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($625, $1);\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($5);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($6);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);\n          $$06$i345 = $609;\n         }\n        }\n       }\n      } else $$06$i345 = $first; else $$06$i345 = $first; else $$06$i345 = $first;\n      $$0 = $$06$i345;\n      break L1;\n      break;\n     }\n    case 101:\n     {\n      $650 = $first + 2 | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($24, 12733, 1);\n      $651 = __ZN10__cxxabiv112_GLOBAL__N_123parse_prefix_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($650, $last, $24, $db) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($24);\n      $$0 = ($651 | 0) == ($650 | 0) ? $first : $651;\n      break L1;\n      break;\n     }\n    case 108:\n     {\n      $653 = $t$0 + 2 | 0;\n      $654 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($653, $last, $db) | 0;\n      if (($654 | 0) == ($653 | 0)) {\n       $$0 = $first;\n       break L1;\n      }\n      $657 = $db + 4 | 0;\n      $658 = HEAP32[$657 >> 2] | 0;\n      if ((HEAP32[$db >> 2] | 0) == ($658 | 0)) {\n       $$0 = $first;\n       break L1;\n      }\n      $660 = $658 + -24 | 0;\n      if ($parsed_gs$0$off0) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($27, 12876, 2); else {\n       HEAP32[$27 >> 2] = 0;\n       HEAP32[$27 + 4 >> 2] = 0;\n       HEAP32[$27 + 8 >> 2] = 0;\n      }\n      $663 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($27, 13922) | 0;\n      HEAP32[$26 >> 2] = HEAP32[$663 >> 2];\n      HEAP32[$26 + 4 >> 2] = HEAP32[$663 + 4 >> 2];\n      HEAP32[$26 + 8 >> 2] = HEAP32[$663 + 8 >> 2];\n      HEAP32[$663 >> 2] = 0;\n      HEAP32[$663 + 4 >> 2] = 0;\n      HEAP32[$663 + 8 >> 2] = 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($28, (HEAP32[$657 >> 2] | 0) + -24 | 0);\n      $668 = HEAP8[$28 >> 0] | 0;\n      $670 = ($668 & 1) == 0;\n      $680 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($26, $670 ? $28 + 1 | 0 : HEAP32[$28 + 8 >> 2] | 0, $670 ? ($668 & 255) >>> 1 : HEAP32[$28 + 4 >> 2] | 0) | 0;\n      HEAP32[$25 >> 2] = HEAP32[$680 >> 2];\n      HEAP32[$25 + 4 >> 2] = HEAP32[$680 + 4 >> 2];\n      HEAP32[$25 + 8 >> 2] = HEAP32[$680 + 8 >> 2];\n      HEAP32[$680 >> 2] = 0;\n      HEAP32[$680 + 4 >> 2] = 0;\n      HEAP32[$680 + 8 >> 2] = 0;\n      do if (!(HEAP8[$660 >> 0] & 1)) {\n       HEAP8[$660 + 1 >> 0] = 0;\n       HEAP8[$660 >> 0] = 0;\n      } else {\n       $687 = $658 + -16 | 0;\n       HEAP8[HEAP32[$687 >> 2] >> 0] = 0;\n       $689 = $658 + -20 | 0;\n       HEAP32[$689 >> 2] = 0;\n       $$pre$i$i$i87 = HEAP8[$660 >> 0] | 0;\n       if (!($$pre$i$i$i87 & 1)) {\n        $696 = $$pre$i$i$i87;\n        $705 = 10;\n       } else {\n        $692 = HEAP32[$660 >> 2] | 0;\n        $696 = $692 & 255;\n        $705 = ($692 & -2) + -1 | 0;\n       }\n       if (!($696 & 1)) {\n        $699 = ($696 & 255) >>> 1;\n        if (($696 & 255) < 22) {\n         $1750 = 1;\n         $704 = 10;\n         $724 = $699;\n        } else {\n         $1750 = 1;\n         $704 = ($699 + 16 & 240) + -1 | 0;\n         $724 = $699;\n        }\n       } else {\n        $1750 = 0;\n        $704 = 10;\n        $724 = 0;\n       }\n       if (($704 | 0) != ($705 | 0)) {\n        if (($704 | 0) == 10) {\n         $711 = $660 + 1 | 0;\n         $712 = HEAP32[$687 >> 2] | 0;\n         if ($1750) {\n          _memcpy($711 | 0, $712 | 0, (($696 & 255) >>> 1) + 1 | 0) | 0;\n          _free($712);\n         } else {\n          HEAP8[$711 >> 0] = HEAP8[$712 >> 0] | 0;\n          _free($712);\n         }\n         HEAP8[$660 >> 0] = $724 << 1;\n         break;\n        }\n        $708 = $704 + 1 | 0;\n        $709 = _malloc($708) | 0;\n        if (!($704 >>> 0 <= $705 >>> 0 & ($709 | 0) == 0)) {\n         if ($1750) _memcpy($709 | 0, $660 + 1 | 0, (($696 & 255) >>> 1) + 1 | 0) | 0; else {\n          $721 = HEAP32[$687 >> 2] | 0;\n          HEAP8[$709 >> 0] = HEAP8[$721 >> 0] | 0;\n          _free($721);\n         }\n         HEAP32[$660 >> 2] = $708 | 1;\n         HEAP32[$689 >> 2] = $724;\n         HEAP32[$687 >> 2] = $709;\n        }\n       }\n      } while (0);\n      HEAP32[$660 >> 2] = HEAP32[$25 >> 2];\n      HEAP32[$660 + 4 >> 2] = HEAP32[$25 + 4 >> 2];\n      HEAP32[$660 + 8 >> 2] = HEAP32[$25 + 8 >> 2];\n      HEAP32[$25 >> 2] = 0;\n      HEAP32[$25 + 4 >> 2] = 0;\n      HEAP32[$25 + 8 >> 2] = 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($25);\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($28);\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($26);\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($27);\n      $$0 = $654;\n      break L1;\n      break;\n     }\n    case 110:\n     {\n      $$0 = __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;\n      break L1;\n      break;\n     }\n    case 115:\n     {\n      if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 100) if ((HEAP8[$first + 1 >> 0] | 0) == 115) {\n       $736 = $first + 2 | 0;\n       $737 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($736, $last, $db) | 0;\n       if (($737 | 0) == ($736 | 0)) $$02$i317 = $first; else {\n        $739 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($737, $last, $db) | 0;\n        if (($739 | 0) == ($737 | 0)) $$02$i317 = $first; else {\n         $741 = $db + 4 | 0;\n         $742 = HEAP32[$741 >> 2] | 0;\n         if ((($742 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$02$i317 = $first; else {\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($0, $742 + -24 | 0);\n          $750 = HEAP32[$741 >> 2] | 0;\n          $751 = $750 + -24 | 0;\n          $753 = $750;\n          do {\n           $752 = $753 + -24 | 0;\n           HEAP32[$741 >> 2] = $752;\n           __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($752);\n           $753 = HEAP32[$741 >> 2] | 0;\n          } while (($753 | 0) != ($751 | 0));\n          __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($1, 13930, $0);\n          $756 = HEAP8[$1 >> 0] | 0;\n          $758 = ($756 & 1) == 0;\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($750 + -48 | 0, $758 ? $1 + 1 | 0 : HEAP32[$1 + 8 >> 2] | 0, $758 ? ($756 & 255) >>> 1 : HEAP32[$1 + 4 >> 2] | 0) | 0;\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);\n          $$02$i317 = $739;\n         }\n        }\n       }\n      } else $$02$i317 = $first; else $$02$i317 = $first; else $$02$i317 = $first;\n      $$0 = $$02$i317;\n      break L1;\n      break;\n     }\n    case 116:\n     {\n      if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 100) if ((HEAP8[$first + 1 >> 0] | 0) == 116) {\n       $774 = $first + 2 | 0;\n       $775 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($774, $last, $db) | 0;\n       if (($775 | 0) == ($774 | 0)) $$02$i310 = $first; else {\n        $777 = __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_($775, $last, $db) | 0;\n        if (($777 | 0) == ($775 | 0)) $$02$i310 = $first; else {\n         $779 = $db + 4 | 0;\n         $780 = HEAP32[$779 >> 2] | 0;\n         if ((($780 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$02$i310 = $first; else {\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($0, $780 + -24 | 0);\n          $788 = HEAP32[$779 >> 2] | 0;\n          $789 = $788 + -24 | 0;\n          $791 = $788;\n          do {\n           $790 = $791 + -24 | 0;\n           HEAP32[$779 >> 2] = $790;\n           __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($790);\n           $791 = HEAP32[$779 >> 2] | 0;\n          } while (($791 | 0) != ($789 | 0));\n          __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($1, 18309, $0);\n          $794 = HEAP8[$1 >> 0] | 0;\n          $796 = ($794 & 1) == 0;\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($788 + -48 | 0, $796 ? $1 + 1 | 0 : HEAP32[$1 + 8 >> 2] | 0, $796 ? ($794 & 255) >>> 1 : HEAP32[$1 + 4 >> 2] | 0) | 0;\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);\n          $$02$i310 = $777;\n         }\n        }\n       }\n      } else $$02$i310 = $first; else $$02$i310 = $first; else $$02$i310 = $first;\n      $$0 = $$02$i310;\n      break L1;\n      break;\n     }\n    case 118:\n     {\n      $806 = $first + 2 | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($29, 13933, 1);\n      $807 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($806, $last, $29, $db) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($29);\n      $$0 = ($807 | 0) == ($806 | 0) ? $first : $807;\n      break L1;\n      break;\n     }\n    case 86:\n     {\n      $809 = $first + 2 | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($30, 13935, 2);\n      $810 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($809, $last, $30, $db) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($30);\n      $$0 = ($810 | 0) == ($809 | 0) ? $first : $810;\n      break L1;\n      break;\n     }\n    default:\n     {\n      $$0 = $first;\n      break L1;\n     }\n    }\n    break;\n   }\n  case 101:\n   {\n    switch (HEAP8[$t$0 + 1 >> 0] | 0) {\n    case 111:\n     {\n      $815 = $first + 2 | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($31, 13938, 1);\n      $816 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($815, $last, $31, $db) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($31);\n      $$0 = ($816 | 0) == ($815 | 0) ? $first : $816;\n      break L1;\n      break;\n     }\n    case 79:\n     {\n      $818 = $first + 2 | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($32, 13940, 2);\n      $819 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($818, $last, $32, $db) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($32);\n      $$0 = ($819 | 0) == ($818 | 0) ? $first : $819;\n      break L1;\n      break;\n     }\n    case 113:\n     {\n      $821 = $first + 2 | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($33, 13943, 2);\n      $822 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($821, $last, $33, $db) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($33);\n      $$0 = ($822 | 0) == ($821 | 0) ? $first : $822;\n      break L1;\n      break;\n     }\n    default:\n     {\n      $$0 = $first;\n      break L1;\n     }\n    }\n    break;\n   }\n  case 103:\n   {\n    switch (HEAP8[$t$0 + 1 >> 0] | 0) {\n    case 101:\n     {\n      $827 = $first + 2 | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($34, 13946, 2);\n      $828 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($827, $last, $34, $db) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($34);\n      $$0 = ($828 | 0) == ($827 | 0) ? $first : $828;\n      break L1;\n      break;\n     }\n    case 116:\n     {\n      $830 = $first + 2 | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($35, 12752, 1);\n      $831 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($830, $last, $35, $db) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($35);\n      $$0 = ($831 | 0) == ($830 | 0) ? $first : $831;\n      break L1;\n      break;\n     }\n    default:\n     {\n      $$0 = $first;\n      break L1;\n     }\n    }\n    break;\n   }\n  case 105:\n   {\n    if ((HEAP8[$t$0 + 1 >> 0] | 0) != 120) {\n     $$0 = $first;\n     break L1;\n    }\n    $836 = $first + 2 | 0;\n    $837 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($836, $last, $db) | 0;\n    if (($837 | 0) == ($836 | 0)) {\n     $$0 = $first;\n     break L1;\n    }\n    $839 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($837, $last, $db) | 0;\n    $841 = $db + 4 | 0;\n    $842 = HEAP32[$841 >> 2] | 0;\n    if (($839 | 0) == ($837 | 0)) {\n     $879 = $842 + -24 | 0;\n     $881 = $842;\n     while (1) {\n      $880 = $881 + -24 | 0;\n      HEAP32[$841 >> 2] = $880;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($880);\n      $881 = HEAP32[$841 >> 2] | 0;\n      if (($881 | 0) == ($879 | 0)) {\n       $$0 = $first;\n       break L1;\n      }\n     }\n    }\n    if ((($842 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {\n     $$0 = $first;\n     break L1;\n    }\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($op2, $842 + -24 | 0);\n    $850 = HEAP32[$841 >> 2] | 0;\n    $851 = $850 + -24 | 0;\n    $853 = $850;\n    do {\n     $852 = $853 + -24 | 0;\n     HEAP32[$841 >> 2] = $852;\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($852);\n     $853 = HEAP32[$841 >> 2] | 0;\n    } while (($853 | 0) != ($851 | 0));\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($op1, $850 + -48 | 0);\n    $857 = (HEAP32[$841 >> 2] | 0) + -24 | 0;\n    __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($40, 12688, $op1);\n    $858 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($40, 13949) | 0;\n    HEAP32[$39 >> 2] = HEAP32[$858 >> 2];\n    HEAP32[$39 + 4 >> 2] = HEAP32[$858 + 4 >> 2];\n    HEAP32[$39 + 8 >> 2] = HEAP32[$858 + 8 >> 2];\n    HEAP32[$858 >> 2] = 0;\n    HEAP32[$858 + 4 >> 2] = 0;\n    HEAP32[$858 + 8 >> 2] = 0;\n    $861 = HEAP8[$op2 >> 0] | 0;\n    $863 = ($861 & 1) == 0;\n    $873 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($39, $863 ? $op2 + 1 | 0 : HEAP32[$op2 + 8 >> 2] | 0, $863 ? ($861 & 255) >>> 1 : HEAP32[$op2 + 4 >> 2] | 0) | 0;\n    HEAP32[$38 >> 2] = HEAP32[$873 >> 2];\n    HEAP32[$38 + 4 >> 2] = HEAP32[$873 + 4 >> 2];\n    HEAP32[$38 + 8 >> 2] = HEAP32[$873 + 8 >> 2];\n    HEAP32[$873 >> 2] = 0;\n    HEAP32[$873 + 4 >> 2] = 0;\n    HEAP32[$873 + 8 >> 2] = 0;\n    $876 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($38, 12677) | 0;\n    HEAP32[$37 >> 2] = HEAP32[$876 >> 2];\n    HEAP32[$37 + 4 >> 2] = HEAP32[$876 + 4 >> 2];\n    HEAP32[$37 + 8 >> 2] = HEAP32[$876 + 8 >> 2];\n    HEAP32[$876 >> 2] = 0;\n    HEAP32[$876 + 4 >> 2] = 0;\n    HEAP32[$876 + 8 >> 2] = 0;\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($36, $37);\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($857, $36);\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($36);\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($37);\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($38);\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($39);\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($40);\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($op1);\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($op2);\n    $$0 = $839;\n    break L1;\n    break;\n   }\n  case 108:\n   {\n    switch (HEAP8[$t$0 + 1 >> 0] | 0) {\n    case 101:\n     {\n      $886 = $first + 2 | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($41, 13952, 2);\n      $887 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($886, $last, $41, $db) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($41);\n      $$0 = ($887 | 0) == ($886 | 0) ? $first : $887;\n      break L1;\n      break;\n     }\n    case 115:\n     {\n      $889 = $first + 2 | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($42, 13955, 2);\n      $890 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($889, $last, $42, $db) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($42);\n      $$0 = ($890 | 0) == ($889 | 0) ? $first : $890;\n      break L1;\n      break;\n     }\n    case 83:\n     {\n      $892 = $first + 2 | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($43, 13958, 3);\n      $893 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($892, $last, $43, $db) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($43);\n      $$0 = ($893 | 0) == ($892 | 0) ? $first : $893;\n      break L1;\n      break;\n     }\n    case 116:\n     {\n      $895 = $first + 2 | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($44, 12750, 1);\n      $896 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($895, $last, $44, $db) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($44);\n      $$0 = ($896 | 0) == ($895 | 0) ? $first : $896;\n      break L1;\n      break;\n     }\n    default:\n     {\n      $$0 = $first;\n      break L1;\n     }\n    }\n    break;\n   }\n  case 109:\n   {\n    switch (HEAP8[$t$0 + 1 >> 0] | 0) {\n    case 105:\n     {\n      $901 = $first + 2 | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($45, 13962, 1);\n      $902 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($901, $last, $45, $db) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($45);\n      $$0 = ($902 | 0) == ($901 | 0) ? $first : $902;\n      break L1;\n      break;\n     }\n    case 73:\n     {\n      $904 = $first + 2 | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($46, 13964, 2);\n      $905 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($904, $last, $46, $db) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($46);\n      $$0 = ($905 | 0) == ($904 | 0) ? $first : $905;\n      break L1;\n      break;\n     }\n    case 108:\n     {\n      $907 = $first + 2 | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($47, 12733, 1);\n      $908 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($907, $last, $47, $db) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($47);\n      $$0 = ($908 | 0) == ($907 | 0) ? $first : $908;\n      break L1;\n      break;\n     }\n    case 76:\n     {\n      $910 = $first + 2 | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($48, 13967, 2);\n      $911 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($910, $last, $48, $db) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($48);\n      $$0 = ($911 | 0) == ($910 | 0) ? $first : $911;\n      break L1;\n      break;\n     }\n    case 109:\n     {\n      $913 = $first + 2 | 0;\n      if (($913 | 0) != ($last | 0)) if ((HEAP8[$913 >> 0] | 0) == 95) {\n       $917 = $first + 3 | 0;\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($49, 13970, 2);\n       $918 = __ZN10__cxxabiv112_GLOBAL__N_123parse_prefix_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($917, $last, $49, $db) | 0;\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($49);\n       $$0 = ($918 | 0) == ($917 | 0) ? $first : $918;\n       break L1;\n      }\n      $920 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($913, $last, $db) | 0;\n      if (($920 | 0) == ($913 | 0)) {\n       $$0 = $first;\n       break L1;\n      }\n      $924 = HEAP32[$db + 4 >> 2] | 0;\n      if ((HEAP32[$db >> 2] | 0) == ($924 | 0)) {\n       $$0 = $first;\n       break L1;\n      }\n      $926 = $924 + -24 | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($53, $926);\n      $927 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($53, 0, 12688) | 0;\n      HEAP32[$52 >> 2] = HEAP32[$927 >> 2];\n      HEAP32[$52 + 4 >> 2] = HEAP32[$927 + 4 >> 2];\n      HEAP32[$52 + 8 >> 2] = HEAP32[$927 + 8 >> 2];\n      HEAP32[$927 >> 2] = 0;\n      HEAP32[$927 + 4 >> 2] = 0;\n      HEAP32[$927 + 8 >> 2] = 0;\n      $930 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($52, 13973) | 0;\n      HEAP32[$51 >> 2] = HEAP32[$930 >> 2];\n      HEAP32[$51 + 4 >> 2] = HEAP32[$930 + 4 >> 2];\n      HEAP32[$51 + 8 >> 2] = HEAP32[$930 + 8 >> 2];\n      HEAP32[$930 >> 2] = 0;\n      HEAP32[$930 + 4 >> 2] = 0;\n      HEAP32[$930 + 8 >> 2] = 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($50, $51);\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($926, $50);\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($50);\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($51);\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($52);\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($53);\n      $$0 = $920;\n      break L1;\n      break;\n     }\n    default:\n     {\n      $$0 = $first;\n      break L1;\n     }\n    }\n    break;\n   }\n  case 110:\n   {\n    switch (HEAP8[$t$0 + 1 >> 0] | 0) {\n    case 119:\n    case 97:\n     {\n      L323 : do if ($85) {\n       $936 = HEAP8[$first >> 0] | 0;\n       if ($936 << 24 >> 24 == 103) {\n        $940 = (HEAP8[$first + 1 >> 0] | 0) == 115;\n        $$first$i = $940 ? $first + 2 | 0 : $first;\n        $943 = HEAP8[$$first$i >> 0] | 0;\n        $parsed_gs$0$off0$i = $940;\n        $t$0$i267 = $$first$i;\n       } else {\n        $943 = $936;\n        $parsed_gs$0$off0$i = 0;\n        $t$0$i267 = $first;\n       }\n       if ($943 << 24 >> 24 == 110) {\n        $945 = HEAP8[$t$0$i267 + 1 >> 0] | 0;\n        switch ($945 << 24 >> 24) {\n        case 97:\n        case 119:\n         break;\n        default:\n         {\n          $$221$i = $first;\n          label = 319;\n          break L323;\n         }\n        }\n        $946 = $945 << 24 >> 24 == 97;\n        $947 = $t$0$i267 + 2 | 0;\n        if (($947 | 0) == ($last | 0)) $$9$i = $first; else {\n         $has_expr_list$0$off0$i = 0;\n         $t$1$i = $947;\n         while (1) {\n          if ((HEAP8[$t$1$i >> 0] | 0) == 95) {\n           $has_expr_list$0$off0$i$lcssa = $has_expr_list$0$off0$i;\n           $t$1$i$lcssa = $t$1$i;\n           break;\n          }\n          $t$1$i$looptemp = $t$1$i;\n          $t$1$i = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($t$1$i, $last, $db) | 0;\n          if (($t$1$i | 0) == ($t$1$i$looptemp | 0) | ($t$1$i | 0) == ($last | 0)) {\n           $$9$i = $first;\n           break L323;\n          } else $has_expr_list$0$off0$i = 1;\n         }\n         $954 = $t$1$i$lcssa + 1 | 0;\n         $955 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($954, $last, $db) | 0;\n         if (($955 | 0) == ($954 | 0) | ($955 | 0) == ($last | 0)) $$9$i = $first; else {\n          $961 = HEAP8[$955 >> 0] | 0;\n          L335 : do if (($81 - $955 | 0) > 2 & $961 << 24 >> 24 == 112) {\n           if ((HEAP8[$955 + 1 >> 0] | 0) != 105) {\n            $$9$i = $first;\n            break L323;\n           }\n           $t$2$i = $955 + 2 | 0;\n           while (1) {\n            if ((HEAP8[$t$2$i >> 0] | 0) == 69) {\n             $has_init$0$off0$i513 = 1;\n             $t$3$i512 = $t$2$i;\n             break L335;\n            }\n            $t$2$i$looptemp = $t$2$i;\n            $t$2$i = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($t$2$i, $last, $db) | 0;\n            if (($t$2$i | 0) == ($t$2$i$looptemp | 0) | ($t$2$i | 0) == ($last | 0)) {\n             $$9$i = $first;\n             break L323;\n            }\n           }\n          } else if ($961 << 24 >> 24 == 69) {\n           $has_init$0$off0$i513 = 0;\n           $t$3$i512 = $955;\n          } else {\n           $$9$i = $first;\n           break L323;\n          } while (0);\n          HEAP32[$1 >> 2] = 0;\n          HEAP32[$1 + 4 >> 2] = 0;\n          HEAP32[$1 + 8 >> 2] = 0;\n          if ($has_init$0$off0$i513) {\n           $976 = $db + 4 | 0;\n           $977 = HEAP32[$976 >> 2] | 0;\n           if ((HEAP32[$db >> 2] | 0) != ($977 | 0)) {\n            __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($2, $977 + -24 | 0);\n            L346 : do if (!(HEAP8[$1 >> 0] & 1)) {\n             HEAP8[$1 + 1 >> 0] = 0;\n             HEAP8[$1 >> 0] = 0;\n            } else {\n             $984 = $1 + 8 | 0;\n             $985 = HEAP32[$984 >> 2] | 0;\n             HEAP8[$985 >> 0] = 0;\n             $986 = $1 + 4 | 0;\n             HEAP32[$986 >> 2] = 0;\n             $987 = HEAP32[$1 >> 2] | 0;\n             $phitmp$i$i$i$i$i$i$i273 = ($987 & -2) + -1 | 0;\n             $989 = $987 & 255;\n             do if (!($989 & 1)) {\n              $993 = $987 >>> 1 & 127;\n              if (($989 & 255) < 22) {\n               _memcpy($1 + 1 | 0, $985 | 0, ($987 >>> 1 & 127) + 1 | 0) | 0;\n               _free($985);\n               $$ph518 = $993;\n               break;\n              }\n              $996 = $993 + 16 & 240;\n              $phitmp$i2$i$i$i$i$i$i276 = $996 + -1 | 0;\n              if (($phitmp$i2$i$i$i$i$i$i276 | 0) == ($phitmp$i$i$i$i$i$i$i273 | 0)) break L346;\n              $999 = _malloc($996) | 0;\n              if ($phitmp$i2$i$i$i$i$i$i276 >>> 0 <= $phitmp$i$i$i$i$i$i$i273 >>> 0 & ($999 | 0) == 0) break L346;\n              _memcpy($999 | 0, $1 + 1 | 0, ($987 >>> 1 & 127) + 1 | 0) | 0;\n              HEAP32[$1 >> 2] = $996 | 1;\n              HEAP32[$986 >> 2] = $993;\n              HEAP32[$984 >> 2] = $999;\n              break L346;\n             } else {\n              HEAP8[$1 + 1 >> 0] = 0;\n              _free($985);\n              $$ph518 = 0;\n             } while (0);\n             HEAP8[$1 >> 0] = $$ph518 << 1;\n            } while (0);\n            HEAP32[$1 >> 2] = HEAP32[$2 >> 2];\n            HEAP32[$1 + 4 >> 2] = HEAP32[$2 + 4 >> 2];\n            HEAP32[$1 + 8 >> 2] = HEAP32[$2 + 8 >> 2];\n            HEAP32[$2 >> 2] = 0;\n            HEAP32[$2 + 4 >> 2] = 0;\n            HEAP32[$2 + 8 >> 2] = 0;\n            __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);\n            $1015 = HEAP32[$976 >> 2] | 0;\n            $1016 = $1015 + -24 | 0;\n            $1018 = $1015;\n            do {\n             $1017 = $1018 + -24 | 0;\n             HEAP32[$976 >> 2] = $1017;\n             __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1017);\n             $1018 = HEAP32[$976 >> 2] | 0;\n            } while (($1018 | 0) != ($1016 | 0));\n            $$pre$phi511Z2D = $976;\n            $$pre$phiZ2D = $db;\n            $1022 = $1016;\n            label = 283;\n           }\n          } else {\n           $$phi$trans$insert = $db + 4 | 0;\n           $$pre$phi511Z2D = $$phi$trans$insert;\n           $$pre$phiZ2D = $db;\n           $1022 = HEAP32[$$phi$trans$insert >> 2] | 0;\n           label = 283;\n          }\n          if ((label | 0) == 283) if ((HEAP32[$$pre$phiZ2D >> 2] | 0) != ($1022 | 0)) {\n           __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($3, $1022 + -24 | 0);\n           $1024 = HEAP32[$$pre$phi511Z2D >> 2] | 0;\n           $1025 = $1024 + -24 | 0;\n           $1027 = $1024;\n           do {\n            $1026 = $1027 + -24 | 0;\n            HEAP32[$$pre$phi511Z2D >> 2] = $1026;\n            __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1026);\n            $1027 = HEAP32[$$pre$phi511Z2D >> 2] | 0;\n           } while (($1027 | 0) != ($1025 | 0));\n           HEAP32[$4 >> 2] = 0;\n           HEAP32[$4 + 4 >> 2] = 0;\n           HEAP32[$4 + 8 >> 2] = 0;\n           if ($has_expr_list$0$off0$i$lcssa) if ((HEAP32[$$pre$phiZ2D >> 2] | 0) == ($1025 | 0)) {\n            $$019$i = $first;\n            $$2$i302 = 0;\n           } else {\n            __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($5, $1024 + -48 | 0);\n            L371 : do if (!(HEAP8[$4 >> 0] & 1)) {\n             HEAP8[$4 + 1 >> 0] = 0;\n             HEAP8[$4 >> 0] = 0;\n            } else {\n             $1038 = $4 + 8 | 0;\n             $1039 = HEAP32[$1038 >> 2] | 0;\n             HEAP8[$1039 >> 0] = 0;\n             $1040 = $4 + 4 | 0;\n             HEAP32[$1040 >> 2] = 0;\n             $1041 = HEAP32[$4 >> 2] | 0;\n             $phitmp$i$i$i$i$i$i32$i = ($1041 & -2) + -1 | 0;\n             $1043 = $1041 & 255;\n             do if (!($1043 & 1)) {\n              $1047 = $1041 >>> 1 & 127;\n              if (($1043 & 255) < 22) {\n               _memcpy($4 + 1 | 0, $1039 | 0, ($1041 >>> 1 & 127) + 1 | 0) | 0;\n               _free($1039);\n               $$ph520524 = $1047;\n               break;\n              }\n              $1050 = $1047 + 16 & 240;\n              $phitmp$i2$i$i$i$i$i35$i = $1050 + -1 | 0;\n              if (($phitmp$i2$i$i$i$i$i35$i | 0) == ($phitmp$i$i$i$i$i$i32$i | 0)) break L371;\n              $1053 = _malloc($1050) | 0;\n              if ($phitmp$i2$i$i$i$i$i35$i >>> 0 <= $phitmp$i$i$i$i$i$i32$i >>> 0 & ($1053 | 0) == 0) break L371;\n              _memcpy($1053 | 0, $4 + 1 | 0, ($1041 >>> 1 & 127) + 1 | 0) | 0;\n              HEAP32[$4 >> 2] = $1050 | 1;\n              HEAP32[$1040 >> 2] = $1047;\n              HEAP32[$1038 >> 2] = $1053;\n              break L371;\n             } else {\n              HEAP8[$4 + 1 >> 0] = 0;\n              _free($1039);\n              $$ph520524 = 0;\n             } while (0);\n             HEAP8[$4 >> 0] = $$ph520524 << 1;\n            } while (0);\n            HEAP32[$4 >> 2] = HEAP32[$5 >> 2];\n            HEAP32[$4 + 4 >> 2] = HEAP32[$5 + 4 >> 2];\n            HEAP32[$4 + 8 >> 2] = HEAP32[$5 + 8 >> 2];\n            HEAP32[$5 >> 2] = 0;\n            HEAP32[$5 + 4 >> 2] = 0;\n            HEAP32[$5 + 8 >> 2] = 0;\n            __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($5);\n            $1069 = HEAP32[$$pre$phi511Z2D >> 2] | 0;\n            $1070 = $1069 + -24 | 0;\n            $1072 = $1069;\n            do {\n             $1071 = $1072 + -24 | 0;\n             HEAP32[$$pre$phi511Z2D >> 2] = $1071;\n             __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1071);\n             $1072 = HEAP32[$$pre$phi511Z2D >> 2] | 0;\n            } while (($1072 | 0) != ($1070 | 0));\n            label = 300;\n           } else label = 300;\n           if ((label | 0) == 300) {\n            HEAP32[$6 >> 2] = 0;\n            HEAP32[$6 + 4 >> 2] = 0;\n            HEAP32[$6 + 8 >> 2] = 0;\n            if ($parsed_gs$0$off0$i) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6assignEPKcj($6, 12876, 2);\n            if ($946) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($6, 13977) | 0; else __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($6, 12700) | 0;\n            if ($has_expr_list$0$off0$i$lcssa) {\n             __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($8, 12688, $4);\n             $1076 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($8, 13981) | 0;\n             HEAP32[$7 >> 2] = HEAP32[$1076 >> 2];\n             HEAP32[$7 + 4 >> 2] = HEAP32[$1076 + 4 >> 2];\n             HEAP32[$7 + 8 >> 2] = HEAP32[$1076 + 8 >> 2];\n             HEAP32[$1076 >> 2] = 0;\n             HEAP32[$1076 + 4 >> 2] = 0;\n             HEAP32[$1076 + 8 >> 2] = 0;\n             $1079 = HEAP8[$7 >> 0] | 0;\n             $1081 = ($1079 & 1) == 0;\n             __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($6, $1081 ? $7 + 1 | 0 : HEAP32[$7 + 8 >> 2] | 0, $1081 ? ($1079 & 255) >>> 1 : HEAP32[$7 + 4 >> 2] | 0) | 0;\n             __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($7);\n             __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($8);\n            }\n            $1091 = HEAP8[$3 >> 0] | 0;\n            $1093 = ($1091 & 1) == 0;\n            __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($6, $1093 ? $3 + 1 | 0 : HEAP32[$3 + 8 >> 2] | 0, $1093 ? ($1091 & 255) >>> 1 : HEAP32[$3 + 4 >> 2] | 0) | 0;\n            if ($has_init$0$off0$i513) {\n             __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($10, 12590, $1);\n             $1103 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($10, 12593) | 0;\n             HEAP32[$9 >> 2] = HEAP32[$1103 >> 2];\n             HEAP32[$9 + 4 >> 2] = HEAP32[$1103 + 4 >> 2];\n             HEAP32[$9 + 8 >> 2] = HEAP32[$1103 + 8 >> 2];\n             HEAP32[$1103 >> 2] = 0;\n             HEAP32[$1103 + 4 >> 2] = 0;\n             HEAP32[$1103 + 8 >> 2] = 0;\n             $1106 = HEAP8[$9 >> 0] | 0;\n             $1108 = ($1106 & 1) == 0;\n             __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($6, $1108 ? $9 + 1 | 0 : HEAP32[$9 + 8 >> 2] | 0, $1108 ? ($1106 & 255) >>> 1 : HEAP32[$9 + 4 >> 2] | 0) | 0;\n             __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($9);\n             __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($10);\n            };\n            HEAP32[$12 >> 2] = HEAP32[$6 >> 2];\n            HEAP32[$12 + 4 >> 2] = HEAP32[$6 + 4 >> 2];\n            HEAP32[$12 + 8 >> 2] = HEAP32[$6 + 8 >> 2];\n            HEAP32[$6 >> 2] = 0;\n            HEAP32[$6 + 4 >> 2] = 0;\n            HEAP32[$6 + 8 >> 2] = 0;\n            __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($11, $12);\n            $1120 = HEAP32[$$pre$phi511Z2D >> 2] | 0;\n            $1122 = HEAP32[$db + 8 >> 2] | 0;\n            if ($1120 >>> 0 < $1122 >>> 0) {\n             __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1120, $11);\n             HEAP32[$$pre$phi511Z2D >> 2] = (HEAP32[$$pre$phi511Z2D >> 2] | 0) + 24;\n            } else {\n             $1129 = HEAP32[$$pre$phiZ2D >> 2] | 0;\n             $1130 = $1120 - $1129 | 0;\n             $1131 = ($1130 | 0) / 24 | 0;\n             $1132 = $1131 + 1 | 0;\n             if (($1130 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n             $1136 = ($1122 - $1129 | 0) / 24 | 0;\n             if ($1136 >>> 0 < 1073741823) {\n              $1138 = $1136 << 1;\n              $$0$i$i$i$i299 = $1138 >>> 0 < $1132 >>> 0 ? $1132 : $1138;\n             } else $$0$i$i$i$i299 = 2147483647;\n             __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($0, $$0$i$i$i$i299, $1131, $db + 12 | 0);\n             $1141 = $0 + 8 | 0;\n             $1142 = HEAP32[$1141 >> 2] | 0;\n             __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1142, $11);\n             HEAP32[$1141 >> 2] = $1142 + 24;\n             __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $0);\n             __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($0);\n            }\n            __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($11);\n            __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($12);\n            __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($6);\n            $$019$i = $t$3$i512 + 1 | 0;\n            $$2$i302 = 1;\n           }\n           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4);\n           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);\n           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);\n           if ($$2$i302) {\n            $$221$i = $$019$i;\n            label = 319;\n            break;\n           } else {\n            $$9$i = $first;\n            break;\n           }\n          }\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);\n          $$9$i = $first;\n         }\n        }\n       } else {\n        $$221$i = $first;\n        label = 319;\n       }\n      } else {\n       $$221$i = $first;\n       label = 319;\n      } while (0);\n      if ((label | 0) == 319) $$9$i = $$221$i;\n      $$0 = $$9$i;\n      break L1;\n      break;\n     }\n    case 101:\n     {\n      $1145 = $first + 2 | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($54, 13984, 2);\n      $1146 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1145, $last, $54, $db) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($54);\n      $$0 = ($1146 | 0) == ($1145 | 0) ? $first : $1146;\n      break L1;\n      break;\n     }\n    case 103:\n     {\n      $1148 = $first + 2 | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($55, 13962, 1);\n      $1149 = __ZN10__cxxabiv112_GLOBAL__N_123parse_prefix_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1148, $last, $55, $db) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($55);\n      $$0 = ($1149 | 0) == ($1148 | 0) ? $first : $1149;\n      break L1;\n      break;\n     }\n    case 116:\n     {\n      $1151 = $first + 2 | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($56, 13987, 1);\n      $1152 = __ZN10__cxxabiv112_GLOBAL__N_123parse_prefix_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1151, $last, $56, $db) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($56);\n      $$0 = ($1152 | 0) == ($1151 | 0) ? $first : $1152;\n      break L1;\n      break;\n     }\n    case 120:\n     {\n      $1154 = $first + 2 | 0;\n      $1155 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($1154, $last, $db) | 0;\n      if (($1155 | 0) == ($1154 | 0)) $$03$i265 = $1154; else {\n       $1159 = HEAP32[$db + 4 >> 2] | 0;\n       if ((HEAP32[$db >> 2] | 0) == ($1159 | 0)) $$03$i265 = $1154; else {\n        $1161 = $1159 + -24 | 0;\n        __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($2, $1161);\n        $1162 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($2, 0, 13989) | 0;\n        HEAP32[$1 >> 2] = HEAP32[$1162 >> 2];\n        HEAP32[$1 + 4 >> 2] = HEAP32[$1162 + 4 >> 2];\n        HEAP32[$1 + 8 >> 2] = HEAP32[$1162 + 8 >> 2];\n        HEAP32[$1162 >> 2] = 0;\n        HEAP32[$1162 + 4 >> 2] = 0;\n        HEAP32[$1162 + 8 >> 2] = 0;\n        $1165 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1, 12593) | 0;\n        HEAP32[$0 >> 2] = HEAP32[$1165 >> 2];\n        HEAP32[$0 + 4 >> 2] = HEAP32[$1165 + 4 >> 2];\n        HEAP32[$0 + 8 >> 2] = HEAP32[$1165 + 8 >> 2];\n        HEAP32[$1165 >> 2] = 0;\n        HEAP32[$1165 + 4 >> 2] = 0;\n        HEAP32[$1165 + 8 >> 2] = 0;\n        do if (!(HEAP8[$1161 >> 0] & 1)) {\n         HEAP8[$1161 + 1 >> 0] = 0;\n         HEAP8[$1161 >> 0] = 0;\n        } else {\n         $1172 = $1159 + -16 | 0;\n         HEAP8[HEAP32[$1172 >> 2] >> 0] = 0;\n         $1174 = $1159 + -20 | 0;\n         HEAP32[$1174 >> 2] = 0;\n         $$pre$i$i$i$i = HEAP8[$1161 >> 0] | 0;\n         if (!($$pre$i$i$i$i & 1)) {\n          $1181 = $$pre$i$i$i$i;\n          $1190 = 10;\n         } else {\n          $1177 = HEAP32[$1161 >> 2] | 0;\n          $1181 = $1177 & 255;\n          $1190 = ($1177 & -2) + -1 | 0;\n         }\n         if (!($1181 & 1)) {\n          $1184 = ($1181 & 255) >>> 1;\n          if (($1181 & 255) < 22) {\n           $1189 = 10;\n           $1209 = $1184;\n           $1751 = 1;\n          } else {\n           $1189 = ($1184 + 16 & 240) + -1 | 0;\n           $1209 = $1184;\n           $1751 = 1;\n          }\n         } else {\n          $1189 = 10;\n          $1209 = 0;\n          $1751 = 0;\n         }\n         if (($1189 | 0) != ($1190 | 0)) {\n          if (($1189 | 0) == 10) {\n           $1196 = $1161 + 1 | 0;\n           $1197 = HEAP32[$1172 >> 2] | 0;\n           if ($1751) {\n            _memcpy($1196 | 0, $1197 | 0, (($1181 & 255) >>> 1) + 1 | 0) | 0;\n            _free($1197);\n           } else {\n            HEAP8[$1196 >> 0] = HEAP8[$1197 >> 0] | 0;\n            _free($1197);\n           }\n           HEAP8[$1161 >> 0] = $1209 << 1;\n           break;\n          }\n          $1193 = $1189 + 1 | 0;\n          $1194 = _malloc($1193) | 0;\n          if (!($1189 >>> 0 <= $1190 >>> 0 & ($1194 | 0) == 0)) {\n           if ($1751) _memcpy($1194 | 0, $1161 + 1 | 0, (($1181 & 255) >>> 1) + 1 | 0) | 0; else {\n            $1206 = HEAP32[$1172 >> 2] | 0;\n            HEAP8[$1194 >> 0] = HEAP8[$1206 >> 0] | 0;\n            _free($1206);\n           }\n           HEAP32[$1161 >> 2] = $1193 | 1;\n           HEAP32[$1174 >> 2] = $1209;\n           HEAP32[$1172 >> 2] = $1194;\n          }\n         }\n        } while (0);\n        HEAP32[$1161 >> 2] = HEAP32[$0 >> 2];\n        HEAP32[$1161 + 4 >> 2] = HEAP32[$0 + 4 >> 2];\n        HEAP32[$1161 + 8 >> 2] = HEAP32[$0 + 8 >> 2];\n        HEAP32[$0 >> 2] = 0;\n        HEAP32[$0 + 4 >> 2] = 0;\n        HEAP32[$0 + 8 >> 2] = 0;\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);\n        $$03$i265 = $1155;\n       }\n      }\n      $$0 = ($$03$i265 | 0) == ($1154 | 0) ? $first : $$03$i265;\n      break L1;\n      break;\n     }\n    default:\n     {\n      $$0 = $first;\n      break L1;\n     }\n    }\n    break;\n   }\n  case 111:\n   {\n    switch (HEAP8[$t$0 + 1 >> 0] | 0) {\n    case 110:\n     {\n      $$0 = __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;\n      break L1;\n      break;\n     }\n    case 111:\n     {\n      $1219 = $first + 2 | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($57, 14e3, 2);\n      $1220 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1219, $last, $57, $db) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($57);\n      $$0 = ($1220 | 0) == ($1219 | 0) ? $first : $1220;\n      break L1;\n      break;\n     }\n    case 114:\n     {\n      $1222 = $first + 2 | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($58, 14003, 1);\n      $1223 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1222, $last, $58, $db) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($58);\n      $$0 = ($1223 | 0) == ($1222 | 0) ? $first : $1223;\n      break L1;\n      break;\n     }\n    case 82:\n     {\n      $1225 = $first + 2 | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($59, 14005, 2);\n      $1226 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1225, $last, $59, $db) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($59);\n      $$0 = ($1226 | 0) == ($1225 | 0) ? $first : $1226;\n      break L1;\n      break;\n     }\n    default:\n     {\n      $$0 = $first;\n      break L1;\n     }\n    }\n    break;\n   }\n  case 112:\n   {\n    switch (HEAP8[$t$0 + 1 >> 0] | 0) {\n    case 109:\n     {\n      $1231 = $first + 2 | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($60, 14008, 3);\n      $1232 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1231, $last, $60, $db) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($60);\n      $$0 = ($1232 | 0) == ($1231 | 0) ? $first : $1232;\n      break L1;\n      break;\n     }\n    case 108:\n     {\n      $1234 = $first + 2 | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($61, 14012, 1);\n      $1235 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1234, $last, $61, $db) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($61);\n      $$0 = ($1235 | 0) == ($1234 | 0) ? $first : $1235;\n      break L1;\n      break;\n     }\n    case 76:\n     {\n      $1237 = $first + 2 | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($62, 14014, 2);\n      $1238 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1237, $last, $62, $db) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($62);\n      $$0 = ($1238 | 0) == ($1237 | 0) ? $first : $1238;\n      break L1;\n      break;\n     }\n    case 112:\n     {\n      $1240 = $first + 2 | 0;\n      if (($1240 | 0) != ($last | 0)) if ((HEAP8[$1240 >> 0] | 0) == 95) {\n       $1244 = $first + 3 | 0;\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($63, 14017, 2);\n       $1245 = __ZN10__cxxabiv112_GLOBAL__N_123parse_prefix_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1244, $last, $63, $db) | 0;\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($63);\n       $$0 = ($1245 | 0) == ($1244 | 0) ? $first : $1245;\n       break L1;\n      }\n      $1247 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($1240, $last, $db) | 0;\n      if (($1247 | 0) == ($1240 | 0)) {\n       $$0 = $first;\n       break L1;\n      }\n      $1251 = HEAP32[$db + 4 >> 2] | 0;\n      if ((HEAP32[$db >> 2] | 0) == ($1251 | 0)) {\n       $$0 = $first;\n       break L1;\n      }\n      $1253 = $1251 + -24 | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($67, $1253);\n      $1254 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($67, 0, 12688) | 0;\n      HEAP32[$66 >> 2] = HEAP32[$1254 >> 2];\n      HEAP32[$66 + 4 >> 2] = HEAP32[$1254 + 4 >> 2];\n      HEAP32[$66 + 8 >> 2] = HEAP32[$1254 + 8 >> 2];\n      HEAP32[$1254 >> 2] = 0;\n      HEAP32[$1254 + 4 >> 2] = 0;\n      HEAP32[$1254 + 8 >> 2] = 0;\n      $1257 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($66, 14020) | 0;\n      HEAP32[$65 >> 2] = HEAP32[$1257 >> 2];\n      HEAP32[$65 + 4 >> 2] = HEAP32[$1257 + 4 >> 2];\n      HEAP32[$65 + 8 >> 2] = HEAP32[$1257 + 8 >> 2];\n      HEAP32[$1257 >> 2] = 0;\n      HEAP32[$1257 + 4 >> 2] = 0;\n      HEAP32[$1257 + 8 >> 2] = 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($64, $65);\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($1253, $64);\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($64);\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($65);\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($66);\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($67);\n      $$0 = $1247;\n      break L1;\n      break;\n     }\n    case 115:\n     {\n      $1260 = $first + 2 | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($68, 14012, 1);\n      $1261 = __ZN10__cxxabiv112_GLOBAL__N_123parse_prefix_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1260, $last, $68, $db) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($68);\n      $$0 = ($1261 | 0) == ($1260 | 0) ? $first : $1261;\n      break L1;\n      break;\n     }\n    case 116:\n     {\n      if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 112) if ((HEAP8[$first + 1 >> 0] | 0) == 116) {\n       $1269 = $first + 2 | 0;\n       $1270 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($1269, $last, $db) | 0;\n       if (($1270 | 0) == ($1269 | 0)) $$0$i254 = $first; else {\n        $1272 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($1270, $last, $db) | 0;\n        if (($1272 | 0) == ($1270 | 0)) $$0$i254 = $first; else {\n         $1274 = $db + 4 | 0;\n         $1275 = HEAP32[$1274 >> 2] | 0;\n         if ((($1275 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$0$i254 = $first; else {\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($0, $1275 + -24 | 0);\n          $1283 = HEAP32[$1274 >> 2] | 0;\n          $1284 = $1283 + -24 | 0;\n          $1286 = $1283;\n          do {\n           $1285 = $1286 + -24 | 0;\n           HEAP32[$1274 >> 2] = $1285;\n           __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1285);\n           $1286 = HEAP32[$1274 >> 2] | 0;\n          } while (($1286 | 0) != ($1284 | 0));\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1283 + -48 | 0, 14024) | 0;\n          $1291 = HEAP8[$0 >> 0] | 0;\n          $1293 = ($1291 & 1) == 0;\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj((HEAP32[$1274 >> 2] | 0) + -24 | 0, $1293 ? $0 + 1 | 0 : HEAP32[$0 + 8 >> 2] | 0, $1293 ? ($1291 & 255) >>> 1 : HEAP32[$0 + 4 >> 2] | 0) | 0;\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);\n          $$0$i254 = $1272;\n         }\n        }\n       }\n      } else $$0$i254 = $first; else $$0$i254 = $first; else $$0$i254 = $first;\n      $$0 = $$0$i254;\n      break L1;\n      break;\n     }\n    default:\n     {\n      $$0 = $first;\n      break L1;\n     }\n    }\n    break;\n   }\n  case 113:\n   {\n    if ((HEAP8[$t$0 + 1 >> 0] | 0) != 117) {\n     $$0 = $first;\n     break L1;\n    }\n    $1306 = $first + 2 | 0;\n    $1307 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($1306, $last, $db) | 0;\n    if (($1307 | 0) == ($1306 | 0)) {\n     $$0 = $first;\n     break L1;\n    }\n    $1309 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($1307, $last, $db) | 0;\n    if (($1309 | 0) == ($1307 | 0)) {\n     $1383 = $db + 4 | 0;\n     $1384 = HEAP32[$1383 >> 2] | 0;\n     $1385 = $1384 + -24 | 0;\n     $1387 = $1384;\n     while (1) {\n      $1386 = $1387 + -24 | 0;\n      HEAP32[$1383 >> 2] = $1386;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1386);\n      $1387 = HEAP32[$1383 >> 2] | 0;\n      if (($1387 | 0) == ($1385 | 0)) {\n       $$0 = $first;\n       break L1;\n      }\n     }\n    }\n    $1311 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($1309, $last, $db) | 0;\n    $1313 = $db + 4 | 0;\n    $1314 = HEAP32[$1313 >> 2] | 0;\n    if (($1311 | 0) == ($1309 | 0)) {\n     $1375 = $1314 + -24 | 0;\n     $1377 = $1314;\n     do {\n      $1376 = $1377 + -24 | 0;\n      HEAP32[$1313 >> 2] = $1376;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1376);\n      $1377 = HEAP32[$1313 >> 2] | 0;\n     } while (($1377 | 0) != ($1375 | 0));\n     $1379 = $1314 + -48 | 0;\n     $1381 = $1375;\n     while (1) {\n      $1380 = $1381 + -24 | 0;\n      HEAP32[$1313 >> 2] = $1380;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1380);\n      $1381 = HEAP32[$1313 >> 2] | 0;\n      if (($1381 | 0) == ($1379 | 0)) {\n       $$0 = $first;\n       break L1;\n      }\n     }\n    }\n    if ((($1314 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 3) {\n     $$0 = $first;\n     break L1;\n    }\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($op3, $1314 + -24 | 0);\n    $1322 = HEAP32[$1313 >> 2] | 0;\n    $1323 = $1322 + -24 | 0;\n    $1325 = $1322;\n    do {\n     $1324 = $1325 + -24 | 0;\n     HEAP32[$1313 >> 2] = $1324;\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1324);\n     $1325 = HEAP32[$1313 >> 2] | 0;\n    } while (($1325 | 0) != ($1323 | 0));\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($op27, $1322 + -48 | 0);\n    $1328 = HEAP32[$1313 >> 2] | 0;\n    $1329 = $1328 + -24 | 0;\n    $1331 = $1328;\n    do {\n     $1330 = $1331 + -24 | 0;\n     HEAP32[$1313 >> 2] = $1330;\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1330);\n     $1331 = HEAP32[$1313 >> 2] | 0;\n    } while (($1331 | 0) != ($1329 | 0));\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($op18, $1328 + -48 | 0);\n    $1335 = (HEAP32[$1313 >> 2] | 0) + -24 | 0;\n    __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($75, 12688, $op18);\n    $1336 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($75, 14027) | 0;\n    HEAP32[$74 >> 2] = HEAP32[$1336 >> 2];\n    HEAP32[$74 + 4 >> 2] = HEAP32[$1336 + 4 >> 2];\n    HEAP32[$74 + 8 >> 2] = HEAP32[$1336 + 8 >> 2];\n    HEAP32[$1336 >> 2] = 0;\n    HEAP32[$1336 + 4 >> 2] = 0;\n    HEAP32[$1336 + 8 >> 2] = 0;\n    $1339 = HEAP8[$op27 >> 0] | 0;\n    $1341 = ($1339 & 1) == 0;\n    $1351 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($74, $1341 ? $op27 + 1 | 0 : HEAP32[$op27 + 8 >> 2] | 0, $1341 ? ($1339 & 255) >>> 1 : HEAP32[$op27 + 4 >> 2] | 0) | 0;\n    HEAP32[$73 >> 2] = HEAP32[$1351 >> 2];\n    HEAP32[$73 + 4 >> 2] = HEAP32[$1351 + 4 >> 2];\n    HEAP32[$73 + 8 >> 2] = HEAP32[$1351 + 8 >> 2];\n    HEAP32[$1351 >> 2] = 0;\n    HEAP32[$1351 + 4 >> 2] = 0;\n    HEAP32[$1351 + 8 >> 2] = 0;\n    $1354 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($73, 14033) | 0;\n    HEAP32[$72 >> 2] = HEAP32[$1354 >> 2];\n    HEAP32[$72 + 4 >> 2] = HEAP32[$1354 + 4 >> 2];\n    HEAP32[$72 + 8 >> 2] = HEAP32[$1354 + 8 >> 2];\n    HEAP32[$1354 >> 2] = 0;\n    HEAP32[$1354 + 4 >> 2] = 0;\n    HEAP32[$1354 + 8 >> 2] = 0;\n    $1357 = HEAP8[$op3 >> 0] | 0;\n    $1359 = ($1357 & 1) == 0;\n    $1369 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($72, $1359 ? $op3 + 1 | 0 : HEAP32[$op3 + 8 >> 2] | 0, $1359 ? ($1357 & 255) >>> 1 : HEAP32[$op3 + 4 >> 2] | 0) | 0;\n    HEAP32[$71 >> 2] = HEAP32[$1369 >> 2];\n    HEAP32[$71 + 4 >> 2] = HEAP32[$1369 + 4 >> 2];\n    HEAP32[$71 + 8 >> 2] = HEAP32[$1369 + 8 >> 2];\n    HEAP32[$1369 >> 2] = 0;\n    HEAP32[$1369 + 4 >> 2] = 0;\n    HEAP32[$1369 + 8 >> 2] = 0;\n    $1372 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($71, 12593) | 0;\n    HEAP32[$70 >> 2] = HEAP32[$1372 >> 2];\n    HEAP32[$70 + 4 >> 2] = HEAP32[$1372 + 4 >> 2];\n    HEAP32[$70 + 8 >> 2] = HEAP32[$1372 + 8 >> 2];\n    HEAP32[$1372 >> 2] = 0;\n    HEAP32[$1372 + 4 >> 2] = 0;\n    HEAP32[$1372 + 8 >> 2] = 0;\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($69, $70);\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($1335, $69);\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($69);\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($70);\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($71);\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($72);\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($73);\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($74);\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($75);\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($op18);\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($op27);\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($op3);\n    $$0 = $1311;\n    break L1;\n    break;\n   }\n  case 114:\n   {\n    switch (HEAP8[$t$0 + 1 >> 0] | 0) {\n    case 99:\n     {\n      if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 114) if ((HEAP8[$first + 1 >> 0] | 0) == 99) {\n       $1398 = $first + 2 | 0;\n       $1399 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($1398, $last, $db) | 0;\n       if (($1399 | 0) == ($1398 | 0)) $$06$i248 = $first; else {\n        $1401 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($1399, $last, $db) | 0;\n        if (($1401 | 0) == ($1399 | 0)) $$06$i248 = $first; else {\n         $1403 = $db + 4 | 0;\n         $1404 = HEAP32[$1403 >> 2] | 0;\n         if ((($1404 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$06$i248 = $first; else {\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($0, $1404 + -24 | 0);\n          $1412 = HEAP32[$1403 >> 2] | 0;\n          $1413 = $1412 + -24 | 0;\n          $1415 = $1412;\n          do {\n           $1414 = $1415 + -24 | 0;\n           HEAP32[$1403 >> 2] = $1414;\n           __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1414);\n           $1415 = HEAP32[$1403 >> 2] | 0;\n          } while (($1415 | 0) != ($1413 | 0));\n          $1417 = $1412 + -48 | 0;\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($6, $1417);\n          $1418 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($6, 0, 14039) | 0;\n          HEAP32[$5 >> 2] = HEAP32[$1418 >> 2];\n          HEAP32[$5 + 4 >> 2] = HEAP32[$1418 + 4 >> 2];\n          HEAP32[$5 + 8 >> 2] = HEAP32[$1418 + 8 >> 2];\n          HEAP32[$1418 >> 2] = 0;\n          HEAP32[$1418 + 4 >> 2] = 0;\n          HEAP32[$1418 + 8 >> 2] = 0;\n          $1421 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($5, 13890) | 0;\n          HEAP32[$4 >> 2] = HEAP32[$1421 >> 2];\n          HEAP32[$4 + 4 >> 2] = HEAP32[$1421 + 4 >> 2];\n          HEAP32[$4 + 8 >> 2] = HEAP32[$1421 + 8 >> 2];\n          HEAP32[$1421 >> 2] = 0;\n          HEAP32[$1421 + 4 >> 2] = 0;\n          HEAP32[$1421 + 8 >> 2] = 0;\n          $1424 = HEAP8[$0 >> 0] | 0;\n          $1426 = ($1424 & 1) == 0;\n          $1436 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($4, $1426 ? $0 + 1 | 0 : HEAP32[$0 + 8 >> 2] | 0, $1426 ? ($1424 & 255) >>> 1 : HEAP32[$0 + 4 >> 2] | 0) | 0;\n          HEAP32[$3 >> 2] = HEAP32[$1436 >> 2];\n          HEAP32[$3 + 4 >> 2] = HEAP32[$1436 + 4 >> 2];\n          HEAP32[$3 + 8 >> 2] = HEAP32[$1436 + 8 >> 2];\n          HEAP32[$1436 >> 2] = 0;\n          HEAP32[$1436 + 4 >> 2] = 0;\n          HEAP32[$1436 + 8 >> 2] = 0;\n          $1439 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($3, 12593) | 0;\n          HEAP32[$2 >> 2] = HEAP32[$1439 >> 2];\n          HEAP32[$2 + 4 >> 2] = HEAP32[$1439 + 4 >> 2];\n          HEAP32[$2 + 8 >> 2] = HEAP32[$1439 + 8 >> 2];\n          HEAP32[$1439 >> 2] = 0;\n          HEAP32[$1439 + 4 >> 2] = 0;\n          HEAP32[$1439 + 8 >> 2] = 0;\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($1, $2);\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($1417, $1);\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($5);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($6);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);\n          $$06$i248 = $1401;\n         }\n        }\n       }\n      } else $$06$i248 = $first; else $$06$i248 = $first; else $$06$i248 = $first;\n      $$0 = $$06$i248;\n      break L1;\n      break;\n     }\n    case 109:\n     {\n      $1442 = $first + 2 | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($76, 14057, 1);\n      $1443 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1442, $last, $76, $db) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($76);\n      $$0 = ($1443 | 0) == ($1442 | 0) ? $first : $1443;\n      break L1;\n      break;\n     }\n    case 77:\n     {\n      $1445 = $first + 2 | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($77, 14059, 2);\n      $1446 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1445, $last, $77, $db) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($77);\n      $$0 = ($1446 | 0) == ($1445 | 0) ? $first : $1446;\n      break L1;\n      break;\n     }\n    case 115:\n     {\n      $1448 = $first + 2 | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($78, 14062, 2);\n      $1449 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1448, $last, $78, $db) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($78);\n      $$0 = ($1449 | 0) == ($1448 | 0) ? $first : $1449;\n      break L1;\n      break;\n     }\n    case 83:\n     {\n      $1451 = $first + 2 | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($79, 14065, 3);\n      $1452 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1451, $last, $79, $db) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($79);\n      STACKTOP = sp;\n      return (($1452 | 0) == ($1451 | 0) ? $first : $1452) | 0;\n     }\n    default:\n     {\n      $$0 = $first;\n      break L1;\n     }\n    }\n    break;\n   }\n  case 115:\n   {\n    switch (HEAP8[$t$0 + 1 >> 0] | 0) {\n    case 99:\n     {\n      if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 115) if ((HEAP8[$first + 1 >> 0] | 0) == 99) {\n       $1463 = $first + 2 | 0;\n       $1464 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($1463, $last, $db) | 0;\n       if (($1464 | 0) == ($1463 | 0)) $$06$i = $first; else {\n        $1466 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($1464, $last, $db) | 0;\n        if (($1466 | 0) == ($1464 | 0)) $$06$i = $first; else {\n         $1468 = $db + 4 | 0;\n         $1469 = HEAP32[$1468 >> 2] | 0;\n         if ((($1469 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$06$i = $first; else {\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($0, $1469 + -24 | 0);\n          $1477 = HEAP32[$1468 >> 2] | 0;\n          $1478 = $1477 + -24 | 0;\n          $1480 = $1477;\n          do {\n           $1479 = $1480 + -24 | 0;\n           HEAP32[$1468 >> 2] = $1479;\n           __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1479);\n           $1480 = HEAP32[$1468 >> 2] | 0;\n          } while (($1480 | 0) != ($1478 | 0));\n          $1482 = $1477 + -48 | 0;\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($6, $1482);\n          $1483 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($6, 0, 14069) | 0;\n          HEAP32[$5 >> 2] = HEAP32[$1483 >> 2];\n          HEAP32[$5 + 4 >> 2] = HEAP32[$1483 + 4 >> 2];\n          HEAP32[$5 + 8 >> 2] = HEAP32[$1483 + 8 >> 2];\n          HEAP32[$1483 >> 2] = 0;\n          HEAP32[$1483 + 4 >> 2] = 0;\n          HEAP32[$1483 + 8 >> 2] = 0;\n          $1486 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($5, 13890) | 0;\n          HEAP32[$4 >> 2] = HEAP32[$1486 >> 2];\n          HEAP32[$4 + 4 >> 2] = HEAP32[$1486 + 4 >> 2];\n          HEAP32[$4 + 8 >> 2] = HEAP32[$1486 + 8 >> 2];\n          HEAP32[$1486 >> 2] = 0;\n          HEAP32[$1486 + 4 >> 2] = 0;\n          HEAP32[$1486 + 8 >> 2] = 0;\n          $1489 = HEAP8[$0 >> 0] | 0;\n          $1491 = ($1489 & 1) == 0;\n          $1501 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($4, $1491 ? $0 + 1 | 0 : HEAP32[$0 + 8 >> 2] | 0, $1491 ? ($1489 & 255) >>> 1 : HEAP32[$0 + 4 >> 2] | 0) | 0;\n          HEAP32[$3 >> 2] = HEAP32[$1501 >> 2];\n          HEAP32[$3 + 4 >> 2] = HEAP32[$1501 + 4 >> 2];\n          HEAP32[$3 + 8 >> 2] = HEAP32[$1501 + 8 >> 2];\n          HEAP32[$1501 >> 2] = 0;\n          HEAP32[$1501 + 4 >> 2] = 0;\n          HEAP32[$1501 + 8 >> 2] = 0;\n          $1504 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($3, 12593) | 0;\n          HEAP32[$2 >> 2] = HEAP32[$1504 >> 2];\n          HEAP32[$2 + 4 >> 2] = HEAP32[$1504 + 4 >> 2];\n          HEAP32[$2 + 8 >> 2] = HEAP32[$1504 + 8 >> 2];\n          HEAP32[$1504 >> 2] = 0;\n          HEAP32[$1504 + 4 >> 2] = 0;\n          HEAP32[$1504 + 8 >> 2] = 0;\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($1, $2);\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($1482, $1);\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($5);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($6);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);\n          $$06$i = $1466;\n         }\n        }\n       }\n      } else $$06$i = $first; else $$06$i = $first; else $$06$i = $first;\n      $$0 = $$06$i;\n      break L1;\n      break;\n     }\n    case 112:\n     {\n      if (($83 | 0) <= 2) {\n       $$0 = $first;\n       break L1;\n      }\n      if ((HEAP8[$first >> 0] | 0) != 115) {\n       $$0 = $first;\n       break L1;\n      }\n      if ((HEAP8[$first + 1 >> 0] | 0) != 112) {\n       $$0 = $first;\n       break L1;\n      }\n      $1513 = $first + 2 | 0;\n      $1514 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($1513, $last, $db) | 0;\n      $$0 = ($1514 | 0) == ($1513 | 0) ? $first : $1514;\n      break L1;\n      break;\n     }\n    case 114:\n     {\n      $$0 = __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;\n      break L1;\n      break;\n     }\n    case 116:\n     {\n      if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 115) if ((HEAP8[$first + 1 >> 0] | 0) == 116) {\n       $1523 = $first + 2 | 0;\n       $1524 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($1523, $last, $db) | 0;\n       if (($1524 | 0) == ($1523 | 0)) $$03$i211 = $first; else {\n        $1528 = HEAP32[$db + 4 >> 2] | 0;\n        if ((HEAP32[$db >> 2] | 0) == ($1528 | 0)) $$03$i211 = $first; else {\n         $1530 = $1528 + -24 | 0;\n         __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($3, $1530);\n         $1531 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($3, 0, 14082) | 0;\n         HEAP32[$2 >> 2] = HEAP32[$1531 >> 2];\n         HEAP32[$2 + 4 >> 2] = HEAP32[$1531 + 4 >> 2];\n         HEAP32[$2 + 8 >> 2] = HEAP32[$1531 + 8 >> 2];\n         HEAP32[$1531 >> 2] = 0;\n         HEAP32[$1531 + 4 >> 2] = 0;\n         HEAP32[$1531 + 8 >> 2] = 0;\n         $1534 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($2, 12593) | 0;\n         HEAP32[$1 >> 2] = HEAP32[$1534 >> 2];\n         HEAP32[$1 + 4 >> 2] = HEAP32[$1534 + 4 >> 2];\n         HEAP32[$1 + 8 >> 2] = HEAP32[$1534 + 8 >> 2];\n         HEAP32[$1534 >> 2] = 0;\n         HEAP32[$1534 + 4 >> 2] = 0;\n         HEAP32[$1534 + 8 >> 2] = 0;\n         __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($0, $1);\n         __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($1530, $0);\n         __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0);\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);\n         $$03$i211 = $1524;\n        }\n       }\n      } else $$03$i211 = $first; else $$03$i211 = $first; else $$03$i211 = $first;\n      $$0 = $$03$i211;\n      break L1;\n      break;\n     }\n    case 122:\n     {\n      if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 115) if ((HEAP8[$first + 1 >> 0] | 0) == 122) {\n       $1543 = $first + 2 | 0;\n       $1544 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($1543, $last, $db) | 0;\n       if (($1544 | 0) == ($1543 | 0)) $$03$i200 = $first; else {\n        $1548 = HEAP32[$db + 4 >> 2] | 0;\n        if ((HEAP32[$db >> 2] | 0) == ($1548 | 0)) $$03$i200 = $first; else {\n         $1550 = $1548 + -24 | 0;\n         __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($3, $1550);\n         $1551 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($3, 0, 14082) | 0;\n         HEAP32[$2 >> 2] = HEAP32[$1551 >> 2];\n         HEAP32[$2 + 4 >> 2] = HEAP32[$1551 + 4 >> 2];\n         HEAP32[$2 + 8 >> 2] = HEAP32[$1551 + 8 >> 2];\n         HEAP32[$1551 >> 2] = 0;\n         HEAP32[$1551 + 4 >> 2] = 0;\n         HEAP32[$1551 + 8 >> 2] = 0;\n         $1554 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($2, 12593) | 0;\n         HEAP32[$1 >> 2] = HEAP32[$1554 >> 2];\n         HEAP32[$1 + 4 >> 2] = HEAP32[$1554 + 4 >> 2];\n         HEAP32[$1 + 8 >> 2] = HEAP32[$1554 + 8 >> 2];\n         HEAP32[$1554 >> 2] = 0;\n         HEAP32[$1554 + 4 >> 2] = 0;\n         HEAP32[$1554 + 8 >> 2] = 0;\n         __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($0, $1);\n         __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($1550, $0);\n         __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0);\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);\n         $$03$i200 = $1544;\n        }\n       }\n      } else $$03$i200 = $first; else $$03$i200 = $first; else $$03$i200 = $first;\n      $$0 = $$03$i200;\n      break L1;\n      break;\n     }\n    case 90:\n     {\n      if (($81 - $t$0 | 0) <= 2) {\n       $$0 = $first;\n       break L1;\n      }\n      switch (HEAP8[$t$0 + 2 >> 0] | 0) {\n      case 84:\n       break;\n      case 102:\n       {\n        if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 115) if ((HEAP8[$first + 1 >> 0] | 0) == 90) {\n         $1662 = $first + 2 | 0;\n         if ((HEAP8[$1662 >> 0] | 0) == 102) {\n          $1665 = __ZN10__cxxabiv112_GLOBAL__N_120parse_function_paramINS0_2DbEEEPKcS4_S4_RT_($1662, $last, $db) | 0;\n          if (($1665 | 0) == ($1662 | 0)) $$03$i174 = $first; else {\n           $1669 = HEAP32[$db + 4 >> 2] | 0;\n           if ((HEAP32[$db >> 2] | 0) == ($1669 | 0)) $$03$i174 = $first; else {\n            $1671 = $1669 + -24 | 0;\n            __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($3, $1671);\n            $1672 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($3, 0, 14091) | 0;\n            HEAP32[$2 >> 2] = HEAP32[$1672 >> 2];\n            HEAP32[$2 + 4 >> 2] = HEAP32[$1672 + 4 >> 2];\n            HEAP32[$2 + 8 >> 2] = HEAP32[$1672 + 8 >> 2];\n            HEAP32[$1672 >> 2] = 0;\n            HEAP32[$1672 + 4 >> 2] = 0;\n            HEAP32[$1672 + 8 >> 2] = 0;\n            $1675 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($2, 12593) | 0;\n            HEAP32[$1 >> 2] = HEAP32[$1675 >> 2];\n            HEAP32[$1 + 4 >> 2] = HEAP32[$1675 + 4 >> 2];\n            HEAP32[$1 + 8 >> 2] = HEAP32[$1675 + 8 >> 2];\n            HEAP32[$1675 >> 2] = 0;\n            HEAP32[$1675 + 4 >> 2] = 0;\n            HEAP32[$1675 + 8 >> 2] = 0;\n            __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($0, $1);\n            __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($1671, $0);\n            __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0);\n            __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);\n            __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);\n            __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);\n            $$03$i174 = $1665;\n           }\n          }\n         } else $$03$i174 = $first;\n        } else $$03$i174 = $first; else $$03$i174 = $first; else $$03$i174 = $first;\n        $$0 = $$03$i174;\n        break L1;\n        break;\n       }\n      default:\n       {\n        $$0 = $first;\n        break L1;\n       }\n      }\n      if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 115) if ((HEAP8[$first + 1 >> 0] | 0) == 90) {\n       $1569 = $first + 2 | 0;\n       if ((HEAP8[$1569 >> 0] | 0) == 84) {\n        $1572 = $db + 4 | 0;\n        $1578 = ((HEAP32[$1572 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0;\n        $1579 = __ZN10__cxxabiv112_GLOBAL__N_120parse_template_paramINS0_2DbEEEPKcS4_S4_RT_($1569, $last, $db) | 0;\n        $1581 = HEAP32[$db >> 2] | 0;\n        $1585 = ((HEAP32[$1572 >> 2] | 0) - $1581 | 0) / 24 | 0;\n        if (($1579 | 0) == ($1569 | 0)) $$03$i = $first; else {\n         HEAP8[$1 >> 0] = 20;\n         dest = $1 + 1 | 0;\n         src = 14091;\n         stop = dest + 10 | 0;\n         do {\n          HEAP8[dest >> 0] = HEAP8[src >> 0] | 0;\n          dest = dest + 1 | 0;\n          src = src + 1 | 0;\n         } while ((dest | 0) < (stop | 0));\n         HEAP8[$1 + 11 >> 0] = 0;\n         if (($1578 | 0) != ($1585 | 0)) {\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($2, $1581 + ($1578 * 24 | 0) | 0);\n          $1591 = HEAP8[$2 >> 0] | 0;\n          $1593 = ($1591 & 1) == 0;\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($1, $1593 ? $2 + 1 | 0 : HEAP32[$2 + 8 >> 2] | 0, $1593 ? ($1591 & 255) >>> 1 : HEAP32[$2 + 4 >> 2] | 0) | 0;\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);\n          $1603 = $3 + 8 | 0;\n          $1604 = $3 + 1 | 0;\n          $1605 = $3 + 4 | 0;\n          $k$0$i621 = $1578 + 1 | 0;\n          if (($k$0$i621 | 0) != ($1585 | 0)) {\n           $k$0$i622 = $k$0$i621;\n           do {\n            __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($4, (HEAP32[$db >> 2] | 0) + ($k$0$i622 * 24 | 0) | 0);\n            $1609 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($4, 0, 12690) | 0;\n            HEAP32[$3 >> 2] = HEAP32[$1609 >> 2];\n            HEAP32[$3 + 4 >> 2] = HEAP32[$1609 + 4 >> 2];\n            HEAP32[$3 + 8 >> 2] = HEAP32[$1609 + 8 >> 2];\n            HEAP32[$1609 >> 2] = 0;\n            HEAP32[$1609 + 4 >> 2] = 0;\n            HEAP32[$1609 + 8 >> 2] = 0;\n            $1612 = HEAP8[$3 >> 0] | 0;\n            $1614 = ($1612 & 1) == 0;\n            __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($1, $1614 ? $1604 : HEAP32[$1603 >> 2] | 0, $1614 ? ($1612 & 255) >>> 1 : HEAP32[$1605 >> 2] | 0) | 0;\n            __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);\n            __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4);\n            $k$0$i622 = $k$0$i622 + 1 | 0;\n           } while (($k$0$i622 | 0) != ($1585 | 0));\n          }\n         }\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1, 12593) | 0;\n         if (($1585 | 0) != ($1578 | 0)) {\n          $k1$0$i618 = $1585;\n          do {\n           $1623 = HEAP32[$1572 >> 2] | 0;\n           $1624 = $1623 + -24 | 0;\n           $1626 = $1623;\n           do {\n            $1625 = $1626 + -24 | 0;\n            HEAP32[$1572 >> 2] = $1625;\n            __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1625);\n            $1626 = HEAP32[$1572 >> 2] | 0;\n           } while (($1626 | 0) != ($1624 | 0));\n           $k1$0$i618 = $k1$0$i618 + -1 | 0;\n          } while (($k1$0$i618 | 0) != ($1578 | 0));\n         };\n         HEAP32[$6 >> 2] = HEAP32[$1 >> 2];\n         HEAP32[$6 + 4 >> 2] = HEAP32[$1 + 4 >> 2];\n         HEAP32[$6 + 8 >> 2] = HEAP32[$1 + 8 >> 2];\n         HEAP32[$1 >> 2] = 0;\n         HEAP32[$1 + 4 >> 2] = 0;\n         HEAP32[$1 + 8 >> 2] = 0;\n         __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($5, $6);\n         $1632 = HEAP32[$1572 >> 2] | 0;\n         $1634 = HEAP32[$db + 8 >> 2] | 0;\n         if ($1632 >>> 0 < $1634 >>> 0) {\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1632, $5);\n          HEAP32[$1572 >> 2] = (HEAP32[$1572 >> 2] | 0) + 24;\n         } else {\n          $1641 = HEAP32[$db >> 2] | 0;\n          $1642 = $1632 - $1641 | 0;\n          $1643 = ($1642 | 0) / 24 | 0;\n          $1644 = $1643 + 1 | 0;\n          if (($1642 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n          $1648 = ($1634 - $1641 | 0) / 24 | 0;\n          if ($1648 >>> 0 < 1073741823) {\n           $1650 = $1648 << 1;\n           $$0$i$i$i$i = $1650 >>> 0 < $1644 >>> 0 ? $1644 : $1650;\n          } else $$0$i$i$i$i = 2147483647;\n          __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($0, $$0$i$i$i$i, $1643, $db + 12 | 0);\n          $1653 = $0 + 8 | 0;\n          $1654 = HEAP32[$1653 >> 2] | 0;\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1654, $5);\n          HEAP32[$1653 >> 2] = $1654 + 24;\n          __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $0);\n          __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($0);\n         }\n         __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($5);\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($6);\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);\n         $$03$i = $1579;\n        }\n       } else $$03$i = $first;\n      } else $$03$i = $first; else $$03$i = $first; else $$03$i = $first;\n      $$0 = $$03$i;\n      break L1;\n      break;\n     }\n    default:\n     {\n      $$0 = $first;\n      break L1;\n     }\n    }\n    break;\n   }\n  case 116:\n   {\n    switch (HEAP8[$t$0 + 1 >> 0] | 0) {\n    case 105:\n    case 101:\n     {\n      L600 : do if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 116) {\n       $1685 = HEAP8[$first + 1 >> 0] | 0;\n       switch ($1685 << 24 >> 24) {\n       case 105:\n       case 101:\n        break;\n       default:\n        {\n         $$03$i189 = $first;\n         break L600;\n        }\n       }\n       $1687 = $first + 2 | 0;\n       if ($1685 << 24 >> 24 == 101) $t$0$i = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($1687, $last, $db) | 0; else $t$0$i = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($1687, $last, $db) | 0;\n       if (($t$0$i | 0) == ($1687 | 0)) $$03$i189 = $first; else {\n        $1693 = HEAP32[$db + 4 >> 2] | 0;\n        if ((HEAP32[$db >> 2] | 0) == ($1693 | 0)) $$03$i189 = $first; else {\n         $1695 = $1693 + -24 | 0;\n         __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($3, $1695);\n         $1696 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($3, 0, 14102) | 0;\n         HEAP32[$2 >> 2] = HEAP32[$1696 >> 2];\n         HEAP32[$2 + 4 >> 2] = HEAP32[$1696 + 4 >> 2];\n         HEAP32[$2 + 8 >> 2] = HEAP32[$1696 + 8 >> 2];\n         HEAP32[$1696 >> 2] = 0;\n         HEAP32[$1696 + 4 >> 2] = 0;\n         HEAP32[$1696 + 8 >> 2] = 0;\n         $1699 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($2, 12593) | 0;\n         HEAP32[$1 >> 2] = HEAP32[$1699 >> 2];\n         HEAP32[$1 + 4 >> 2] = HEAP32[$1699 + 4 >> 2];\n         HEAP32[$1 + 8 >> 2] = HEAP32[$1699 + 8 >> 2];\n         HEAP32[$1699 >> 2] = 0;\n         HEAP32[$1699 + 4 >> 2] = 0;\n         HEAP32[$1699 + 8 >> 2] = 0;\n         __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($0, $1);\n         __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($1695, $0);\n         __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0);\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);\n         $$03$i189 = $t$0$i;\n        }\n       }\n      } else $$03$i189 = $first; else $$03$i189 = $first; while (0);\n      $$0 = $$03$i189;\n      break L1;\n      break;\n     }\n    case 114:\n     {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj6EEERAT__Kc($80, 14110);\n      $1702 = $db + 4 | 0;\n      $1703 = HEAP32[$1702 >> 2] | 0;\n      $1705 = HEAP32[$db + 8 >> 2] | 0;\n      if ($1703 >>> 0 < $1705 >>> 0) {\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1703, $80);\n       HEAP32[$1702 >> 2] = (HEAP32[$1702 >> 2] | 0) + 24;\n      } else {\n       $1712 = HEAP32[$db >> 2] | 0;\n       $1713 = $1703 - $1712 | 0;\n       $1714 = ($1713 | 0) / 24 | 0;\n       $1715 = $1714 + 1 | 0;\n       if (($1713 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n       $1719 = ($1705 - $1712 | 0) / 24 | 0;\n       if ($1719 >>> 0 < 1073741823) {\n        $1721 = $1719 << 1;\n        $$0$i$i$i = $1721 >>> 0 < $1715 >>> 0 ? $1715 : $1721;\n       } else $$0$i$i$i = 2147483647;\n       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($0, $$0$i$i$i, $1714, $db + 12 | 0);\n       $1724 = $0 + 8 | 0;\n       $1725 = HEAP32[$1724 >> 2] | 0;\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1725, $80);\n       HEAP32[$1724 >> 2] = $1725 + 24;\n       __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $0);\n       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($0);\n      }\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($80);\n      $$0 = $first + 2 | 0;\n      break L1;\n      break;\n     }\n    case 119:\n     {\n      if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 116) if ((HEAP8[$first + 1 >> 0] | 0) == 119) {\n       $1734 = $first + 2 | 0;\n       $1735 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($1734, $last, $db) | 0;\n       if (($1735 | 0) == ($1734 | 0)) $$02$i = $first; else {\n        $1739 = HEAP32[$db + 4 >> 2] | 0;\n        if ((HEAP32[$db >> 2] | 0) == ($1739 | 0)) $$02$i = $first; else {\n         $1741 = $1739 + -24 | 0;\n         __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($2, $1741);\n         $1742 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($2, 0, 14116) | 0;\n         HEAP32[$1 >> 2] = HEAP32[$1742 >> 2];\n         HEAP32[$1 + 4 >> 2] = HEAP32[$1742 + 4 >> 2];\n         HEAP32[$1 + 8 >> 2] = HEAP32[$1742 + 8 >> 2];\n         HEAP32[$1742 >> 2] = 0;\n         HEAP32[$1742 + 4 >> 2] = 0;\n         HEAP32[$1742 + 8 >> 2] = 0;\n         __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($0, $1);\n         __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($1741, $0);\n         __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0);\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);\n         $$02$i = $1735;\n        }\n       }\n      } else $$02$i = $first; else $$02$i = $first; else $$02$i = $first;\n      $$0 = $$02$i;\n      break L1;\n      break;\n     }\n    default:\n     {\n      $$0 = $first;\n      break L1;\n     }\n    }\n    break;\n   }\n  case 57:\n  case 56:\n  case 55:\n  case 54:\n  case 53:\n  case 52:\n  case 51:\n  case 50:\n  case 49:\n   {\n    $$0 = __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;\n    break L1;\n    break;\n   }\n  default:\n   {\n    $$0 = $first;\n    break L1;\n   }\n  } while (0);\n } else $$0 = $first; while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_119parse_operator_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) {\n $first = $first | 0;\n $last = $last | 0;\n $db = $db | 0;\n var $$0 = 0, $$0$i$i$i = 0, $$0$i$i$i10 = 0, $$0$i$i$i100 = 0, $$0$i$i$i105 = 0, $$0$i$i$i110 = 0, $$0$i$i$i115 = 0, $$0$i$i$i120 = 0, $$0$i$i$i125 = 0, $$0$i$i$i130 = 0, $$0$i$i$i135 = 0, $$0$i$i$i140 = 0, $$0$i$i$i145 = 0, $$0$i$i$i15 = 0, $$0$i$i$i150 = 0, $$0$i$i$i155 = 0, $$0$i$i$i160 = 0, $$0$i$i$i165 = 0, $$0$i$i$i170 = 0, $$0$i$i$i175 = 0, $$0$i$i$i180 = 0, $$0$i$i$i185 = 0, $$0$i$i$i190 = 0, $$0$i$i$i195 = 0, $$0$i$i$i20 = 0, $$0$i$i$i200 = 0, $$0$i$i$i205 = 0, $$0$i$i$i210 = 0, $$0$i$i$i215 = 0, $$0$i$i$i220 = 0, $$0$i$i$i225 = 0, $$0$i$i$i25 = 0, $$0$i$i$i30 = 0, $$0$i$i$i35 = 0, $$0$i$i$i40 = 0, $$0$i$i$i45 = 0, $$0$i$i$i5 = 0, $$0$i$i$i50 = 0, $$0$i$i$i55 = 0, $$0$i$i$i60 = 0, $$0$i$i$i65 = 0, $$0$i$i$i70 = 0, $$0$i$i$i75 = 0, $$0$i$i$i80 = 0, $$0$i$i$i85 = 0, $$0$i$i$i90 = 0, $$0$i$i$i95 = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $1002 = 0, $1003 = 0, $1004 = 0, $1005 = 0, $1009 = 0, $1011 = 0, $1014 = 0, $1015 = 0, $1021 = 0, $1022 = 0, $1024 = 0, $103 = 0, $1031 = 0, $1032 = 0, $1033 = 0, $1034 = 0, $1038 = 0, $104 = 0, $1040 = 0, $1043 = 0, $1044 = 0, $1047 = 0, $1048 = 0, $1050 = 0, $1057 = 0, $1058 = 0, $1059 = 0, $1060 = 0, $1064 = 0, $1066 = 0, $1069 = 0, $107 = 0, $1070 = 0, $1073 = 0, $1074 = 0, $1076 = 0, $108 = 0, $1083 = 0, $1084 = 0, $1085 = 0, $1086 = 0, $1090 = 0, $1092 = 0, $1095 = 0, $1096 = 0, $1099 = 0, $11 = 0, $110 = 0, $1100 = 0, $1102 = 0, $1109 = 0, $1110 = 0, $1111 = 0, $1112 = 0, $1116 = 0, $1118 = 0, $1121 = 0, $1122 = 0, $1125 = 0, $1126 = 0, $1128 = 0, $1135 = 0, $1136 = 0, $1137 = 0, $1138 = 0, $1142 = 0, $1144 = 0, $1147 = 0, $1148 = 0, $1151 = 0, $1152 = 0, $1154 = 0, $1161 = 0, $1162 = 0, $1163 = 0, $1164 = 0, $1168 = 0, $117 = 0, $1170 = 0, $1173 = 0, $1174 = 0, $118 = 0, $1180 = 0, $1181 = 0, $1183 = 0, $119 = 0, $1190 = 0, $1191 = 0, $1192 = 0, $1193 = 0, $1197 = 0, $1199 = 0, $12 = 0, $120 = 0, $1202 = 0, $1203 = 0, $1209 = 0, $1210 = 0, $1212 = 0, $1219 = 0, $1220 = 0, $1221 = 0, $1222 = 0, $1226 = 0, $1228 = 0, $1231 = 0, $1232 = 0, $1235 = 0, $1236 = 0, $1238 = 0, $124 = 0, $1245 = 0, $1246 = 0, $1247 = 0, $1248 = 0, $1252 = 0, $1254 = 0, $1257 = 0, $1258 = 0, $126 = 0, $1261 = 0, $1262 = 0, $1264 = 0, $1271 = 0, $1272 = 0, $1273 = 0, $1274 = 0, $1278 = 0, $1280 = 0, $1283 = 0, $1284 = 0, $1287 = 0, $1288 = 0, $129 = 0, $1290 = 0, $1297 = 0, $1298 = 0, $1299 = 0, $13 = 0, $130 = 0, $1300 = 0, $1304 = 0, $1306 = 0, $1309 = 0, $1310 = 0, $1316 = 0, $1317 = 0, $1321 = 0, $133 = 0, $134 = 0, $136 = 0, $14 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $15 = 0, $150 = 0, $152 = 0, $155 = 0, $156 = 0, $16 = 0, $162 = 0, $163 = 0, $165 = 0, $17 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0, $179 = 0, $18 = 0, $181 = 0, $184 = 0, $185 = 0, $188 = 0, $189 = 0, $19 = 0, $191 = 0, $198 = 0, $199 = 0, $2 = 0, $20 = 0, $200 = 0, $201 = 0, $205 = 0, $207 = 0, $21 = 0, $210 = 0, $211 = 0, $214 = 0, $215 = 0, $217 = 0, $22 = 0, $224 = 0, $225 = 0, $226 = 0, $227 = 0, $23 = 0, $231 = 0, $233 = 0, $236 = 0, $237 = 0, $24 = 0, $240 = 0, $241 = 0, $242 = 0, $243 = 0, $247 = 0, $25 = 0, $254 = 0, $255 = 0, $257 = 0, $26 = 0, $264 = 0, $265 = 0, $266 = 0, $267 = 0, $27 = 0, $271 = 0, $273 = 0, $276 = 0, $277 = 0, $28 = 0, $280 = 0, $281 = 0, $283 = 0, $29 = 0, $290 = 0, $291 = 0, $292 = 0, $293 = 0, $297 = 0, $299 = 0, $3 = 0, $30 = 0, $302 = 0, $303 = 0, $306 = 0, $31 = 0, $310 = 0, $313 = 0, $314 = 0, $316 = 0, $32 = 0, $323 = 0, $324 = 0, $325 = 0, $326 = 0, $33 = 0, $330 = 0, $332 = 0, $335 = 0, $336 = 0, $339 = 0, $34 = 0, $340 = 0, $342 = 0, $349 = 0, $35 = 0, $350 = 0, $351 = 0, $352 = 0, $356 = 0, $358 = 0, $36 = 0, $361 = 0, $362 = 0, $365 = 0, $366 = 0, $368 = 0, $37 = 0, $375 = 0, $376 = 0, $377 = 0, $378 = 0, $38 = 0, $382 = 0, $384 = 0, $387 = 0, $388 = 0, $39 = 0, $394 = 0, $395 = 0, $397 = 0, $4 = 0, $40 = 0, $404 = 0, $405 = 0, $406 = 0, $407 = 0, $41 = 0, $411 = 0, $413 = 0, $416 = 0, $417 = 0, $42 = 0, $420 = 0, $421 = 0, $423 = 0, $43 = 0, $430 = 0, $431 = 0, $432 = 0, $433 = 0, $437 = 0, $439 = 0, $44 = 0, $442 = 0, $443 = 0, $446 = 0, $447 = 0, $449 = 0, $45 = 0, $456 = 0, $457 = 0, $458 = 0, $459 = 0, $463 = 0, $465 = 0, $468 = 0, $469 = 0, $475 = 0, $476 = 0, $478 = 0, $485 = 0, $486 = 0, $487 = 0, $488 = 0, $492 = 0, $494 = 0, $497 = 0, $498 = 0, $5 = 0, $501 = 0, $502 = 0, $504 = 0, $511 = 0, $512 = 0, $513 = 0, $514 = 0, $518 = 0, $520 = 0, $523 = 0, $524 = 0, $530 = 0, $531 = 0, $533 = 0, $540 = 0, $541 = 0, $542 = 0, $543 = 0, $547 = 0, $549 = 0, $55 = 0, $552 = 0, $553 = 0, $559 = 0, $56 = 0, $560 = 0, $562 = 0, $569 = 0, $570 = 0, $571 = 0, $572 = 0, $576 = 0, $578 = 0, $58 = 0, $581 = 0, $582 = 0, $585 = 0, $586 = 0, $590 = 0, $593 = 0, $594 = 0, $596 = 0, $6 = 0, $603 = 0, $604 = 0, $605 = 0, $606 = 0, $610 = 0, $612 = 0, $615 = 0, $616 = 0, $619 = 0, $620 = 0, $622 = 0, $629 = 0, $630 = 0, $631 = 0, $632 = 0, $636 = 0, $638 = 0, $641 = 0, $642 = 0, $645 = 0, $646 = 0, $648 = 0, $65 = 0, $655 = 0, $656 = 0, $657 = 0, $658 = 0, $66 = 0, $662 = 0, $664 = 0, $667 = 0, $668 = 0, $67 = 0, $674 = 0, $675 = 0, $677 = 0, $68 = 0, $684 = 0, $685 = 0, $686 = 0, $687 = 0, $691 = 0, $693 = 0, $696 = 0, $697 = 0, $7 = 0, $700 = 0, $701 = 0, $703 = 0, $710 = 0, $711 = 0, $712 = 0, $713 = 0, $717 = 0, $719 = 0, $72 = 0, $722 = 0, $723 = 0, $726 = 0, $727 = 0, $729 = 0, $736 = 0, $737 = 0, $738 = 0, $739 = 0, $74 = 0, $743 = 0, $745 = 0, $748 = 0, $749 = 0, $752 = 0, $753 = 0, $755 = 0, $762 = 0, $763 = 0, $764 = 0, $765 = 0, $769 = 0, $77 = 0, $771 = 0, $774 = 0, $775 = 0, $778 = 0, $779 = 0, $78 = 0, $781 = 0, $788 = 0, $789 = 0, $790 = 0, $791 = 0, $795 = 0, $797 = 0, $8 = 0, $800 = 0, $801 = 0, $807 = 0, $808 = 0, $81 = 0, $810 = 0, $817 = 0, $818 = 0, $819 = 0, $82 = 0, $820 = 0, $824 = 0, $826 = 0, $829 = 0, $830 = 0, $833 = 0, $834 = 0, $836 = 0, $84 = 0, $843 = 0, $844 = 0, $845 = 0, $846 = 0, $850 = 0, $852 = 0, $855 = 0, $856 = 0, $859 = 0, $860 = 0, $862 = 0, $869 = 0, $870 = 0, $871 = 0, $872 = 0, $876 = 0, $878 = 0, $881 = 0, $882 = 0, $885 = 0, $886 = 0, $888 = 0, $895 = 0, $896 = 0, $897 = 0, $898 = 0, $9 = 0, $902 = 0, $904 = 0, $907 = 0, $908 = 0, $91 = 0, $911 = 0, $912 = 0, $914 = 0, $92 = 0, $921 = 0, $922 = 0, $923 = 0, $924 = 0, $928 = 0, $93 = 0, $930 = 0, $933 = 0, $934 = 0, $94 = 0, $940 = 0, $941 = 0, $943 = 0, $950 = 0, $951 = 0, $952 = 0, $953 = 0, $957 = 0, $959 = 0, $962 = 0, $963 = 0, $966 = 0, $967 = 0, $969 = 0, $976 = 0, $977 = 0, $978 = 0, $979 = 0, $98 = 0, $983 = 0, $985 = 0, $988 = 0, $989 = 0, $992 = 0, $993 = 0, $995 = 0, $__v$i$i224 = 0, dest = 0, sp = 0, src = 0, stop = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 1136 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $__v$i$i224 = sp + 1104 | 0;\n $0 = sp + 1080 | 0;\n $1 = sp + 1056 | 0;\n $2 = sp + 1032 | 0;\n $3 = sp + 1008 | 0;\n $4 = sp + 984 | 0;\n $5 = sp + 960 | 0;\n $6 = sp + 936 | 0;\n $7 = sp + 912 | 0;\n $8 = sp + 888 | 0;\n $9 = sp + 864 | 0;\n $10 = sp + 840 | 0;\n $11 = sp + 816 | 0;\n $12 = sp + 792 | 0;\n $13 = sp + 768 | 0;\n $14 = sp + 744 | 0;\n $15 = sp + 720 | 0;\n $16 = sp + 696 | 0;\n $17 = sp + 672 | 0;\n $18 = sp + 648 | 0;\n $19 = sp + 624 | 0;\n $20 = sp + 600 | 0;\n $21 = sp + 576 | 0;\n $22 = sp + 552 | 0;\n $23 = sp + 528 | 0;\n $24 = sp + 504 | 0;\n $25 = sp + 480 | 0;\n $26 = sp + 456 | 0;\n $27 = sp + 432 | 0;\n $28 = sp + 408 | 0;\n $29 = sp + 384 | 0;\n $30 = sp + 360 | 0;\n $31 = sp + 336 | 0;\n $32 = sp + 312 | 0;\n $33 = sp + 288 | 0;\n $34 = sp + 264 | 0;\n $35 = sp + 240 | 0;\n $36 = sp + 216 | 0;\n $37 = sp + 192 | 0;\n $38 = sp + 168 | 0;\n $39 = sp + 144 | 0;\n $40 = sp + 120 | 0;\n $41 = sp + 96 | 0;\n $42 = sp + 72 | 0;\n $43 = sp + 48 | 0;\n $44 = sp + 24 | 0;\n $45 = sp;\n L1 : do if (($last - $first | 0) > 1) do switch (HEAP8[$first >> 0] | 0) {\n case 97:\n  {\n   switch (HEAP8[$first + 1 >> 0] | 0) {\n   case 97:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($0, 12923);\n     $55 = $db + 4 | 0;\n     $56 = HEAP32[$55 >> 2] | 0;\n     $58 = HEAP32[$db + 8 >> 2] | 0;\n     if ($56 >>> 0 < $58 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($56, $0);\n      HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + 24;\n     } else {\n      $65 = HEAP32[$db >> 2] | 0;\n      $66 = $56 - $65 | 0;\n      $67 = ($66 | 0) / 24 | 0;\n      $68 = $67 + 1 | 0;\n      if (($66 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $72 = ($58 - $65 | 0) / 24 | 0;\n      if ($72 >>> 0 < 1073741823) {\n       $74 = $72 << 1;\n       $$0$i$i$i = $74 >>> 0 < $68 >>> 0 ? $68 : $74;\n      } else $$0$i$i$i = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i, $67, $db + 12 | 0);\n      $77 = $__v$i$i224 + 8 | 0;\n      $78 = HEAP32[$77 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($78, $0);\n      HEAP32[$77 >> 2] = $78 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 110:\n   case 100:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($1, 12934);\n     $81 = $db + 4 | 0;\n     $82 = HEAP32[$81 >> 2] | 0;\n     $84 = HEAP32[$db + 8 >> 2] | 0;\n     if ($82 >>> 0 < $84 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($82, $1);\n      HEAP32[$81 >> 2] = (HEAP32[$81 >> 2] | 0) + 24;\n     } else {\n      $91 = HEAP32[$db >> 2] | 0;\n      $92 = $82 - $91 | 0;\n      $93 = ($92 | 0) / 24 | 0;\n      $94 = $93 + 1 | 0;\n      if (($92 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $98 = ($84 - $91 | 0) / 24 | 0;\n      if ($98 >>> 0 < 1073741823) {\n       $100 = $98 << 1;\n       $$0$i$i$i5 = $100 >>> 0 < $94 >>> 0 ? $94 : $100;\n      } else $$0$i$i$i5 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i5, $93, $db + 12 | 0);\n      $103 = $__v$i$i224 + 8 | 0;\n      $104 = HEAP32[$103 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($104, $1);\n      HEAP32[$103 >> 2] = $104 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 78:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($2, 12944);\n     $107 = $db + 4 | 0;\n     $108 = HEAP32[$107 >> 2] | 0;\n     $110 = HEAP32[$db + 8 >> 2] | 0;\n     if ($108 >>> 0 < $110 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($108, $2);\n      HEAP32[$107 >> 2] = (HEAP32[$107 >> 2] | 0) + 24;\n     } else {\n      $117 = HEAP32[$db >> 2] | 0;\n      $118 = $108 - $117 | 0;\n      $119 = ($118 | 0) / 24 | 0;\n      $120 = $119 + 1 | 0;\n      if (($118 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $124 = ($110 - $117 | 0) / 24 | 0;\n      if ($124 >>> 0 < 1073741823) {\n       $126 = $124 << 1;\n       $$0$i$i$i10 = $126 >>> 0 < $120 >>> 0 ? $120 : $126;\n      } else $$0$i$i$i10 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i10, $119, $db + 12 | 0);\n      $129 = $__v$i$i224 + 8 | 0;\n      $130 = HEAP32[$129 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($130, $2);\n      HEAP32[$129 >> 2] = $130 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($2);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 83:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($3, 12955);\n     $133 = $db + 4 | 0;\n     $134 = HEAP32[$133 >> 2] | 0;\n     $136 = HEAP32[$db + 8 >> 2] | 0;\n     if ($134 >>> 0 < $136 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($134, $3);\n      HEAP32[$133 >> 2] = (HEAP32[$133 >> 2] | 0) + 24;\n     } else {\n      $143 = HEAP32[$db >> 2] | 0;\n      $144 = $134 - $143 | 0;\n      $145 = ($144 | 0) / 24 | 0;\n      $146 = $145 + 1 | 0;\n      if (($144 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $150 = ($136 - $143 | 0) / 24 | 0;\n      if ($150 >>> 0 < 1073741823) {\n       $152 = $150 << 1;\n       $$0$i$i$i15 = $152 >>> 0 < $146 >>> 0 ? $146 : $152;\n      } else $$0$i$i$i15 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i15, $145, $db + 12 | 0);\n      $155 = $__v$i$i224 + 8 | 0;\n      $156 = HEAP32[$155 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($156, $3);\n      HEAP32[$155 >> 2] = $156 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($3);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   default:\n    {\n     $$0 = $first;\n     break L1;\n    }\n   }\n   break;\n  }\n case 99:\n  {\n   switch (HEAP8[$first + 1 >> 0] | 0) {\n   case 108:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($4, 12965);\n     $162 = $db + 4 | 0;\n     $163 = HEAP32[$162 >> 2] | 0;\n     $165 = HEAP32[$db + 8 >> 2] | 0;\n     if ($163 >>> 0 < $165 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($163, $4);\n      HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + 24;\n     } else {\n      $172 = HEAP32[$db >> 2] | 0;\n      $173 = $163 - $172 | 0;\n      $174 = ($173 | 0) / 24 | 0;\n      $175 = $174 + 1 | 0;\n      if (($173 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $179 = ($165 - $172 | 0) / 24 | 0;\n      if ($179 >>> 0 < 1073741823) {\n       $181 = $179 << 1;\n       $$0$i$i$i20 = $181 >>> 0 < $175 >>> 0 ? $175 : $181;\n      } else $$0$i$i$i20 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i20, $174, $db + 12 | 0);\n      $184 = $__v$i$i224 + 8 | 0;\n      $185 = HEAP32[$184 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($185, $4);\n      HEAP32[$184 >> 2] = $185 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($4);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 109:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($5, 12976);\n     $188 = $db + 4 | 0;\n     $189 = HEAP32[$188 >> 2] | 0;\n     $191 = HEAP32[$db + 8 >> 2] | 0;\n     if ($189 >>> 0 < $191 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($189, $5);\n      HEAP32[$188 >> 2] = (HEAP32[$188 >> 2] | 0) + 24;\n     } else {\n      $198 = HEAP32[$db >> 2] | 0;\n      $199 = $189 - $198 | 0;\n      $200 = ($199 | 0) / 24 | 0;\n      $201 = $200 + 1 | 0;\n      if (($199 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $205 = ($191 - $198 | 0) / 24 | 0;\n      if ($205 >>> 0 < 1073741823) {\n       $207 = $205 << 1;\n       $$0$i$i$i25 = $207 >>> 0 < $201 >>> 0 ? $201 : $207;\n      } else $$0$i$i$i25 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i25, $200, $db + 12 | 0);\n      $210 = $__v$i$i224 + 8 | 0;\n      $211 = HEAP32[$210 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($211, $5);\n      HEAP32[$210 >> 2] = $211 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($5);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 111:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($6, 12986);\n     $214 = $db + 4 | 0;\n     $215 = HEAP32[$214 >> 2] | 0;\n     $217 = HEAP32[$db + 8 >> 2] | 0;\n     if ($215 >>> 0 < $217 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($215, $6);\n      HEAP32[$214 >> 2] = (HEAP32[$214 >> 2] | 0) + 24;\n     } else {\n      $224 = HEAP32[$db >> 2] | 0;\n      $225 = $215 - $224 | 0;\n      $226 = ($225 | 0) / 24 | 0;\n      $227 = $226 + 1 | 0;\n      if (($225 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $231 = ($217 - $224 | 0) / 24 | 0;\n      if ($231 >>> 0 < 1073741823) {\n       $233 = $231 << 1;\n       $$0$i$i$i30 = $233 >>> 0 < $227 >>> 0 ? $227 : $233;\n      } else $$0$i$i$i30 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i30, $226, $db + 12 | 0);\n      $236 = $__v$i$i224 + 8 | 0;\n      $237 = HEAP32[$236 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($237, $6);\n      HEAP32[$236 >> 2] = $237 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($6);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 118:\n    {\n     $240 = $db + 63 | 0;\n     $241 = HEAP8[$240 >> 0] | 0;\n     HEAP8[$240 >> 0] = 0;\n     $242 = $first + 2 | 0;\n     $243 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($242, $last, $db) | 0;\n     HEAP8[$240 >> 0] = $241;\n     if (($243 | 0) == ($242 | 0)) {\n      $$0 = $first;\n      break L1;\n     }\n     $247 = HEAP32[$db + 4 >> 2] | 0;\n     if ((HEAP32[$db >> 2] | 0) == ($247 | 0)) {\n      $$0 = $first;\n      break L1;\n     }\n     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($247 + -24 | 0, 0, 12996) | 0;\n     HEAP8[$db + 60 >> 0] = 1;\n     $$0 = $243;\n     break L1;\n     break;\n    }\n   default:\n    {\n     $$0 = $first;\n     break L1;\n    }\n   }\n   break;\n  }\n case 100:\n  {\n   switch (HEAP8[$first + 1 >> 0] | 0) {\n   case 97:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj18EEERAT__Kc($7, 13006);\n     $254 = $db + 4 | 0;\n     $255 = HEAP32[$254 >> 2] | 0;\n     $257 = HEAP32[$db + 8 >> 2] | 0;\n     if ($255 >>> 0 < $257 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($255, $7);\n      HEAP32[$254 >> 2] = (HEAP32[$254 >> 2] | 0) + 24;\n     } else {\n      $264 = HEAP32[$db >> 2] | 0;\n      $265 = $255 - $264 | 0;\n      $266 = ($265 | 0) / 24 | 0;\n      $267 = $266 + 1 | 0;\n      if (($265 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $271 = ($257 - $264 | 0) / 24 | 0;\n      if ($271 >>> 0 < 1073741823) {\n       $273 = $271 << 1;\n       $$0$i$i$i35 = $273 >>> 0 < $267 >>> 0 ? $267 : $273;\n      } else $$0$i$i$i35 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i35, $266, $db + 12 | 0);\n      $276 = $__v$i$i224 + 8 | 0;\n      $277 = HEAP32[$276 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($277, $7);\n      HEAP32[$276 >> 2] = $277 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($7);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 101:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($8, 13024);\n     $280 = $db + 4 | 0;\n     $281 = HEAP32[$280 >> 2] | 0;\n     $283 = HEAP32[$db + 8 >> 2] | 0;\n     if ($281 >>> 0 < $283 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($281, $8);\n      HEAP32[$280 >> 2] = (HEAP32[$280 >> 2] | 0) + 24;\n     } else {\n      $290 = HEAP32[$db >> 2] | 0;\n      $291 = $281 - $290 | 0;\n      $292 = ($291 | 0) / 24 | 0;\n      $293 = $292 + 1 | 0;\n      if (($291 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $297 = ($283 - $290 | 0) / 24 | 0;\n      if ($297 >>> 0 < 1073741823) {\n       $299 = $297 << 1;\n       $$0$i$i$i40 = $299 >>> 0 < $293 >>> 0 ? $293 : $299;\n      } else $$0$i$i$i40 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i40, $292, $db + 12 | 0);\n      $302 = $__v$i$i224 + 8 | 0;\n      $303 = HEAP32[$302 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($303, $8);\n      HEAP32[$302 >> 2] = $303 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($8);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 108:\n    {\n     $306 = _malloc(16) | 0;\n     HEAP32[$9 + 8 >> 2] = $306;\n     HEAP32[$9 >> 2] = 17;\n     HEAP32[$9 + 4 >> 2] = 15;\n     dest = $306;\n     src = 13034;\n     stop = dest + 15 | 0;\n     do {\n      HEAP8[dest >> 0] = HEAP8[src >> 0] | 0;\n      dest = dest + 1 | 0;\n      src = src + 1 | 0;\n     } while ((dest | 0) < (stop | 0));\n     HEAP8[$306 + 15 >> 0] = 0;\n     $310 = $9 + 12 | 0;\n     HEAP32[$310 >> 2] = 0;\n     HEAP32[$310 + 4 >> 2] = 0;\n     HEAP32[$310 + 8 >> 2] = 0;\n     $313 = $db + 4 | 0;\n     $314 = HEAP32[$313 >> 2] | 0;\n     $316 = HEAP32[$db + 8 >> 2] | 0;\n     if ($314 >>> 0 < $316 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($314, $9);\n      HEAP32[$313 >> 2] = (HEAP32[$313 >> 2] | 0) + 24;\n     } else {\n      $323 = HEAP32[$db >> 2] | 0;\n      $324 = $314 - $323 | 0;\n      $325 = ($324 | 0) / 24 | 0;\n      $326 = $325 + 1 | 0;\n      if (($324 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $330 = ($316 - $323 | 0) / 24 | 0;\n      if ($330 >>> 0 < 1073741823) {\n       $332 = $330 << 1;\n       $$0$i$i$i45 = $332 >>> 0 < $326 >>> 0 ? $326 : $332;\n      } else $$0$i$i$i45 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i45, $325, $db + 12 | 0);\n      $335 = $__v$i$i224 + 8 | 0;\n      $336 = HEAP32[$335 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($336, $9);\n      HEAP32[$335 >> 2] = $336 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($9);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 118:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($10, 13050);\n     $339 = $db + 4 | 0;\n     $340 = HEAP32[$339 >> 2] | 0;\n     $342 = HEAP32[$db + 8 >> 2] | 0;\n     if ($340 >>> 0 < $342 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($340, $10);\n      HEAP32[$339 >> 2] = (HEAP32[$339 >> 2] | 0) + 24;\n     } else {\n      $349 = HEAP32[$db >> 2] | 0;\n      $350 = $340 - $349 | 0;\n      $351 = ($350 | 0) / 24 | 0;\n      $352 = $351 + 1 | 0;\n      if (($350 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $356 = ($342 - $349 | 0) / 24 | 0;\n      if ($356 >>> 0 < 1073741823) {\n       $358 = $356 << 1;\n       $$0$i$i$i50 = $358 >>> 0 < $352 >>> 0 ? $352 : $358;\n      } else $$0$i$i$i50 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i50, $351, $db + 12 | 0);\n      $361 = $__v$i$i224 + 8 | 0;\n      $362 = HEAP32[$361 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($362, $10);\n      HEAP32[$361 >> 2] = $362 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($10);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 86:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($11, 13060);\n     $365 = $db + 4 | 0;\n     $366 = HEAP32[$365 >> 2] | 0;\n     $368 = HEAP32[$db + 8 >> 2] | 0;\n     if ($366 >>> 0 < $368 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($366, $11);\n      HEAP32[$365 >> 2] = (HEAP32[$365 >> 2] | 0) + 24;\n     } else {\n      $375 = HEAP32[$db >> 2] | 0;\n      $376 = $366 - $375 | 0;\n      $377 = ($376 | 0) / 24 | 0;\n      $378 = $377 + 1 | 0;\n      if (($376 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $382 = ($368 - $375 | 0) / 24 | 0;\n      if ($382 >>> 0 < 1073741823) {\n       $384 = $382 << 1;\n       $$0$i$i$i55 = $384 >>> 0 < $378 >>> 0 ? $378 : $384;\n      } else $$0$i$i$i55 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i55, $377, $db + 12 | 0);\n      $387 = $__v$i$i224 + 8 | 0;\n      $388 = HEAP32[$387 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($388, $11);\n      HEAP32[$387 >> 2] = $388 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($11);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   default:\n    {\n     $$0 = $first;\n     break L1;\n    }\n   }\n   break;\n  }\n case 101:\n  {\n   switch (HEAP8[$first + 1 >> 0] | 0) {\n   case 111:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($12, 13071);\n     $394 = $db + 4 | 0;\n     $395 = HEAP32[$394 >> 2] | 0;\n     $397 = HEAP32[$db + 8 >> 2] | 0;\n     if ($395 >>> 0 < $397 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($395, $12);\n      HEAP32[$394 >> 2] = (HEAP32[$394 >> 2] | 0) + 24;\n     } else {\n      $404 = HEAP32[$db >> 2] | 0;\n      $405 = $395 - $404 | 0;\n      $406 = ($405 | 0) / 24 | 0;\n      $407 = $406 + 1 | 0;\n      if (($405 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $411 = ($397 - $404 | 0) / 24 | 0;\n      if ($411 >>> 0 < 1073741823) {\n       $413 = $411 << 1;\n       $$0$i$i$i60 = $413 >>> 0 < $407 >>> 0 ? $407 : $413;\n      } else $$0$i$i$i60 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i60, $406, $db + 12 | 0);\n      $416 = $__v$i$i224 + 8 | 0;\n      $417 = HEAP32[$416 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($417, $12);\n      HEAP32[$416 >> 2] = $417 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($12);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 79:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($13, 13081);\n     $420 = $db + 4 | 0;\n     $421 = HEAP32[$420 >> 2] | 0;\n     $423 = HEAP32[$db + 8 >> 2] | 0;\n     if ($421 >>> 0 < $423 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($421, $13);\n      HEAP32[$420 >> 2] = (HEAP32[$420 >> 2] | 0) + 24;\n     } else {\n      $430 = HEAP32[$db >> 2] | 0;\n      $431 = $421 - $430 | 0;\n      $432 = ($431 | 0) / 24 | 0;\n      $433 = $432 + 1 | 0;\n      if (($431 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $437 = ($423 - $430 | 0) / 24 | 0;\n      if ($437 >>> 0 < 1073741823) {\n       $439 = $437 << 1;\n       $$0$i$i$i65 = $439 >>> 0 < $433 >>> 0 ? $433 : $439;\n      } else $$0$i$i$i65 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i65, $432, $db + 12 | 0);\n      $442 = $__v$i$i224 + 8 | 0;\n      $443 = HEAP32[$442 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($443, $13);\n      HEAP32[$442 >> 2] = $443 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($13);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 113:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($14, 13092);\n     $446 = $db + 4 | 0;\n     $447 = HEAP32[$446 >> 2] | 0;\n     $449 = HEAP32[$db + 8 >> 2] | 0;\n     if ($447 >>> 0 < $449 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($447, $14);\n      HEAP32[$446 >> 2] = (HEAP32[$446 >> 2] | 0) + 24;\n     } else {\n      $456 = HEAP32[$db >> 2] | 0;\n      $457 = $447 - $456 | 0;\n      $458 = ($457 | 0) / 24 | 0;\n      $459 = $458 + 1 | 0;\n      if (($457 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $463 = ($449 - $456 | 0) / 24 | 0;\n      if ($463 >>> 0 < 1073741823) {\n       $465 = $463 << 1;\n       $$0$i$i$i70 = $465 >>> 0 < $459 >>> 0 ? $459 : $465;\n      } else $$0$i$i$i70 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i70, $458, $db + 12 | 0);\n      $468 = $__v$i$i224 + 8 | 0;\n      $469 = HEAP32[$468 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($469, $14);\n      HEAP32[$468 >> 2] = $469 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($14);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   default:\n    {\n     $$0 = $first;\n     break L1;\n    }\n   }\n   break;\n  }\n case 103:\n  {\n   switch (HEAP8[$first + 1 >> 0] | 0) {\n   case 101:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($15, 13103);\n     $475 = $db + 4 | 0;\n     $476 = HEAP32[$475 >> 2] | 0;\n     $478 = HEAP32[$db + 8 >> 2] | 0;\n     if ($476 >>> 0 < $478 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($476, $15);\n      HEAP32[$475 >> 2] = (HEAP32[$475 >> 2] | 0) + 24;\n     } else {\n      $485 = HEAP32[$db >> 2] | 0;\n      $486 = $476 - $485 | 0;\n      $487 = ($486 | 0) / 24 | 0;\n      $488 = $487 + 1 | 0;\n      if (($486 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $492 = ($478 - $485 | 0) / 24 | 0;\n      if ($492 >>> 0 < 1073741823) {\n       $494 = $492 << 1;\n       $$0$i$i$i75 = $494 >>> 0 < $488 >>> 0 ? $488 : $494;\n      } else $$0$i$i$i75 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i75, $487, $db + 12 | 0);\n      $497 = $__v$i$i224 + 8 | 0;\n      $498 = HEAP32[$497 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($498, $15);\n      HEAP32[$497 >> 2] = $498 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($15);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 116:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($16, 13114);\n     $501 = $db + 4 | 0;\n     $502 = HEAP32[$501 >> 2] | 0;\n     $504 = HEAP32[$db + 8 >> 2] | 0;\n     if ($502 >>> 0 < $504 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($502, $16);\n      HEAP32[$501 >> 2] = (HEAP32[$501 >> 2] | 0) + 24;\n     } else {\n      $511 = HEAP32[$db >> 2] | 0;\n      $512 = $502 - $511 | 0;\n      $513 = ($512 | 0) / 24 | 0;\n      $514 = $513 + 1 | 0;\n      if (($512 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $518 = ($504 - $511 | 0) / 24 | 0;\n      if ($518 >>> 0 < 1073741823) {\n       $520 = $518 << 1;\n       $$0$i$i$i80 = $520 >>> 0 < $514 >>> 0 ? $514 : $520;\n      } else $$0$i$i$i80 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i80, $513, $db + 12 | 0);\n      $523 = $__v$i$i224 + 8 | 0;\n      $524 = HEAP32[$523 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($524, $16);\n      HEAP32[$523 >> 2] = $524 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($16);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   default:\n    {\n     $$0 = $first;\n     break L1;\n    }\n   }\n   break;\n  }\n case 105:\n  {\n   if ((HEAP8[$first + 1 >> 0] | 0) != 120) {\n    $$0 = $first;\n    break L1;\n   }\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($17, 13124);\n   $530 = $db + 4 | 0;\n   $531 = HEAP32[$530 >> 2] | 0;\n   $533 = HEAP32[$db + 8 >> 2] | 0;\n   if ($531 >>> 0 < $533 >>> 0) {\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($531, $17);\n    HEAP32[$530 >> 2] = (HEAP32[$530 >> 2] | 0) + 24;\n   } else {\n    $540 = HEAP32[$db >> 2] | 0;\n    $541 = $531 - $540 | 0;\n    $542 = ($541 | 0) / 24 | 0;\n    $543 = $542 + 1 | 0;\n    if (($541 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n    $547 = ($533 - $540 | 0) / 24 | 0;\n    if ($547 >>> 0 < 1073741823) {\n     $549 = $547 << 1;\n     $$0$i$i$i85 = $549 >>> 0 < $543 >>> 0 ? $543 : $549;\n    } else $$0$i$i$i85 = 2147483647;\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i85, $542, $db + 12 | 0);\n    $552 = $__v$i$i224 + 8 | 0;\n    $553 = HEAP32[$552 >> 2] | 0;\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($553, $17);\n    HEAP32[$552 >> 2] = $553 + 24;\n    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n   }\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($17);\n   $$0 = $first + 2 | 0;\n   break L1;\n   break;\n  }\n case 108:\n  {\n   switch (HEAP8[$first + 1 >> 0] | 0) {\n   case 101:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($18, 13135);\n     $559 = $db + 4 | 0;\n     $560 = HEAP32[$559 >> 2] | 0;\n     $562 = HEAP32[$db + 8 >> 2] | 0;\n     if ($560 >>> 0 < $562 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($560, $18);\n      HEAP32[$559 >> 2] = (HEAP32[$559 >> 2] | 0) + 24;\n     } else {\n      $569 = HEAP32[$db >> 2] | 0;\n      $570 = $560 - $569 | 0;\n      $571 = ($570 | 0) / 24 | 0;\n      $572 = $571 + 1 | 0;\n      if (($570 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $576 = ($562 - $569 | 0) / 24 | 0;\n      if ($576 >>> 0 < 1073741823) {\n       $578 = $576 << 1;\n       $$0$i$i$i90 = $578 >>> 0 < $572 >>> 0 ? $572 : $578;\n      } else $$0$i$i$i90 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i90, $571, $db + 12 | 0);\n      $581 = $__v$i$i224 + 8 | 0;\n      $582 = HEAP32[$581 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($582, $18);\n      HEAP32[$581 >> 2] = $582 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($18);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 105:\n    {\n     $585 = $first + 2 | 0;\n     $586 = __ZN10__cxxabiv112_GLOBAL__N_117parse_source_nameINS0_2DbEEEPKcS4_S4_RT_($585, $last, $db) | 0;\n     if (($586 | 0) == ($585 | 0)) {\n      $$0 = $first;\n      break L1;\n     }\n     $590 = HEAP32[$db + 4 >> 2] | 0;\n     if ((HEAP32[$db >> 2] | 0) == ($590 | 0)) {\n      $$0 = $first;\n      break L1;\n     }\n     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($590 + -24 | 0, 0, 13146) | 0;\n     $$0 = $586;\n     break L1;\n     break;\n    }\n   case 115:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($19, 13158);\n     $593 = $db + 4 | 0;\n     $594 = HEAP32[$593 >> 2] | 0;\n     $596 = HEAP32[$db + 8 >> 2] | 0;\n     if ($594 >>> 0 < $596 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($594, $19);\n      HEAP32[$593 >> 2] = (HEAP32[$593 >> 2] | 0) + 24;\n     } else {\n      $603 = HEAP32[$db >> 2] | 0;\n      $604 = $594 - $603 | 0;\n      $605 = ($604 | 0) / 24 | 0;\n      $606 = $605 + 1 | 0;\n      if (($604 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $610 = ($596 - $603 | 0) / 24 | 0;\n      if ($610 >>> 0 < 1073741823) {\n       $612 = $610 << 1;\n       $$0$i$i$i95 = $612 >>> 0 < $606 >>> 0 ? $606 : $612;\n      } else $$0$i$i$i95 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i95, $605, $db + 12 | 0);\n      $615 = $__v$i$i224 + 8 | 0;\n      $616 = HEAP32[$615 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($616, $19);\n      HEAP32[$615 >> 2] = $616 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($19);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 83:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj12EEERAT__Kc($20, 13169);\n     $619 = $db + 4 | 0;\n     $620 = HEAP32[$619 >> 2] | 0;\n     $622 = HEAP32[$db + 8 >> 2] | 0;\n     if ($620 >>> 0 < $622 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($620, $20);\n      HEAP32[$619 >> 2] = (HEAP32[$619 >> 2] | 0) + 24;\n     } else {\n      $629 = HEAP32[$db >> 2] | 0;\n      $630 = $620 - $629 | 0;\n      $631 = ($630 | 0) / 24 | 0;\n      $632 = $631 + 1 | 0;\n      if (($630 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $636 = ($622 - $629 | 0) / 24 | 0;\n      if ($636 >>> 0 < 1073741823) {\n       $638 = $636 << 1;\n       $$0$i$i$i100 = $638 >>> 0 < $632 >>> 0 ? $632 : $638;\n      } else $$0$i$i$i100 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i100, $631, $db + 12 | 0);\n      $641 = $__v$i$i224 + 8 | 0;\n      $642 = HEAP32[$641 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($642, $20);\n      HEAP32[$641 >> 2] = $642 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($20);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 116:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($21, 13181);\n     $645 = $db + 4 | 0;\n     $646 = HEAP32[$645 >> 2] | 0;\n     $648 = HEAP32[$db + 8 >> 2] | 0;\n     if ($646 >>> 0 < $648 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($646, $21);\n      HEAP32[$645 >> 2] = (HEAP32[$645 >> 2] | 0) + 24;\n     } else {\n      $655 = HEAP32[$db >> 2] | 0;\n      $656 = $646 - $655 | 0;\n      $657 = ($656 | 0) / 24 | 0;\n      $658 = $657 + 1 | 0;\n      if (($656 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $662 = ($648 - $655 | 0) / 24 | 0;\n      if ($662 >>> 0 < 1073741823) {\n       $664 = $662 << 1;\n       $$0$i$i$i105 = $664 >>> 0 < $658 >>> 0 ? $658 : $664;\n      } else $$0$i$i$i105 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i105, $657, $db + 12 | 0);\n      $667 = $__v$i$i224 + 8 | 0;\n      $668 = HEAP32[$667 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($668, $21);\n      HEAP32[$667 >> 2] = $668 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($21);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   default:\n    {\n     $$0 = $first;\n     break L1;\n    }\n   }\n   break;\n  }\n case 109:\n  {\n   switch (HEAP8[$first + 1 >> 0] | 0) {\n   case 105:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($22, 13191);\n     $674 = $db + 4 | 0;\n     $675 = HEAP32[$674 >> 2] | 0;\n     $677 = HEAP32[$db + 8 >> 2] | 0;\n     if ($675 >>> 0 < $677 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($675, $22);\n      HEAP32[$674 >> 2] = (HEAP32[$674 >> 2] | 0) + 24;\n     } else {\n      $684 = HEAP32[$db >> 2] | 0;\n      $685 = $675 - $684 | 0;\n      $686 = ($685 | 0) / 24 | 0;\n      $687 = $686 + 1 | 0;\n      if (($685 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $691 = ($677 - $684 | 0) / 24 | 0;\n      if ($691 >>> 0 < 1073741823) {\n       $693 = $691 << 1;\n       $$0$i$i$i110 = $693 >>> 0 < $687 >>> 0 ? $687 : $693;\n      } else $$0$i$i$i110 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i110, $686, $db + 12 | 0);\n      $696 = $__v$i$i224 + 8 | 0;\n      $697 = HEAP32[$696 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($697, $22);\n      HEAP32[$696 >> 2] = $697 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($22);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 73:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($23, 13201);\n     $700 = $db + 4 | 0;\n     $701 = HEAP32[$700 >> 2] | 0;\n     $703 = HEAP32[$db + 8 >> 2] | 0;\n     if ($701 >>> 0 < $703 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($701, $23);\n      HEAP32[$700 >> 2] = (HEAP32[$700 >> 2] | 0) + 24;\n     } else {\n      $710 = HEAP32[$db >> 2] | 0;\n      $711 = $701 - $710 | 0;\n      $712 = ($711 | 0) / 24 | 0;\n      $713 = $712 + 1 | 0;\n      if (($711 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $717 = ($703 - $710 | 0) / 24 | 0;\n      if ($717 >>> 0 < 1073741823) {\n       $719 = $717 << 1;\n       $$0$i$i$i115 = $719 >>> 0 < $713 >>> 0 ? $713 : $719;\n      } else $$0$i$i$i115 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i115, $712, $db + 12 | 0);\n      $722 = $__v$i$i224 + 8 | 0;\n      $723 = HEAP32[$722 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($723, $23);\n      HEAP32[$722 >> 2] = $723 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($23);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 108:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($24, 13024);\n     $726 = $db + 4 | 0;\n     $727 = HEAP32[$726 >> 2] | 0;\n     $729 = HEAP32[$db + 8 >> 2] | 0;\n     if ($727 >>> 0 < $729 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($727, $24);\n      HEAP32[$726 >> 2] = (HEAP32[$726 >> 2] | 0) + 24;\n     } else {\n      $736 = HEAP32[$db >> 2] | 0;\n      $737 = $727 - $736 | 0;\n      $738 = ($737 | 0) / 24 | 0;\n      $739 = $738 + 1 | 0;\n      if (($737 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $743 = ($729 - $736 | 0) / 24 | 0;\n      if ($743 >>> 0 < 1073741823) {\n       $745 = $743 << 1;\n       $$0$i$i$i120 = $745 >>> 0 < $739 >>> 0 ? $739 : $745;\n      } else $$0$i$i$i120 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i120, $738, $db + 12 | 0);\n      $748 = $__v$i$i224 + 8 | 0;\n      $749 = HEAP32[$748 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($749, $24);\n      HEAP32[$748 >> 2] = $749 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($24);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 76:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($25, 13212);\n     $752 = $db + 4 | 0;\n     $753 = HEAP32[$752 >> 2] | 0;\n     $755 = HEAP32[$db + 8 >> 2] | 0;\n     if ($753 >>> 0 < $755 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($753, $25);\n      HEAP32[$752 >> 2] = (HEAP32[$752 >> 2] | 0) + 24;\n     } else {\n      $762 = HEAP32[$db >> 2] | 0;\n      $763 = $753 - $762 | 0;\n      $764 = ($763 | 0) / 24 | 0;\n      $765 = $764 + 1 | 0;\n      if (($763 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $769 = ($755 - $762 | 0) / 24 | 0;\n      if ($769 >>> 0 < 1073741823) {\n       $771 = $769 << 1;\n       $$0$i$i$i125 = $771 >>> 0 < $765 >>> 0 ? $765 : $771;\n      } else $$0$i$i$i125 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i125, $764, $db + 12 | 0);\n      $774 = $__v$i$i224 + 8 | 0;\n      $775 = HEAP32[$774 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($775, $25);\n      HEAP32[$774 >> 2] = $775 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($25);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 109:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($26, 13223);\n     $778 = $db + 4 | 0;\n     $779 = HEAP32[$778 >> 2] | 0;\n     $781 = HEAP32[$db + 8 >> 2] | 0;\n     if ($779 >>> 0 < $781 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($779, $26);\n      HEAP32[$778 >> 2] = (HEAP32[$778 >> 2] | 0) + 24;\n     } else {\n      $788 = HEAP32[$db >> 2] | 0;\n      $789 = $779 - $788 | 0;\n      $790 = ($789 | 0) / 24 | 0;\n      $791 = $790 + 1 | 0;\n      if (($789 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $795 = ($781 - $788 | 0) / 24 | 0;\n      if ($795 >>> 0 < 1073741823) {\n       $797 = $795 << 1;\n       $$0$i$i$i130 = $797 >>> 0 < $791 >>> 0 ? $791 : $797;\n      } else $$0$i$i$i130 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i130, $790, $db + 12 | 0);\n      $800 = $__v$i$i224 + 8 | 0;\n      $801 = HEAP32[$800 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($801, $26);\n      HEAP32[$800 >> 2] = $801 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($26);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   default:\n    {\n     $$0 = $first;\n     break L1;\n    }\n   }\n   break;\n  }\n case 110:\n  {\n   switch (HEAP8[$first + 1 >> 0] | 0) {\n   case 97:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj15EEERAT__Kc($27, 13234);\n     $807 = $db + 4 | 0;\n     $808 = HEAP32[$807 >> 2] | 0;\n     $810 = HEAP32[$db + 8 >> 2] | 0;\n     if ($808 >>> 0 < $810 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($808, $27);\n      HEAP32[$807 >> 2] = (HEAP32[$807 >> 2] | 0) + 24;\n     } else {\n      $817 = HEAP32[$db >> 2] | 0;\n      $818 = $808 - $817 | 0;\n      $819 = ($818 | 0) / 24 | 0;\n      $820 = $819 + 1 | 0;\n      if (($818 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $824 = ($810 - $817 | 0) / 24 | 0;\n      if ($824 >>> 0 < 1073741823) {\n       $826 = $824 << 1;\n       $$0$i$i$i135 = $826 >>> 0 < $820 >>> 0 ? $820 : $826;\n      } else $$0$i$i$i135 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i135, $819, $db + 12 | 0);\n      $829 = $__v$i$i224 + 8 | 0;\n      $830 = HEAP32[$829 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($830, $27);\n      HEAP32[$829 >> 2] = $830 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($27);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 101:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($28, 13249);\n     $833 = $db + 4 | 0;\n     $834 = HEAP32[$833 >> 2] | 0;\n     $836 = HEAP32[$db + 8 >> 2] | 0;\n     if ($834 >>> 0 < $836 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($834, $28);\n      HEAP32[$833 >> 2] = (HEAP32[$833 >> 2] | 0) + 24;\n     } else {\n      $843 = HEAP32[$db >> 2] | 0;\n      $844 = $834 - $843 | 0;\n      $845 = ($844 | 0) / 24 | 0;\n      $846 = $845 + 1 | 0;\n      if (($844 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $850 = ($836 - $843 | 0) / 24 | 0;\n      if ($850 >>> 0 < 1073741823) {\n       $852 = $850 << 1;\n       $$0$i$i$i140 = $852 >>> 0 < $846 >>> 0 ? $846 : $852;\n      } else $$0$i$i$i140 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i140, $845, $db + 12 | 0);\n      $855 = $__v$i$i224 + 8 | 0;\n      $856 = HEAP32[$855 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($856, $28);\n      HEAP32[$855 >> 2] = $856 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($28);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 103:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($29, 13191);\n     $859 = $db + 4 | 0;\n     $860 = HEAP32[$859 >> 2] | 0;\n     $862 = HEAP32[$db + 8 >> 2] | 0;\n     if ($860 >>> 0 < $862 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($860, $29);\n      HEAP32[$859 >> 2] = (HEAP32[$859 >> 2] | 0) + 24;\n     } else {\n      $869 = HEAP32[$db >> 2] | 0;\n      $870 = $860 - $869 | 0;\n      $871 = ($870 | 0) / 24 | 0;\n      $872 = $871 + 1 | 0;\n      if (($870 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $876 = ($862 - $869 | 0) / 24 | 0;\n      if ($876 >>> 0 < 1073741823) {\n       $878 = $876 << 1;\n       $$0$i$i$i145 = $878 >>> 0 < $872 >>> 0 ? $872 : $878;\n      } else $$0$i$i$i145 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i145, $871, $db + 12 | 0);\n      $881 = $__v$i$i224 + 8 | 0;\n      $882 = HEAP32[$881 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($882, $29);\n      HEAP32[$881 >> 2] = $882 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($29);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 116:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($30, 13260);\n     $885 = $db + 4 | 0;\n     $886 = HEAP32[$885 >> 2] | 0;\n     $888 = HEAP32[$db + 8 >> 2] | 0;\n     if ($886 >>> 0 < $888 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($886, $30);\n      HEAP32[$885 >> 2] = (HEAP32[$885 >> 2] | 0) + 24;\n     } else {\n      $895 = HEAP32[$db >> 2] | 0;\n      $896 = $886 - $895 | 0;\n      $897 = ($896 | 0) / 24 | 0;\n      $898 = $897 + 1 | 0;\n      if (($896 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $902 = ($888 - $895 | 0) / 24 | 0;\n      if ($902 >>> 0 < 1073741823) {\n       $904 = $902 << 1;\n       $$0$i$i$i150 = $904 >>> 0 < $898 >>> 0 ? $898 : $904;\n      } else $$0$i$i$i150 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i150, $897, $db + 12 | 0);\n      $907 = $__v$i$i224 + 8 | 0;\n      $908 = HEAP32[$907 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($908, $30);\n      HEAP32[$907 >> 2] = $908 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($30);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 119:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj13EEERAT__Kc($31, 13270);\n     $911 = $db + 4 | 0;\n     $912 = HEAP32[$911 >> 2] | 0;\n     $914 = HEAP32[$db + 8 >> 2] | 0;\n     if ($912 >>> 0 < $914 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($912, $31);\n      HEAP32[$911 >> 2] = (HEAP32[$911 >> 2] | 0) + 24;\n     } else {\n      $921 = HEAP32[$db >> 2] | 0;\n      $922 = $912 - $921 | 0;\n      $923 = ($922 | 0) / 24 | 0;\n      $924 = $923 + 1 | 0;\n      if (($922 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $928 = ($914 - $921 | 0) / 24 | 0;\n      if ($928 >>> 0 < 1073741823) {\n       $930 = $928 << 1;\n       $$0$i$i$i155 = $930 >>> 0 < $924 >>> 0 ? $924 : $930;\n      } else $$0$i$i$i155 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i155, $923, $db + 12 | 0);\n      $933 = $__v$i$i224 + 8 | 0;\n      $934 = HEAP32[$933 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($934, $31);\n      HEAP32[$933 >> 2] = $934 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($31);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   default:\n    {\n     $$0 = $first;\n     break L1;\n    }\n   }\n   break;\n  }\n case 111:\n  {\n   switch (HEAP8[$first + 1 >> 0] | 0) {\n   case 111:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($32, 13283);\n     $940 = $db + 4 | 0;\n     $941 = HEAP32[$940 >> 2] | 0;\n     $943 = HEAP32[$db + 8 >> 2] | 0;\n     if ($941 >>> 0 < $943 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($941, $32);\n      HEAP32[$940 >> 2] = (HEAP32[$940 >> 2] | 0) + 24;\n     } else {\n      $950 = HEAP32[$db >> 2] | 0;\n      $951 = $941 - $950 | 0;\n      $952 = ($951 | 0) / 24 | 0;\n      $953 = $952 + 1 | 0;\n      if (($951 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $957 = ($943 - $950 | 0) / 24 | 0;\n      if ($957 >>> 0 < 1073741823) {\n       $959 = $957 << 1;\n       $$0$i$i$i160 = $959 >>> 0 < $953 >>> 0 ? $953 : $959;\n      } else $$0$i$i$i160 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i160, $952, $db + 12 | 0);\n      $962 = $__v$i$i224 + 8 | 0;\n      $963 = HEAP32[$962 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($963, $32);\n      HEAP32[$962 >> 2] = $963 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($32);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 114:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($33, 13294);\n     $966 = $db + 4 | 0;\n     $967 = HEAP32[$966 >> 2] | 0;\n     $969 = HEAP32[$db + 8 >> 2] | 0;\n     if ($967 >>> 0 < $969 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($967, $33);\n      HEAP32[$966 >> 2] = (HEAP32[$966 >> 2] | 0) + 24;\n     } else {\n      $976 = HEAP32[$db >> 2] | 0;\n      $977 = $967 - $976 | 0;\n      $978 = ($977 | 0) / 24 | 0;\n      $979 = $978 + 1 | 0;\n      if (($977 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $983 = ($969 - $976 | 0) / 24 | 0;\n      if ($983 >>> 0 < 1073741823) {\n       $985 = $983 << 1;\n       $$0$i$i$i165 = $985 >>> 0 < $979 >>> 0 ? $979 : $985;\n      } else $$0$i$i$i165 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i165, $978, $db + 12 | 0);\n      $988 = $__v$i$i224 + 8 | 0;\n      $989 = HEAP32[$988 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($989, $33);\n      HEAP32[$988 >> 2] = $989 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($33);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 82:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($34, 13304);\n     $992 = $db + 4 | 0;\n     $993 = HEAP32[$992 >> 2] | 0;\n     $995 = HEAP32[$db + 8 >> 2] | 0;\n     if ($993 >>> 0 < $995 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($993, $34);\n      HEAP32[$992 >> 2] = (HEAP32[$992 >> 2] | 0) + 24;\n     } else {\n      $1002 = HEAP32[$db >> 2] | 0;\n      $1003 = $993 - $1002 | 0;\n      $1004 = ($1003 | 0) / 24 | 0;\n      $1005 = $1004 + 1 | 0;\n      if (($1003 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $1009 = ($995 - $1002 | 0) / 24 | 0;\n      if ($1009 >>> 0 < 1073741823) {\n       $1011 = $1009 << 1;\n       $$0$i$i$i170 = $1011 >>> 0 < $1005 >>> 0 ? $1005 : $1011;\n      } else $$0$i$i$i170 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i170, $1004, $db + 12 | 0);\n      $1014 = $__v$i$i224 + 8 | 0;\n      $1015 = HEAP32[$1014 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1015, $34);\n      HEAP32[$1014 >> 2] = $1015 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($34);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   default:\n    {\n     $$0 = $first;\n     break L1;\n    }\n   }\n   break;\n  }\n case 112:\n  {\n   switch (HEAP8[$first + 1 >> 0] | 0) {\n   case 109:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj12EEERAT__Kc($35, 13315);\n     $1021 = $db + 4 | 0;\n     $1022 = HEAP32[$1021 >> 2] | 0;\n     $1024 = HEAP32[$db + 8 >> 2] | 0;\n     if ($1022 >>> 0 < $1024 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1022, $35);\n      HEAP32[$1021 >> 2] = (HEAP32[$1021 >> 2] | 0) + 24;\n     } else {\n      $1031 = HEAP32[$db >> 2] | 0;\n      $1032 = $1022 - $1031 | 0;\n      $1033 = ($1032 | 0) / 24 | 0;\n      $1034 = $1033 + 1 | 0;\n      if (($1032 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $1038 = ($1024 - $1031 | 0) / 24 | 0;\n      if ($1038 >>> 0 < 1073741823) {\n       $1040 = $1038 << 1;\n       $$0$i$i$i175 = $1040 >>> 0 < $1034 >>> 0 ? $1034 : $1040;\n      } else $$0$i$i$i175 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i175, $1033, $db + 12 | 0);\n      $1043 = $__v$i$i224 + 8 | 0;\n      $1044 = HEAP32[$1043 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1044, $35);\n      HEAP32[$1043 >> 2] = $1044 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($35);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 108:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($36, 13327);\n     $1047 = $db + 4 | 0;\n     $1048 = HEAP32[$1047 >> 2] | 0;\n     $1050 = HEAP32[$db + 8 >> 2] | 0;\n     if ($1048 >>> 0 < $1050 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1048, $36);\n      HEAP32[$1047 >> 2] = (HEAP32[$1047 >> 2] | 0) + 24;\n     } else {\n      $1057 = HEAP32[$db >> 2] | 0;\n      $1058 = $1048 - $1057 | 0;\n      $1059 = ($1058 | 0) / 24 | 0;\n      $1060 = $1059 + 1 | 0;\n      if (($1058 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $1064 = ($1050 - $1057 | 0) / 24 | 0;\n      if ($1064 >>> 0 < 1073741823) {\n       $1066 = $1064 << 1;\n       $$0$i$i$i180 = $1066 >>> 0 < $1060 >>> 0 ? $1060 : $1066;\n      } else $$0$i$i$i180 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i180, $1059, $db + 12 | 0);\n      $1069 = $__v$i$i224 + 8 | 0;\n      $1070 = HEAP32[$1069 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1070, $36);\n      HEAP32[$1069 >> 2] = $1070 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($36);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 76:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($37, 13337);\n     $1073 = $db + 4 | 0;\n     $1074 = HEAP32[$1073 >> 2] | 0;\n     $1076 = HEAP32[$db + 8 >> 2] | 0;\n     if ($1074 >>> 0 < $1076 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1074, $37);\n      HEAP32[$1073 >> 2] = (HEAP32[$1073 >> 2] | 0) + 24;\n     } else {\n      $1083 = HEAP32[$db >> 2] | 0;\n      $1084 = $1074 - $1083 | 0;\n      $1085 = ($1084 | 0) / 24 | 0;\n      $1086 = $1085 + 1 | 0;\n      if (($1084 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $1090 = ($1076 - $1083 | 0) / 24 | 0;\n      if ($1090 >>> 0 < 1073741823) {\n       $1092 = $1090 << 1;\n       $$0$i$i$i185 = $1092 >>> 0 < $1086 >>> 0 ? $1086 : $1092;\n      } else $$0$i$i$i185 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i185, $1085, $db + 12 | 0);\n      $1095 = $__v$i$i224 + 8 | 0;\n      $1096 = HEAP32[$1095 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1096, $37);\n      HEAP32[$1095 >> 2] = $1096 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($37);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 112:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($38, 13348);\n     $1099 = $db + 4 | 0;\n     $1100 = HEAP32[$1099 >> 2] | 0;\n     $1102 = HEAP32[$db + 8 >> 2] | 0;\n     if ($1100 >>> 0 < $1102 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1100, $38);\n      HEAP32[$1099 >> 2] = (HEAP32[$1099 >> 2] | 0) + 24;\n     } else {\n      $1109 = HEAP32[$db >> 2] | 0;\n      $1110 = $1100 - $1109 | 0;\n      $1111 = ($1110 | 0) / 24 | 0;\n      $1112 = $1111 + 1 | 0;\n      if (($1110 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $1116 = ($1102 - $1109 | 0) / 24 | 0;\n      if ($1116 >>> 0 < 1073741823) {\n       $1118 = $1116 << 1;\n       $$0$i$i$i190 = $1118 >>> 0 < $1112 >>> 0 ? $1112 : $1118;\n      } else $$0$i$i$i190 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i190, $1111, $db + 12 | 0);\n      $1121 = $__v$i$i224 + 8 | 0;\n      $1122 = HEAP32[$1121 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1122, $38);\n      HEAP32[$1121 >> 2] = $1122 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($38);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 115:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($39, 13327);\n     $1125 = $db + 4 | 0;\n     $1126 = HEAP32[$1125 >> 2] | 0;\n     $1128 = HEAP32[$db + 8 >> 2] | 0;\n     if ($1126 >>> 0 < $1128 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1126, $39);\n      HEAP32[$1125 >> 2] = (HEAP32[$1125 >> 2] | 0) + 24;\n     } else {\n      $1135 = HEAP32[$db >> 2] | 0;\n      $1136 = $1126 - $1135 | 0;\n      $1137 = ($1136 | 0) / 24 | 0;\n      $1138 = $1137 + 1 | 0;\n      if (($1136 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $1142 = ($1128 - $1135 | 0) / 24 | 0;\n      if ($1142 >>> 0 < 1073741823) {\n       $1144 = $1142 << 1;\n       $$0$i$i$i195 = $1144 >>> 0 < $1138 >>> 0 ? $1138 : $1144;\n      } else $$0$i$i$i195 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i195, $1137, $db + 12 | 0);\n      $1147 = $__v$i$i224 + 8 | 0;\n      $1148 = HEAP32[$1147 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1148, $39);\n      HEAP32[$1147 >> 2] = $1148 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($39);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 116:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($40, 13359);\n     $1151 = $db + 4 | 0;\n     $1152 = HEAP32[$1151 >> 2] | 0;\n     $1154 = HEAP32[$db + 8 >> 2] | 0;\n     if ($1152 >>> 0 < $1154 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1152, $40);\n      HEAP32[$1151 >> 2] = (HEAP32[$1151 >> 2] | 0) + 24;\n     } else {\n      $1161 = HEAP32[$db >> 2] | 0;\n      $1162 = $1152 - $1161 | 0;\n      $1163 = ($1162 | 0) / 24 | 0;\n      $1164 = $1163 + 1 | 0;\n      if (($1162 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $1168 = ($1154 - $1161 | 0) / 24 | 0;\n      if ($1168 >>> 0 < 1073741823) {\n       $1170 = $1168 << 1;\n       $$0$i$i$i200 = $1170 >>> 0 < $1164 >>> 0 ? $1164 : $1170;\n      } else $$0$i$i$i200 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i200, $1163, $db + 12 | 0);\n      $1173 = $__v$i$i224 + 8 | 0;\n      $1174 = HEAP32[$1173 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1174, $40);\n      HEAP32[$1173 >> 2] = $1174 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($40);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   default:\n    {\n     $$0 = $first;\n     break L1;\n    }\n   }\n   break;\n  }\n case 113:\n  {\n   if ((HEAP8[$first + 1 >> 0] | 0) != 117) {\n    $$0 = $first;\n    break L1;\n   }\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($41, 13370);\n   $1180 = $db + 4 | 0;\n   $1181 = HEAP32[$1180 >> 2] | 0;\n   $1183 = HEAP32[$db + 8 >> 2] | 0;\n   if ($1181 >>> 0 < $1183 >>> 0) {\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1181, $41);\n    HEAP32[$1180 >> 2] = (HEAP32[$1180 >> 2] | 0) + 24;\n   } else {\n    $1190 = HEAP32[$db >> 2] | 0;\n    $1191 = $1181 - $1190 | 0;\n    $1192 = ($1191 | 0) / 24 | 0;\n    $1193 = $1192 + 1 | 0;\n    if (($1191 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n    $1197 = ($1183 - $1190 | 0) / 24 | 0;\n    if ($1197 >>> 0 < 1073741823) {\n     $1199 = $1197 << 1;\n     $$0$i$i$i205 = $1199 >>> 0 < $1193 >>> 0 ? $1193 : $1199;\n    } else $$0$i$i$i205 = 2147483647;\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i205, $1192, $db + 12 | 0);\n    $1202 = $__v$i$i224 + 8 | 0;\n    $1203 = HEAP32[$1202 >> 2] | 0;\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1203, $41);\n    HEAP32[$1202 >> 2] = $1203 + 24;\n    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n   }\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($41);\n   $$0 = $first + 2 | 0;\n   break L1;\n   break;\n  }\n case 114:\n  {\n   switch (HEAP8[$first + 1 >> 0] | 0) {\n   case 109:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($42, 13380);\n     $1209 = $db + 4 | 0;\n     $1210 = HEAP32[$1209 >> 2] | 0;\n     $1212 = HEAP32[$db + 8 >> 2] | 0;\n     if ($1210 >>> 0 < $1212 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1210, $42);\n      HEAP32[$1209 >> 2] = (HEAP32[$1209 >> 2] | 0) + 24;\n     } else {\n      $1219 = HEAP32[$db >> 2] | 0;\n      $1220 = $1210 - $1219 | 0;\n      $1221 = ($1220 | 0) / 24 | 0;\n      $1222 = $1221 + 1 | 0;\n      if (($1220 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $1226 = ($1212 - $1219 | 0) / 24 | 0;\n      if ($1226 >>> 0 < 1073741823) {\n       $1228 = $1226 << 1;\n       $$0$i$i$i210 = $1228 >>> 0 < $1222 >>> 0 ? $1222 : $1228;\n      } else $$0$i$i$i210 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i210, $1221, $db + 12 | 0);\n      $1231 = $__v$i$i224 + 8 | 0;\n      $1232 = HEAP32[$1231 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1232, $42);\n      HEAP32[$1231 >> 2] = $1232 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($42);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 77:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($43, 13390);\n     $1235 = $db + 4 | 0;\n     $1236 = HEAP32[$1235 >> 2] | 0;\n     $1238 = HEAP32[$db + 8 >> 2] | 0;\n     if ($1236 >>> 0 < $1238 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1236, $43);\n      HEAP32[$1235 >> 2] = (HEAP32[$1235 >> 2] | 0) + 24;\n     } else {\n      $1245 = HEAP32[$db >> 2] | 0;\n      $1246 = $1236 - $1245 | 0;\n      $1247 = ($1246 | 0) / 24 | 0;\n      $1248 = $1247 + 1 | 0;\n      if (($1246 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $1252 = ($1238 - $1245 | 0) / 24 | 0;\n      if ($1252 >>> 0 < 1073741823) {\n       $1254 = $1252 << 1;\n       $$0$i$i$i215 = $1254 >>> 0 < $1248 >>> 0 ? $1248 : $1254;\n      } else $$0$i$i$i215 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i215, $1247, $db + 12 | 0);\n      $1257 = $__v$i$i224 + 8 | 0;\n      $1258 = HEAP32[$1257 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1258, $43);\n      HEAP32[$1257 >> 2] = $1258 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($43);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 115:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($44, 13401);\n     $1261 = $db + 4 | 0;\n     $1262 = HEAP32[$1261 >> 2] | 0;\n     $1264 = HEAP32[$db + 8 >> 2] | 0;\n     if ($1262 >>> 0 < $1264 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1262, $44);\n      HEAP32[$1261 >> 2] = (HEAP32[$1261 >> 2] | 0) + 24;\n     } else {\n      $1271 = HEAP32[$db >> 2] | 0;\n      $1272 = $1262 - $1271 | 0;\n      $1273 = ($1272 | 0) / 24 | 0;\n      $1274 = $1273 + 1 | 0;\n      if (($1272 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $1278 = ($1264 - $1271 | 0) / 24 | 0;\n      if ($1278 >>> 0 < 1073741823) {\n       $1280 = $1278 << 1;\n       $$0$i$i$i220 = $1280 >>> 0 < $1274 >>> 0 ? $1274 : $1280;\n      } else $$0$i$i$i220 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i220, $1273, $db + 12 | 0);\n      $1283 = $__v$i$i224 + 8 | 0;\n      $1284 = HEAP32[$1283 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1284, $44);\n      HEAP32[$1283 >> 2] = $1284 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($44);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 83:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj12EEERAT__Kc($45, 13412);\n     $1287 = $db + 4 | 0;\n     $1288 = HEAP32[$1287 >> 2] | 0;\n     $1290 = HEAP32[$db + 8 >> 2] | 0;\n     if ($1288 >>> 0 < $1290 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1288, $45);\n      HEAP32[$1287 >> 2] = (HEAP32[$1287 >> 2] | 0) + 24;\n     } else {\n      $1297 = HEAP32[$db >> 2] | 0;\n      $1298 = $1288 - $1297 | 0;\n      $1299 = ($1298 | 0) / 24 | 0;\n      $1300 = $1299 + 1 | 0;\n      if (($1298 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $1304 = ($1290 - $1297 | 0) / 24 | 0;\n      if ($1304 >>> 0 < 1073741823) {\n       $1306 = $1304 << 1;\n       $$0$i$i$i225 = $1306 >>> 0 < $1300 >>> 0 ? $1300 : $1306;\n      } else $$0$i$i$i225 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i225, $1299, $db + 12 | 0);\n      $1309 = $__v$i$i224 + 8 | 0;\n      $1310 = HEAP32[$1309 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1310, $45);\n      HEAP32[$1309 >> 2] = $1310 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($45);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   default:\n    {\n     $$0 = $first;\n     break L1;\n    }\n   }\n   break;\n  }\n case 118:\n  {\n   if (((HEAP8[$first + 1 >> 0] | 0) + -48 | 0) >>> 0 >= 10) {\n    $$0 = $first;\n    break L1;\n   }\n   $1316 = $first + 2 | 0;\n   $1317 = __ZN10__cxxabiv112_GLOBAL__N_117parse_source_nameINS0_2DbEEEPKcS4_S4_RT_($1316, $last, $db) | 0;\n   if (($1317 | 0) == ($1316 | 0)) {\n    $$0 = $first;\n    break L1;\n   }\n   $1321 = HEAP32[$db + 4 >> 2] | 0;\n   if ((HEAP32[$db >> 2] | 0) == ($1321 | 0)) {\n    $$0 = $first;\n    break L1;\n   }\n   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($1321 + -24 | 0, 0, 12996) | 0;\n   $$0 = $1317;\n   break L1;\n   break;\n  }\n default:\n  {\n   $$0 = $first;\n   break L1;\n  }\n } while (0); else $$0 = $first; while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\nfunction _arPattGetImage2($imageProcMode, $pattDetectMode, $patt_size, $sample_size, $image, $xsize, $ysize, $pixelFormat, $paramLTf, $vertex, $pattRatio, $ext_patt) {\n $imageProcMode = $imageProcMode | 0;\n $pattDetectMode = $pattDetectMode | 0;\n $patt_size = $patt_size | 0;\n $sample_size = $sample_size | 0;\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $pixelFormat = $pixelFormat | 0;\n $paramLTf = $paramLTf | 0;\n $vertex = $vertex | 0;\n $pattRatio = +$pattRatio;\n $ext_patt = $ext_patt | 0;\n var $$0 = 0, $100 = 0, $1001 = 0, $1005 = 0, $1009 = 0, $1012 = 0, $1023 = 0.0, $1028 = 0.0, $103 = 0.0, $1035 = 0.0, $104 = 0.0, $1045 = 0.0, $1054 = 0.0, $1055 = 0.0, $106 = 0, $107 = 0, $1074 = 0, $108 = 0, $1084 = 0, $1090 = 0.0, $1096 = 0.0, $1097 = 0.0, $110 = 0.0, $1101 = 0, $1107 = 0, $111 = 0.0, $1111 = 0, $1113 = 0, $1119 = 0, $112 = 0.0, $1120 = 0, $1124 = 0, $1128 = 0, $113 = 0, $1132 = 0, $1135 = 0, $114 = 0, $1146 = 0.0, $115 = 0, $1151 = 0.0, $1158 = 0.0, $116 = 0, $1168 = 0.0, $117 = 0, $1177 = 0.0, $1178 = 0.0, $118 = 0, $119 = 0, $1199 = 0, $120 = 0, $1203 = 0, $121 = 0, $1211 = 0, $1212 = 0, $1217 = 0, $1225 = 0, $123 = 0, $1231 = 0, $124 = 0.0, $1242 = 0.0, $1247 = 0.0, $125 = 0.0, $1254 = 0.0, $126 = 0.0, $1264 = 0.0, $127 = 0, $1273 = 0.0, $1274 = 0.0, $128 = 0, $129 = 0, $1295 = 0, $1299 = 0, $130 = 0, $1307 = 0, $1308 = 0, $131 = 0, $1313 = 0, $132 = 0, $1321 = 0, $1327 = 0, $133 = 0, $1338 = 0.0, $134 = 0, $1343 = 0.0, $135 = 0, $1350 = 0.0, $1360 = 0.0, $1369 = 0.0, $137 = 0, $1370 = 0.0, $138 = 0.0, $139 = 0.0, $1391 = 0, $140 = 0.0, $1402 = 0, $1403 = 0, $1408 = 0, $141 = 0, $1413 = 0, $1419 = 0, $142 = 0, $143 = 0, $1433 = 0, $1436 = 0.0, $1437 = 0.0, $1438 = 0.0, $1439 = 0, $144 = 0, $1440 = 0, $1441 = 0, $1442 = 0, $1443 = 0, $1444 = 0, $1445 = 0, $1446 = 0, $1447 = 0, $1449 = 0, $145 = 0, $1450 = 0, $1456 = 0.0, $146 = 0, $1461 = 0.0, $1468 = 0.0, $147 = 0, $1478 = 0.0, $148 = 0, $1487 = 0.0, $1488 = 0.0, $149 = 0, $1509 = 0, $151 = 0, $152 = 0.0, $1528 = 0, $153 = 0.0, $1537 = 0.0, $1538 = 0.0, $1539 = 0.0, $154 = 0.0, $1540 = 0, $1541 = 0, $1542 = 0, $1543 = 0, $1544 = 0, $1545 = 0, $1546 = 0, $1547 = 0, $1548 = 0, $155 = 0, $1550 = 0, $1555 = 0.0, $156 = 0, $1560 = 0.0, $1567 = 0.0, $157 = 0, $1577 = 0.0, $158 = 0, $1586 = 0.0, $1587 = 0.0, $159 = 0, $160 = 0, $1608 = 0, $161 = 0, $162 = 0, $1627 = 0, $163 = 0, $1636 = 0.0, $1637 = 0.0, $1638 = 0.0, $1639 = 0, $1640 = 0, $1641 = 0, $1642 = 0, $1643 = 0, $1644 = 0, $1645 = 0, $1646 = 0, $1647 = 0, $1649 = 0, $165 = 0, $1654 = 0.0, $1659 = 0.0, $166 = 0.0, $1666 = 0.0, $167 = 0.0, $1676 = 0.0, $168 = 0.0, $1685 = 0.0, $1686 = 0.0, $169 = 0, $170 = 0, $1707 = 0, $171 = 0, $172 = 0, $1727 = 0, $173 = 0, $1734 = 0.0, $1735 = 0.0, $1736 = 0.0, $1737 = 0, $1738 = 0, $1739 = 0, $174 = 0, $1740 = 0, $1741 = 0, $1742 = 0, $1743 = 0, $1744 = 0, $1745 = 0, $1747 = 0, $1748 = 0.0, $1749 = 0.0, $175 = 0, $1750 = 0.0, $1751 = 0, $1752 = 0, $1753 = 0, $1754 = 0, $1755 = 0, $1756 = 0, $1757 = 0, $1758 = 0, $1759 = 0, $176 = 0, $1761 = 0, $1762 = 0.0, $1763 = 0.0, $1764 = 0.0, $1765 = 0, $1766 = 0, $1767 = 0, $1768 = 0, $1769 = 0, $177 = 0, $1770 = 0, $1771 = 0, $1772 = 0, $1773 = 0, $1775 = 0, $1776 = 0.0, $1777 = 0.0, $1778 = 0.0, $1779 = 0, $1780 = 0, $1781 = 0, $1782 = 0, $1783 = 0, $1784 = 0, $1785 = 0, $1786 = 0, $1787 = 0, $1789 = 0, $179 = 0, $1790 = 0.0, $1791 = 0.0, $1792 = 0.0, $1793 = 0, $1794 = 0, $1795 = 0, $1796 = 0, $1797 = 0, $1798 = 0, $1799 = 0, $180 = 0.0, $1800 = 0, $1801 = 0, $1803 = 0, $1804 = 0.0, $1805 = 0.0, $1806 = 0.0, $1807 = 0, $1808 = 0, $1809 = 0, $181 = 0.0, $1810 = 0, $1811 = 0, $1812 = 0, $1813 = 0, $1814 = 0, $1815 = 0, $1817 = 0, $182 = 0.0, $1822 = 0.0, $1827 = 0.0, $183 = 0, $1834 = 0.0, $184 = 0, $1844 = 0.0, $185 = 0, $1853 = 0.0, $1854 = 0.0, $186 = 0, $187 = 0, $1875 = 0, $188 = 0, $1882 = 0, $189 = 0, $1893 = 0.0, $1898 = 0.0, $190 = 0, $1905 = 0.0, $191 = 0, $1915 = 0.0, $1924 = 0.0, $1925 = 0.0, $193 = 0, $194 = 0.0, $1948 = 0, $195 = 0.0, $1955 = 0, $196 = 0.0, $1966 = 0.0, $197 = 0, $1971 = 0.0, $1978 = 0.0, $198 = 0, $1988 = 0.0, $199 = 0, $1997 = 0.0, $1998 = 0.0, $200 = 0, $201 = 0, $202 = 0, $2020 = 0, $2027 = 0, $203 = 0, $2038 = 0.0, $204 = 0, $2043 = 0.0, $205 = 0, $2050 = 0.0, $2060 = 0.0, $2069 = 0.0, $207 = 0, $2070 = 0.0, $208 = 0.0, $209 = 0.0, $2091 = 0, $2094 = 0, $210 = 0.0, $2102 = 0, $211 = 0, $2117 = 0, $212 = 0, $2128 = 0.0, $213 = 0, $2133 = 0.0, $214 = 0, $2140 = 0.0, $215 = 0, $2150 = 0.0, $2159 = 0.0, $216 = 0, $2160 = 0.0, $217 = 0, $218 = 0, $2181 = 0, $2184 = 0, $219 = 0, $2192 = 0, $2207 = 0, $221 = 0, $2218 = 0.0, $222 = 0.0, $2223 = 0.0, $223 = 0.0, $2230 = 0.0, $224 = 0.0, $2240 = 0.0, $2249 = 0.0, $225 = 0, $2250 = 0.0, $226 = 0, $227 = 0, $2271 = 0, $2274 = 0, $228 = 0, $229 = 0, $2293 = 0, $230 = 0, $231 = 0, $232 = 0, $233 = 0, $235 = 0, $236 = 0.0, $237 = 0.0, $238 = 0.0, $239 = 0, $240 = 0, $241 = 0, $242 = 0, $243 = 0, $244 = 0, $245 = 0, $246 = 0, $247 = 0, $249 = 0, $250 = 0.0, $251 = 0.0, $252 = 0.0, $253 = 0, $254 = 0, $255 = 0, $256 = 0, $257 = 0, $258 = 0, $259 = 0, $260 = 0, $261 = 0, $263 = 0, $264 = 0.0, $265 = 0.0, $266 = 0.0, $267 = 0, $268 = 0, $269 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0, $277 = 0, $278 = 0, $284 = 0.0, $289 = 0.0, $29 = 0.0, $296 = 0.0, $306 = 0.0, $31 = 0.0, $315 = 0.0, $316 = 0.0, $32 = 0.0, $337 = 0, $346 = 0, $347 = 0, $35 = 0.0, $355 = 0, $362 = 0, $37 = 0.0, $373 = 0.0, $378 = 0.0, $38 = 0.0, $385 = 0.0, $395 = 0.0, $404 = 0.0, $405 = 0.0, $41 = 0, $426 = 0, $43 = 0.0, $434 = 0, $435 = 0, $443 = 0, $45 = 0.0, $451 = 0, $46 = 0.0, $462 = 0.0, $467 = 0.0, $474 = 0.0, $484 = 0.0, $49 = 0.0, $493 = 0.0, $494 = 0.0, $51 = 0.0, $515 = 0, $52 = 0.0, $524 = 0, $525 = 0, $533 = 0, $540 = 0, $55 = 0, $551 = 0.0, $556 = 0.0, $56 = 0.0, $563 = 0.0, $573 = 0.0, $58 = 0.0, $582 = 0.0, $583 = 0.0, $604 = 0, $61 = 0, $612 = 0, $613 = 0, $62 = 0.0, $621 = 0, $629 = 0, $64 = 0.0, $640 = 0.0, $645 = 0.0, $652 = 0.0, $662 = 0.0, $67 = 0, $671 = 0.0, $672 = 0.0, $693 = 0, $702 = 0, $703 = 0, $711 = 0, $719 = 0, $73 = 0, $730 = 0.0, $735 = 0.0, $742 = 0.0, $752 = 0.0, $761 = 0.0, $762 = 0.0, $77 = 0, $783 = 0, $785 = 0, $790 = 0, $791 = 0, $795 = 0, $799 = 0, $810 = 0.0, $815 = 0.0, $822 = 0.0, $832 = 0.0, $841 = 0.0, $842 = 0.0, $863 = 0, $872 = 0, $873 = 0, $881 = 0, $889 = 0, $900 = 0.0, $905 = 0.0, $912 = 0.0, $922 = 0.0, $931 = 0.0, $932 = 0.0, $951 = 0, $954 = 0, $959 = 0.0, $973 = 0.0, $974 = 0.0, $978 = 0, $984 = 0, $988 = 0, $99 = 0, $990 = 0, $996 = 0, $997 = 0, $ext_patt2$0 = 0, $i$10291 = 0, $i$11297 = 0, $i$12303 = 0, $i$1237 = 0, $i$13236 = 0, $i$14312 = 0, $i$15318 = 0, $i$16324 = 0, $i$17330 = 0, $i$18336 = 0, $i$19342 = 0, $i$20348 = 0, $i$21354 = 0, $i$22360 = 0, $i$2243 = 0, $i$23309 = 0, $i$3249 = 0, $i$4255 = 0, $i$5261 = 0, $i$6267 = 0, $i$7273 = 0, $i$8279 = 0, $i$9285 = 0, $j$0241 = 0, $j$10301 = 0, $j$11307 = 0, $j$12316 = 0, $j$1247 = 0, $j$13322 = 0, $j$14328 = 0, $j$15334 = 0, $j$16340 = 0, $j$17346 = 0, $j$18352 = 0, $j$19358 = 0, $j$20364 = 0, $j$2253 = 0, $j$3259 = 0, $j$4265 = 0, $j$5271 = 0, $j$6277 = 0, $j$7283 = 0, $j$8289 = 0, $j$9295 = 0, $local = 0, $para = 0, $sample_size$xdiv2$2 = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, $vararg_buffer3 = 0, $vararg_buffer5 = 0, $world = 0, $xc$0 = 0, $xc$1 = 0, $xc$10 = 0, $xc$11 = 0, $xc$12 = 0, $xc$13 = 0, $xc$14 = 0, $xc$15 = 0, $xc$16 = 0, $xc$17 = 0, $xc$18 = 0, $xc$19 = 0, $xc$2 = 0, $xc$20 = 0, $xc$3 = 0, $xc$4 = 0, $xc$5 = 0, $xc$6 = 0, $xc$7 = 0, $xc$8 = 0, $xc$9 = 0, $xc2 = 0, $xdiv2$0 = 0, $xdiv2$0$lcssa = 0, $xdiv2$1 = 0, $xdiv2$1$lcssa = 0, $xdiv2$2 = 0, $yc$0 = 0, $yc$1 = 0, $yc$10 = 0, $yc$11 = 0, $yc$12 = 0, $yc$13 = 0, $yc$14 = 0, $yc$15 = 0, $yc$16 = 0, $yc$17 = 0, $yc$18 = 0, $yc$19 = 0, $yc$2 = 0, $yc$20 = 0, $yc$3 = 0, $yc$4 = 0, $yc$5 = 0, $yc$6 = 0, $yc$7 = 0, $yc$8 = 0, $yc$9 = 0, $yc2 = 0, $ydiv2$0 = 0, $ydiv2$1 = 0, $ydiv2$2 = 0, $ydiv2$3 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 240 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer5 = sp + 224 | 0;\n $vararg_buffer3 = sp + 216 | 0;\n $vararg_buffer1 = sp + 208 | 0;\n $vararg_buffer = sp + 200 | 0;\n $world = sp + 136 | 0;\n $local = sp + 72 | 0;\n $para = sp;\n $xc2 = sp + 232 | 0;\n $yc2 = sp + 228 | 0;\n HEAPF64[$world >> 3] = 100.0;\n HEAPF64[$world + 8 >> 3] = 100.0;\n HEAPF64[$world + 16 >> 3] = 110.0;\n HEAPF64[$world + 24 >> 3] = 100.0;\n HEAPF64[$world + 32 >> 3] = 110.0;\n HEAPF64[$world + 40 >> 3] = 110.0;\n HEAPF64[$world + 48 >> 3] = 100.0;\n HEAPF64[$world + 56 >> 3] = 110.0;\n HEAPF64[$local >> 3] = +HEAPF64[$vertex >> 3];\n HEAPF64[$local + 8 >> 3] = +HEAPF64[$vertex + 8 >> 3];\n HEAPF64[$local + 16 >> 3] = +HEAPF64[$vertex + 16 >> 3];\n HEAPF64[$local + 24 >> 3] = +HEAPF64[$vertex + 24 >> 3];\n HEAPF64[$local + 32 >> 3] = +HEAPF64[$vertex + 32 >> 3];\n HEAPF64[$local + 40 >> 3] = +HEAPF64[$vertex + 40 >> 3];\n HEAPF64[$local + 48 >> 3] = +HEAPF64[$vertex + 48 >> 3];\n HEAPF64[$local + 56 >> 3] = +HEAPF64[$vertex + 56 >> 3];\n _get_cpara($world, $local, $para);\n $29 = +HEAPF64[$local >> 3];\n $31 = +HEAPF64[$local + 16 >> 3];\n $32 = $29 - $31;\n $35 = +HEAPF64[$local + 8 >> 3];\n $37 = +HEAPF64[$local + 24 >> 3];\n $38 = $35 - $37;\n $41 = ~~($32 * $32 + $38 * $38);\n $43 = +HEAPF64[$local + 32 >> 3];\n $45 = +HEAPF64[$local + 48 >> 3];\n $46 = $43 - $45;\n $49 = +HEAPF64[$local + 40 >> 3];\n $51 = +HEAPF64[$local + 56 >> 3];\n $52 = $49 - $51;\n $55 = ~~($46 * $46 + $52 * $52);\n $56 = $31 - $43;\n $58 = $37 - $49;\n $61 = ~~($56 * $56 + $58 * $58);\n $62 = $45 - $29;\n $64 = $51 - $35;\n $67 = ~~($62 * $62 + $64 * $64);\n $73 = ~~(+((($55 | 0) > ($41 | 0) ? $55 : $41) | 0) * $pattRatio * $pattRatio);\n $77 = ~~(+((($67 | 0) > ($61 | 0) ? $67 : $61) | 0) * $pattRatio * $pattRatio);\n if (!$imageProcMode) {\n  $xdiv2$0 = $patt_size;\n  while (1) if (($xdiv2$0 | 0) < ($sample_size | 0) & (Math_imul($xdiv2$0, $xdiv2$0) | 0) < ($73 | 0)) $xdiv2$0 = $xdiv2$0 << 1; else {\n   $xdiv2$0$lcssa = $xdiv2$0;\n   break;\n  }\n  $ydiv2$0 = $patt_size;\n  while (1) if (($ydiv2$0 | 0) < ($sample_size | 0) & (Math_imul($ydiv2$0, $ydiv2$0) | 0) < ($77 | 0)) $ydiv2$0 = $ydiv2$0 << 1; else {\n   $xdiv2$2 = $xdiv2$0$lcssa;\n   $ydiv2$2 = $ydiv2$0;\n   break;\n  }\n } else {\n  $xdiv2$1 = $patt_size;\n  while (1) if (($xdiv2$1 | 0) < ($sample_size | 0) & (Math_imul($xdiv2$1 << 2, $xdiv2$1) | 0) < ($73 | 0)) $xdiv2$1 = $xdiv2$1 << 1; else {\n   $xdiv2$1$lcssa = $xdiv2$1;\n   break;\n  }\n  $ydiv2$1 = $patt_size;\n  while (1) if (($ydiv2$1 | 0) < ($sample_size | 0) & (Math_imul($ydiv2$1 << 2, $ydiv2$1) | 0) < ($77 | 0)) $ydiv2$1 = $ydiv2$1 << 1; else {\n   $xdiv2$2 = $xdiv2$1$lcssa;\n   $ydiv2$2 = $ydiv2$1;\n   break;\n  }\n }\n $sample_size$xdiv2$2 = ($xdiv2$2 | 0) > ($sample_size | 0) ? $sample_size : $xdiv2$2;\n $ydiv2$3 = ($ydiv2$2 | 0) > ($sample_size | 0) ? $sample_size : $ydiv2$2;\n $99 = ($sample_size$xdiv2$2 | 0) / ($patt_size | 0) | 0;\n $100 = ($ydiv2$3 | 0) / ($patt_size | 0) | 0;\n $103 = (1.0 - $pattRatio) * .5 * 10.0;\n $104 = $pattRatio * 10.0;\n $106 = Math_imul($patt_size, $patt_size) | 0;\n L13 : do if (!$pattDetectMode) {\n  $107 = $106 * 3 | 0;\n  $108 = _calloc($107, 4) | 0;\n  if (!$108) {\n   _arLog(3, 5471, $vararg_buffer);\n   _exit(1);\n  }\n  do switch ($pixelFormat | 0) {\n  case 0:\n   {\n    $264 = $103 + 100.0;\n    $265 = +($ydiv2$3 | 0);\n    $266 = +($sample_size$xdiv2$2 | 0);\n    $267 = $para + 48 | 0;\n    $268 = $para + 56 | 0;\n    $269 = $para + 64 | 0;\n    $270 = $para + 8 | 0;\n    $271 = $para + 16 | 0;\n    $272 = $para + 24 | 0;\n    $273 = $para + 32 | 0;\n    $274 = $para + 40 | 0;\n    $275 = ($imageProcMode | 0) == 1;\n    if (($ydiv2$3 | 0) > 0) {\n     $277 = ($sample_size$xdiv2$2 | 0) > 0;\n     $j$0241 = 0;\n     do {\n      $284 = $264 + $104 * (+($j$0241 | 0) + .5) / $265;\n      if ($277) {\n       $i$1237 = 0;\n       do {\n        $289 = $264 + $104 * (+($i$1237 | 0) + .5) / $266;\n        $296 = +HEAPF64[$269 >> 3] + (+HEAPF64[$267 >> 3] * $289 + $284 * +HEAPF64[$268 >> 3]);\n        if ($296 == 0.0) {\n         $ext_patt2$0 = $108;\n         label = 278;\n         break L13;\n        }\n        $306 = (+HEAPF64[$271 >> 3] + ($289 * +HEAPF64[$para >> 3] + $284 * +HEAPF64[$270 >> 3])) / $296;\n        HEAPF32[$xc2 >> 2] = $306;\n        $315 = (+HEAPF64[$274 >> 3] + ($289 * +HEAPF64[$272 >> 3] + $284 * +HEAPF64[$273 >> 3])) / $296;\n        HEAPF32[$yc2 >> 2] = $315;\n        _arParamIdeal2ObservLTf($paramLTf, $306, $315, $xc2, $yc2) | 0;\n        $316 = +HEAPF32[$xc2 >> 2];\n        if ($275) {\n         $xc$0 = ((~~($316 + 1.0) | 0) / 2 | 0) << 1;\n         $yc$0 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;\n        } else {\n         $xc$0 = ~~($316 + .5);\n         $yc$0 = ~~(+HEAPF32[$yc2 >> 2] + .5);\n        }\n        if (($xc$0 | 0) > -1) if (($yc$0 | 0) < ($ysize | 0) & (($yc$0 | 0) > -1 & ($xc$0 | 0) < ($xsize | 0))) {\n         $337 = ((Math_imul($yc$0, $xsize) | 0) + $xc$0 | 0) * 3 | 0;\n         $346 = ((Math_imul(($j$0241 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$1237 | 0) / ($99 | 0) | 0) | 0) * 3 | 0;\n         $347 = $108 + ($346 << 2) | 0;\n         HEAP32[$347 >> 2] = (HEAP32[$347 >> 2] | 0) + (HEAPU8[$image + ($337 + 2) >> 0] | 0);\n         $355 = $108 + ($346 + 1 << 2) | 0;\n         HEAP32[$355 >> 2] = (HEAP32[$355 >> 2] | 0) + (HEAPU8[$image + ($337 + 1) >> 0] | 0);\n         $362 = $108 + ($346 + 2 << 2) | 0;\n         HEAP32[$362 >> 2] = (HEAP32[$362 >> 2] | 0) + (HEAPU8[$image + $337 >> 0] | 0);\n        }\n        $i$1237 = $i$1237 + 1 | 0;\n       } while (($i$1237 | 0) < ($sample_size$xdiv2$2 | 0));\n      }\n      $j$0241 = $j$0241 + 1 | 0;\n     } while (($j$0241 | 0) < ($ydiv2$3 | 0));\n    }\n    break;\n   }\n  case 1:\n   {\n    $250 = $103 + 100.0;\n    $251 = +($ydiv2$3 | 0);\n    $252 = +($sample_size$xdiv2$2 | 0);\n    $253 = $para + 48 | 0;\n    $254 = $para + 56 | 0;\n    $255 = $para + 64 | 0;\n    $256 = $para + 8 | 0;\n    $257 = $para + 16 | 0;\n    $258 = $para + 24 | 0;\n    $259 = $para + 32 | 0;\n    $260 = $para + 40 | 0;\n    $261 = ($imageProcMode | 0) == 1;\n    if (($ydiv2$3 | 0) > 0) {\n     $263 = ($sample_size$xdiv2$2 | 0) > 0;\n     $j$1247 = 0;\n     do {\n      $373 = $250 + $104 * (+($j$1247 | 0) + .5) / $251;\n      if ($263) {\n       $i$2243 = 0;\n       do {\n        $378 = $250 + $104 * (+($i$2243 | 0) + .5) / $252;\n        $385 = +HEAPF64[$255 >> 3] + (+HEAPF64[$253 >> 3] * $378 + $373 * +HEAPF64[$254 >> 3]);\n        if ($385 == 0.0) {\n         $ext_patt2$0 = $108;\n         label = 278;\n         break L13;\n        }\n        $395 = (+HEAPF64[$257 >> 3] + ($378 * +HEAPF64[$para >> 3] + $373 * +HEAPF64[$256 >> 3])) / $385;\n        HEAPF32[$xc2 >> 2] = $395;\n        $404 = (+HEAPF64[$260 >> 3] + ($378 * +HEAPF64[$258 >> 3] + $373 * +HEAPF64[$259 >> 3])) / $385;\n        HEAPF32[$yc2 >> 2] = $404;\n        _arParamIdeal2ObservLTf($paramLTf, $395, $404, $xc2, $yc2) | 0;\n        $405 = +HEAPF32[$xc2 >> 2];\n        if ($261) {\n         $xc$1 = ((~~($405 + 1.0) | 0) / 2 | 0) << 1;\n         $yc$1 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;\n        } else {\n         $xc$1 = ~~($405 + .5);\n         $yc$1 = ~~(+HEAPF32[$yc2 >> 2] + .5);\n        }\n        if (($xc$1 | 0) > -1) if (($yc$1 | 0) < ($ysize | 0) & (($yc$1 | 0) > -1 & ($xc$1 | 0) < ($xsize | 0))) {\n         $426 = ((Math_imul($yc$1, $xsize) | 0) + $xc$1 | 0) * 3 | 0;\n         $434 = ((Math_imul(($j$1247 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$2243 | 0) / ($99 | 0) | 0) | 0) * 3 | 0;\n         $435 = $108 + ($434 << 2) | 0;\n         HEAP32[$435 >> 2] = (HEAP32[$435 >> 2] | 0) + (HEAPU8[$image + $426 >> 0] | 0);\n         $443 = $108 + ($434 + 1 << 2) | 0;\n         HEAP32[$443 >> 2] = (HEAP32[$443 >> 2] | 0) + (HEAPU8[$image + ($426 + 1) >> 0] | 0);\n         $451 = $108 + ($434 + 2 << 2) | 0;\n         HEAP32[$451 >> 2] = (HEAP32[$451 >> 2] | 0) + (HEAPU8[$image + ($426 + 2) >> 0] | 0);\n        }\n        $i$2243 = $i$2243 + 1 | 0;\n       } while (($i$2243 | 0) < ($sample_size$xdiv2$2 | 0));\n      }\n      $j$1247 = $j$1247 + 1 | 0;\n     } while (($j$1247 | 0) < ($ydiv2$3 | 0));\n    }\n    break;\n   }\n  case 2:\n   {\n    $236 = $103 + 100.0;\n    $237 = +($ydiv2$3 | 0);\n    $238 = +($sample_size$xdiv2$2 | 0);\n    $239 = $para + 48 | 0;\n    $240 = $para + 56 | 0;\n    $241 = $para + 64 | 0;\n    $242 = $para + 8 | 0;\n    $243 = $para + 16 | 0;\n    $244 = $para + 24 | 0;\n    $245 = $para + 32 | 0;\n    $246 = $para + 40 | 0;\n    $247 = ($imageProcMode | 0) == 1;\n    if (($ydiv2$3 | 0) > 0) {\n     $249 = ($sample_size$xdiv2$2 | 0) > 0;\n     $j$2253 = 0;\n     do {\n      $462 = $236 + $104 * (+($j$2253 | 0) + .5) / $237;\n      if ($249) {\n       $i$3249 = 0;\n       do {\n        $467 = $236 + $104 * (+($i$3249 | 0) + .5) / $238;\n        $474 = +HEAPF64[$241 >> 3] + (+HEAPF64[$239 >> 3] * $467 + $462 * +HEAPF64[$240 >> 3]);\n        if ($474 == 0.0) {\n         $ext_patt2$0 = $108;\n         label = 278;\n         break L13;\n        }\n        $484 = (+HEAPF64[$243 >> 3] + ($467 * +HEAPF64[$para >> 3] + $462 * +HEAPF64[$242 >> 3])) / $474;\n        HEAPF32[$xc2 >> 2] = $484;\n        $493 = (+HEAPF64[$246 >> 3] + ($467 * +HEAPF64[$244 >> 3] + $462 * +HEAPF64[$245 >> 3])) / $474;\n        HEAPF32[$yc2 >> 2] = $493;\n        _arParamIdeal2ObservLTf($paramLTf, $484, $493, $xc2, $yc2) | 0;\n        $494 = +HEAPF32[$xc2 >> 2];\n        if ($247) {\n         $xc$2 = ((~~($494 + 1.0) | 0) / 2 | 0) << 1;\n         $yc$2 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;\n        } else {\n         $xc$2 = ~~($494 + .5);\n         $yc$2 = ~~(+HEAPF32[$yc2 >> 2] + .5);\n        }\n        if (($xc$2 | 0) > -1) if (($yc$2 | 0) < ($ysize | 0) & (($yc$2 | 0) > -1 & ($xc$2 | 0) < ($xsize | 0))) {\n         $515 = (Math_imul($yc$2, $xsize) | 0) + $xc$2 << 2;\n         $524 = ((Math_imul(($j$2253 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$3249 | 0) / ($99 | 0) | 0) | 0) * 3 | 0;\n         $525 = $108 + ($524 << 2) | 0;\n         HEAP32[$525 >> 2] = (HEAP32[$525 >> 2] | 0) + (HEAPU8[$image + ($515 | 2) >> 0] | 0);\n         $533 = $108 + ($524 + 1 << 2) | 0;\n         HEAP32[$533 >> 2] = (HEAP32[$533 >> 2] | 0) + (HEAPU8[$image + ($515 | 1) >> 0] | 0);\n         $540 = $108 + ($524 + 2 << 2) | 0;\n         HEAP32[$540 >> 2] = (HEAP32[$540 >> 2] | 0) + (HEAPU8[$image + $515 >> 0] | 0);\n        }\n        $i$3249 = $i$3249 + 1 | 0;\n       } while (($i$3249 | 0) < ($sample_size$xdiv2$2 | 0));\n      }\n      $j$2253 = $j$2253 + 1 | 0;\n     } while (($j$2253 | 0) < ($ydiv2$3 | 0));\n    }\n    break;\n   }\n  case 3:\n   {\n    $222 = $103 + 100.0;\n    $223 = +($ydiv2$3 | 0);\n    $224 = +($sample_size$xdiv2$2 | 0);\n    $225 = $para + 48 | 0;\n    $226 = $para + 56 | 0;\n    $227 = $para + 64 | 0;\n    $228 = $para + 8 | 0;\n    $229 = $para + 16 | 0;\n    $230 = $para + 24 | 0;\n    $231 = $para + 32 | 0;\n    $232 = $para + 40 | 0;\n    $233 = ($imageProcMode | 0) == 1;\n    if (($ydiv2$3 | 0) > 0) {\n     $235 = ($sample_size$xdiv2$2 | 0) > 0;\n     $j$3259 = 0;\n     do {\n      $551 = $222 + $104 * (+($j$3259 | 0) + .5) / $223;\n      if ($235) {\n       $i$4255 = 0;\n       do {\n        $556 = $222 + $104 * (+($i$4255 | 0) + .5) / $224;\n        $563 = +HEAPF64[$227 >> 3] + (+HEAPF64[$225 >> 3] * $556 + $551 * +HEAPF64[$226 >> 3]);\n        if ($563 == 0.0) {\n         $ext_patt2$0 = $108;\n         label = 278;\n         break L13;\n        }\n        $573 = (+HEAPF64[$229 >> 3] + ($556 * +HEAPF64[$para >> 3] + $551 * +HEAPF64[$228 >> 3])) / $563;\n        HEAPF32[$xc2 >> 2] = $573;\n        $582 = (+HEAPF64[$232 >> 3] + ($556 * +HEAPF64[$230 >> 3] + $551 * +HEAPF64[$231 >> 3])) / $563;\n        HEAPF32[$yc2 >> 2] = $582;\n        _arParamIdeal2ObservLTf($paramLTf, $573, $582, $xc2, $yc2) | 0;\n        $583 = +HEAPF32[$xc2 >> 2];\n        if ($233) {\n         $xc$3 = ((~~($583 + 1.0) | 0) / 2 | 0) << 1;\n         $yc$3 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;\n        } else {\n         $xc$3 = ~~($583 + .5);\n         $yc$3 = ~~(+HEAPF32[$yc2 >> 2] + .5);\n        }\n        if (($xc$3 | 0) > -1) if (($yc$3 | 0) < ($ysize | 0) & (($yc$3 | 0) > -1 & ($xc$3 | 0) < ($xsize | 0))) {\n         $604 = (Math_imul($yc$3, $xsize) | 0) + $xc$3 << 2;\n         $612 = ((Math_imul(($j$3259 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$4255 | 0) / ($99 | 0) | 0) | 0) * 3 | 0;\n         $613 = $108 + ($612 << 2) | 0;\n         HEAP32[$613 >> 2] = (HEAP32[$613 >> 2] | 0) + (HEAPU8[$image + $604 >> 0] | 0);\n         $621 = $108 + ($612 + 1 << 2) | 0;\n         HEAP32[$621 >> 2] = (HEAP32[$621 >> 2] | 0) + (HEAPU8[$image + ($604 | 1) >> 0] | 0);\n         $629 = $108 + ($612 + 2 << 2) | 0;\n         HEAP32[$629 >> 2] = (HEAP32[$629 >> 2] | 0) + (HEAPU8[$image + ($604 | 2) >> 0] | 0);\n        }\n        $i$4255 = $i$4255 + 1 | 0;\n       } while (($i$4255 | 0) < ($sample_size$xdiv2$2 | 0));\n      }\n      $j$3259 = $j$3259 + 1 | 0;\n     } while (($j$3259 | 0) < ($ydiv2$3 | 0));\n    }\n    break;\n   }\n  case 4:\n   {\n    $208 = $103 + 100.0;\n    $209 = +($ydiv2$3 | 0);\n    $210 = +($sample_size$xdiv2$2 | 0);\n    $211 = $para + 48 | 0;\n    $212 = $para + 56 | 0;\n    $213 = $para + 64 | 0;\n    $214 = $para + 8 | 0;\n    $215 = $para + 16 | 0;\n    $216 = $para + 24 | 0;\n    $217 = $para + 32 | 0;\n    $218 = $para + 40 | 0;\n    $219 = ($imageProcMode | 0) == 1;\n    if (($ydiv2$3 | 0) > 0) {\n     $221 = ($sample_size$xdiv2$2 | 0) > 0;\n     $j$4265 = 0;\n     do {\n      $640 = $208 + $104 * (+($j$4265 | 0) + .5) / $209;\n      if ($221) {\n       $i$5261 = 0;\n       do {\n        $645 = $208 + $104 * (+($i$5261 | 0) + .5) / $210;\n        $652 = +HEAPF64[$213 >> 3] + (+HEAPF64[$211 >> 3] * $645 + $640 * +HEAPF64[$212 >> 3]);\n        if ($652 == 0.0) {\n         $ext_patt2$0 = $108;\n         label = 278;\n         break L13;\n        }\n        $662 = (+HEAPF64[$215 >> 3] + ($645 * +HEAPF64[$para >> 3] + $640 * +HEAPF64[$214 >> 3])) / $652;\n        HEAPF32[$xc2 >> 2] = $662;\n        $671 = (+HEAPF64[$218 >> 3] + ($645 * +HEAPF64[$216 >> 3] + $640 * +HEAPF64[$217 >> 3])) / $652;\n        HEAPF32[$yc2 >> 2] = $671;\n        _arParamIdeal2ObservLTf($paramLTf, $662, $671, $xc2, $yc2) | 0;\n        $672 = +HEAPF32[$xc2 >> 2];\n        if ($219) {\n         $xc$4 = ((~~($672 + 1.0) | 0) / 2 | 0) << 1;\n         $yc$4 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;\n        } else {\n         $xc$4 = ~~($672 + .5);\n         $yc$4 = ~~(+HEAPF32[$yc2 >> 2] + .5);\n        }\n        if (($xc$4 | 0) > -1) if (($yc$4 | 0) < ($ysize | 0) & (($yc$4 | 0) > -1 & ($xc$4 | 0) < ($xsize | 0))) {\n         $693 = (Math_imul($yc$4, $xsize) | 0) + $xc$4 << 2;\n         $702 = ((Math_imul(($j$4265 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$5261 | 0) / ($99 | 0) | 0) | 0) * 3 | 0;\n         $703 = $108 + ($702 << 2) | 0;\n         HEAP32[$703 >> 2] = (HEAP32[$703 >> 2] | 0) + (HEAPU8[$image + ($693 | 1) >> 0] | 0);\n         $711 = $108 + ($702 + 1 << 2) | 0;\n         HEAP32[$711 >> 2] = (HEAP32[$711 >> 2] | 0) + (HEAPU8[$image + ($693 | 2) >> 0] | 0);\n         $719 = $108 + ($702 + 2 << 2) | 0;\n         HEAP32[$719 >> 2] = (HEAP32[$719 >> 2] | 0) + (HEAPU8[$image + ($693 | 3) >> 0] | 0);\n        }\n        $i$5261 = $i$5261 + 1 | 0;\n       } while (($i$5261 | 0) < ($sample_size$xdiv2$2 | 0));\n      }\n      $j$4265 = $j$4265 + 1 | 0;\n     } while (($j$4265 | 0) < ($ydiv2$3 | 0));\n    }\n    break;\n   }\n  case 5:\n  case 12:\n  case 13:\n  case 14:\n   {\n    $194 = $103 + 100.0;\n    $195 = +($ydiv2$3 | 0);\n    $196 = +($sample_size$xdiv2$2 | 0);\n    $197 = $para + 48 | 0;\n    $198 = $para + 56 | 0;\n    $199 = $para + 64 | 0;\n    $200 = $para + 8 | 0;\n    $201 = $para + 16 | 0;\n    $202 = $para + 24 | 0;\n    $203 = $para + 32 | 0;\n    $204 = $para + 40 | 0;\n    $205 = ($imageProcMode | 0) == 1;\n    if (($ydiv2$3 | 0) > 0) {\n     $207 = ($sample_size$xdiv2$2 | 0) > 0;\n     $j$5271 = 0;\n     do {\n      $730 = $194 + $104 * (+($j$5271 | 0) + .5) / $195;\n      if ($207) {\n       $i$6267 = 0;\n       do {\n        $735 = $194 + $104 * (+($i$6267 | 0) + .5) / $196;\n        $742 = +HEAPF64[$199 >> 3] + (+HEAPF64[$197 >> 3] * $735 + $730 * +HEAPF64[$198 >> 3]);\n        if ($742 == 0.0) {\n         $ext_patt2$0 = $108;\n         label = 278;\n         break L13;\n        }\n        $752 = (+HEAPF64[$201 >> 3] + ($735 * +HEAPF64[$para >> 3] + $730 * +HEAPF64[$200 >> 3])) / $742;\n        HEAPF32[$xc2 >> 2] = $752;\n        $761 = (+HEAPF64[$204 >> 3] + ($735 * +HEAPF64[$202 >> 3] + $730 * +HEAPF64[$203 >> 3])) / $742;\n        HEAPF32[$yc2 >> 2] = $761;\n        _arParamIdeal2ObservLTf($paramLTf, $752, $761, $xc2, $yc2) | 0;\n        $762 = +HEAPF32[$xc2 >> 2];\n        if ($205) {\n         $xc$5 = ((~~($762 + 1.0) | 0) / 2 | 0) << 1;\n         $yc$5 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;\n        } else {\n         $xc$5 = ~~($762 + .5);\n         $yc$5 = ~~(+HEAPF32[$yc2 >> 2] + .5);\n        }\n        if (($xc$5 | 0) > -1) if (($yc$5 | 0) < ($ysize | 0) & (($yc$5 | 0) > -1 & ($xc$5 | 0) < ($xsize | 0))) {\n         $783 = $image + ((Math_imul($yc$5, $xsize) | 0) + $xc$5) | 0;\n         $785 = HEAPU8[$783 >> 0] | 0;\n         $790 = ((Math_imul(($j$5271 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$6267 | 0) / ($99 | 0) | 0) | 0) * 3 | 0;\n         $791 = $108 + ($790 << 2) | 0;\n         HEAP32[$791 >> 2] = (HEAP32[$791 >> 2] | 0) + $785;\n         $795 = $108 + ($790 + 1 << 2) | 0;\n         HEAP32[$795 >> 2] = (HEAP32[$795 >> 2] | 0) + $785;\n         $799 = $108 + ($790 + 2 << 2) | 0;\n         HEAP32[$799 >> 2] = (HEAP32[$799 >> 2] | 0) + $785;\n        }\n        $i$6267 = $i$6267 + 1 | 0;\n       } while (($i$6267 | 0) < ($sample_size$xdiv2$2 | 0));\n      }\n      $j$5271 = $j$5271 + 1 | 0;\n     } while (($j$5271 | 0) < ($ydiv2$3 | 0));\n    }\n    break;\n   }\n  case 6:\n   {\n    $180 = $103 + 100.0;\n    $181 = +($ydiv2$3 | 0);\n    $182 = +($sample_size$xdiv2$2 | 0);\n    $183 = $para + 48 | 0;\n    $184 = $para + 56 | 0;\n    $185 = $para + 64 | 0;\n    $186 = $para + 8 | 0;\n    $187 = $para + 16 | 0;\n    $188 = $para + 24 | 0;\n    $189 = $para + 32 | 0;\n    $190 = $para + 40 | 0;\n    $191 = ($imageProcMode | 0) == 1;\n    if (($ydiv2$3 | 0) > 0) {\n     $193 = ($sample_size$xdiv2$2 | 0) > 0;\n     $j$6277 = 0;\n     do {\n      $810 = $180 + $104 * (+($j$6277 | 0) + .5) / $181;\n      if ($193) {\n       $i$7273 = 0;\n       do {\n        $815 = $180 + $104 * (+($i$7273 | 0) + .5) / $182;\n        $822 = +HEAPF64[$185 >> 3] + (+HEAPF64[$183 >> 3] * $815 + $810 * +HEAPF64[$184 >> 3]);\n        if ($822 == 0.0) {\n         $ext_patt2$0 = $108;\n         label = 278;\n         break L13;\n        }\n        $832 = (+HEAPF64[$187 >> 3] + ($815 * +HEAPF64[$para >> 3] + $810 * +HEAPF64[$186 >> 3])) / $822;\n        HEAPF32[$xc2 >> 2] = $832;\n        $841 = (+HEAPF64[$190 >> 3] + ($815 * +HEAPF64[$188 >> 3] + $810 * +HEAPF64[$189 >> 3])) / $822;\n        HEAPF32[$yc2 >> 2] = $841;\n        _arParamIdeal2ObservLTf($paramLTf, $832, $841, $xc2, $yc2) | 0;\n        $842 = +HEAPF32[$xc2 >> 2];\n        if ($191) {\n         $xc$6 = ((~~($842 + 1.0) | 0) / 2 | 0) << 1;\n         $yc$6 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;\n        } else {\n         $xc$6 = ~~($842 + .5);\n         $yc$6 = ~~(+HEAPF32[$yc2 >> 2] + .5);\n        }\n        if (($xc$6 | 0) > -1) if (($yc$6 | 0) < ($ysize | 0) & (($yc$6 | 0) > -1 & ($xc$6 | 0) < ($xsize | 0))) {\n         $863 = (Math_imul($yc$6, $xsize) | 0) + $xc$6 << 2;\n         $872 = ((Math_imul(($j$6277 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$7273 | 0) / ($99 | 0) | 0) | 0) * 3 | 0;\n         $873 = $108 + ($872 << 2) | 0;\n         HEAP32[$873 >> 2] = (HEAP32[$873 >> 2] | 0) + (HEAPU8[$image + ($863 | 3) >> 0] | 0);\n         $881 = $108 + ($872 + 1 << 2) | 0;\n         HEAP32[$881 >> 2] = (HEAP32[$881 >> 2] | 0) + (HEAPU8[$image + ($863 | 2) >> 0] | 0);\n         $889 = $108 + ($872 + 2 << 2) | 0;\n         HEAP32[$889 >> 2] = (HEAP32[$889 >> 2] | 0) + (HEAPU8[$image + ($863 | 1) >> 0] | 0);\n        }\n        $i$7273 = $i$7273 + 1 | 0;\n       } while (($i$7273 | 0) < ($sample_size$xdiv2$2 | 0));\n      }\n      $j$6277 = $j$6277 + 1 | 0;\n     } while (($j$6277 | 0) < ($ydiv2$3 | 0));\n    }\n    break;\n   }\n  case 7:\n   {\n    $166 = $103 + 100.0;\n    $167 = +($ydiv2$3 | 0);\n    $168 = +($sample_size$xdiv2$2 | 0);\n    $169 = $para + 48 | 0;\n    $170 = $para + 56 | 0;\n    $171 = $para + 64 | 0;\n    $172 = $para + 8 | 0;\n    $173 = $para + 16 | 0;\n    $174 = $para + 24 | 0;\n    $175 = $para + 32 | 0;\n    $176 = $para + 40 | 0;\n    $177 = ($imageProcMode | 0) == 1;\n    if (($ydiv2$3 | 0) > 0) {\n     $179 = ($sample_size$xdiv2$2 | 0) > 0;\n     $j$7283 = 0;\n     do {\n      $900 = $166 + $104 * (+($j$7283 | 0) + .5) / $167;\n      if ($179) {\n       $i$8279 = 0;\n       do {\n        $905 = $166 + $104 * (+($i$8279 | 0) + .5) / $168;\n        $912 = +HEAPF64[$171 >> 3] + (+HEAPF64[$169 >> 3] * $905 + $900 * +HEAPF64[$170 >> 3]);\n        if ($912 == 0.0) {\n         $ext_patt2$0 = $108;\n         label = 278;\n         break L13;\n        }\n        $922 = (+HEAPF64[$173 >> 3] + ($905 * +HEAPF64[$para >> 3] + $900 * +HEAPF64[$172 >> 3])) / $912;\n        HEAPF32[$xc2 >> 2] = $922;\n        $931 = (+HEAPF64[$176 >> 3] + ($905 * +HEAPF64[$174 >> 3] + $900 * +HEAPF64[$175 >> 3])) / $912;\n        HEAPF32[$yc2 >> 2] = $931;\n        _arParamIdeal2ObservLTf($paramLTf, $922, $931, $xc2, $yc2) | 0;\n        $932 = +HEAPF32[$xc2 >> 2];\n        if ($177) {\n         $xc$7 = ((~~($932 + 1.0) | 0) / 2 | 0) << 1;\n         $yc$7 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;\n        } else {\n         $xc$7 = ~~($932 + .5);\n         $yc$7 = ~~(+HEAPF32[$yc2 >> 2] + .5);\n        }\n        if (($xc$7 | 0) > -1) if (($yc$7 | 0) < ($ysize | 0) & (($yc$7 | 0) > -1 & ($xc$7 | 0) < ($xsize | 0))) {\n         $951 = Math_imul($yc$7, $xsize) | 0;\n         $954 = ($xc$7 & 65534) + $951 << 1;\n         $959 = +((HEAPU8[$image + $954 >> 0] | 0) + -128 | 0);\n         $973 = +((HEAPU8[$image + ($954 + 2) >> 0] | 0) + -128 | 0);\n         $974 = +((HEAPU8[$image + ($951 + $xc$7 << 1 | 1) >> 0] | 0) + -16 | 0) * 298.0820007324219;\n         $978 = ~~($959 * 516.4110107421875 + $974) >> 8;\n         $984 = ~~($974 - $959 * 100.29100036621094 - $973 * 208.1199951171875) >> 8;\n         $988 = ~~($974 + $973 * 408.5830078125) >> 8;\n         $990 = ($978 | 0) > 0 ? $978 : 0;\n         $996 = ((Math_imul(($j$7283 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$8279 | 0) / ($99 | 0) | 0) | 0) * 3 | 0;\n         $997 = $108 + ($996 << 2) | 0;\n         HEAP32[$997 >> 2] = (($990 | 0) < 255 ? $990 : 255) + (HEAP32[$997 >> 2] | 0);\n         $1001 = ($984 | 0) > 0 ? $984 : 0;\n         $1005 = $108 + ($996 + 1 << 2) | 0;\n         HEAP32[$1005 >> 2] = (($1001 | 0) < 255 ? $1001 : 255) + (HEAP32[$1005 >> 2] | 0);\n         $1009 = ($988 | 0) > 0 ? $988 : 0;\n         $1012 = $108 + ($996 + 2 << 2) | 0;\n         HEAP32[$1012 >> 2] = (($1009 | 0) < 255 ? $1009 : 255) + (HEAP32[$1012 >> 2] | 0);\n        }\n        $i$8279 = $i$8279 + 1 | 0;\n       } while (($i$8279 | 0) < ($sample_size$xdiv2$2 | 0));\n      }\n      $j$7283 = $j$7283 + 1 | 0;\n     } while (($j$7283 | 0) < ($ydiv2$3 | 0));\n    }\n    break;\n   }\n  case 8:\n   {\n    $152 = $103 + 100.0;\n    $153 = +($ydiv2$3 | 0);\n    $154 = +($sample_size$xdiv2$2 | 0);\n    $155 = $para + 48 | 0;\n    $156 = $para + 56 | 0;\n    $157 = $para + 64 | 0;\n    $158 = $para + 8 | 0;\n    $159 = $para + 16 | 0;\n    $160 = $para + 24 | 0;\n    $161 = $para + 32 | 0;\n    $162 = $para + 40 | 0;\n    $163 = ($imageProcMode | 0) == 1;\n    if (($ydiv2$3 | 0) > 0) {\n     $165 = ($sample_size$xdiv2$2 | 0) > 0;\n     $j$8289 = 0;\n     do {\n      $1023 = $152 + $104 * (+($j$8289 | 0) + .5) / $153;\n      if ($165) {\n       $i$9285 = 0;\n       do {\n        $1028 = $152 + $104 * (+($i$9285 | 0) + .5) / $154;\n        $1035 = +HEAPF64[$157 >> 3] + (+HEAPF64[$155 >> 3] * $1028 + $1023 * +HEAPF64[$156 >> 3]);\n        if ($1035 == 0.0) {\n         $ext_patt2$0 = $108;\n         label = 278;\n         break L13;\n        }\n        $1045 = (+HEAPF64[$159 >> 3] + ($1028 * +HEAPF64[$para >> 3] + $1023 * +HEAPF64[$158 >> 3])) / $1035;\n        HEAPF32[$xc2 >> 2] = $1045;\n        $1054 = (+HEAPF64[$162 >> 3] + ($1028 * +HEAPF64[$160 >> 3] + $1023 * +HEAPF64[$161 >> 3])) / $1035;\n        HEAPF32[$yc2 >> 2] = $1054;\n        _arParamIdeal2ObservLTf($paramLTf, $1045, $1054, $xc2, $yc2) | 0;\n        $1055 = +HEAPF32[$xc2 >> 2];\n        if ($163) {\n         $xc$8 = ((~~($1055 + 1.0) | 0) / 2 | 0) << 1;\n         $yc$8 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;\n        } else {\n         $xc$8 = ~~($1055 + .5);\n         $yc$8 = ~~(+HEAPF32[$yc2 >> 2] + .5);\n        }\n        if (($xc$8 | 0) > -1) if (($yc$8 | 0) < ($ysize | 0) & (($yc$8 | 0) > -1 & ($xc$8 | 0) < ($xsize | 0))) {\n         $1074 = Math_imul($yc$8, $xsize) | 0;\n         $1084 = ($xc$8 & 65534) + $1074 << 1;\n         $1090 = +((HEAPU8[$image + ($1084 | 1) >> 0] | 0) + -128 | 0);\n         $1096 = +((HEAPU8[$image + ($1084 + 3) >> 0] | 0) + -128 | 0);\n         $1097 = +((HEAPU8[$image + ($1074 + $xc$8 << 1) >> 0] | 0) + -16 | 0) * 298.0820007324219;\n         $1101 = ~~($1097 + $1090 * 516.4110107421875) >> 8;\n         $1107 = ~~($1097 - $1090 * 100.29100036621094 - $1096 * 208.1199951171875) >> 8;\n         $1111 = ~~($1097 + $1096 * 408.5830078125) >> 8;\n         $1113 = ($1101 | 0) > 0 ? $1101 : 0;\n         $1119 = ((Math_imul(($j$8289 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$9285 | 0) / ($99 | 0) | 0) | 0) * 3 | 0;\n         $1120 = $108 + ($1119 << 2) | 0;\n         HEAP32[$1120 >> 2] = (($1113 | 0) < 255 ? $1113 : 255) + (HEAP32[$1120 >> 2] | 0);\n         $1124 = ($1107 | 0) > 0 ? $1107 : 0;\n         $1128 = $108 + ($1119 + 1 << 2) | 0;\n         HEAP32[$1128 >> 2] = (($1124 | 0) < 255 ? $1124 : 255) + (HEAP32[$1128 >> 2] | 0);\n         $1132 = ($1111 | 0) > 0 ? $1111 : 0;\n         $1135 = $108 + ($1119 + 2 << 2) | 0;\n         HEAP32[$1135 >> 2] = (($1132 | 0) < 255 ? $1132 : 255) + (HEAP32[$1135 >> 2] | 0);\n        }\n        $i$9285 = $i$9285 + 1 | 0;\n       } while (($i$9285 | 0) < ($sample_size$xdiv2$2 | 0));\n      }\n      $j$8289 = $j$8289 + 1 | 0;\n     } while (($j$8289 | 0) < ($ydiv2$3 | 0));\n    }\n    break;\n   }\n  case 9:\n   {\n    $138 = $103 + 100.0;\n    $139 = +($ydiv2$3 | 0);\n    $140 = +($sample_size$xdiv2$2 | 0);\n    $141 = $para + 48 | 0;\n    $142 = $para + 56 | 0;\n    $143 = $para + 64 | 0;\n    $144 = $para + 8 | 0;\n    $145 = $para + 16 | 0;\n    $146 = $para + 24 | 0;\n    $147 = $para + 32 | 0;\n    $148 = $para + 40 | 0;\n    $149 = ($imageProcMode | 0) == 1;\n    if (($ydiv2$3 | 0) > 0) {\n     $151 = ($sample_size$xdiv2$2 | 0) > 0;\n     $j$9295 = 0;\n     do {\n      $1146 = $138 + $104 * (+($j$9295 | 0) + .5) / $139;\n      if ($151) {\n       $i$10291 = 0;\n       do {\n        $1151 = $138 + $104 * (+($i$10291 | 0) + .5) / $140;\n        $1158 = +HEAPF64[$143 >> 3] + (+HEAPF64[$141 >> 3] * $1151 + $1146 * +HEAPF64[$142 >> 3]);\n        if ($1158 == 0.0) {\n         $ext_patt2$0 = $108;\n         label = 278;\n         break L13;\n        }\n        $1168 = (+HEAPF64[$145 >> 3] + ($1151 * +HEAPF64[$para >> 3] + $1146 * +HEAPF64[$144 >> 3])) / $1158;\n        HEAPF32[$xc2 >> 2] = $1168;\n        $1177 = (+HEAPF64[$148 >> 3] + ($1151 * +HEAPF64[$146 >> 3] + $1146 * +HEAPF64[$147 >> 3])) / $1158;\n        HEAPF32[$yc2 >> 2] = $1177;\n        _arParamIdeal2ObservLTf($paramLTf, $1168, $1177, $xc2, $yc2) | 0;\n        $1178 = +HEAPF32[$xc2 >> 2];\n        if ($149) {\n         $xc$9 = ((~~($1178 + 1.0) | 0) / 2 | 0) << 1;\n         $yc$9 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;\n        } else {\n         $xc$9 = ~~($1178 + .5);\n         $yc$9 = ~~(+HEAPF32[$yc2 >> 2] + .5);\n        }\n        if (($xc$9 | 0) > -1) if (($yc$9 | 0) < ($ysize | 0) & (($yc$9 | 0) > -1 & ($xc$9 | 0) < ($xsize | 0))) {\n         $1199 = (Math_imul($yc$9, $xsize) | 0) + $xc$9 << 1;\n         $1203 = HEAPU8[$image + ($1199 | 1) >> 0] | 0;\n         $1211 = ((Math_imul(($j$9295 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$10291 | 0) / ($99 | 0) | 0) | 0) * 3 | 0;\n         $1212 = $108 + ($1211 << 2) | 0;\n         HEAP32[$1212 >> 2] = ($1203 << 3 & 248 | 4) + (HEAP32[$1212 >> 2] | 0);\n         $1217 = HEAPU8[$image + $1199 >> 0] | 0;\n         $1225 = $108 + ($1211 + 1 << 2) | 0;\n         HEAP32[$1225 >> 2] = ($1217 << 5 & 224 | $1203 >>> 3 & 28 | 2) + (HEAP32[$1225 >> 2] | 0);\n         $1231 = $108 + ($1211 + 2 << 2) | 0;\n         HEAP32[$1231 >> 2] = ($1217 & 248 | 4) + (HEAP32[$1231 >> 2] | 0);\n        }\n        $i$10291 = $i$10291 + 1 | 0;\n       } while (($i$10291 | 0) < ($sample_size$xdiv2$2 | 0));\n      }\n      $j$9295 = $j$9295 + 1 | 0;\n     } while (($j$9295 | 0) < ($ydiv2$3 | 0));\n    }\n    break;\n   }\n  case 10:\n   {\n    $124 = $103 + 100.0;\n    $125 = +($ydiv2$3 | 0);\n    $126 = +($sample_size$xdiv2$2 | 0);\n    $127 = $para + 48 | 0;\n    $128 = $para + 56 | 0;\n    $129 = $para + 64 | 0;\n    $130 = $para + 8 | 0;\n    $131 = $para + 16 | 0;\n    $132 = $para + 24 | 0;\n    $133 = $para + 32 | 0;\n    $134 = $para + 40 | 0;\n    $135 = ($imageProcMode | 0) == 1;\n    if (($ydiv2$3 | 0) > 0) {\n     $137 = ($sample_size$xdiv2$2 | 0) > 0;\n     $j$10301 = 0;\n     do {\n      $1242 = $124 + $104 * (+($j$10301 | 0) + .5) / $125;\n      if ($137) {\n       $i$11297 = 0;\n       do {\n        $1247 = $124 + $104 * (+($i$11297 | 0) + .5) / $126;\n        $1254 = +HEAPF64[$129 >> 3] + (+HEAPF64[$127 >> 3] * $1247 + $1242 * +HEAPF64[$128 >> 3]);\n        if ($1254 == 0.0) {\n         $ext_patt2$0 = $108;\n         label = 278;\n         break L13;\n        }\n        $1264 = (+HEAPF64[$131 >> 3] + ($1247 * +HEAPF64[$para >> 3] + $1242 * +HEAPF64[$130 >> 3])) / $1254;\n        HEAPF32[$xc2 >> 2] = $1264;\n        $1273 = (+HEAPF64[$134 >> 3] + ($1247 * +HEAPF64[$132 >> 3] + $1242 * +HEAPF64[$133 >> 3])) / $1254;\n        HEAPF32[$yc2 >> 2] = $1273;\n        _arParamIdeal2ObservLTf($paramLTf, $1264, $1273, $xc2, $yc2) | 0;\n        $1274 = +HEAPF32[$xc2 >> 2];\n        if ($135) {\n         $xc$10 = ((~~($1274 + 1.0) | 0) / 2 | 0) << 1;\n         $yc$10 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;\n        } else {\n         $xc$10 = ~~($1274 + .5);\n         $yc$10 = ~~(+HEAPF32[$yc2 >> 2] + .5);\n        }\n        if (($xc$10 | 0) > -1) if (($yc$10 | 0) < ($ysize | 0) & (($yc$10 | 0) > -1 & ($xc$10 | 0) < ($xsize | 0))) {\n         $1295 = (Math_imul($yc$10, $xsize) | 0) + $xc$10 << 1;\n         $1299 = HEAPU8[$image + ($1295 | 1) >> 0] | 0;\n         $1307 = ((Math_imul(($j$10301 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$11297 | 0) / ($99 | 0) | 0) | 0) * 3 | 0;\n         $1308 = $108 + ($1307 << 2) | 0;\n         HEAP32[$1308 >> 2] = ($1299 << 2 & 248 | 4) + (HEAP32[$1308 >> 2] | 0);\n         $1313 = HEAPU8[$image + $1295 >> 0] | 0;\n         $1321 = $108 + ($1307 + 1 << 2) | 0;\n         HEAP32[$1321 >> 2] = ($1313 << 5 & 224 | $1299 >>> 3 & 24 | 4) + (HEAP32[$1321 >> 2] | 0);\n         $1327 = $108 + ($1307 + 2 << 2) | 0;\n         HEAP32[$1327 >> 2] = ($1313 & 248 | 4) + (HEAP32[$1327 >> 2] | 0);\n        }\n        $i$11297 = $i$11297 + 1 | 0;\n       } while (($i$11297 | 0) < ($sample_size$xdiv2$2 | 0));\n      }\n      $j$10301 = $j$10301 + 1 | 0;\n     } while (($j$10301 | 0) < ($ydiv2$3 | 0));\n    }\n    break;\n   }\n  case 11:\n   {\n    $110 = $103 + 100.0;\n    $111 = +($ydiv2$3 | 0);\n    $112 = +($sample_size$xdiv2$2 | 0);\n    $113 = $para + 48 | 0;\n    $114 = $para + 56 | 0;\n    $115 = $para + 64 | 0;\n    $116 = $para + 8 | 0;\n    $117 = $para + 16 | 0;\n    $118 = $para + 24 | 0;\n    $119 = $para + 32 | 0;\n    $120 = $para + 40 | 0;\n    $121 = ($imageProcMode | 0) == 1;\n    if (($ydiv2$3 | 0) > 0) {\n     $123 = ($sample_size$xdiv2$2 | 0) > 0;\n     $j$11307 = 0;\n     do {\n      $1338 = $110 + $104 * (+($j$11307 | 0) + .5) / $111;\n      if ($123) {\n       $i$12303 = 0;\n       do {\n        $1343 = $110 + $104 * (+($i$12303 | 0) + .5) / $112;\n        $1350 = +HEAPF64[$115 >> 3] + (+HEAPF64[$113 >> 3] * $1343 + $1338 * +HEAPF64[$114 >> 3]);\n        if ($1350 == 0.0) {\n         $ext_patt2$0 = $108;\n         label = 278;\n         break L13;\n        }\n        $1360 = (+HEAPF64[$117 >> 3] + ($1343 * +HEAPF64[$para >> 3] + $1338 * +HEAPF64[$116 >> 3])) / $1350;\n        HEAPF32[$xc2 >> 2] = $1360;\n        $1369 = (+HEAPF64[$120 >> 3] + ($1343 * +HEAPF64[$118 >> 3] + $1338 * +HEAPF64[$119 >> 3])) / $1350;\n        HEAPF32[$yc2 >> 2] = $1369;\n        _arParamIdeal2ObservLTf($paramLTf, $1360, $1369, $xc2, $yc2) | 0;\n        $1370 = +HEAPF32[$xc2 >> 2];\n        if ($121) {\n         $xc$11 = ((~~($1370 + 1.0) | 0) / 2 | 0) << 1;\n         $yc$11 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;\n        } else {\n         $xc$11 = ~~($1370 + .5);\n         $yc$11 = ~~(+HEAPF32[$yc2 >> 2] + .5);\n        }\n        if (($xc$11 | 0) > -1) if (($yc$11 | 0) < ($ysize | 0) & (($yc$11 | 0) > -1 & ($xc$11 | 0) < ($xsize | 0))) {\n         $1391 = (Math_imul($yc$11, $xsize) | 0) + $xc$11 << 1;\n         $1402 = ((Math_imul(($j$11307 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$12303 | 0) / ($99 | 0) | 0) | 0) * 3 | 0;\n         $1403 = $108 + ($1402 << 2) | 0;\n         HEAP32[$1403 >> 2] = (HEAP32[$1403 >> 2] | 0) + ((HEAPU8[$image + ($1391 | 1) >> 0] | 0) & 240 | 8);\n         $1408 = HEAPU8[$image + $1391 >> 0] | 0;\n         $1413 = $108 + ($1402 + 1 << 2) | 0;\n         HEAP32[$1413 >> 2] = ($1408 << 4 & 240 | 8) + (HEAP32[$1413 >> 2] | 0);\n         $1419 = $108 + ($1402 + 2 << 2) | 0;\n         HEAP32[$1419 >> 2] = ($1408 & 240 | 8) + (HEAP32[$1419 >> 2] | 0);\n        }\n        $i$12303 = $i$12303 + 1 | 0;\n       } while (($i$12303 | 0) < ($sample_size$xdiv2$2 | 0));\n      }\n      $j$11307 = $j$11307 + 1 | 0;\n     } while (($j$11307 | 0) < ($ydiv2$3 | 0));\n    }\n    break;\n   }\n  default:\n   {\n    _arLog(3, 4615, $vararg_buffer1);\n    $ext_patt2$0 = $108;\n    label = 278;\n    break L13;\n   }\n  } while (0);\n  $278 = Math_imul($100, $99) | 0;\n  if ($106) {\n   $i$13236 = 0;\n   do {\n    HEAP8[$ext_patt + $i$13236 >> 0] = ((HEAP32[$108 + ($i$13236 << 2) >> 2] | 0) >>> 0) / ($278 >>> 0) | 0;\n    $i$13236 = $i$13236 + 1 | 0;\n   } while (($i$13236 | 0) < ($107 | 0));\n  }\n  _free($108);\n  $$0 = 0;\n } else {\n  $1433 = _calloc($106, 4) | 0;\n  if (!$1433) {\n   _arLog(3, 5471, $vararg_buffer3);\n   _exit(1);\n  }\n  L233 : do if ($pixelFormat >>> 0 < 2) {\n   $1436 = $103 + 100.0;\n   $1437 = +($ydiv2$3 | 0);\n   $1438 = +($sample_size$xdiv2$2 | 0);\n   $1439 = $para + 48 | 0;\n   $1440 = $para + 56 | 0;\n   $1441 = $para + 64 | 0;\n   $1442 = $para + 8 | 0;\n   $1443 = $para + 16 | 0;\n   $1444 = $para + 24 | 0;\n   $1445 = $para + 32 | 0;\n   $1446 = $para + 40 | 0;\n   $1447 = ($imageProcMode | 0) == 1;\n   if (($ydiv2$3 | 0) > 0) {\n    $1449 = ($sample_size$xdiv2$2 | 0) > 0;\n    $j$12316 = 0;\n    do {\n     $1456 = $1436 + $104 * (+($j$12316 | 0) + .5) / $1437;\n     if ($1449) {\n      $i$14312 = 0;\n      do {\n       $1461 = $1436 + $104 * (+($i$14312 | 0) + .5) / $1438;\n       $1468 = +HEAPF64[$1441 >> 3] + (+HEAPF64[$1439 >> 3] * $1461 + $1456 * +HEAPF64[$1440 >> 3]);\n       if ($1468 == 0.0) {\n        $ext_patt2$0 = $1433;\n        label = 278;\n        break L13;\n       }\n       $1478 = (+HEAPF64[$1443 >> 3] + ($1461 * +HEAPF64[$para >> 3] + $1456 * +HEAPF64[$1442 >> 3])) / $1468;\n       HEAPF32[$xc2 >> 2] = $1478;\n       $1487 = (+HEAPF64[$1446 >> 3] + ($1461 * +HEAPF64[$1444 >> 3] + $1456 * +HEAPF64[$1445 >> 3])) / $1468;\n       HEAPF32[$yc2 >> 2] = $1487;\n       _arParamIdeal2ObservLTf($paramLTf, $1478, $1487, $xc2, $yc2) | 0;\n       $1488 = +HEAPF32[$xc2 >> 2];\n       if ($1447) {\n        $xc$12 = ((~~($1488 + 1.0) | 0) / 2 | 0) << 1;\n        $yc$12 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;\n       } else {\n        $xc$12 = ~~($1488 + .5);\n        $yc$12 = ~~(+HEAPF32[$yc2 >> 2] + .5);\n       }\n       if (($xc$12 | 0) > -1) if (($yc$12 | 0) < ($ysize | 0) & (($yc$12 | 0) > -1 & ($xc$12 | 0) < ($xsize | 0))) {\n        $1509 = ((Math_imul($yc$12, $xsize) | 0) + $xc$12 | 0) * 3 | 0;\n        $1528 = $1433 + ((Math_imul(($j$12316 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$14312 | 0) / ($99 | 0) | 0) << 2) | 0;\n        HEAP32[$1528 >> 2] = (HEAP32[$1528 >> 2] | 0) + ((((HEAPU8[$image + ($1509 + 1) >> 0] | 0) + (HEAPU8[$image + $1509 >> 0] | 0) + (HEAPU8[$image + ($1509 + 2) >> 0] | 0) | 0) >>> 0) / 3 | 0);\n       }\n       $i$14312 = $i$14312 + 1 | 0;\n      } while (($i$14312 | 0) < ($sample_size$xdiv2$2 | 0));\n     }\n     $j$12316 = $j$12316 + 1 | 0;\n    } while (($j$12316 | 0) < ($ydiv2$3 | 0));\n   }\n  } else {\n   if (($pixelFormat & -2 | 0) == 2) {\n    $1537 = $103 + 100.0;\n    $1538 = +($ydiv2$3 | 0);\n    $1539 = +($sample_size$xdiv2$2 | 0);\n    $1540 = $para + 48 | 0;\n    $1541 = $para + 56 | 0;\n    $1542 = $para + 64 | 0;\n    $1543 = $para + 8 | 0;\n    $1544 = $para + 16 | 0;\n    $1545 = $para + 24 | 0;\n    $1546 = $para + 32 | 0;\n    $1547 = $para + 40 | 0;\n    $1548 = ($imageProcMode | 0) == 1;\n    if (($ydiv2$3 | 0) <= 0) break;\n    $1550 = ($sample_size$xdiv2$2 | 0) > 0;\n    $j$13322 = 0;\n    while (1) {\n     $1555 = $1537 + $104 * (+($j$13322 | 0) + .5) / $1538;\n     if ($1550) {\n      $i$15318 = 0;\n      do {\n       $1560 = $1537 + $104 * (+($i$15318 | 0) + .5) / $1539;\n       $1567 = +HEAPF64[$1542 >> 3] + (+HEAPF64[$1540 >> 3] * $1560 + $1555 * +HEAPF64[$1541 >> 3]);\n       if ($1567 == 0.0) {\n        $ext_patt2$0 = $1433;\n        label = 278;\n        break L13;\n       }\n       $1577 = (+HEAPF64[$1544 >> 3] + ($1560 * +HEAPF64[$para >> 3] + $1555 * +HEAPF64[$1543 >> 3])) / $1567;\n       HEAPF32[$xc2 >> 2] = $1577;\n       $1586 = (+HEAPF64[$1547 >> 3] + ($1560 * +HEAPF64[$1545 >> 3] + $1555 * +HEAPF64[$1546 >> 3])) / $1567;\n       HEAPF32[$yc2 >> 2] = $1586;\n       _arParamIdeal2ObservLTf($paramLTf, $1577, $1586, $xc2, $yc2) | 0;\n       $1587 = +HEAPF32[$xc2 >> 2];\n       if ($1548) {\n        $xc$13 = ((~~($1587 + 1.0) | 0) / 2 | 0) << 1;\n        $yc$13 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;\n       } else {\n        $xc$13 = ~~($1587 + .5);\n        $yc$13 = ~~(+HEAPF32[$yc2 >> 2] + .5);\n       }\n       if (($xc$13 | 0) > -1) if (($yc$13 | 0) < ($ysize | 0) & (($yc$13 | 0) > -1 & ($xc$13 | 0) < ($xsize | 0))) {\n        $1608 = (Math_imul($yc$13, $xsize) | 0) + $xc$13 << 2;\n        $1627 = $1433 + ((Math_imul(($j$13322 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$15318 | 0) / ($99 | 0) | 0) << 2) | 0;\n        HEAP32[$1627 >> 2] = (HEAP32[$1627 >> 2] | 0) + ((((HEAPU8[$image + ($1608 | 1) >> 0] | 0) + (HEAPU8[$image + $1608 >> 0] | 0) + (HEAPU8[$image + ($1608 | 2) >> 0] | 0) | 0) >>> 0) / 3 | 0);\n       }\n       $i$15318 = $i$15318 + 1 | 0;\n      } while (($i$15318 | 0) < ($sample_size$xdiv2$2 | 0));\n     }\n     $j$13322 = $j$13322 + 1 | 0;\n     if (($j$13322 | 0) >= ($ydiv2$3 | 0)) break L233;\n    }\n   }\n   if (($pixelFormat & -3 | 0) == 4) {\n    $1636 = $103 + 100.0;\n    $1637 = +($ydiv2$3 | 0);\n    $1638 = +($sample_size$xdiv2$2 | 0);\n    $1639 = $para + 48 | 0;\n    $1640 = $para + 56 | 0;\n    $1641 = $para + 64 | 0;\n    $1642 = $para + 8 | 0;\n    $1643 = $para + 16 | 0;\n    $1644 = $para + 24 | 0;\n    $1645 = $para + 32 | 0;\n    $1646 = $para + 40 | 0;\n    $1647 = ($imageProcMode | 0) == 1;\n    if (($ydiv2$3 | 0) <= 0) break;\n    $1649 = ($sample_size$xdiv2$2 | 0) > 0;\n    $j$14328 = 0;\n    while (1) {\n     $1654 = $1636 + $104 * (+($j$14328 | 0) + .5) / $1637;\n     if ($1649) {\n      $i$16324 = 0;\n      do {\n       $1659 = $1636 + $104 * (+($i$16324 | 0) + .5) / $1638;\n       $1666 = +HEAPF64[$1641 >> 3] + (+HEAPF64[$1639 >> 3] * $1659 + $1654 * +HEAPF64[$1640 >> 3]);\n       if ($1666 == 0.0) {\n        $ext_patt2$0 = $1433;\n        label = 278;\n        break L13;\n       }\n       $1676 = (+HEAPF64[$1643 >> 3] + ($1659 * +HEAPF64[$para >> 3] + $1654 * +HEAPF64[$1642 >> 3])) / $1666;\n       HEAPF32[$xc2 >> 2] = $1676;\n       $1685 = (+HEAPF64[$1646 >> 3] + ($1659 * +HEAPF64[$1644 >> 3] + $1654 * +HEAPF64[$1645 >> 3])) / $1666;\n       HEAPF32[$yc2 >> 2] = $1685;\n       _arParamIdeal2ObservLTf($paramLTf, $1676, $1685, $xc2, $yc2) | 0;\n       $1686 = +HEAPF32[$xc2 >> 2];\n       if ($1647) {\n        $xc$14 = ((~~($1686 + 1.0) | 0) / 2 | 0) << 1;\n        $yc$14 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;\n       } else {\n        $xc$14 = ~~($1686 + .5);\n        $yc$14 = ~~(+HEAPF32[$yc2 >> 2] + .5);\n       }\n       if (($xc$14 | 0) > -1) if (($yc$14 | 0) < ($ysize | 0) & (($yc$14 | 0) > -1 & ($xc$14 | 0) < ($xsize | 0))) {\n        $1707 = (Math_imul($yc$14, $xsize) | 0) + $xc$14 << 2;\n        $1727 = $1433 + ((Math_imul(($j$14328 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$16324 | 0) / ($99 | 0) | 0) << 2) | 0;\n        HEAP32[$1727 >> 2] = (HEAP32[$1727 >> 2] | 0) + ((((HEAPU8[$image + ($1707 | 2) >> 0] | 0) + (HEAPU8[$image + ($1707 | 1) >> 0] | 0) + (HEAPU8[$image + ($1707 | 3) >> 0] | 0) | 0) >>> 0) / 3 | 0);\n       }\n       $i$16324 = $i$16324 + 1 | 0;\n      } while (($i$16324 | 0) < ($sample_size$xdiv2$2 | 0));\n     }\n     $j$14328 = $j$14328 + 1 | 0;\n     if (($j$14328 | 0) >= ($ydiv2$3 | 0)) break L233;\n    }\n   }\n   switch ($pixelFormat | 0) {\n   case 5:\n   case 12:\n   case 13:\n   case 14:\n    {\n     $1804 = $103 + 100.0;\n     $1805 = +($ydiv2$3 | 0);\n     $1806 = +($sample_size$xdiv2$2 | 0);\n     $1807 = $para + 48 | 0;\n     $1808 = $para + 56 | 0;\n     $1809 = $para + 64 | 0;\n     $1810 = $para + 8 | 0;\n     $1811 = $para + 16 | 0;\n     $1812 = $para + 24 | 0;\n     $1813 = $para + 32 | 0;\n     $1814 = $para + 40 | 0;\n     $1815 = ($imageProcMode | 0) == 1;\n     if (($ydiv2$3 | 0) <= 0) break L233;\n     $1817 = ($sample_size$xdiv2$2 | 0) > 0;\n     $j$15334 = 0;\n     do {\n      $1822 = $1804 + $104 * (+($j$15334 | 0) + .5) / $1805;\n      if ($1817) {\n       $i$17330 = 0;\n       do {\n        $1827 = $1804 + $104 * (+($i$17330 | 0) + .5) / $1806;\n        $1834 = +HEAPF64[$1809 >> 3] + (+HEAPF64[$1807 >> 3] * $1827 + $1822 * +HEAPF64[$1808 >> 3]);\n        if ($1834 == 0.0) {\n         $ext_patt2$0 = $1433;\n         label = 278;\n         break L13;\n        }\n        $1844 = (+HEAPF64[$1811 >> 3] + ($1827 * +HEAPF64[$para >> 3] + $1822 * +HEAPF64[$1810 >> 3])) / $1834;\n        HEAPF32[$xc2 >> 2] = $1844;\n        $1853 = (+HEAPF64[$1814 >> 3] + ($1827 * +HEAPF64[$1812 >> 3] + $1822 * +HEAPF64[$1813 >> 3])) / $1834;\n        HEAPF32[$yc2 >> 2] = $1853;\n        _arParamIdeal2ObservLTf($paramLTf, $1844, $1853, $xc2, $yc2) | 0;\n        $1854 = +HEAPF32[$xc2 >> 2];\n        if ($1815) {\n         $xc$15 = ((~~($1854 + 1.0) | 0) / 2 | 0) << 1;\n         $yc$15 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;\n        } else {\n         $xc$15 = ~~($1854 + .5);\n         $yc$15 = ~~(+HEAPF32[$yc2 >> 2] + .5);\n        }\n        if (($xc$15 | 0) > -1) if (($yc$15 | 0) < ($ysize | 0) & (($yc$15 | 0) > -1 & ($xc$15 | 0) < ($xsize | 0))) {\n         $1875 = $image + ((Math_imul($yc$15, $xsize) | 0) + $xc$15) | 0;\n         $1882 = $1433 + ((Math_imul(($j$15334 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$17330 | 0) / ($99 | 0) | 0) << 2) | 0;\n         HEAP32[$1882 >> 2] = (HEAP32[$1882 >> 2] | 0) + (HEAPU8[$1875 >> 0] | 0);\n        }\n        $i$17330 = $i$17330 + 1 | 0;\n       } while (($i$17330 | 0) < ($sample_size$xdiv2$2 | 0));\n      }\n      $j$15334 = $j$15334 + 1 | 0;\n     } while (($j$15334 | 0) < ($ydiv2$3 | 0));\n     break;\n    }\n   case 7:\n    {\n     $1790 = $103 + 100.0;\n     $1791 = +($ydiv2$3 | 0);\n     $1792 = +($sample_size$xdiv2$2 | 0);\n     $1793 = $para + 48 | 0;\n     $1794 = $para + 56 | 0;\n     $1795 = $para + 64 | 0;\n     $1796 = $para + 8 | 0;\n     $1797 = $para + 16 | 0;\n     $1798 = $para + 24 | 0;\n     $1799 = $para + 32 | 0;\n     $1800 = $para + 40 | 0;\n     $1801 = ($imageProcMode | 0) == 1;\n     if (($ydiv2$3 | 0) <= 0) break L233;\n     $1803 = ($sample_size$xdiv2$2 | 0) > 0;\n     $j$16340 = 0;\n     do {\n      $1893 = $1790 + $104 * (+($j$16340 | 0) + .5) / $1791;\n      if ($1803) {\n       $i$18336 = 0;\n       do {\n        $1898 = $1790 + $104 * (+($i$18336 | 0) + .5) / $1792;\n        $1905 = +HEAPF64[$1795 >> 3] + (+HEAPF64[$1793 >> 3] * $1898 + $1893 * +HEAPF64[$1794 >> 3]);\n        if ($1905 == 0.0) {\n         $ext_patt2$0 = $1433;\n         label = 278;\n         break L13;\n        }\n        $1915 = (+HEAPF64[$1797 >> 3] + ($1898 * +HEAPF64[$para >> 3] + $1893 * +HEAPF64[$1796 >> 3])) / $1905;\n        HEAPF32[$xc2 >> 2] = $1915;\n        $1924 = (+HEAPF64[$1800 >> 3] + ($1898 * +HEAPF64[$1798 >> 3] + $1893 * +HEAPF64[$1799 >> 3])) / $1905;\n        HEAPF32[$yc2 >> 2] = $1924;\n        _arParamIdeal2ObservLTf($paramLTf, $1915, $1924, $xc2, $yc2) | 0;\n        $1925 = +HEAPF32[$xc2 >> 2];\n        if ($1801) {\n         $xc$16 = ((~~($1925 + 1.0) | 0) / 2 | 0) << 1;\n         $yc$16 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;\n        } else {\n         $xc$16 = ~~($1925 + .5);\n         $yc$16 = ~~(+HEAPF32[$yc2 >> 2] + .5);\n        }\n        if (($xc$16 | 0) > -1) if (($yc$16 | 0) < ($ysize | 0) & (($yc$16 | 0) > -1 & ($xc$16 | 0) < ($xsize | 0))) {\n         $1948 = $image + ((Math_imul($yc$16, $xsize) | 0) + $xc$16 << 1 | 1) | 0;\n         $1955 = $1433 + ((Math_imul(($j$16340 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$18336 | 0) / ($99 | 0) | 0) << 2) | 0;\n         HEAP32[$1955 >> 2] = (HEAP32[$1955 >> 2] | 0) + (HEAPU8[$1948 >> 0] | 0);\n        }\n        $i$18336 = $i$18336 + 1 | 0;\n       } while (($i$18336 | 0) < ($sample_size$xdiv2$2 | 0));\n      }\n      $j$16340 = $j$16340 + 1 | 0;\n     } while (($j$16340 | 0) < ($ydiv2$3 | 0));\n     break;\n    }\n   case 8:\n    {\n     $1776 = $103 + 100.0;\n     $1777 = +($ydiv2$3 | 0);\n     $1778 = +($sample_size$xdiv2$2 | 0);\n     $1779 = $para + 48 | 0;\n     $1780 = $para + 56 | 0;\n     $1781 = $para + 64 | 0;\n     $1782 = $para + 8 | 0;\n     $1783 = $para + 16 | 0;\n     $1784 = $para + 24 | 0;\n     $1785 = $para + 32 | 0;\n     $1786 = $para + 40 | 0;\n     $1787 = ($imageProcMode | 0) == 1;\n     if (($ydiv2$3 | 0) <= 0) break L233;\n     $1789 = ($sample_size$xdiv2$2 | 0) > 0;\n     $j$17346 = 0;\n     do {\n      $1966 = $1776 + $104 * (+($j$17346 | 0) + .5) / $1777;\n      if ($1789) {\n       $i$19342 = 0;\n       do {\n        $1971 = $1776 + $104 * (+($i$19342 | 0) + .5) / $1778;\n        $1978 = +HEAPF64[$1781 >> 3] + (+HEAPF64[$1779 >> 3] * $1971 + $1966 * +HEAPF64[$1780 >> 3]);\n        if ($1978 == 0.0) {\n         $ext_patt2$0 = $1433;\n         label = 278;\n         break L13;\n        }\n        $1988 = (+HEAPF64[$1783 >> 3] + ($1971 * +HEAPF64[$para >> 3] + $1966 * +HEAPF64[$1782 >> 3])) / $1978;\n        HEAPF32[$xc2 >> 2] = $1988;\n        $1997 = (+HEAPF64[$1786 >> 3] + ($1971 * +HEAPF64[$1784 >> 3] + $1966 * +HEAPF64[$1785 >> 3])) / $1978;\n        HEAPF32[$yc2 >> 2] = $1997;\n        _arParamIdeal2ObservLTf($paramLTf, $1988, $1997, $xc2, $yc2) | 0;\n        $1998 = +HEAPF32[$xc2 >> 2];\n        if ($1787) {\n         $xc$17 = ((~~($1998 + 1.0) | 0) / 2 | 0) << 1;\n         $yc$17 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;\n        } else {\n         $xc$17 = ~~($1998 + .5);\n         $yc$17 = ~~(+HEAPF32[$yc2 >> 2] + .5);\n        }\n        if (($xc$17 | 0) > -1) if (($yc$17 | 0) < ($ysize | 0) & (($yc$17 | 0) > -1 & ($xc$17 | 0) < ($xsize | 0))) {\n         $2020 = $image + ((Math_imul($yc$17, $xsize) | 0) + $xc$17 << 1) | 0;\n         $2027 = $1433 + ((Math_imul(($j$17346 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$19342 | 0) / ($99 | 0) | 0) << 2) | 0;\n         HEAP32[$2027 >> 2] = (HEAP32[$2027 >> 2] | 0) + (HEAPU8[$2020 >> 0] | 0);\n        }\n        $i$19342 = $i$19342 + 1 | 0;\n       } while (($i$19342 | 0) < ($sample_size$xdiv2$2 | 0));\n      }\n      $j$17346 = $j$17346 + 1 | 0;\n     } while (($j$17346 | 0) < ($ydiv2$3 | 0));\n     break;\n    }\n   case 9:\n    {\n     $1762 = $103 + 100.0;\n     $1763 = +($ydiv2$3 | 0);\n     $1764 = +($sample_size$xdiv2$2 | 0);\n     $1765 = $para + 48 | 0;\n     $1766 = $para + 56 | 0;\n     $1767 = $para + 64 | 0;\n     $1768 = $para + 8 | 0;\n     $1769 = $para + 16 | 0;\n     $1770 = $para + 24 | 0;\n     $1771 = $para + 32 | 0;\n     $1772 = $para + 40 | 0;\n     $1773 = ($imageProcMode | 0) == 1;\n     if (($ydiv2$3 | 0) <= 0) break L233;\n     $1775 = ($sample_size$xdiv2$2 | 0) > 0;\n     $j$18352 = 0;\n     do {\n      $2038 = $1762 + $104 * (+($j$18352 | 0) + .5) / $1763;\n      if ($1775) {\n       $i$20348 = 0;\n       do {\n        $2043 = $1762 + $104 * (+($i$20348 | 0) + .5) / $1764;\n        $2050 = +HEAPF64[$1767 >> 3] + (+HEAPF64[$1765 >> 3] * $2043 + $2038 * +HEAPF64[$1766 >> 3]);\n        if ($2050 == 0.0) {\n         $ext_patt2$0 = $1433;\n         label = 278;\n         break L13;\n        }\n        $2060 = (+HEAPF64[$1769 >> 3] + ($2043 * +HEAPF64[$para >> 3] + $2038 * +HEAPF64[$1768 >> 3])) / $2050;\n        HEAPF32[$xc2 >> 2] = $2060;\n        $2069 = (+HEAPF64[$1772 >> 3] + ($2043 * +HEAPF64[$1770 >> 3] + $2038 * +HEAPF64[$1771 >> 3])) / $2050;\n        HEAPF32[$yc2 >> 2] = $2069;\n        _arParamIdeal2ObservLTf($paramLTf, $2060, $2069, $xc2, $yc2) | 0;\n        $2070 = +HEAPF32[$xc2 >> 2];\n        if ($1773) {\n         $xc$18 = ((~~($2070 + 1.0) | 0) / 2 | 0) << 1;\n         $yc$18 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;\n        } else {\n         $xc$18 = ~~($2070 + .5);\n         $yc$18 = ~~(+HEAPF32[$yc2 >> 2] + .5);\n        }\n        if (($xc$18 | 0) > -1) if (($yc$18 | 0) < ($ysize | 0) & (($yc$18 | 0) > -1 & ($xc$18 | 0) < ($xsize | 0))) {\n         $2091 = (Math_imul($yc$18, $xsize) | 0) + $xc$18 << 1;\n         $2094 = HEAPU8[$image + $2091 >> 0] | 0;\n         $2102 = HEAPU8[$image + ($2091 | 1) >> 0] | 0;\n         $2117 = $1433 + ((Math_imul(($j$18352 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$20348 | 0) / ($99 | 0) | 0) << 2) | 0;\n         HEAP32[$2117 >> 2] = (HEAP32[$2117 >> 2] | 0) + (((($2102 << 3 & 248 | 4) + ($2094 & 248 | 4) + ($2094 << 5 & 224 | $2102 >>> 3 & 28 | 2) | 0) >>> 0) / 3 | 0);\n        }\n        $i$20348 = $i$20348 + 1 | 0;\n       } while (($i$20348 | 0) < ($sample_size$xdiv2$2 | 0));\n      }\n      $j$18352 = $j$18352 + 1 | 0;\n     } while (($j$18352 | 0) < ($ydiv2$3 | 0));\n     break;\n    }\n   case 10:\n    {\n     $1748 = $103 + 100.0;\n     $1749 = +($ydiv2$3 | 0);\n     $1750 = +($sample_size$xdiv2$2 | 0);\n     $1751 = $para + 48 | 0;\n     $1752 = $para + 56 | 0;\n     $1753 = $para + 64 | 0;\n     $1754 = $para + 8 | 0;\n     $1755 = $para + 16 | 0;\n     $1756 = $para + 24 | 0;\n     $1757 = $para + 32 | 0;\n     $1758 = $para + 40 | 0;\n     $1759 = ($imageProcMode | 0) == 1;\n     if (($ydiv2$3 | 0) <= 0) break L233;\n     $1761 = ($sample_size$xdiv2$2 | 0) > 0;\n     $j$19358 = 0;\n     do {\n      $2128 = $1748 + $104 * (+($j$19358 | 0) + .5) / $1749;\n      if ($1761) {\n       $i$21354 = 0;\n       do {\n        $2133 = $1748 + $104 * (+($i$21354 | 0) + .5) / $1750;\n        $2140 = +HEAPF64[$1753 >> 3] + (+HEAPF64[$1751 >> 3] * $2133 + $2128 * +HEAPF64[$1752 >> 3]);\n        if ($2140 == 0.0) {\n         $ext_patt2$0 = $1433;\n         label = 278;\n         break L13;\n        }\n        $2150 = (+HEAPF64[$1755 >> 3] + ($2133 * +HEAPF64[$para >> 3] + $2128 * +HEAPF64[$1754 >> 3])) / $2140;\n        HEAPF32[$xc2 >> 2] = $2150;\n        $2159 = (+HEAPF64[$1758 >> 3] + ($2133 * +HEAPF64[$1756 >> 3] + $2128 * +HEAPF64[$1757 >> 3])) / $2140;\n        HEAPF32[$yc2 >> 2] = $2159;\n        _arParamIdeal2ObservLTf($paramLTf, $2150, $2159, $xc2, $yc2) | 0;\n        $2160 = +HEAPF32[$xc2 >> 2];\n        if ($1759) {\n         $xc$19 = ((~~($2160 + 1.0) | 0) / 2 | 0) << 1;\n         $yc$19 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;\n        } else {\n         $xc$19 = ~~($2160 + .5);\n         $yc$19 = ~~(+HEAPF32[$yc2 >> 2] + .5);\n        }\n        if (($xc$19 | 0) > -1) if (($yc$19 | 0) < ($ysize | 0) & (($yc$19 | 0) > -1 & ($xc$19 | 0) < ($xsize | 0))) {\n         $2181 = (Math_imul($yc$19, $xsize) | 0) + $xc$19 << 1;\n         $2184 = HEAPU8[$image + $2181 >> 0] | 0;\n         $2192 = HEAPU8[$image + ($2181 | 1) >> 0] | 0;\n         $2207 = $1433 + ((Math_imul(($j$19358 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$21354 | 0) / ($99 | 0) | 0) << 2) | 0;\n         HEAP32[$2207 >> 2] = (HEAP32[$2207 >> 2] | 0) + (((($2192 << 2 & 248 | 4) + ($2184 & 248 | 4) + ($2184 << 5 & 224 | $2192 >>> 3 & 24 | 4) | 0) >>> 0) / 3 | 0);\n        }\n        $i$21354 = $i$21354 + 1 | 0;\n       } while (($i$21354 | 0) < ($sample_size$xdiv2$2 | 0));\n      }\n      $j$19358 = $j$19358 + 1 | 0;\n     } while (($j$19358 | 0) < ($ydiv2$3 | 0));\n     break;\n    }\n   case 11:\n    {\n     $1734 = $103 + 100.0;\n     $1735 = +($ydiv2$3 | 0);\n     $1736 = +($sample_size$xdiv2$2 | 0);\n     $1737 = $para + 48 | 0;\n     $1738 = $para + 56 | 0;\n     $1739 = $para + 64 | 0;\n     $1740 = $para + 8 | 0;\n     $1741 = $para + 16 | 0;\n     $1742 = $para + 24 | 0;\n     $1743 = $para + 32 | 0;\n     $1744 = $para + 40 | 0;\n     $1745 = ($imageProcMode | 0) == 1;\n     if (($ydiv2$3 | 0) <= 0) break L233;\n     $1747 = ($sample_size$xdiv2$2 | 0) > 0;\n     $j$20364 = 0;\n     do {\n      $2218 = $1734 + $104 * (+($j$20364 | 0) + .5) / $1735;\n      if ($1747) {\n       $i$22360 = 0;\n       do {\n        $2223 = $1734 + $104 * (+($i$22360 | 0) + .5) / $1736;\n        $2230 = +HEAPF64[$1739 >> 3] + (+HEAPF64[$1737 >> 3] * $2223 + $2218 * +HEAPF64[$1738 >> 3]);\n        if ($2230 == 0.0) {\n         $ext_patt2$0 = $1433;\n         label = 278;\n         break L13;\n        }\n        $2240 = (+HEAPF64[$1741 >> 3] + ($2223 * +HEAPF64[$para >> 3] + $2218 * +HEAPF64[$1740 >> 3])) / $2230;\n        HEAPF32[$xc2 >> 2] = $2240;\n        $2249 = (+HEAPF64[$1744 >> 3] + ($2223 * +HEAPF64[$1742 >> 3] + $2218 * +HEAPF64[$1743 >> 3])) / $2230;\n        HEAPF32[$yc2 >> 2] = $2249;\n        _arParamIdeal2ObservLTf($paramLTf, $2240, $2249, $xc2, $yc2) | 0;\n        $2250 = +HEAPF32[$xc2 >> 2];\n        if ($1745) {\n         $xc$20 = ((~~($2250 + 1.0) | 0) / 2 | 0) << 1;\n         $yc$20 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;\n        } else {\n         $xc$20 = ~~($2250 + .5);\n         $yc$20 = ~~(+HEAPF32[$yc2 >> 2] + .5);\n        }\n        if (($xc$20 | 0) > -1) if (($yc$20 | 0) < ($ysize | 0) & (($yc$20 | 0) > -1 & ($xc$20 | 0) < ($xsize | 0))) {\n         $2271 = (Math_imul($yc$20, $xsize) | 0) + $xc$20 << 1;\n         $2274 = HEAPU8[$image + $2271 >> 0] | 0;\n         $2293 = $1433 + ((Math_imul(($j$20364 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$22360 | 0) / ($99 | 0) | 0) << 2) | 0;\n         HEAP32[$2293 >> 2] = (HEAP32[$2293 >> 2] | 0) + (((($2274 << 4 & 240 | 8) + ($2274 & 240 | 8) + ((HEAPU8[$image + ($2271 | 1) >> 0] | 0) & 240 | 8) | 0) >>> 0) / 3 | 0);\n        }\n        $i$22360 = $i$22360 + 1 | 0;\n       } while (($i$22360 | 0) < ($sample_size$xdiv2$2 | 0));\n      }\n      $j$20364 = $j$20364 + 1 | 0;\n     } while (($j$20364 | 0) < ($ydiv2$3 | 0));\n     break;\n    }\n   default:\n    {\n     _arLog(3, 4615, $vararg_buffer5);\n     $ext_patt2$0 = $1433;\n     label = 278;\n     break L13;\n    }\n   }\n  } while (0);\n  $1450 = Math_imul($100, $99) | 0;\n  if ($106) {\n   $i$23309 = 0;\n   do {\n    HEAP8[$ext_patt + $i$23309 >> 0] = ((HEAP32[$1433 + ($i$23309 << 2) >> 2] | 0) >>> 0) / ($1450 >>> 0) | 0;\n    $i$23309 = $i$23309 + 1 | 0;\n   } while (($i$23309 | 0) < ($106 | 0));\n  }\n  _free($1433);\n  $$0 = 0;\n } while (0);\n if ((label | 0) == 278) {\n  _free($ext_patt2$0);\n  $$0 = -1;\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_118parse_builtin_typeINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) {\n $first = $first | 0;\n $last = $last | 0;\n $db = $db | 0;\n var $$0 = 0, $$0$i$i$i = 0, $$0$i$i$i103 = 0, $$0$i$i$i108 = 0, $$0$i$i$i113 = 0, $$0$i$i$i118 = 0, $$0$i$i$i123 = 0, $$0$i$i$i128 = 0, $$0$i$i$i133 = 0, $$0$i$i$i138 = 0, $$0$i$i$i14 = 0, $$0$i$i$i143 = 0, $$0$i$i$i19 = 0, $$0$i$i$i24 = 0, $$0$i$i$i29 = 0, $$0$i$i$i34 = 0, $$0$i$i$i39 = 0, $$0$i$i$i4 = 0, $$0$i$i$i44 = 0, $$0$i$i$i49 = 0, $$0$i$i$i54 = 0, $$0$i$i$i59 = 0, $$0$i$i$i66 = 0, $$0$i$i$i71 = 0, $$0$i$i$i76 = 0, $$0$i$i$i81 = 0, $$0$i$i$i88 = 0, $$0$i$i$i9 = 0, $$0$i$i$i93 = 0, $$0$i$i$i98 = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $106 = 0, $108 = 0, $11 = 0, $111 = 0, $112 = 0, $115 = 0, $116 = 0, $118 = 0, $12 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $13 = 0, $132 = 0, $134 = 0, $137 = 0, $138 = 0, $14 = 0, $141 = 0, $142 = 0, $144 = 0, $15 = 0, $151 = 0, $152 = 0, $153 = 0, $154 = 0, $158 = 0, $16 = 0, $160 = 0, $163 = 0, $164 = 0, $167 = 0, $168 = 0, $17 = 0, $170 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $184 = 0, $186 = 0, $189 = 0, $19 = 0, $190 = 0, $193 = 0, $194 = 0, $196 = 0, $2 = 0, $20 = 0, $203 = 0, $204 = 0, $205 = 0, $206 = 0, $21 = 0, $210 = 0, $212 = 0, $215 = 0, $216 = 0, $219 = 0, $22 = 0, $220 = 0, $222 = 0, $229 = 0, $23 = 0, $230 = 0, $231 = 0, $232 = 0, $236 = 0, $238 = 0, $24 = 0, $241 = 0, $242 = 0, $245 = 0, $246 = 0, $248 = 0, $25 = 0, $255 = 0, $256 = 0, $257 = 0, $258 = 0, $26 = 0, $262 = 0, $264 = 0, $267 = 0, $268 = 0, $27 = 0, $271 = 0, $272 = 0, $274 = 0, $28 = 0, $281 = 0, $282 = 0, $283 = 0, $284 = 0, $288 = 0, $290 = 0, $293 = 0, $294 = 0, $297 = 0, $298 = 0, $3 = 0, $300 = 0, $307 = 0, $308 = 0, $309 = 0, $310 = 0, $314 = 0, $316 = 0, $319 = 0, $32 = 0, $320 = 0, $323 = 0, $324 = 0, $326 = 0, $33 = 0, $333 = 0, $334 = 0, $335 = 0, $336 = 0, $340 = 0, $342 = 0, $345 = 0, $346 = 0, $349 = 0, $35 = 0, $350 = 0, $352 = 0, $359 = 0, $360 = 0, $361 = 0, $362 = 0, $366 = 0, $368 = 0, $371 = 0, $372 = 0, $375 = 0, $379 = 0, $382 = 0, $383 = 0, $385 = 0, $392 = 0, $393 = 0, $394 = 0, $395 = 0, $399 = 0, $4 = 0, $401 = 0, $404 = 0, $405 = 0, $408 = 0, $409 = 0, $411 = 0, $418 = 0, $419 = 0, $42 = 0, $420 = 0, $421 = 0, $425 = 0, $427 = 0, $43 = 0, $430 = 0, $431 = 0, $434 = 0, $435 = 0, $437 = 0, $44 = 0, $444 = 0, $445 = 0, $446 = 0, $447 = 0, $45 = 0, $451 = 0, $453 = 0, $456 = 0, $457 = 0, $460 = 0, $461 = 0, $463 = 0, $470 = 0, $471 = 0, $472 = 0, $473 = 0, $477 = 0, $479 = 0, $482 = 0, $483 = 0, $486 = 0, $488 = 0, $49 = 0, $491 = 0, $492 = 0, $494 = 0, $5 = 0, $501 = 0, $502 = 0, $503 = 0, $504 = 0, $508 = 0, $51 = 0, $510 = 0, $513 = 0, $514 = 0, $517 = 0, $518 = 0, $520 = 0, $527 = 0, $528 = 0, $529 = 0, $530 = 0, $534 = 0, $536 = 0, $539 = 0, $54 = 0, $540 = 0, $543 = 0, $544 = 0, $546 = 0, $55 = 0, $553 = 0, $554 = 0, $555 = 0, $556 = 0, $560 = 0, $562 = 0, $565 = 0, $566 = 0, $569 = 0, $570 = 0, $572 = 0, $579 = 0, $58 = 0, $580 = 0, $581 = 0, $582 = 0, $586 = 0, $588 = 0, $591 = 0, $592 = 0, $595 = 0, $596 = 0, $598 = 0, $6 = 0, $60 = 0, $602 = 0, $603 = 0, $605 = 0, $612 = 0, $613 = 0, $614 = 0, $615 = 0, $619 = 0, $621 = 0, $624 = 0, $625 = 0, $628 = 0, $629 = 0, $63 = 0, $631 = 0, $638 = 0, $639 = 0, $64 = 0, $640 = 0, $641 = 0, $645 = 0, $647 = 0, $650 = 0, $651 = 0, $654 = 0, $655 = 0, $657 = 0, $66 = 0, $664 = 0, $665 = 0, $666 = 0, $667 = 0, $671 = 0, $673 = 0, $676 = 0, $677 = 0, $680 = 0, $681 = 0, $683 = 0, $690 = 0, $691 = 0, $692 = 0, $693 = 0, $697 = 0, $699 = 0, $7 = 0, $702 = 0, $703 = 0, $706 = 0, $707 = 0, $709 = 0, $716 = 0, $717 = 0, $718 = 0, $719 = 0, $723 = 0, $725 = 0, $728 = 0, $729 = 0, $73 = 0, $732 = 0, $733 = 0, $735 = 0, $74 = 0, $742 = 0, $743 = 0, $744 = 0, $745 = 0, $749 = 0, $75 = 0, $751 = 0, $754 = 0, $755 = 0, $758 = 0, $759 = 0, $76 = 0, $761 = 0, $768 = 0, $769 = 0, $770 = 0, $771 = 0, $775 = 0, $777 = 0, $780 = 0, $781 = 0, $784 = 0, $785 = 0, $787 = 0, $794 = 0, $795 = 0, $796 = 0, $797 = 0, $8 = 0, $80 = 0, $801 = 0, $803 = 0, $806 = 0, $807 = 0, $82 = 0, $85 = 0, $86 = 0, $89 = 0, $9 = 0, $90 = 0, $92 = 0, $99 = 0, $__v$i$i142 = 0, dest = 0, sp = 0, src = 0, stop = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 720 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $__v$i$i142 = sp + 696 | 0;\n $0 = sp + 672 | 0;\n $1 = sp + 648 | 0;\n $2 = sp + 624 | 0;\n $3 = sp + 600 | 0;\n $4 = sp + 576 | 0;\n $5 = sp + 552 | 0;\n $6 = sp + 528 | 0;\n $7 = sp + 504 | 0;\n $8 = sp + 480 | 0;\n $9 = sp + 456 | 0;\n $10 = sp + 432 | 0;\n $11 = sp + 408 | 0;\n $12 = sp + 384 | 0;\n $13 = sp + 360 | 0;\n $14 = sp + 336 | 0;\n $15 = sp + 312 | 0;\n $16 = sp + 288 | 0;\n $17 = sp + 264 | 0;\n $18 = sp + 240 | 0;\n $19 = sp + 216 | 0;\n $20 = sp + 192 | 0;\n $21 = sp + 168 | 0;\n $22 = sp + 144 | 0;\n $23 = sp + 120 | 0;\n $24 = sp + 96 | 0;\n $25 = sp + 72 | 0;\n $26 = sp + 48 | 0;\n $27 = sp + 24 | 0;\n $28 = sp;\n L1 : do if (($first | 0) == ($last | 0)) $$0 = $first; else do switch (HEAP8[$first >> 0] | 0) {\n case 118:\n  {\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj5EEERAT__Kc($0, 14176);\n   $32 = $db + 4 | 0;\n   $33 = HEAP32[$32 >> 2] | 0;\n   $35 = HEAP32[$db + 8 >> 2] | 0;\n   if ($33 >>> 0 < $35 >>> 0) {\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($33, $0);\n    HEAP32[$32 >> 2] = (HEAP32[$32 >> 2] | 0) + 24;\n   } else {\n    $42 = HEAP32[$db >> 2] | 0;\n    $43 = $33 - $42 | 0;\n    $44 = ($43 | 0) / 24 | 0;\n    $45 = $44 + 1 | 0;\n    if (($43 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n    $49 = ($35 - $42 | 0) / 24 | 0;\n    if ($49 >>> 0 < 1073741823) {\n     $51 = $49 << 1;\n     $$0$i$i$i = $51 >>> 0 < $45 >>> 0 ? $45 : $51;\n    } else $$0$i$i$i = 2147483647;\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i, $44, $db + 12 | 0);\n    $54 = $__v$i$i142 + 8 | 0;\n    $55 = HEAP32[$54 >> 2] | 0;\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($55, $0);\n    HEAP32[$54 >> 2] = $55 + 24;\n    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);\n   }\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0);\n   $$0 = $first + 1 | 0;\n   break L1;\n   break;\n  }\n case 119:\n  {\n   HEAP8[$1 >> 0] = 14;\n   $58 = $1 + 1 | 0;\n   HEAP8[$58 >> 0] = HEAP8[13738] | 0;\n   HEAP8[$58 + 1 >> 0] = HEAP8[13739] | 0;\n   HEAP8[$58 + 2 >> 0] = HEAP8[13740] | 0;\n   HEAP8[$58 + 3 >> 0] = HEAP8[13741] | 0;\n   HEAP8[$58 + 4 >> 0] = HEAP8[13742] | 0;\n   HEAP8[$58 + 5 >> 0] = HEAP8[13743] | 0;\n   HEAP8[$58 + 6 >> 0] = HEAP8[13744] | 0;\n   HEAP8[$1 + 8 >> 0] = 0;\n   $60 = $1 + 12 | 0;\n   HEAP32[$60 >> 2] = 0;\n   HEAP32[$60 + 4 >> 2] = 0;\n   HEAP32[$60 + 8 >> 2] = 0;\n   $63 = $db + 4 | 0;\n   $64 = HEAP32[$63 >> 2] | 0;\n   $66 = HEAP32[$db + 8 >> 2] | 0;\n   if ($64 >>> 0 < $66 >>> 0) {\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($64, $1);\n    HEAP32[$63 >> 2] = (HEAP32[$63 >> 2] | 0) + 24;\n   } else {\n    $73 = HEAP32[$db >> 2] | 0;\n    $74 = $64 - $73 | 0;\n    $75 = ($74 | 0) / 24 | 0;\n    $76 = $75 + 1 | 0;\n    if (($74 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n    $80 = ($66 - $73 | 0) / 24 | 0;\n    if ($80 >>> 0 < 1073741823) {\n     $82 = $80 << 1;\n     $$0$i$i$i4 = $82 >>> 0 < $76 >>> 0 ? $76 : $82;\n    } else $$0$i$i$i4 = 2147483647;\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i4, $75, $db + 12 | 0);\n    $85 = $__v$i$i142 + 8 | 0;\n    $86 = HEAP32[$85 >> 2] | 0;\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($86, $1);\n    HEAP32[$85 >> 2] = $86 + 24;\n    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);\n   }\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1);\n   $$0 = $first + 1 | 0;\n   break L1;\n   break;\n  }\n case 98:\n  {\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj5EEERAT__Kc($2, 14181);\n   $89 = $db + 4 | 0;\n   $90 = HEAP32[$89 >> 2] | 0;\n   $92 = HEAP32[$db + 8 >> 2] | 0;\n   if ($90 >>> 0 < $92 >>> 0) {\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($90, $2);\n    HEAP32[$89 >> 2] = (HEAP32[$89 >> 2] | 0) + 24;\n   } else {\n    $99 = HEAP32[$db >> 2] | 0;\n    $100 = $90 - $99 | 0;\n    $101 = ($100 | 0) / 24 | 0;\n    $102 = $101 + 1 | 0;\n    if (($100 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n    $106 = ($92 - $99 | 0) / 24 | 0;\n    if ($106 >>> 0 < 1073741823) {\n     $108 = $106 << 1;\n     $$0$i$i$i9 = $108 >>> 0 < $102 >>> 0 ? $102 : $108;\n    } else $$0$i$i$i9 = 2147483647;\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i9, $101, $db + 12 | 0);\n    $111 = $__v$i$i142 + 8 | 0;\n    $112 = HEAP32[$111 >> 2] | 0;\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($112, $2);\n    HEAP32[$111 >> 2] = $112 + 24;\n    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);\n   }\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($2);\n   $$0 = $first + 1 | 0;\n   break L1;\n   break;\n  }\n case 99:\n  {\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj5EEERAT__Kc($3, 13757);\n   $115 = $db + 4 | 0;\n   $116 = HEAP32[$115 >> 2] | 0;\n   $118 = HEAP32[$db + 8 >> 2] | 0;\n   if ($116 >>> 0 < $118 >>> 0) {\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($116, $3);\n    HEAP32[$115 >> 2] = (HEAP32[$115 >> 2] | 0) + 24;\n   } else {\n    $125 = HEAP32[$db >> 2] | 0;\n    $126 = $116 - $125 | 0;\n    $127 = ($126 | 0) / 24 | 0;\n    $128 = $127 + 1 | 0;\n    if (($126 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n    $132 = ($118 - $125 | 0) / 24 | 0;\n    if ($132 >>> 0 < 1073741823) {\n     $134 = $132 << 1;\n     $$0$i$i$i14 = $134 >>> 0 < $128 >>> 0 ? $128 : $134;\n    } else $$0$i$i$i14 = 2147483647;\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i14, $127, $db + 12 | 0);\n    $137 = $__v$i$i142 + 8 | 0;\n    $138 = HEAP32[$137 >> 2] | 0;\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($138, $3);\n    HEAP32[$137 >> 2] = $138 + 24;\n    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);\n   }\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($3);\n   $$0 = $first + 1 | 0;\n   break L1;\n   break;\n  }\n case 97:\n  {\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj12EEERAT__Kc($4, 13762);\n   $141 = $db + 4 | 0;\n   $142 = HEAP32[$141 >> 2] | 0;\n   $144 = HEAP32[$db + 8 >> 2] | 0;\n   if ($142 >>> 0 < $144 >>> 0) {\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($142, $4);\n    HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + 24;\n   } else {\n    $151 = HEAP32[$db >> 2] | 0;\n    $152 = $142 - $151 | 0;\n    $153 = ($152 | 0) / 24 | 0;\n    $154 = $153 + 1 | 0;\n    if (($152 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n    $158 = ($144 - $151 | 0) / 24 | 0;\n    if ($158 >>> 0 < 1073741823) {\n     $160 = $158 << 1;\n     $$0$i$i$i19 = $160 >>> 0 < $154 >>> 0 ? $154 : $160;\n    } else $$0$i$i$i19 = 2147483647;\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i19, $153, $db + 12 | 0);\n    $163 = $__v$i$i142 + 8 | 0;\n    $164 = HEAP32[$163 >> 2] | 0;\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($164, $4);\n    HEAP32[$163 >> 2] = $164 + 24;\n    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);\n   }\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($4);\n   $$0 = $first + 1 | 0;\n   break L1;\n   break;\n  }\n case 104:\n  {\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj14EEERAT__Kc($5, 13774);\n   $167 = $db + 4 | 0;\n   $168 = HEAP32[$167 >> 2] | 0;\n   $170 = HEAP32[$db + 8 >> 2] | 0;\n   if ($168 >>> 0 < $170 >>> 0) {\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($168, $5);\n    HEAP32[$167 >> 2] = (HEAP32[$167 >> 2] | 0) + 24;\n   } else {\n    $177 = HEAP32[$db >> 2] | 0;\n    $178 = $168 - $177 | 0;\n    $179 = ($178 | 0) / 24 | 0;\n    $180 = $179 + 1 | 0;\n    if (($178 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n    $184 = ($170 - $177 | 0) / 24 | 0;\n    if ($184 >>> 0 < 1073741823) {\n     $186 = $184 << 1;\n     $$0$i$i$i24 = $186 >>> 0 < $180 >>> 0 ? $180 : $186;\n    } else $$0$i$i$i24 = 2147483647;\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i24, $179, $db + 12 | 0);\n    $189 = $__v$i$i142 + 8 | 0;\n    $190 = HEAP32[$189 >> 2] | 0;\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($190, $5);\n    HEAP32[$189 >> 2] = $190 + 24;\n    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);\n   }\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($5);\n   $$0 = $first + 1 | 0;\n   break L1;\n   break;\n  }\n case 115:\n  {\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj6EEERAT__Kc($6, 13788);\n   $193 = $db + 4 | 0;\n   $194 = HEAP32[$193 >> 2] | 0;\n   $196 = HEAP32[$db + 8 >> 2] | 0;\n   if ($194 >>> 0 < $196 >>> 0) {\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($194, $6);\n    HEAP32[$193 >> 2] = (HEAP32[$193 >> 2] | 0) + 24;\n   } else {\n    $203 = HEAP32[$db >> 2] | 0;\n    $204 = $194 - $203 | 0;\n    $205 = ($204 | 0) / 24 | 0;\n    $206 = $205 + 1 | 0;\n    if (($204 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n    $210 = ($196 - $203 | 0) / 24 | 0;\n    if ($210 >>> 0 < 1073741823) {\n     $212 = $210 << 1;\n     $$0$i$i$i29 = $212 >>> 0 < $206 >>> 0 ? $206 : $212;\n    } else $$0$i$i$i29 = 2147483647;\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i29, $205, $db + 12 | 0);\n    $215 = $__v$i$i142 + 8 | 0;\n    $216 = HEAP32[$215 >> 2] | 0;\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($216, $6);\n    HEAP32[$215 >> 2] = $216 + 24;\n    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);\n   }\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($6);\n   $$0 = $first + 1 | 0;\n   break L1;\n   break;\n  }\n case 116:\n  {\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj15EEERAT__Kc($7, 13794);\n   $219 = $db + 4 | 0;\n   $220 = HEAP32[$219 >> 2] | 0;\n   $222 = HEAP32[$db + 8 >> 2] | 0;\n   if ($220 >>> 0 < $222 >>> 0) {\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($220, $7);\n    HEAP32[$219 >> 2] = (HEAP32[$219 >> 2] | 0) + 24;\n   } else {\n    $229 = HEAP32[$db >> 2] | 0;\n    $230 = $220 - $229 | 0;\n    $231 = ($230 | 0) / 24 | 0;\n    $232 = $231 + 1 | 0;\n    if (($230 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n    $236 = ($222 - $229 | 0) / 24 | 0;\n    if ($236 >>> 0 < 1073741823) {\n     $238 = $236 << 1;\n     $$0$i$i$i34 = $238 >>> 0 < $232 >>> 0 ? $232 : $238;\n    } else $$0$i$i$i34 = 2147483647;\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i34, $231, $db + 12 | 0);\n    $241 = $__v$i$i142 + 8 | 0;\n    $242 = HEAP32[$241 >> 2] | 0;\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($242, $7);\n    HEAP32[$241 >> 2] = $242 + 24;\n    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);\n   }\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($7);\n   $$0 = $first + 1 | 0;\n   break L1;\n   break;\n  }\n case 105:\n  {\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj4EEERAT__Kc($8, 14186);\n   $245 = $db + 4 | 0;\n   $246 = HEAP32[$245 >> 2] | 0;\n   $248 = HEAP32[$db + 8 >> 2] | 0;\n   if ($246 >>> 0 < $248 >>> 0) {\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($246, $8);\n    HEAP32[$245 >> 2] = (HEAP32[$245 >> 2] | 0) + 24;\n   } else {\n    $255 = HEAP32[$db >> 2] | 0;\n    $256 = $246 - $255 | 0;\n    $257 = ($256 | 0) / 24 | 0;\n    $258 = $257 + 1 | 0;\n    if (($256 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n    $262 = ($248 - $255 | 0) / 24 | 0;\n    if ($262 >>> 0 < 1073741823) {\n     $264 = $262 << 1;\n     $$0$i$i$i39 = $264 >>> 0 < $258 >>> 0 ? $258 : $264;\n    } else $$0$i$i$i39 = 2147483647;\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i39, $257, $db + 12 | 0);\n    $267 = $__v$i$i142 + 8 | 0;\n    $268 = HEAP32[$267 >> 2] | 0;\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($268, $8);\n    HEAP32[$267 >> 2] = $268 + 24;\n    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);\n   }\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($8);\n   $$0 = $first + 1 | 0;\n   break L1;\n   break;\n  }\n case 106:\n  {\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj13EEERAT__Kc($9, 14190);\n   $271 = $db + 4 | 0;\n   $272 = HEAP32[$271 >> 2] | 0;\n   $274 = HEAP32[$db + 8 >> 2] | 0;\n   if ($272 >>> 0 < $274 >>> 0) {\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($272, $9);\n    HEAP32[$271 >> 2] = (HEAP32[$271 >> 2] | 0) + 24;\n   } else {\n    $281 = HEAP32[$db >> 2] | 0;\n    $282 = $272 - $281 | 0;\n    $283 = ($282 | 0) / 24 | 0;\n    $284 = $283 + 1 | 0;\n    if (($282 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n    $288 = ($274 - $281 | 0) / 24 | 0;\n    if ($288 >>> 0 < 1073741823) {\n     $290 = $288 << 1;\n     $$0$i$i$i44 = $290 >>> 0 < $284 >>> 0 ? $284 : $290;\n    } else $$0$i$i$i44 = 2147483647;\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i44, $283, $db + 12 | 0);\n    $293 = $__v$i$i142 + 8 | 0;\n    $294 = HEAP32[$293 >> 2] | 0;\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($294, $9);\n    HEAP32[$293 >> 2] = $294 + 24;\n    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);\n   }\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($9);\n   $$0 = $first + 1 | 0;\n   break L1;\n   break;\n  }\n case 108:\n  {\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj5EEERAT__Kc($10, 14203);\n   $297 = $db + 4 | 0;\n   $298 = HEAP32[$297 >> 2] | 0;\n   $300 = HEAP32[$db + 8 >> 2] | 0;\n   if ($298 >>> 0 < $300 >>> 0) {\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($298, $10);\n    HEAP32[$297 >> 2] = (HEAP32[$297 >> 2] | 0) + 24;\n   } else {\n    $307 = HEAP32[$db >> 2] | 0;\n    $308 = $298 - $307 | 0;\n    $309 = ($308 | 0) / 24 | 0;\n    $310 = $309 + 1 | 0;\n    if (($308 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n    $314 = ($300 - $307 | 0) / 24 | 0;\n    if ($314 >>> 0 < 1073741823) {\n     $316 = $314 << 1;\n     $$0$i$i$i49 = $316 >>> 0 < $310 >>> 0 ? $310 : $316;\n    } else $$0$i$i$i49 = 2147483647;\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i49, $309, $db + 12 | 0);\n    $319 = $__v$i$i142 + 8 | 0;\n    $320 = HEAP32[$319 >> 2] | 0;\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($320, $10);\n    HEAP32[$319 >> 2] = $320 + 24;\n    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);\n   }\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($10);\n   $$0 = $first + 1 | 0;\n   break L1;\n   break;\n  }\n case 109:\n  {\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj14EEERAT__Kc($11, 14208);\n   $323 = $db + 4 | 0;\n   $324 = HEAP32[$323 >> 2] | 0;\n   $326 = HEAP32[$db + 8 >> 2] | 0;\n   if ($324 >>> 0 < $326 >>> 0) {\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($324, $11);\n    HEAP32[$323 >> 2] = (HEAP32[$323 >> 2] | 0) + 24;\n   } else {\n    $333 = HEAP32[$db >> 2] | 0;\n    $334 = $324 - $333 | 0;\n    $335 = ($334 | 0) / 24 | 0;\n    $336 = $335 + 1 | 0;\n    if (($334 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n    $340 = ($326 - $333 | 0) / 24 | 0;\n    if ($340 >>> 0 < 1073741823) {\n     $342 = $340 << 1;\n     $$0$i$i$i54 = $342 >>> 0 < $336 >>> 0 ? $336 : $342;\n    } else $$0$i$i$i54 = 2147483647;\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i54, $335, $db + 12 | 0);\n    $345 = $__v$i$i142 + 8 | 0;\n    $346 = HEAP32[$345 >> 2] | 0;\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($346, $11);\n    HEAP32[$345 >> 2] = $346 + 24;\n    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);\n   }\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($11);\n   $$0 = $first + 1 | 0;\n   break L1;\n   break;\n  }\n case 120:\n  {\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($12, 14222);\n   $349 = $db + 4 | 0;\n   $350 = HEAP32[$349 >> 2] | 0;\n   $352 = HEAP32[$db + 8 >> 2] | 0;\n   if ($350 >>> 0 < $352 >>> 0) {\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($350, $12);\n    HEAP32[$349 >> 2] = (HEAP32[$349 >> 2] | 0) + 24;\n   } else {\n    $359 = HEAP32[$db >> 2] | 0;\n    $360 = $350 - $359 | 0;\n    $361 = ($360 | 0) / 24 | 0;\n    $362 = $361 + 1 | 0;\n    if (($360 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n    $366 = ($352 - $359 | 0) / 24 | 0;\n    if ($366 >>> 0 < 1073741823) {\n     $368 = $366 << 1;\n     $$0$i$i$i59 = $368 >>> 0 < $362 >>> 0 ? $362 : $368;\n    } else $$0$i$i$i59 = 2147483647;\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i59, $361, $db + 12 | 0);\n    $371 = $__v$i$i142 + 8 | 0;\n    $372 = HEAP32[$371 >> 2] | 0;\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($372, $12);\n    HEAP32[$371 >> 2] = $372 + 24;\n    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);\n   }\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($12);\n   $$0 = $first + 1 | 0;\n   break L1;\n   break;\n  }\n case 121:\n  {\n   $375 = _malloc(32) | 0;\n   HEAP32[$13 + 8 >> 2] = $375;\n   HEAP32[$13 >> 2] = 33;\n   HEAP32[$13 + 4 >> 2] = 18;\n   dest = $375;\n   src = 14232;\n   stop = dest + 18 | 0;\n   do {\n    HEAP8[dest >> 0] = HEAP8[src >> 0] | 0;\n    dest = dest + 1 | 0;\n    src = src + 1 | 0;\n   } while ((dest | 0) < (stop | 0));\n   HEAP8[$375 + 18 >> 0] = 0;\n   $379 = $13 + 12 | 0;\n   HEAP32[$379 >> 2] = 0;\n   HEAP32[$379 + 4 >> 2] = 0;\n   HEAP32[$379 + 8 >> 2] = 0;\n   $382 = $db + 4 | 0;\n   $383 = HEAP32[$382 >> 2] | 0;\n   $385 = HEAP32[$db + 8 >> 2] | 0;\n   if ($383 >>> 0 < $385 >>> 0) {\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($383, $13);\n    HEAP32[$382 >> 2] = (HEAP32[$382 >> 2] | 0) + 24;\n   } else {\n    $392 = HEAP32[$db >> 2] | 0;\n    $393 = $383 - $392 | 0;\n    $394 = ($393 | 0) / 24 | 0;\n    $395 = $394 + 1 | 0;\n    if (($393 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n    $399 = ($385 - $392 | 0) / 24 | 0;\n    if ($399 >>> 0 < 1073741823) {\n     $401 = $399 << 1;\n     $$0$i$i$i66 = $401 >>> 0 < $395 >>> 0 ? $395 : $401;\n    } else $$0$i$i$i66 = 2147483647;\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i66, $394, $db + 12 | 0);\n    $404 = $__v$i$i142 + 8 | 0;\n    $405 = HEAP32[$404 >> 2] | 0;\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($405, $13);\n    HEAP32[$404 >> 2] = $405 + 24;\n    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);\n   }\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($13);\n   $$0 = $first + 1 | 0;\n   break L1;\n   break;\n  }\n case 110:\n  {\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj9EEERAT__Kc($14, 13824);\n   $408 = $db + 4 | 0;\n   $409 = HEAP32[$408 >> 2] | 0;\n   $411 = HEAP32[$db + 8 >> 2] | 0;\n   if ($409 >>> 0 < $411 >>> 0) {\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($409, $14);\n    HEAP32[$408 >> 2] = (HEAP32[$408 >> 2] | 0) + 24;\n   } else {\n    $418 = HEAP32[$db >> 2] | 0;\n    $419 = $409 - $418 | 0;\n    $420 = ($419 | 0) / 24 | 0;\n    $421 = $420 + 1 | 0;\n    if (($419 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n    $425 = ($411 - $418 | 0) / 24 | 0;\n    if ($425 >>> 0 < 1073741823) {\n     $427 = $425 << 1;\n     $$0$i$i$i71 = $427 >>> 0 < $421 >>> 0 ? $421 : $427;\n    } else $$0$i$i$i71 = 2147483647;\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i71, $420, $db + 12 | 0);\n    $430 = $__v$i$i142 + 8 | 0;\n    $431 = HEAP32[$430 >> 2] | 0;\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($431, $14);\n    HEAP32[$430 >> 2] = $431 + 24;\n    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);\n   }\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($14);\n   $$0 = $first + 1 | 0;\n   break L1;\n   break;\n  }\n case 111:\n  {\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj18EEERAT__Kc($15, 13833);\n   $434 = $db + 4 | 0;\n   $435 = HEAP32[$434 >> 2] | 0;\n   $437 = HEAP32[$db + 8 >> 2] | 0;\n   if ($435 >>> 0 < $437 >>> 0) {\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($435, $15);\n    HEAP32[$434 >> 2] = (HEAP32[$434 >> 2] | 0) + 24;\n   } else {\n    $444 = HEAP32[$db >> 2] | 0;\n    $445 = $435 - $444 | 0;\n    $446 = ($445 | 0) / 24 | 0;\n    $447 = $446 + 1 | 0;\n    if (($445 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n    $451 = ($437 - $444 | 0) / 24 | 0;\n    if ($451 >>> 0 < 1073741823) {\n     $453 = $451 << 1;\n     $$0$i$i$i76 = $453 >>> 0 < $447 >>> 0 ? $447 : $453;\n    } else $$0$i$i$i76 = 2147483647;\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i76, $446, $db + 12 | 0);\n    $456 = $__v$i$i142 + 8 | 0;\n    $457 = HEAP32[$456 >> 2] | 0;\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($457, $15);\n    HEAP32[$456 >> 2] = $457 + 24;\n    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);\n   }\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($15);\n   $$0 = $first + 1 | 0;\n   break L1;\n   break;\n  }\n case 102:\n  {\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj6EEERAT__Kc($16, 14251);\n   $460 = $db + 4 | 0;\n   $461 = HEAP32[$460 >> 2] | 0;\n   $463 = HEAP32[$db + 8 >> 2] | 0;\n   if ($461 >>> 0 < $463 >>> 0) {\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($461, $16);\n    HEAP32[$460 >> 2] = (HEAP32[$460 >> 2] | 0) + 24;\n   } else {\n    $470 = HEAP32[$db >> 2] | 0;\n    $471 = $461 - $470 | 0;\n    $472 = ($471 | 0) / 24 | 0;\n    $473 = $472 + 1 | 0;\n    if (($471 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n    $477 = ($463 - $470 | 0) / 24 | 0;\n    if ($477 >>> 0 < 1073741823) {\n     $479 = $477 << 1;\n     $$0$i$i$i81 = $479 >>> 0 < $473 >>> 0 ? $473 : $479;\n    } else $$0$i$i$i81 = 2147483647;\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i81, $472, $db + 12 | 0);\n    $482 = $__v$i$i142 + 8 | 0;\n    $483 = HEAP32[$482 >> 2] | 0;\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($483, $16);\n    HEAP32[$482 >> 2] = $483 + 24;\n    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);\n   }\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($16);\n   $$0 = $first + 1 | 0;\n   break L1;\n   break;\n  }\n case 100:\n  {\n   HEAP8[$17 >> 0] = 12;\n   $486 = $17 + 1 | 0;\n   HEAP8[$486 >> 0] = HEAP8[14257] | 0;\n   HEAP8[$486 + 1 >> 0] = HEAP8[14258] | 0;\n   HEAP8[$486 + 2 >> 0] = HEAP8[14259] | 0;\n   HEAP8[$486 + 3 >> 0] = HEAP8[14260] | 0;\n   HEAP8[$486 + 4 >> 0] = HEAP8[14261] | 0;\n   HEAP8[$486 + 5 >> 0] = HEAP8[14262] | 0;\n   HEAP8[$17 + 7 >> 0] = 0;\n   $488 = $17 + 12 | 0;\n   HEAP32[$488 >> 2] = 0;\n   HEAP32[$488 + 4 >> 2] = 0;\n   HEAP32[$488 + 8 >> 2] = 0;\n   $491 = $db + 4 | 0;\n   $492 = HEAP32[$491 >> 2] | 0;\n   $494 = HEAP32[$db + 8 >> 2] | 0;\n   if ($492 >>> 0 < $494 >>> 0) {\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($492, $17);\n    HEAP32[$491 >> 2] = (HEAP32[$491 >> 2] | 0) + 24;\n   } else {\n    $501 = HEAP32[$db >> 2] | 0;\n    $502 = $492 - $501 | 0;\n    $503 = ($502 | 0) / 24 | 0;\n    $504 = $503 + 1 | 0;\n    if (($502 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n    $508 = ($494 - $501 | 0) / 24 | 0;\n    if ($508 >>> 0 < 1073741823) {\n     $510 = $508 << 1;\n     $$0$i$i$i88 = $510 >>> 0 < $504 >>> 0 ? $504 : $510;\n    } else $$0$i$i$i88 = 2147483647;\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i88, $503, $db + 12 | 0);\n    $513 = $__v$i$i142 + 8 | 0;\n    $514 = HEAP32[$513 >> 2] | 0;\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($514, $17);\n    HEAP32[$513 >> 2] = $514 + 24;\n    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);\n   }\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($17);\n   $$0 = $first + 1 | 0;\n   break L1;\n   break;\n  }\n case 101:\n  {\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj12EEERAT__Kc($18, 14264);\n   $517 = $db + 4 | 0;\n   $518 = HEAP32[$517 >> 2] | 0;\n   $520 = HEAP32[$db + 8 >> 2] | 0;\n   if ($518 >>> 0 < $520 >>> 0) {\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($518, $18);\n    HEAP32[$517 >> 2] = (HEAP32[$517 >> 2] | 0) + 24;\n   } else {\n    $527 = HEAP32[$db >> 2] | 0;\n    $528 = $518 - $527 | 0;\n    $529 = ($528 | 0) / 24 | 0;\n    $530 = $529 + 1 | 0;\n    if (($528 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n    $534 = ($520 - $527 | 0) / 24 | 0;\n    if ($534 >>> 0 < 1073741823) {\n     $536 = $534 << 1;\n     $$0$i$i$i93 = $536 >>> 0 < $530 >>> 0 ? $530 : $536;\n    } else $$0$i$i$i93 = 2147483647;\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i93, $529, $db + 12 | 0);\n    $539 = $__v$i$i142 + 8 | 0;\n    $540 = HEAP32[$539 >> 2] | 0;\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($540, $18);\n    HEAP32[$539 >> 2] = $540 + 24;\n    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);\n   }\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($18);\n   $$0 = $first + 1 | 0;\n   break L1;\n   break;\n  }\n case 103:\n  {\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($19, 14276);\n   $543 = $db + 4 | 0;\n   $544 = HEAP32[$543 >> 2] | 0;\n   $546 = HEAP32[$db + 8 >> 2] | 0;\n   if ($544 >>> 0 < $546 >>> 0) {\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($544, $19);\n    HEAP32[$543 >> 2] = (HEAP32[$543 >> 2] | 0) + 24;\n   } else {\n    $553 = HEAP32[$db >> 2] | 0;\n    $554 = $544 - $553 | 0;\n    $555 = ($554 | 0) / 24 | 0;\n    $556 = $555 + 1 | 0;\n    if (($554 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n    $560 = ($546 - $553 | 0) / 24 | 0;\n    if ($560 >>> 0 < 1073741823) {\n     $562 = $560 << 1;\n     $$0$i$i$i98 = $562 >>> 0 < $556 >>> 0 ? $556 : $562;\n    } else $$0$i$i$i98 = 2147483647;\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i98, $555, $db + 12 | 0);\n    $565 = $__v$i$i142 + 8 | 0;\n    $566 = HEAP32[$565 >> 2] | 0;\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($566, $19);\n    HEAP32[$565 >> 2] = $566 + 24;\n    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);\n   }\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($19);\n   $$0 = $first + 1 | 0;\n   break L1;\n   break;\n  }\n case 122:\n  {\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj4EEERAT__Kc($20, 14287);\n   $569 = $db + 4 | 0;\n   $570 = HEAP32[$569 >> 2] | 0;\n   $572 = HEAP32[$db + 8 >> 2] | 0;\n   if ($570 >>> 0 < $572 >>> 0) {\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($570, $20);\n    HEAP32[$569 >> 2] = (HEAP32[$569 >> 2] | 0) + 24;\n   } else {\n    $579 = HEAP32[$db >> 2] | 0;\n    $580 = $570 - $579 | 0;\n    $581 = ($580 | 0) / 24 | 0;\n    $582 = $581 + 1 | 0;\n    if (($580 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n    $586 = ($572 - $579 | 0) / 24 | 0;\n    if ($586 >>> 0 < 1073741823) {\n     $588 = $586 << 1;\n     $$0$i$i$i103 = $588 >>> 0 < $582 >>> 0 ? $582 : $588;\n    } else $$0$i$i$i103 = 2147483647;\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i103, $581, $db + 12 | 0);\n    $591 = $__v$i$i142 + 8 | 0;\n    $592 = HEAP32[$591 >> 2] | 0;\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($592, $20);\n    HEAP32[$591 >> 2] = $592 + 24;\n    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);\n   }\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($20);\n   $$0 = $first + 1 | 0;\n   break L1;\n   break;\n  }\n case 117:\n  {\n   $595 = $first + 1 | 0;\n   $596 = __ZN10__cxxabiv112_GLOBAL__N_117parse_source_nameINS0_2DbEEEPKcS4_S4_RT_($595, $last, $db) | 0;\n   STACKTOP = sp;\n   return (($596 | 0) == ($595 | 0) ? $first : $596) | 0;\n  }\n case 68:\n  {\n   $598 = $first + 1 | 0;\n   if (($598 | 0) == ($last | 0)) {\n    $$0 = $first;\n    break L1;\n   }\n   switch (HEAP8[$598 >> 0] | 0) {\n   case 100:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($21, 14291);\n     $602 = $db + 4 | 0;\n     $603 = HEAP32[$602 >> 2] | 0;\n     $605 = HEAP32[$db + 8 >> 2] | 0;\n     if ($603 >>> 0 < $605 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($603, $21);\n      HEAP32[$602 >> 2] = (HEAP32[$602 >> 2] | 0) + 24;\n     } else {\n      $612 = HEAP32[$db >> 2] | 0;\n      $613 = $603 - $612 | 0;\n      $614 = ($613 | 0) / 24 | 0;\n      $615 = $614 + 1 | 0;\n      if (($613 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $619 = ($605 - $612 | 0) / 24 | 0;\n      if ($619 >>> 0 < 1073741823) {\n       $621 = $619 << 1;\n       $$0$i$i$i108 = $621 >>> 0 < $615 >>> 0 ? $615 : $621;\n      } else $$0$i$i$i108 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i108, $614, $db + 12 | 0);\n      $624 = $__v$i$i142 + 8 | 0;\n      $625 = HEAP32[$624 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($625, $21);\n      HEAP32[$624 >> 2] = $625 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($21);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 101:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($22, 14301);\n     $628 = $db + 4 | 0;\n     $629 = HEAP32[$628 >> 2] | 0;\n     $631 = HEAP32[$db + 8 >> 2] | 0;\n     if ($629 >>> 0 < $631 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($629, $22);\n      HEAP32[$628 >> 2] = (HEAP32[$628 >> 2] | 0) + 24;\n     } else {\n      $638 = HEAP32[$db >> 2] | 0;\n      $639 = $629 - $638 | 0;\n      $640 = ($639 | 0) / 24 | 0;\n      $641 = $640 + 1 | 0;\n      if (($639 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $645 = ($631 - $638 | 0) / 24 | 0;\n      if ($645 >>> 0 < 1073741823) {\n       $647 = $645 << 1;\n       $$0$i$i$i113 = $647 >>> 0 < $641 >>> 0 ? $641 : $647;\n      } else $$0$i$i$i113 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i113, $640, $db + 12 | 0);\n      $650 = $__v$i$i142 + 8 | 0;\n      $651 = HEAP32[$650 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($651, $22);\n      HEAP32[$650 >> 2] = $651 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($22);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 102:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($23, 14312);\n     $654 = $db + 4 | 0;\n     $655 = HEAP32[$654 >> 2] | 0;\n     $657 = HEAP32[$db + 8 >> 2] | 0;\n     if ($655 >>> 0 < $657 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($655, $23);\n      HEAP32[$654 >> 2] = (HEAP32[$654 >> 2] | 0) + 24;\n     } else {\n      $664 = HEAP32[$db >> 2] | 0;\n      $665 = $655 - $664 | 0;\n      $666 = ($665 | 0) / 24 | 0;\n      $667 = $666 + 1 | 0;\n      if (($665 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $671 = ($657 - $664 | 0) / 24 | 0;\n      if ($671 >>> 0 < 1073741823) {\n       $673 = $671 << 1;\n       $$0$i$i$i118 = $673 >>> 0 < $667 >>> 0 ? $667 : $673;\n      } else $$0$i$i$i118 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i118, $666, $db + 12 | 0);\n      $676 = $__v$i$i142 + 8 | 0;\n      $677 = HEAP32[$676 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($677, $23);\n      HEAP32[$676 >> 2] = $677 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($23);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 104:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($24, 14322);\n     $680 = $db + 4 | 0;\n     $681 = HEAP32[$680 >> 2] | 0;\n     $683 = HEAP32[$db + 8 >> 2] | 0;\n     if ($681 >>> 0 < $683 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($681, $24);\n      HEAP32[$680 >> 2] = (HEAP32[$680 >> 2] | 0) + 24;\n     } else {\n      $690 = HEAP32[$db >> 2] | 0;\n      $691 = $681 - $690 | 0;\n      $692 = ($691 | 0) / 24 | 0;\n      $693 = $692 + 1 | 0;\n      if (($691 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $697 = ($683 - $690 | 0) / 24 | 0;\n      if ($697 >>> 0 < 1073741823) {\n       $699 = $697 << 1;\n       $$0$i$i$i123 = $699 >>> 0 < $693 >>> 0 ? $693 : $699;\n      } else $$0$i$i$i123 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i123, $692, $db + 12 | 0);\n      $702 = $__v$i$i142 + 8 | 0;\n      $703 = HEAP32[$702 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($703, $24);\n      HEAP32[$702 >> 2] = $703 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($24);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 105:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj9EEERAT__Kc($25, 14332);\n     $706 = $db + 4 | 0;\n     $707 = HEAP32[$706 >> 2] | 0;\n     $709 = HEAP32[$db + 8 >> 2] | 0;\n     if ($707 >>> 0 < $709 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($707, $25);\n      HEAP32[$706 >> 2] = (HEAP32[$706 >> 2] | 0) + 24;\n     } else {\n      $716 = HEAP32[$db >> 2] | 0;\n      $717 = $707 - $716 | 0;\n      $718 = ($717 | 0) / 24 | 0;\n      $719 = $718 + 1 | 0;\n      if (($717 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $723 = ($709 - $716 | 0) / 24 | 0;\n      if ($723 >>> 0 < 1073741823) {\n       $725 = $723 << 1;\n       $$0$i$i$i128 = $725 >>> 0 < $719 >>> 0 ? $719 : $725;\n      } else $$0$i$i$i128 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i128, $718, $db + 12 | 0);\n      $728 = $__v$i$i142 + 8 | 0;\n      $729 = HEAP32[$728 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($729, $25);\n      HEAP32[$728 >> 2] = $729 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($25);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 115:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj9EEERAT__Kc($26, 14341);\n     $732 = $db + 4 | 0;\n     $733 = HEAP32[$732 >> 2] | 0;\n     $735 = HEAP32[$db + 8 >> 2] | 0;\n     if ($733 >>> 0 < $735 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($733, $26);\n      HEAP32[$732 >> 2] = (HEAP32[$732 >> 2] | 0) + 24;\n     } else {\n      $742 = HEAP32[$db >> 2] | 0;\n      $743 = $733 - $742 | 0;\n      $744 = ($743 | 0) / 24 | 0;\n      $745 = $744 + 1 | 0;\n      if (($743 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $749 = ($735 - $742 | 0) / 24 | 0;\n      if ($749 >>> 0 < 1073741823) {\n       $751 = $749 << 1;\n       $$0$i$i$i133 = $751 >>> 0 < $745 >>> 0 ? $745 : $751;\n      } else $$0$i$i$i133 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i133, $744, $db + 12 | 0);\n      $754 = $__v$i$i142 + 8 | 0;\n      $755 = HEAP32[$754 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($755, $26);\n      HEAP32[$754 >> 2] = $755 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($26);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 97:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj5EEERAT__Kc($27, 14350);\n     $758 = $db + 4 | 0;\n     $759 = HEAP32[$758 >> 2] | 0;\n     $761 = HEAP32[$db + 8 >> 2] | 0;\n     if ($759 >>> 0 < $761 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($759, $27);\n      HEAP32[$758 >> 2] = (HEAP32[$758 >> 2] | 0) + 24;\n     } else {\n      $768 = HEAP32[$db >> 2] | 0;\n      $769 = $759 - $768 | 0;\n      $770 = ($769 | 0) / 24 | 0;\n      $771 = $770 + 1 | 0;\n      if (($769 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $775 = ($761 - $768 | 0) / 24 | 0;\n      if ($775 >>> 0 < 1073741823) {\n       $777 = $775 << 1;\n       $$0$i$i$i138 = $777 >>> 0 < $771 >>> 0 ? $771 : $777;\n      } else $$0$i$i$i138 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i138, $770, $db + 12 | 0);\n      $780 = $__v$i$i142 + 8 | 0;\n      $781 = HEAP32[$780 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($781, $27);\n      HEAP32[$780 >> 2] = $781 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($27);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   case 110:\n    {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj15EEERAT__Kc($28, 14355);\n     $784 = $db + 4 | 0;\n     $785 = HEAP32[$784 >> 2] | 0;\n     $787 = HEAP32[$db + 8 >> 2] | 0;\n     if ($785 >>> 0 < $787 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($785, $28);\n      HEAP32[$784 >> 2] = (HEAP32[$784 >> 2] | 0) + 24;\n     } else {\n      $794 = HEAP32[$db >> 2] | 0;\n      $795 = $785 - $794 | 0;\n      $796 = ($795 | 0) / 24 | 0;\n      $797 = $796 + 1 | 0;\n      if (($795 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $801 = ($787 - $794 | 0) / 24 | 0;\n      if ($801 >>> 0 < 1073741823) {\n       $803 = $801 << 1;\n       $$0$i$i$i143 = $803 >>> 0 < $797 >>> 0 ? $797 : $803;\n      } else $$0$i$i$i143 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i143, $796, $db + 12 | 0);\n      $806 = $__v$i$i142 + 8 | 0;\n      $807 = HEAP32[$806 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($807, $28);\n      HEAP32[$806 >> 2] = $807 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($28);\n     $$0 = $first + 2 | 0;\n     break L1;\n     break;\n    }\n   default:\n    {\n     $$0 = $first;\n     break L1;\n    }\n   }\n   break;\n  }\n default:\n  {\n   $$0 = $first;\n   break L1;\n  }\n } while (0); while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _malloc($bytes) {\n $bytes = $bytes | 0;\n var $$3$i = 0, $$lcssa = 0, $$lcssa211 = 0, $$lcssa215 = 0, $$lcssa216 = 0, $$lcssa217 = 0, $$lcssa219 = 0, $$lcssa222 = 0, $$lcssa224 = 0, $$lcssa226 = 0, $$lcssa228 = 0, $$lcssa230 = 0, $$lcssa232 = 0, $$pre$phi$i$iZ2D = 0, $$pre$phi$i23$iZ2D = 0, $$pre$phi$i26Z2D = 0, $$pre$phi$iZ2D = 0, $$pre$phi58$i$iZ2D = 0, $$pre$phiZ2D = 0, $$rsize$3$i = 0, $$sum$i19$i = 0, $$sum2$i21$i = 0, $$sum3132$i$i = 0, $$sum67$i$i = 0, $100 = 0, $1000 = 0, $1002 = 0, $1005 = 0, $1010 = 0, $1016 = 0, $1019 = 0, $1020 = 0, $1027 = 0, $1039 = 0, $1044 = 0, $1051 = 0, $1052 = 0, $1053 = 0, $106 = 0, $1060 = 0, $1062 = 0, $1063 = 0, $1070 = 0, $110 = 0, $112 = 0, $113 = 0, $115 = 0, $117 = 0, $119 = 0, $12 = 0, $121 = 0, $123 = 0, $125 = 0, $127 = 0, $13 = 0, $132 = 0, $138 = 0, $14 = 0, $141 = 0, $144 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $151 = 0, $154 = 0, $156 = 0, $159 = 0, $16 = 0, $161 = 0, $164 = 0, $167 = 0, $168 = 0, $17 = 0, $170 = 0, $171 = 0, $173 = 0, $174 = 0, $176 = 0, $177 = 0, $18 = 0, $182 = 0, $183 = 0, $192 = 0, $197 = 0, $201 = 0, $207 = 0, $214 = 0, $217 = 0, $225 = 0, $227 = 0, $228 = 0, $229 = 0, $230 = 0, $231 = 0, $232 = 0, $236 = 0, $237 = 0, $245 = 0, $246 = 0, $247 = 0, $249 = 0, $25 = 0, $250 = 0, $255 = 0, $256 = 0, $259 = 0, $261 = 0, $264 = 0, $269 = 0, $276 = 0, $28 = 0, $285 = 0, $286 = 0, $290 = 0, $300 = 0, $303 = 0, $307 = 0, $309 = 0, $31 = 0, $310 = 0, $312 = 0, $314 = 0, $316 = 0, $318 = 0, $320 = 0, $322 = 0, $324 = 0, $334 = 0, $335 = 0, $337 = 0, $34 = 0, $346 = 0, $348 = 0, $351 = 0, $353 = 0, $356 = 0, $358 = 0, $361 = 0, $364 = 0, $365 = 0, $367 = 0, $368 = 0, $370 = 0, $371 = 0, $373 = 0, $374 = 0, $379 = 0, $38 = 0, $380 = 0, $389 = 0, $394 = 0, $398 = 0, $4 = 0, $404 = 0, $41 = 0, $411 = 0, $414 = 0, $422 = 0, $424 = 0, $425 = 0, $426 = 0, $427 = 0, $431 = 0, $432 = 0, $438 = 0, $44 = 0, $443 = 0, $444 = 0, $447 = 0, $449 = 0, $452 = 0, $457 = 0, $46 = 0, $463 = 0, $467 = 0, $468 = 0, $47 = 0, $475 = 0, $487 = 0, $49 = 0, $492 = 0, $499 = 0, $5 = 0, $500 = 0, $501 = 0, $509 = 0, $51 = 0, $511 = 0, $512 = 0, $522 = 0, $526 = 0, $528 = 0, $529 = 0, $53 = 0, $538 = 0, $544 = 0, $545 = 0, $546 = 0, $547 = 0, $548 = 0, $549 = 0, $55 = 0, $550 = 0, $552 = 0, $554 = 0, $555 = 0, $561 = 0, $563 = 0, $565 = 0, $57 = 0, $572 = 0, $574 = 0, $575 = 0, $576 = 0, $584 = 0, $585 = 0, $588 = 0, $59 = 0, $592 = 0, $593 = 0, $596 = 0, $598 = 0, $6 = 0, $602 = 0, $604 = 0, $608 = 0, $61 = 0, $612 = 0, $621 = 0, $622 = 0, $628 = 0, $630 = 0, $632 = 0, $635 = 0, $637 = 0, $64 = 0, $641 = 0, $642 = 0, $648 = 0, $65 = 0, $653 = 0, $655 = 0, $66 = 0, $660 = 0, $661 = 0, $662 = 0, $67 = 0, $676 = 0, $678 = 0, $68 = 0, $683 = 0, $685 = 0, $69 = 0, $690 = 0, $692 = 0, $7 = 0, $70 = 0, $702 = 0, $706 = 0, $711 = 0, $714 = 0, $719 = 0, $720 = 0, $724 = 0, $725 = 0, $730 = 0, $736 = 0, $741 = 0, $744 = 0, $745 = 0, $748 = 0, $750 = 0, $752 = 0, $755 = 0, $766 = 0, $77 = 0, $771 = 0, $773 = 0, $776 = 0, $778 = 0, $781 = 0, $784 = 0, $785 = 0, $787 = 0, $788 = 0, $790 = 0, $791 = 0, $793 = 0, $794 = 0, $799 = 0, $80 = 0, $800 = 0, $809 = 0, $81 = 0, $814 = 0, $818 = 0, $824 = 0, $832 = 0, $838 = 0, $84 = 0, $840 = 0, $841 = 0, $842 = 0, $843 = 0, $847 = 0, $848 = 0, $854 = 0, $859 = 0, $860 = 0, $863 = 0, $865 = 0, $868 = 0, $873 = 0, $879 = 0, $883 = 0, $884 = 0, $89 = 0, $891 = 0, $90 = 0, $903 = 0, $908 = 0, $91 = 0, $915 = 0, $916 = 0, $917 = 0, $92 = 0, $925 = 0, $928 = 0, $929 = 0, $93 = 0, $934 = 0, $94 = 0, $940 = 0, $941 = 0, $943 = 0, $944 = 0, $947 = 0, $95 = 0, $952 = 0, $954 = 0, $959 = 0, $960 = 0, $964 = 0, $970 = 0, $975 = 0, $977 = 0, $978 = 0, $979 = 0, $980 = 0, $984 = 0, $985 = 0, $99 = 0, $991 = 0, $996 = 0, $997 = 0, $F$0$i$i = 0, $F1$0$i = 0, $F4$0 = 0, $F4$0$i$i = 0, $F5$0$i = 0, $I1$0$i$i = 0, $I7$0$i = 0, $I7$0$i$i = 0, $K12$029$i = 0, $K2$07$i$i = 0, $K8$051$i$i = 0, $R$0$i = 0, $R$0$i$i = 0, $R$0$i$i$lcssa = 0, $R$0$i$lcssa = 0, $R$0$i18 = 0, $R$0$i18$lcssa = 0, $R$1$i = 0, $R$1$i$i = 0, $R$1$i20 = 0, $RP$0$i = 0, $RP$0$i$i = 0, $RP$0$i$i$lcssa = 0, $RP$0$i$lcssa = 0, $RP$0$i17 = 0, $RP$0$i17$lcssa = 0, $T$0$lcssa$i = 0, $T$0$lcssa$i$i = 0, $T$0$lcssa$i25$i = 0, $T$028$i = 0, $T$028$i$lcssa = 0, $T$050$i$i = 0, $T$050$i$i$lcssa = 0, $T$06$i$i = 0, $T$06$i$i$lcssa = 0, $br$0$ph$i = 0, $i$02$i$i = 0, $idx$0$i = 0, $mem$0 = 0, $nb$0 = 0, $oldfirst$0$i$i = 0, $qsize$0$i$i = 0, $rsize$0$i = 0, $rsize$0$i$lcssa = 0, $rsize$0$i15 = 0, $rsize$1$i = 0, $rsize$2$i = 0, $rsize$3$lcssa$i = 0, $rsize$331$i = 0, $rst$0$i = 0, $rst$1$i = 0, $sizebits$0$i = 0, $sp$0$i$i = 0, $sp$0$i$i$i = 0, $sp$084$i = 0, $sp$084$i$lcssa = 0, $sp$183$i = 0, $sp$183$i$lcssa = 0, $ssize$0$$i = 0, $ssize$0$i = 0, $ssize$1$ph$i = 0, $ssize$2$i = 0, $t$0$i = 0, $t$0$i14 = 0, $t$1$i = 0, $t$2$ph$i = 0, $t$2$v$3$i = 0, $t$230$i = 0, $tbase$255$i = 0, $tsize$0$ph$i = 0, $tsize$0323944$i = 0, $tsize$1$i = 0, $tsize$254$i = 0, $v$0$i = 0, $v$0$i$lcssa = 0, $v$0$i16 = 0, $v$1$i = 0, $v$2$i = 0, $v$3$lcssa$i = 0, $v$3$ph$i = 0, $v$332$i = 0, label = 0, $964$looptemp = 0;\n do if ($bytes >>> 0 < 245) {\n  $4 = $bytes >>> 0 < 11 ? 16 : $bytes + 11 & -8;\n  $5 = $4 >>> 3;\n  $6 = HEAP32[756] | 0;\n  $7 = $6 >>> $5;\n  if ($7 & 3) {\n   $12 = ($7 & 1 ^ 1) + $5 | 0;\n   $13 = $12 << 1;\n   $14 = 3064 + ($13 << 2) | 0;\n   $15 = 3064 + ($13 + 2 << 2) | 0;\n   $16 = HEAP32[$15 >> 2] | 0;\n   $17 = $16 + 8 | 0;\n   $18 = HEAP32[$17 >> 2] | 0;\n   do if (($14 | 0) == ($18 | 0)) HEAP32[756] = $6 & ~(1 << $12); else {\n    if ($18 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort();\n    $25 = $18 + 12 | 0;\n    if ((HEAP32[$25 >> 2] | 0) == ($16 | 0)) {\n     HEAP32[$25 >> 2] = $14;\n     HEAP32[$15 >> 2] = $18;\n     break;\n    } else _abort();\n   } while (0);\n   $28 = $12 << 3;\n   HEAP32[$16 + 4 >> 2] = $28 | 3;\n   $31 = $16 + ($28 | 4) | 0;\n   HEAP32[$31 >> 2] = HEAP32[$31 >> 2] | 1;\n   $mem$0 = $17;\n   return $mem$0 | 0;\n  }\n  $34 = HEAP32[758] | 0;\n  if ($4 >>> 0 > $34 >>> 0) {\n   if ($7) {\n    $38 = 2 << $5;\n    $41 = $7 << $5 & ($38 | 0 - $38);\n    $44 = ($41 & 0 - $41) + -1 | 0;\n    $46 = $44 >>> 12 & 16;\n    $47 = $44 >>> $46;\n    $49 = $47 >>> 5 & 8;\n    $51 = $47 >>> $49;\n    $53 = $51 >>> 2 & 4;\n    $55 = $51 >>> $53;\n    $57 = $55 >>> 1 & 2;\n    $59 = $55 >>> $57;\n    $61 = $59 >>> 1 & 1;\n    $64 = ($49 | $46 | $53 | $57 | $61) + ($59 >>> $61) | 0;\n    $65 = $64 << 1;\n    $66 = 3064 + ($65 << 2) | 0;\n    $67 = 3064 + ($65 + 2 << 2) | 0;\n    $68 = HEAP32[$67 >> 2] | 0;\n    $69 = $68 + 8 | 0;\n    $70 = HEAP32[$69 >> 2] | 0;\n    do if (($66 | 0) == ($70 | 0)) {\n     HEAP32[756] = $6 & ~(1 << $64);\n     $89 = $34;\n    } else {\n     if ($70 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort();\n     $77 = $70 + 12 | 0;\n     if ((HEAP32[$77 >> 2] | 0) == ($68 | 0)) {\n      HEAP32[$77 >> 2] = $66;\n      HEAP32[$67 >> 2] = $70;\n      $89 = HEAP32[758] | 0;\n      break;\n     } else _abort();\n    } while (0);\n    $80 = $64 << 3;\n    $81 = $80 - $4 | 0;\n    HEAP32[$68 + 4 >> 2] = $4 | 3;\n    $84 = $68 + $4 | 0;\n    HEAP32[$68 + ($4 | 4) >> 2] = $81 | 1;\n    HEAP32[$68 + $80 >> 2] = $81;\n    if ($89) {\n     $90 = HEAP32[761] | 0;\n     $91 = $89 >>> 3;\n     $92 = $91 << 1;\n     $93 = 3064 + ($92 << 2) | 0;\n     $94 = HEAP32[756] | 0;\n     $95 = 1 << $91;\n     if (!($94 & $95)) {\n      HEAP32[756] = $94 | $95;\n      $$pre$phiZ2D = 3064 + ($92 + 2 << 2) | 0;\n      $F4$0 = $93;\n     } else {\n      $99 = 3064 + ($92 + 2 << 2) | 0;\n      $100 = HEAP32[$99 >> 2] | 0;\n      if ($100 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else {\n       $$pre$phiZ2D = $99;\n       $F4$0 = $100;\n      }\n     }\n     HEAP32[$$pre$phiZ2D >> 2] = $90;\n     HEAP32[$F4$0 + 12 >> 2] = $90;\n     HEAP32[$90 + 8 >> 2] = $F4$0;\n     HEAP32[$90 + 12 >> 2] = $93;\n    }\n    HEAP32[758] = $81;\n    HEAP32[761] = $84;\n    $mem$0 = $69;\n    return $mem$0 | 0;\n   }\n   $106 = HEAP32[757] | 0;\n   if (!$106) $nb$0 = $4; else {\n    $110 = ($106 & 0 - $106) + -1 | 0;\n    $112 = $110 >>> 12 & 16;\n    $113 = $110 >>> $112;\n    $115 = $113 >>> 5 & 8;\n    $117 = $113 >>> $115;\n    $119 = $117 >>> 2 & 4;\n    $121 = $117 >>> $119;\n    $123 = $121 >>> 1 & 2;\n    $125 = $121 >>> $123;\n    $127 = $125 >>> 1 & 1;\n    $132 = HEAP32[3328 + (($115 | $112 | $119 | $123 | $127) + ($125 >>> $127) << 2) >> 2] | 0;\n    $rsize$0$i = (HEAP32[$132 + 4 >> 2] & -8) - $4 | 0;\n    $t$0$i = $132;\n    $v$0$i = $132;\n    while (1) {\n     $138 = HEAP32[$t$0$i + 16 >> 2] | 0;\n     if (!$138) {\n      $141 = HEAP32[$t$0$i + 20 >> 2] | 0;\n      if (!$141) {\n       $rsize$0$i$lcssa = $rsize$0$i;\n       $v$0$i$lcssa = $v$0$i;\n       break;\n      } else $144 = $141;\n     } else $144 = $138;\n     $147 = (HEAP32[$144 + 4 >> 2] & -8) - $4 | 0;\n     $148 = $147 >>> 0 < $rsize$0$i >>> 0;\n     $rsize$0$i = $148 ? $147 : $rsize$0$i;\n     $t$0$i = $144;\n     $v$0$i = $148 ? $144 : $v$0$i;\n    }\n    $149 = HEAP32[760] | 0;\n    if ($v$0$i$lcssa >>> 0 < $149 >>> 0) _abort();\n    $151 = $v$0$i$lcssa + $4 | 0;\n    if ($v$0$i$lcssa >>> 0 >= $151 >>> 0) _abort();\n    $154 = HEAP32[$v$0$i$lcssa + 24 >> 2] | 0;\n    $156 = HEAP32[$v$0$i$lcssa + 12 >> 2] | 0;\n    do if (($156 | 0) == ($v$0$i$lcssa | 0)) {\n     $167 = $v$0$i$lcssa + 20 | 0;\n     $168 = HEAP32[$167 >> 2] | 0;\n     if (!$168) {\n      $170 = $v$0$i$lcssa + 16 | 0;\n      $171 = HEAP32[$170 >> 2] | 0;\n      if (!$171) {\n       $R$1$i = 0;\n       break;\n      } else {\n       $R$0$i = $171;\n       $RP$0$i = $170;\n      }\n     } else {\n      $R$0$i = $168;\n      $RP$0$i = $167;\n     }\n     while (1) {\n      $173 = $R$0$i + 20 | 0;\n      $174 = HEAP32[$173 >> 2] | 0;\n      if ($174) {\n       $R$0$i = $174;\n       $RP$0$i = $173;\n       continue;\n      }\n      $176 = $R$0$i + 16 | 0;\n      $177 = HEAP32[$176 >> 2] | 0;\n      if (!$177) {\n       $R$0$i$lcssa = $R$0$i;\n       $RP$0$i$lcssa = $RP$0$i;\n       break;\n      } else {\n       $R$0$i = $177;\n       $RP$0$i = $176;\n      }\n     }\n     if ($RP$0$i$lcssa >>> 0 < $149 >>> 0) _abort(); else {\n      HEAP32[$RP$0$i$lcssa >> 2] = 0;\n      $R$1$i = $R$0$i$lcssa;\n      break;\n     }\n    } else {\n     $159 = HEAP32[$v$0$i$lcssa + 8 >> 2] | 0;\n     if ($159 >>> 0 < $149 >>> 0) _abort();\n     $161 = $159 + 12 | 0;\n     if ((HEAP32[$161 >> 2] | 0) != ($v$0$i$lcssa | 0)) _abort();\n     $164 = $156 + 8 | 0;\n     if ((HEAP32[$164 >> 2] | 0) == ($v$0$i$lcssa | 0)) {\n      HEAP32[$161 >> 2] = $156;\n      HEAP32[$164 >> 2] = $159;\n      $R$1$i = $156;\n      break;\n     } else _abort();\n    } while (0);\n    do if ($154) {\n     $182 = HEAP32[$v$0$i$lcssa + 28 >> 2] | 0;\n     $183 = 3328 + ($182 << 2) | 0;\n     if (($v$0$i$lcssa | 0) == (HEAP32[$183 >> 2] | 0)) {\n      HEAP32[$183 >> 2] = $R$1$i;\n      if (!$R$1$i) {\n       HEAP32[757] = HEAP32[757] & ~(1 << $182);\n       break;\n      }\n     } else {\n      if ($154 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort();\n      $192 = $154 + 16 | 0;\n      if ((HEAP32[$192 >> 2] | 0) == ($v$0$i$lcssa | 0)) HEAP32[$192 >> 2] = $R$1$i; else HEAP32[$154 + 20 >> 2] = $R$1$i;\n      if (!$R$1$i) break;\n     }\n     $197 = HEAP32[760] | 0;\n     if ($R$1$i >>> 0 < $197 >>> 0) _abort();\n     HEAP32[$R$1$i + 24 >> 2] = $154;\n     $201 = HEAP32[$v$0$i$lcssa + 16 >> 2] | 0;\n     do if ($201) if ($201 >>> 0 < $197 >>> 0) _abort(); else {\n      HEAP32[$R$1$i + 16 >> 2] = $201;\n      HEAP32[$201 + 24 >> 2] = $R$1$i;\n      break;\n     } while (0);\n     $207 = HEAP32[$v$0$i$lcssa + 20 >> 2] | 0;\n     if ($207) if ($207 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else {\n      HEAP32[$R$1$i + 20 >> 2] = $207;\n      HEAP32[$207 + 24 >> 2] = $R$1$i;\n      break;\n     }\n    } while (0);\n    if ($rsize$0$i$lcssa >>> 0 < 16) {\n     $214 = $rsize$0$i$lcssa + $4 | 0;\n     HEAP32[$v$0$i$lcssa + 4 >> 2] = $214 | 3;\n     $217 = $v$0$i$lcssa + ($214 + 4) | 0;\n     HEAP32[$217 >> 2] = HEAP32[$217 >> 2] | 1;\n    } else {\n     HEAP32[$v$0$i$lcssa + 4 >> 2] = $4 | 3;\n     HEAP32[$v$0$i$lcssa + ($4 | 4) >> 2] = $rsize$0$i$lcssa | 1;\n     HEAP32[$v$0$i$lcssa + ($rsize$0$i$lcssa + $4) >> 2] = $rsize$0$i$lcssa;\n     $225 = HEAP32[758] | 0;\n     if ($225) {\n      $227 = HEAP32[761] | 0;\n      $228 = $225 >>> 3;\n      $229 = $228 << 1;\n      $230 = 3064 + ($229 << 2) | 0;\n      $231 = HEAP32[756] | 0;\n      $232 = 1 << $228;\n      if (!($231 & $232)) {\n       HEAP32[756] = $231 | $232;\n       $$pre$phi$iZ2D = 3064 + ($229 + 2 << 2) | 0;\n       $F1$0$i = $230;\n      } else {\n       $236 = 3064 + ($229 + 2 << 2) | 0;\n       $237 = HEAP32[$236 >> 2] | 0;\n       if ($237 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else {\n        $$pre$phi$iZ2D = $236;\n        $F1$0$i = $237;\n       }\n      }\n      HEAP32[$$pre$phi$iZ2D >> 2] = $227;\n      HEAP32[$F1$0$i + 12 >> 2] = $227;\n      HEAP32[$227 + 8 >> 2] = $F1$0$i;\n      HEAP32[$227 + 12 >> 2] = $230;\n     }\n     HEAP32[758] = $rsize$0$i$lcssa;\n     HEAP32[761] = $151;\n    }\n    $mem$0 = $v$0$i$lcssa + 8 | 0;\n    return $mem$0 | 0;\n   }\n  } else $nb$0 = $4;\n } else if ($bytes >>> 0 > 4294967231) $nb$0 = -1; else {\n  $245 = $bytes + 11 | 0;\n  $246 = $245 & -8;\n  $247 = HEAP32[757] | 0;\n  if (!$247) $nb$0 = $246; else {\n   $249 = 0 - $246 | 0;\n   $250 = $245 >>> 8;\n   if (!$250) $idx$0$i = 0; else if ($246 >>> 0 > 16777215) $idx$0$i = 31; else {\n    $255 = ($250 + 1048320 | 0) >>> 16 & 8;\n    $256 = $250 << $255;\n    $259 = ($256 + 520192 | 0) >>> 16 & 4;\n    $261 = $256 << $259;\n    $264 = ($261 + 245760 | 0) >>> 16 & 2;\n    $269 = 14 - ($259 | $255 | $264) + ($261 << $264 >>> 15) | 0;\n    $idx$0$i = $246 >>> ($269 + 7 | 0) & 1 | $269 << 1;\n   }\n   $276 = HEAP32[3328 + ($idx$0$i << 2) >> 2] | 0;\n   L123 : do if (!$276) {\n    $rsize$2$i = $249;\n    $t$1$i = 0;\n    $v$2$i = 0;\n    label = 86;\n   } else {\n    $rsize$0$i15 = $249;\n    $rst$0$i = 0;\n    $sizebits$0$i = $246 << (($idx$0$i | 0) == 31 ? 0 : 25 - ($idx$0$i >>> 1) | 0);\n    $t$0$i14 = $276;\n    $v$0$i16 = 0;\n    while (1) {\n     $285 = HEAP32[$t$0$i14 + 4 >> 2] & -8;\n     $286 = $285 - $246 | 0;\n     if ($286 >>> 0 < $rsize$0$i15 >>> 0) if (($285 | 0) == ($246 | 0)) {\n      $rsize$331$i = $286;\n      $t$230$i = $t$0$i14;\n      $v$332$i = $t$0$i14;\n      label = 90;\n      break L123;\n     } else {\n      $rsize$1$i = $286;\n      $v$1$i = $t$0$i14;\n     } else {\n      $rsize$1$i = $rsize$0$i15;\n      $v$1$i = $v$0$i16;\n     }\n     $290 = HEAP32[$t$0$i14 + 20 >> 2] | 0;\n     $t$0$i14 = HEAP32[$t$0$i14 + 16 + ($sizebits$0$i >>> 31 << 2) >> 2] | 0;\n     $rst$1$i = ($290 | 0) == 0 | ($290 | 0) == ($t$0$i14 | 0) ? $rst$0$i : $290;\n     if (!$t$0$i14) {\n      $rsize$2$i = $rsize$1$i;\n      $t$1$i = $rst$1$i;\n      $v$2$i = $v$1$i;\n      label = 86;\n      break;\n     } else {\n      $rsize$0$i15 = $rsize$1$i;\n      $rst$0$i = $rst$1$i;\n      $sizebits$0$i = $sizebits$0$i << 1;\n      $v$0$i16 = $v$1$i;\n     }\n    }\n   } while (0);\n   if ((label | 0) == 86) {\n    if (($t$1$i | 0) == 0 & ($v$2$i | 0) == 0) {\n     $300 = 2 << $idx$0$i;\n     $303 = $247 & ($300 | 0 - $300);\n     if (!$303) {\n      $nb$0 = $246;\n      break;\n     }\n     $307 = ($303 & 0 - $303) + -1 | 0;\n     $309 = $307 >>> 12 & 16;\n     $310 = $307 >>> $309;\n     $312 = $310 >>> 5 & 8;\n     $314 = $310 >>> $312;\n     $316 = $314 >>> 2 & 4;\n     $318 = $314 >>> $316;\n     $320 = $318 >>> 1 & 2;\n     $322 = $318 >>> $320;\n     $324 = $322 >>> 1 & 1;\n     $t$2$ph$i = HEAP32[3328 + (($312 | $309 | $316 | $320 | $324) + ($322 >>> $324) << 2) >> 2] | 0;\n     $v$3$ph$i = 0;\n    } else {\n     $t$2$ph$i = $t$1$i;\n     $v$3$ph$i = $v$2$i;\n    }\n    if (!$t$2$ph$i) {\n     $rsize$3$lcssa$i = $rsize$2$i;\n     $v$3$lcssa$i = $v$3$ph$i;\n    } else {\n     $rsize$331$i = $rsize$2$i;\n     $t$230$i = $t$2$ph$i;\n     $v$332$i = $v$3$ph$i;\n     label = 90;\n    }\n   }\n   if ((label | 0) == 90) while (1) {\n    label = 0;\n    $334 = (HEAP32[$t$230$i + 4 >> 2] & -8) - $246 | 0;\n    $335 = $334 >>> 0 < $rsize$331$i >>> 0;\n    $$rsize$3$i = $335 ? $334 : $rsize$331$i;\n    $t$2$v$3$i = $335 ? $t$230$i : $v$332$i;\n    $337 = HEAP32[$t$230$i + 16 >> 2] | 0;\n    if ($337) {\n     $rsize$331$i = $$rsize$3$i;\n     $t$230$i = $337;\n     $v$332$i = $t$2$v$3$i;\n     label = 90;\n     continue;\n    }\n    $t$230$i = HEAP32[$t$230$i + 20 >> 2] | 0;\n    if (!$t$230$i) {\n     $rsize$3$lcssa$i = $$rsize$3$i;\n     $v$3$lcssa$i = $t$2$v$3$i;\n     break;\n    } else {\n     $rsize$331$i = $$rsize$3$i;\n     $v$332$i = $t$2$v$3$i;\n     label = 90;\n    }\n   }\n   if (!$v$3$lcssa$i) $nb$0 = $246; else if ($rsize$3$lcssa$i >>> 0 < ((HEAP32[758] | 0) - $246 | 0) >>> 0) {\n    $346 = HEAP32[760] | 0;\n    if ($v$3$lcssa$i >>> 0 < $346 >>> 0) _abort();\n    $348 = $v$3$lcssa$i + $246 | 0;\n    if ($v$3$lcssa$i >>> 0 >= $348 >>> 0) _abort();\n    $351 = HEAP32[$v$3$lcssa$i + 24 >> 2] | 0;\n    $353 = HEAP32[$v$3$lcssa$i + 12 >> 2] | 0;\n    do if (($353 | 0) == ($v$3$lcssa$i | 0)) {\n     $364 = $v$3$lcssa$i + 20 | 0;\n     $365 = HEAP32[$364 >> 2] | 0;\n     if (!$365) {\n      $367 = $v$3$lcssa$i + 16 | 0;\n      $368 = HEAP32[$367 >> 2] | 0;\n      if (!$368) {\n       $R$1$i20 = 0;\n       break;\n      } else {\n       $R$0$i18 = $368;\n       $RP$0$i17 = $367;\n      }\n     } else {\n      $R$0$i18 = $365;\n      $RP$0$i17 = $364;\n     }\n     while (1) {\n      $370 = $R$0$i18 + 20 | 0;\n      $371 = HEAP32[$370 >> 2] | 0;\n      if ($371) {\n       $R$0$i18 = $371;\n       $RP$0$i17 = $370;\n       continue;\n      }\n      $373 = $R$0$i18 + 16 | 0;\n      $374 = HEAP32[$373 >> 2] | 0;\n      if (!$374) {\n       $R$0$i18$lcssa = $R$0$i18;\n       $RP$0$i17$lcssa = $RP$0$i17;\n       break;\n      } else {\n       $R$0$i18 = $374;\n       $RP$0$i17 = $373;\n      }\n     }\n     if ($RP$0$i17$lcssa >>> 0 < $346 >>> 0) _abort(); else {\n      HEAP32[$RP$0$i17$lcssa >> 2] = 0;\n      $R$1$i20 = $R$0$i18$lcssa;\n      break;\n     }\n    } else {\n     $356 = HEAP32[$v$3$lcssa$i + 8 >> 2] | 0;\n     if ($356 >>> 0 < $346 >>> 0) _abort();\n     $358 = $356 + 12 | 0;\n     if ((HEAP32[$358 >> 2] | 0) != ($v$3$lcssa$i | 0)) _abort();\n     $361 = $353 + 8 | 0;\n     if ((HEAP32[$361 >> 2] | 0) == ($v$3$lcssa$i | 0)) {\n      HEAP32[$358 >> 2] = $353;\n      HEAP32[$361 >> 2] = $356;\n      $R$1$i20 = $353;\n      break;\n     } else _abort();\n    } while (0);\n    do if ($351) {\n     $379 = HEAP32[$v$3$lcssa$i + 28 >> 2] | 0;\n     $380 = 3328 + ($379 << 2) | 0;\n     if (($v$3$lcssa$i | 0) == (HEAP32[$380 >> 2] | 0)) {\n      HEAP32[$380 >> 2] = $R$1$i20;\n      if (!$R$1$i20) {\n       HEAP32[757] = HEAP32[757] & ~(1 << $379);\n       break;\n      }\n     } else {\n      if ($351 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort();\n      $389 = $351 + 16 | 0;\n      if ((HEAP32[$389 >> 2] | 0) == ($v$3$lcssa$i | 0)) HEAP32[$389 >> 2] = $R$1$i20; else HEAP32[$351 + 20 >> 2] = $R$1$i20;\n      if (!$R$1$i20) break;\n     }\n     $394 = HEAP32[760] | 0;\n     if ($R$1$i20 >>> 0 < $394 >>> 0) _abort();\n     HEAP32[$R$1$i20 + 24 >> 2] = $351;\n     $398 = HEAP32[$v$3$lcssa$i + 16 >> 2] | 0;\n     do if ($398) if ($398 >>> 0 < $394 >>> 0) _abort(); else {\n      HEAP32[$R$1$i20 + 16 >> 2] = $398;\n      HEAP32[$398 + 24 >> 2] = $R$1$i20;\n      break;\n     } while (0);\n     $404 = HEAP32[$v$3$lcssa$i + 20 >> 2] | 0;\n     if ($404) if ($404 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else {\n      HEAP32[$R$1$i20 + 20 >> 2] = $404;\n      HEAP32[$404 + 24 >> 2] = $R$1$i20;\n      break;\n     }\n    } while (0);\n    L199 : do if ($rsize$3$lcssa$i >>> 0 < 16) {\n     $411 = $rsize$3$lcssa$i + $246 | 0;\n     HEAP32[$v$3$lcssa$i + 4 >> 2] = $411 | 3;\n     $414 = $v$3$lcssa$i + ($411 + 4) | 0;\n     HEAP32[$414 >> 2] = HEAP32[$414 >> 2] | 1;\n    } else {\n     HEAP32[$v$3$lcssa$i + 4 >> 2] = $246 | 3;\n     HEAP32[$v$3$lcssa$i + ($246 | 4) >> 2] = $rsize$3$lcssa$i | 1;\n     HEAP32[$v$3$lcssa$i + ($rsize$3$lcssa$i + $246) >> 2] = $rsize$3$lcssa$i;\n     $422 = $rsize$3$lcssa$i >>> 3;\n     if ($rsize$3$lcssa$i >>> 0 < 256) {\n      $424 = $422 << 1;\n      $425 = 3064 + ($424 << 2) | 0;\n      $426 = HEAP32[756] | 0;\n      $427 = 1 << $422;\n      if (!($426 & $427)) {\n       HEAP32[756] = $426 | $427;\n       $$pre$phi$i26Z2D = 3064 + ($424 + 2 << 2) | 0;\n       $F5$0$i = $425;\n      } else {\n       $431 = 3064 + ($424 + 2 << 2) | 0;\n       $432 = HEAP32[$431 >> 2] | 0;\n       if ($432 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else {\n        $$pre$phi$i26Z2D = $431;\n        $F5$0$i = $432;\n       }\n      }\n      HEAP32[$$pre$phi$i26Z2D >> 2] = $348;\n      HEAP32[$F5$0$i + 12 >> 2] = $348;\n      HEAP32[$v$3$lcssa$i + ($246 + 8) >> 2] = $F5$0$i;\n      HEAP32[$v$3$lcssa$i + ($246 + 12) >> 2] = $425;\n      break;\n     }\n     $438 = $rsize$3$lcssa$i >>> 8;\n     if (!$438) $I7$0$i = 0; else if ($rsize$3$lcssa$i >>> 0 > 16777215) $I7$0$i = 31; else {\n      $443 = ($438 + 1048320 | 0) >>> 16 & 8;\n      $444 = $438 << $443;\n      $447 = ($444 + 520192 | 0) >>> 16 & 4;\n      $449 = $444 << $447;\n      $452 = ($449 + 245760 | 0) >>> 16 & 2;\n      $457 = 14 - ($447 | $443 | $452) + ($449 << $452 >>> 15) | 0;\n      $I7$0$i = $rsize$3$lcssa$i >>> ($457 + 7 | 0) & 1 | $457 << 1;\n     }\n     $463 = 3328 + ($I7$0$i << 2) | 0;\n     HEAP32[$v$3$lcssa$i + ($246 + 28) >> 2] = $I7$0$i;\n     HEAP32[$v$3$lcssa$i + ($246 + 20) >> 2] = 0;\n     HEAP32[$v$3$lcssa$i + ($246 + 16) >> 2] = 0;\n     $467 = HEAP32[757] | 0;\n     $468 = 1 << $I7$0$i;\n     if (!($467 & $468)) {\n      HEAP32[757] = $467 | $468;\n      HEAP32[$463 >> 2] = $348;\n      HEAP32[$v$3$lcssa$i + ($246 + 24) >> 2] = $463;\n      HEAP32[$v$3$lcssa$i + ($246 + 12) >> 2] = $348;\n      HEAP32[$v$3$lcssa$i + ($246 + 8) >> 2] = $348;\n      break;\n     }\n     $475 = HEAP32[$463 >> 2] | 0;\n     L217 : do if ((HEAP32[$475 + 4 >> 2] & -8 | 0) == ($rsize$3$lcssa$i | 0)) $T$0$lcssa$i = $475; else {\n      $K12$029$i = $rsize$3$lcssa$i << (($I7$0$i | 0) == 31 ? 0 : 25 - ($I7$0$i >>> 1) | 0);\n      $T$028$i = $475;\n      while (1) {\n       $492 = $T$028$i + 16 + ($K12$029$i >>> 31 << 2) | 0;\n       $487 = HEAP32[$492 >> 2] | 0;\n       if (!$487) {\n        $$lcssa232 = $492;\n        $T$028$i$lcssa = $T$028$i;\n        break;\n       }\n       if ((HEAP32[$487 + 4 >> 2] & -8 | 0) == ($rsize$3$lcssa$i | 0)) {\n        $T$0$lcssa$i = $487;\n        break L217;\n       } else {\n        $K12$029$i = $K12$029$i << 1;\n        $T$028$i = $487;\n       }\n      }\n      if ($$lcssa232 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else {\n       HEAP32[$$lcssa232 >> 2] = $348;\n       HEAP32[$v$3$lcssa$i + ($246 + 24) >> 2] = $T$028$i$lcssa;\n       HEAP32[$v$3$lcssa$i + ($246 + 12) >> 2] = $348;\n       HEAP32[$v$3$lcssa$i + ($246 + 8) >> 2] = $348;\n       break L199;\n      }\n     } while (0);\n     $499 = $T$0$lcssa$i + 8 | 0;\n     $500 = HEAP32[$499 >> 2] | 0;\n     $501 = HEAP32[760] | 0;\n     if ($500 >>> 0 >= $501 >>> 0 & $T$0$lcssa$i >>> 0 >= $501 >>> 0) {\n      HEAP32[$500 + 12 >> 2] = $348;\n      HEAP32[$499 >> 2] = $348;\n      HEAP32[$v$3$lcssa$i + ($246 + 8) >> 2] = $500;\n      HEAP32[$v$3$lcssa$i + ($246 + 12) >> 2] = $T$0$lcssa$i;\n      HEAP32[$v$3$lcssa$i + ($246 + 24) >> 2] = 0;\n      break;\n     } else _abort();\n    } while (0);\n    $mem$0 = $v$3$lcssa$i + 8 | 0;\n    return $mem$0 | 0;\n   } else $nb$0 = $246;\n  }\n } while (0);\n $509 = HEAP32[758] | 0;\n if ($509 >>> 0 >= $nb$0 >>> 0) {\n  $511 = $509 - $nb$0 | 0;\n  $512 = HEAP32[761] | 0;\n  if ($511 >>> 0 > 15) {\n   HEAP32[761] = $512 + $nb$0;\n   HEAP32[758] = $511;\n   HEAP32[$512 + ($nb$0 + 4) >> 2] = $511 | 1;\n   HEAP32[$512 + $509 >> 2] = $511;\n   HEAP32[$512 + 4 >> 2] = $nb$0 | 3;\n  } else {\n   HEAP32[758] = 0;\n   HEAP32[761] = 0;\n   HEAP32[$512 + 4 >> 2] = $509 | 3;\n   $522 = $512 + ($509 + 4) | 0;\n   HEAP32[$522 >> 2] = HEAP32[$522 >> 2] | 1;\n  }\n  $mem$0 = $512 + 8 | 0;\n  return $mem$0 | 0;\n }\n $526 = HEAP32[759] | 0;\n if ($526 >>> 0 > $nb$0 >>> 0) {\n  $528 = $526 - $nb$0 | 0;\n  HEAP32[759] = $528;\n  $529 = HEAP32[762] | 0;\n  HEAP32[762] = $529 + $nb$0;\n  HEAP32[$529 + ($nb$0 + 4) >> 2] = $528 | 1;\n  HEAP32[$529 + 4 >> 2] = $nb$0 | 3;\n  $mem$0 = $529 + 8 | 0;\n  return $mem$0 | 0;\n }\n do if (!(HEAP32[874] | 0)) {\n  $538 = _sysconf(30) | 0;\n  if (!($538 + -1 & $538)) {\n   HEAP32[876] = $538;\n   HEAP32[875] = $538;\n   HEAP32[877] = -1;\n   HEAP32[878] = -1;\n   HEAP32[879] = 0;\n   HEAP32[867] = 0;\n   $544 = (_time(0) | 0) & -16 ^ 1431655768;\n   HEAP32[874] = $544;\n   break;\n  } else _abort();\n } while (0);\n $545 = $nb$0 + 48 | 0;\n $546 = HEAP32[876] | 0;\n $547 = $nb$0 + 47 | 0;\n $548 = $546 + $547 | 0;\n $549 = 0 - $546 | 0;\n $550 = $548 & $549;\n if ($550 >>> 0 <= $nb$0 >>> 0) {\n  $mem$0 = 0;\n  return $mem$0 | 0;\n }\n $552 = HEAP32[866] | 0;\n if ($552) {\n  $554 = HEAP32[864] | 0;\n  $555 = $554 + $550 | 0;\n  if ($555 >>> 0 <= $554 >>> 0 | $555 >>> 0 > $552 >>> 0) {\n   $mem$0 = 0;\n   return $mem$0 | 0;\n  }\n }\n L258 : do if (!(HEAP32[867] & 4)) {\n  $561 = HEAP32[762] | 0;\n  L260 : do if (!$561) label = 174; else {\n   $sp$0$i$i = 3472;\n   while (1) {\n    $563 = HEAP32[$sp$0$i$i >> 2] | 0;\n    if ($563 >>> 0 <= $561 >>> 0) {\n     $565 = $sp$0$i$i + 4 | 0;\n     if (($563 + (HEAP32[$565 >> 2] | 0) | 0) >>> 0 > $561 >>> 0) {\n      $$lcssa228 = $sp$0$i$i;\n      $$lcssa230 = $565;\n      break;\n     }\n    }\n    $sp$0$i$i = HEAP32[$sp$0$i$i + 8 >> 2] | 0;\n    if (!$sp$0$i$i) {\n     label = 174;\n     break L260;\n    }\n   }\n   $596 = $548 - (HEAP32[759] | 0) & $549;\n   if ($596 >>> 0 < 2147483647) {\n    $598 = _sbrk($596 | 0) | 0;\n    $602 = ($598 | 0) == ((HEAP32[$$lcssa228 >> 2] | 0) + (HEAP32[$$lcssa230 >> 2] | 0) | 0);\n    $$3$i = $602 ? $596 : 0;\n    if ($602) if (($598 | 0) == (-1 | 0)) $tsize$0323944$i = $$3$i; else {\n     $tbase$255$i = $598;\n     $tsize$254$i = $$3$i;\n     label = 194;\n     break L258;\n    } else {\n     $br$0$ph$i = $598;\n     $ssize$1$ph$i = $596;\n     $tsize$0$ph$i = $$3$i;\n     label = 184;\n    }\n   } else $tsize$0323944$i = 0;\n  } while (0);\n  do if ((label | 0) == 174) {\n   $572 = _sbrk(0) | 0;\n   if (($572 | 0) == (-1 | 0)) $tsize$0323944$i = 0; else {\n    $574 = $572;\n    $575 = HEAP32[875] | 0;\n    $576 = $575 + -1 | 0;\n    if (!($576 & $574)) $ssize$0$i = $550; else $ssize$0$i = $550 - $574 + ($576 + $574 & 0 - $575) | 0;\n    $584 = HEAP32[864] | 0;\n    $585 = $584 + $ssize$0$i | 0;\n    if ($ssize$0$i >>> 0 > $nb$0 >>> 0 & $ssize$0$i >>> 0 < 2147483647) {\n     $588 = HEAP32[866] | 0;\n     if ($588) if ($585 >>> 0 <= $584 >>> 0 | $585 >>> 0 > $588 >>> 0) {\n      $tsize$0323944$i = 0;\n      break;\n     }\n     $592 = _sbrk($ssize$0$i | 0) | 0;\n     $593 = ($592 | 0) == ($572 | 0);\n     $ssize$0$$i = $593 ? $ssize$0$i : 0;\n     if ($593) {\n      $tbase$255$i = $572;\n      $tsize$254$i = $ssize$0$$i;\n      label = 194;\n      break L258;\n     } else {\n      $br$0$ph$i = $592;\n      $ssize$1$ph$i = $ssize$0$i;\n      $tsize$0$ph$i = $ssize$0$$i;\n      label = 184;\n     }\n    } else $tsize$0323944$i = 0;\n   }\n  } while (0);\n  L280 : do if ((label | 0) == 184) {\n   $604 = 0 - $ssize$1$ph$i | 0;\n   do if ($545 >>> 0 > $ssize$1$ph$i >>> 0 & ($ssize$1$ph$i >>> 0 < 2147483647 & ($br$0$ph$i | 0) != (-1 | 0))) {\n    $608 = HEAP32[876] | 0;\n    $612 = $547 - $ssize$1$ph$i + $608 & 0 - $608;\n    if ($612 >>> 0 < 2147483647) if ((_sbrk($612 | 0) | 0) == (-1 | 0)) {\n     _sbrk($604 | 0) | 0;\n     $tsize$0323944$i = $tsize$0$ph$i;\n     break L280;\n    } else {\n     $ssize$2$i = $612 + $ssize$1$ph$i | 0;\n     break;\n    } else $ssize$2$i = $ssize$1$ph$i;\n   } else $ssize$2$i = $ssize$1$ph$i; while (0);\n   if (($br$0$ph$i | 0) == (-1 | 0)) $tsize$0323944$i = $tsize$0$ph$i; else {\n    $tbase$255$i = $br$0$ph$i;\n    $tsize$254$i = $ssize$2$i;\n    label = 194;\n    break L258;\n   }\n  } while (0);\n  HEAP32[867] = HEAP32[867] | 4;\n  $tsize$1$i = $tsize$0323944$i;\n  label = 191;\n } else {\n  $tsize$1$i = 0;\n  label = 191;\n } while (0);\n if ((label | 0) == 191) if ($550 >>> 0 < 2147483647) {\n  $621 = _sbrk($550 | 0) | 0;\n  $622 = _sbrk(0) | 0;\n  if ($621 >>> 0 < $622 >>> 0 & (($621 | 0) != (-1 | 0) & ($622 | 0) != (-1 | 0))) {\n   $628 = $622 - $621 | 0;\n   $630 = $628 >>> 0 > ($nb$0 + 40 | 0) >>> 0;\n   if ($630) {\n    $tbase$255$i = $621;\n    $tsize$254$i = $630 ? $628 : $tsize$1$i;\n    label = 194;\n   }\n  }\n }\n if ((label | 0) == 194) {\n  $632 = (HEAP32[864] | 0) + $tsize$254$i | 0;\n  HEAP32[864] = $632;\n  if ($632 >>> 0 > (HEAP32[865] | 0) >>> 0) HEAP32[865] = $632;\n  $635 = HEAP32[762] | 0;\n  L299 : do if (!$635) {\n   $637 = HEAP32[760] | 0;\n   if (($637 | 0) == 0 | $tbase$255$i >>> 0 < $637 >>> 0) HEAP32[760] = $tbase$255$i;\n   HEAP32[868] = $tbase$255$i;\n   HEAP32[869] = $tsize$254$i;\n   HEAP32[871] = 0;\n   HEAP32[765] = HEAP32[874];\n   HEAP32[764] = -1;\n   $i$02$i$i = 0;\n   do {\n    $641 = $i$02$i$i << 1;\n    $642 = 3064 + ($641 << 2) | 0;\n    HEAP32[3064 + ($641 + 3 << 2) >> 2] = $642;\n    HEAP32[3064 + ($641 + 2 << 2) >> 2] = $642;\n    $i$02$i$i = $i$02$i$i + 1 | 0;\n   } while (($i$02$i$i | 0) != 32);\n   $648 = $tbase$255$i + 8 | 0;\n   $653 = ($648 & 7 | 0) == 0 ? 0 : 0 - $648 & 7;\n   $655 = $tsize$254$i + -40 - $653 | 0;\n   HEAP32[762] = $tbase$255$i + $653;\n   HEAP32[759] = $655;\n   HEAP32[$tbase$255$i + ($653 + 4) >> 2] = $655 | 1;\n   HEAP32[$tbase$255$i + ($tsize$254$i + -36) >> 2] = 40;\n   HEAP32[763] = HEAP32[878];\n  } else {\n   $sp$084$i = 3472;\n   do {\n    $660 = HEAP32[$sp$084$i >> 2] | 0;\n    $661 = $sp$084$i + 4 | 0;\n    $662 = HEAP32[$661 >> 2] | 0;\n    if (($tbase$255$i | 0) == ($660 + $662 | 0)) {\n     $$lcssa222 = $660;\n     $$lcssa224 = $661;\n     $$lcssa226 = $662;\n     $sp$084$i$lcssa = $sp$084$i;\n     label = 204;\n     break;\n    }\n    $sp$084$i = HEAP32[$sp$084$i + 8 >> 2] | 0;\n   } while (($sp$084$i | 0) != 0);\n   if ((label | 0) == 204) if (!(HEAP32[$sp$084$i$lcssa + 12 >> 2] & 8)) if ($635 >>> 0 < $tbase$255$i >>> 0 & $635 >>> 0 >= $$lcssa222 >>> 0) {\n    HEAP32[$$lcssa224 >> 2] = $$lcssa226 + $tsize$254$i;\n    $676 = (HEAP32[759] | 0) + $tsize$254$i | 0;\n    $678 = $635 + 8 | 0;\n    $683 = ($678 & 7 | 0) == 0 ? 0 : 0 - $678 & 7;\n    $685 = $676 - $683 | 0;\n    HEAP32[762] = $635 + $683;\n    HEAP32[759] = $685;\n    HEAP32[$635 + ($683 + 4) >> 2] = $685 | 1;\n    HEAP32[$635 + ($676 + 4) >> 2] = 40;\n    HEAP32[763] = HEAP32[878];\n    break;\n   }\n   $690 = HEAP32[760] | 0;\n   if ($tbase$255$i >>> 0 < $690 >>> 0) {\n    HEAP32[760] = $tbase$255$i;\n    $755 = $tbase$255$i;\n   } else $755 = $690;\n   $692 = $tbase$255$i + $tsize$254$i | 0;\n   $sp$183$i = 3472;\n   while (1) {\n    if ((HEAP32[$sp$183$i >> 2] | 0) == ($692 | 0)) {\n     $$lcssa219 = $sp$183$i;\n     $sp$183$i$lcssa = $sp$183$i;\n     label = 212;\n     break;\n    }\n    $sp$183$i = HEAP32[$sp$183$i + 8 >> 2] | 0;\n    if (!$sp$183$i) {\n     $sp$0$i$i$i = 3472;\n     break;\n    }\n   }\n   if ((label | 0) == 212) if (!(HEAP32[$sp$183$i$lcssa + 12 >> 2] & 8)) {\n    HEAP32[$$lcssa219 >> 2] = $tbase$255$i;\n    $702 = $sp$183$i$lcssa + 4 | 0;\n    HEAP32[$702 >> 2] = (HEAP32[$702 >> 2] | 0) + $tsize$254$i;\n    $706 = $tbase$255$i + 8 | 0;\n    $711 = ($706 & 7 | 0) == 0 ? 0 : 0 - $706 & 7;\n    $714 = $tbase$255$i + ($tsize$254$i + 8) | 0;\n    $719 = ($714 & 7 | 0) == 0 ? 0 : 0 - $714 & 7;\n    $720 = $tbase$255$i + ($719 + $tsize$254$i) | 0;\n    $$sum$i19$i = $711 + $nb$0 | 0;\n    $724 = $tbase$255$i + $$sum$i19$i | 0;\n    $725 = $720 - ($tbase$255$i + $711) - $nb$0 | 0;\n    HEAP32[$tbase$255$i + ($711 + 4) >> 2] = $nb$0 | 3;\n    L324 : do if (($720 | 0) == ($635 | 0)) {\n     $730 = (HEAP32[759] | 0) + $725 | 0;\n     HEAP32[759] = $730;\n     HEAP32[762] = $724;\n     HEAP32[$tbase$255$i + ($$sum$i19$i + 4) >> 2] = $730 | 1;\n    } else {\n     if (($720 | 0) == (HEAP32[761] | 0)) {\n      $736 = (HEAP32[758] | 0) + $725 | 0;\n      HEAP32[758] = $736;\n      HEAP32[761] = $724;\n      HEAP32[$tbase$255$i + ($$sum$i19$i + 4) >> 2] = $736 | 1;\n      HEAP32[$tbase$255$i + ($736 + $$sum$i19$i) >> 2] = $736;\n      break;\n     }\n     $$sum2$i21$i = $tsize$254$i + 4 | 0;\n     $741 = HEAP32[$tbase$255$i + ($$sum2$i21$i + $719) >> 2] | 0;\n     if (($741 & 3 | 0) == 1) {\n      $744 = $741 & -8;\n      $745 = $741 >>> 3;\n      L332 : do if ($741 >>> 0 < 256) {\n       $748 = HEAP32[$tbase$255$i + (($719 | 8) + $tsize$254$i) >> 2] | 0;\n       $750 = HEAP32[$tbase$255$i + ($tsize$254$i + 12 + $719) >> 2] | 0;\n       $752 = 3064 + ($745 << 1 << 2) | 0;\n       do if (($748 | 0) != ($752 | 0)) {\n        if ($748 >>> 0 < $755 >>> 0) _abort();\n        if ((HEAP32[$748 + 12 >> 2] | 0) == ($720 | 0)) break;\n        _abort();\n       } while (0);\n       if (($750 | 0) == ($748 | 0)) {\n        HEAP32[756] = HEAP32[756] & ~(1 << $745);\n        break;\n       }\n       do if (($750 | 0) == ($752 | 0)) $$pre$phi58$i$iZ2D = $750 + 8 | 0; else {\n        if ($750 >>> 0 < $755 >>> 0) _abort();\n        $766 = $750 + 8 | 0;\n        if ((HEAP32[$766 >> 2] | 0) == ($720 | 0)) {\n         $$pre$phi58$i$iZ2D = $766;\n         break;\n        }\n        _abort();\n       } while (0);\n       HEAP32[$748 + 12 >> 2] = $750;\n       HEAP32[$$pre$phi58$i$iZ2D >> 2] = $748;\n      } else {\n       $771 = HEAP32[$tbase$255$i + (($719 | 24) + $tsize$254$i) >> 2] | 0;\n       $773 = HEAP32[$tbase$255$i + ($tsize$254$i + 12 + $719) >> 2] | 0;\n       do if (($773 | 0) == ($720 | 0)) {\n        $$sum67$i$i = $719 | 16;\n        $784 = $tbase$255$i + ($$sum2$i21$i + $$sum67$i$i) | 0;\n        $785 = HEAP32[$784 >> 2] | 0;\n        if (!$785) {\n         $787 = $tbase$255$i + ($$sum67$i$i + $tsize$254$i) | 0;\n         $788 = HEAP32[$787 >> 2] | 0;\n         if (!$788) {\n          $R$1$i$i = 0;\n          break;\n         } else {\n          $R$0$i$i = $788;\n          $RP$0$i$i = $787;\n         }\n        } else {\n         $R$0$i$i = $785;\n         $RP$0$i$i = $784;\n        }\n        while (1) {\n         $790 = $R$0$i$i + 20 | 0;\n         $791 = HEAP32[$790 >> 2] | 0;\n         if ($791) {\n          $R$0$i$i = $791;\n          $RP$0$i$i = $790;\n          continue;\n         }\n         $793 = $R$0$i$i + 16 | 0;\n         $794 = HEAP32[$793 >> 2] | 0;\n         if (!$794) {\n          $R$0$i$i$lcssa = $R$0$i$i;\n          $RP$0$i$i$lcssa = $RP$0$i$i;\n          break;\n         } else {\n          $R$0$i$i = $794;\n          $RP$0$i$i = $793;\n         }\n        }\n        if ($RP$0$i$i$lcssa >>> 0 < $755 >>> 0) _abort(); else {\n         HEAP32[$RP$0$i$i$lcssa >> 2] = 0;\n         $R$1$i$i = $R$0$i$i$lcssa;\n         break;\n        }\n       } else {\n        $776 = HEAP32[$tbase$255$i + (($719 | 8) + $tsize$254$i) >> 2] | 0;\n        if ($776 >>> 0 < $755 >>> 0) _abort();\n        $778 = $776 + 12 | 0;\n        if ((HEAP32[$778 >> 2] | 0) != ($720 | 0)) _abort();\n        $781 = $773 + 8 | 0;\n        if ((HEAP32[$781 >> 2] | 0) == ($720 | 0)) {\n         HEAP32[$778 >> 2] = $773;\n         HEAP32[$781 >> 2] = $776;\n         $R$1$i$i = $773;\n         break;\n        } else _abort();\n       } while (0);\n       if (!$771) break;\n       $799 = HEAP32[$tbase$255$i + ($tsize$254$i + 28 + $719) >> 2] | 0;\n       $800 = 3328 + ($799 << 2) | 0;\n       do if (($720 | 0) == (HEAP32[$800 >> 2] | 0)) {\n        HEAP32[$800 >> 2] = $R$1$i$i;\n        if ($R$1$i$i) break;\n        HEAP32[757] = HEAP32[757] & ~(1 << $799);\n        break L332;\n       } else {\n        if ($771 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort();\n        $809 = $771 + 16 | 0;\n        if ((HEAP32[$809 >> 2] | 0) == ($720 | 0)) HEAP32[$809 >> 2] = $R$1$i$i; else HEAP32[$771 + 20 >> 2] = $R$1$i$i;\n        if (!$R$1$i$i) break L332;\n       } while (0);\n       $814 = HEAP32[760] | 0;\n       if ($R$1$i$i >>> 0 < $814 >>> 0) _abort();\n       HEAP32[$R$1$i$i + 24 >> 2] = $771;\n       $$sum3132$i$i = $719 | 16;\n       $818 = HEAP32[$tbase$255$i + ($$sum3132$i$i + $tsize$254$i) >> 2] | 0;\n       do if ($818) if ($818 >>> 0 < $814 >>> 0) _abort(); else {\n        HEAP32[$R$1$i$i + 16 >> 2] = $818;\n        HEAP32[$818 + 24 >> 2] = $R$1$i$i;\n        break;\n       } while (0);\n       $824 = HEAP32[$tbase$255$i + ($$sum2$i21$i + $$sum3132$i$i) >> 2] | 0;\n       if (!$824) break;\n       if ($824 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else {\n        HEAP32[$R$1$i$i + 20 >> 2] = $824;\n        HEAP32[$824 + 24 >> 2] = $R$1$i$i;\n        break;\n       }\n      } while (0);\n      $oldfirst$0$i$i = $tbase$255$i + (($744 | $719) + $tsize$254$i) | 0;\n      $qsize$0$i$i = $744 + $725 | 0;\n     } else {\n      $oldfirst$0$i$i = $720;\n      $qsize$0$i$i = $725;\n     }\n     $832 = $oldfirst$0$i$i + 4 | 0;\n     HEAP32[$832 >> 2] = HEAP32[$832 >> 2] & -2;\n     HEAP32[$tbase$255$i + ($$sum$i19$i + 4) >> 2] = $qsize$0$i$i | 1;\n     HEAP32[$tbase$255$i + ($qsize$0$i$i + $$sum$i19$i) >> 2] = $qsize$0$i$i;\n     $838 = $qsize$0$i$i >>> 3;\n     if ($qsize$0$i$i >>> 0 < 256) {\n      $840 = $838 << 1;\n      $841 = 3064 + ($840 << 2) | 0;\n      $842 = HEAP32[756] | 0;\n      $843 = 1 << $838;\n      do if (!($842 & $843)) {\n       HEAP32[756] = $842 | $843;\n       $$pre$phi$i23$iZ2D = 3064 + ($840 + 2 << 2) | 0;\n       $F4$0$i$i = $841;\n      } else {\n       $847 = 3064 + ($840 + 2 << 2) | 0;\n       $848 = HEAP32[$847 >> 2] | 0;\n       if ($848 >>> 0 >= (HEAP32[760] | 0) >>> 0) {\n        $$pre$phi$i23$iZ2D = $847;\n        $F4$0$i$i = $848;\n        break;\n       }\n       _abort();\n      } while (0);\n      HEAP32[$$pre$phi$i23$iZ2D >> 2] = $724;\n      HEAP32[$F4$0$i$i + 12 >> 2] = $724;\n      HEAP32[$tbase$255$i + ($$sum$i19$i + 8) >> 2] = $F4$0$i$i;\n      HEAP32[$tbase$255$i + ($$sum$i19$i + 12) >> 2] = $841;\n      break;\n     }\n     $854 = $qsize$0$i$i >>> 8;\n     do if (!$854) $I7$0$i$i = 0; else {\n      if ($qsize$0$i$i >>> 0 > 16777215) {\n       $I7$0$i$i = 31;\n       break;\n      }\n      $859 = ($854 + 1048320 | 0) >>> 16 & 8;\n      $860 = $854 << $859;\n      $863 = ($860 + 520192 | 0) >>> 16 & 4;\n      $865 = $860 << $863;\n      $868 = ($865 + 245760 | 0) >>> 16 & 2;\n      $873 = 14 - ($863 | $859 | $868) + ($865 << $868 >>> 15) | 0;\n      $I7$0$i$i = $qsize$0$i$i >>> ($873 + 7 | 0) & 1 | $873 << 1;\n     } while (0);\n     $879 = 3328 + ($I7$0$i$i << 2) | 0;\n     HEAP32[$tbase$255$i + ($$sum$i19$i + 28) >> 2] = $I7$0$i$i;\n     HEAP32[$tbase$255$i + ($$sum$i19$i + 20) >> 2] = 0;\n     HEAP32[$tbase$255$i + ($$sum$i19$i + 16) >> 2] = 0;\n     $883 = HEAP32[757] | 0;\n     $884 = 1 << $I7$0$i$i;\n     if (!($883 & $884)) {\n      HEAP32[757] = $883 | $884;\n      HEAP32[$879 >> 2] = $724;\n      HEAP32[$tbase$255$i + ($$sum$i19$i + 24) >> 2] = $879;\n      HEAP32[$tbase$255$i + ($$sum$i19$i + 12) >> 2] = $724;\n      HEAP32[$tbase$255$i + ($$sum$i19$i + 8) >> 2] = $724;\n      break;\n     }\n     $891 = HEAP32[$879 >> 2] | 0;\n     L418 : do if ((HEAP32[$891 + 4 >> 2] & -8 | 0) == ($qsize$0$i$i | 0)) $T$0$lcssa$i25$i = $891; else {\n      $K8$051$i$i = $qsize$0$i$i << (($I7$0$i$i | 0) == 31 ? 0 : 25 - ($I7$0$i$i >>> 1) | 0);\n      $T$050$i$i = $891;\n      while (1) {\n       $908 = $T$050$i$i + 16 + ($K8$051$i$i >>> 31 << 2) | 0;\n       $903 = HEAP32[$908 >> 2] | 0;\n       if (!$903) {\n        $$lcssa = $908;\n        $T$050$i$i$lcssa = $T$050$i$i;\n        break;\n       }\n       if ((HEAP32[$903 + 4 >> 2] & -8 | 0) == ($qsize$0$i$i | 0)) {\n        $T$0$lcssa$i25$i = $903;\n        break L418;\n       } else {\n        $K8$051$i$i = $K8$051$i$i << 1;\n        $T$050$i$i = $903;\n       }\n      }\n      if ($$lcssa >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else {\n       HEAP32[$$lcssa >> 2] = $724;\n       HEAP32[$tbase$255$i + ($$sum$i19$i + 24) >> 2] = $T$050$i$i$lcssa;\n       HEAP32[$tbase$255$i + ($$sum$i19$i + 12) >> 2] = $724;\n       HEAP32[$tbase$255$i + ($$sum$i19$i + 8) >> 2] = $724;\n       break L324;\n      }\n     } while (0);\n     $915 = $T$0$lcssa$i25$i + 8 | 0;\n     $916 = HEAP32[$915 >> 2] | 0;\n     $917 = HEAP32[760] | 0;\n     if ($916 >>> 0 >= $917 >>> 0 & $T$0$lcssa$i25$i >>> 0 >= $917 >>> 0) {\n      HEAP32[$916 + 12 >> 2] = $724;\n      HEAP32[$915 >> 2] = $724;\n      HEAP32[$tbase$255$i + ($$sum$i19$i + 8) >> 2] = $916;\n      HEAP32[$tbase$255$i + ($$sum$i19$i + 12) >> 2] = $T$0$lcssa$i25$i;\n      HEAP32[$tbase$255$i + ($$sum$i19$i + 24) >> 2] = 0;\n      break;\n     } else _abort();\n    } while (0);\n    $mem$0 = $tbase$255$i + ($711 | 8) | 0;\n    return $mem$0 | 0;\n   } else $sp$0$i$i$i = 3472;\n   while (1) {\n    $925 = HEAP32[$sp$0$i$i$i >> 2] | 0;\n    if ($925 >>> 0 <= $635 >>> 0) {\n     $928 = HEAP32[$sp$0$i$i$i + 4 >> 2] | 0;\n     $929 = $925 + $928 | 0;\n     if ($929 >>> 0 > $635 >>> 0) {\n      $$lcssa215 = $925;\n      $$lcssa216 = $928;\n      $$lcssa217 = $929;\n      break;\n     }\n    }\n    $sp$0$i$i$i = HEAP32[$sp$0$i$i$i + 8 >> 2] | 0;\n   }\n   $934 = $$lcssa215 + ($$lcssa216 + -39) | 0;\n   $940 = $$lcssa215 + ($$lcssa216 + -47 + (($934 & 7 | 0) == 0 ? 0 : 0 - $934 & 7)) | 0;\n   $941 = $635 + 16 | 0;\n   $943 = $940 >>> 0 < $941 >>> 0 ? $635 : $940;\n   $944 = $943 + 8 | 0;\n   $947 = $tbase$255$i + 8 | 0;\n   $952 = ($947 & 7 | 0) == 0 ? 0 : 0 - $947 & 7;\n   $954 = $tsize$254$i + -40 - $952 | 0;\n   HEAP32[762] = $tbase$255$i + $952;\n   HEAP32[759] = $954;\n   HEAP32[$tbase$255$i + ($952 + 4) >> 2] = $954 | 1;\n   HEAP32[$tbase$255$i + ($tsize$254$i + -36) >> 2] = 40;\n   HEAP32[763] = HEAP32[878];\n   $959 = $943 + 4 | 0;\n   HEAP32[$959 >> 2] = 27;\n   HEAP32[$944 >> 2] = HEAP32[868];\n   HEAP32[$944 + 4 >> 2] = HEAP32[869];\n   HEAP32[$944 + 8 >> 2] = HEAP32[870];\n   HEAP32[$944 + 12 >> 2] = HEAP32[871];\n   HEAP32[868] = $tbase$255$i;\n   HEAP32[869] = $tsize$254$i;\n   HEAP32[871] = 0;\n   HEAP32[870] = $944;\n   $960 = $943 + 28 | 0;\n   HEAP32[$960 >> 2] = 7;\n   if (($943 + 32 | 0) >>> 0 < $$lcssa217 >>> 0) {\n    $964 = $960;\n    do {\n     $964$looptemp = $964;\n     $964 = $964 + 4 | 0;\n     HEAP32[$964 >> 2] = 7;\n    } while (($964$looptemp + 8 | 0) >>> 0 < $$lcssa217 >>> 0);\n   }\n   if (($943 | 0) != ($635 | 0)) {\n    $970 = $943 - $635 | 0;\n    HEAP32[$959 >> 2] = HEAP32[$959 >> 2] & -2;\n    HEAP32[$635 + 4 >> 2] = $970 | 1;\n    HEAP32[$943 >> 2] = $970;\n    $975 = $970 >>> 3;\n    if ($970 >>> 0 < 256) {\n     $977 = $975 << 1;\n     $978 = 3064 + ($977 << 2) | 0;\n     $979 = HEAP32[756] | 0;\n     $980 = 1 << $975;\n     if (!($979 & $980)) {\n      HEAP32[756] = $979 | $980;\n      $$pre$phi$i$iZ2D = 3064 + ($977 + 2 << 2) | 0;\n      $F$0$i$i = $978;\n     } else {\n      $984 = 3064 + ($977 + 2 << 2) | 0;\n      $985 = HEAP32[$984 >> 2] | 0;\n      if ($985 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else {\n       $$pre$phi$i$iZ2D = $984;\n       $F$0$i$i = $985;\n      }\n     }\n     HEAP32[$$pre$phi$i$iZ2D >> 2] = $635;\n     HEAP32[$F$0$i$i + 12 >> 2] = $635;\n     HEAP32[$635 + 8 >> 2] = $F$0$i$i;\n     HEAP32[$635 + 12 >> 2] = $978;\n     break;\n    }\n    $991 = $970 >>> 8;\n    if (!$991) $I1$0$i$i = 0; else if ($970 >>> 0 > 16777215) $I1$0$i$i = 31; else {\n     $996 = ($991 + 1048320 | 0) >>> 16 & 8;\n     $997 = $991 << $996;\n     $1000 = ($997 + 520192 | 0) >>> 16 & 4;\n     $1002 = $997 << $1000;\n     $1005 = ($1002 + 245760 | 0) >>> 16 & 2;\n     $1010 = 14 - ($1000 | $996 | $1005) + ($1002 << $1005 >>> 15) | 0;\n     $I1$0$i$i = $970 >>> ($1010 + 7 | 0) & 1 | $1010 << 1;\n    }\n    $1016 = 3328 + ($I1$0$i$i << 2) | 0;\n    HEAP32[$635 + 28 >> 2] = $I1$0$i$i;\n    HEAP32[$635 + 20 >> 2] = 0;\n    HEAP32[$941 >> 2] = 0;\n    $1019 = HEAP32[757] | 0;\n    $1020 = 1 << $I1$0$i$i;\n    if (!($1019 & $1020)) {\n     HEAP32[757] = $1019 | $1020;\n     HEAP32[$1016 >> 2] = $635;\n     HEAP32[$635 + 24 >> 2] = $1016;\n     HEAP32[$635 + 12 >> 2] = $635;\n     HEAP32[$635 + 8 >> 2] = $635;\n     break;\n    }\n    $1027 = HEAP32[$1016 >> 2] | 0;\n    L459 : do if ((HEAP32[$1027 + 4 >> 2] & -8 | 0) == ($970 | 0)) $T$0$lcssa$i$i = $1027; else {\n     $K2$07$i$i = $970 << (($I1$0$i$i | 0) == 31 ? 0 : 25 - ($I1$0$i$i >>> 1) | 0);\n     $T$06$i$i = $1027;\n     while (1) {\n      $1044 = $T$06$i$i + 16 + ($K2$07$i$i >>> 31 << 2) | 0;\n      $1039 = HEAP32[$1044 >> 2] | 0;\n      if (!$1039) {\n       $$lcssa211 = $1044;\n       $T$06$i$i$lcssa = $T$06$i$i;\n       break;\n      }\n      if ((HEAP32[$1039 + 4 >> 2] & -8 | 0) == ($970 | 0)) {\n       $T$0$lcssa$i$i = $1039;\n       break L459;\n      } else {\n       $K2$07$i$i = $K2$07$i$i << 1;\n       $T$06$i$i = $1039;\n      }\n     }\n     if ($$lcssa211 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else {\n      HEAP32[$$lcssa211 >> 2] = $635;\n      HEAP32[$635 + 24 >> 2] = $T$06$i$i$lcssa;\n      HEAP32[$635 + 12 >> 2] = $635;\n      HEAP32[$635 + 8 >> 2] = $635;\n      break L299;\n     }\n    } while (0);\n    $1051 = $T$0$lcssa$i$i + 8 | 0;\n    $1052 = HEAP32[$1051 >> 2] | 0;\n    $1053 = HEAP32[760] | 0;\n    if ($1052 >>> 0 >= $1053 >>> 0 & $T$0$lcssa$i$i >>> 0 >= $1053 >>> 0) {\n     HEAP32[$1052 + 12 >> 2] = $635;\n     HEAP32[$1051 >> 2] = $635;\n     HEAP32[$635 + 8 >> 2] = $1052;\n     HEAP32[$635 + 12 >> 2] = $T$0$lcssa$i$i;\n     HEAP32[$635 + 24 >> 2] = 0;\n     break;\n    } else _abort();\n   }\n  } while (0);\n  $1060 = HEAP32[759] | 0;\n  if ($1060 >>> 0 > $nb$0 >>> 0) {\n   $1062 = $1060 - $nb$0 | 0;\n   HEAP32[759] = $1062;\n   $1063 = HEAP32[762] | 0;\n   HEAP32[762] = $1063 + $nb$0;\n   HEAP32[$1063 + ($nb$0 + 4) >> 2] = $1062 | 1;\n   HEAP32[$1063 + 4 >> 2] = $nb$0 | 3;\n   $mem$0 = $1063 + 8 | 0;\n   return $mem$0 | 0;\n  }\n }\n $1070 = ___errno_location() | 0;\n HEAP32[$1070 >> 2] = 12;\n $mem$0 = 0;\n return $mem$0 | 0;\n}\n\nfunction ___floatscan($f, $prec, $pok) {\n $f = $f | 0;\n $prec = $prec | 0;\n $pok = $pok | 0;\n var $$0 = 0.0, $$0$i27 = 0.0, $$010$i = 0, $$07$i = 0, $$0710$i = 0, $$0711$i = 0, $$09$i = 0, $$1$be$i = 0, $$1$ph$i = 0, $$18$i = 0, $$2$i = 0, $$3$be$i = 0, $$3$lcssa$i = 0, $$3105$i = 0, $$in = 0, $$lcssa = 0, $$lcssa256 = 0, $$lcssa256$lcssa = 0, $$lcssa257 = 0, $$lcssa257$lcssa = 0, $$lcssa263 = 0, $$lcssa264 = 0, $$lcssa265 = 0, $$lcssa275 = 0, $$not$i = 0, $$pre$i = 0, $$pre$i17 = 0, $$pre$phi42$iZ2D = 0.0, $$sink$off0$i = 0, $0 = 0, $1 = 0, $103 = 0, $113 = 0, $115 = 0, $123 = 0, $125 = 0, $132 = 0, $139 = 0, $147 = 0, $15 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $159 = 0, $16 = 0, $160 = 0, $164 = 0, $169 = 0, $171 = 0, $183 = 0.0, $190 = 0, $192 = 0, $2 = 0, $201 = 0, $205 = 0, $211 = 0, $212 = 0, $213 = 0, $214 = 0, $215 = 0, $216 = 0, $217 = 0, $223 = 0, $224 = 0, $225 = 0, $235 = 0, $236 = 0, $249 = 0, $251 = 0, $253 = 0, $254 = 0, $255 = 0, $256 = 0, $266 = 0, $270 = 0, $272 = 0, $279 = 0, $283 = 0, $287 = 0, $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0, $295 = 0, $297 = 0, $298 = 0, $299 = 0, $300 = 0, $310 = 0.0, $322 = 0.0, $324 = 0, $330 = 0, $331 = 0, $338 = 0, $346 = 0, $347 = 0, $348 = 0, $349 = 0, $350 = 0, $358 = 0, $36 = 0, $360 = 0, $362 = 0, $365 = 0, $366 = 0, $367 = 0, $368 = 0, $369 = 0, $371 = 0, $376 = 0, $377 = 0, $381 = 0, $39 = 0, $392 = 0, $393 = 0, $394 = 0, $395 = 0, $396 = 0, $397 = 0, $398 = 0, $399 = 0, $402 = 0, $403 = 0, $412 = 0, $413 = 0, $414 = 0, $42 = 0, $421 = 0, $422 = 0, $427 = 0, $428 = 0, $430 = 0, $431 = 0, $444 = 0, $446 = 0, $452 = 0, $456 = 0, $458 = 0, $464 = 0, $470 = 0, $471 = 0, $472 = 0, $494 = 0, $506 = 0, $510 = 0, $513 = 0, $515 = 0, $516 = 0, $517 = 0, $520 = 0, $521 = 0, $533 = 0, $534 = 0, $535 = 0, $539 = 0, $541 = 0, $543 = 0, $544 = 0, $550 = 0, $552 = 0, $557 = 0, $560 = 0, $564 = 0, $567 = 0, $572 = 0, $576 = 0, $577 = 0, $579 = 0, $583 = 0, $585 = 0, $588 = 0, $589 = 0, $590 = 0, $591 = 0, $594 = 0, $595 = 0, $60 = 0, $604 = 0, $609 = 0, $610 = 0, $617 = 0, $619 = 0.0, $621 = 0, $625 = 0.0, $626 = 0.0, $629 = 0.0, $633 = 0, $636 = 0, $643 = 0.0, $661 = 0.0, $663 = 0, $669 = 0, $67 = 0, $670 = 0, $677 = 0, $680 = 0, $69 = 0, $691 = 0, $694 = 0, $695 = 0, $696 = 0, $697 = 0, $698 = 0, $699 = 0, $700 = 0, $701 = 0, $702 = 0, $703 = 0, $704 = 0, $705 = 0, $706 = 0, $707 = 0, $708 = 0, $709 = 0, $710 = 0, $711 = 0, $712 = 0, $713 = 0, $714 = 0, $715 = 0, $716 = 0, $717 = 0, $718 = 0, $719 = 0, $720 = 0, $721 = 0, $722 = 0, $723 = 0, $77 = 0, $82 = 0, $9 = 0, $90 = 0, $99 = 0, $a$0$lcssa151$i = 0, $a$085$i = 0, $a$1$i = 0, $a$1$i$lcssa = 0, $a$2$ph38$i = 0, $a$3$i = 0, $a$3$i$lcssa248 = 0, $a$3$i249 = 0, $a$3$ph$i = 0, $a$3$ph157$i = 0, $a$478$i = 0, $a$5$i = 0, $a$5$i$lcssa = 0, $a$5$i$lcssa$lcssa = 0, $bias$0$i = 0.0, $bias$0$i25 = 0.0, $bits$0$ph = 0, $c$0 = 0, $c$0$i = 0, $c$1$lcssa = 0, $c$1$ph$i = 0, $c$179 = 0, $c$2 = 0, $c$2$i = 0, $c$2$lcssa$i = 0, $c$377 = 0, $c$4 = 0, $c$5 = 0, $c$6 = 0, $carry$087$i = 0, $carry1$0$i = 0, $carry1$1$i = 0, $carry1$1$i$lcssa = 0, $carry1$1$i$lcssa$lcssa = 0, $carry3$081$i = 0, $d$0$i = 0, $denormal$0$i = 0, $denormal$2$i = 0, $e2$0$i19 = 0, $e2$0$ph$i = 0, $e2$1$i = 0, $e2$1$i246 = 0, $e2$1$ph$i = 0, $e2$1$ph156$i = 0, $e2$2$i = 0, $e2$3$i = 0, $emin$0$ph = 0, $frac$0$i = 0.0, $frac$1$i = 0.0, $frac$2$i = 0.0, $gotdig$0$i = 0, $gotdig$0$i$lcssa242 = 0, $gotdig$0$i12 = 0, $gotdig$0$i12$lcssa273 = 0, $gotdig$2$i = 0, $gotdig$2$i$lcssa = 0, $gotdig$2$i13 = 0, $gotdig$3$i = 0, $gotdig$3$lcssa$i = 0, $gotdig$3101$i = 0, $gotdig$3101$i$lcssa = 0, $gotdig$4$i = 0, $gotrad$0$i = 0, $gotrad$0$i$lcssa = 0, $gotrad$0$i14 = 0, $gotrad$1$i = 0, $gotrad$1$lcssa$i = 0, $gotrad$1102$i = 0, $gotrad$2$i = 0, $gottail$0$i = 0, $gottail$1$i = 0, $gottail$2$i = 0, $i$0$lcssa = 0, $i$078 = 0, $i$1 = 0, $i$276 = 0, $i$3 = 0, $i$4 = 0, $i$4$lcssa = 0, $j$0$lcssa$i = 0, $j$0104$i = 0, $j$0104$i$lcssa = 0, $j$067$i = 0, $j$068$i = 0, $j$069$i = 0, $j$2$i = 0, $j$394$i = 0, $k$0$lcssa$i = 0, $k$0103$i = 0, $k$0103$i$lcssa = 0, $k$063$i = 0, $k$064$i = 0, $k$065$i = 0, $k$2$i = 0, $k$3$i = 0, $k$486$i = 0, $k$5$i = 0, $k$5$in$i = 0, $k$679$i = 0, $lnz$0$lcssa$i = 0, $lnz$0100$i = 0, $lnz$0100$i$lcssa = 0, $lnz$057$i = 0, $lnz$058$i = 0, $lnz$059$i = 0, $lnz$2$i = 0, $or$cond16$i = 0, $or$cond19$i = 0, $or$cond9$i = 0, $rp$0$lcssa152$i = 0, $rp$084$i = 0, $rp$1$i18 = 0, $rp$1$i18$lcssa = 0, $rp$2$ph36$i = 0, $rp$3$ph$i = 0, $rp$3$ph34$i = 0, $rp$477$i = 0, $rp$5$i = 0, $rp$5$i$lcssa = 0, $rp$5$i$lcssa$lcssa = 0, $scale$0$i = 0.0, $scale$1$i = 0.0, $scale$2$i = 0.0, $sign$0 = 0, $storemerge$i = 0, $sum$i = 0, $x$0$i = 0, $x$0$i$lcssa = 0, $x$1$i = 0, $x$2$i = 0, $x$3$lcssa$i = 0, $x$324$i = 0, $x$4$lcssa$i = 0, $x$419$i = 0, $x$5$i = 0, $x$i = 0, $y$0$i = 0.0, $y$0$i$lcssa = 0.0, $y$1$i = 0.0, $y$1$i24 = 0.0, $y$2$i = 0.0, $y$2$i26 = 0.0, $y$3$i = 0.0, $y$3$lcssa$i = 0.0, $y$320$i = 0.0, $y$4$i = 0.0, $z$0$i = 0, $z$1$i = 0, $z$1$ph37$i = 0, $z$2$i = 0, $z$3$i = 0, $z$3$i$lcssa = 0, $z$3$i$lcssa$lcssa = 0, $z$4$i = 0, $z$5$ph$i = 0, $z$7$1$i = 0, $z$7$i = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 512 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $x$i = sp;\n switch ($prec | 0) {\n case 0:\n  {\n   $bits$0$ph = 24;\n   $emin$0$ph = -149;\n   label = 4;\n   break;\n  }\n case 1:\n  {\n   $bits$0$ph = 53;\n   $emin$0$ph = -1074;\n   label = 4;\n   break;\n  }\n case 2:\n  {\n   $bits$0$ph = 53;\n   $emin$0$ph = -1074;\n   label = 4;\n   break;\n  }\n default:\n  $$0 = 0.0;\n }\n L4 : do if ((label | 0) == 4) {\n  $0 = $f + 4 | 0;\n  $1 = $f + 100 | 0;\n  do {\n   $2 = HEAP32[$0 >> 2] | 0;\n   if ($2 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) {\n    HEAP32[$0 >> 2] = $2 + 1;\n    $9 = HEAPU8[$2 >> 0] | 0;\n   } else $9 = ___shgetc($f) | 0;\n  } while ((_isspace($9) | 0) != 0);\n  $$lcssa275 = $9;\n  L13 : do switch ($$lcssa275 | 0) {\n  case 43:\n  case 45:\n   {\n    $15 = 1 - ((($$lcssa275 | 0) == 45 & 1) << 1) | 0;\n    $16 = HEAP32[$0 >> 2] | 0;\n    if ($16 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) {\n     HEAP32[$0 >> 2] = $16 + 1;\n     $c$0 = HEAPU8[$16 >> 0] | 0;\n     $sign$0 = $15;\n     break L13;\n    } else {\n     $c$0 = ___shgetc($f) | 0;\n     $sign$0 = $15;\n     break L13;\n    }\n    break;\n   }\n  default:\n   {\n    $c$0 = $$lcssa275;\n    $sign$0 = 1;\n   }\n  } while (0);\n  $c$179 = $c$0;\n  $i$078 = 0;\n  while (1) {\n   if (($c$179 | 32 | 0) != (HEAP8[16458 + $i$078 >> 0] | 0)) {\n    $c$1$lcssa = $c$179;\n    $i$0$lcssa = $i$078;\n    break;\n   }\n   do if ($i$078 >>> 0 < 7) {\n    $29 = HEAP32[$0 >> 2] | 0;\n    if ($29 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) {\n     HEAP32[$0 >> 2] = $29 + 1;\n     $c$2 = HEAPU8[$29 >> 0] | 0;\n     break;\n    } else {\n     $c$2 = ___shgetc($f) | 0;\n     break;\n    }\n   } else $c$2 = $c$179; while (0);\n   $36 = $i$078 + 1 | 0;\n   if ($36 >>> 0 < 8) {\n    $c$179 = $c$2;\n    $i$078 = $36;\n   } else {\n    $c$1$lcssa = $c$2;\n    $i$0$lcssa = $36;\n    break;\n   }\n  }\n  L29 : do switch ($i$0$lcssa | 0) {\n  case 8:\n   break;\n  case 3:\n   {\n    label = 23;\n    break;\n   }\n  default:\n   {\n    $39 = ($pok | 0) != 0;\n    if ($39 & $i$0$lcssa >>> 0 > 3) if (($i$0$lcssa | 0) == 8) break L29; else {\n     label = 23;\n     break L29;\n    }\n    L34 : do if (!$i$0$lcssa) {\n     $c$377 = $c$1$lcssa;\n     $i$276 = 0;\n     while (1) {\n      if (($c$377 | 32 | 0) != (HEAP8[18301 + $i$276 >> 0] | 0)) {\n       $c$5 = $c$377;\n       $i$3 = $i$276;\n       break L34;\n      }\n      do if ($i$276 >>> 0 < 2) {\n       $60 = HEAP32[$0 >> 2] | 0;\n       if ($60 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) {\n        HEAP32[$0 >> 2] = $60 + 1;\n        $c$4 = HEAPU8[$60 >> 0] | 0;\n        break;\n       } else {\n        $c$4 = ___shgetc($f) | 0;\n        break;\n       }\n      } else $c$4 = $c$377; while (0);\n      $67 = $i$276 + 1 | 0;\n      if ($67 >>> 0 < 3) {\n       $c$377 = $c$4;\n       $i$276 = $67;\n      } else {\n       $c$5 = $c$4;\n       $i$3 = $67;\n       break;\n      }\n     }\n    } else {\n     $c$5 = $c$1$lcssa;\n     $i$3 = $i$0$lcssa;\n    } while (0);\n    switch ($i$3 | 0) {\n    case 3:\n     {\n      $69 = HEAP32[$0 >> 2] | 0;\n      if ($69 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) {\n       HEAP32[$0 >> 2] = $69 + 1;\n       $77 = HEAPU8[$69 >> 0] | 0;\n      } else $77 = ___shgetc($f) | 0;\n      if (($77 | 0) == 40) $i$4 = 1; else {\n       if (!(HEAP32[$1 >> 2] | 0)) {\n        $$0 = nan;\n        break L4;\n       }\n       HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1;\n       $$0 = nan;\n       break L4;\n      }\n      while (1) {\n       $82 = HEAP32[$0 >> 2] | 0;\n       if ($82 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) {\n        HEAP32[$0 >> 2] = $82 + 1;\n        $90 = HEAPU8[$82 >> 0] | 0;\n       } else $90 = ___shgetc($f) | 0;\n       if (!(($90 + -48 | 0) >>> 0 < 10 | ($90 + -65 | 0) >>> 0 < 26)) if (!(($90 | 0) == 95 | ($90 + -97 | 0) >>> 0 < 26)) {\n        $$lcssa = $90;\n        $i$4$lcssa = $i$4;\n        break;\n       }\n       $i$4 = $i$4 + 1 | 0;\n      }\n      if (($$lcssa | 0) == 41) {\n       $$0 = nan;\n       break L4;\n      }\n      $99 = (HEAP32[$1 >> 2] | 0) == 0;\n      if (!$99) HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1;\n      if (!$39) {\n       $103 = ___errno_location() | 0;\n       HEAP32[$103 >> 2] = 22;\n       ___shlim($f, 0);\n       $$0 = 0.0;\n       break L4;\n      }\n      if (!$i$4$lcssa) {\n       $$0 = nan;\n       break L4;\n      } else $$in = $i$4$lcssa;\n      while (1) {\n       $$in = $$in + -1 | 0;\n       if (!$99) HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1;\n       if (!$$in) {\n        $$0 = nan;\n        break L4;\n       }\n      }\n      break;\n     }\n    case 0:\n     {\n      do if (($c$5 | 0) == 48) {\n       $115 = HEAP32[$0 >> 2] | 0;\n       if ($115 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) {\n        HEAP32[$0 >> 2] = $115 + 1;\n        $123 = HEAPU8[$115 >> 0] | 0;\n       } else $123 = ___shgetc($f) | 0;\n       if (($123 | 32 | 0) != 120) {\n        if (!(HEAP32[$1 >> 2] | 0)) {\n         $c$6 = 48;\n         break;\n        }\n        HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1;\n        $c$6 = 48;\n        break;\n       }\n       $125 = HEAP32[$0 >> 2] | 0;\n       if ($125 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) {\n        HEAP32[$0 >> 2] = $125 + 1;\n        $c$0$i = HEAPU8[$125 >> 0] | 0;\n        $gotdig$0$i = 0;\n       } else {\n        $c$0$i = ___shgetc($f) | 0;\n        $gotdig$0$i = 0;\n       }\n       L94 : while (1) {\n        switch ($c$0$i | 0) {\n        case 46:\n         {\n          $gotdig$0$i$lcssa242 = $gotdig$0$i;\n          label = 74;\n          break L94;\n          break;\n         }\n        case 48:\n         break;\n        default:\n         {\n          $169 = 0;\n          $171 = 0;\n          $694 = 0;\n          $695 = 0;\n          $c$2$i = $c$0$i;\n          $gotdig$2$i = $gotdig$0$i;\n          $gotrad$0$i = 0;\n          $gottail$0$i = 0;\n          $scale$0$i = 1.0;\n          $x$0$i = 0;\n          $y$0$i = 0.0;\n          break L94;\n         }\n        }\n        $132 = HEAP32[$0 >> 2] | 0;\n        if ($132 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) {\n         HEAP32[$0 >> 2] = $132 + 1;\n         $c$0$i = HEAPU8[$132 >> 0] | 0;\n         $gotdig$0$i = 1;\n         continue;\n        } else {\n         $c$0$i = ___shgetc($f) | 0;\n         $gotdig$0$i = 1;\n         continue;\n        }\n       }\n       if ((label | 0) == 74) {\n        $139 = HEAP32[$0 >> 2] | 0;\n        if ($139 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) {\n         HEAP32[$0 >> 2] = $139 + 1;\n         $c$1$ph$i = HEAPU8[$139 >> 0] | 0;\n        } else $c$1$ph$i = ___shgetc($f) | 0;\n        if (($c$1$ph$i | 0) == 48) {\n         $154 = 0;\n         $155 = 0;\n         while (1) {\n          $147 = HEAP32[$0 >> 2] | 0;\n          if ($147 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) {\n           HEAP32[$0 >> 2] = $147 + 1;\n           $159 = HEAPU8[$147 >> 0] | 0;\n          } else $159 = ___shgetc($f) | 0;\n          $156 = _i64Add($154 | 0, $155 | 0, -1, -1) | 0;\n          $157 = tempRet0;\n          if (($159 | 0) == 48) {\n           $154 = $156;\n           $155 = $157;\n          } else {\n           $169 = 0;\n           $171 = 0;\n           $694 = $156;\n           $695 = $157;\n           $c$2$i = $159;\n           $gotdig$2$i = 1;\n           $gotrad$0$i = 1;\n           $gottail$0$i = 0;\n           $scale$0$i = 1.0;\n           $x$0$i = 0;\n           $y$0$i = 0.0;\n           break;\n          }\n         }\n        } else {\n         $169 = 0;\n         $171 = 0;\n         $694 = 0;\n         $695 = 0;\n         $c$2$i = $c$1$ph$i;\n         $gotdig$2$i = $gotdig$0$i$lcssa242;\n         $gotrad$0$i = 1;\n         $gottail$0$i = 0;\n         $scale$0$i = 1.0;\n         $x$0$i = 0;\n         $y$0$i = 0.0;\n        }\n       }\n       while (1) {\n        $160 = $c$2$i + -48 | 0;\n        $$pre$i = $c$2$i | 32;\n        if ($160 >>> 0 < 10) label = 86; else {\n         $164 = ($c$2$i | 0) == 46;\n         if (!($164 | ($$pre$i + -97 | 0) >>> 0 < 6)) {\n          $213 = $171;\n          $214 = $694;\n          $216 = $169;\n          $217 = $695;\n          $c$2$lcssa$i = $c$2$i;\n          $gotdig$2$i$lcssa = $gotdig$2$i;\n          $gotrad$0$i$lcssa = $gotrad$0$i;\n          $x$0$i$lcssa = $x$0$i;\n          $y$0$i$lcssa = $y$0$i;\n          break;\n         }\n         if ($164) if (!$gotrad$0$i) {\n          $696 = $171;\n          $697 = $169;\n          $698 = $171;\n          $699 = $169;\n          $gotdig$3$i = $gotdig$2$i;\n          $gotrad$1$i = 1;\n          $gottail$2$i = $gottail$0$i;\n          $scale$2$i = $scale$0$i;\n          $x$2$i = $x$0$i;\n          $y$2$i = $y$0$i;\n         } else {\n          $213 = $171;\n          $214 = $694;\n          $216 = $169;\n          $217 = $695;\n          $c$2$lcssa$i = 46;\n          $gotdig$2$i$lcssa = $gotdig$2$i;\n          $gotrad$0$i$lcssa = $gotrad$0$i;\n          $x$0$i$lcssa = $x$0$i;\n          $y$0$i$lcssa = $y$0$i;\n          break;\n         } else label = 86;\n        }\n        if ((label | 0) == 86) {\n         label = 0;\n         $d$0$i = ($c$2$i | 0) > 57 ? $$pre$i + -87 | 0 : $160;\n         do if (($169 | 0) < 0 | ($169 | 0) == 0 & $171 >>> 0 < 8) {\n          $gottail$1$i = $gottail$0$i;\n          $scale$1$i = $scale$0$i;\n          $x$1$i = $d$0$i + ($x$0$i << 4) | 0;\n          $y$1$i = $y$0$i;\n         } else {\n          if (($169 | 0) < 0 | ($169 | 0) == 0 & $171 >>> 0 < 14) {\n           $183 = $scale$0$i * .0625;\n           $gottail$1$i = $gottail$0$i;\n           $scale$1$i = $183;\n           $x$1$i = $x$0$i;\n           $y$1$i = $y$0$i + $183 * +($d$0$i | 0);\n           break;\n          }\n          if (($gottail$0$i | 0) != 0 | ($d$0$i | 0) == 0) {\n           $gottail$1$i = $gottail$0$i;\n           $scale$1$i = $scale$0$i;\n           $x$1$i = $x$0$i;\n           $y$1$i = $y$0$i;\n          } else {\n           $gottail$1$i = 1;\n           $scale$1$i = $scale$0$i;\n           $x$1$i = $x$0$i;\n           $y$1$i = $y$0$i + $scale$0$i * .5;\n          }\n         } while (0);\n         $190 = _i64Add($171 | 0, $169 | 0, 1, 0) | 0;\n         $696 = $694;\n         $697 = $695;\n         $698 = $190;\n         $699 = tempRet0;\n         $gotdig$3$i = 1;\n         $gotrad$1$i = $gotrad$0$i;\n         $gottail$2$i = $gottail$1$i;\n         $scale$2$i = $scale$1$i;\n         $x$2$i = $x$1$i;\n         $y$2$i = $y$1$i;\n        }\n        $192 = HEAP32[$0 >> 2] | 0;\n        if ($192 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) {\n         HEAP32[$0 >> 2] = $192 + 1;\n         $169 = $699;\n         $171 = $698;\n         $694 = $696;\n         $695 = $697;\n         $c$2$i = HEAPU8[$192 >> 0] | 0;\n         $gotdig$2$i = $gotdig$3$i;\n         $gotrad$0$i = $gotrad$1$i;\n         $gottail$0$i = $gottail$2$i;\n         $scale$0$i = $scale$2$i;\n         $x$0$i = $x$2$i;\n         $y$0$i = $y$2$i;\n         continue;\n        } else {\n         $169 = $699;\n         $171 = $698;\n         $694 = $696;\n         $695 = $697;\n         $c$2$i = ___shgetc($f) | 0;\n         $gotdig$2$i = $gotdig$3$i;\n         $gotrad$0$i = $gotrad$1$i;\n         $gottail$0$i = $gottail$2$i;\n         $scale$0$i = $scale$2$i;\n         $x$0$i = $x$2$i;\n         $y$0$i = $y$2$i;\n         continue;\n        }\n       }\n       if (!$gotdig$2$i$lcssa) {\n        $201 = (HEAP32[$1 >> 2] | 0) == 0;\n        if (!$201) HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1;\n        if (!$pok) ___shlim($f, 0); else if (!$201) {\n         $205 = HEAP32[$0 >> 2] | 0;\n         HEAP32[$0 >> 2] = $205 + -1;\n         if ($gotrad$0$i$lcssa) HEAP32[$0 >> 2] = $205 + -2;\n        }\n        $$0 = +($sign$0 | 0) * 0.0;\n        break L4;\n       }\n       $211 = ($gotrad$0$i$lcssa | 0) == 0;\n       $212 = $211 ? $213 : $214;\n       $215 = $211 ? $216 : $217;\n       if (($216 | 0) < 0 | ($216 | 0) == 0 & $213 >>> 0 < 8) {\n        $224 = $213;\n        $225 = $216;\n        $x$324$i = $x$0$i$lcssa;\n        while (1) {\n         $223 = $x$324$i << 4;\n         $224 = _i64Add($224 | 0, $225 | 0, 1, 0) | 0;\n         $225 = tempRet0;\n         if (!(($225 | 0) < 0 | ($225 | 0) == 0 & $224 >>> 0 < 8)) {\n          $x$3$lcssa$i = $223;\n          break;\n         } else $x$324$i = $223;\n        }\n       } else $x$3$lcssa$i = $x$0$i$lcssa;\n       if (($c$2$lcssa$i | 32 | 0) == 112) {\n        $235 = _scanexp($f, $pok) | 0;\n        $236 = tempRet0;\n        if (($235 | 0) == 0 & ($236 | 0) == -2147483648) {\n         if (!$pok) {\n          ___shlim($f, 0);\n          $$0 = 0.0;\n          break L4;\n         }\n         if (!(HEAP32[$1 >> 2] | 0)) {\n          $253 = 0;\n          $254 = 0;\n         } else {\n          HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1;\n          $253 = 0;\n          $254 = 0;\n         }\n        } else {\n         $253 = $235;\n         $254 = $236;\n        }\n       } else if (!(HEAP32[$1 >> 2] | 0)) {\n        $253 = 0;\n        $254 = 0;\n       } else {\n        HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1;\n        $253 = 0;\n        $254 = 0;\n       }\n       $249 = _bitshift64Shl($212 | 0, $215 | 0, 2) | 0;\n       $251 = _i64Add($249 | 0, tempRet0 | 0, -32, -1) | 0;\n       $255 = _i64Add($251 | 0, tempRet0 | 0, $253 | 0, $254 | 0) | 0;\n       $256 = tempRet0;\n       if (!$x$3$lcssa$i) {\n        $$0 = +($sign$0 | 0) * 0.0;\n        break L4;\n       }\n       if (($256 | 0) > 0 | ($256 | 0) == 0 & $255 >>> 0 > (0 - $emin$0$ph | 0) >>> 0) {\n        $266 = ___errno_location() | 0;\n        HEAP32[$266 >> 2] = 34;\n        $$0 = +($sign$0 | 0) * 1797693134862315708145274.0e284 * 1797693134862315708145274.0e284;\n        break L4;\n       }\n       $270 = $emin$0$ph + -106 | 0;\n       $272 = (($270 | 0) < 0) << 31 >> 31;\n       if (($256 | 0) < ($272 | 0) | ($256 | 0) == ($272 | 0) & $255 >>> 0 < $270 >>> 0) {\n        $279 = ___errno_location() | 0;\n        HEAP32[$279 >> 2] = 34;\n        $$0 = +($sign$0 | 0) * 2.2250738585072014e-308 * 2.2250738585072014e-308;\n        break L4;\n       }\n       if (($x$3$lcssa$i | 0) > -1) {\n        $288 = $255;\n        $289 = $256;\n        $x$419$i = $x$3$lcssa$i;\n        $y$320$i = $y$0$i$lcssa;\n        while (1) {\n         $283 = !($y$320$i >= .5);\n         $287 = $283 & 1 | $x$419$i << 1;\n         $x$5$i = $287 ^ 1;\n         $y$4$i = $y$320$i + ($283 ? $y$320$i : $y$320$i + -1.0);\n         $290 = _i64Add($288 | 0, $289 | 0, -1, -1) | 0;\n         $291 = tempRet0;\n         if (($287 | 0) > -1) {\n          $288 = $290;\n          $289 = $291;\n          $x$419$i = $x$5$i;\n          $y$320$i = $y$4$i;\n         } else {\n          $297 = $290;\n          $298 = $291;\n          $x$4$lcssa$i = $x$5$i;\n          $y$3$lcssa$i = $y$4$i;\n          break;\n         }\n        }\n       } else {\n        $297 = $255;\n        $298 = $256;\n        $x$4$lcssa$i = $x$3$lcssa$i;\n        $y$3$lcssa$i = $y$0$i$lcssa;\n       }\n       $295 = _i64Subtract(32, 0, $emin$0$ph | 0, (($emin$0$ph | 0) < 0) << 31 >> 31 | 0) | 0;\n       $299 = _i64Add($297 | 0, $298 | 0, $295 | 0, tempRet0 | 0) | 0;\n       $300 = tempRet0;\n       if (0 > ($300 | 0) | 0 == ($300 | 0) & $bits$0$ph >>> 0 > $299 >>> 0) if (($299 | 0) < 0) {\n        $$0710$i = 0;\n        label = 127;\n       } else {\n        $$07$i = $299;\n        label = 125;\n       } else {\n        $$07$i = $bits$0$ph;\n        label = 125;\n       }\n       if ((label | 0) == 125) if (($$07$i | 0) < 53) {\n        $$0710$i = $$07$i;\n        label = 127;\n       } else {\n        $$0711$i = $$07$i;\n        $$pre$phi42$iZ2D = +($sign$0 | 0);\n        $bias$0$i = 0.0;\n       }\n       if ((label | 0) == 127) {\n        $310 = +($sign$0 | 0);\n        $$0711$i = $$0710$i;\n        $$pre$phi42$iZ2D = $310;\n        $bias$0$i = +_copysignl(+_scalbn(1.0, 84 - $$0710$i | 0), $310);\n       }\n       $or$cond9$i = ($x$4$lcssa$i & 1 | 0) == 0 & ($y$3$lcssa$i != 0.0 & ($$0711$i | 0) < 32);\n       $322 = $$pre$phi42$iZ2D * ($or$cond9$i ? 0.0 : $y$3$lcssa$i) + ($bias$0$i + $$pre$phi42$iZ2D * +((($or$cond9$i & 1) + $x$4$lcssa$i | 0) >>> 0)) - $bias$0$i;\n       if (!($322 != 0.0)) {\n        $324 = ___errno_location() | 0;\n        HEAP32[$324 >> 2] = 34;\n       }\n       $$0 = +_scalbnl($322, $297);\n       break L4;\n      } else $c$6 = $c$5; while (0);\n      $sum$i = $emin$0$ph + $bits$0$ph | 0;\n      $330 = 0 - $sum$i | 0;\n      $$09$i = $c$6;\n      $gotdig$0$i12 = 0;\n      L184 : while (1) {\n       switch ($$09$i | 0) {\n       case 46:\n        {\n         $gotdig$0$i12$lcssa273 = $gotdig$0$i12;\n         label = 138;\n         break L184;\n         break;\n        }\n       case 48:\n        break;\n       default:\n        {\n         $$2$i = $$09$i;\n         $700 = 0;\n         $701 = 0;\n         $gotdig$2$i13 = $gotdig$0$i12;\n         $gotrad$0$i14 = 0;\n         break L184;\n        }\n       }\n       $331 = HEAP32[$0 >> 2] | 0;\n       if ($331 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) {\n        HEAP32[$0 >> 2] = $331 + 1;\n        $$09$i = HEAPU8[$331 >> 0] | 0;\n        $gotdig$0$i12 = 1;\n        continue;\n       } else {\n        $$09$i = ___shgetc($f) | 0;\n        $gotdig$0$i12 = 1;\n        continue;\n       }\n      }\n      if ((label | 0) == 138) {\n       $338 = HEAP32[$0 >> 2] | 0;\n       if ($338 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) {\n        HEAP32[$0 >> 2] = $338 + 1;\n        $$1$ph$i = HEAPU8[$338 >> 0] | 0;\n       } else $$1$ph$i = ___shgetc($f) | 0;\n       if (($$1$ph$i | 0) == 48) {\n        $346 = 0;\n        $347 = 0;\n        while (1) {\n         $348 = _i64Add($346 | 0, $347 | 0, -1, -1) | 0;\n         $349 = tempRet0;\n         $350 = HEAP32[$0 >> 2] | 0;\n         if ($350 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) {\n          HEAP32[$0 >> 2] = $350 + 1;\n          $$1$be$i = HEAPU8[$350 >> 0] | 0;\n         } else $$1$be$i = ___shgetc($f) | 0;\n         if (($$1$be$i | 0) == 48) {\n          $346 = $348;\n          $347 = $349;\n         } else {\n          $$2$i = $$1$be$i;\n          $700 = $348;\n          $701 = $349;\n          $gotdig$2$i13 = 1;\n          $gotrad$0$i14 = 1;\n          break;\n         }\n        }\n       } else {\n        $$2$i = $$1$ph$i;\n        $700 = 0;\n        $701 = 0;\n        $gotdig$2$i13 = $gotdig$0$i12$lcssa273;\n        $gotrad$0$i14 = 1;\n       }\n      }\n      HEAP32[$x$i >> 2] = 0;\n      $358 = $$2$i + -48 | 0;\n      $360 = ($$2$i | 0) == 46;\n      L203 : do if ($360 | $358 >>> 0 < 10) {\n       $362 = $x$i + 496 | 0;\n       $$3105$i = $$2$i;\n       $365 = 0;\n       $366 = 0;\n       $702 = $360;\n       $703 = $358;\n       $704 = $700;\n       $705 = $701;\n       $gotdig$3101$i = $gotdig$2$i13;\n       $gotrad$1102$i = $gotrad$0$i14;\n       $j$0104$i = 0;\n       $k$0103$i = 0;\n       $lnz$0100$i = 0;\n       L205 : while (1) {\n        do if ($702) if (!$gotrad$1102$i) {\n         $706 = $365;\n         $707 = $366;\n         $708 = $365;\n         $709 = $366;\n         $gotdig$4$i = $gotdig$3101$i;\n         $gotrad$2$i = 1;\n         $j$2$i = $j$0104$i;\n         $k$2$i = $k$0103$i;\n         $lnz$2$i = $lnz$0100$i;\n        } else {\n         $710 = $704;\n         $711 = $705;\n         $712 = $365;\n         $713 = $366;\n         $gotdig$3101$i$lcssa = $gotdig$3101$i;\n         $j$0104$i$lcssa = $j$0104$i;\n         $k$0103$i$lcssa = $k$0103$i;\n         $lnz$0100$i$lcssa = $lnz$0100$i;\n         break L205;\n        } else {\n         $367 = _i64Add($365 | 0, $366 | 0, 1, 0) | 0;\n         $368 = tempRet0;\n         $369 = ($$3105$i | 0) != 48;\n         if (($k$0103$i | 0) >= 125) {\n          if (!$369) {\n           $706 = $704;\n           $707 = $705;\n           $708 = $367;\n           $709 = $368;\n           $gotdig$4$i = $gotdig$3101$i;\n           $gotrad$2$i = $gotrad$1102$i;\n           $j$2$i = $j$0104$i;\n           $k$2$i = $k$0103$i;\n           $lnz$2$i = $lnz$0100$i;\n           break;\n          }\n          HEAP32[$362 >> 2] = HEAP32[$362 >> 2] | 1;\n          $706 = $704;\n          $707 = $705;\n          $708 = $367;\n          $709 = $368;\n          $gotdig$4$i = $gotdig$3101$i;\n          $gotrad$2$i = $gotrad$1102$i;\n          $j$2$i = $j$0104$i;\n          $k$2$i = $k$0103$i;\n          $lnz$2$i = $lnz$0100$i;\n          break;\n         }\n         $371 = $x$i + ($k$0103$i << 2) | 0;\n         if (!$j$0104$i) $storemerge$i = $703; else $storemerge$i = $$3105$i + -48 + ((HEAP32[$371 >> 2] | 0) * 10 | 0) | 0;\n         HEAP32[$371 >> 2] = $storemerge$i;\n         $376 = $j$0104$i + 1 | 0;\n         $377 = ($376 | 0) == 9;\n         $706 = $704;\n         $707 = $705;\n         $708 = $367;\n         $709 = $368;\n         $gotdig$4$i = 1;\n         $gotrad$2$i = $gotrad$1102$i;\n         $j$2$i = $377 ? 0 : $376;\n         $k$2$i = ($377 & 1) + $k$0103$i | 0;\n         $lnz$2$i = $369 ? $367 : $lnz$0100$i;\n        } while (0);\n        $381 = HEAP32[$0 >> 2] | 0;\n        if ($381 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) {\n         HEAP32[$0 >> 2] = $381 + 1;\n         $$3$be$i = HEAPU8[$381 >> 0] | 0;\n        } else $$3$be$i = ___shgetc($f) | 0;\n        $703 = $$3$be$i + -48 | 0;\n        $702 = ($$3$be$i | 0) == 46;\n        if (!($702 | $703 >>> 0 < 10)) {\n         $$3$lcssa$i = $$3$be$i;\n         $394 = $708;\n         $395 = $706;\n         $397 = $709;\n         $398 = $707;\n         $gotdig$3$lcssa$i = $gotdig$4$i;\n         $gotrad$1$lcssa$i = $gotrad$2$i;\n         $j$0$lcssa$i = $j$2$i;\n         $k$0$lcssa$i = $k$2$i;\n         $lnz$0$lcssa$i = $lnz$2$i;\n         label = 161;\n         break L203;\n        } else {\n         $$3105$i = $$3$be$i;\n         $365 = $708;\n         $366 = $709;\n         $704 = $706;\n         $705 = $707;\n         $gotdig$3101$i = $gotdig$4$i;\n         $gotrad$1102$i = $gotrad$2$i;\n         $j$0104$i = $j$2$i;\n         $k$0103$i = $k$2$i;\n         $lnz$0100$i = $lnz$2$i;\n        }\n       }\n       $714 = $712;\n       $715 = $713;\n       $716 = $710;\n       $717 = $711;\n       $718 = ($gotdig$3101$i$lcssa | 0) != 0;\n       $j$069$i = $j$0104$i$lcssa;\n       $k$065$i = $k$0103$i$lcssa;\n       $lnz$059$i = $lnz$0100$i$lcssa;\n       label = 169;\n      } else {\n       $$3$lcssa$i = $$2$i;\n       $394 = 0;\n       $395 = $700;\n       $397 = 0;\n       $398 = $701;\n       $gotdig$3$lcssa$i = $gotdig$2$i13;\n       $gotrad$1$lcssa$i = $gotrad$0$i14;\n       $j$0$lcssa$i = 0;\n       $k$0$lcssa$i = 0;\n       $lnz$0$lcssa$i = 0;\n       label = 161;\n      } while (0);\n      do if ((label | 0) == 161) {\n       $392 = ($gotrad$1$lcssa$i | 0) == 0;\n       $393 = $392 ? $394 : $395;\n       $396 = $392 ? $397 : $398;\n       $399 = ($gotdig$3$lcssa$i | 0) != 0;\n       if (!(($$3$lcssa$i | 32 | 0) == 101 & $399)) if (($$3$lcssa$i | 0) > -1) {\n        $714 = $394;\n        $715 = $397;\n        $716 = $393;\n        $717 = $396;\n        $718 = $399;\n        $j$069$i = $j$0$lcssa$i;\n        $k$065$i = $k$0$lcssa$i;\n        $lnz$059$i = $lnz$0$lcssa$i;\n        label = 169;\n        break;\n       } else {\n        $719 = $394;\n        $720 = $397;\n        $721 = $399;\n        $722 = $393;\n        $723 = $396;\n        $j$068$i = $j$0$lcssa$i;\n        $k$064$i = $k$0$lcssa$i;\n        $lnz$058$i = $lnz$0$lcssa$i;\n        label = 171;\n        break;\n       }\n       $402 = _scanexp($f, $pok) | 0;\n       $403 = tempRet0;\n       if (($402 | 0) == 0 & ($403 | 0) == -2147483648) {\n        if (!$pok) {\n         ___shlim($f, 0);\n         $$0$i27 = 0.0;\n         break;\n        }\n        if (!(HEAP32[$1 >> 2] | 0)) {\n         $412 = 0;\n         $413 = 0;\n        } else {\n         HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1;\n         $412 = 0;\n         $413 = 0;\n        }\n       } else {\n        $412 = $402;\n        $413 = $403;\n       }\n       $414 = _i64Add($412 | 0, $413 | 0, $393 | 0, $396 | 0) | 0;\n       $427 = $414;\n       $428 = $394;\n       $430 = tempRet0;\n       $431 = $397;\n       $j$067$i = $j$0$lcssa$i;\n       $k$063$i = $k$0$lcssa$i;\n       $lnz$057$i = $lnz$0$lcssa$i;\n       label = 173;\n      } while (0);\n      if ((label | 0) == 169) if (!(HEAP32[$1 >> 2] | 0)) {\n       $719 = $714;\n       $720 = $715;\n       $721 = $718;\n       $722 = $716;\n       $723 = $717;\n       $j$068$i = $j$069$i;\n       $k$064$i = $k$065$i;\n       $lnz$058$i = $lnz$059$i;\n       label = 171;\n      } else {\n       HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1;\n       if ($718) {\n        $427 = $716;\n        $428 = $714;\n        $430 = $717;\n        $431 = $715;\n        $j$067$i = $j$069$i;\n        $k$063$i = $k$065$i;\n        $lnz$057$i = $lnz$059$i;\n        label = 173;\n       } else label = 172;\n      }\n      if ((label | 0) == 171) if ($721) {\n       $427 = $722;\n       $428 = $719;\n       $430 = $723;\n       $431 = $720;\n       $j$067$i = $j$068$i;\n       $k$063$i = $k$064$i;\n       $lnz$057$i = $lnz$058$i;\n       label = 173;\n      } else label = 172;\n      do if ((label | 0) == 172) {\n       $421 = ___errno_location() | 0;\n       HEAP32[$421 >> 2] = 22;\n       ___shlim($f, 0);\n       $$0$i27 = 0.0;\n      } else if ((label | 0) == 173) {\n       $422 = HEAP32[$x$i >> 2] | 0;\n       if (!$422) {\n        $$0$i27 = +($sign$0 | 0) * 0.0;\n        break;\n       }\n       if ((($431 | 0) < 0 | ($431 | 0) == 0 & $428 >>> 0 < 10) & (($427 | 0) == ($428 | 0) & ($430 | 0) == ($431 | 0))) if ($bits$0$ph >>> 0 > 30 | ($422 >>> $bits$0$ph | 0) == 0) {\n        $$0$i27 = +($sign$0 | 0) * +($422 >>> 0);\n        break;\n       }\n       $444 = ($emin$0$ph | 0) / -2 | 0;\n       $446 = (($444 | 0) < 0) << 31 >> 31;\n       if (($430 | 0) > ($446 | 0) | ($430 | 0) == ($446 | 0) & $427 >>> 0 > $444 >>> 0) {\n        $452 = ___errno_location() | 0;\n        HEAP32[$452 >> 2] = 34;\n        $$0$i27 = +($sign$0 | 0) * 1797693134862315708145274.0e284 * 1797693134862315708145274.0e284;\n        break;\n       }\n       $456 = $emin$0$ph + -106 | 0;\n       $458 = (($456 | 0) < 0) << 31 >> 31;\n       if (($430 | 0) < ($458 | 0) | ($430 | 0) == ($458 | 0) & $427 >>> 0 < $456 >>> 0) {\n        $464 = ___errno_location() | 0;\n        HEAP32[$464 >> 2] = 34;\n        $$0$i27 = +($sign$0 | 0) * 2.2250738585072014e-308 * 2.2250738585072014e-308;\n        break;\n       }\n       if (!$j$067$i) $k$3$i = $k$063$i; else {\n        if (($j$067$i | 0) < 9) {\n         $470 = $x$i + ($k$063$i << 2) | 0;\n         $472 = HEAP32[$470 >> 2] | 0;\n         $j$394$i = $j$067$i;\n         while (1) {\n          $471 = $472 * 10 | 0;\n          $j$394$i = $j$394$i + 1 | 0;\n          if (($j$394$i | 0) == 9) {\n           $$lcssa265 = $471;\n           break;\n          } else $472 = $471;\n         }\n         HEAP32[$470 >> 2] = $$lcssa265;\n        }\n        $k$3$i = $k$063$i + 1 | 0;\n       }\n       if (($lnz$057$i | 0) < 9) if (($lnz$057$i | 0) <= ($427 | 0) & ($427 | 0) < 18) {\n        if (($427 | 0) == 9) {\n         $$0$i27 = +($sign$0 | 0) * +((HEAP32[$x$i >> 2] | 0) >>> 0);\n         break;\n        }\n        if (($427 | 0) < 9) {\n         $$0$i27 = +($sign$0 | 0) * +((HEAP32[$x$i >> 2] | 0) >>> 0) / +(HEAP32[2648 + (8 - $427 << 2) >> 2] | 0);\n         break;\n        }\n        $494 = $bits$0$ph + 27 + (Math_imul($427, -3) | 0) | 0;\n        $$pre$i17 = HEAP32[$x$i >> 2] | 0;\n        if (($494 | 0) > 30 | ($$pre$i17 >>> $494 | 0) == 0) {\n         $$0$i27 = +($sign$0 | 0) * +($$pre$i17 >>> 0) * +(HEAP32[2648 + ($427 + -10 << 2) >> 2] | 0);\n         break;\n        }\n       }\n       $506 = ($427 | 0) % 9 | 0;\n       if (!$506) {\n        $a$2$ph38$i = 0;\n        $e2$0$ph$i = 0;\n        $rp$2$ph36$i = $427;\n        $z$1$ph37$i = $k$3$i;\n       } else {\n        $510 = ($427 | 0) > -1 ? $506 : $506 + 9 | 0;\n        $513 = HEAP32[2648 + (8 - $510 << 2) >> 2] | 0;\n        if (!$k$3$i) {\n         $a$0$lcssa151$i = 0;\n         $rp$0$lcssa152$i = $427;\n         $z$0$i = 0;\n        } else {\n         $515 = 1e9 / ($513 | 0) | 0;\n         $a$085$i = 0;\n         $carry$087$i = 0;\n         $k$486$i = 0;\n         $rp$084$i = $427;\n         while (1) {\n          $516 = $x$i + ($k$486$i << 2) | 0;\n          $517 = HEAP32[$516 >> 2] | 0;\n          $520 = (($517 >>> 0) / ($513 >>> 0) | 0) + $carry$087$i | 0;\n          HEAP32[$516 >> 2] = $520;\n          $521 = Math_imul(($517 >>> 0) % ($513 >>> 0) | 0, $515) | 0;\n          $or$cond16$i = ($k$486$i | 0) == ($a$085$i | 0) & ($520 | 0) == 0;\n          $k$486$i = $k$486$i + 1 | 0;\n          $rp$1$i18 = $or$cond16$i ? $rp$084$i + -9 | 0 : $rp$084$i;\n          $a$1$i = $or$cond16$i ? $k$486$i & 127 : $a$085$i;\n          if (($k$486$i | 0) == ($k$3$i | 0)) {\n           $$lcssa264 = $521;\n           $a$1$i$lcssa = $a$1$i;\n           $rp$1$i18$lcssa = $rp$1$i18;\n           break;\n          } else {\n           $a$085$i = $a$1$i;\n           $carry$087$i = $521;\n           $rp$084$i = $rp$1$i18;\n          }\n         }\n         if (!$$lcssa264) {\n          $a$0$lcssa151$i = $a$1$i$lcssa;\n          $rp$0$lcssa152$i = $rp$1$i18$lcssa;\n          $z$0$i = $k$3$i;\n         } else {\n          HEAP32[$x$i + ($k$3$i << 2) >> 2] = $$lcssa264;\n          $a$0$lcssa151$i = $a$1$i$lcssa;\n          $rp$0$lcssa152$i = $rp$1$i18$lcssa;\n          $z$0$i = $k$3$i + 1 | 0;\n         }\n        }\n        $a$2$ph38$i = $a$0$lcssa151$i;\n        $e2$0$ph$i = 0;\n        $rp$2$ph36$i = 9 - $510 + $rp$0$lcssa152$i | 0;\n        $z$1$ph37$i = $z$0$i;\n       }\n       L284 : while (1) {\n        $533 = ($rp$2$ph36$i | 0) < 18;\n        $534 = ($rp$2$ph36$i | 0) == 18;\n        $535 = $x$i + ($a$2$ph38$i << 2) | 0;\n        $e2$0$i19 = $e2$0$ph$i;\n        $z$1$i = $z$1$ph37$i;\n        while (1) {\n         if (!$533) {\n          if (!$534) {\n           $a$3$ph$i = $a$2$ph38$i;\n           $e2$1$ph$i = $e2$0$i19;\n           $rp$3$ph34$i = $rp$2$ph36$i;\n           $z$5$ph$i = $z$1$i;\n           break L284;\n          }\n          if ((HEAP32[$535 >> 2] | 0) >>> 0 >= 9007199) {\n           $a$3$ph$i = $a$2$ph38$i;\n           $e2$1$ph$i = $e2$0$i19;\n           $rp$3$ph34$i = 18;\n           $z$5$ph$i = $z$1$i;\n           break L284;\n          }\n         }\n         $carry1$0$i = 0;\n         $k$5$in$i = $z$1$i + 127 | 0;\n         $z$2$i = $z$1$i;\n         while (1) {\n          $k$5$i = $k$5$in$i & 127;\n          $539 = $x$i + ($k$5$i << 2) | 0;\n          $541 = _bitshift64Shl(HEAP32[$539 >> 2] | 0, 0, 29) | 0;\n          $543 = _i64Add($541 | 0, tempRet0 | 0, $carry1$0$i | 0, 0) | 0;\n          $544 = tempRet0;\n          if ($544 >>> 0 > 0 | ($544 | 0) == 0 & $543 >>> 0 > 1e9) {\n           $550 = ___udivdi3($543 | 0, $544 | 0, 1e9, 0) | 0;\n           $552 = ___uremdi3($543 | 0, $544 | 0, 1e9, 0) | 0;\n           $$sink$off0$i = $552;\n           $carry1$1$i = $550;\n          } else {\n           $$sink$off0$i = $543;\n           $carry1$1$i = 0;\n          }\n          HEAP32[$539 >> 2] = $$sink$off0$i;\n          $557 = ($k$5$i | 0) == ($a$2$ph38$i | 0);\n          $z$3$i = ($k$5$i | 0) != ($z$2$i + 127 & 127 | 0) | $557 ? $z$2$i : ($$sink$off0$i | 0) == 0 ? $k$5$i : $z$2$i;\n          if ($557) {\n           $carry1$1$i$lcssa = $carry1$1$i;\n           $z$3$i$lcssa = $z$3$i;\n           break;\n          } else {\n           $carry1$0$i = $carry1$1$i;\n           $k$5$in$i = $k$5$i + -1 | 0;\n           $z$2$i = $z$3$i;\n          }\n         }\n         $560 = $e2$0$i19 + -29 | 0;\n         if (!$carry1$1$i$lcssa) {\n          $e2$0$i19 = $560;\n          $z$1$i = $z$3$i$lcssa;\n         } else {\n          $$lcssa263 = $560;\n          $carry1$1$i$lcssa$lcssa = $carry1$1$i$lcssa;\n          $z$3$i$lcssa$lcssa = $z$3$i$lcssa;\n          break;\n         }\n        }\n        $564 = $a$2$ph38$i + 127 & 127;\n        if (($564 | 0) == ($z$3$i$lcssa$lcssa | 0)) {\n         $567 = $z$3$i$lcssa$lcssa + 127 & 127;\n         $572 = $x$i + (($z$3$i$lcssa$lcssa + 126 & 127) << 2) | 0;\n         HEAP32[$572 >> 2] = HEAP32[$572 >> 2] | HEAP32[$x$i + ($567 << 2) >> 2];\n         $z$4$i = $567;\n        } else $z$4$i = $z$3$i$lcssa$lcssa;\n        HEAP32[$x$i + ($564 << 2) >> 2] = $carry1$1$i$lcssa$lcssa;\n        $a$2$ph38$i = $564;\n        $e2$0$ph$i = $$lcssa263;\n        $rp$2$ph36$i = $rp$2$ph36$i + 9 | 0;\n        $z$1$ph37$i = $z$4$i;\n       }\n       L302 : while (1) {\n        $604 = $z$5$ph$i + 1 & 127;\n        $609 = $x$i + (($z$5$ph$i + 127 & 127) << 2) | 0;\n        $a$3$ph157$i = $a$3$ph$i;\n        $e2$1$ph156$i = $e2$1$ph$i;\n        $rp$3$ph$i = $rp$3$ph34$i;\n        while (1) {\n         $610 = ($rp$3$ph$i | 0) == 18;\n         $$18$i = ($rp$3$ph$i | 0) > 27 ? 9 : 1;\n         $$not$i = $610 ^ 1;\n         $a$3$i = $a$3$ph157$i;\n         $e2$1$i = $e2$1$ph156$i;\n         while (1) {\n          $576 = $a$3$i & 127;\n          $577 = ($576 | 0) == ($z$5$ph$i | 0);\n          do if ($577) label = 219; else {\n           $579 = HEAP32[$x$i + ($576 << 2) >> 2] | 0;\n           if ($579 >>> 0 < 9007199) {\n            label = 219;\n            break;\n           }\n           if ($579 >>> 0 > 9007199) break;\n           $583 = $a$3$i + 1 & 127;\n           if (($583 | 0) == ($z$5$ph$i | 0)) {\n            label = 219;\n            break;\n           }\n           $691 = HEAP32[$x$i + ($583 << 2) >> 2] | 0;\n           if ($691 >>> 0 < 254740991) {\n            label = 219;\n            break;\n           }\n           if (!($691 >>> 0 > 254740991 | $$not$i)) {\n            $617 = $576;\n            $a$3$i249 = $a$3$i;\n            $e2$1$i246 = $e2$1$i;\n            $z$7$i = $z$5$ph$i;\n            break L302;\n           }\n          } while (0);\n          if ((label | 0) == 219) {\n           label = 0;\n           if ($610) {\n            label = 220;\n            break L302;\n           }\n          }\n          $585 = $e2$1$i + $$18$i | 0;\n          if (($a$3$i | 0) == ($z$5$ph$i | 0)) {\n           $a$3$i = $z$5$ph$i;\n           $e2$1$i = $585;\n          } else {\n           $$lcssa256 = $585;\n           $a$3$i$lcssa248 = $a$3$i;\n           break;\n          }\n         }\n         $588 = (1 << $$18$i) + -1 | 0;\n         $589 = 1e9 >>> $$18$i;\n         $a$478$i = $a$3$i$lcssa248;\n         $carry3$081$i = 0;\n         $k$679$i = $a$3$i$lcssa248;\n         $rp$477$i = $rp$3$ph$i;\n         while (1) {\n          $590 = $x$i + ($k$679$i << 2) | 0;\n          $591 = HEAP32[$590 >> 2] | 0;\n          $594 = ($591 >>> $$18$i) + $carry3$081$i | 0;\n          HEAP32[$590 >> 2] = $594;\n          $595 = Math_imul($591 & $588, $589) | 0;\n          $or$cond19$i = ($k$679$i | 0) == ($a$478$i | 0) & ($594 | 0) == 0;\n          $k$679$i = $k$679$i + 1 & 127;\n          $rp$5$i = $or$cond19$i ? $rp$477$i + -9 | 0 : $rp$477$i;\n          $a$5$i = $or$cond19$i ? $k$679$i : $a$478$i;\n          if (($k$679$i | 0) == ($z$5$ph$i | 0)) {\n           $$lcssa257 = $595;\n           $a$5$i$lcssa = $a$5$i;\n           $rp$5$i$lcssa = $rp$5$i;\n           break;\n          } else {\n           $a$478$i = $a$5$i;\n           $carry3$081$i = $595;\n           $rp$477$i = $rp$5$i;\n          }\n         }\n         if (!$$lcssa257) {\n          $a$3$ph157$i = $a$5$i$lcssa;\n          $e2$1$ph156$i = $$lcssa256;\n          $rp$3$ph$i = $rp$5$i$lcssa;\n          continue;\n         }\n         if (($604 | 0) != ($a$5$i$lcssa | 0)) {\n          $$lcssa256$lcssa = $$lcssa256;\n          $$lcssa257$lcssa = $$lcssa257;\n          $a$5$i$lcssa$lcssa = $a$5$i$lcssa;\n          $rp$5$i$lcssa$lcssa = $rp$5$i$lcssa;\n          break;\n         }\n         HEAP32[$609 >> 2] = HEAP32[$609 >> 2] | 1;\n         $a$3$ph157$i = $a$5$i$lcssa;\n         $e2$1$ph156$i = $$lcssa256;\n         $rp$3$ph$i = $rp$5$i$lcssa;\n        }\n        HEAP32[$x$i + ($z$5$ph$i << 2) >> 2] = $$lcssa257$lcssa;\n        $a$3$ph$i = $a$5$i$lcssa$lcssa;\n        $e2$1$ph$i = $$lcssa256$lcssa;\n        $rp$3$ph34$i = $rp$5$i$lcssa$lcssa;\n        $z$5$ph$i = $604;\n       }\n       if ((label | 0) == 220) if ($577) {\n        HEAP32[$x$i + ($604 + -1 << 2) >> 2] = 0;\n        $617 = $z$5$ph$i;\n        $a$3$i249 = $a$3$i;\n        $e2$1$i246 = $e2$1$i;\n        $z$7$i = $604;\n       } else {\n        $617 = $576;\n        $a$3$i249 = $a$3$i;\n        $e2$1$i246 = $e2$1$i;\n        $z$7$i = $z$5$ph$i;\n       }\n       $619 = +((HEAP32[$x$i + ($617 << 2) >> 2] | 0) >>> 0);\n       $621 = $a$3$i249 + 1 & 127;\n       if (($621 | 0) == ($z$7$i | 0)) {\n        $680 = $a$3$i249 + 2 & 127;\n        HEAP32[$x$i + ($680 + -1 << 2) >> 2] = 0;\n        $z$7$1$i = $680;\n       } else $z$7$1$i = $z$7$i;\n       $643 = +($sign$0 | 0);\n       $625 = $643 * ($619 * 1.0e9 + +((HEAP32[$x$i + ($621 << 2) >> 2] | 0) >>> 0));\n       $663 = $e2$1$i246 + 53 | 0;\n       $669 = $663 - $emin$0$ph | 0;\n       $670 = ($669 | 0) < ($bits$0$ph | 0);\n       $denormal$0$i = $670 & 1;\n       $$010$i = $670 ? (($669 | 0) < 0 ? 0 : $669) : $bits$0$ph;\n       if (($$010$i | 0) < 53) {\n        $626 = +_copysignl(+_scalbn(1.0, 105 - $$010$i | 0), $625);\n        $629 = +_fmodl($625, +_scalbn(1.0, 53 - $$010$i | 0));\n        $bias$0$i25 = $626;\n        $frac$0$i = $629;\n        $y$1$i24 = $626 + ($625 - $629);\n       } else {\n        $bias$0$i25 = 0.0;\n        $frac$0$i = 0.0;\n        $y$1$i24 = $625;\n       }\n       $633 = $a$3$i249 + 2 & 127;\n       do if (($633 | 0) == ($z$7$1$i | 0)) $frac$2$i = $frac$0$i; else {\n        $636 = HEAP32[$x$i + ($633 << 2) >> 2] | 0;\n        do if ($636 >>> 0 < 5e8) {\n         if (!$636) if (($a$3$i249 + 3 & 127 | 0) == ($z$7$1$i | 0)) {\n          $frac$1$i = $frac$0$i;\n          break;\n         }\n         $frac$1$i = $643 * .25 + $frac$0$i;\n        } else {\n         if ($636 >>> 0 > 5e8) {\n          $frac$1$i = $643 * .75 + $frac$0$i;\n          break;\n         }\n         if (($a$3$i249 + 3 & 127 | 0) == ($z$7$1$i | 0)) {\n          $frac$1$i = $643 * .5 + $frac$0$i;\n          break;\n         } else {\n          $frac$1$i = $643 * .75 + $frac$0$i;\n          break;\n         }\n        } while (0);\n        if ((53 - $$010$i | 0) <= 1) {\n         $frac$2$i = $frac$1$i;\n         break;\n        }\n        if (+_fmodl($frac$1$i, 1.0) != 0.0) {\n         $frac$2$i = $frac$1$i;\n         break;\n        }\n        $frac$2$i = $frac$1$i + 1.0;\n       } while (0);\n       $661 = $y$1$i24 + $frac$2$i - $bias$0$i25;\n       do if (($663 & 2147483647 | 0) > (-2 - $sum$i | 0)) {\n        if (!(+Math_abs(+$661) >= 9007199254740992.0)) {\n         $denormal$2$i = $denormal$0$i;\n         $e2$2$i = $e2$1$i246;\n         $y$2$i26 = $661;\n        } else {\n         $denormal$2$i = $670 & ($$010$i | 0) == ($669 | 0) ? 0 : $denormal$0$i;\n         $e2$2$i = $e2$1$i246 + 1 | 0;\n         $y$2$i26 = $661 * .5;\n        }\n        if (($e2$2$i + 50 | 0) <= ($330 | 0)) if (!($frac$2$i != 0.0 & ($denormal$2$i | 0) != 0)) {\n         $e2$3$i = $e2$2$i;\n         $y$3$i = $y$2$i26;\n         break;\n        }\n        $677 = ___errno_location() | 0;\n        HEAP32[$677 >> 2] = 34;\n        $e2$3$i = $e2$2$i;\n        $y$3$i = $y$2$i26;\n       } else {\n        $e2$3$i = $e2$1$i246;\n        $y$3$i = $661;\n       } while (0);\n       $$0$i27 = +_scalbnl($y$3$i, $e2$3$i);\n      } while (0);\n      $$0 = $$0$i27;\n      break L4;\n      break;\n     }\n    default:\n     {\n      if (HEAP32[$1 >> 2] | 0) HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1;\n      $113 = ___errno_location() | 0;\n      HEAP32[$113 >> 2] = 22;\n      ___shlim($f, 0);\n      $$0 = 0.0;\n      break L4;\n     }\n    }\n   }\n  } while (0);\n  if ((label | 0) == 23) {\n   $42 = (HEAP32[$1 >> 2] | 0) == 0;\n   if (!$42) HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1;\n   if (($pok | 0) != 0 & $i$0$lcssa >>> 0 > 3) {\n    $i$1 = $i$0$lcssa;\n    do {\n     if (!$42) HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1;\n     $i$1 = $i$1 + -1 | 0;\n    } while ($i$1 >>> 0 > 3);\n   }\n  }\n  $$0 = +($sign$0 | 0) * inf;\n } while (0);\n STACKTOP = sp;\n return +$$0;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_110parse_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) {\n $first = $first | 0;\n $last = $last | 0;\n $db = $db | 0;\n var $$0$i = 0, $$0$i$i$i = 0, $$0$i$i$i$i = 0, $$0$i$i$i16$i = 0, $$0$i$i$i23$i = 0, $$0$i$i$i33$i = 0, $$0$i$i$i42$i = 0, $$0$i$i$i52$i = 0, $$0$i10 = 0, $$02 = 0, $$07$i = 0, $$first = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $129 = 0, $13 = 0, $130 = 0, $134 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $144 = 0, $145 = 0, $15 = 0, $153 = 0, $154 = 0, $156 = 0, $16 = 0, $164 = 0, $166 = 0, $167 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0, $186 = 0, $189 = 0, $192 = 0, $2 = 0, $201 = 0, $206 = 0, $207 = 0, $208 = 0, $209 = 0, $211 = 0, $212 = 0, $220 = 0, $221 = 0, $223 = 0, $23 = 0, $231 = 0, $233 = 0, $234 = 0, $247 = 0, $248 = 0, $249 = 0, $250 = 0, $253 = 0, $256 = 0, $259 = 0, $268 = 0, $271 = 0, $276 = 0, $277 = 0, $278 = 0, $279 = 0, $28 = 0, $281 = 0, $282 = 0, $290 = 0, $291 = 0, $293 = 0, $3 = 0, $30 = 0, $301 = 0, $303 = 0, $304 = 0, $317 = 0, $318 = 0, $319 = 0, $320 = 0, $323 = 0, $326 = 0, $329 = 0, $338 = 0, $34 = 0, $343 = 0, $344 = 0, $345 = 0, $346 = 0, $349 = 0, $35 = 0, $351 = 0, $359 = 0, $361 = 0, $362 = 0, $37 = 0, $375 = 0, $376 = 0, $377 = 0, $378 = 0, $381 = 0, $384 = 0, $387 = 0, $398 = 0, $4 = 0, $400 = 0, $405 = 0, $406 = 0, $407 = 0, $408 = 0, $41 = 0, $410 = 0, $411 = 0, $419 = 0, $420 = 0, $422 = 0, $430 = 0, $432 = 0, $433 = 0, $446 = 0, $447 = 0, $448 = 0, $449 = 0, $452 = 0, $455 = 0, $458 = 0, $469 = 0, $474 = 0, $476 = 0, $477 = 0, $478 = 0, $483 = 0, $484 = 0, $489 = 0, $49 = 0, $494 = 0, $497 = 0, $5 = 0, $50 = 0, $500 = 0, $502 = 0, $506 = 0, $507 = 0, $509 = 0, $51 = 0, $510 = 0, $518 = 0, $519 = 0, $52 = 0, $520 = 0, $521 = 0, $526 = 0, $528 = 0, $538 = 0, $539 = 0, $540 = 0, $542 = 0, $544 = 0, $545 = 0, $546 = 0, $554 = 0, $555 = 0, $556 = 0, $557 = 0, $56 = 0, $562 = 0, $564 = 0, $574 = 0, $575 = 0, $576 = 0, $577 = 0, $578 = 0, $58 = 0, $588 = 0, $593 = 0, $594 = 0, $597 = 0, $6 = 0, $605 = 0, $606 = 0, $608 = 0, $61 = 0, $612 = 0, $613 = 0, $615 = 0, $62 = 0, $622 = 0, $624 = 0, $632 = 0, $633 = 0, $634 = 0, $635 = 0, $638 = 0, $641 = 0, $644 = 0, $645 = 0, $65 = 0, $651 = 0, $653 = 0, $657 = 0, $659 = 0, $667 = 0, $668 = 0, $669 = 0, $670 = 0, $673 = 0, $675 = 0, $685 = 0, $690 = 0, $692 = 0, $693 = 0, $7 = 0, $701 = 0, $702 = 0, $703 = 0, $704 = 0, $707 = 0, $709 = 0, $719 = 0, $8 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $St$0$off0$i = 0, $__v$i$i51$i = 0, $cv$i = 0, $name$i11 = 0, $name1$i = 0, $name2$i12 = 0, $name3$i = 0, $name4$i = 0, $pop_subs$0$off0$i$ph$lcssa = 0, $pop_subs$0$off0$i$ph136 = 0, $t0$0$i = 0, $t0$0$i13 = 0, $t0$1$i = 0, $t0$2$i$be = 0, $t0$2$i$lcssa = 0, $t0$2$i$ph$be = 0, $t0$2$i$ph135 = 0, $t0$2$i131 = 0, $t0$2$i131$lcssa177 = 0, $t0$2$i131$lcssa178 = 0, $t0$2$i131$lcssa179 = 0, $t0$2$i131184 = 0, $tmp = 0, $tmp3 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 304 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $__v$i$i51$i = sp + 276 | 0;\n $cv$i = sp + 264 | 0;\n $name$i11 = sp + 252 | 0;\n $0 = sp + 240 | 0;\n $1 = sp + 224 | 0;\n $2 = sp + 216 | 0;\n $name1$i = sp + 204 | 0;\n $3 = sp + 192 | 0;\n $4 = sp + 176 | 0;\n $5 = sp + 168 | 0;\n $name2$i12 = sp + 156 | 0;\n $6 = sp + 144 | 0;\n $7 = sp + 128 | 0;\n $8 = sp + 124 | 0;\n $name3$i = sp + 112 | 0;\n $9 = sp + 96 | 0;\n $10 = sp + 76 | 0;\n $name4$i = sp + 64 | 0;\n $11 = sp + 48 | 0;\n $12 = sp + 8 | 0;\n $13 = sp;\n $14 = sp + 80 | 0;\n $15 = sp + 60 | 0;\n $tmp = sp + 36 | 0;\n $tmp3 = sp + 24 | 0;\n $16 = $last;\n L1 : do if (($16 - $first | 0) > 1) {\n  $$first = (HEAP8[$first >> 0] | 0) == 76 ? $first + 1 | 0 : $first;\n  $23 = HEAP8[$$first >> 0] | 0;\n  switch ($23 << 24 >> 24 | 0) {\n  case 78:\n   {\n    L44 : do if (($$first | 0) == ($last | 0)) $$07$i = $last; else if ($23 << 24 >> 24 == 78) {\n     $28 = __ZN10__cxxabiv112_GLOBAL__N_119parse_cv_qualifiersEPKcS2_Rj($$first + 1 | 0, $last, $cv$i) | 0;\n     if (($28 | 0) == ($last | 0)) $$07$i = $$first; else {\n      $30 = $db + 52 | 0;\n      HEAP32[$30 >> 2] = 0;\n      switch (HEAP8[$28 >> 0] | 0) {\n      case 82:\n       {\n        HEAP32[$30 >> 2] = 1;\n        $t0$0$i13 = $28 + 1 | 0;\n        break;\n       }\n      case 79:\n       {\n        HEAP32[$30 >> 2] = 2;\n        $t0$0$i13 = $28 + 1 | 0;\n        break;\n       }\n      default:\n       $t0$0$i13 = $28;\n      }\n      $34 = $db + 4 | 0;\n      $35 = HEAP32[$34 >> 2] | 0;\n      $37 = HEAP32[$db + 8 >> 2] | 0;\n      if ($35 >>> 0 < $37 >>> 0) {\n       HEAP32[$35 >> 2] = 0;\n       HEAP32[$35 + 4 >> 2] = 0;\n       HEAP32[$35 + 8 >> 2] = 0;\n       HEAP32[$35 + 12 >> 2] = 0;\n       HEAP32[$35 + 16 >> 2] = 0;\n       HEAP32[$35 + 20 >> 2] = 0;\n       HEAP32[$35 >> 2] = 0;\n       HEAP32[$35 + 4 >> 2] = 0;\n       HEAP32[$35 + 8 >> 2] = 0;\n       $41 = $35 + 12 | 0;\n       HEAP32[$41 >> 2] = 0;\n       HEAP32[$41 + 4 >> 2] = 0;\n       HEAP32[$41 + 8 >> 2] = 0;\n       HEAP32[$34 >> 2] = (HEAP32[$34 >> 2] | 0) + 24;\n      } else {\n       $49 = HEAP32[$db >> 2] | 0;\n       $50 = $35 - $49 | 0;\n       $51 = ($50 | 0) / 24 | 0;\n       $52 = $51 + 1 | 0;\n       if (($50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n       $56 = ($37 - $49 | 0) / 24 | 0;\n       if ($56 >>> 0 < 1073741823) {\n        $58 = $56 << 1;\n        $$0$i$i$i$i = $58 >>> 0 < $52 >>> 0 ? $52 : $58;\n       } else $$0$i$i$i$i = 2147483647;\n       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i51$i, $$0$i$i$i$i, $51, $db + 12 | 0);\n       $61 = $__v$i$i51$i + 8 | 0;\n       $62 = HEAP32[$61 >> 2] | 0;\n       HEAP32[$62 >> 2] = 0;\n       HEAP32[$62 + 4 >> 2] = 0;\n       HEAP32[$62 + 8 >> 2] = 0;\n       HEAP32[$62 + 12 >> 2] = 0;\n       HEAP32[$62 + 16 >> 2] = 0;\n       HEAP32[$62 + 20 >> 2] = 0;\n       HEAP32[$62 >> 2] = 0;\n       HEAP32[$62 + 4 >> 2] = 0;\n       HEAP32[$62 + 8 >> 2] = 0;\n       $65 = $62 + 12 | 0;\n       HEAP32[$65 >> 2] = 0;\n       HEAP32[$65 + 4 >> 2] = 0;\n       HEAP32[$65 + 8 >> 2] = 0;\n       HEAP32[$61 >> 2] = $62 + 24;\n       __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i51$i);\n       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i51$i);\n      }\n      if (($16 - $t0$0$i13 | 0) > 1) if ((HEAP8[$t0$0$i13 >> 0] | 0) == 83) if ((HEAP8[$t0$0$i13 + 1 >> 0] | 0) == 116) {\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6assignEPKcj((HEAP32[$34 >> 2] | 0) + -24 | 0, 12872, 3);\n       $t0$1$i = $t0$0$i13 + 2 | 0;\n      } else $t0$1$i = $t0$0$i13; else $t0$1$i = $t0$0$i13; else $t0$1$i = $t0$0$i13;\n      if (($t0$1$i | 0) == ($last | 0)) {\n       $123 = HEAP32[$34 >> 2] | 0;\n       $124 = $123 + -24 | 0;\n       $126 = $123;\n       while (1) {\n        $125 = $126 + -24 | 0;\n        HEAP32[$34 >> 2] = $125;\n        __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($125);\n        $126 = HEAP32[$34 >> 2] | 0;\n        if (($126 | 0) == ($124 | 0)) {\n         $$07$i = $$first;\n         break L44;\n        }\n       }\n      }\n      $81 = $name3$i + 8 | 0;\n      $82 = $name3$i + 1 | 0;\n      $83 = $name3$i + 4 | 0;\n      $84 = $db + 12 | 0;\n      $85 = $db + 16 | 0;\n      $86 = $db + 20 | 0;\n      $87 = $db + 24 | 0;\n      $88 = $9 + 12 | 0;\n      $89 = $9 + 4 | 0;\n      $90 = $9 + 8 | 0;\n      $91 = $db + 28 | 0;\n      $92 = $__v$i$i51$i + 8 | 0;\n      $93 = $12 + 12 | 0;\n      $94 = $12 + 4 | 0;\n      $95 = $12 + 8 | 0;\n      $96 = $__v$i$i51$i + 8 | 0;\n      $97 = $11 + 8 | 0;\n      $98 = $11 + 1 | 0;\n      $99 = $11 + 4 | 0;\n      $100 = $0 + 8 | 0;\n      $101 = $0 + 1 | 0;\n      $102 = $0 + 4 | 0;\n      $103 = $1 + 12 | 0;\n      $104 = $1 + 4 | 0;\n      $105 = $1 + 8 | 0;\n      $106 = $__v$i$i51$i + 8 | 0;\n      $107 = $4 + 12 | 0;\n      $108 = $4 + 4 | 0;\n      $109 = $4 + 8 | 0;\n      $110 = $__v$i$i51$i + 8 | 0;\n      $111 = $3 + 8 | 0;\n      $112 = $3 + 1 | 0;\n      $113 = $3 + 4 | 0;\n      $114 = $7 + 12 | 0;\n      $115 = $7 + 4 | 0;\n      $116 = $7 + 8 | 0;\n      $117 = $__v$i$i51$i + 8 | 0;\n      $118 = $6 + 8 | 0;\n      $119 = $6 + 1 | 0;\n      $120 = $6 + 4 | 0;\n      $121 = HEAP8[$t0$1$i >> 0] | 0;\n      L72 : do if ($121 << 24 >> 24 == 69) {\n       $pop_subs$0$off0$i$ph$lcssa = 0;\n       $t0$2$i$lcssa = $t0$1$i;\n      } else {\n       $719 = $121;\n       $pop_subs$0$off0$i$ph136 = 0;\n       $t0$2$i$ph135 = $t0$1$i;\n       L73 : while (1) {\n        $129 = $719;\n        $t0$2$i131 = $t0$2$i$ph135;\n        L75 : while (1) {\n         switch ($129 << 24 >> 24 | 0) {\n         case 83:\n          {\n           $t0$2$i131$lcssa177 = $t0$2$i131;\n           label = 25;\n           break L75;\n           break;\n          }\n         case 84:\n          {\n           $t0$2$i131$lcssa178 = $t0$2$i131;\n           label = 44;\n           break L75;\n           break;\n          }\n         case 68:\n          {\n           $t0$2$i131$lcssa179 = $t0$2$i131;\n           label = 61;\n           break L75;\n           break;\n          }\n         case 73:\n          {\n           $338 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_($t0$2$i131, $last, $db) | 0;\n           if (($338 | 0) == ($t0$2$i131 | 0) | ($338 | 0) == ($last | 0)) {\n            $$07$i = $$first;\n            break L44;\n           }\n           __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($name3$i, (HEAP32[$34 >> 2] | 0) + -24 | 0);\n           $343 = HEAP32[$34 >> 2] | 0;\n           $344 = $343 + -24 | 0;\n           $346 = $343;\n           do {\n            $345 = $346 + -24 | 0;\n            HEAP32[$34 >> 2] = $345;\n            __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($345);\n            $346 = HEAP32[$34 >> 2] | 0;\n           } while (($346 | 0) != ($344 | 0));\n           $349 = HEAP8[$name3$i >> 0] | 0;\n           $351 = ($349 & 1) == 0;\n           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($343 + -48 | 0, $351 ? $82 : HEAP32[$81 >> 2] | 0, $351 ? ($349 & 255) >>> 1 : HEAP32[$83 >> 2] | 0) | 0;\n           $359 = (HEAP32[$34 >> 2] | 0) + -24 | 0;\n           HEAP32[$10 >> 2] = HEAP32[$84 >> 2];\n           __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($9, $359, $10);\n           $361 = HEAP32[$86 >> 2] | 0;\n           $362 = HEAP32[$87 >> 2] | 0;\n           if ($361 >>> 0 < $362 >>> 0) {\n            HEAP32[$361 + 12 >> 2] = HEAP32[$88 >> 2];\n            HEAP32[$361 >> 2] = HEAP32[$9 >> 2];\n            HEAP32[$361 + 4 >> 2] = HEAP32[$89 >> 2];\n            HEAP32[$361 + 8 >> 2] = HEAP32[$90 >> 2];\n            HEAP32[$90 >> 2] = 0;\n            HEAP32[$89 >> 2] = 0;\n            HEAP32[$9 >> 2] = 0;\n            HEAP32[$86 >> 2] = (HEAP32[$86 >> 2] | 0) + 16;\n           } else {\n            $375 = HEAP32[$85 >> 2] | 0;\n            $376 = $361 - $375 | 0;\n            $377 = $376 >> 4;\n            $378 = $377 + 1 | 0;\n            if (($376 | 0) < -16) {\n             label = 86;\n             break L73;\n            }\n            $381 = $362 - $375 | 0;\n            if ($381 >> 4 >>> 0 < 1073741823) {\n             $384 = $381 >> 3;\n             $$0$i$i$i42$i = $384 >>> 0 < $378 >>> 0 ? $378 : $384;\n            } else $$0$i$i$i42$i = 2147483647;\n            __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i51$i, $$0$i$i$i42$i, $377, $91);\n            $387 = HEAP32[$92 >> 2] | 0;\n            HEAP32[$387 + 12 >> 2] = HEAP32[$88 >> 2];\n            HEAP32[$387 >> 2] = HEAP32[$9 >> 2];\n            HEAP32[$387 + 4 >> 2] = HEAP32[$89 >> 2];\n            HEAP32[$387 + 8 >> 2] = HEAP32[$90 >> 2];\n            HEAP32[$90 >> 2] = 0;\n            HEAP32[$89 >> 2] = 0;\n            HEAP32[$9 >> 2] = 0;\n            HEAP32[$92 >> 2] = $387 + 16;\n            __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($85, $__v$i$i51$i);\n            __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i51$i);\n           }\n           __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($9);\n           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($name3$i);\n           $t0$2$i$be = $338;\n           break;\n          }\n         case 76:\n          {\n           $398 = $t0$2$i131 + 1 | 0;\n           if (($398 | 0) == ($last | 0)) {\n            $$07$i = $$first;\n            break L44;\n           } else $t0$2$i$be = $398;\n           break;\n          }\n         default:\n          {\n           $t0$2$i131184 = $t0$2$i131;\n           label = 93;\n           break L75;\n          }\n         }\n         $129 = HEAP8[$t0$2$i$be >> 0] | 0;\n         if ($129 << 24 >> 24 == 69) {\n          $pop_subs$0$off0$i$ph$lcssa = $pop_subs$0$off0$i$ph136;\n          $t0$2$i$lcssa = $t0$2$i$be;\n          break L72;\n         } else $t0$2$i131 = $t0$2$i$be;\n        }\n        L93 : do if ((label | 0) == 25) {\n         label = 0;\n         $130 = $t0$2$i131$lcssa177 + 1 | 0;\n         if (($130 | 0) != ($last | 0)) if ((HEAP8[$130 >> 0] | 0) == 116) {\n          $t0$2$i131184 = $t0$2$i131$lcssa177;\n          label = 93;\n          break;\n         }\n         $134 = __ZN10__cxxabiv112_GLOBAL__N_118parse_substitutionINS0_2DbEEEPKcS4_S4_RT_($t0$2$i131$lcssa177, $last, $db) | 0;\n         if (($134 | 0) == ($t0$2$i131$lcssa177 | 0) | ($134 | 0) == ($last | 0)) {\n          $$07$i = $$first;\n          break L44;\n         }\n         __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($name$i11, (HEAP32[$34 >> 2] | 0) + -24 | 0);\n         $139 = HEAP32[$34 >> 2] | 0;\n         $140 = $139 + -24 | 0;\n         $142 = $139;\n         do {\n          $141 = $142 + -24 | 0;\n          HEAP32[$34 >> 2] = $141;\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($141);\n          $142 = HEAP32[$34 >> 2] | 0;\n         } while (($142 | 0) != ($140 | 0));\n         $144 = $139 + -48 | 0;\n         $145 = HEAP8[$144 >> 0] | 0;\n         if (!($145 & 1)) $153 = ($145 & 255) >>> 1; else $153 = HEAP32[$139 + -44 >> 2] | 0;\n         if (!$153) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEaSERKS7_($144, $name$i11); else {\n          __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($0, 12876, $name$i11);\n          $154 = HEAP8[$0 >> 0] | 0;\n          $156 = ($154 & 1) == 0;\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($144, $156 ? $101 : HEAP32[$100 >> 2] | 0, $156 ? ($154 & 255) >>> 1 : HEAP32[$102 >> 2] | 0) | 0;\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);\n          $164 = (HEAP32[$34 >> 2] | 0) + -24 | 0;\n          HEAP32[$2 >> 2] = HEAP32[$84 >> 2];\n          __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($1, $164, $2);\n          $166 = HEAP32[$86 >> 2] | 0;\n          $167 = HEAP32[$87 >> 2] | 0;\n          if ($166 >>> 0 < $167 >>> 0) {\n           HEAP32[$166 + 12 >> 2] = HEAP32[$103 >> 2];\n           HEAP32[$166 >> 2] = HEAP32[$1 >> 2];\n           HEAP32[$166 + 4 >> 2] = HEAP32[$104 >> 2];\n           HEAP32[$166 + 8 >> 2] = HEAP32[$105 >> 2];\n           HEAP32[$105 >> 2] = 0;\n           HEAP32[$104 >> 2] = 0;\n           HEAP32[$1 >> 2] = 0;\n           HEAP32[$86 >> 2] = (HEAP32[$86 >> 2] | 0) + 16;\n          } else {\n           $180 = HEAP32[$85 >> 2] | 0;\n           $181 = $166 - $180 | 0;\n           $182 = $181 >> 4;\n           $183 = $182 + 1 | 0;\n           if (($181 | 0) < -16) {\n            label = 37;\n            break L73;\n           }\n           $186 = $167 - $180 | 0;\n           if ($186 >> 4 >>> 0 < 1073741823) {\n            $189 = $186 >> 3;\n            $$0$i$i$i16$i = $189 >>> 0 < $183 >>> 0 ? $183 : $189;\n           } else $$0$i$i$i16$i = 2147483647;\n           __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i51$i, $$0$i$i$i16$i, $182, $91);\n           $192 = HEAP32[$106 >> 2] | 0;\n           HEAP32[$192 + 12 >> 2] = HEAP32[$103 >> 2];\n           HEAP32[$192 >> 2] = HEAP32[$1 >> 2];\n           HEAP32[$192 + 4 >> 2] = HEAP32[$104 >> 2];\n           HEAP32[$192 + 8 >> 2] = HEAP32[$105 >> 2];\n           HEAP32[$105 >> 2] = 0;\n           HEAP32[$104 >> 2] = 0;\n           HEAP32[$1 >> 2] = 0;\n           HEAP32[$106 >> 2] = $192 + 16;\n           __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($85, $__v$i$i51$i);\n           __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i51$i);\n          }\n          __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($1);\n         }\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($name$i11);\n         $t0$2$i$ph$be = $134;\n        } else if ((label | 0) == 44) {\n         label = 0;\n         $201 = __ZN10__cxxabiv112_GLOBAL__N_120parse_template_paramINS0_2DbEEEPKcS4_S4_RT_($t0$2$i131$lcssa178, $last, $db) | 0;\n         if (($201 | 0) == ($t0$2$i131$lcssa178 | 0) | ($201 | 0) == ($last | 0)) {\n          $$07$i = $$first;\n          break L44;\n         }\n         __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($name1$i, (HEAP32[$34 >> 2] | 0) + -24 | 0);\n         $206 = HEAP32[$34 >> 2] | 0;\n         $207 = $206 + -24 | 0;\n         $209 = $206;\n         do {\n          $208 = $209 + -24 | 0;\n          HEAP32[$34 >> 2] = $208;\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($208);\n          $209 = HEAP32[$34 >> 2] | 0;\n         } while (($209 | 0) != ($207 | 0));\n         $211 = $206 + -48 | 0;\n         $212 = HEAP8[$211 >> 0] | 0;\n         if (!($212 & 1)) $220 = ($212 & 255) >>> 1; else $220 = HEAP32[$206 + -44 >> 2] | 0;\n         if (!$220) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEaSERKS7_($211, $name1$i); else {\n          __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($3, 12876, $name1$i);\n          $221 = HEAP8[$3 >> 0] | 0;\n          $223 = ($221 & 1) == 0;\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($211, $223 ? $112 : HEAP32[$111 >> 2] | 0, $223 ? ($221 & 255) >>> 1 : HEAP32[$113 >> 2] | 0) | 0;\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);\n         }\n         $231 = (HEAP32[$34 >> 2] | 0) + -24 | 0;\n         HEAP32[$5 >> 2] = HEAP32[$84 >> 2];\n         __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($4, $231, $5);\n         $233 = HEAP32[$86 >> 2] | 0;\n         $234 = HEAP32[$87 >> 2] | 0;\n         if ($233 >>> 0 < $234 >>> 0) {\n          HEAP32[$233 + 12 >> 2] = HEAP32[$107 >> 2];\n          HEAP32[$233 >> 2] = HEAP32[$4 >> 2];\n          HEAP32[$233 + 4 >> 2] = HEAP32[$108 >> 2];\n          HEAP32[$233 + 8 >> 2] = HEAP32[$109 >> 2];\n          HEAP32[$109 >> 2] = 0;\n          HEAP32[$108 >> 2] = 0;\n          HEAP32[$4 >> 2] = 0;\n          HEAP32[$86 >> 2] = (HEAP32[$86 >> 2] | 0) + 16;\n         } else {\n          $247 = HEAP32[$85 >> 2] | 0;\n          $248 = $233 - $247 | 0;\n          $249 = $248 >> 4;\n          $250 = $249 + 1 | 0;\n          if (($248 | 0) < -16) {\n           label = 56;\n           break L73;\n          }\n          $253 = $234 - $247 | 0;\n          if ($253 >> 4 >>> 0 < 1073741823) {\n           $256 = $253 >> 3;\n           $$0$i$i$i23$i = $256 >>> 0 < $250 >>> 0 ? $250 : $256;\n          } else $$0$i$i$i23$i = 2147483647;\n          __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i51$i, $$0$i$i$i23$i, $249, $91);\n          $259 = HEAP32[$110 >> 2] | 0;\n          HEAP32[$259 + 12 >> 2] = HEAP32[$107 >> 2];\n          HEAP32[$259 >> 2] = HEAP32[$4 >> 2];\n          HEAP32[$259 + 4 >> 2] = HEAP32[$108 >> 2];\n          HEAP32[$259 + 8 >> 2] = HEAP32[$109 >> 2];\n          HEAP32[$109 >> 2] = 0;\n          HEAP32[$108 >> 2] = 0;\n          HEAP32[$4 >> 2] = 0;\n          HEAP32[$110 >> 2] = $259 + 16;\n          __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($85, $__v$i$i51$i);\n          __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i51$i);\n         }\n         __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($4);\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($name1$i);\n         $t0$2$i$ph$be = $201;\n        } else if ((label | 0) == 61) {\n         label = 0;\n         $268 = $t0$2$i131$lcssa179 + 1 | 0;\n         if (($268 | 0) != ($last | 0)) switch (HEAP8[$268 >> 0] | 0) {\n         case 84:\n         case 116:\n          break;\n         default:\n          {\n           $t0$2$i131184 = $t0$2$i131$lcssa179;\n           label = 93;\n           break L93;\n          }\n         }\n         $271 = __ZN10__cxxabiv112_GLOBAL__N_114parse_decltypeINS0_2DbEEEPKcS4_S4_RT_($t0$2$i131$lcssa179, $last, $db) | 0;\n         if (($271 | 0) == ($t0$2$i131$lcssa179 | 0) | ($271 | 0) == ($last | 0)) {\n          $$07$i = $$first;\n          break L44;\n         }\n         __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($name2$i12, (HEAP32[$34 >> 2] | 0) + -24 | 0);\n         $276 = HEAP32[$34 >> 2] | 0;\n         $277 = $276 + -24 | 0;\n         $279 = $276;\n         do {\n          $278 = $279 + -24 | 0;\n          HEAP32[$34 >> 2] = $278;\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($278);\n          $279 = HEAP32[$34 >> 2] | 0;\n         } while (($279 | 0) != ($277 | 0));\n         $281 = $276 + -48 | 0;\n         $282 = HEAP8[$281 >> 0] | 0;\n         if (!($282 & 1)) $290 = ($282 & 255) >>> 1; else $290 = HEAP32[$276 + -44 >> 2] | 0;\n         if (!$290) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEaSERKS7_($281, $name2$i12); else {\n          __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($6, 12876, $name2$i12);\n          $291 = HEAP8[$6 >> 0] | 0;\n          $293 = ($291 & 1) == 0;\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($281, $293 ? $119 : HEAP32[$118 >> 2] | 0, $293 ? ($291 & 255) >>> 1 : HEAP32[$120 >> 2] | 0) | 0;\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($6);\n         }\n         $301 = (HEAP32[$34 >> 2] | 0) + -24 | 0;\n         HEAP32[$8 >> 2] = HEAP32[$84 >> 2];\n         __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($7, $301, $8);\n         $303 = HEAP32[$86 >> 2] | 0;\n         $304 = HEAP32[$87 >> 2] | 0;\n         if ($303 >>> 0 < $304 >>> 0) {\n          HEAP32[$303 + 12 >> 2] = HEAP32[$114 >> 2];\n          HEAP32[$303 >> 2] = HEAP32[$7 >> 2];\n          HEAP32[$303 + 4 >> 2] = HEAP32[$115 >> 2];\n          HEAP32[$303 + 8 >> 2] = HEAP32[$116 >> 2];\n          HEAP32[$116 >> 2] = 0;\n          HEAP32[$115 >> 2] = 0;\n          HEAP32[$7 >> 2] = 0;\n          HEAP32[$86 >> 2] = (HEAP32[$86 >> 2] | 0) + 16;\n         } else {\n          $317 = HEAP32[$85 >> 2] | 0;\n          $318 = $303 - $317 | 0;\n          $319 = $318 >> 4;\n          $320 = $319 + 1 | 0;\n          if (($318 | 0) < -16) {\n           label = 75;\n           break L73;\n          }\n          $323 = $304 - $317 | 0;\n          if ($323 >> 4 >>> 0 < 1073741823) {\n           $326 = $323 >> 3;\n           $$0$i$i$i33$i = $326 >>> 0 < $320 >>> 0 ? $320 : $326;\n          } else $$0$i$i$i33$i = 2147483647;\n          __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i51$i, $$0$i$i$i33$i, $319, $91);\n          $329 = HEAP32[$117 >> 2] | 0;\n          HEAP32[$329 + 12 >> 2] = HEAP32[$114 >> 2];\n          HEAP32[$329 >> 2] = HEAP32[$7 >> 2];\n          HEAP32[$329 + 4 >> 2] = HEAP32[$115 >> 2];\n          HEAP32[$329 + 8 >> 2] = HEAP32[$116 >> 2];\n          HEAP32[$116 >> 2] = 0;\n          HEAP32[$115 >> 2] = 0;\n          HEAP32[$7 >> 2] = 0;\n          HEAP32[$117 >> 2] = $329 + 16;\n          __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($85, $__v$i$i51$i);\n          __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i51$i);\n         }\n         __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($7);\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($name2$i12);\n         $t0$2$i$ph$be = $271;\n        } while (0);\n        if ((label | 0) == 93) {\n         label = 0;\n         $400 = __ZN10__cxxabiv112_GLOBAL__N_122parse_unqualified_nameINS0_2DbEEEPKcS4_S4_RT_($t0$2$i131184, $last, $db) | 0;\n         if (($400 | 0) == ($t0$2$i131184 | 0) | ($400 | 0) == ($last | 0)) {\n          $$07$i = $$first;\n          break L44;\n         }\n         __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($name4$i, (HEAP32[$34 >> 2] | 0) + -24 | 0);\n         $405 = HEAP32[$34 >> 2] | 0;\n         $406 = $405 + -24 | 0;\n         $408 = $405;\n         do {\n          $407 = $408 + -24 | 0;\n          HEAP32[$34 >> 2] = $407;\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($407);\n          $408 = HEAP32[$34 >> 2] | 0;\n         } while (($408 | 0) != ($406 | 0));\n         $410 = $405 + -48 | 0;\n         $411 = HEAP8[$410 >> 0] | 0;\n         if (!($411 & 1)) $419 = ($411 & 255) >>> 1; else $419 = HEAP32[$405 + -44 >> 2] | 0;\n         if (!$419) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEaSERKS7_($410, $name4$i); else {\n          __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($11, 12876, $name4$i);\n          $420 = HEAP8[$11 >> 0] | 0;\n          $422 = ($420 & 1) == 0;\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($410, $422 ? $98 : HEAP32[$97 >> 2] | 0, $422 ? ($420 & 255) >>> 1 : HEAP32[$99 >> 2] | 0) | 0;\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($11);\n         }\n         $430 = (HEAP32[$34 >> 2] | 0) + -24 | 0;\n         HEAP32[$13 >> 2] = HEAP32[$84 >> 2];\n         __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($12, $430, $13);\n         $432 = HEAP32[$86 >> 2] | 0;\n         $433 = HEAP32[$87 >> 2] | 0;\n         if ($432 >>> 0 < $433 >>> 0) {\n          HEAP32[$432 + 12 >> 2] = HEAP32[$93 >> 2];\n          HEAP32[$432 >> 2] = HEAP32[$12 >> 2];\n          HEAP32[$432 + 4 >> 2] = HEAP32[$94 >> 2];\n          HEAP32[$432 + 8 >> 2] = HEAP32[$95 >> 2];\n          HEAP32[$95 >> 2] = 0;\n          HEAP32[$94 >> 2] = 0;\n          HEAP32[$12 >> 2] = 0;\n          HEAP32[$86 >> 2] = (HEAP32[$86 >> 2] | 0) + 16;\n         } else {\n          $446 = HEAP32[$85 >> 2] | 0;\n          $447 = $432 - $446 | 0;\n          $448 = $447 >> 4;\n          $449 = $448 + 1 | 0;\n          if (($447 | 0) < -16) {\n           label = 105;\n           break;\n          }\n          $452 = $433 - $446 | 0;\n          if ($452 >> 4 >>> 0 < 1073741823) {\n           $455 = $452 >> 3;\n           $$0$i$i$i52$i = $455 >>> 0 < $449 >>> 0 ? $449 : $455;\n          } else $$0$i$i$i52$i = 2147483647;\n          __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i51$i, $$0$i$i$i52$i, $448, $91);\n          $458 = HEAP32[$96 >> 2] | 0;\n          HEAP32[$458 + 12 >> 2] = HEAP32[$93 >> 2];\n          HEAP32[$458 >> 2] = HEAP32[$12 >> 2];\n          HEAP32[$458 + 4 >> 2] = HEAP32[$94 >> 2];\n          HEAP32[$458 + 8 >> 2] = HEAP32[$95 >> 2];\n          HEAP32[$95 >> 2] = 0;\n          HEAP32[$94 >> 2] = 0;\n          HEAP32[$12 >> 2] = 0;\n          HEAP32[$96 >> 2] = $458 + 16;\n          __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($85, $__v$i$i51$i);\n          __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i51$i);\n         }\n         __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($12);\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($name4$i);\n         $t0$2$i$ph$be = $400;\n        }\n        $719 = HEAP8[$t0$2$i$ph$be >> 0] | 0;\n        if ($719 << 24 >> 24 == 69) {\n         $pop_subs$0$off0$i$ph$lcssa = 1;\n         $t0$2$i$lcssa = $t0$2$i$ph$be;\n         break L72;\n        } else {\n         $pop_subs$0$off0$i$ph136 = 1;\n         $t0$2$i$ph135 = $t0$2$i$ph$be;\n        }\n       }\n       if ((label | 0) == 37) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($85); else if ((label | 0) == 56) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($85); else if ((label | 0) == 75) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($85); else if ((label | 0) == 86) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($85); else if ((label | 0) == 105) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($85);\n      } while (0);\n      $469 = $t0$2$i$lcssa + 1 | 0;\n      HEAP32[$db + 48 >> 2] = HEAP32[$cv$i >> 2];\n      if ($pop_subs$0$off0$i$ph$lcssa) {\n       $474 = HEAP32[$86 >> 2] | 0;\n       if ((HEAP32[$db + 16 >> 2] | 0) == ($474 | 0)) $$07$i = $469; else {\n        $476 = $474 + -16 | 0;\n        $478 = $474;\n        do {\n         $477 = $478 + -16 | 0;\n         HEAP32[$86 >> 2] = $477;\n         __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($477);\n         $478 = HEAP32[$86 >> 2] | 0;\n        } while (($478 | 0) != ($476 | 0));\n        $$07$i = $469;\n       }\n      } else $$07$i = $469;\n     }\n    } else $$07$i = $$first; while (0);\n    $$02 = ($$07$i | 0) == ($$first | 0) ? $first : $$07$i;\n    break L1;\n    break;\n   }\n  case 90:\n   {\n    L199 : do if (($$first | 0) == ($last | 0)) $$0$i10 = $last; else if ($23 << 24 >> 24 == 90) {\n     $483 = $$first + 1 | 0;\n     $484 = __ZN10__cxxabiv112_GLOBAL__N_114parse_encodingINS0_2DbEEEPKcS4_S4_RT_($483, $last, $db) | 0;\n     if (($484 | 0) == ($483 | 0) | ($484 | 0) == ($last | 0)) $$0$i10 = $$first; else if ((HEAP8[$484 >> 0] | 0) == 69) {\n      $489 = $484 + 1 | 0;\n      if (($489 | 0) == ($last | 0)) $$0$i10 = $$first; else switch (HEAP8[$489 >> 0] | 0) {\n      case 115:\n       {\n        $494 = __ZN10__cxxabiv112_GLOBAL__N_119parse_discriminatorEPKcS2_($484 + 2 | 0, $last) | 0;\n        $497 = HEAP32[$db + 4 >> 2] | 0;\n        if ((HEAP32[$db >> 2] | 0) == ($497 | 0)) {\n         $$0$i10 = $494;\n         break L199;\n        }\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($497 + -24 | 0, 12879) | 0;\n        $$0$i10 = $494;\n        break L199;\n        break;\n       }\n      case 100:\n       {\n        $500 = $484 + 2 | 0;\n        if (($500 | 0) == ($last | 0)) {\n         $$0$i10 = $$first;\n         break L199;\n        }\n        $502 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_($500, $last) | 0;\n        if (($502 | 0) == ($last | 0)) {\n         $$0$i10 = $$first;\n         break L199;\n        }\n        if ((HEAP8[$502 >> 0] | 0) != 95) {\n         $$0$i10 = $$first;\n         break L199;\n        }\n        $506 = $502 + 1 | 0;\n        $507 = __ZN10__cxxabiv112_GLOBAL__N_110parse_nameINS0_2DbEEEPKcS4_S4_RT_($506, $last, $db) | 0;\n        $509 = $db + 4 | 0;\n        $510 = HEAP32[$509 >> 2] | 0;\n        if (($507 | 0) == ($506 | 0)) {\n         $538 = $510 + -24 | 0;\n         $540 = $510;\n         while (1) {\n          $539 = $540 + -24 | 0;\n          HEAP32[$509 >> 2] = $539;\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($539);\n          $540 = HEAP32[$509 >> 2] | 0;\n          if (($540 | 0) == ($538 | 0)) {\n           $$0$i10 = $$first;\n           break L199;\n          }\n         }\n        }\n        if ((($510 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {\n         $$0$i10 = $$first;\n         break L199;\n        }\n        __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($__v$i$i51$i, $510 + -24 | 0);\n        $518 = HEAP32[$509 >> 2] | 0;\n        $519 = $518 + -24 | 0;\n        $521 = $518;\n        do {\n         $520 = $521 + -24 | 0;\n         HEAP32[$509 >> 2] = $520;\n         __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($520);\n         $521 = HEAP32[$509 >> 2] | 0;\n        } while (($521 | 0) != ($519 | 0));\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($518 + -48 | 0, 12876) | 0;\n        $526 = HEAP8[$__v$i$i51$i >> 0] | 0;\n        $528 = ($526 & 1) == 0;\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj((HEAP32[$509 >> 2] | 0) + -24 | 0, $528 ? $__v$i$i51$i + 1 | 0 : HEAP32[$__v$i$i51$i + 8 >> 2] | 0, $528 ? ($526 & 255) >>> 1 : HEAP32[$__v$i$i51$i + 4 >> 2] | 0) | 0;\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($__v$i$i51$i);\n        $$0$i10 = $507;\n        break L199;\n        break;\n       }\n      default:\n       {\n        $542 = __ZN10__cxxabiv112_GLOBAL__N_110parse_nameINS0_2DbEEEPKcS4_S4_RT_($489, $last, $db) | 0;\n        if (($542 | 0) == ($489 | 0)) {\n         $574 = $db + 4 | 0;\n         $575 = HEAP32[$574 >> 2] | 0;\n         $576 = $575 + -24 | 0;\n         $578 = $575;\n         while (1) {\n          $577 = $578 + -24 | 0;\n          HEAP32[$574 >> 2] = $577;\n          __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($577);\n          $578 = HEAP32[$574 >> 2] | 0;\n          if (($578 | 0) == ($576 | 0)) {\n           $$0$i10 = $$first;\n           break L199;\n          }\n         }\n        }\n        $544 = __ZN10__cxxabiv112_GLOBAL__N_119parse_discriminatorEPKcS2_($542, $last) | 0;\n        $545 = $db + 4 | 0;\n        $546 = HEAP32[$545 >> 2] | 0;\n        if ((($546 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {\n         $$0$i10 = $544;\n         break L199;\n        }\n        __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($cv$i, $546 + -24 | 0);\n        $554 = HEAP32[$545 >> 2] | 0;\n        $555 = $554 + -24 | 0;\n        $557 = $554;\n        do {\n         $556 = $557 + -24 | 0;\n         HEAP32[$545 >> 2] = $556;\n         __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($556);\n         $557 = HEAP32[$545 >> 2] | 0;\n        } while (($557 | 0) != ($555 | 0));\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($554 + -48 | 0, 12876) | 0;\n        $562 = HEAP8[$cv$i >> 0] | 0;\n        $564 = ($562 & 1) == 0;\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj((HEAP32[$545 >> 2] | 0) + -24 | 0, $564 ? $cv$i + 1 | 0 : HEAP32[$cv$i + 8 >> 2] | 0, $564 ? ($562 & 255) >>> 1 : HEAP32[$cv$i + 4 >> 2] | 0) | 0;\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($cv$i);\n        $$0$i10 = $544;\n        break L199;\n       }\n      }\n     } else $$0$i10 = $$first;\n    } else $$0$i10 = $$first; while (0);\n    STACKTOP = sp;\n    return (($$0$i10 | 0) == ($$first | 0) ? $first : $$0$i10) | 0;\n   }\n  default:\n   {\n    do if (($16 - $$first | 0) > 1) {\n     if ($23 << 24 >> 24 == 83) if ((HEAP8[$$first + 1 >> 0] | 0) == 116) {\n      $588 = $$first + 2 | 0;\n      if (($588 | 0) == ($last | 0)) {\n       $St$0$off0$i = 0;\n       $t0$0$i = $last;\n      } else {\n       $St$0$off0$i = 0;\n       $t0$0$i = (HEAP8[$588 >> 0] | 0) == 76 ? $$first + 3 | 0 : $588;\n      }\n     } else {\n      $St$0$off0$i = 1;\n      $t0$0$i = $$first;\n     } else {\n      $St$0$off0$i = 1;\n      $t0$0$i = $$first;\n     }\n     $593 = __ZN10__cxxabiv112_GLOBAL__N_122parse_unqualified_nameINS0_2DbEEEPKcS4_S4_RT_($t0$0$i, $last, $db) | 0;\n     $594 = ($593 | 0) == ($t0$0$i | 0);\n     if ($St$0$off0$i | $594) $$0$i = $594 ? $$first : $593; else {\n      $597 = HEAP32[$db + 4 >> 2] | 0;\n      if ((HEAP32[$db >> 2] | 0) == ($597 | 0)) break;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($597 + -24 | 0, 0, 12896) | 0;\n      $$0$i = $593;\n     }\n     if (($$0$i | 0) != ($$first | 0)) {\n      if (($$0$i | 0) == ($last | 0)) {\n       $$02 = $last;\n       break L1;\n      }\n      if ((HEAP8[$$0$i >> 0] | 0) != 73) {\n       $$02 = $$0$i;\n       break L1;\n      }\n      $605 = $db + 4 | 0;\n      $606 = HEAP32[$605 >> 2] | 0;\n      if ((HEAP32[$db >> 2] | 0) == ($606 | 0)) {\n       $$02 = $first;\n       break L1;\n      }\n      $608 = $db + 16 | 0;\n      HEAP32[$15 >> 2] = HEAP32[$db + 12 >> 2];\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($14, $606 + -24 | 0, $15);\n      $612 = $db + 20 | 0;\n      $613 = HEAP32[$612 >> 2] | 0;\n      $615 = HEAP32[$db + 24 >> 2] | 0;\n      if ($613 >>> 0 < $615 >>> 0) {\n       HEAP32[$613 + 12 >> 2] = HEAP32[$14 + 12 >> 2];\n       HEAP32[$613 >> 2] = HEAP32[$14 >> 2];\n       $622 = $14 + 4 | 0;\n       HEAP32[$613 + 4 >> 2] = HEAP32[$622 >> 2];\n       $624 = $14 + 8 | 0;\n       HEAP32[$613 + 8 >> 2] = HEAP32[$624 >> 2];\n       HEAP32[$624 >> 2] = 0;\n       HEAP32[$622 >> 2] = 0;\n       HEAP32[$14 >> 2] = 0;\n       HEAP32[$612 >> 2] = (HEAP32[$612 >> 2] | 0) + 16;\n      } else {\n       $632 = HEAP32[$608 >> 2] | 0;\n       $633 = $613 - $632 | 0;\n       $634 = $633 >> 4;\n       $635 = $634 + 1 | 0;\n       if (($633 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($608);\n       $638 = $615 - $632 | 0;\n       if ($638 >> 4 >>> 0 < 1073741823) {\n        $641 = $638 >> 3;\n        $$0$i$i$i = $641 >>> 0 < $635 >>> 0 ? $635 : $641;\n       } else $$0$i$i$i = 2147483647;\n       __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i51$i, $$0$i$i$i, $634, $db + 28 | 0);\n       $644 = $__v$i$i51$i + 8 | 0;\n       $645 = HEAP32[$644 >> 2] | 0;\n       HEAP32[$645 + 12 >> 2] = HEAP32[$14 + 12 >> 2];\n       HEAP32[$645 >> 2] = HEAP32[$14 >> 2];\n       $651 = $14 + 4 | 0;\n       HEAP32[$645 + 4 >> 2] = HEAP32[$651 >> 2];\n       $653 = $14 + 8 | 0;\n       HEAP32[$645 + 8 >> 2] = HEAP32[$653 >> 2];\n       HEAP32[$653 >> 2] = 0;\n       HEAP32[$651 >> 2] = 0;\n       HEAP32[$14 >> 2] = 0;\n       HEAP32[$644 >> 2] = $645 + 16;\n       __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($608, $__v$i$i51$i);\n       __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i51$i);\n      }\n      __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($14);\n      $657 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_($$0$i, $last, $db) | 0;\n      if (($657 | 0) == ($$0$i | 0)) {\n       $$02 = $first;\n       break L1;\n      }\n      $659 = HEAP32[$605 >> 2] | 0;\n      if ((($659 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {\n       $$02 = $first;\n       break L1;\n      }\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($tmp, $659 + -24 | 0);\n      $667 = HEAP32[$605 >> 2] | 0;\n      $668 = $667 + -24 | 0;\n      $670 = $667;\n      do {\n       $669 = $670 + -24 | 0;\n       HEAP32[$605 >> 2] = $669;\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($669);\n       $670 = HEAP32[$605 >> 2] | 0;\n      } while (($670 | 0) != ($668 | 0));\n      $673 = HEAP8[$tmp >> 0] | 0;\n      $675 = ($673 & 1) == 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($667 + -48 | 0, $675 ? $tmp + 1 | 0 : HEAP32[$tmp + 8 >> 2] | 0, $675 ? ($673 & 255) >>> 1 : HEAP32[$tmp + 4 >> 2] | 0) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($tmp);\n      $$02 = $657;\n      break L1;\n     }\n    } while (0);\n    $685 = __ZN10__cxxabiv112_GLOBAL__N_118parse_substitutionINS0_2DbEEEPKcS4_S4_RT_($$first, $last, $db) | 0;\n    if (($685 | 0) == ($$first | 0) | ($685 | 0) == ($last | 0)) {\n     $$02 = $first;\n     break L1;\n    }\n    if ((HEAP8[$685 >> 0] | 0) != 73) {\n     $$02 = $first;\n     break L1;\n    }\n    $690 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_($685, $last, $db) | 0;\n    if (($690 | 0) == ($685 | 0)) {\n     $$02 = $first;\n     break L1;\n    }\n    $692 = $db + 4 | 0;\n    $693 = HEAP32[$692 >> 2] | 0;\n    if ((($693 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {\n     $$02 = $first;\n     break L1;\n    }\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($tmp3, $693 + -24 | 0);\n    $701 = HEAP32[$692 >> 2] | 0;\n    $702 = $701 + -24 | 0;\n    $704 = $701;\n    do {\n     $703 = $704 + -24 | 0;\n     HEAP32[$692 >> 2] = $703;\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($703);\n     $704 = HEAP32[$692 >> 2] | 0;\n    } while (($704 | 0) != ($702 | 0));\n    $707 = HEAP8[$tmp3 >> 0] | 0;\n    $709 = ($707 & 1) == 0;\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($701 + -48 | 0, $709 ? $tmp3 + 1 | 0 : HEAP32[$tmp3 + 8 >> 2] | 0, $709 ? ($707 & 255) >>> 1 : HEAP32[$tmp3 + 4 >> 2] | 0) | 0;\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($tmp3);\n    $$02 = $690;\n    break L1;\n   }\n  }\n } else $$02 = $first; while (0);\n STACKTOP = sp;\n return $$02 | 0;\n}\n\nfunction _printf_core($f, $fmt, $ap, $nl_arg, $nl_type) {\n $f = $f | 0;\n $fmt = $fmt | 0;\n $ap = $ap | 0;\n $nl_arg = $nl_arg | 0;\n $nl_type = $nl_type | 0;\n var $$0 = 0, $$0$i = 0, $$0$lcssa$i = 0, $$012$i = 0, $$013$i = 0, $$03$i33 = 0, $$07$i = 0.0, $$1$i = 0.0, $$114$i = 0, $$2$i = 0.0, $$20$i = 0.0, $$21$i = 0, $$210$i = 0, $$23$i = 0, $$3$i = 0.0, $$31$i = 0, $$311$i = 0, $$4$i = 0.0, $$412$lcssa$i = 0, $$41276$i = 0, $$5$lcssa$i = 0, $$51 = 0, $$587$i = 0, $$a$3$i = 0, $$a$3186$i = 0, $$fl$4 = 0, $$lcssa = 0, $$lcssa159$i = 0, $$lcssa318 = 0, $$lcssa323 = 0, $$lcssa324 = 0, $$lcssa325 = 0, $$lcssa326 = 0, $$lcssa327 = 0, $$lcssa329 = 0, $$lcssa339 = 0, $$lcssa342 = 0.0, $$lcssa344 = 0, $$p$$i = 0, $$p$5 = 0, $$p$i = 0, $$pn$i = 0, $$pr$i = 0, $$pr47$i = 0, $$pre$phi184$iZ2D = 0, $$pre182$i = 0, $$z$4$i = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $106 = 0, $107 = 0, $109 = 0, $11 = 0, $12 = 0, $13 = 0, $133 = 0, $134 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $144 = 0, $146 = 0, $148 = 0, $149 = 0, $15 = 0, $154 = 0, $157 = 0, $162 = 0, $163 = 0, $168 = 0, $175 = 0, $176 = 0, $187 = 0, $19 = 0, $199 = 0, $2 = 0, $206 = 0, $208 = 0, $21 = 0, $211 = 0, $212 = 0, $217 = 0, $223 = 0, $224 = 0, $23 = 0, $230 = 0, $24 = 0, $243 = 0, $245 = 0, $248 = 0, $253 = 0, $256 = 0, $257 = 0, $267 = 0, $269 = 0, $271 = 0, $274 = 0, $276 = 0, $277 = 0, $278 = 0, $28 = 0, $284 = 0, $286 = 0, $287 = 0, $29 = 0, $291 = 0, $299 = 0, $3 = 0, $305 = 0, $314 = 0, $317 = 0, $320 = 0, $321 = 0, $334 = 0, $336 = 0, $34 = 0, $341 = 0, $346 = 0, $349 = 0, $359 = 0.0, $366 = 0, $370 = 0, $377 = 0, $379 = 0, $381 = 0, $382 = 0, $386 = 0, $39 = 0, $392 = 0.0, $393 = 0, $396 = 0, $398 = 0, $4 = 0, $40 = 0, $401 = 0, $403 = 0, $407 = 0.0, $417 = 0, $420 = 0, $423 = 0, $432 = 0, $434 = 0, $435 = 0, $44 = 0, $441 = 0, $459 = 0, $46 = 0, $464 = 0, $469 = 0, $47 = 0, $479 = 0, $481 = 0, $482 = 0, $483 = 0, $484 = 0, $491 = 0, $492 = 0, $495 = 0, $497 = 0, $498 = 0, $499 = 0, $5 = 0, $501 = 0, $505 = 0, $507 = 0, $51 = 0, $511 = 0, $516 = 0, $517 = 0, $518 = 0, $519 = 0, $521 = 0, $527 = 0, $528 = 0, $529 = 0, $533 = 0, $541 = 0, $555 = 0, $556 = 0, $559 = 0, $56 = 0, $564 = 0, $565 = 0, $567 = 0, $574 = 0, $575 = 0, $576 = 0, $579 = 0, $580 = 0, $581 = 0, $588 = 0, $59 = 0, $598 = 0, $6 = 0, $60 = 0, $601 = 0, $603 = 0, $605 = 0, $607 = 0, $61 = 0, $612 = 0, $613 = 0, $616 = 0, $618 = 0, $620 = 0, $622 = 0, $633 = 0, $636 = 0, $641 = 0, $650 = 0, $651 = 0, $655 = 0, $658 = 0, $66 = 0, $660 = 0, $662 = 0, $666 = 0, $669 = 0, $67 = 0, $673 = 0, $683 = 0, $688 = 0, $695 = 0, $698 = 0, $7 = 0, $706 = 0, $716 = 0, $718 = 0, $726 = 0, $733 = 0, $735 = 0, $739 = 0, $741 = 0, $750 = 0, $756 = 0, $771 = 0, $773 = 0, $786 = 0, $8 = 0, $9 = 0, $91 = 0, $92 = 0, $98 = 0, $99 = 0, $a$0 = 0, $a$1 = 0, $a$1$lcssa$i = 0, $a$1147$i = 0, $a$2 = 0, $a$2$ph$i = 0, $a$3$lcssa$i = 0, $a$3134$i = 0, $a$5$lcssa$i = 0, $a$5109$i = 0, $a$6$i = 0, $a$7$i = 0, $a$8$ph$i = 0, $arg = 0, $argpos$0 = 0, $big$i = 0, $buf = 0, $buf$i = 0, $carry$0140$i = 0, $carry3$0128$i = 0, $cnt$0 = 0, $cnt$1 = 0, $cnt$1$lcssa = 0, $d$0139$i = 0, $d$0141$i = 0, $d$1127$i = 0, $d$2$lcssa$i = 0, $d$2108$i = 0, $d$3$i = 0, $d$482$i = 0, $d$575$i = 0, $d$686$i = 0, $e$0123$i = 0, $e$1$i = 0, $e$2104$i = 0, $e$3$i = 0, $e$4$ph$i = 0, $e2$i = 0, $ebuf0$i = 0, $estr$0$i = 0, $estr$1$lcssa$i = 0, $estr$193$i = 0, $estr$2$i = 0, $fl$0109 = 0, $fl$062 = 0, $fl$1 = 0, $fl$1$ = 0, $fl$3 = 0, $fl$4 = 0, $fl$6 = 0, $fmt39$lcssa = 0, $fmt39101 = 0, $fmt40 = 0, $fmt41 = 0, $fmt42 = 0, $fmt44 = 0, $fmt44$lcssa321 = 0, $fmt45 = 0, $i$0$lcssa = 0, $i$0$lcssa200 = 0, $i$0114 = 0, $i$0122$i = 0, $i$03$i = 0, $i$03$i25 = 0, $i$1$lcssa$i = 0, $i$1116$i = 0, $i$1125 = 0, $i$2100 = 0, $i$2100$lcssa = 0, $i$2103$i = 0, $i$398 = 0, $i$399$i = 0, $isdigittmp = 0, $isdigittmp1$i = 0, $isdigittmp1$i22 = 0, $isdigittmp11 = 0, $isdigittmp4$i = 0, $isdigittmp4$i24 = 0, $isdigittmp9 = 0, $j$0115$i = 0, $j$0117$i = 0, $j$1100$i = 0, $j$2$i = 0, $l$0 = 0, $l$0$i = 0, $l$1113 = 0, $l$2 = 0, $l10n$0 = 0, $l10n$0$lcssa = 0, $l10n$1 = 0, $l10n$2 = 0, $l10n$3 = 0, $mb = 0, $notrhs$i = 0, $p$0 = 0, $p$1 = 0, $p$2 = 0, $p$4198 = 0, $p$5 = 0, $pl$0 = 0, $pl$0$i = 0, $pl$1 = 0, $pl$1$i = 0, $pl$2 = 0, $prefix$0 = 0, $prefix$0$$i = 0, $prefix$0$i = 0, $prefix$1 = 0, $prefix$2 = 0, $r$0$a$8$i = 0, $re$169$i = 0, $round$068$i = 0.0, $round6$1$i = 0.0, $s$0$i = 0, $s$1$i = 0, $s$1$i$lcssa = 0, $s7$079$i = 0, $s7$1$i = 0, $s8$0$lcssa$i = 0, $s8$070$i = 0, $s9$0$i = 0, $s9$183$i = 0, $s9$2$i = 0, $small$0$i = 0.0, $small$1$i = 0.0, $st$0 = 0, $st$0$lcssa322 = 0, $storemerge = 0, $storemerge13 = 0, $storemerge8108 = 0, $storemerge860 = 0, $t$0 = 0, $t$1 = 0, $w$0 = 0, $w$1 = 0, $w$2 = 0, $wc = 0, $ws$0115 = 0, $ws$1126 = 0, $z$0$i = 0, $z$0$lcssa = 0, $z$0102 = 0, $z$1$lcssa$i = 0, $z$1146$i = 0, $z$2 = 0, $z$2$i = 0, $z$2$i$lcssa = 0, $z$3$lcssa$i = 0, $z$3133$i = 0, $z$4$i = 0, $z$6$$i = 0, $z$6$i = 0, $z$6$i$lcssa = 0, $z$6$ph$i = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 624 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $big$i = sp + 24 | 0;\n $e2$i = sp + 16 | 0;\n $buf$i = sp + 588 | 0;\n $ebuf0$i = sp + 576 | 0;\n $arg = sp;\n $buf = sp + 536 | 0;\n $wc = sp + 8 | 0;\n $mb = sp + 528 | 0;\n $0 = ($f | 0) != 0;\n $1 = $buf + 40 | 0;\n $2 = $1;\n $3 = $buf + 39 | 0;\n $4 = $wc + 4 | 0;\n $5 = $ebuf0$i + 12 | 0;\n $6 = $ebuf0$i + 11 | 0;\n $7 = $buf$i;\n $8 = $5;\n $9 = $8 - $7 | 0;\n $10 = -2 - $7 | 0;\n $11 = $8 + 2 | 0;\n $12 = $big$i + 288 | 0;\n $13 = $buf$i + 9 | 0;\n $14 = $13;\n $15 = $buf$i + 8 | 0;\n $cnt$0 = 0;\n $fmt41 = $fmt;\n $l$0 = 0;\n $l10n$0 = 0;\n L1 : while (1) {\n  do if (($cnt$0 | 0) > -1) if (($l$0 | 0) > (2147483647 - $cnt$0 | 0)) {\n   $19 = ___errno_location() | 0;\n   HEAP32[$19 >> 2] = 75;\n   $cnt$1 = -1;\n   break;\n  } else {\n   $cnt$1 = $l$0 + $cnt$0 | 0;\n   break;\n  } else $cnt$1 = $cnt$0; while (0);\n  $21 = HEAP8[$fmt41 >> 0] | 0;\n  if (!($21 << 24 >> 24)) {\n   $cnt$1$lcssa = $cnt$1;\n   $l10n$0$lcssa = $l10n$0;\n   label = 245;\n   break;\n  } else {\n   $23 = $21;\n   $fmt40 = $fmt41;\n  }\n  L9 : while (1) {\n   switch ($23 << 24 >> 24) {\n   case 37:\n    {\n     $fmt39101 = $fmt40;\n     $z$0102 = $fmt40;\n     label = 9;\n     break L9;\n     break;\n    }\n   case 0:\n    {\n     $fmt39$lcssa = $fmt40;\n     $z$0$lcssa = $fmt40;\n     break L9;\n     break;\n    }\n   default:\n    {}\n   }\n   $24 = $fmt40 + 1 | 0;\n   $23 = HEAP8[$24 >> 0] | 0;\n   $fmt40 = $24;\n  }\n  L12 : do if ((label | 0) == 9) while (1) {\n   label = 0;\n   if ((HEAP8[$fmt39101 + 1 >> 0] | 0) != 37) {\n    $fmt39$lcssa = $fmt39101;\n    $z$0$lcssa = $z$0102;\n    break L12;\n   }\n   $28 = $z$0102 + 1 | 0;\n   $29 = $fmt39101 + 2 | 0;\n   if ((HEAP8[$29 >> 0] | 0) == 37) {\n    $fmt39101 = $29;\n    $z$0102 = $28;\n    label = 9;\n   } else {\n    $fmt39$lcssa = $29;\n    $z$0$lcssa = $28;\n    break;\n   }\n  } while (0);\n  $34 = $z$0$lcssa - $fmt41 | 0;\n  if ($0) if (!(HEAP32[$f >> 2] & 32)) ___fwritex($fmt41, $34, $f) | 0;\n  if (($z$0$lcssa | 0) != ($fmt41 | 0)) {\n   $cnt$0 = $cnt$1;\n   $fmt41 = $fmt39$lcssa;\n   $l$0 = $34;\n   continue;\n  }\n  $39 = $fmt39$lcssa + 1 | 0;\n  $40 = HEAP8[$39 >> 0] | 0;\n  $isdigittmp = ($40 << 24 >> 24) + -48 | 0;\n  if ($isdigittmp >>> 0 < 10) {\n   $44 = (HEAP8[$fmt39$lcssa + 2 >> 0] | 0) == 36;\n   $$51 = $44 ? $fmt39$lcssa + 3 | 0 : $39;\n   $47 = HEAP8[$$51 >> 0] | 0;\n   $argpos$0 = $44 ? $isdigittmp : -1;\n   $l10n$1 = $44 ? 1 : $l10n$0;\n   $storemerge = $$51;\n  } else {\n   $47 = $40;\n   $argpos$0 = -1;\n   $l10n$1 = $l10n$0;\n   $storemerge = $39;\n  }\n  $46 = $47 << 24 >> 24;\n  L25 : do if (($46 & -32 | 0) == 32) {\n   $51 = $46;\n   $56 = $47;\n   $fl$0109 = 0;\n   $storemerge8108 = $storemerge;\n   while (1) {\n    if (!(1 << $51 + -32 & 75913)) {\n     $66 = $56;\n     $fl$062 = $fl$0109;\n     $storemerge860 = $storemerge8108;\n     break L25;\n    }\n    $59 = 1 << ($56 << 24 >> 24) + -32 | $fl$0109;\n    $60 = $storemerge8108 + 1 | 0;\n    $61 = HEAP8[$60 >> 0] | 0;\n    $51 = $61 << 24 >> 24;\n    if (($51 & -32 | 0) != 32) {\n     $66 = $61;\n     $fl$062 = $59;\n     $storemerge860 = $60;\n     break;\n    } else {\n     $56 = $61;\n     $fl$0109 = $59;\n     $storemerge8108 = $60;\n    }\n   }\n  } else {\n   $66 = $47;\n   $fl$062 = 0;\n   $storemerge860 = $storemerge;\n  } while (0);\n  do if ($66 << 24 >> 24 == 42) {\n   $67 = $storemerge860 + 1 | 0;\n   $isdigittmp11 = (HEAP8[$67 >> 0] | 0) + -48 | 0;\n   if ($isdigittmp11 >>> 0 < 10) if ((HEAP8[$storemerge860 + 2 >> 0] | 0) == 36) {\n    HEAP32[$nl_type + ($isdigittmp11 << 2) >> 2] = 10;\n    $l10n$2 = 1;\n    $storemerge13 = $storemerge860 + 3 | 0;\n    $w$0 = HEAP32[$nl_arg + ((HEAP8[$67 >> 0] | 0) + -48 << 3) >> 2] | 0;\n   } else label = 24; else label = 24;\n   if ((label | 0) == 24) {\n    label = 0;\n    if ($l10n$1) {\n     $$0 = -1;\n     break L1;\n    }\n    if (!$0) {\n     $fl$1 = $fl$062;\n     $fmt42 = $67;\n     $l10n$3 = 0;\n     $w$1 = 0;\n     break;\n    }\n    $91 = (HEAP32[$ap >> 2] | 0) + (4 - 1) & ~(4 - 1);\n    $92 = HEAP32[$91 >> 2] | 0;\n    HEAP32[$ap >> 2] = $91 + 4;\n    $l10n$2 = 0;\n    $storemerge13 = $67;\n    $w$0 = $92;\n   }\n   if (($w$0 | 0) < 0) {\n    $fl$1 = $fl$062 | 8192;\n    $fmt42 = $storemerge13;\n    $l10n$3 = $l10n$2;\n    $w$1 = 0 - $w$0 | 0;\n   } else {\n    $fl$1 = $fl$062;\n    $fmt42 = $storemerge13;\n    $l10n$3 = $l10n$2;\n    $w$1 = $w$0;\n   }\n  } else {\n   $isdigittmp1$i = ($66 << 24 >> 24) + -48 | 0;\n   if ($isdigittmp1$i >>> 0 < 10) {\n    $100 = $storemerge860;\n    $i$03$i = 0;\n    $isdigittmp4$i = $isdigittmp1$i;\n    while (1) {\n     $98 = ($i$03$i * 10 | 0) + $isdigittmp4$i | 0;\n     $99 = $100 + 1 | 0;\n     $isdigittmp4$i = (HEAP8[$99 >> 0] | 0) + -48 | 0;\n     if ($isdigittmp4$i >>> 0 >= 10) {\n      $$lcssa = $98;\n      $$lcssa318 = $99;\n      break;\n     } else {\n      $100 = $99;\n      $i$03$i = $98;\n     }\n    }\n    if (($$lcssa | 0) < 0) {\n     $$0 = -1;\n     break L1;\n    } else {\n     $fl$1 = $fl$062;\n     $fmt42 = $$lcssa318;\n     $l10n$3 = $l10n$1;\n     $w$1 = $$lcssa;\n    }\n   } else {\n    $fl$1 = $fl$062;\n    $fmt42 = $storemerge860;\n    $l10n$3 = $l10n$1;\n    $w$1 = 0;\n   }\n  } while (0);\n  L46 : do if ((HEAP8[$fmt42 >> 0] | 0) == 46) {\n   $106 = $fmt42 + 1 | 0;\n   $107 = HEAP8[$106 >> 0] | 0;\n   if ($107 << 24 >> 24 != 42) {\n    $isdigittmp1$i22 = ($107 << 24 >> 24) + -48 | 0;\n    if ($isdigittmp1$i22 >>> 0 < 10) {\n     $139 = $106;\n     $i$03$i25 = 0;\n     $isdigittmp4$i24 = $isdigittmp1$i22;\n    } else {\n     $fmt45 = $106;\n     $p$0 = 0;\n     break;\n    }\n    while (1) {\n     $137 = ($i$03$i25 * 10 | 0) + $isdigittmp4$i24 | 0;\n     $138 = $139 + 1 | 0;\n     $isdigittmp4$i24 = (HEAP8[$138 >> 0] | 0) + -48 | 0;\n     if ($isdigittmp4$i24 >>> 0 >= 10) {\n      $fmt45 = $138;\n      $p$0 = $137;\n      break L46;\n     } else {\n      $139 = $138;\n      $i$03$i25 = $137;\n     }\n    }\n   }\n   $109 = $fmt42 + 2 | 0;\n   $isdigittmp9 = (HEAP8[$109 >> 0] | 0) + -48 | 0;\n   if ($isdigittmp9 >>> 0 < 10) if ((HEAP8[$fmt42 + 3 >> 0] | 0) == 36) {\n    HEAP32[$nl_type + ($isdigittmp9 << 2) >> 2] = 10;\n    $fmt45 = $fmt42 + 4 | 0;\n    $p$0 = HEAP32[$nl_arg + ((HEAP8[$109 >> 0] | 0) + -48 << 3) >> 2] | 0;\n    break;\n   }\n   if ($l10n$3) {\n    $$0 = -1;\n    break L1;\n   }\n   if ($0) {\n    $133 = (HEAP32[$ap >> 2] | 0) + (4 - 1) & ~(4 - 1);\n    $134 = HEAP32[$133 >> 2] | 0;\n    HEAP32[$ap >> 2] = $133 + 4;\n    $fmt45 = $109;\n    $p$0 = $134;\n   } else {\n    $fmt45 = $109;\n    $p$0 = 0;\n   }\n  } else {\n   $fmt45 = $fmt42;\n   $p$0 = -1;\n  } while (0);\n  $fmt44 = $fmt45;\n  $st$0 = 0;\n  while (1) {\n   $144 = (HEAP8[$fmt44 >> 0] | 0) + -65 | 0;\n   if ($144 >>> 0 > 57) {\n    $$0 = -1;\n    break L1;\n   }\n   $146 = $fmt44 + 1 | 0;\n   $148 = HEAP8[17777 + ($st$0 * 58 | 0) + $144 >> 0] | 0;\n   $149 = $148 & 255;\n   if (($149 + -1 | 0) >>> 0 < 8) {\n    $fmt44 = $146;\n    $st$0 = $149;\n   } else {\n    $$lcssa323 = $146;\n    $$lcssa324 = $148;\n    $$lcssa325 = $149;\n    $fmt44$lcssa321 = $fmt44;\n    $st$0$lcssa322 = $st$0;\n    break;\n   }\n  }\n  if (!($$lcssa324 << 24 >> 24)) {\n   $$0 = -1;\n   break;\n  }\n  $154 = ($argpos$0 | 0) > -1;\n  do if ($$lcssa324 << 24 >> 24 == 19) if ($154) {\n   $$0 = -1;\n   break L1;\n  } else label = 52; else {\n   if ($154) {\n    HEAP32[$nl_type + ($argpos$0 << 2) >> 2] = $$lcssa325;\n    $157 = $nl_arg + ($argpos$0 << 3) | 0;\n    $162 = HEAP32[$157 + 4 >> 2] | 0;\n    $163 = $arg;\n    HEAP32[$163 >> 2] = HEAP32[$157 >> 2];\n    HEAP32[$163 + 4 >> 2] = $162;\n    label = 52;\n    break;\n   }\n   if (!$0) {\n    $$0 = 0;\n    break L1;\n   }\n   _pop_arg($arg, $$lcssa325, $ap);\n  } while (0);\n  if ((label | 0) == 52) {\n   label = 0;\n   if (!$0) {\n    $cnt$0 = $cnt$1;\n    $fmt41 = $$lcssa323;\n    $l$0 = $34;\n    $l10n$0 = $l10n$3;\n    continue;\n   }\n  }\n  $168 = HEAP8[$fmt44$lcssa321 >> 0] | 0;\n  $t$0 = ($st$0$lcssa322 | 0) != 0 & ($168 & 15 | 0) == 3 ? $168 & -33 : $168;\n  $175 = $fl$1 & -65537;\n  $fl$1$ = ($fl$1 & 8192 | 0) == 0 ? $fl$1 : $175;\n  L75 : do switch ($t$0 | 0) {\n  case 110:\n   {\n    switch ($st$0$lcssa322 | 0) {\n    case 0:\n     {\n      HEAP32[HEAP32[$arg >> 2] >> 2] = $cnt$1;\n      $cnt$0 = $cnt$1;\n      $fmt41 = $$lcssa323;\n      $l$0 = $34;\n      $l10n$0 = $l10n$3;\n      continue L1;\n      break;\n     }\n    case 1:\n     {\n      HEAP32[HEAP32[$arg >> 2] >> 2] = $cnt$1;\n      $cnt$0 = $cnt$1;\n      $fmt41 = $$lcssa323;\n      $l$0 = $34;\n      $l10n$0 = $l10n$3;\n      continue L1;\n      break;\n     }\n    case 2:\n     {\n      $187 = HEAP32[$arg >> 2] | 0;\n      HEAP32[$187 >> 2] = $cnt$1;\n      HEAP32[$187 + 4 >> 2] = (($cnt$1 | 0) < 0) << 31 >> 31;\n      $cnt$0 = $cnt$1;\n      $fmt41 = $$lcssa323;\n      $l$0 = $34;\n      $l10n$0 = $l10n$3;\n      continue L1;\n      break;\n     }\n    case 3:\n     {\n      HEAP16[HEAP32[$arg >> 2] >> 1] = $cnt$1;\n      $cnt$0 = $cnt$1;\n      $fmt41 = $$lcssa323;\n      $l$0 = $34;\n      $l10n$0 = $l10n$3;\n      continue L1;\n      break;\n     }\n    case 4:\n     {\n      HEAP8[HEAP32[$arg >> 2] >> 0] = $cnt$1;\n      $cnt$0 = $cnt$1;\n      $fmt41 = $$lcssa323;\n      $l$0 = $34;\n      $l10n$0 = $l10n$3;\n      continue L1;\n      break;\n     }\n    case 6:\n     {\n      HEAP32[HEAP32[$arg >> 2] >> 2] = $cnt$1;\n      $cnt$0 = $cnt$1;\n      $fmt41 = $$lcssa323;\n      $l$0 = $34;\n      $l10n$0 = $l10n$3;\n      continue L1;\n      break;\n     }\n    case 7:\n     {\n      $199 = HEAP32[$arg >> 2] | 0;\n      HEAP32[$199 >> 2] = $cnt$1;\n      HEAP32[$199 + 4 >> 2] = (($cnt$1 | 0) < 0) << 31 >> 31;\n      $cnt$0 = $cnt$1;\n      $fmt41 = $$lcssa323;\n      $l$0 = $34;\n      $l10n$0 = $l10n$3;\n      continue L1;\n      break;\n     }\n    default:\n     {\n      $cnt$0 = $cnt$1;\n      $fmt41 = $$lcssa323;\n      $l$0 = $34;\n      $l10n$0 = $l10n$3;\n      continue L1;\n     }\n    }\n    break;\n   }\n  case 112:\n   {\n    $fl$3 = $fl$1$ | 8;\n    $p$1 = $p$0 >>> 0 > 8 ? $p$0 : 8;\n    $t$1 = 120;\n    label = 64;\n    break;\n   }\n  case 88:\n  case 120:\n   {\n    $fl$3 = $fl$1$;\n    $p$1 = $p$0;\n    $t$1 = $t$0;\n    label = 64;\n    break;\n   }\n  case 111:\n   {\n    $243 = $arg;\n    $245 = HEAP32[$243 >> 2] | 0;\n    $248 = HEAP32[$243 + 4 >> 2] | 0;\n    if (($245 | 0) == 0 & ($248 | 0) == 0) $$0$lcssa$i = $1; else {\n     $$03$i33 = $1;\n     $253 = $245;\n     $257 = $248;\n     while (1) {\n      $256 = $$03$i33 + -1 | 0;\n      HEAP8[$256 >> 0] = $253 & 7 | 48;\n      $253 = _bitshift64Lshr($253 | 0, $257 | 0, 3) | 0;\n      $257 = tempRet0;\n      if (($253 | 0) == 0 & ($257 | 0) == 0) {\n       $$0$lcssa$i = $256;\n       break;\n      } else $$03$i33 = $256;\n     }\n    }\n    if (!($fl$1$ & 8)) {\n     $a$0 = $$0$lcssa$i;\n     $fl$4 = $fl$1$;\n     $p$2 = $p$0;\n     $pl$1 = 0;\n     $prefix$1 = 18257;\n     label = 77;\n    } else {\n     $267 = $2 - $$0$lcssa$i + 1 | 0;\n     $a$0 = $$0$lcssa$i;\n     $fl$4 = $fl$1$;\n     $p$2 = ($p$0 | 0) < ($267 | 0) ? $267 : $p$0;\n     $pl$1 = 0;\n     $prefix$1 = 18257;\n     label = 77;\n    }\n    break;\n   }\n  case 105:\n  case 100:\n   {\n    $269 = $arg;\n    $271 = HEAP32[$269 >> 2] | 0;\n    $274 = HEAP32[$269 + 4 >> 2] | 0;\n    if (($274 | 0) < 0) {\n     $276 = _i64Subtract(0, 0, $271 | 0, $274 | 0) | 0;\n     $277 = tempRet0;\n     $278 = $arg;\n     HEAP32[$278 >> 2] = $276;\n     HEAP32[$278 + 4 >> 2] = $277;\n     $286 = $276;\n     $287 = $277;\n     $pl$0 = 1;\n     $prefix$0 = 18257;\n     label = 76;\n     break L75;\n    }\n    if (!($fl$1$ & 2048)) {\n     $284 = $fl$1$ & 1;\n     $286 = $271;\n     $287 = $274;\n     $pl$0 = $284;\n     $prefix$0 = ($284 | 0) == 0 ? 18257 : 18259;\n     label = 76;\n    } else {\n     $286 = $271;\n     $287 = $274;\n     $pl$0 = 1;\n     $prefix$0 = 18258;\n     label = 76;\n    }\n    break;\n   }\n  case 117:\n   {\n    $176 = $arg;\n    $286 = HEAP32[$176 >> 2] | 0;\n    $287 = HEAP32[$176 + 4 >> 2] | 0;\n    $pl$0 = 0;\n    $prefix$0 = 18257;\n    label = 76;\n    break;\n   }\n  case 99:\n   {\n    HEAP8[$3 >> 0] = HEAP32[$arg >> 2];\n    $a$2 = $3;\n    $fl$6 = $175;\n    $p$5 = 1;\n    $pl$2 = 0;\n    $prefix$2 = 18257;\n    $z$2 = $1;\n    break;\n   }\n  case 109:\n   {\n    $314 = ___errno_location() | 0;\n    $a$1 = _strerror(HEAP32[$314 >> 2] | 0) | 0;\n    label = 82;\n    break;\n   }\n  case 115:\n   {\n    $317 = HEAP32[$arg >> 2] | 0;\n    $a$1 = ($317 | 0) != 0 ? $317 : 18267;\n    label = 82;\n    break;\n   }\n  case 67:\n   {\n    HEAP32[$wc >> 2] = HEAP32[$arg >> 2];\n    HEAP32[$4 >> 2] = 0;\n    HEAP32[$arg >> 2] = $wc;\n    $p$4198 = -1;\n    label = 86;\n    break;\n   }\n  case 83:\n   {\n    if (!$p$0) {\n     _pad($f, 32, $w$1, 0, $fl$1$);\n     $i$0$lcssa200 = 0;\n     label = 98;\n    } else {\n     $p$4198 = $p$0;\n     label = 86;\n    }\n    break;\n   }\n  case 65:\n  case 71:\n  case 70:\n  case 69:\n  case 97:\n  case 103:\n  case 102:\n  case 101:\n   {\n    $359 = +HEAPF64[$arg >> 3];\n    HEAP32[$e2$i >> 2] = 0;\n    HEAPF64[tempDoublePtr >> 3] = $359;\n    if ((HEAP32[tempDoublePtr + 4 >> 2] | 0) < 0) {\n     $$07$i = -$359;\n     $pl$0$i = 1;\n     $prefix$0$i = 18274;\n    } else if (!($fl$1$ & 2048)) {\n     $366 = $fl$1$ & 1;\n     $$07$i = $359;\n     $pl$0$i = $366;\n     $prefix$0$i = ($366 | 0) == 0 ? 18275 : 18280;\n    } else {\n     $$07$i = $359;\n     $pl$0$i = 1;\n     $prefix$0$i = 18277;\n    }\n    HEAPF64[tempDoublePtr >> 3] = $$07$i;\n    $370 = HEAP32[tempDoublePtr + 4 >> 2] & 2146435072;\n    do if ($370 >>> 0 < 2146435072 | ($370 | 0) == 2146435072 & 0 < 0) {\n     $392 = +_frexpl($$07$i, $e2$i) * 2.0;\n     $393 = $392 != 0.0;\n     if ($393) HEAP32[$e2$i >> 2] = (HEAP32[$e2$i >> 2] | 0) + -1;\n     $396 = $t$0 | 32;\n     if (($396 | 0) == 97) {\n      $398 = $t$0 & 32;\n      $prefix$0$$i = ($398 | 0) == 0 ? $prefix$0$i : $prefix$0$i + 9 | 0;\n      $401 = $pl$0$i | 2;\n      $403 = 12 - $p$0 | 0;\n      do if ($p$0 >>> 0 > 11 | ($403 | 0) == 0) $$1$i = $392; else {\n       $re$169$i = $403;\n       $round$068$i = 8.0;\n       while (1) {\n        $re$169$i = $re$169$i + -1 | 0;\n        $407 = $round$068$i * 16.0;\n        if (!$re$169$i) {\n         $$lcssa342 = $407;\n         break;\n        } else $round$068$i = $407;\n       }\n       if ((HEAP8[$prefix$0$$i >> 0] | 0) == 45) {\n        $$1$i = -($$lcssa342 + (-$392 - $$lcssa342));\n        break;\n       } else {\n        $$1$i = $392 + $$lcssa342 - $$lcssa342;\n        break;\n       }\n      } while (0);\n      $417 = HEAP32[$e2$i >> 2] | 0;\n      $420 = ($417 | 0) < 0 ? 0 - $417 | 0 : $417;\n      $423 = _fmt_u($420, (($420 | 0) < 0) << 31 >> 31, $5) | 0;\n      if (($423 | 0) == ($5 | 0)) {\n       HEAP8[$6 >> 0] = 48;\n       $estr$0$i = $6;\n      } else $estr$0$i = $423;\n      HEAP8[$estr$0$i + -1 >> 0] = ($417 >> 31 & 2) + 43;\n      $432 = $estr$0$i + -2 | 0;\n      HEAP8[$432 >> 0] = $t$0 + 15;\n      $notrhs$i = ($p$0 | 0) < 1;\n      $434 = ($fl$1$ & 8 | 0) == 0;\n      $$2$i = $$1$i;\n      $s$0$i = $buf$i;\n      while (1) {\n       $435 = ~~$$2$i;\n       $441 = $s$0$i + 1 | 0;\n       HEAP8[$s$0$i >> 0] = HEAPU8[18241 + $435 >> 0] | $398;\n       $$2$i = ($$2$i - +($435 | 0)) * 16.0;\n       do if (($441 - $7 | 0) == 1) {\n        if ($434 & ($notrhs$i & $$2$i == 0.0)) {\n         $s$1$i = $441;\n         break;\n        }\n        HEAP8[$441 >> 0] = 46;\n        $s$1$i = $s$0$i + 2 | 0;\n       } else $s$1$i = $441; while (0);\n       if (!($$2$i != 0.0)) {\n        $s$1$i$lcssa = $s$1$i;\n        break;\n       } else $s$0$i = $s$1$i;\n      }\n      $$pre182$i = $s$1$i$lcssa;\n      $l$0$i = ($p$0 | 0) != 0 & ($10 + $$pre182$i | 0) < ($p$0 | 0) ? $11 + $p$0 - $432 | 0 : $9 - $432 + $$pre182$i | 0;\n      $459 = $l$0$i + $401 | 0;\n      _pad($f, 32, $w$1, $459, $fl$1$);\n      if (!(HEAP32[$f >> 2] & 32)) ___fwritex($prefix$0$$i, $401, $f) | 0;\n      _pad($f, 48, $w$1, $459, $fl$1$ ^ 65536);\n      $464 = $$pre182$i - $7 | 0;\n      if (!(HEAP32[$f >> 2] & 32)) ___fwritex($buf$i, $464, $f) | 0;\n      $469 = $8 - $432 | 0;\n      _pad($f, 48, $l$0$i - ($464 + $469) | 0, 0, 0);\n      if (!(HEAP32[$f >> 2] & 32)) ___fwritex($432, $469, $f) | 0;\n      _pad($f, 32, $w$1, $459, $fl$1$ ^ 8192);\n      $$0$i = ($459 | 0) < ($w$1 | 0) ? $w$1 : $459;\n      break;\n     }\n     $$p$i = ($p$0 | 0) < 0 ? 6 : $p$0;\n     if ($393) {\n      $479 = (HEAP32[$e2$i >> 2] | 0) + -28 | 0;\n      HEAP32[$e2$i >> 2] = $479;\n      $$3$i = $392 * 268435456.0;\n      $481 = $479;\n     } else {\n      $$3$i = $392;\n      $481 = HEAP32[$e2$i >> 2] | 0;\n     }\n     $$31$i = ($481 | 0) < 0 ? $big$i : $12;\n     $482 = $$31$i;\n     $$4$i = $$3$i;\n     $z$0$i = $$31$i;\n     while (1) {\n      $483 = ~~$$4$i >>> 0;\n      HEAP32[$z$0$i >> 2] = $483;\n      $484 = $z$0$i + 4 | 0;\n      $$4$i = ($$4$i - +($483 >>> 0)) * 1.0e9;\n      if (!($$4$i != 0.0)) {\n       $$lcssa326 = $484;\n       break;\n      } else $z$0$i = $484;\n     }\n     $$pr$i = HEAP32[$e2$i >> 2] | 0;\n     if (($$pr$i | 0) > 0) {\n      $491 = $$pr$i;\n      $a$1147$i = $$31$i;\n      $z$1146$i = $$lcssa326;\n      while (1) {\n       $492 = ($491 | 0) > 29 ? 29 : $491;\n       $d$0139$i = $z$1146$i + -4 | 0;\n       do if ($d$0139$i >>> 0 < $a$1147$i >>> 0) $a$2$ph$i = $a$1147$i; else {\n        $carry$0140$i = 0;\n        $d$0141$i = $d$0139$i;\n        while (1) {\n         $495 = _bitshift64Shl(HEAP32[$d$0141$i >> 2] | 0, 0, $492 | 0) | 0;\n         $497 = _i64Add($495 | 0, tempRet0 | 0, $carry$0140$i | 0, 0) | 0;\n         $498 = tempRet0;\n         $499 = ___uremdi3($497 | 0, $498 | 0, 1e9, 0) | 0;\n         HEAP32[$d$0141$i >> 2] = $499;\n         $501 = ___udivdi3($497 | 0, $498 | 0, 1e9, 0) | 0;\n         $d$0141$i = $d$0141$i + -4 | 0;\n         if ($d$0141$i >>> 0 < $a$1147$i >>> 0) {\n          $$lcssa327 = $501;\n          break;\n         } else $carry$0140$i = $501;\n        }\n        if (!$$lcssa327) {\n         $a$2$ph$i = $a$1147$i;\n         break;\n        }\n        $505 = $a$1147$i + -4 | 0;\n        HEAP32[$505 >> 2] = $$lcssa327;\n        $a$2$ph$i = $505;\n       } while (0);\n       $z$2$i = $z$1146$i;\n       while (1) {\n        if ($z$2$i >>> 0 <= $a$2$ph$i >>> 0) {\n         $z$2$i$lcssa = $z$2$i;\n         break;\n        }\n        $507 = $z$2$i + -4 | 0;\n        if (!(HEAP32[$507 >> 2] | 0)) $z$2$i = $507; else {\n         $z$2$i$lcssa = $z$2$i;\n         break;\n        }\n       }\n       $511 = (HEAP32[$e2$i >> 2] | 0) - $492 | 0;\n       HEAP32[$e2$i >> 2] = $511;\n       if (($511 | 0) > 0) {\n        $491 = $511;\n        $a$1147$i = $a$2$ph$i;\n        $z$1146$i = $z$2$i$lcssa;\n       } else {\n        $$pr47$i = $511;\n        $a$1$lcssa$i = $a$2$ph$i;\n        $z$1$lcssa$i = $z$2$i$lcssa;\n        break;\n       }\n      }\n     } else {\n      $$pr47$i = $$pr$i;\n      $a$1$lcssa$i = $$31$i;\n      $z$1$lcssa$i = $$lcssa326;\n     }\n     if (($$pr47$i | 0) < 0) {\n      $516 = (($$p$i + 25 | 0) / 9 | 0) + 1 | 0;\n      $517 = ($396 | 0) == 102;\n      $519 = $$pr47$i;\n      $a$3134$i = $a$1$lcssa$i;\n      $z$3133$i = $z$1$lcssa$i;\n      while (1) {\n       $518 = 0 - $519 | 0;\n       $521 = ($518 | 0) > 9 ? 9 : $518;\n       do if ($a$3134$i >>> 0 < $z$3133$i >>> 0) {\n        $527 = (1 << $521) + -1 | 0;\n        $528 = 1e9 >>> $521;\n        $carry3$0128$i = 0;\n        $d$1127$i = $a$3134$i;\n        while (1) {\n         $529 = HEAP32[$d$1127$i >> 2] | 0;\n         HEAP32[$d$1127$i >> 2] = ($529 >>> $521) + $carry3$0128$i;\n         $533 = Math_imul($529 & $527, $528) | 0;\n         $d$1127$i = $d$1127$i + 4 | 0;\n         if ($d$1127$i >>> 0 >= $z$3133$i >>> 0) {\n          $$lcssa329 = $533;\n          break;\n         } else $carry3$0128$i = $533;\n        }\n        $$a$3$i = (HEAP32[$a$3134$i >> 2] | 0) == 0 ? $a$3134$i + 4 | 0 : $a$3134$i;\n        if (!$$lcssa329) {\n         $$a$3186$i = $$a$3$i;\n         $z$4$i = $z$3133$i;\n         break;\n        }\n        HEAP32[$z$3133$i >> 2] = $$lcssa329;\n        $$a$3186$i = $$a$3$i;\n        $z$4$i = $z$3133$i + 4 | 0;\n       } else {\n        $$a$3186$i = (HEAP32[$a$3134$i >> 2] | 0) == 0 ? $a$3134$i + 4 | 0 : $a$3134$i;\n        $z$4$i = $z$3133$i;\n       } while (0);\n       $541 = $517 ? $$31$i : $$a$3186$i;\n       $$z$4$i = ($z$4$i - $541 >> 2 | 0) > ($516 | 0) ? $541 + ($516 << 2) | 0 : $z$4$i;\n       $519 = (HEAP32[$e2$i >> 2] | 0) + $521 | 0;\n       HEAP32[$e2$i >> 2] = $519;\n       if (($519 | 0) >= 0) {\n        $a$3$lcssa$i = $$a$3186$i;\n        $z$3$lcssa$i = $$z$4$i;\n        break;\n       } else {\n        $a$3134$i = $$a$3186$i;\n        $z$3133$i = $$z$4$i;\n       }\n      }\n     } else {\n      $a$3$lcssa$i = $a$1$lcssa$i;\n      $z$3$lcssa$i = $z$1$lcssa$i;\n     }\n     do if ($a$3$lcssa$i >>> 0 < $z$3$lcssa$i >>> 0) {\n      $555 = ($482 - $a$3$lcssa$i >> 2) * 9 | 0;\n      $556 = HEAP32[$a$3$lcssa$i >> 2] | 0;\n      if ($556 >>> 0 < 10) {\n       $e$1$i = $555;\n       break;\n      } else {\n       $e$0123$i = $555;\n       $i$0122$i = 10;\n      }\n      while (1) {\n       $i$0122$i = $i$0122$i * 10 | 0;\n       $559 = $e$0123$i + 1 | 0;\n       if ($556 >>> 0 < $i$0122$i >>> 0) {\n        $e$1$i = $559;\n        break;\n       } else $e$0123$i = $559;\n      }\n     } else $e$1$i = 0; while (0);\n     $564 = ($396 | 0) == 103;\n     $565 = ($$p$i | 0) != 0;\n     $567 = $$p$i - (($396 | 0) != 102 ? $e$1$i : 0) + (($565 & $564) << 31 >> 31) | 0;\n     if (($567 | 0) < ((($z$3$lcssa$i - $482 >> 2) * 9 | 0) + -9 | 0)) {\n      $574 = $567 + 9216 | 0;\n      $575 = ($574 | 0) / 9 | 0;\n      $576 = $$31$i + ($575 + -1023 << 2) | 0;\n      $j$0115$i = (($574 | 0) % 9 | 0) + 1 | 0;\n      if (($j$0115$i | 0) < 9) {\n       $i$1116$i = 10;\n       $j$0117$i = $j$0115$i;\n       while (1) {\n        $579 = $i$1116$i * 10 | 0;\n        $j$0117$i = $j$0117$i + 1 | 0;\n        if (($j$0117$i | 0) == 9) {\n         $i$1$lcssa$i = $579;\n         break;\n        } else $i$1116$i = $579;\n       }\n      } else $i$1$lcssa$i = 10;\n      $580 = HEAP32[$576 >> 2] | 0;\n      $581 = ($580 >>> 0) % ($i$1$lcssa$i >>> 0) | 0;\n      if (!$581) if (($$31$i + ($575 + -1022 << 2) | 0) == ($z$3$lcssa$i | 0)) {\n       $a$7$i = $a$3$lcssa$i;\n       $d$3$i = $576;\n       $e$3$i = $e$1$i;\n      } else label = 163; else label = 163;\n      do if ((label | 0) == 163) {\n       label = 0;\n       $$20$i = ((($580 >>> 0) / ($i$1$lcssa$i >>> 0) | 0) & 1 | 0) == 0 ? 9007199254740992.0 : 9007199254740994.0;\n       $588 = ($i$1$lcssa$i | 0) / 2 | 0;\n       do if ($581 >>> 0 < $588 >>> 0) $small$0$i = .5; else {\n        if (($581 | 0) == ($588 | 0)) if (($$31$i + ($575 + -1022 << 2) | 0) == ($z$3$lcssa$i | 0)) {\n         $small$0$i = 1.0;\n         break;\n        }\n        $small$0$i = 1.5;\n       } while (0);\n       do if (!$pl$0$i) {\n        $round6$1$i = $$20$i;\n        $small$1$i = $small$0$i;\n       } else {\n        if ((HEAP8[$prefix$0$i >> 0] | 0) != 45) {\n         $round6$1$i = $$20$i;\n         $small$1$i = $small$0$i;\n         break;\n        }\n        $round6$1$i = -$$20$i;\n        $small$1$i = -$small$0$i;\n       } while (0);\n       $598 = $580 - $581 | 0;\n       HEAP32[$576 >> 2] = $598;\n       if (!($round6$1$i + $small$1$i != $round6$1$i)) {\n        $a$7$i = $a$3$lcssa$i;\n        $d$3$i = $576;\n        $e$3$i = $e$1$i;\n        break;\n       }\n       $601 = $598 + $i$1$lcssa$i | 0;\n       HEAP32[$576 >> 2] = $601;\n       if ($601 >>> 0 > 999999999) {\n        $a$5109$i = $a$3$lcssa$i;\n        $d$2108$i = $576;\n        while (1) {\n         $603 = $d$2108$i + -4 | 0;\n         HEAP32[$d$2108$i >> 2] = 0;\n         if ($603 >>> 0 < $a$5109$i >>> 0) {\n          $605 = $a$5109$i + -4 | 0;\n          HEAP32[$605 >> 2] = 0;\n          $a$6$i = $605;\n         } else $a$6$i = $a$5109$i;\n         $607 = (HEAP32[$603 >> 2] | 0) + 1 | 0;\n         HEAP32[$603 >> 2] = $607;\n         if ($607 >>> 0 > 999999999) {\n          $a$5109$i = $a$6$i;\n          $d$2108$i = $603;\n         } else {\n          $a$5$lcssa$i = $a$6$i;\n          $d$2$lcssa$i = $603;\n          break;\n         }\n        }\n       } else {\n        $a$5$lcssa$i = $a$3$lcssa$i;\n        $d$2$lcssa$i = $576;\n       }\n       $612 = ($482 - $a$5$lcssa$i >> 2) * 9 | 0;\n       $613 = HEAP32[$a$5$lcssa$i >> 2] | 0;\n       if ($613 >>> 0 < 10) {\n        $a$7$i = $a$5$lcssa$i;\n        $d$3$i = $d$2$lcssa$i;\n        $e$3$i = $612;\n        break;\n       } else {\n        $e$2104$i = $612;\n        $i$2103$i = 10;\n       }\n       while (1) {\n        $i$2103$i = $i$2103$i * 10 | 0;\n        $616 = $e$2104$i + 1 | 0;\n        if ($613 >>> 0 < $i$2103$i >>> 0) {\n         $a$7$i = $a$5$lcssa$i;\n         $d$3$i = $d$2$lcssa$i;\n         $e$3$i = $616;\n         break;\n        } else $e$2104$i = $616;\n       }\n      } while (0);\n      $618 = $d$3$i + 4 | 0;\n      $a$8$ph$i = $a$7$i;\n      $e$4$ph$i = $e$3$i;\n      $z$6$ph$i = $z$3$lcssa$i >>> 0 > $618 >>> 0 ? $618 : $z$3$lcssa$i;\n     } else {\n      $a$8$ph$i = $a$3$lcssa$i;\n      $e$4$ph$i = $e$1$i;\n      $z$6$ph$i = $z$3$lcssa$i;\n     }\n     $620 = 0 - $e$4$ph$i | 0;\n     $z$6$i = $z$6$ph$i;\n     while (1) {\n      if ($z$6$i >>> 0 <= $a$8$ph$i >>> 0) {\n       $$lcssa159$i = 0;\n       $z$6$i$lcssa = $z$6$i;\n       break;\n      }\n      $622 = $z$6$i + -4 | 0;\n      if (!(HEAP32[$622 >> 2] | 0)) $z$6$i = $622; else {\n       $$lcssa159$i = 1;\n       $z$6$i$lcssa = $z$6$i;\n       break;\n      }\n     }\n     do if ($564) {\n      $$p$$i = ($565 & 1 ^ 1) + $$p$i | 0;\n      if (($$p$$i | 0) > ($e$4$ph$i | 0) & ($e$4$ph$i | 0) > -5) {\n       $$013$i = $t$0 + -1 | 0;\n       $$210$i = $$p$$i + -1 - $e$4$ph$i | 0;\n      } else {\n       $$013$i = $t$0 + -2 | 0;\n       $$210$i = $$p$$i + -1 | 0;\n      }\n      $633 = $fl$1$ & 8;\n      if ($633) {\n       $$114$i = $$013$i;\n       $$311$i = $$210$i;\n       $$pre$phi184$iZ2D = $633;\n       break;\n      }\n      do if ($$lcssa159$i) {\n       $636 = HEAP32[$z$6$i$lcssa + -4 >> 2] | 0;\n       if (!$636) {\n        $j$2$i = 9;\n        break;\n       }\n       if (!(($636 >>> 0) % 10 | 0)) {\n        $i$399$i = 10;\n        $j$1100$i = 0;\n       } else {\n        $j$2$i = 0;\n        break;\n       }\n       while (1) {\n        $i$399$i = $i$399$i * 10 | 0;\n        $641 = $j$1100$i + 1 | 0;\n        if (($636 >>> 0) % ($i$399$i >>> 0) | 0) {\n         $j$2$i = $641;\n         break;\n        } else $j$1100$i = $641;\n       }\n      } else $j$2$i = 9; while (0);\n      $650 = (($z$6$i$lcssa - $482 >> 2) * 9 | 0) + -9 | 0;\n      if (($$013$i | 32 | 0) == 102) {\n       $651 = $650 - $j$2$i | 0;\n       $$21$i = ($651 | 0) < 0 ? 0 : $651;\n       $$114$i = $$013$i;\n       $$311$i = ($$210$i | 0) < ($$21$i | 0) ? $$210$i : $$21$i;\n       $$pre$phi184$iZ2D = 0;\n       break;\n      } else {\n       $655 = $650 + $e$4$ph$i - $j$2$i | 0;\n       $$23$i = ($655 | 0) < 0 ? 0 : $655;\n       $$114$i = $$013$i;\n       $$311$i = ($$210$i | 0) < ($$23$i | 0) ? $$210$i : $$23$i;\n       $$pre$phi184$iZ2D = 0;\n       break;\n      }\n     } else {\n      $$114$i = $t$0;\n      $$311$i = $$p$i;\n      $$pre$phi184$iZ2D = $fl$1$ & 8;\n     } while (0);\n     $658 = $$311$i | $$pre$phi184$iZ2D;\n     $660 = ($658 | 0) != 0 & 1;\n     $662 = ($$114$i | 32 | 0) == 102;\n     if ($662) {\n      $$pn$i = ($e$4$ph$i | 0) > 0 ? $e$4$ph$i : 0;\n      $estr$2$i = 0;\n     } else {\n      $666 = ($e$4$ph$i | 0) < 0 ? $620 : $e$4$ph$i;\n      $669 = _fmt_u($666, (($666 | 0) < 0) << 31 >> 31, $5) | 0;\n      if (($8 - $669 | 0) < 2) {\n       $estr$193$i = $669;\n       while (1) {\n        $673 = $estr$193$i + -1 | 0;\n        HEAP8[$673 >> 0] = 48;\n        if (($8 - $673 | 0) < 2) $estr$193$i = $673; else {\n         $estr$1$lcssa$i = $673;\n         break;\n        }\n       }\n      } else $estr$1$lcssa$i = $669;\n      HEAP8[$estr$1$lcssa$i + -1 >> 0] = ($e$4$ph$i >> 31 & 2) + 43;\n      $683 = $estr$1$lcssa$i + -2 | 0;\n      HEAP8[$683 >> 0] = $$114$i;\n      $$pn$i = $8 - $683 | 0;\n      $estr$2$i = $683;\n     }\n     $688 = $pl$0$i + 1 + $$311$i + $660 + $$pn$i | 0;\n     _pad($f, 32, $w$1, $688, $fl$1$);\n     if (!(HEAP32[$f >> 2] & 32)) ___fwritex($prefix$0$i, $pl$0$i, $f) | 0;\n     _pad($f, 48, $w$1, $688, $fl$1$ ^ 65536);\n     do if ($662) {\n      $r$0$a$8$i = $a$8$ph$i >>> 0 > $$31$i >>> 0 ? $$31$i : $a$8$ph$i;\n      $d$482$i = $r$0$a$8$i;\n      while (1) {\n       $695 = _fmt_u(HEAP32[$d$482$i >> 2] | 0, 0, $13) | 0;\n       do if (($d$482$i | 0) == ($r$0$a$8$i | 0)) {\n        if (($695 | 0) != ($13 | 0)) {\n         $s7$1$i = $695;\n         break;\n        }\n        HEAP8[$15 >> 0] = 48;\n        $s7$1$i = $15;\n       } else {\n        if ($695 >>> 0 > $buf$i >>> 0) $s7$079$i = $695; else {\n         $s7$1$i = $695;\n         break;\n        }\n        while (1) {\n         $698 = $s7$079$i + -1 | 0;\n         HEAP8[$698 >> 0] = 48;\n         if ($698 >>> 0 > $buf$i >>> 0) $s7$079$i = $698; else {\n          $s7$1$i = $698;\n          break;\n         }\n        }\n       } while (0);\n       if (!(HEAP32[$f >> 2] & 32)) ___fwritex($s7$1$i, $14 - $s7$1$i | 0, $f) | 0;\n       $706 = $d$482$i + 4 | 0;\n       if ($706 >>> 0 > $$31$i >>> 0) {\n        $$lcssa339 = $706;\n        break;\n       } else $d$482$i = $706;\n      }\n      do if ($658) {\n       if (HEAP32[$f >> 2] & 32) break;\n       ___fwritex(18309, 1, $f) | 0;\n      } while (0);\n      if (($$311$i | 0) > 0 & $$lcssa339 >>> 0 < $z$6$i$lcssa >>> 0) {\n       $$41276$i = $$311$i;\n       $d$575$i = $$lcssa339;\n       while (1) {\n        $716 = _fmt_u(HEAP32[$d$575$i >> 2] | 0, 0, $13) | 0;\n        if ($716 >>> 0 > $buf$i >>> 0) {\n         $s8$070$i = $716;\n         while (1) {\n          $718 = $s8$070$i + -1 | 0;\n          HEAP8[$718 >> 0] = 48;\n          if ($718 >>> 0 > $buf$i >>> 0) $s8$070$i = $718; else {\n           $s8$0$lcssa$i = $718;\n           break;\n          }\n         }\n        } else $s8$0$lcssa$i = $716;\n        if (!(HEAP32[$f >> 2] & 32)) ___fwritex($s8$0$lcssa$i, ($$41276$i | 0) > 9 ? 9 : $$41276$i, $f) | 0;\n        $d$575$i = $d$575$i + 4 | 0;\n        $726 = $$41276$i + -9 | 0;\n        if (!(($$41276$i | 0) > 9 & $d$575$i >>> 0 < $z$6$i$lcssa >>> 0)) {\n         $$412$lcssa$i = $726;\n         break;\n        } else $$41276$i = $726;\n       }\n      } else $$412$lcssa$i = $$311$i;\n      _pad($f, 48, $$412$lcssa$i + 9 | 0, 9, 0);\n     } else {\n      $z$6$$i = $$lcssa159$i ? $z$6$i$lcssa : $a$8$ph$i + 4 | 0;\n      if (($$311$i | 0) > -1) {\n       $733 = ($$pre$phi184$iZ2D | 0) == 0;\n       $$587$i = $$311$i;\n       $d$686$i = $a$8$ph$i;\n       while (1) {\n        $735 = _fmt_u(HEAP32[$d$686$i >> 2] | 0, 0, $13) | 0;\n        if (($735 | 0) == ($13 | 0)) {\n         HEAP8[$15 >> 0] = 48;\n         $s9$0$i = $15;\n        } else $s9$0$i = $735;\n        do if (($d$686$i | 0) == ($a$8$ph$i | 0)) {\n         $741 = $s9$0$i + 1 | 0;\n         if (!(HEAP32[$f >> 2] & 32)) ___fwritex($s9$0$i, 1, $f) | 0;\n         if ($733 & ($$587$i | 0) < 1) {\n          $s9$2$i = $741;\n          break;\n         }\n         if (HEAP32[$f >> 2] & 32) {\n          $s9$2$i = $741;\n          break;\n         }\n         ___fwritex(18309, 1, $f) | 0;\n         $s9$2$i = $741;\n        } else {\n         if ($s9$0$i >>> 0 > $buf$i >>> 0) $s9$183$i = $s9$0$i; else {\n          $s9$2$i = $s9$0$i;\n          break;\n         }\n         while (1) {\n          $739 = $s9$183$i + -1 | 0;\n          HEAP8[$739 >> 0] = 48;\n          if ($739 >>> 0 > $buf$i >>> 0) $s9$183$i = $739; else {\n           $s9$2$i = $739;\n           break;\n          }\n         }\n        } while (0);\n        $750 = $14 - $s9$2$i | 0;\n        if (!(HEAP32[$f >> 2] & 32)) ___fwritex($s9$2$i, ($$587$i | 0) > ($750 | 0) ? $750 : $$587$i, $f) | 0;\n        $756 = $$587$i - $750 | 0;\n        $d$686$i = $d$686$i + 4 | 0;\n        if (!($d$686$i >>> 0 < $z$6$$i >>> 0 & ($756 | 0) > -1)) {\n         $$5$lcssa$i = $756;\n         break;\n        } else $$587$i = $756;\n       }\n      } else $$5$lcssa$i = $$311$i;\n      _pad($f, 48, $$5$lcssa$i + 18 | 0, 18, 0);\n      if (HEAP32[$f >> 2] & 32) break;\n      ___fwritex($estr$2$i, $8 - $estr$2$i | 0, $f) | 0;\n     } while (0);\n     _pad($f, 32, $w$1, $688, $fl$1$ ^ 8192);\n     $$0$i = ($688 | 0) < ($w$1 | 0) ? $w$1 : $688;\n    } else {\n     $377 = ($t$0 & 32 | 0) != 0;\n     $379 = $$07$i != $$07$i | 0.0 != 0.0;\n     $pl$1$i = $379 ? 0 : $pl$0$i;\n     $381 = $pl$1$i + 3 | 0;\n     _pad($f, 32, $w$1, $381, $175);\n     $382 = HEAP32[$f >> 2] | 0;\n     if (!($382 & 32)) {\n      ___fwritex($prefix$0$i, $pl$1$i, $f) | 0;\n      $386 = HEAP32[$f >> 2] | 0;\n     } else $386 = $382;\n     if (!($386 & 32)) ___fwritex($379 ? ($377 ? 18301 : 18305) : $377 ? 18293 : 18297, 3, $f) | 0;\n     _pad($f, 32, $w$1, $381, $fl$1$ ^ 8192);\n     $$0$i = ($381 | 0) < ($w$1 | 0) ? $w$1 : $381;\n    } while (0);\n    $cnt$0 = $cnt$1;\n    $fmt41 = $$lcssa323;\n    $l$0 = $$0$i;\n    $l10n$0 = $l10n$3;\n    continue L1;\n    break;\n   }\n  default:\n   {\n    $a$2 = $fmt41;\n    $fl$6 = $fl$1$;\n    $p$5 = $p$0;\n    $pl$2 = 0;\n    $prefix$2 = 18257;\n    $z$2 = $1;\n   }\n  } while (0);\n  L313 : do if ((label | 0) == 64) {\n   label = 0;\n   $206 = $arg;\n   $208 = HEAP32[$206 >> 2] | 0;\n   $211 = HEAP32[$206 + 4 >> 2] | 0;\n   $212 = $t$1 & 32;\n   if (($208 | 0) == 0 & ($211 | 0) == 0) {\n    $a$0 = $1;\n    $fl$4 = $fl$3;\n    $p$2 = $p$1;\n    $pl$1 = 0;\n    $prefix$1 = 18257;\n    label = 77;\n   } else {\n    $$012$i = $1;\n    $217 = $208;\n    $224 = $211;\n    while (1) {\n     $223 = $$012$i + -1 | 0;\n     HEAP8[$223 >> 0] = HEAPU8[18241 + ($217 & 15) >> 0] | $212;\n     $217 = _bitshift64Lshr($217 | 0, $224 | 0, 4) | 0;\n     $224 = tempRet0;\n     if (($217 | 0) == 0 & ($224 | 0) == 0) {\n      $$lcssa344 = $223;\n      break;\n     } else $$012$i = $223;\n    }\n    $230 = $arg;\n    if (($fl$3 & 8 | 0) == 0 | (HEAP32[$230 >> 2] | 0) == 0 & (HEAP32[$230 + 4 >> 2] | 0) == 0) {\n     $a$0 = $$lcssa344;\n     $fl$4 = $fl$3;\n     $p$2 = $p$1;\n     $pl$1 = 0;\n     $prefix$1 = 18257;\n     label = 77;\n    } else {\n     $a$0 = $$lcssa344;\n     $fl$4 = $fl$3;\n     $p$2 = $p$1;\n     $pl$1 = 2;\n     $prefix$1 = 18257 + ($t$1 >> 4) | 0;\n     label = 77;\n    }\n   }\n  } else if ((label | 0) == 76) {\n   label = 0;\n   $a$0 = _fmt_u($286, $287, $1) | 0;\n   $fl$4 = $fl$1$;\n   $p$2 = $p$0;\n   $pl$1 = $pl$0;\n   $prefix$1 = $prefix$0;\n   label = 77;\n  } else if ((label | 0) == 82) {\n   label = 0;\n   $320 = _memchr($a$1, 0, $p$0) | 0;\n   $321 = ($320 | 0) == 0;\n   $a$2 = $a$1;\n   $fl$6 = $175;\n   $p$5 = $321 ? $p$0 : $320 - $a$1 | 0;\n   $pl$2 = 0;\n   $prefix$2 = 18257;\n   $z$2 = $321 ? $a$1 + $p$0 | 0 : $320;\n  } else if ((label | 0) == 86) {\n   label = 0;\n   $i$0114 = 0;\n   $l$1113 = 0;\n   $ws$0115 = HEAP32[$arg >> 2] | 0;\n   while (1) {\n    $334 = HEAP32[$ws$0115 >> 2] | 0;\n    if (!$334) {\n     $i$0$lcssa = $i$0114;\n     $l$2 = $l$1113;\n     break;\n    }\n    $336 = _wctomb($mb, $334) | 0;\n    if (($336 | 0) < 0 | $336 >>> 0 > ($p$4198 - $i$0114 | 0) >>> 0) {\n     $i$0$lcssa = $i$0114;\n     $l$2 = $336;\n     break;\n    }\n    $341 = $336 + $i$0114 | 0;\n    if ($p$4198 >>> 0 > $341 >>> 0) {\n     $i$0114 = $341;\n     $l$1113 = $336;\n     $ws$0115 = $ws$0115 + 4 | 0;\n    } else {\n     $i$0$lcssa = $341;\n     $l$2 = $336;\n     break;\n    }\n   }\n   if (($l$2 | 0) < 0) {\n    $$0 = -1;\n    break L1;\n   }\n   _pad($f, 32, $w$1, $i$0$lcssa, $fl$1$);\n   if (!$i$0$lcssa) {\n    $i$0$lcssa200 = 0;\n    label = 98;\n   } else {\n    $i$1125 = 0;\n    $ws$1126 = HEAP32[$arg >> 2] | 0;\n    while (1) {\n     $346 = HEAP32[$ws$1126 >> 2] | 0;\n     if (!$346) {\n      $i$0$lcssa200 = $i$0$lcssa;\n      label = 98;\n      break L313;\n     }\n     $349 = _wctomb($mb, $346) | 0;\n     $i$1125 = $349 + $i$1125 | 0;\n     if (($i$1125 | 0) > ($i$0$lcssa | 0)) {\n      $i$0$lcssa200 = $i$0$lcssa;\n      label = 98;\n      break L313;\n     }\n     if (!(HEAP32[$f >> 2] & 32)) ___fwritex($mb, $349, $f) | 0;\n     if ($i$1125 >>> 0 >= $i$0$lcssa >>> 0) {\n      $i$0$lcssa200 = $i$0$lcssa;\n      label = 98;\n      break;\n     } else $ws$1126 = $ws$1126 + 4 | 0;\n    }\n   }\n  } while (0);\n  if ((label | 0) == 98) {\n   label = 0;\n   _pad($f, 32, $w$1, $i$0$lcssa200, $fl$1$ ^ 8192);\n   $cnt$0 = $cnt$1;\n   $fmt41 = $$lcssa323;\n   $l$0 = ($w$1 | 0) > ($i$0$lcssa200 | 0) ? $w$1 : $i$0$lcssa200;\n   $l10n$0 = $l10n$3;\n   continue;\n  }\n  if ((label | 0) == 77) {\n   label = 0;\n   $$fl$4 = ($p$2 | 0) > -1 ? $fl$4 & -65537 : $fl$4;\n   $291 = $arg;\n   $299 = (HEAP32[$291 >> 2] | 0) != 0 | (HEAP32[$291 + 4 >> 2] | 0) != 0;\n   if (($p$2 | 0) != 0 | $299) {\n    $305 = ($299 & 1 ^ 1) + ($2 - $a$0) | 0;\n    $a$2 = $a$0;\n    $fl$6 = $$fl$4;\n    $p$5 = ($p$2 | 0) > ($305 | 0) ? $p$2 : $305;\n    $pl$2 = $pl$1;\n    $prefix$2 = $prefix$1;\n    $z$2 = $1;\n   } else {\n    $a$2 = $1;\n    $fl$6 = $$fl$4;\n    $p$5 = 0;\n    $pl$2 = $pl$1;\n    $prefix$2 = $prefix$1;\n    $z$2 = $1;\n   }\n  }\n  $771 = $z$2 - $a$2 | 0;\n  $$p$5 = ($p$5 | 0) < ($771 | 0) ? $771 : $p$5;\n  $773 = $pl$2 + $$p$5 | 0;\n  $w$2 = ($w$1 | 0) < ($773 | 0) ? $773 : $w$1;\n  _pad($f, 32, $w$2, $773, $fl$6);\n  if (!(HEAP32[$f >> 2] & 32)) ___fwritex($prefix$2, $pl$2, $f) | 0;\n  _pad($f, 48, $w$2, $773, $fl$6 ^ 65536);\n  _pad($f, 48, $$p$5, $771, 0);\n  if (!(HEAP32[$f >> 2] & 32)) ___fwritex($a$2, $771, $f) | 0;\n  _pad($f, 32, $w$2, $773, $fl$6 ^ 8192);\n  $cnt$0 = $cnt$1;\n  $fmt41 = $$lcssa323;\n  $l$0 = $w$2;\n  $l10n$0 = $l10n$3;\n }\n L348 : do if ((label | 0) == 245) if (!$f) if (!$l10n$0$lcssa) $$0 = 0; else {\n  $i$2100 = 1;\n  while (1) {\n   $786 = HEAP32[$nl_type + ($i$2100 << 2) >> 2] | 0;\n   if (!$786) {\n    $i$2100$lcssa = $i$2100;\n    break;\n   }\n   _pop_arg($nl_arg + ($i$2100 << 3) | 0, $786, $ap);\n   $i$2100 = $i$2100 + 1 | 0;\n   if (($i$2100 | 0) >= 10) {\n    $$0 = 1;\n    break L348;\n   }\n  }\n  if (($i$2100$lcssa | 0) < 10) {\n   $i$398 = $i$2100$lcssa;\n   while (1) {\n    if (HEAP32[$nl_type + ($i$398 << 2) >> 2] | 0) {\n     $$0 = -1;\n     break L348;\n    }\n    $i$398 = $i$398 + 1 | 0;\n    if (($i$398 | 0) >= 10) {\n     $$0 = 1;\n     break;\n    }\n   }\n  } else $$0 = 1;\n } else $$0 = $cnt$1$lcssa; while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\nfunction __ZN10__cxxabiv112_GLOBAL__N_118parse_expr_primaryINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) {\n $first = $first | 0;\n $last = $last | 0;\n $db = $db | 0;\n var $$0 = 0, $$0$i = 0, $$0$i$i$i = 0, $$0$i$i$i$i = 0, $$0$i$i$i$i46 = 0, $$0$i$i$i$i62 = 0, $$0$i$i$i26 = 0, $$0$i$i117 = 0, $$0$i49 = 0, $$01$i$i$i122 = 0, $$01$i$i$i41126 = 0, $$01$i$i$i57130 = 0, $$1$i = 0, $$lcssa = 0, $$lcssa154 = 0, $$lcssa155 = 0, $$lcssa157 = 0, $$lcssa158 = 0, $$lcssa160 = 0, $$lcssa161 = 0, $0 = 0, $1 = 0, $10 = 0, $101 = 0, $102 = 0, $104 = 0, $105 = 0, $107 = 0, $108 = 0, $11 = 0, $110 = 0, $111 = 0, $113 = 0, $114 = 0, $116 = 0, $117 = 0, $119 = 0, $12 = 0, $120 = 0, $122 = 0, $123 = 0, $125 = 0, $126 = 0, $128 = 0, $129 = 0, $13 = 0, $131 = 0, $132 = 0, $134 = 0, $138 = 0, $14 = 0, $141 = 0, $145 = 0, $148 = 0, $148$phi = 0, $149 = 0, $15 = 0, $156 = 0, $157 = 0, $159 = 0, $16 = 0, $163 = 0, $165 = 0, $17 = 0, $171 = 0, $173 = 0, $174 = 0, $176 = 0, $18 = 0, $183 = 0, $184 = 0, $185 = 0, $186 = 0, $19 = 0, $190 = 0, $192 = 0, $195 = 0, $196 = 0, $2 = 0, $20 = 0, $200 = 0, $204 = 0, $207 = 0, $21 = 0, $211 = 0, $214 = 0, $214$phi = 0, $215 = 0, $22 = 0, $222 = 0, $223 = 0, $225 = 0, $229 = 0, $23 = 0, $231 = 0, $236 = 0, $238 = 0, $239 = 0, $24 = 0, $241 = 0, $248 = 0, $249 = 0, $25 = 0, $250 = 0, $251 = 0, $255 = 0, $257 = 0, $260 = 0, $261 = 0, $265 = 0, $269 = 0, $272 = 0, $276 = 0, $279 = 0, $279$phi = 0, $280 = 0, $287 = 0, $288 = 0, $290 = 0, $294 = 0, $296 = 0, $3 = 0, $301 = 0, $303 = 0, $304 = 0, $306 = 0, $31 = 0, $313 = 0, $314 = 0, $315 = 0, $316 = 0, $320 = 0, $322 = 0, $325 = 0, $326 = 0, $333 = 0, $334 = 0, $34 = 0, $340 = 0, $346 = 0, $35 = 0, $354 = 0, $356 = 0, $357 = 0, $360 = 0, $365 = 0, $372 = 0, $373 = 0, $382 = 0, $384 = 0, $394 = 0, $4 = 0, $43 = 0, $44 = 0, $46 = 0, $5 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $6 = 0, $60 = 0, $62 = 0, $65 = 0, $66 = 0, $69 = 0, $7 = 0, $70 = 0, $72 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $86 = 0, $88 = 0, $9 = 0, $91 = 0, $92 = 0, $95 = 0, $96 = 0, $98 = 0, $99 = 0, $__p$0$i$i116 = 0, $__p$0$ph$i$i = 0, $e$0$i124 = 0, $e$0$i124$lcssa153 = 0, $e$0$i33128 = 0, $e$0$i33128$lcssa156 = 0, $e$0$i52132 = 0, $e$0$i52132$lcssa159 = 0, $n$0120 = 0, $n$0120$lcssa = 0, $num$i51 = 0, $t$0$i125 = 0, $t$0$i34129 = 0, $t$0$i53133 = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, $vararg_buffer4 = 0, dest = 0, sp = 0, stop = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 480 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer4 = sp + 72 | 0;\n $vararg_buffer1 = sp + 48 | 0;\n $vararg_buffer = sp + 24 | 0;\n $0 = sp;\n $num$i51 = sp + 432 | 0;\n $1 = sp + 408 | 0;\n $2 = sp + 396 | 0;\n $3 = sp + 384 | 0;\n $4 = sp + 360 | 0;\n $5 = sp + 336 | 0;\n $6 = sp + 320 | 0;\n $7 = sp + 308 | 0;\n $8 = sp + 296 | 0;\n $9 = sp + 284 | 0;\n $10 = sp + 272 | 0;\n $11 = sp + 260 | 0;\n $12 = sp + 248 | 0;\n $13 = sp + 236 | 0;\n $14 = sp + 224 | 0;\n $15 = sp + 212 | 0;\n $16 = sp + 200 | 0;\n $17 = sp + 188 | 0;\n $18 = sp + 176 | 0;\n $19 = sp + 152 | 0;\n $20 = sp + 140 | 0;\n $21 = sp + 128 | 0;\n $22 = sp + 116 | 0;\n $23 = sp + 104 | 0;\n $24 = sp + 92 | 0;\n $25 = $last;\n L1 : do if (($25 - $first | 0) > 3) if ((HEAP8[$first >> 0] | 0) == 76) {\n  $31 = $first + 1 | 0;\n  do switch (HEAP8[$31 >> 0] | 0) {\n  case 84:\n   {\n    $$0 = $first;\n    break L1;\n    break;\n   }\n  case 119:\n   {\n    $34 = $first + 2 | 0;\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($3, 13738, 7);\n    $35 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($34, $last, $3, $db) | 0;\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);\n    $$0 = ($35 | 0) == ($34 | 0) ? $first : $35;\n    break L1;\n    break;\n   }\n  case 98:\n   {\n    if ((HEAP8[$first + 3 >> 0] | 0) != 69) {\n     $$0 = $first;\n     break L1;\n    }\n    switch (HEAP8[$first + 2 >> 0] | 0) {\n    case 48:\n     {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj6EEERAT__Kc($4, 13746);\n      $43 = $db + 4 | 0;\n      $44 = HEAP32[$43 >> 2] | 0;\n      $46 = HEAP32[$db + 8 >> 2] | 0;\n      if ($44 >>> 0 < $46 >>> 0) {\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($44, $4);\n       HEAP32[$43 >> 2] = (HEAP32[$43 >> 2] | 0) + 24;\n      } else {\n       $53 = HEAP32[$db >> 2] | 0;\n       $54 = $44 - $53 | 0;\n       $55 = ($54 | 0) / 24 | 0;\n       $56 = $55 + 1 | 0;\n       if (($54 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n       $60 = ($46 - $53 | 0) / 24 | 0;\n       if ($60 >>> 0 < 1073741823) {\n        $62 = $60 << 1;\n        $$0$i$i$i = $62 >>> 0 < $56 >>> 0 ? $56 : $62;\n       } else $$0$i$i$i = 2147483647;\n       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($0, $$0$i$i$i, $55, $db + 12 | 0);\n       $65 = $0 + 8 | 0;\n       $66 = HEAP32[$65 >> 2] | 0;\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($66, $4);\n       HEAP32[$65 >> 2] = $66 + 24;\n       __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $0);\n       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($0);\n      }\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($4);\n      $$0 = $first + 4 | 0;\n      break L1;\n      break;\n     }\n    case 49:\n     {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj5EEERAT__Kc($5, 13752);\n      $69 = $db + 4 | 0;\n      $70 = HEAP32[$69 >> 2] | 0;\n      $72 = HEAP32[$db + 8 >> 2] | 0;\n      if ($70 >>> 0 < $72 >>> 0) {\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($70, $5);\n       HEAP32[$69 >> 2] = (HEAP32[$69 >> 2] | 0) + 24;\n      } else {\n       $79 = HEAP32[$db >> 2] | 0;\n       $80 = $70 - $79 | 0;\n       $81 = ($80 | 0) / 24 | 0;\n       $82 = $81 + 1 | 0;\n       if (($80 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n       $86 = ($72 - $79 | 0) / 24 | 0;\n       if ($86 >>> 0 < 1073741823) {\n        $88 = $86 << 1;\n        $$0$i$i$i26 = $88 >>> 0 < $82 >>> 0 ? $82 : $88;\n       } else $$0$i$i$i26 = 2147483647;\n       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($0, $$0$i$i$i26, $81, $db + 12 | 0);\n       $91 = $0 + 8 | 0;\n       $92 = HEAP32[$91 >> 2] | 0;\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($92, $5);\n       HEAP32[$91 >> 2] = $92 + 24;\n       __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $0);\n       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($0);\n      }\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($5);\n      $$0 = $first + 4 | 0;\n      break L1;\n      break;\n     }\n    default:\n     {\n      $$0 = $first;\n      break L1;\n     }\n    }\n    break;\n   }\n  case 99:\n   {\n    $95 = $first + 2 | 0;\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($6, 13757, 4);\n    $96 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($95, $last, $6, $db) | 0;\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($6);\n    $$0 = ($96 | 0) == ($95 | 0) ? $first : $96;\n    break L1;\n    break;\n   }\n  case 97:\n   {\n    $98 = $first + 2 | 0;\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($7, 13762, 11);\n    $99 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($98, $last, $7, $db) | 0;\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($7);\n    $$0 = ($99 | 0) == ($98 | 0) ? $first : $99;\n    break L1;\n    break;\n   }\n  case 104:\n   {\n    $101 = $first + 2 | 0;\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($8, 13774, 13);\n    $102 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($101, $last, $8, $db) | 0;\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($8);\n    $$0 = ($102 | 0) == ($101 | 0) ? $first : $102;\n    break L1;\n    break;\n   }\n  case 115:\n   {\n    $104 = $first + 2 | 0;\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($9, 13788, 5);\n    $105 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($104, $last, $9, $db) | 0;\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($9);\n    $$0 = ($105 | 0) == ($104 | 0) ? $first : $105;\n    break L1;\n    break;\n   }\n  case 116:\n   {\n    $107 = $first + 2 | 0;\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($10, 13794, 14);\n    $108 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($107, $last, $10, $db) | 0;\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($10);\n    $$0 = ($108 | 0) == ($107 | 0) ? $first : $108;\n    break L1;\n    break;\n   }\n  case 105:\n   {\n    $110 = $first + 2 | 0;\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($11, 13809, 0);\n    $111 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($110, $last, $11, $db) | 0;\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($11);\n    $$0 = ($111 | 0) == ($110 | 0) ? $first : $111;\n    break L1;\n    break;\n   }\n  case 106:\n   {\n    $113 = $first + 2 | 0;\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($12, 13810, 1);\n    $114 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($113, $last, $12, $db) | 0;\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($12);\n    $$0 = ($114 | 0) == ($113 | 0) ? $first : $114;\n    break L1;\n    break;\n   }\n  case 108:\n   {\n    $116 = $first + 2 | 0;\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($13, 13812, 1);\n    $117 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($116, $last, $13, $db) | 0;\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($13);\n    $$0 = ($117 | 0) == ($116 | 0) ? $first : $117;\n    break L1;\n    break;\n   }\n  case 109:\n   {\n    $119 = $first + 2 | 0;\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($14, 13814, 2);\n    $120 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($119, $last, $14, $db) | 0;\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($14);\n    $$0 = ($120 | 0) == ($119 | 0) ? $first : $120;\n    break L1;\n    break;\n   }\n  case 120:\n   {\n    $122 = $first + 2 | 0;\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($15, 13817, 2);\n    $123 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($122, $last, $15, $db) | 0;\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($15);\n    $$0 = ($123 | 0) == ($122 | 0) ? $first : $123;\n    break L1;\n    break;\n   }\n  case 121:\n   {\n    $125 = $first + 2 | 0;\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($16, 13820, 3);\n    $126 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($125, $last, $16, $db) | 0;\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($16);\n    $$0 = ($126 | 0) == ($125 | 0) ? $first : $126;\n    break L1;\n    break;\n   }\n  case 110:\n   {\n    $128 = $first + 2 | 0;\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($17, 13824, 8);\n    $129 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($128, $last, $17, $db) | 0;\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($17);\n    $$0 = ($129 | 0) == ($128 | 0) ? $first : $129;\n    break L1;\n    break;\n   }\n  case 111:\n   {\n    $131 = $first + 2 | 0;\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($18, 13833, 17);\n    $132 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($131, $last, $18, $db) | 0;\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($18);\n    $$0 = ($132 | 0) == ($131 | 0) ? $first : $132;\n    break L1;\n    break;\n   }\n  case 102:\n   {\n    $134 = $first + 2 | 0;\n    L67 : do if (($25 - $134 | 0) >>> 0 > 8) {\n     $138 = $first + 10 | 0;\n     $141 = HEAP8[$134 >> 0] | 0;\n     $148 = $first;\n     $e$0$i124 = $0;\n     $t$0$i125 = $134;\n     while (1) {\n      if (!(_isxdigit($141 << 24 >> 24) | 0)) {\n       $$0$i = $134;\n       break L67;\n      }\n      $145 = HEAP8[$t$0$i125 >> 0] | 0;\n      $149 = HEAP8[$148 + 3 >> 0] | 0;\n      HEAP8[$e$0$i124 >> 0] = ((($149 << 24 >> 24) + -48 | 0) >>> 0 < 10 ? 208 : 169) + ($149 & 255) + ((($145 + -48 | 0) >>> 0 < 10 ? 0 : 9) + $145 << 4);\n      $156 = $t$0$i125 + 2 | 0;\n      $157 = $e$0$i124 + 1 | 0;\n      $159 = HEAP8[$156 >> 0] | 0;\n      if (($156 | 0) == ($138 | 0)) {\n       $$lcssa154 = $157;\n       $$lcssa155 = $159;\n       $e$0$i124$lcssa153 = $e$0$i124;\n       break;\n      } else {\n       $148$phi = $t$0$i125;\n       $141 = $159;\n       $e$0$i124 = $157;\n       $t$0$i125 = $156;\n       $148 = $148$phi;\n      }\n     }\n     if ($$lcssa155 << 24 >> 24 == 69) {\n      if (($0 | 0) != ($$lcssa154 | 0) & $0 >>> 0 < $e$0$i124$lcssa153 >>> 0) {\n       $$01$i$i$i122 = $0;\n       $165 = $e$0$i124$lcssa153;\n       do {\n        $163 = HEAP8[$$01$i$i$i122 >> 0] | 0;\n        HEAP8[$$01$i$i$i122 >> 0] = HEAP8[$165 >> 0] | 0;\n        HEAP8[$165 >> 0] = $163;\n        $$01$i$i$i122 = $$01$i$i$i122 + 1 | 0;\n        $165 = $165 + -1 | 0;\n       } while ($$01$i$i$i122 >>> 0 < $165 >>> 0);\n      }\n      dest = $num$i51;\n      stop = dest + 24 | 0;\n      do {\n       HEAP8[dest >> 0] = 0;\n       dest = dest + 1 | 0;\n      } while ((dest | 0) < (stop | 0));\n      HEAPF64[$vararg_buffer >> 3] = +HEAPF32[$0 >> 2];\n      $171 = _snprintf($num$i51, 24, 13851, $vararg_buffer) | 0;\n      if ($171 >>> 0 > 23) $$0$i = $134; else {\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($2, $num$i51, $171);\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($1, $2);\n       $173 = $db + 4 | 0;\n       $174 = HEAP32[$173 >> 2] | 0;\n       $176 = HEAP32[$db + 8 >> 2] | 0;\n       if ($174 >>> 0 < $176 >>> 0) {\n        __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($174, $1);\n        HEAP32[$173 >> 2] = (HEAP32[$173 >> 2] | 0) + 24;\n       } else {\n        $183 = HEAP32[$db >> 2] | 0;\n        $184 = $174 - $183 | 0;\n        $185 = ($184 | 0) / 24 | 0;\n        $186 = $185 + 1 | 0;\n        if (($184 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n        $190 = ($176 - $183 | 0) / 24 | 0;\n        if ($190 >>> 0 < 1073741823) {\n         $192 = $190 << 1;\n         $$0$i$i$i$i = $192 >>> 0 < $186 >>> 0 ? $186 : $192;\n        } else $$0$i$i$i$i = 2147483647;\n        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($vararg_buffer, $$0$i$i$i$i, $185, $db + 12 | 0);\n        $195 = $vararg_buffer + 8 | 0;\n        $196 = HEAP32[$195 >> 2] | 0;\n        __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($196, $1);\n        HEAP32[$195 >> 2] = $196 + 24;\n        __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $vararg_buffer);\n        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($vararg_buffer);\n       }\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1);\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);\n       $$0$i = $first + 11 | 0;\n      }\n     } else $$0$i = $134;\n    } else $$0$i = $134; while (0);\n    $$0 = ($$0$i | 0) == ($134 | 0) ? $first : $$0$i;\n    break L1;\n    break;\n   }\n  case 100:\n   {\n    $200 = $first + 2 | 0;\n    L91 : do if (($25 - $200 | 0) >>> 0 > 16) {\n     $204 = $first + 18 | 0;\n     $207 = HEAP8[$200 >> 0] | 0;\n     $214 = $first;\n     $e$0$i33128 = $0;\n     $t$0$i34129 = $200;\n     while (1) {\n      if (!(_isxdigit($207 << 24 >> 24) | 0)) {\n       $$0$i49 = $200;\n       break L91;\n      }\n      $211 = HEAP8[$t$0$i34129 >> 0] | 0;\n      $215 = HEAP8[$214 + 3 >> 0] | 0;\n      HEAP8[$e$0$i33128 >> 0] = ((($215 << 24 >> 24) + -48 | 0) >>> 0 < 10 ? 208 : 169) + ($215 & 255) + ((($211 + -48 | 0) >>> 0 < 10 ? 0 : 9) + $211 << 4);\n      $222 = $t$0$i34129 + 2 | 0;\n      $223 = $e$0$i33128 + 1 | 0;\n      $225 = HEAP8[$222 >> 0] | 0;\n      if (($222 | 0) == ($204 | 0)) {\n       $$lcssa157 = $223;\n       $$lcssa158 = $225;\n       $e$0$i33128$lcssa156 = $e$0$i33128;\n       break;\n      } else {\n       $214$phi = $t$0$i34129;\n       $207 = $225;\n       $e$0$i33128 = $223;\n       $t$0$i34129 = $222;\n       $214 = $214$phi;\n      }\n     }\n     if ($$lcssa158 << 24 >> 24 == 69) {\n      if (($0 | 0) != ($$lcssa157 | 0) & $0 >>> 0 < $e$0$i33128$lcssa156 >>> 0) {\n       $$01$i$i$i41126 = $0;\n       $231 = $e$0$i33128$lcssa156;\n       do {\n        $229 = HEAP8[$$01$i$i$i41126 >> 0] | 0;\n        HEAP8[$$01$i$i$i41126 >> 0] = HEAP8[$231 >> 0] | 0;\n        HEAP8[$231 >> 0] = $229;\n        $$01$i$i$i41126 = $$01$i$i$i41126 + 1 | 0;\n        $231 = $231 + -1 | 0;\n       } while ($$01$i$i$i41126 >>> 0 < $231 >>> 0);\n      }\n      dest = $num$i51;\n      stop = dest + 32 | 0;\n      do {\n       HEAP8[dest >> 0] = 0;\n       dest = dest + 1 | 0;\n      } while ((dest | 0) < (stop | 0));\n      HEAPF64[$vararg_buffer1 >> 3] = +HEAPF64[$0 >> 3];\n      $236 = _snprintf($num$i51, 32, 13855, $vararg_buffer1) | 0;\n      if ($236 >>> 0 > 31) $$0$i49 = $200; else {\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($2, $num$i51, $236);\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($1, $2);\n       $238 = $db + 4 | 0;\n       $239 = HEAP32[$238 >> 2] | 0;\n       $241 = HEAP32[$db + 8 >> 2] | 0;\n       if ($239 >>> 0 < $241 >>> 0) {\n        __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($239, $1);\n        HEAP32[$238 >> 2] = (HEAP32[$238 >> 2] | 0) + 24;\n       } else {\n        $248 = HEAP32[$db >> 2] | 0;\n        $249 = $239 - $248 | 0;\n        $250 = ($249 | 0) / 24 | 0;\n        $251 = $250 + 1 | 0;\n        if (($249 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n        $255 = ($241 - $248 | 0) / 24 | 0;\n        if ($255 >>> 0 < 1073741823) {\n         $257 = $255 << 1;\n         $$0$i$i$i$i46 = $257 >>> 0 < $251 >>> 0 ? $251 : $257;\n        } else $$0$i$i$i$i46 = 2147483647;\n        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($vararg_buffer1, $$0$i$i$i$i46, $250, $db + 12 | 0);\n        $260 = $vararg_buffer1 + 8 | 0;\n        $261 = HEAP32[$260 >> 2] | 0;\n        __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($261, $1);\n        HEAP32[$260 >> 2] = $261 + 24;\n        __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $vararg_buffer1);\n        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($vararg_buffer1);\n       }\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1);\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);\n       $$0$i49 = $first + 19 | 0;\n      }\n     } else $$0$i49 = $200;\n    } else $$0$i49 = $200; while (0);\n    $$0 = ($$0$i49 | 0) == ($200 | 0) ? $first : $$0$i49;\n    break L1;\n    break;\n   }\n  case 101:\n   {\n    $265 = $first + 2 | 0;\n    L115 : do if (($25 - $265 | 0) >>> 0 > 20) {\n     $269 = $first + 22 | 0;\n     $272 = HEAP8[$265 >> 0] | 0;\n     $279 = $first;\n     $e$0$i52132 = $0;\n     $t$0$i53133 = $265;\n     while (1) {\n      if (!(_isxdigit($272 << 24 >> 24) | 0)) {\n       $$1$i = $265;\n       break L115;\n      }\n      $276 = HEAP8[$t$0$i53133 >> 0] | 0;\n      $280 = HEAP8[$279 + 3 >> 0] | 0;\n      HEAP8[$e$0$i52132 >> 0] = ((($280 << 24 >> 24) + -48 | 0) >>> 0 < 10 ? 208 : 169) + ($280 & 255) + ((($276 + -48 | 0) >>> 0 < 10 ? 0 : 9) + $276 << 4);\n      $287 = $t$0$i53133 + 2 | 0;\n      $288 = $e$0$i52132 + 1 | 0;\n      $290 = HEAP8[$287 >> 0] | 0;\n      if (($287 | 0) == ($269 | 0)) {\n       $$lcssa160 = $288;\n       $$lcssa161 = $290;\n       $e$0$i52132$lcssa159 = $e$0$i52132;\n       break;\n      } else {\n       $279$phi = $t$0$i53133;\n       $272 = $290;\n       $e$0$i52132 = $288;\n       $t$0$i53133 = $287;\n       $279 = $279$phi;\n      }\n     }\n     if ($$lcssa161 << 24 >> 24 == 69) {\n      if (($0 | 0) != ($$lcssa160 | 0) & $0 >>> 0 < $e$0$i52132$lcssa159 >>> 0) {\n       $$01$i$i$i57130 = $0;\n       $296 = $e$0$i52132$lcssa159;\n       do {\n        $294 = HEAP8[$$01$i$i$i57130 >> 0] | 0;\n        HEAP8[$$01$i$i$i57130 >> 0] = HEAP8[$296 >> 0] | 0;\n        HEAP8[$296 >> 0] = $294;\n        $$01$i$i$i57130 = $$01$i$i$i57130 + 1 | 0;\n        $296 = $296 + -1 | 0;\n       } while ($$01$i$i$i57130 >>> 0 < $296 >>> 0);\n      }\n      dest = $num$i51;\n      stop = dest + 40 | 0;\n      do {\n       HEAP8[dest >> 0] = 0;\n       dest = dest + 1 | 0;\n      } while ((dest | 0) < (stop | 0));\n      HEAPF64[$vararg_buffer4 >> 3] = +HEAPF64[$0 >> 3];\n      $301 = _snprintf($num$i51, 40, 13858, $vararg_buffer4) | 0;\n      if ($301 >>> 0 > 39) {\n       $$1$i = $265;\n       break;\n      }\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($2, $num$i51, $301);\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($1, $2);\n      $303 = $db + 4 | 0;\n      $304 = HEAP32[$303 >> 2] | 0;\n      $306 = HEAP32[$db + 8 >> 2] | 0;\n      if ($304 >>> 0 < $306 >>> 0) {\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($304, $1);\n       HEAP32[$303 >> 2] = (HEAP32[$303 >> 2] | 0) + 24;\n      } else {\n       $313 = HEAP32[$db >> 2] | 0;\n       $314 = $304 - $313 | 0;\n       $315 = ($314 | 0) / 24 | 0;\n       $316 = $315 + 1 | 0;\n       if (($314 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n       $320 = ($306 - $313 | 0) / 24 | 0;\n       if ($320 >>> 0 < 1073741823) {\n        $322 = $320 << 1;\n        $$0$i$i$i$i62 = $322 >>> 0 < $316 >>> 0 ? $316 : $322;\n       } else $$0$i$i$i$i62 = 2147483647;\n       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($vararg_buffer4, $$0$i$i$i$i62, $315, $db + 12 | 0);\n       $325 = $vararg_buffer4 + 8 | 0;\n       $326 = HEAP32[$325 >> 2] | 0;\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($326, $1);\n       HEAP32[$325 >> 2] = $326 + 24;\n       __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $vararg_buffer4);\n       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($vararg_buffer4);\n      }\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1);\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);\n      $$1$i = $first + 23 | 0;\n     } else $$1$i = $265;\n    } else $$1$i = $265; while (0);\n    $$0 = ($$1$i | 0) == ($265 | 0) ? $first : $$1$i;\n    break L1;\n    break;\n   }\n  case 95:\n   {\n    if ((HEAP8[$first + 2 >> 0] | 0) != 90) {\n     $$0 = $first;\n     break L1;\n    }\n    $333 = $first + 3 | 0;\n    $334 = __ZN10__cxxabiv112_GLOBAL__N_114parse_encodingINS0_2DbEEEPKcS4_S4_RT_($333, $last, $db) | 0;\n    if (($334 | 0) == ($333 | 0) | ($334 | 0) == ($last | 0)) {\n     $$0 = $first;\n     break L1;\n    }\n    STACKTOP = sp;\n    return ((HEAP8[$334 >> 0] | 0) == 69 ? $334 + 1 | 0 : $first) | 0;\n   }\n  default:\n   {\n    $340 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($31, $last, $db) | 0;\n    if (($340 | 0) == ($31 | 0) | ($340 | 0) == ($last | 0)) {\n     $$0 = $first;\n     break L1;\n    }\n    if ((HEAP8[$340 >> 0] | 0) == 69) {\n     $$0 = $340 + 1 | 0;\n     break L1;\n    }\n    if (($340 | 0) == ($last | 0)) {\n     $$0 = $first;\n     break L1;\n    } else $n$0120 = $340;\n    while (1) {\n     $346 = HEAP8[$n$0120 >> 0] | 0;\n     if ((($346 << 24 >> 24) + -48 | 0) >>> 0 >= 10) {\n      $$lcssa = $346;\n      $n$0120$lcssa = $n$0120;\n      break;\n     }\n     $n$0120 = $n$0120 + 1 | 0;\n     if (($n$0120 | 0) == ($last | 0)) {\n      $$0 = $first;\n      break L1;\n     }\n    }\n    if (!(($n$0120$lcssa | 0) != ($340 | 0) & $$lcssa << 24 >> 24 == 69)) {\n     $$0 = $first;\n     break L1;\n    }\n    $354 = HEAP32[$db + 4 >> 2] | 0;\n    if ((HEAP32[$db >> 2] | 0) == ($354 | 0)) {\n     $$0 = $first;\n     break L1;\n    }\n    $356 = $354 + -24 | 0;\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($23, $356);\n    $357 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($23, 0, 12688) | 0;\n    HEAP32[$22 >> 2] = HEAP32[$357 >> 2];\n    HEAP32[$22 + 4 >> 2] = HEAP32[$357 + 4 >> 2];\n    HEAP32[$22 + 8 >> 2] = HEAP32[$357 + 8 >> 2];\n    HEAP32[$357 >> 2] = 0;\n    HEAP32[$357 + 4 >> 2] = 0;\n    HEAP32[$357 + 8 >> 2] = 0;\n    $360 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($22, 12593) | 0;\n    HEAP32[$21 >> 2] = HEAP32[$360 >> 2];\n    HEAP32[$21 + 4 >> 2] = HEAP32[$360 + 4 >> 2];\n    HEAP32[$21 + 8 >> 2] = HEAP32[$360 + 8 >> 2];\n    HEAP32[$360 >> 2] = 0;\n    HEAP32[$360 + 4 >> 2] = 0;\n    HEAP32[$360 + 8 >> 2] = 0;\n    $365 = $n$0120$lcssa - $340 | 0;\n    if ($365 >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv($24);\n    if ($365 >>> 0 < 11) {\n     HEAP8[$24 >> 0] = $365 << 1;\n     $__p$0$ph$i$i = $24 + 1 | 0;\n    } else {\n     $372 = $365 + 16 & -16;\n     $373 = _malloc($372) | 0;\n     HEAP32[$24 + 8 >> 2] = $373;\n     HEAP32[$24 >> 2] = $372 | 1;\n     HEAP32[$24 + 4 >> 2] = $365;\n     $__p$0$ph$i$i = $373;\n    }\n    if (($340 | 0) != ($n$0120$lcssa | 0)) {\n     $$0$i$i117 = $340;\n     $__p$0$i$i116 = $__p$0$ph$i$i;\n     while (1) {\n      HEAP8[$__p$0$i$i116 >> 0] = HEAP8[$$0$i$i117 >> 0] | 0;\n      $$0$i$i117 = $$0$i$i117 + 1 | 0;\n      if (($$0$i$i117 | 0) == ($n$0120$lcssa | 0)) break; else $__p$0$i$i116 = $__p$0$i$i116 + 1 | 0;\n     }\n    }\n    HEAP8[$__p$0$ph$i$i + $365 >> 0] = 0;\n    $382 = HEAP8[$24 >> 0] | 0;\n    $384 = ($382 & 1) == 0;\n    $394 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($21, $384 ? $24 + 1 | 0 : HEAP32[$24 + 8 >> 2] | 0, $384 ? ($382 & 255) >>> 1 : HEAP32[$24 + 4 >> 2] | 0) | 0;\n    HEAP32[$20 >> 2] = HEAP32[$394 >> 2];\n    HEAP32[$20 + 4 >> 2] = HEAP32[$394 + 4 >> 2];\n    HEAP32[$20 + 8 >> 2] = HEAP32[$394 + 8 >> 2];\n    HEAP32[$394 >> 2] = 0;\n    HEAP32[$394 + 4 >> 2] = 0;\n    HEAP32[$394 + 8 >> 2] = 0;\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($19, $20);\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($356, $19);\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($19);\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($20);\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($24);\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($21);\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($22);\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($23);\n    $$0 = $n$0120$lcssa + 1 | 0;\n    break L1;\n   }\n  } while (0);\n } else $$0 = $first; else $$0 = $first; while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_114parse_encodingINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) {\n $first = $first | 0;\n $last = $last | 0;\n $db = $db | 0;\n var $$0$i = 0, $$24$ph = 0, $$7 = 0, $$in = 0, $$in109 = 0, $$lcssa150 = 0, $$lcssa151 = 0, $$lcssa156 = 0, $$ph96 = 0, $$pre$i$i$i$i = 0, $0 = 0, $1 = 0, $10 = 0, $101 = 0, $111 = 0, $118 = 0, $120 = 0, $123 = 0, $127 = 0, $13 = 0, $130 = 0, $135 = 0, $136 = 0, $139 = 0, $140 = 0, $142 = 0, $143 = 0, $152 = 0, $155 = 0, $160 = 0, $162 = 0, $166 = 0, $171 = 0, $175 = 0, $176 = 0, $18 = 0, $180 = 0, $183 = 0, $184 = 0, $188 = 0, $191 = 0, $193 = 0, $195 = 0, $199 = 0, $2 = 0, $203 = 0, $204 = 0, $206 = 0, $207 = 0, $209 = 0, $21 = 0, $215 = 0, $22 = 0, $226 = 0, $228 = 0, $240 = 0, $252 = 0, $255 = 0, $257 = 0, $26 = 0, $264 = 0, $267 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0, $277 = 0, $281 = 0, $284 = 0, $287 = 0, $29 = 0, $3 = 0, $30 = 0, $303 = 0, $312 = 0, $313 = 0, $314 = 0, $315 = 0, $318 = 0, $320 = 0, $331 = 0, $335 = 0, $336 = 0, $337 = 0, $338 = 0, $339 = 0, $34 = 0, $340 = 0, $341 = 0, $342 = 0, $345 = 0, $347 = 0, $349 = 0, $350 = 0, $356 = 0, $361 = 0, $37 = 0, $371 = 0, $373 = 0, $38 = 0, $382 = 0, $383 = 0, $384 = 0, $385 = 0, $389 = 0, $392 = 0, $398 = 0, $4 = 0, $402 = 0, $404 = 0, $405 = 0, $411 = 0, $413 = 0, $414 = 0, $42 = 0, $434 = 0, $436 = 0, $446 = 0, $45 = 0, $46 = 0, $50 = 0, $53 = 0, $54 = 0, $56 = 0, $58 = 0, $6 = 0, $62 = 0, $65 = 0, $66 = 0, $68 = 0, $7 = 0, $73 = 0, $74 = 0, $76 = 0, $77 = 0, $8 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $9 = 0, $90 = 0, $91 = 0, $94 = 0, $99 = 0, $first_arg$0$off0$ph = 0, $first_arg$3$off0$ph = 0, $k$0121 = 0, $k2$0122 = 0, $left$i = 0, $phitmp$i$i$i$i$i$i = 0, $phitmp$i2$i$i$i$i$i = 0, $ret1 = 0, $ret2 = 0, $t$0 = 0, $t$1 = 0, $t$1$ph = 0, $t$2 = 0, $tmp = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 112 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $left$i = sp + 96 | 0;\n $0 = sp + 84 | 0;\n $1 = sp + 72 | 0;\n $2 = sp + 60 | 0;\n $3 = sp + 48 | 0;\n $ret2 = sp + 36 | 0;\n $ret1 = sp + 24 | 0;\n $tmp = sp + 12 | 0;\n $4 = sp;\n L1 : do if (($first | 0) == ($last | 0)) $$7 = $first; else {\n  $6 = $db + 56 | 0;\n  $7 = HEAP32[$6 >> 2] | 0;\n  $8 = $7 + 1 | 0;\n  HEAP32[$6 >> 2] = $8;\n  $9 = $db + 61 | 0;\n  $10 = HEAP8[$9 >> 0] | 0;\n  if ($8 >>> 0 > 1) HEAP8[$9 >> 0] = 1;\n  $13 = HEAP8[$first >> 0] | 0;\n  L6 : do switch ($13 | 0) {\n  case 84:\n  case 71:\n   {\n    L107 : do if (($last - $first | 0) > 2) {\n     switch ($13 | 0) {\n     case 84:\n      break;\n     case 71:\n      {\n       switch (HEAP8[$first + 1 >> 0] | 0) {\n       case 86:\n        {\n         $175 = $first + 2 | 0;\n         $176 = __ZN10__cxxabiv112_GLOBAL__N_110parse_nameINS0_2DbEEEPKcS4_S4_RT_($175, $last, $db) | 0;\n         if (($176 | 0) == ($175 | 0)) {\n          $$0$i = $first;\n          break L107;\n         }\n         $180 = HEAP32[$db + 4 >> 2] | 0;\n         if ((HEAP32[$db >> 2] | 0) == ($180 | 0)) {\n          $$0$i = $first;\n          break L107;\n         }\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($180 + -24 | 0, 0, 14521) | 0;\n         $$0$i = $176;\n         break L107;\n         break;\n        }\n       case 82:\n        {\n         $183 = $first + 2 | 0;\n         $184 = __ZN10__cxxabiv112_GLOBAL__N_110parse_nameINS0_2DbEEEPKcS4_S4_RT_($183, $last, $db) | 0;\n         if (($184 | 0) == ($183 | 0)) {\n          $$0$i = $first;\n          break L107;\n         }\n         $188 = HEAP32[$db + 4 >> 2] | 0;\n         if ((HEAP32[$db >> 2] | 0) == ($188 | 0)) {\n          $$0$i = $first;\n          break L107;\n         }\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($188 + -24 | 0, 0, 14541) | 0;\n         $$0$i = $184;\n         break L107;\n         break;\n        }\n       default:\n        {\n         $$0$i = $first;\n         break L107;\n        }\n       }\n       break;\n      }\n     default:\n      {\n       $$0$i = $first;\n       break L107;\n      }\n     }\n     $18 = $first + 1 | 0;\n     switch (HEAP8[$18 >> 0] | 0) {\n     case 86:\n      {\n       $21 = $first + 2 | 0;\n       $22 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($21, $last, $db) | 0;\n       if (($22 | 0) == ($21 | 0)) {\n        $$0$i = $first;\n        break L107;\n       }\n       $26 = HEAP32[$db + 4 >> 2] | 0;\n       if ((HEAP32[$db >> 2] | 0) == ($26 | 0)) {\n        $$0$i = $first;\n        break L107;\n       }\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($26 + -24 | 0, 0, 14370) | 0;\n       $$0$i = $22;\n       break L107;\n       break;\n      }\n     case 84:\n      {\n       $29 = $first + 2 | 0;\n       $30 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($29, $last, $db) | 0;\n       if (($30 | 0) == ($29 | 0)) {\n        $$0$i = $first;\n        break L107;\n       }\n       $34 = HEAP32[$db + 4 >> 2] | 0;\n       if ((HEAP32[$db >> 2] | 0) == ($34 | 0)) {\n        $$0$i = $first;\n        break L107;\n       }\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($34 + -24 | 0, 0, 14382) | 0;\n       $$0$i = $30;\n       break L107;\n       break;\n      }\n     case 73:\n      {\n       $37 = $first + 2 | 0;\n       $38 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($37, $last, $db) | 0;\n       if (($38 | 0) == ($37 | 0)) {\n        $$0$i = $first;\n        break L107;\n       }\n       $42 = HEAP32[$db + 4 >> 2] | 0;\n       if ((HEAP32[$db >> 2] | 0) == ($42 | 0)) {\n        $$0$i = $first;\n        break L107;\n       }\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($42 + -24 | 0, 0, 14391) | 0;\n       $$0$i = $38;\n       break L107;\n       break;\n      }\n     case 83:\n      {\n       $45 = $first + 2 | 0;\n       $46 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($45, $last, $db) | 0;\n       if (($46 | 0) == ($45 | 0)) {\n        $$0$i = $first;\n        break L107;\n       }\n       $50 = HEAP32[$db + 4 >> 2] | 0;\n       if ((HEAP32[$db >> 2] | 0) == ($50 | 0)) {\n        $$0$i = $first;\n        break L107;\n       }\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($50 + -24 | 0, 0, 14405) | 0;\n       $$0$i = $46;\n       break L107;\n       break;\n      }\n     case 99:\n      {\n       $53 = $first + 2 | 0;\n       $54 = __ZN10__cxxabiv112_GLOBAL__N_117parse_call_offsetEPKcS2_($53, $last) | 0;\n       if (($54 | 0) == ($53 | 0)) {\n        $$0$i = $first;\n        break L107;\n       }\n       $56 = __ZN10__cxxabiv112_GLOBAL__N_117parse_call_offsetEPKcS2_($54, $last) | 0;\n       if (($56 | 0) == ($54 | 0)) {\n        $$0$i = $first;\n        break L107;\n       }\n       $58 = __ZN10__cxxabiv112_GLOBAL__N_114parse_encodingINS0_2DbEEEPKcS4_S4_RT_($56, $last, $db) | 0;\n       if (($58 | 0) == ($56 | 0)) {\n        $$0$i = $first;\n        break L107;\n       }\n       $62 = HEAP32[$db + 4 >> 2] | 0;\n       if ((HEAP32[$db >> 2] | 0) == ($62 | 0)) {\n        $$0$i = $first;\n        break L107;\n       }\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($62 + -24 | 0, 0, 14424) | 0;\n       $$0$i = $58;\n       break L107;\n       break;\n      }\n     case 67:\n      {\n       $65 = $first + 2 | 0;\n       $66 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($65, $last, $db) | 0;\n       if (($66 | 0) == ($65 | 0)) {\n        $$0$i = $first;\n        break L107;\n       }\n       $68 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_($66, $last) | 0;\n       if (($68 | 0) == ($66 | 0) | ($68 | 0) == ($last | 0)) {\n        $$0$i = $first;\n        break L107;\n       }\n       if ((HEAP8[$68 >> 0] | 0) != 95) {\n        $$0$i = $first;\n        break L107;\n       }\n       $73 = $68 + 1 | 0;\n       $74 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($73, $last, $db) | 0;\n       if (($74 | 0) == ($73 | 0)) {\n        $$0$i = $first;\n        break L107;\n       }\n       $76 = $db + 4 | 0;\n       $77 = HEAP32[$76 >> 2] | 0;\n       if ((($77 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {\n        $$0$i = $first;\n        break L107;\n       }\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($left$i, $77 + -24 | 0);\n       $85 = HEAP32[$76 >> 2] | 0;\n       $86 = $85 + -24 | 0;\n       $88 = $85;\n       do {\n        $87 = $88 + -24 | 0;\n        HEAP32[$76 >> 2] = $87;\n        __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($87);\n        $88 = HEAP32[$76 >> 2] | 0;\n       } while (($88 | 0) != ($86 | 0));\n       $90 = $85 + -48 | 0;\n       $91 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($left$i, 0, 14451) | 0;\n       HEAP32[$2 >> 2] = HEAP32[$91 >> 2];\n       HEAP32[$2 + 4 >> 2] = HEAP32[$91 + 4 >> 2];\n       HEAP32[$2 + 8 >> 2] = HEAP32[$91 + 8 >> 2];\n       HEAP32[$91 >> 2] = 0;\n       HEAP32[$91 + 4 >> 2] = 0;\n       HEAP32[$91 + 8 >> 2] = 0;\n       $94 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($2, 14476) | 0;\n       HEAP32[$1 >> 2] = HEAP32[$94 >> 2];\n       HEAP32[$1 + 4 >> 2] = HEAP32[$94 + 4 >> 2];\n       HEAP32[$1 + 8 >> 2] = HEAP32[$94 + 8 >> 2];\n       HEAP32[$94 >> 2] = 0;\n       HEAP32[$94 + 4 >> 2] = 0;\n       HEAP32[$94 + 8 >> 2] = 0;\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($3, (HEAP32[$76 >> 2] | 0) + -24 | 0);\n       $99 = HEAP8[$3 >> 0] | 0;\n       $101 = ($99 & 1) == 0;\n       $111 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($1, $101 ? $3 + 1 | 0 : HEAP32[$3 + 8 >> 2] | 0, $101 ? ($99 & 255) >>> 1 : HEAP32[$3 + 4 >> 2] | 0) | 0;\n       HEAP32[$0 >> 2] = HEAP32[$111 >> 2];\n       HEAP32[$0 + 4 >> 2] = HEAP32[$111 + 4 >> 2];\n       HEAP32[$0 + 8 >> 2] = HEAP32[$111 + 8 >> 2];\n       HEAP32[$111 >> 2] = 0;\n       HEAP32[$111 + 4 >> 2] = 0;\n       HEAP32[$111 + 8 >> 2] = 0;\n       do if (!(HEAP8[$90 >> 0] & 1)) {\n        HEAP8[$90 + 1 >> 0] = 0;\n        HEAP8[$90 >> 0] = 0;\n       } else {\n        $118 = $85 + -40 | 0;\n        HEAP8[HEAP32[$118 >> 2] >> 0] = 0;\n        $120 = $85 + -44 | 0;\n        HEAP32[$120 >> 2] = 0;\n        $$pre$i$i$i$i = HEAP8[$90 >> 0] | 0;\n        if (!($$pre$i$i$i$i & 1)) {\n         $127 = $$pre$i$i$i$i;\n         $136 = 10;\n        } else {\n         $123 = HEAP32[$90 >> 2] | 0;\n         $127 = $123 & 255;\n         $136 = ($123 & -2) + -1 | 0;\n        }\n        if (!($127 & 1)) {\n         $130 = ($127 & 255) >>> 1;\n         if (($127 & 255) < 22) {\n          $135 = 10;\n          $155 = $130;\n          $446 = 1;\n         } else {\n          $135 = ($130 + 16 & 240) + -1 | 0;\n          $155 = $130;\n          $446 = 1;\n         }\n        } else {\n         $135 = 10;\n         $155 = 0;\n         $446 = 0;\n        }\n        if (($135 | 0) != ($136 | 0)) {\n         if (($135 | 0) == 10) {\n          $142 = $90 + 1 | 0;\n          $143 = HEAP32[$118 >> 2] | 0;\n          if ($446) {\n           _memcpy($142 | 0, $143 | 0, (($127 & 255) >>> 1) + 1 | 0) | 0;\n           _free($143);\n          } else {\n           HEAP8[$142 >> 0] = HEAP8[$143 >> 0] | 0;\n           _free($143);\n          }\n          HEAP8[$90 >> 0] = $155 << 1;\n          break;\n         }\n         $139 = $135 + 1 | 0;\n         $140 = _malloc($139) | 0;\n         if (!($135 >>> 0 <= $136 >>> 0 & ($140 | 0) == 0)) {\n          if ($446) _memcpy($140 | 0, $90 + 1 | 0, (($127 & 255) >>> 1) + 1 | 0) | 0; else {\n           $152 = HEAP32[$118 >> 2] | 0;\n           HEAP8[$140 >> 0] = HEAP8[$152 >> 0] | 0;\n           _free($152);\n          }\n          HEAP32[$90 >> 2] = $139 | 1;\n          HEAP32[$120 >> 2] = $155;\n          HEAP32[$118 >> 2] = $140;\n         }\n        }\n       } while (0);\n       HEAP32[$90 >> 2] = HEAP32[$0 >> 2];\n       HEAP32[$90 + 4 >> 2] = HEAP32[$0 + 4 >> 2];\n       HEAP32[$90 + 8 >> 2] = HEAP32[$0 + 8 >> 2];\n       HEAP32[$0 >> 2] = 0;\n       HEAP32[$0 + 4 >> 2] = 0;\n       HEAP32[$0 + 8 >> 2] = 0;\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($left$i);\n       $$0$i = $74;\n       break L107;\n       break;\n      }\n     default:\n      {\n       $160 = __ZN10__cxxabiv112_GLOBAL__N_117parse_call_offsetEPKcS2_($18, $last) | 0;\n       if (($160 | 0) == ($18 | 0)) {\n        $$0$i = $first;\n        break L107;\n       }\n       $162 = __ZN10__cxxabiv112_GLOBAL__N_114parse_encodingINS0_2DbEEEPKcS4_S4_RT_($160, $last, $db) | 0;\n       if (($162 | 0) == ($160 | 0)) {\n        $$0$i = $first;\n        break L107;\n       }\n       $166 = HEAP32[$db + 4 >> 2] | 0;\n       if ((HEAP32[$db >> 2] | 0) == ($166 | 0)) {\n        $$0$i = $first;\n        break L107;\n       }\n       $171 = $166 + -24 | 0;\n       if ((HEAP8[$first + 2 >> 0] | 0) == 118) {\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($171, 0, 14481) | 0;\n        $$0$i = $162;\n        break L107;\n       } else {\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($171, 0, 14499) | 0;\n        $$0$i = $162;\n        break L107;\n       }\n      }\n     }\n    } else $$0$i = $first; while (0);\n    $$24$ph = $$0$i;\n    break;\n   }\n  default:\n   {\n    $191 = __ZN10__cxxabiv112_GLOBAL__N_110parse_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;\n    $193 = HEAP32[$db + 48 >> 2] | 0;\n    $195 = HEAP32[$db + 52 >> 2] | 0;\n    if (($191 | 0) == ($first | 0)) $$24$ph = $first; else if (($191 | 0) == ($last | 0)) $$24$ph = $last; else {\n     switch (HEAP8[$191 >> 0] | 0) {\n     case 46:\n     case 69:\n      {\n       $$24$ph = $191;\n       break L6;\n       break;\n      }\n     default:\n      {}\n     }\n     $199 = HEAP8[$9 >> 0] | 0;\n     HEAP8[$9 >> 0] = 0;\n     HEAP32[$ret2 >> 2] = 0;\n     HEAP32[$ret2 + 4 >> 2] = 0;\n     HEAP32[$ret2 + 8 >> 2] = 0;\n     $203 = $db + 4 | 0;\n     $204 = HEAP32[$203 >> 2] | 0;\n     L11 : do if ((HEAP32[$db >> 2] | 0) != ($204 | 0)) {\n      $206 = $204 + -24 | 0;\n      $207 = HEAP8[$206 >> 0] | 0;\n      $209 = ($207 & 1) == 0;\n      if ($209) $215 = ($207 & 255) >>> 1; else $215 = HEAP32[$204 + -20 >> 2] | 0;\n      if ($215) {\n       if (!(HEAP8[$db + 60 >> 0] | 0)) {\n        if ($209) {\n         $226 = ($207 & 255) >>> 1;\n         $228 = $206 + 1 | 0;\n        } else {\n         $226 = HEAP32[$204 + -20 >> 2] | 0;\n         $228 = HEAP32[$204 + -16 >> 2] | 0;\n        }\n        if ((HEAP8[$228 + ($226 + -1) >> 0] | 0) == 62) {\n         if ($209) {\n          $$in = ($207 & 255) >>> 1;\n          $240 = $206 + 1 | 0;\n         } else {\n          $$in = HEAP32[$204 + -20 >> 2] | 0;\n          $240 = HEAP32[$204 + -16 >> 2] | 0;\n         }\n         if ((HEAP8[$240 + ($$in + -2) >> 0] | 0) == 45) {\n          $331 = $204;\n          $t$0 = $191;\n         } else {\n          if ($209) {\n           $$in109 = ($207 & 255) >>> 1;\n           $252 = $206 + 1 | 0;\n          } else {\n           $$in109 = HEAP32[$204 + -20 >> 2] | 0;\n           $252 = HEAP32[$204 + -16 >> 2] | 0;\n          }\n          if ((HEAP8[$252 + ($$in109 + -2) >> 0] | 0) == 62) {\n           $331 = $204;\n           $t$0 = $191;\n          } else {\n           $255 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($191, $last, $db) | 0;\n           if (($255 | 0) == ($191 | 0)) break;\n           $257 = HEAP32[$203 >> 2] | 0;\n           if ((($257 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) break;\n           $264 = $257 + -24 | 0;\n           HEAP32[$ret1 >> 2] = HEAP32[$264 >> 2];\n           HEAP32[$ret1 + 4 >> 2] = HEAP32[$264 + 4 >> 2];\n           HEAP32[$ret1 + 8 >> 2] = HEAP32[$264 + 8 >> 2];\n           HEAP32[$264 >> 2] = 0;\n           HEAP32[$264 + 4 >> 2] = 0;\n           HEAP32[$264 + 8 >> 2] = 0;\n           $267 = $257 + -12 | 0;\n           L37 : do if (!(HEAP8[$ret2 >> 0] & 1)) {\n            HEAP8[$ret2 + 1 >> 0] = 0;\n            HEAP8[$ret2 >> 0] = 0;\n           } else {\n            $272 = $ret2 + 8 | 0;\n            $273 = HEAP32[$272 >> 2] | 0;\n            HEAP8[$273 >> 0] = 0;\n            $274 = $ret2 + 4 | 0;\n            HEAP32[$274 >> 2] = 0;\n            $275 = HEAP32[$ret2 >> 2] | 0;\n            $phitmp$i$i$i$i$i$i = ($275 & -2) + -1 | 0;\n            $277 = $275 & 255;\n            do if (!($277 & 1)) {\n             $281 = $275 >>> 1 & 127;\n             if (($277 & 255) < 22) {\n              _memcpy($ret2 + 1 | 0, $273 | 0, ($275 >>> 1 & 127) + 1 | 0) | 0;\n              _free($273);\n              $$ph96 = $281;\n              break;\n             }\n             $284 = $281 + 16 & 240;\n             $phitmp$i2$i$i$i$i$i = $284 + -1 | 0;\n             if (($phitmp$i2$i$i$i$i$i | 0) == ($phitmp$i$i$i$i$i$i | 0)) break L37;\n             $287 = _malloc($284) | 0;\n             if ($phitmp$i2$i$i$i$i$i >>> 0 <= $phitmp$i$i$i$i$i$i >>> 0 & ($287 | 0) == 0) break L37;\n             _memcpy($287 | 0, $ret2 + 1 | 0, ($275 >>> 1 & 127) + 1 | 0) | 0;\n             HEAP32[$ret2 >> 2] = $284 | 1;\n             HEAP32[$274 >> 2] = $281;\n             HEAP32[$272 >> 2] = $287;\n             break L37;\n            } else {\n             HEAP8[$ret2 + 1 >> 0] = 0;\n             _free($273);\n             $$ph96 = 0;\n            } while (0);\n            HEAP8[$ret2 >> 0] = $$ph96 << 1;\n           } while (0);\n           HEAP32[$ret2 >> 2] = HEAP32[$267 >> 2];\n           HEAP32[$ret2 + 4 >> 2] = HEAP32[$267 + 4 >> 2];\n           HEAP32[$ret2 + 8 >> 2] = HEAP32[$267 + 8 >> 2];\n           HEAP32[$267 >> 2] = 0;\n           HEAP32[$267 + 4 >> 2] = 0;\n           HEAP32[$267 + 8 >> 2] = 0;\n           $303 = HEAP8[$ret2 >> 0] | 0;\n           if (!((($303 & 1) == 0 ? ($303 & 255) >>> 1 : HEAP32[$ret2 + 4 >> 2] | 0) | 0)) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9push_backEc($ret1, 32);\n           $312 = HEAP32[$203 >> 2] | 0;\n           $313 = $312 + -24 | 0;\n           $315 = $312;\n           do {\n            $314 = $315 + -24 | 0;\n            HEAP32[$203 >> 2] = $314;\n            __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($314);\n            $315 = HEAP32[$203 >> 2] | 0;\n           } while (($315 | 0) != ($313 | 0));\n           $318 = HEAP8[$ret1 >> 0] | 0;\n           $320 = ($318 & 1) == 0;\n           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKcj($312 + -48 | 0, 0, $320 ? $ret1 + 1 | 0 : HEAP32[$ret1 + 8 >> 2] | 0, $320 ? ($318 & 255) >>> 1 : HEAP32[$ret1 + 4 >> 2] | 0) | 0;\n           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($ret1);\n           $331 = HEAP32[$203 >> 2] | 0;\n           $t$0 = $255;\n          }\n         }\n        } else {\n         $331 = $204;\n         $t$0 = $191;\n        }\n       } else {\n        $331 = $204;\n        $t$0 = $191;\n       }\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9push_backEc($331 + -24 | 0, 40);\n       if (($t$0 | 0) == ($last | 0)) label = 105; else if ((HEAP8[$t$0 >> 0] | 0) == 118) {\n        $413 = HEAP32[$db >> 2] | 0;\n        $414 = HEAP32[$203 >> 2] | 0;\n        $t$2 = $t$0 + 1 | 0;\n       } else label = 105;\n       L60 : do if ((label | 0) == 105) {\n        $335 = $tmp + 4 | 0;\n        $336 = $4 + 8 | 0;\n        $337 = $4 + 1 | 0;\n        $338 = $4 + 4 | 0;\n        $339 = $tmp + 8 | 0;\n        $340 = $tmp + 1 | 0;\n        $341 = $tmp + 4 | 0;\n        $342 = $tmp + 8 | 0;\n        $first_arg$0$off0$ph = 1;\n        $t$1$ph = $t$0;\n        while (1) {\n         $345 = HEAP32[$203 >> 2] | 0;\n         $347 = HEAP32[$db >> 2] | 0;\n         $t$1 = $t$1$ph;\n         while (1) {\n          $349 = ($345 - $347 | 0) / 24 | 0;\n          $350 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($t$1, $last, $db) | 0;\n          $345 = HEAP32[$203 >> 2] | 0;\n          $347 = HEAP32[$db >> 2] | 0;\n          $356 = ($345 - $347 | 0) / 24 | 0;\n          if (($350 | 0) == ($t$1 | 0)) {\n           $413 = $347;\n           $414 = $345;\n           $t$2 = $t$1;\n           break L60;\n          }\n          if ($356 >>> 0 > $349 >>> 0) {\n           $$lcssa150 = $349;\n           $$lcssa151 = $350;\n           $$lcssa156 = $356;\n           break;\n          } else $t$1 = $350;\n         }\n         HEAP32[$tmp >> 2] = 0;\n         HEAP32[$341 >> 2] = 0;\n         HEAP32[$342 >> 2] = 0;\n         if ($$lcssa150 >>> 0 < $$lcssa156 >>> 0) {\n          $k$0121 = $$lcssa150;\n          do {\n           $361 = HEAP8[$tmp >> 0] | 0;\n           if ((($361 & 1) == 0 ? ($361 & 255) >>> 1 : HEAP32[$335 >> 2] | 0) | 0) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($tmp, 12690) | 0;\n           __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($4, (HEAP32[$db >> 2] | 0) + ($k$0121 * 24 | 0) | 0);\n           $371 = HEAP8[$4 >> 0] | 0;\n           $373 = ($371 & 1) == 0;\n           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($tmp, $373 ? $337 : HEAP32[$336 >> 2] | 0, $373 ? ($371 & 255) >>> 1 : HEAP32[$338 >> 2] | 0) | 0;\n           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4);\n           $k$0121 = $k$0121 + 1 | 0;\n          } while ($k$0121 >>> 0 < $$lcssa156 >>> 0);\n         }\n         if ($$lcssa150 >>> 0 < $$lcssa156 >>> 0) {\n          $k2$0122 = $$lcssa150;\n          do {\n           $382 = HEAP32[$203 >> 2] | 0;\n           $383 = $382 + -24 | 0;\n           $385 = $382;\n           do {\n            $384 = $385 + -24 | 0;\n            HEAP32[$203 >> 2] = $384;\n            __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($384);\n            $385 = HEAP32[$203 >> 2] | 0;\n           } while (($385 | 0) != ($383 | 0));\n           $k2$0122 = $k2$0122 + 1 | 0;\n          } while ($k2$0122 >>> 0 < $$lcssa156 >>> 0);\n         }\n         $389 = HEAP8[$tmp >> 0] | 0;\n         $392 = HEAP32[$335 >> 2] | 0;\n         if (!((($389 & 1) == 0 ? ($389 & 255) >>> 1 : $392) | 0)) $first_arg$3$off0$ph = $first_arg$0$off0$ph; else {\n          $398 = HEAP32[$203 >> 2] | 0;\n          if ((HEAP32[$db >> 2] | 0) == ($398 | 0)) break;\n          if ($first_arg$0$off0$ph) {\n           $402 = $398;\n           $404 = $389;\n           $411 = $392;\n          } else {\n           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($398 + -24 | 0, 12690) | 0;\n           $402 = HEAP32[$203 >> 2] | 0;\n           $404 = HEAP8[$tmp >> 0] | 0;\n           $411 = HEAP32[$335 >> 2] | 0;\n          }\n          $405 = ($404 & 1) == 0;\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($402 + -24 | 0, $405 ? $340 : HEAP32[$339 >> 2] | 0, $405 ? ($404 & 255) >>> 1 : $411) | 0;\n          $first_arg$3$off0$ph = 0;\n         }\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($tmp);\n         $first_arg$0$off0$ph = $first_arg$3$off0$ph;\n         $t$1$ph = $$lcssa151;\n        }\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($tmp);\n        break L11;\n       } while (0);\n       if (($413 | 0) != ($414 | 0)) {\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9push_backEc($414 + -24 | 0, 41);\n        if ($193 & 1) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[$203 >> 2] | 0) + -24 | 0, 12643) | 0;\n        if ($193 & 2) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[$203 >> 2] | 0) + -24 | 0, 12650) | 0;\n        if ($193 & 4) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[$203 >> 2] | 0) + -24 | 0, 12660) | 0;\n        switch ($195 | 0) {\n        case 1:\n         {\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[$203 >> 2] | 0) + -24 | 0, 12693) | 0;\n          break;\n         }\n        case 2:\n         {\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[$203 >> 2] | 0) + -24 | 0, 12696) | 0;\n          break;\n         }\n        default:\n         {}\n        }\n        $434 = HEAP8[$ret2 >> 0] | 0;\n        $436 = ($434 & 1) == 0;\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj((HEAP32[$203 >> 2] | 0) + -24 | 0, $436 ? $ret2 + 1 | 0 : HEAP32[$ret2 + 8 >> 2] | 0, $436 ? ($434 & 255) >>> 1 : HEAP32[$ret2 + 4 >> 2] | 0) | 0;\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($ret2);\n        HEAP8[$9 >> 0] = $199;\n        $$24$ph = $t$2;\n        break L6;\n       }\n      }\n     } while (0);\n     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($ret2);\n     HEAP8[$9 >> 0] = $10;\n     HEAP32[$6 >> 2] = $7;\n     $$7 = $first;\n     break L1;\n    }\n   }\n  } while (0);\n  HEAP8[$9 >> 0] = $10;\n  HEAP32[$6 >> 2] = $7;\n  $$7 = $$24$ph;\n } while (0);\n STACKTOP = sp;\n return $$7 | 0;\n}\n\nfunction _vfscanf($f, $fmt, $ap) {\n $f = $f | 0;\n $fmt = $fmt | 0;\n $ap = $ap | 0;\n var $$ = 0, $$lcssa = 0, $$lcssa38 = 0, $$lcssa384 = 0, $$pre = 0, $$pre$phi182Z2D = 0, $$pre170 = 0, $$pre178 = 0, $$size$0 = 0, $0 = 0, $10 = 0, $104 = 0, $105 = 0, $107 = 0, $109 = 0, $11 = 0, $112 = 0, $115 = 0, $117 = 0, $12 = 0, $125 = 0, $129 = 0, $13 = 0, $136 = 0, $14 = 0, $141 = 0, $145 = 0, $15 = 0, $150 = 0, $151 = 0, $157 = 0, $160 = 0, $164 = 0, $166 = 0, $168 = 0, $17 = 0, $173 = 0, $176 = 0, $177 = 0, $178 = 0, $179 = 0, $181 = 0, $186 = 0, $190 = 0, $195 = 0, $196 = 0, $197 = 0, $199 = 0, $20 = 0, $201 = 0, $202 = 0, $210 = 0, $220 = 0, $222 = 0, $226 = 0, $228 = 0, $236 = 0, $244 = 0, $245 = 0, $248 = 0, $25 = 0, $250 = 0, $256 = 0, $263 = 0, $265 = 0, $271 = 0, $277 = 0, $281 = 0, $284 = 0, $291 = 0, $306 = 0, $310 = 0.0, $32 = 0, $334 = 0, $37 = 0, $41 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $51 = 0, $52 = 0, $62 = 0, $7 = 0, $8 = 0, $81 = 0, $82 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $alloc$0 = 0, $alloc$0400 = 0, $alloc$1 = 0, $alloc$2 = 0, $ap2$i = 0, $base$0 = 0, $c$0100 = 0, $dest$0 = 0, $i$0$i = 0, $i$0$ph = 0, $i$0$ph$phi = 0, $i$0$ph20 = 0, $i$0$ph20$lcssa = 0, $i$1 = 0, $i$2 = 0, $i$2$ph = 0, $i$2$ph$phi = 0, $i$3 = 0, $i$4 = 0, $invert$0 = 0, $isdigittmp = 0, $k$0$ph = 0, $k$1$ph = 0, $matches$0104 = 0, $matches$0104$lcssa = 0, $matches$0104376 = 0, $matches$1 = 0, $matches$2 = 0, $matches$3 = 0, $p$0109 = 0, $p$1 = 0, $p$1$lcssa = 0, $p$10 = 0, $p$11 = 0, $p$2 = 0, $p$3$lcssa = 0, $p$396 = 0, $p$4 = 0, $p$5 = 0, $p$6 = 0, $p$7 = 0, $p$7$ph = 0, $p$8 = 0, $p$9 = 0, $pos$0108 = 0, $pos$1 = 0, $pos$2 = 0, $s$0107 = 0, $s$0107$lcssa = 0, $s$1 = 0, $s$2$ph = 0, $s$3 = 0, $s$4 = 0, $s$5 = 0, $s$6 = 0, $s$7 = 0, $s$8 = 0, $scanset = 0, $size$0 = 0, $st = 0, $wc = 0, $wcs$0103 = 0, $wcs$0103$lcssa = 0, $wcs$1 = 0, $wcs$2 = 0, $wcs$3$ph = 0, $wcs$3$ph$lcssa = 0, $wcs$4 = 0, $wcs$5 = 0, $wcs$6 = 0, $wcs$7 = 0, $wcs$8 = 0, $wcs$9 = 0, $width$0$lcssa = 0, $width$097 = 0, $width$1 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 304 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $ap2$i = sp + 16 | 0;\n $st = sp + 8 | 0;\n $scanset = sp + 33 | 0;\n $wc = sp;\n $0 = sp + 32 | 0;\n if ((HEAP32[$f + 76 >> 2] | 0) > -1) $334 = ___lockfile($f) | 0; else $334 = 0;\n $5 = HEAP8[$fmt >> 0] | 0;\n L4 : do if (!($5 << 24 >> 24)) $matches$3 = 0; else {\n  $7 = $f + 4 | 0;\n  $8 = $f + 100 | 0;\n  $9 = $f + 108 | 0;\n  $10 = $f + 8 | 0;\n  $11 = $scanset + 10 | 0;\n  $12 = $scanset + 33 | 0;\n  $13 = $st + 4 | 0;\n  $14 = $scanset + 46 | 0;\n  $15 = $scanset + 94 | 0;\n  $17 = $5;\n  $matches$0104 = 0;\n  $p$0109 = $fmt;\n  $pos$0108 = 0;\n  $s$0107 = 0;\n  $wcs$0103 = 0;\n  L6 : while (1) {\n   L8 : do if (!(_isspace($17 & 255) | 0)) {\n    $47 = (HEAP8[$p$0109 >> 0] | 0) == 37;\n    L10 : do if ($47) {\n     $48 = $p$0109 + 1 | 0;\n     $49 = HEAP8[$48 >> 0] | 0;\n     L12 : do switch ($49 << 24 >> 24) {\n     case 37:\n      {\n       break L10;\n       break;\n      }\n     case 42:\n      {\n       $dest$0 = 0;\n       $p$2 = $p$0109 + 2 | 0;\n       break;\n      }\n     default:\n      {\n       $isdigittmp = ($49 & 255) + -48 | 0;\n       if ($isdigittmp >>> 0 < 10) if ((HEAP8[$p$0109 + 2 >> 0] | 0) == 36) {\n        HEAP32[$ap2$i >> 2] = HEAP32[$ap >> 2];\n        $i$0$i = $isdigittmp;\n        while (1) {\n         $81 = (HEAP32[$ap2$i >> 2] | 0) + (4 - 1) & ~(4 - 1);\n         $82 = HEAP32[$81 >> 2] | 0;\n         HEAP32[$ap2$i >> 2] = $81 + 4;\n         if ($i$0$i >>> 0 > 1) $i$0$i = $i$0$i + -1 | 0; else {\n          $$lcssa = $82;\n          break;\n         }\n        }\n        $dest$0 = $$lcssa;\n        $p$2 = $p$0109 + 3 | 0;\n        break L12;\n       }\n       $90 = (HEAP32[$ap >> 2] | 0) + (4 - 1) & ~(4 - 1);\n       $91 = HEAP32[$90 >> 2] | 0;\n       HEAP32[$ap >> 2] = $90 + 4;\n       $dest$0 = $91;\n       $p$2 = $48;\n      }\n     } while (0);\n     $92 = HEAP8[$p$2 >> 0] | 0;\n     $93 = $92 & 255;\n     if (($93 + -48 | 0) >>> 0 < 10) {\n      $97 = $93;\n      $p$396 = $p$2;\n      $width$097 = 0;\n      while (1) {\n       $96 = ($width$097 * 10 | 0) + -48 + $97 | 0;\n       $98 = $p$396 + 1 | 0;\n       $99 = HEAP8[$98 >> 0] | 0;\n       $97 = $99 & 255;\n       if (($97 + -48 | 0) >>> 0 >= 10) {\n        $$lcssa38 = $99;\n        $p$3$lcssa = $98;\n        $width$0$lcssa = $96;\n        break;\n       } else {\n        $p$396 = $98;\n        $width$097 = $96;\n       }\n      }\n     } else {\n      $$lcssa38 = $92;\n      $p$3$lcssa = $p$2;\n      $width$0$lcssa = 0;\n     }\n     if ($$lcssa38 << 24 >> 24 == 109) {\n      $104 = $p$3$lcssa + 1 | 0;\n      $107 = HEAP8[$104 >> 0] | 0;\n      $alloc$0 = ($dest$0 | 0) != 0 & 1;\n      $p$4 = $104;\n      $s$1 = 0;\n      $wcs$1 = 0;\n     } else {\n      $107 = $$lcssa38;\n      $alloc$0 = 0;\n      $p$4 = $p$3$lcssa;\n      $s$1 = $s$0107;\n      $wcs$1 = $wcs$0103;\n     }\n     $105 = $p$4 + 1 | 0;\n     switch ($107 & 255 | 0) {\n     case 104:\n      {\n       $109 = (HEAP8[$105 >> 0] | 0) == 104;\n       $p$5 = $109 ? $p$4 + 2 | 0 : $105;\n       $size$0 = $109 ? -2 : -1;\n       break;\n      }\n     case 108:\n      {\n       $112 = (HEAP8[$105 >> 0] | 0) == 108;\n       $p$5 = $112 ? $p$4 + 2 | 0 : $105;\n       $size$0 = $112 ? 3 : 1;\n       break;\n      }\n     case 106:\n      {\n       $p$5 = $105;\n       $size$0 = 3;\n       break;\n      }\n     case 116:\n     case 122:\n      {\n       $p$5 = $105;\n       $size$0 = 1;\n       break;\n      }\n     case 76:\n      {\n       $p$5 = $105;\n       $size$0 = 2;\n       break;\n      }\n     case 110:\n     case 112:\n     case 67:\n     case 83:\n     case 91:\n     case 99:\n     case 115:\n     case 88:\n     case 71:\n     case 70:\n     case 69:\n     case 65:\n     case 103:\n     case 102:\n     case 101:\n     case 97:\n     case 120:\n     case 117:\n     case 111:\n     case 105:\n     case 100:\n      {\n       $p$5 = $p$4;\n       $size$0 = 0;\n       break;\n      }\n     default:\n      {\n       $alloc$0400 = $alloc$0;\n       $matches$0104376 = $matches$0104;\n       $s$6 = $s$1;\n       $wcs$7 = $wcs$1;\n       label = 152;\n       break L6;\n      }\n     }\n     $115 = HEAPU8[$p$5 >> 0] | 0;\n     $117 = ($115 & 47 | 0) == 3;\n     $$ = $117 ? $115 | 32 : $115;\n     $$size$0 = $117 ? 1 : $size$0;\n     switch ($$ | 0) {\n     case 99:\n      {\n       $pos$1 = $pos$0108;\n       $width$1 = ($width$0$lcssa | 0) < 1 ? 1 : $width$0$lcssa;\n       break;\n      }\n     case 91:\n      {\n       $pos$1 = $pos$0108;\n       $width$1 = $width$0$lcssa;\n       break;\n      }\n     case 110:\n      {\n       if (!$dest$0) {\n        $matches$1 = $matches$0104;\n        $p$11 = $p$5;\n        $pos$2 = $pos$0108;\n        $s$5 = $s$1;\n        $wcs$6 = $wcs$1;\n        break L8;\n       }\n       switch ($$size$0 | 0) {\n       case -2:\n        {\n         HEAP8[$dest$0 >> 0] = $pos$0108;\n         $matches$1 = $matches$0104;\n         $p$11 = $p$5;\n         $pos$2 = $pos$0108;\n         $s$5 = $s$1;\n         $wcs$6 = $wcs$1;\n         break L8;\n         break;\n        }\n       case -1:\n        {\n         HEAP16[$dest$0 >> 1] = $pos$0108;\n         $matches$1 = $matches$0104;\n         $p$11 = $p$5;\n         $pos$2 = $pos$0108;\n         $s$5 = $s$1;\n         $wcs$6 = $wcs$1;\n         break L8;\n         break;\n        }\n       case 0:\n        {\n         HEAP32[$dest$0 >> 2] = $pos$0108;\n         $matches$1 = $matches$0104;\n         $p$11 = $p$5;\n         $pos$2 = $pos$0108;\n         $s$5 = $s$1;\n         $wcs$6 = $wcs$1;\n         break L8;\n         break;\n        }\n       case 1:\n        {\n         HEAP32[$dest$0 >> 2] = $pos$0108;\n         $matches$1 = $matches$0104;\n         $p$11 = $p$5;\n         $pos$2 = $pos$0108;\n         $s$5 = $s$1;\n         $wcs$6 = $wcs$1;\n         break L8;\n         break;\n        }\n       case 3:\n        {\n         $125 = $dest$0;\n         HEAP32[$125 >> 2] = $pos$0108;\n         HEAP32[$125 + 4 >> 2] = (($pos$0108 | 0) < 0) << 31 >> 31;\n         $matches$1 = $matches$0104;\n         $p$11 = $p$5;\n         $pos$2 = $pos$0108;\n         $s$5 = $s$1;\n         $wcs$6 = $wcs$1;\n         break L8;\n         break;\n        }\n       default:\n        {\n         $matches$1 = $matches$0104;\n         $p$11 = $p$5;\n         $pos$2 = $pos$0108;\n         $s$5 = $s$1;\n         $wcs$6 = $wcs$1;\n         break L8;\n        }\n       }\n       break;\n      }\n     default:\n      {\n       ___shlim($f, 0);\n       do {\n        $129 = HEAP32[$7 >> 2] | 0;\n        if ($129 >>> 0 < (HEAP32[$8 >> 2] | 0) >>> 0) {\n         HEAP32[$7 >> 2] = $129 + 1;\n         $136 = HEAPU8[$129 >> 0] | 0;\n        } else $136 = ___shgetc($f) | 0;\n       } while ((_isspace($136) | 0) != 0);\n       $$pre170 = HEAP32[$7 >> 2] | 0;\n       if (!(HEAP32[$8 >> 2] | 0)) $145 = $$pre170; else {\n        $141 = $$pre170 + -1 | 0;\n        HEAP32[$7 >> 2] = $141;\n        $145 = $141;\n       }\n       $pos$1 = (HEAP32[$9 >> 2] | 0) + $pos$0108 + $145 - (HEAP32[$10 >> 2] | 0) | 0;\n       $width$1 = $width$0$lcssa;\n      }\n     }\n     ___shlim($f, $width$1);\n     $150 = HEAP32[$7 >> 2] | 0;\n     $151 = HEAP32[$8 >> 2] | 0;\n     if ($150 >>> 0 < $151 >>> 0) {\n      HEAP32[$7 >> 2] = $150 + 1;\n      $157 = $151;\n     } else {\n      if ((___shgetc($f) | 0) < 0) {\n       $alloc$0400 = $alloc$0;\n       $matches$0104376 = $matches$0104;\n       $s$6 = $s$1;\n       $wcs$7 = $wcs$1;\n       label = 152;\n       break L6;\n      }\n      $157 = HEAP32[$8 >> 2] | 0;\n     }\n     if ($157) HEAP32[$7 >> 2] = (HEAP32[$7 >> 2] | 0) + -1;\n     L67 : do switch ($$ | 0) {\n     case 91:\n     case 99:\n     case 115:\n      {\n       $160 = ($$ | 0) == 99;\n       L69 : do if (($$ & 239 | 0) == 99) {\n        _memset($scanset | 0, -1, 257) | 0;\n        HEAP8[$scanset >> 0] = 0;\n        if (($$ | 0) == 115) {\n         HEAP8[$12 >> 0] = 0;\n         HEAP8[$11 >> 0] = 0;\n         HEAP8[$11 + 1 >> 0] = 0;\n         HEAP8[$11 + 2 >> 0] = 0;\n         HEAP8[$11 + 3 >> 0] = 0;\n         HEAP8[$11 + 4 >> 0] = 0;\n         $p$9 = $p$5;\n        } else $p$9 = $p$5;\n       } else {\n        $164 = $p$5 + 1 | 0;\n        $166 = (HEAP8[$164 >> 0] | 0) == 94;\n        $invert$0 = $166 & 1;\n        $168 = $166 ? $164 : $p$5;\n        $p$6 = $166 ? $p$5 + 2 | 0 : $164;\n        _memset($scanset | 0, $166 & 1 | 0, 257) | 0;\n        HEAP8[$scanset >> 0] = 0;\n        switch (HEAP8[$p$6 >> 0] | 0) {\n        case 45:\n         {\n          $173 = ($invert$0 ^ 1) & 255;\n          HEAP8[$14 >> 0] = $173;\n          $$pre$phi182Z2D = $173;\n          $p$7$ph = $168 + 2 | 0;\n          break;\n         }\n        case 93:\n         {\n          $176 = ($invert$0 ^ 1) & 255;\n          HEAP8[$15 >> 0] = $176;\n          $$pre$phi182Z2D = $176;\n          $p$7$ph = $168 + 2 | 0;\n          break;\n         }\n        default:\n         {\n          $$pre$phi182Z2D = ($invert$0 ^ 1) & 255;\n          $p$7$ph = $p$6;\n         }\n        }\n        $p$7 = $p$7$ph;\n        while (1) {\n         $177 = HEAP8[$p$7 >> 0] | 0;\n         L80 : do switch ($177 << 24 >> 24) {\n         case 0:\n          {\n           $alloc$0400 = $alloc$0;\n           $matches$0104376 = $matches$0104;\n           $s$6 = $s$1;\n           $wcs$7 = $wcs$1;\n           label = 152;\n           break L6;\n           break;\n          }\n         case 93:\n          {\n           $p$9 = $p$7;\n           break L69;\n           break;\n          }\n         case 45:\n          {\n           $178 = $p$7 + 1 | 0;\n           $179 = HEAP8[$178 >> 0] | 0;\n           switch ($179 << 24 >> 24) {\n           case 93:\n           case 0:\n            {\n             $190 = 45;\n             $p$8 = $p$7;\n             break L80;\n             break;\n            }\n           default:\n            {}\n           }\n           $181 = HEAP8[$p$7 + -1 >> 0] | 0;\n           if (($181 & 255) < ($179 & 255)) {\n            $c$0100 = $181 & 255;\n            do {\n             $c$0100 = $c$0100 + 1 | 0;\n             HEAP8[$scanset + $c$0100 >> 0] = $$pre$phi182Z2D;\n             $186 = HEAP8[$178 >> 0] | 0;\n            } while (($c$0100 | 0) < ($186 & 255 | 0));\n            $190 = $186;\n            $p$8 = $178;\n           } else {\n            $190 = $179;\n            $p$8 = $178;\n           }\n           break;\n          }\n         default:\n          {\n           $190 = $177;\n           $p$8 = $p$7;\n          }\n         } while (0);\n         HEAP8[$scanset + (($190 & 255) + 1) >> 0] = $$pre$phi182Z2D;\n         $p$7 = $p$8 + 1 | 0;\n        }\n       } while (0);\n       $195 = $160 ? $width$1 + 1 | 0 : 31;\n       $196 = ($$size$0 | 0) == 1;\n       $197 = ($alloc$0 | 0) != 0;\n       L88 : do if ($196) {\n        if ($197) {\n         $199 = _malloc($195 << 2) | 0;\n         if (!$199) {\n          $alloc$0400 = $alloc$0;\n          $matches$0104376 = $matches$0104;\n          $s$6 = 0;\n          $wcs$7 = $199;\n          label = 152;\n          break L6;\n         } else $wcs$2 = $199;\n        } else $wcs$2 = $dest$0;\n        HEAP32[$st >> 2] = 0;\n        HEAP32[$13 >> 2] = 0;\n        $i$0$ph = 0;\n        $k$0$ph = $195;\n        $wcs$3$ph = $wcs$2;\n        L94 : while (1) {\n         $201 = ($wcs$3$ph | 0) == 0;\n         $i$0$ph20 = $i$0$ph;\n         while (1) {\n          L98 : while (1) {\n           $202 = HEAP32[$7 >> 2] | 0;\n           if ($202 >>> 0 < (HEAP32[$8 >> 2] | 0) >>> 0) {\n            HEAP32[$7 >> 2] = $202 + 1;\n            $210 = HEAPU8[$202 >> 0] | 0;\n           } else $210 = ___shgetc($f) | 0;\n           if (!(HEAP8[$scanset + ($210 + 1) >> 0] | 0)) {\n            $i$0$ph20$lcssa = $i$0$ph20;\n            $wcs$3$ph$lcssa = $wcs$3$ph;\n            break L94;\n           }\n           HEAP8[$0 >> 0] = $210;\n           switch (_mbrtowc($wc, $0, 1, $st) | 0) {\n           case -1:\n            {\n             $alloc$0400 = $alloc$0;\n             $matches$0104376 = $matches$0104;\n             $s$6 = 0;\n             $wcs$7 = $wcs$3$ph;\n             label = 152;\n             break L6;\n             break;\n            }\n           case -2:\n            break;\n           default:\n            break L98;\n           }\n          }\n          if ($201) $i$1 = $i$0$ph20; else {\n           HEAP32[$wcs$3$ph + ($i$0$ph20 << 2) >> 2] = HEAP32[$wc >> 2];\n           $i$1 = $i$0$ph20 + 1 | 0;\n          }\n          if ($197 & ($i$1 | 0) == ($k$0$ph | 0)) break; else $i$0$ph20 = $i$1;\n         }\n         $220 = $k$0$ph << 1 | 1;\n         $222 = _realloc($wcs$3$ph, $220 << 2) | 0;\n         if (!$222) {\n          $alloc$0400 = $alloc$0;\n          $matches$0104376 = $matches$0104;\n          $s$6 = 0;\n          $wcs$7 = $wcs$3$ph;\n          label = 152;\n          break L6;\n         }\n         $i$0$ph$phi = $k$0$ph;\n         $k$0$ph = $220;\n         $wcs$3$ph = $222;\n         $i$0$ph = $i$0$ph$phi;\n        }\n        if (!(_mbsinit($st) | 0)) {\n         $alloc$0400 = $alloc$0;\n         $matches$0104376 = $matches$0104;\n         $s$6 = 0;\n         $wcs$7 = $wcs$3$ph$lcssa;\n         label = 152;\n         break L6;\n        } else {\n         $i$4 = $i$0$ph20$lcssa;\n         $s$3 = 0;\n         $wcs$4 = $wcs$3$ph$lcssa;\n        }\n       } else {\n        if ($197) {\n         $226 = _malloc($195) | 0;\n         if (!$226) {\n          $alloc$0400 = $alloc$0;\n          $matches$0104376 = $matches$0104;\n          $s$6 = 0;\n          $wcs$7 = 0;\n          label = 152;\n          break L6;\n         } else {\n          $i$2$ph = 0;\n          $k$1$ph = $195;\n          $s$2$ph = $226;\n         }\n         while (1) {\n          $i$2 = $i$2$ph;\n          do {\n           $228 = HEAP32[$7 >> 2] | 0;\n           if ($228 >>> 0 < (HEAP32[$8 >> 2] | 0) >>> 0) {\n            HEAP32[$7 >> 2] = $228 + 1;\n            $236 = HEAPU8[$228 >> 0] | 0;\n           } else $236 = ___shgetc($f) | 0;\n           if (!(HEAP8[$scanset + ($236 + 1) >> 0] | 0)) {\n            $i$4 = $i$2;\n            $s$3 = $s$2$ph;\n            $wcs$4 = 0;\n            break L88;\n           }\n           HEAP8[$s$2$ph + $i$2 >> 0] = $236;\n           $i$2 = $i$2 + 1 | 0;\n          } while (($i$2 | 0) != ($k$1$ph | 0));\n          $244 = $k$1$ph << 1 | 1;\n          $245 = _realloc($s$2$ph, $244) | 0;\n          if (!$245) {\n           $alloc$0400 = $alloc$0;\n           $matches$0104376 = $matches$0104;\n           $s$6 = $s$2$ph;\n           $wcs$7 = 0;\n           label = 152;\n           break L6;\n          } else {\n           $i$2$ph$phi = $k$1$ph;\n           $k$1$ph = $244;\n           $s$2$ph = $245;\n           $i$2$ph = $i$2$ph$phi;\n          }\n         }\n        }\n        if (!$dest$0) {\n         $265 = $157;\n         while (1) {\n          $263 = HEAP32[$7 >> 2] | 0;\n          if ($263 >>> 0 < $265 >>> 0) {\n           HEAP32[$7 >> 2] = $263 + 1;\n           $271 = HEAPU8[$263 >> 0] | 0;\n          } else $271 = ___shgetc($f) | 0;\n          if (!(HEAP8[$scanset + ($271 + 1) >> 0] | 0)) {\n           $i$4 = 0;\n           $s$3 = 0;\n           $wcs$4 = 0;\n           break L88;\n          }\n          $265 = HEAP32[$8 >> 2] | 0;\n         }\n        } else {\n         $250 = $157;\n         $i$3 = 0;\n         while (1) {\n          $248 = HEAP32[$7 >> 2] | 0;\n          if ($248 >>> 0 < $250 >>> 0) {\n           HEAP32[$7 >> 2] = $248 + 1;\n           $256 = HEAPU8[$248 >> 0] | 0;\n          } else $256 = ___shgetc($f) | 0;\n          if (!(HEAP8[$scanset + ($256 + 1) >> 0] | 0)) {\n           $i$4 = $i$3;\n           $s$3 = $dest$0;\n           $wcs$4 = 0;\n           break L88;\n          }\n          HEAP8[$dest$0 + $i$3 >> 0] = $256;\n          $250 = HEAP32[$8 >> 2] | 0;\n          $i$3 = $i$3 + 1 | 0;\n         }\n        }\n       } while (0);\n       $$pre178 = HEAP32[$7 >> 2] | 0;\n       if (!(HEAP32[$8 >> 2] | 0)) $281 = $$pre178; else {\n        $277 = $$pre178 + -1 | 0;\n        HEAP32[$7 >> 2] = $277;\n        $281 = $277;\n       }\n       $284 = $281 - (HEAP32[$10 >> 2] | 0) + (HEAP32[$9 >> 2] | 0) | 0;\n       if (!$284) {\n        $alloc$2 = $alloc$0;\n        $matches$2 = $matches$0104;\n        $s$8 = $s$3;\n        $wcs$9 = $wcs$4;\n        break L6;\n       }\n       if (!(($284 | 0) == ($width$1 | 0) | $160 ^ 1)) {\n        $alloc$2 = $alloc$0;\n        $matches$2 = $matches$0104;\n        $s$8 = $s$3;\n        $wcs$9 = $wcs$4;\n        break L6;\n       }\n       do if ($197) if ($196) {\n        HEAP32[$dest$0 >> 2] = $wcs$4;\n        break;\n       } else {\n        HEAP32[$dest$0 >> 2] = $s$3;\n        break;\n       } while (0);\n       if ($160) {\n        $p$10 = $p$9;\n        $s$4 = $s$3;\n        $wcs$5 = $wcs$4;\n       } else {\n        if ($wcs$4) HEAP32[$wcs$4 + ($i$4 << 2) >> 2] = 0;\n        if (!$s$3) {\n         $p$10 = $p$9;\n         $s$4 = 0;\n         $wcs$5 = $wcs$4;\n         break L67;\n        }\n        HEAP8[$s$3 + $i$4 >> 0] = 0;\n        $p$10 = $p$9;\n        $s$4 = $s$3;\n        $wcs$5 = $wcs$4;\n       }\n       break;\n      }\n     case 120:\n     case 88:\n     case 112:\n      {\n       $base$0 = 16;\n       label = 134;\n       break;\n      }\n     case 111:\n      {\n       $base$0 = 8;\n       label = 134;\n       break;\n      }\n     case 117:\n     case 100:\n      {\n       $base$0 = 10;\n       label = 134;\n       break;\n      }\n     case 105:\n      {\n       $base$0 = 0;\n       label = 134;\n       break;\n      }\n     case 71:\n     case 103:\n     case 70:\n     case 102:\n     case 69:\n     case 101:\n     case 65:\n     case 97:\n      {\n       $310 = +___floatscan($f, $$size$0, 0);\n       if ((HEAP32[$9 >> 2] | 0) == ((HEAP32[$10 >> 2] | 0) - (HEAP32[$7 >> 2] | 0) | 0)) {\n        $alloc$2 = $alloc$0;\n        $matches$2 = $matches$0104;\n        $s$8 = $s$1;\n        $wcs$9 = $wcs$1;\n        break L6;\n       }\n       if (!$dest$0) {\n        $p$10 = $p$5;\n        $s$4 = $s$1;\n        $wcs$5 = $wcs$1;\n       } else switch ($$size$0 | 0) {\n       case 0:\n        {\n         HEAPF32[$dest$0 >> 2] = $310;\n         $p$10 = $p$5;\n         $s$4 = $s$1;\n         $wcs$5 = $wcs$1;\n         break L67;\n         break;\n        }\n       case 1:\n        {\n         HEAPF64[$dest$0 >> 3] = $310;\n         $p$10 = $p$5;\n         $s$4 = $s$1;\n         $wcs$5 = $wcs$1;\n         break L67;\n         break;\n        }\n       case 2:\n        {\n         HEAPF64[$dest$0 >> 3] = $310;\n         $p$10 = $p$5;\n         $s$4 = $s$1;\n         $wcs$5 = $wcs$1;\n         break L67;\n         break;\n        }\n       default:\n        {\n         $p$10 = $p$5;\n         $s$4 = $s$1;\n         $wcs$5 = $wcs$1;\n         break L67;\n        }\n       }\n       break;\n      }\n     default:\n      {\n       $p$10 = $p$5;\n       $s$4 = $s$1;\n       $wcs$5 = $wcs$1;\n      }\n     } while (0);\n     L168 : do if ((label | 0) == 134) {\n      label = 0;\n      $291 = ___intscan($f, $base$0, 0, -1, -1) | 0;\n      if ((HEAP32[$9 >> 2] | 0) == ((HEAP32[$10 >> 2] | 0) - (HEAP32[$7 >> 2] | 0) | 0)) {\n       $alloc$2 = $alloc$0;\n       $matches$2 = $matches$0104;\n       $s$8 = $s$1;\n       $wcs$9 = $wcs$1;\n       break L6;\n      }\n      if (($dest$0 | 0) != 0 & ($$ | 0) == 112) {\n       HEAP32[$dest$0 >> 2] = $291;\n       $p$10 = $p$5;\n       $s$4 = $s$1;\n       $wcs$5 = $wcs$1;\n       break;\n      }\n      if (!$dest$0) {\n       $p$10 = $p$5;\n       $s$4 = $s$1;\n       $wcs$5 = $wcs$1;\n      } else switch ($$size$0 | 0) {\n      case -2:\n       {\n        HEAP8[$dest$0 >> 0] = $291;\n        $p$10 = $p$5;\n        $s$4 = $s$1;\n        $wcs$5 = $wcs$1;\n        break L168;\n        break;\n       }\n      case -1:\n       {\n        HEAP16[$dest$0 >> 1] = $291;\n        $p$10 = $p$5;\n        $s$4 = $s$1;\n        $wcs$5 = $wcs$1;\n        break L168;\n        break;\n       }\n      case 0:\n       {\n        HEAP32[$dest$0 >> 2] = $291;\n        $p$10 = $p$5;\n        $s$4 = $s$1;\n        $wcs$5 = $wcs$1;\n        break L168;\n        break;\n       }\n      case 1:\n       {\n        HEAP32[$dest$0 >> 2] = $291;\n        $p$10 = $p$5;\n        $s$4 = $s$1;\n        $wcs$5 = $wcs$1;\n        break L168;\n        break;\n       }\n      case 3:\n       {\n        $306 = $dest$0;\n        HEAP32[$306 >> 2] = $291;\n        HEAP32[$306 + 4 >> 2] = tempRet0;\n        $p$10 = $p$5;\n        $s$4 = $s$1;\n        $wcs$5 = $wcs$1;\n        break L168;\n        break;\n       }\n      default:\n       {\n        $p$10 = $p$5;\n        $s$4 = $s$1;\n        $wcs$5 = $wcs$1;\n        break L168;\n       }\n      }\n     } while (0);\n     $matches$1 = (($dest$0 | 0) != 0 & 1) + $matches$0104 | 0;\n     $p$11 = $p$10;\n     $pos$2 = (HEAP32[$9 >> 2] | 0) + $pos$1 + (HEAP32[$7 >> 2] | 0) - (HEAP32[$10 >> 2] | 0) | 0;\n     $s$5 = $s$4;\n     $wcs$6 = $wcs$5;\n     break L8;\n    } while (0);\n    $51 = $p$0109 + ($47 & 1) | 0;\n    ___shlim($f, 0);\n    $52 = HEAP32[$7 >> 2] | 0;\n    if ($52 >>> 0 < (HEAP32[$8 >> 2] | 0) >>> 0) {\n     HEAP32[$7 >> 2] = $52 + 1;\n     $62 = HEAPU8[$52 >> 0] | 0;\n    } else $62 = ___shgetc($f) | 0;\n    if (($62 | 0) != (HEAPU8[$51 >> 0] | 0)) {\n     $$lcssa384 = $62;\n     $matches$0104$lcssa = $matches$0104;\n     $s$0107$lcssa = $s$0107;\n     $wcs$0103$lcssa = $wcs$0103;\n     label = 21;\n     break L6;\n    }\n    $matches$1 = $matches$0104;\n    $p$11 = $51;\n    $pos$2 = $pos$0108 + 1 | 0;\n    $s$5 = $s$0107;\n    $wcs$6 = $wcs$0103;\n   } else {\n    $p$1 = $p$0109;\n    while (1) {\n     $20 = $p$1 + 1 | 0;\n     if (!(_isspace(HEAPU8[$20 >> 0] | 0) | 0)) {\n      $p$1$lcssa = $p$1;\n      break;\n     } else $p$1 = $20;\n    }\n    ___shlim($f, 0);\n    do {\n     $25 = HEAP32[$7 >> 2] | 0;\n     if ($25 >>> 0 < (HEAP32[$8 >> 2] | 0) >>> 0) {\n      HEAP32[$7 >> 2] = $25 + 1;\n      $32 = HEAPU8[$25 >> 0] | 0;\n     } else $32 = ___shgetc($f) | 0;\n    } while ((_isspace($32) | 0) != 0);\n    $$pre = HEAP32[$7 >> 2] | 0;\n    if (!(HEAP32[$8 >> 2] | 0)) $41 = $$pre; else {\n     $37 = $$pre + -1 | 0;\n     HEAP32[$7 >> 2] = $37;\n     $41 = $37;\n    }\n    $matches$1 = $matches$0104;\n    $p$11 = $p$1$lcssa;\n    $pos$2 = (HEAP32[$9 >> 2] | 0) + $pos$0108 + $41 - (HEAP32[$10 >> 2] | 0) | 0;\n    $s$5 = $s$0107;\n    $wcs$6 = $wcs$0103;\n   } while (0);\n   $p$0109 = $p$11 + 1 | 0;\n   $17 = HEAP8[$p$0109 >> 0] | 0;\n   if (!($17 << 24 >> 24)) {\n    $matches$3 = $matches$1;\n    break L4;\n   } else {\n    $matches$0104 = $matches$1;\n    $pos$0108 = $pos$2;\n    $s$0107 = $s$5;\n    $wcs$0103 = $wcs$6;\n   }\n  }\n  if ((label | 0) == 21) {\n   if (HEAP32[$8 >> 2] | 0) HEAP32[$7 >> 2] = (HEAP32[$7 >> 2] | 0) + -1;\n   if (($matches$0104$lcssa | 0) != 0 | ($$lcssa384 | 0) > -1) {\n    $matches$3 = $matches$0104$lcssa;\n    break;\n   } else {\n    $alloc$1 = 0;\n    $s$7 = $s$0107$lcssa;\n    $wcs$8 = $wcs$0103$lcssa;\n    label = 153;\n   }\n  } else if ((label | 0) == 152) if (!$matches$0104376) {\n   $alloc$1 = $alloc$0400;\n   $s$7 = $s$6;\n   $wcs$8 = $wcs$7;\n   label = 153;\n  } else {\n   $alloc$2 = $alloc$0400;\n   $matches$2 = $matches$0104376;\n   $s$8 = $s$6;\n   $wcs$9 = $wcs$7;\n  }\n  if ((label | 0) == 153) {\n   $alloc$2 = $alloc$1;\n   $matches$2 = -1;\n   $s$8 = $s$7;\n   $wcs$9 = $wcs$8;\n  }\n  if (!$alloc$2) $matches$3 = $matches$2; else {\n   _free($s$8);\n   _free($wcs$9);\n   $matches$3 = $matches$2;\n  }\n } while (0);\n if ($334) ___unlockfile($f);\n STACKTOP = sp;\n return $matches$3 | 0;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_122parse_unqualified_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) {\n $first = $first | 0;\n $last = $last | 0;\n $db = $db | 0;\n var $$0 = 0, $$0$i$i$i$i = 0, $$0$i$i$i$i6 = 0, $$0$i$i$i18$i = 0, $$0$i$i$i7$i = 0, $$0$i$i49 = 0, $$03$i = 0, $$1$i9 = 0, $$lcssa = 0, $$ph26 = 0, $$pre$i$i$i$i = 0, $0 = 0, $1 = 0, $100 = 0, $104 = 0, $106 = 0, $109 = 0, $110 = 0, $112 = 0, $114 = 0, $115 = 0, $116 = 0, $117 = 0, $121 = 0, $13 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0, $14 = 0, $140 = 0, $141 = 0, $143 = 0, $150 = 0, $151 = 0, $152 = 0, $153 = 0, $157 = 0, $159 = 0, $162 = 0, $163 = 0, $165 = 0, $171 = 0, $173 = 0, $174 = 0, $175 = 0, $176 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0, $191 = 0, $193 = 0, $194 = 0, $196 = 0, $198 = 0, $2 = 0, $20 = 0, $203 = 0, $204 = 0, $205 = 0, $207 = 0, $217 = 0, $218 = 0, $22 = 0, $220 = 0, $224 = 0, $227 = 0, $230 = 0, $241 = 0, $242 = 0, $243 = 0, $244 = 0, $246 = 0, $248 = 0, $252 = 0, $263 = 0, $264 = 0, $265 = 0, $266 = 0, $268 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0, $277 = 0, $283 = 0, $284 = 0, $285 = 0, $29 = 0, $292 = 0, $297 = 0, $3 = 0, $30 = 0, $300 = 0, $301 = 0, $304 = 0, $31 = 0, $312 = 0, $318 = 0, $32 = 0, $335 = 0, $336 = 0, $337 = 0, $338 = 0, $341 = 0, $36 = 0, $38 = 0, $4 = 0, $41 = 0, $42 = 0, $50 = 0, $53 = 0, $55 = 0, $6 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $69 = 0, $7 = 0, $71 = 0, $74 = 0, $75 = 0, $87 = 0, $88 = 0, $90 = 0, $97 = 0, $98 = 0, $99 = 0, $__p$0$i$i = 0, $__p$1$i$i48 = 0, $__v$i$i17$i = 0, $phitmp$i$i$i$i$i$i$i = 0, $phitmp$i2$i$i$i$i$i$i = 0, $t0$0$i = 0, $t01$0$i = 0, $t01$0$i$lcssa67 = 0, $t01$1$i = 0, $t01$2$i = 0, $t1$0$i$lcssa = 0, $t1$0$i45 = 0, $t13$0$i$lcssa = 0, $t13$0$i51 = 0, $tmp$i = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 128 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $__v$i$i17$i = sp + 104 | 0;\n $0 = sp + 80 | 0;\n $1 = sp + 64 | 0;\n $2 = sp + 40 | 0;\n $3 = sp + 24 | 0;\n $tmp$i = sp + 12 | 0;\n $4 = sp;\n L1 : do if (($first | 0) == ($last | 0)) $$0 = $first; else {\n  $6 = HEAP8[$first >> 0] | 0;\n  $7 = $6 << 24 >> 24;\n  switch ($7 | 0) {\n  case 68:\n  case 67:\n   {\n    L6 : do if (($last - $first | 0) > 1) {\n     $13 = $db + 4 | 0;\n     $14 = HEAP32[$13 >> 2] | 0;\n     if ((HEAP32[$db >> 2] | 0) == ($14 | 0)) $$03$i = $first; else switch ($7 | 0) {\n     case 67:\n      {\n       switch (HEAP8[$first + 1 >> 0] | 0) {\n       case 53:\n       case 51:\n       case 50:\n       case 49:\n        break;\n       default:\n        {\n         $$03$i = $first;\n         break L6;\n        }\n       }\n       __ZN10__cxxabiv112_GLOBAL__N_19base_nameINSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEEEET_RS9_($1, $14 + -24 | 0);\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($0, $1);\n       $20 = HEAP32[$13 >> 2] | 0;\n       $22 = HEAP32[$db + 8 >> 2] | 0;\n       if ($20 >>> 0 < $22 >>> 0) {\n        __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($20, $0);\n        HEAP32[$13 >> 2] = (HEAP32[$13 >> 2] | 0) + 24;\n       } else {\n        $29 = HEAP32[$db >> 2] | 0;\n        $30 = $20 - $29 | 0;\n        $31 = ($30 | 0) / 24 | 0;\n        $32 = $31 + 1 | 0;\n        if (($30 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n        $36 = ($22 - $29 | 0) / 24 | 0;\n        if ($36 >>> 0 < 1073741823) {\n         $38 = $36 << 1;\n         $$0$i$i$i$i = $38 >>> 0 < $32 >>> 0 ? $32 : $38;\n        } else $$0$i$i$i$i = 2147483647;\n        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i17$i, $$0$i$i$i$i, $31, $db + 12 | 0);\n        $41 = $__v$i$i17$i + 8 | 0;\n        $42 = HEAP32[$41 >> 2] | 0;\n        __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($42, $0);\n        HEAP32[$41 >> 2] = $42 + 24;\n        __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i17$i);\n        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i17$i);\n       }\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0);\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);\n       HEAP8[$db + 60 >> 0] = 1;\n       $$03$i = $first + 2 | 0;\n       break L6;\n       break;\n      }\n     case 68:\n      {\n       switch (HEAP8[$first + 1 >> 0] | 0) {\n       case 53:\n       case 50:\n       case 49:\n       case 48:\n        break;\n       default:\n        {\n         $$03$i = $first;\n         break L6;\n        }\n       }\n       __ZN10__cxxabiv112_GLOBAL__N_19base_nameINSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEEEET_RS9_($tmp$i, $14 + -24 | 0);\n       $50 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($tmp$i, 0, 12902) | 0;\n       HEAP32[$3 >> 2] = HEAP32[$50 >> 2];\n       HEAP32[$3 + 4 >> 2] = HEAP32[$50 + 4 >> 2];\n       HEAP32[$3 + 8 >> 2] = HEAP32[$50 + 8 >> 2];\n       HEAP32[$50 >> 2] = 0;\n       HEAP32[$50 + 4 >> 2] = 0;\n       HEAP32[$50 + 8 >> 2] = 0;\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($2, $3);\n       $53 = HEAP32[$13 >> 2] | 0;\n       $55 = HEAP32[$db + 8 >> 2] | 0;\n       if ($53 >>> 0 < $55 >>> 0) {\n        __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($53, $2);\n        HEAP32[$13 >> 2] = (HEAP32[$13 >> 2] | 0) + 24;\n       } else {\n        $62 = HEAP32[$db >> 2] | 0;\n        $63 = $53 - $62 | 0;\n        $64 = ($63 | 0) / 24 | 0;\n        $65 = $64 + 1 | 0;\n        if (($63 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n        $69 = ($55 - $62 | 0) / 24 | 0;\n        if ($69 >>> 0 < 1073741823) {\n         $71 = $69 << 1;\n         $$0$i$i$i7$i = $71 >>> 0 < $65 >>> 0 ? $65 : $71;\n        } else $$0$i$i$i7$i = 2147483647;\n        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i17$i, $$0$i$i$i7$i, $64, $db + 12 | 0);\n        $74 = $__v$i$i17$i + 8 | 0;\n        $75 = HEAP32[$74 >> 2] | 0;\n        __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($75, $2);\n        HEAP32[$74 >> 2] = $75 + 24;\n        __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i17$i);\n        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i17$i);\n       }\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($2);\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($tmp$i);\n       HEAP8[$db + 60 >> 0] = 1;\n       $$03$i = $first + 2 | 0;\n       break L6;\n       break;\n      }\n     default:\n      {\n       $$03$i = $first;\n       break L6;\n      }\n     }\n    } else $$03$i = $first; while (0);\n    $$0 = $$03$i;\n    break L1;\n    break;\n   }\n  case 85:\n   {\n    L36 : do if (($last - $first | 0) > 2 & $6 << 24 >> 24 == 85) {\n     switch (HEAP8[$first + 1 >> 0] | 0) {\n     case 116:\n      {\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($1, 12904, 8);\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($0, $1);\n       $87 = $db + 4 | 0;\n       $88 = HEAP32[$87 >> 2] | 0;\n       $90 = HEAP32[$db + 8 >> 2] | 0;\n       if ($88 >>> 0 < $90 >>> 0) {\n        __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($88, $0);\n        HEAP32[$87 >> 2] = (HEAP32[$87 >> 2] | 0) + 24;\n       } else {\n        $97 = HEAP32[$db >> 2] | 0;\n        $98 = $88 - $97 | 0;\n        $99 = ($98 | 0) / 24 | 0;\n        $100 = $99 + 1 | 0;\n        if (($98 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n        $104 = ($90 - $97 | 0) / 24 | 0;\n        if ($104 >>> 0 < 1073741823) {\n         $106 = $104 << 1;\n         $$0$i$i$i$i6 = $106 >>> 0 < $100 >>> 0 ? $100 : $106;\n        } else $$0$i$i$i$i6 = 2147483647;\n        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i17$i, $$0$i$i$i$i6, $99, $db + 12 | 0);\n        $109 = $__v$i$i17$i + 8 | 0;\n        $110 = HEAP32[$109 >> 2] | 0;\n        __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($110, $0);\n        HEAP32[$109 >> 2] = $110 + 24;\n        __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i17$i);\n        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i17$i);\n       }\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0);\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);\n       $112 = $first + 2 | 0;\n       if (($112 | 0) == ($last | 0)) {\n        $114 = HEAP32[$87 >> 2] | 0;\n        $115 = $114 + -24 | 0;\n        $117 = $114;\n        while (1) {\n         $116 = $117 + -24 | 0;\n         HEAP32[$87 >> 2] = $116;\n         __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($116);\n         $117 = HEAP32[$87 >> 2] | 0;\n         if (($117 | 0) == ($115 | 0)) {\n          $$1$i9 = $first;\n          break L36;\n         }\n        }\n       }\n       if (((HEAP8[$112 >> 0] | 0) + -48 | 0) >>> 0 < 10) {\n        $121 = $first + 3 | 0;\n        L57 : do if (($121 | 0) == ($last | 0)) $t1$0$i$lcssa = $last; else {\n         $t1$0$i45 = $121;\n         while (1) {\n          if (((HEAP8[$t1$0$i45 >> 0] | 0) + -48 | 0) >>> 0 >= 10) {\n           $t1$0$i$lcssa = $t1$0$i45;\n           break L57;\n          }\n          $t1$0$i45 = $t1$0$i45 + 1 | 0;\n          if (($t1$0$i45 | 0) == ($last | 0)) {\n           $t1$0$i$lcssa = $last;\n           break;\n          }\n         }\n        } while (0);\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendIPKcEENS_9enable_ifIXsr21__is_forward_iteratorIT_EE5valueERS7_E4typeESC_SC_((HEAP32[$87 >> 2] | 0) + -24 | 0, $112, $t1$0$i$lcssa);\n        $t0$0$i = $t1$0$i$lcssa;\n       } else $t0$0$i = $112;\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9push_backEc((HEAP32[$87 >> 2] | 0) + -24 | 0, 39);\n       if (($t0$0$i | 0) != ($last | 0)) if ((HEAP8[$t0$0$i >> 0] | 0) == 95) {\n        $$1$i9 = $t0$0$i + 1 | 0;\n        break L36;\n       }\n       $134 = HEAP32[$87 >> 2] | 0;\n       $135 = $134 + -24 | 0;\n       $137 = $134;\n       while (1) {\n        $136 = $137 + -24 | 0;\n        HEAP32[$87 >> 2] = $136;\n        __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($136);\n        $137 = HEAP32[$87 >> 2] | 0;\n        if (($137 | 0) == ($135 | 0)) {\n         $$1$i9 = $first;\n         break L36;\n        }\n       }\n       break;\n      }\n     case 108:\n      break;\n     default:\n      {\n       $$1$i9 = $first;\n       break L36;\n      }\n     }\n     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($3, 12913, 9);\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($2, $3);\n     $140 = $db + 4 | 0;\n     $141 = HEAP32[$140 >> 2] | 0;\n     $143 = HEAP32[$db + 8 >> 2] | 0;\n     if ($141 >>> 0 < $143 >>> 0) {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($141, $2);\n      HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + 24;\n     } else {\n      $150 = HEAP32[$db >> 2] | 0;\n      $151 = $141 - $150 | 0;\n      $152 = ($151 | 0) / 24 | 0;\n      $153 = $152 + 1 | 0;\n      if (($151 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n      $157 = ($143 - $150 | 0) / 24 | 0;\n      if ($157 >>> 0 < 1073741823) {\n       $159 = $157 << 1;\n       $$0$i$i$i18$i = $159 >>> 0 < $153 >>> 0 ? $153 : $159;\n      } else $$0$i$i$i18$i = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i17$i, $$0$i$i$i18$i, $152, $db + 12 | 0);\n      $162 = $__v$i$i17$i + 8 | 0;\n      $163 = HEAP32[$162 >> 2] | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($163, $2);\n      HEAP32[$162 >> 2] = $163 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i17$i);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i17$i);\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($2);\n     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);\n     $165 = $first + 2 | 0;\n     do if ((HEAP8[$165 >> 0] | 0) == 118) {\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9push_backEc((HEAP32[$140 >> 2] | 0) + -24 | 0, 41);\n      $t01$1$i = $first + 3 | 0;\n     } else {\n      $171 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($165, $last, $db) | 0;\n      $173 = HEAP32[$140 >> 2] | 0;\n      if (($171 | 0) == ($165 | 0)) {\n       $174 = $173 + -24 | 0;\n       $176 = $173;\n       while (1) {\n        $175 = $176 + -24 | 0;\n        HEAP32[$140 >> 2] = $175;\n        __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($175);\n        $176 = HEAP32[$140 >> 2] | 0;\n        if (($176 | 0) == ($174 | 0)) {\n         $$1$i9 = $first;\n         break L36;\n        }\n       }\n      }\n      if ((($173 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {\n       $$1$i9 = $first;\n       break L36;\n      }\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($tmp$i, $173 + -24 | 0);\n      $185 = HEAP32[$140 >> 2] | 0;\n      $186 = $185 + -24 | 0;\n      $188 = $185;\n      do {\n       $187 = $188 + -24 | 0;\n       HEAP32[$140 >> 2] = $187;\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($187);\n       $188 = HEAP32[$140 >> 2] | 0;\n      } while (($188 | 0) != ($186 | 0));\n      $191 = HEAP8[$tmp$i >> 0] | 0;\n      $193 = ($191 & 1) == 0;\n      $194 = $tmp$i + 8 | 0;\n      $196 = $tmp$i + 1 | 0;\n      $198 = $tmp$i + 4 | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($185 + -48 | 0, $193 ? $196 : HEAP32[$194 >> 2] | 0, $193 ? ($191 & 255) >>> 1 : HEAP32[$198 >> 2] | 0) | 0;\n      $203 = $4 + 4 | 0;\n      $204 = $4 + 8 | 0;\n      $$pre$i$i$i$i = $191;\n      $t01$0$i = $171;\n      while (1) {\n       $205 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($t01$0$i, $last, $db) | 0;\n       $207 = HEAP32[$140 >> 2] | 0;\n       if (($205 | 0) == ($t01$0$i | 0)) {\n        $$lcssa = $207;\n        $t01$0$i$lcssa67 = $t01$0$i;\n        label = 79;\n        break;\n       }\n       if ((($207 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {\n        label = 113;\n        break;\n       }\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($4, $207 + -24 | 0);\n       L96 : do if (!($$pre$i$i$i$i & 1)) {\n        HEAP8[$196 >> 0] = 0;\n        HEAP8[$tmp$i >> 0] = 0;\n       } else {\n        $217 = HEAP32[$194 >> 2] | 0;\n        HEAP8[$217 >> 0] = 0;\n        HEAP32[$198 >> 2] = 0;\n        $218 = HEAP32[$tmp$i >> 2] | 0;\n        $phitmp$i$i$i$i$i$i$i = ($218 & -2) + -1 | 0;\n        $220 = $218 & 255;\n        do if (!($220 & 1)) {\n         $224 = $218 >>> 1 & 127;\n         if (($220 & 255) < 22) {\n          _memcpy($196 | 0, $217 | 0, ($218 >>> 1 & 127) + 1 | 0) | 0;\n          _free($217);\n          $$ph26 = $224;\n          break;\n         }\n         $227 = $224 + 16 & 240;\n         $phitmp$i2$i$i$i$i$i$i = $227 + -1 | 0;\n         if (($phitmp$i2$i$i$i$i$i$i | 0) == ($phitmp$i$i$i$i$i$i$i | 0)) break L96;\n         $230 = _malloc($227) | 0;\n         if ($phitmp$i2$i$i$i$i$i$i >>> 0 <= $phitmp$i$i$i$i$i$i$i >>> 0 & ($230 | 0) == 0) break L96;\n         _memcpy($230 | 0, $196 | 0, ($218 >>> 1 & 127) + 1 | 0) | 0;\n         HEAP32[$tmp$i >> 2] = $227 | 1;\n         HEAP32[$198 >> 2] = $224;\n         HEAP32[$194 >> 2] = $230;\n         break L96;\n        } else {\n         HEAP8[$196 >> 0] = 0;\n         _free($217);\n         $$ph26 = 0;\n        } while (0);\n        HEAP8[$tmp$i >> 0] = $$ph26 << 1;\n       } while (0);\n       HEAP32[$tmp$i >> 2] = HEAP32[$4 >> 2];\n       HEAP32[$tmp$i + 4 >> 2] = HEAP32[$4 + 4 >> 2];\n       HEAP32[$tmp$i + 8 >> 2] = HEAP32[$4 + 8 >> 2];\n       HEAP32[$4 >> 2] = 0;\n       HEAP32[$203 >> 2] = 0;\n       HEAP32[$204 >> 2] = 0;\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4);\n       $241 = HEAP32[$140 >> 2] | 0;\n       $242 = $241 + -24 | 0;\n       $244 = $241;\n       do {\n        $243 = $244 + -24 | 0;\n        HEAP32[$140 >> 2] = $243;\n        __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($243);\n        $244 = HEAP32[$140 >> 2] | 0;\n       } while (($244 | 0) != ($242 | 0));\n       $246 = HEAP8[$tmp$i >> 0] | 0;\n       $248 = ($246 & 1) == 0;\n       $252 = $248 ? ($246 & 255) >>> 1 : HEAP32[$198 >> 2] | 0;\n       if (!$252) {\n        $$pre$i$i$i$i = $246;\n        $t01$0$i = $205;\n        continue;\n       }\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($241 + -48 | 0, 12690) | 0;\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj((HEAP32[$140 >> 2] | 0) + -24 | 0, $248 ? $196 : HEAP32[$194 >> 2] | 0, $252) | 0;\n       $$pre$i$i$i$i = $246;\n       $t01$0$i = $205;\n      }\n      if ((label | 0) == 79) {\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($$lcssa + -24 | 0, 12593) | 0;\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($tmp$i);\n       $t01$1$i = $t01$0$i$lcssa67;\n       break;\n      } else if ((label | 0) == 113) {\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($tmp$i);\n       $$1$i9 = $first;\n       break L36;\n      }\n     } while (0);\n     if (($t01$1$i | 0) != ($last | 0)) if ((HEAP8[$t01$1$i >> 0] | 0) == 69) {\n      $268 = $t01$1$i + 1 | 0;\n      if (($268 | 0) == ($last | 0)) {\n       $270 = HEAP32[$140 >> 2] | 0;\n       $271 = $270 + -24 | 0;\n       $273 = $270;\n       while (1) {\n        $272 = $273 + -24 | 0;\n        HEAP32[$140 >> 2] = $272;\n        __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($272);\n        $273 = HEAP32[$140 >> 2] | 0;\n        if (($273 | 0) == ($271 | 0)) {\n         $$1$i9 = $first;\n         break L36;\n        }\n       }\n      }\n      if (((HEAP8[$268 >> 0] | 0) + -48 | 0) >>> 0 < 10) {\n       $277 = $t01$1$i + 2 | 0;\n       L127 : do if (($277 | 0) == ($last | 0)) $t13$0$i$lcssa = $last; else {\n        $t13$0$i51 = $277;\n        while (1) {\n         if (((HEAP8[$t13$0$i51 >> 0] | 0) + -48 | 0) >>> 0 >= 10) {\n          $t13$0$i$lcssa = $t13$0$i51;\n          break L127;\n         }\n         $t13$0$i51 = $t13$0$i51 + 1 | 0;\n         if (($t13$0$i51 | 0) == ($last | 0)) {\n          $t13$0$i$lcssa = $last;\n          break;\n         }\n        }\n       } while (0);\n       $283 = HEAP32[$140 >> 2] | 0;\n       $284 = $283 + -24 | 0;\n       $285 = HEAP8[$284 >> 0] | 0;\n       if (!($285 & 1)) {\n        $300 = 10;\n        $301 = ($285 & 255) >>> 1;\n        $304 = $285;\n       } else {\n        $292 = HEAP32[$284 >> 2] | 0;\n        $300 = ($292 & -2) + -1 | 0;\n        $301 = HEAP32[$283 + -20 >> 2] | 0;\n        $304 = $292 & 255;\n       }\n       $297 = $t13$0$i$lcssa - $268 | 0;\n       if (($t13$0$i$lcssa | 0) == ($268 | 0)) $t01$2$i = $268; else {\n        if (($300 - $301 | 0) >>> 0 < $297 >>> 0) {\n         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9__grow_byEjjjjjj($284, $300, $301 + $297 - $300 | 0, $301, 7, $297);\n         $__p$0$i$i = HEAP32[$283 + -16 >> 2] | 0;\n        } else {\n         if (!($304 & 1)) $312 = $284 + 1 | 0; else $312 = HEAP32[$283 + -16 >> 2] | 0;\n         if (($301 | 0) == 7) $__p$0$i$i = $312; else {\n          _memmove($312 + ($297 + 7) | 0, $312 + 7 | 0, $301 + -7 | 0) | 0;\n          $__p$0$i$i = $312;\n         }\n        }\n        $318 = $301 + $297 | 0;\n        if (!(HEAP8[$284 >> 0] & 1)) HEAP8[$284 >> 0] = $318 << 1; else HEAP32[$283 + -20 >> 2] = $318;\n        HEAP8[$__p$0$i$i + $318 >> 0] = 0;\n        if (($268 | 0) == ($t13$0$i$lcssa | 0)) $t01$2$i = $t13$0$i$lcssa; else {\n         $$0$i$i49 = $268;\n         $__p$1$i$i48 = $__p$0$i$i + 7 | 0;\n         while (1) {\n          HEAP8[$__p$1$i$i48 >> 0] = HEAP8[$$0$i$i49 >> 0] | 0;\n          $$0$i$i49 = $$0$i$i49 + 1 | 0;\n          if (($$0$i$i49 | 0) == ($t13$0$i$lcssa | 0)) {\n           $t01$2$i = $t13$0$i$lcssa;\n           break;\n          } else $__p$1$i$i48 = $__p$1$i$i48 + 1 | 0;\n         }\n        }\n       }\n      } else $t01$2$i = $268;\n      if (($t01$2$i | 0) != ($last | 0)) if ((HEAP8[$t01$2$i >> 0] | 0) == 95) {\n       $$1$i9 = $t01$2$i + 1 | 0;\n       break;\n      }\n      $335 = HEAP32[$140 >> 2] | 0;\n      $336 = $335 + -24 | 0;\n      $338 = $335;\n      while (1) {\n       $337 = $338 + -24 | 0;\n       HEAP32[$140 >> 2] = $337;\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($337);\n       $338 = HEAP32[$140 >> 2] | 0;\n       if (($338 | 0) == ($336 | 0)) {\n        $$1$i9 = $first;\n        break L36;\n       }\n      }\n     }\n     $263 = HEAP32[$140 >> 2] | 0;\n     $264 = $263 + -24 | 0;\n     $266 = $263;\n     do {\n      $265 = $266 + -24 | 0;\n      HEAP32[$140 >> 2] = $265;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($265);\n      $266 = HEAP32[$140 >> 2] | 0;\n     } while (($266 | 0) != ($264 | 0));\n     $$1$i9 = $first;\n    } else $$1$i9 = $first; while (0);\n    $$0 = $$1$i9;\n    break L1;\n    break;\n   }\n  case 57:\n  case 56:\n  case 55:\n  case 54:\n  case 53:\n  case 52:\n  case 51:\n  case 50:\n  case 49:\n   {\n    $341 = __ZN10__cxxabiv112_GLOBAL__N_117parse_source_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;\n    STACKTOP = sp;\n    return $341 | 0;\n   }\n  default:\n   {\n    $$0 = __ZN10__cxxabiv112_GLOBAL__N_119parse_operator_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;\n    break L1;\n   }\n  }\n } while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _PCA($input, $output, $ev) {\n $input = $input | 0;\n $output = $output | 0;\n $ev = $ev | 0;\n var $$0 = 0, $0 = 0, $1 = 0, $102 = 0.0, $11 = 0, $112 = 0, $113 = 0, $114 = 0, $117 = 0, $118 = 0, $120 = 0, $121 = 0.0, $123 = 0.0, $124 = 0.0, $125 = 0.0, $128 = 0.0, $138 = 0.0, $14 = 0, $143 = 0.0, $147 = 0.0, $150 = 0.0, $154 = 0.0, $156 = 0, $157 = 0.0, $159 = 0, $160 = 0.0, $161 = 0.0, $164 = 0, $168 = 0.0, $17 = 0, $172 = 0, $179 = 0.0, $18 = 0, $184 = 0, $185 = 0, $186 = 0, $188 = 0, $189 = 0.0, $191 = 0, $192 = 0.0, $2 = 0, $202 = 0.0, $204 = 0, $205 = 0.0, $21 = 0, $210 = 0.0, $212 = 0.0, $219 = 0, $220 = 0.0, $223 = 0.0, $224 = 0, $232 = 0.0, $237 = 0, $238 = 0, $24 = 0, $25 = 0, $251 = 0, $253 = 0, $256 = 0, $257 = 0, $259 = 0.0, $26 = 0, $263 = 0.0, $264 = 0, $272 = 0.0, $279 = 0, $28 = 0, $287 = 0, $289 = 0, $292 = 0, $295 = 0, $296 = 0, $3 = 0, $30 = 0, $304 = 0, $31 = 0, $35 = 0, $37 = 0, $47 = 0.0, $5 = 0, $55 = 0, $57 = 0, $61 = 0, $63 = 0, $70 = 0.0, $8 = 0, $82 = 0, $84 = 0, $90 = 0, $92 = 0, $93 = 0, $97 = 0.0, $98 = 0, $99 = 0, $c$0$i = 0.0, $ev1$i = 0, $exitcond$i133 = 0, $exitcond$i14148 = 0, $exitcond$i28106 = 0, $exitcond$i651 = 0, $exitcond3$i59 = 0, $exitcond6$i115 = 0, $exitcond82 = 0, $h$0$i127 = 0, $h$1$i$lcssa = 0, $h$1$i100 = 0, $h$2$i = 0, $i$0$i11155 = 0, $i$0$i141 = 0, $i$0$i2$lcssa = 0, $i$0$i25116 = 0, $i$0$i266 = 0, $i$0$lcssa = 0, $i$090 = 0, $i$1$i2799 = 0, $i$1$i49 = 0, $i$180 = 0, $i$2$i109 = 0, $in1$0$i129 = 0, $in1$0$i17144 = 0, $in2$0$i128 = 0, $in2$0$i16143 = 0, $iter$0$i = 0, $j$0$i13152 = 0, $j$0$i137 = 0, $j$0$i23 = 0, $j$0$i23$lcssa = 0, $j$0$i461 = 0, $j$085 = 0, $j$1$i47 = 0, $j$175 = 0, $k$0$i130 = 0, $k$0$i18145 = 0, $k$0$i24124 = 0, $k$0$i555 = 0, $k$1$i113 = 0, $m$0$i$lcssa = 0, $m$0$i65 = 0, $m$1$i60 = 0, $m$2$i48 = 0, $m$3$i46 = 0, $m1$0$i54 = 0, $m1$089 = 0, $m1$184 = 0, $m2$0$i52 = 0, $m2$0$lcssa = 0, $m2$088 = 0, $m2$183 = 0, $m2$279 = 0, $m2$374 = 0, $out$0$i10154 = 0, $out$0$i140 = 0, $out$1$i12149 = 0, $out$1$i134 = 0, $s$1$i = 0.0, $scevgep2$i = 0, $scevgep41 = 0, $smax$i = 0, $smax38 = 0, $sum$0$i$lcssa = 0.0, $sum$0$i53 = 0.0, $t$0$i$lcssa = 0.0, $t$0$i98 = 0.0, $t$1$i = 0.0, $v1$0$i107 = 0, $v2$0$i108 = 0, $x$0$i$be = 0.0, $x$0$i122 = 0.0, $x$1$i$lcssa = 0.0, $y$0$i$be = 0.0, $y$0$i123 = 0.0, $y$1$i$lcssa = 0.0, sp = 0, $k$0$i24124$looptemp = 0, $h$0$i127$looptemp = 0, $k$1$i113$looptemp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $ev1$i = sp;\n $0 = $input + 4 | 0;\n $1 = HEAP32[$0 >> 2] | 0;\n $2 = $input + 8 | 0;\n $3 = HEAP32[$2 >> 2] | 0;\n $5 = ($3 | 0) < ($1 | 0) ? $3 : $1;\n L1 : do if (($1 | 0) < 2 | ($3 | 0) < 2) $$0 = -1; else {\n  $8 = $output + 8 | 0;\n  if ((HEAP32[$8 >> 2] | 0) == ($3 | 0)) {\n   $11 = $output + 4 | 0;\n   if ((HEAP32[$11 >> 2] | 0) == ($5 | 0)) {\n    $14 = $ev + 4 | 0;\n    if ((HEAP32[$14 >> 2] | 0) == ($5 | 0)) {\n     $17 = _arMatrixAlloc($5, $5) | 0;\n     $18 = $17 + 4 | 0;\n     if ((HEAP32[$18 >> 2] | 0) == ($5 | 0)) {\n      $21 = $17 + 8 | 0;\n      if ((HEAP32[$21 >> 2] | 0) == ($5 | 0)) {\n       $24 = ($1 | 0) < ($3 | 0);\n       $25 = HEAP32[$0 >> 2] | 0;\n       $26 = HEAP32[$2 >> 2] | 0;\n       if ($24) {\n        if (($5 | 0) != ($25 | 0)) {\n         _arMatrixFree($17) | 0;\n         $$0 = -1;\n         break;\n        }\n        $28 = HEAP32[$17 >> 2] | 0;\n        if (($5 | 0) > 0) {\n         $exitcond$i133 = ($5 | 0) == 0;\n         $30 = ($26 | 0) > 0;\n         $i$0$i141 = 0;\n         $out$0$i140 = $28;\n         while (1) {\n          $31 = Math_imul($i$0$i141, $26) | 0;\n          if (!$exitcond$i133) {\n           $j$0$i137 = 0;\n           $out$1$i134 = $out$0$i140;\n           while (1) {\n            if (($j$0$i137 | 0) < ($i$0$i141 | 0)) {\n             $35 = $28 + ((Math_imul($j$0$i137, $5) | 0) + $i$0$i141 << 3) | 0;\n             HEAPF64[$out$1$i134 >> 3] = +HEAPF64[$35 >> 3];\n            } else {\n             $37 = HEAP32[$input >> 2] | 0;\n             HEAPF64[$out$1$i134 >> 3] = 0.0;\n             if ($30) {\n              $47 = 0.0;\n              $in1$0$i129 = $37 + ($31 << 3) | 0;\n              $in2$0$i128 = $37 + ((Math_imul($j$0$i137, $26) | 0) << 3) | 0;\n              $k$0$i130 = 0;\n              while (1) {\n               $47 = $47 + +HEAPF64[$in1$0$i129 >> 3] * +HEAPF64[$in2$0$i128 >> 3];\n               HEAPF64[$out$1$i134 >> 3] = $47;\n               $k$0$i130 = $k$0$i130 + 1 | 0;\n               if (($k$0$i130 | 0) >= ($26 | 0)) break; else {\n                $in1$0$i129 = $in1$0$i129 + 8 | 0;\n                $in2$0$i128 = $in2$0$i128 + 8 | 0;\n               }\n              }\n             }\n            }\n            $j$0$i137 = $j$0$i137 + 1 | 0;\n            if (($j$0$i137 | 0) == ($5 | 0)) break; else $out$1$i134 = $out$1$i134 + 8 | 0;\n           }\n          }\n          $i$0$i141 = $i$0$i141 + 1 | 0;\n          if (($i$0$i141 | 0) >= ($5 | 0)) break; else $out$0$i140 = $out$0$i140 + ($5 << 3) | 0;\n         }\n        }\n       } else {\n        if (($5 | 0) != ($26 | 0)) {\n         _arMatrixFree($17) | 0;\n         $$0 = -1;\n         break;\n        }\n        $55 = HEAP32[$17 >> 2] | 0;\n        if (($5 | 0) > 0) {\n         $exitcond$i14148 = ($5 | 0) == 0;\n         $57 = ($25 | 0) > 0;\n         $i$0$i11155 = 0;\n         $out$0$i10154 = $55;\n         while (1) {\n          if (!$exitcond$i14148) {\n           $j$0$i13152 = 0;\n           $out$1$i12149 = $out$0$i10154;\n           while (1) {\n            if (($j$0$i13152 | 0) < ($i$0$i11155 | 0)) {\n             $61 = $55 + ((Math_imul($j$0$i13152, $5) | 0) + $i$0$i11155 << 3) | 0;\n             HEAPF64[$out$1$i12149 >> 3] = +HEAPF64[$61 >> 3];\n            } else {\n             $63 = HEAP32[$input >> 2] | 0;\n             HEAPF64[$out$1$i12149 >> 3] = 0.0;\n             if ($57) {\n              $70 = 0.0;\n              $in1$0$i17144 = $63 + ($i$0$i11155 << 3) | 0;\n              $in2$0$i16143 = $63 + ($j$0$i13152 << 3) | 0;\n              $k$0$i18145 = 0;\n              while (1) {\n               $70 = $70 + +HEAPF64[$in1$0$i17144 >> 3] * +HEAPF64[$in2$0$i16143 >> 3];\n               HEAPF64[$out$1$i12149 >> 3] = $70;\n               $k$0$i18145 = $k$0$i18145 + 1 | 0;\n               if (($k$0$i18145 | 0) >= ($25 | 0)) break; else {\n                $in1$0$i17144 = $in1$0$i17144 + ($5 << 3) | 0;\n                $in2$0$i16143 = $in2$0$i16143 + ($5 << 3) | 0;\n               }\n              }\n             }\n            }\n            $j$0$i13152 = $j$0$i13152 + 1 | 0;\n            if (($j$0$i13152 | 0) == ($5 | 0)) break; else $out$1$i12149 = $out$1$i12149 + 8 | 0;\n           }\n          }\n          $i$0$i11155 = $i$0$i11155 + 1 | 0;\n          if (($i$0$i11155 | 0) >= ($5 | 0)) break; else $out$0$i10154 = $out$0$i10154 + ($5 << 3) | 0;\n         }\n        }\n       }\n       do if (($5 | 0) >= 2) if ((HEAP32[$14 >> 2] | 0) == ($5 | 0)) {\n        $82 = _arVecAlloc($5) | 0;\n        if ($82) {\n         $84 = $5 + -1 | 0;\n         HEAP32[$ev1$i + 4 >> 2] = $84;\n         HEAP32[$ev1$i >> 2] = (HEAP32[$82 >> 2] | 0) + 8;\n         if ((_arVecTridiagonalize($17, $ev, $ev1$i) | 0) < 0) {\n          _arVecFree($82) | 0;\n          break;\n         }\n         $90 = HEAP32[$82 >> 2] | 0;\n         HEAPF64[$90 >> 3] = 0.0;\n         if (($84 | 0) > 0) {\n          $exitcond6$i115 = ($5 | 0) == 0;\n          $h$0$i127 = $84;\n          do {\n           $j$0$i23 = $h$0$i127;\n           while (1) {\n            if (($j$0$i23 | 0) <= 0) {\n             $j$0$i23$lcssa = $j$0$i23;\n             break;\n            }\n            $97 = +Math_abs(+(+HEAPF64[$90 + ($j$0$i23 << 3) >> 3]));\n            $98 = $j$0$i23 + -1 | 0;\n            $99 = HEAP32[$ev >> 2] | 0;\n            $102 = +Math_abs(+(+HEAPF64[$99 + ($98 << 3) >> 3]));\n            if ($97 > ($102 + +Math_abs(+(+HEAPF64[$99 + ($j$0$i23 << 3) >> 3]))) * 1.0e-06) $j$0$i23 = $98; else {\n             $j$0$i23$lcssa = $j$0$i23;\n             break;\n            }\n           }\n           $h$0$i127$looptemp = $h$0$i127;\n           $h$0$i127 = $h$0$i127 + -1 | 0;\n           L62 : do if (($j$0$i23$lcssa | 0) != ($h$0$i127$looptemp | 0)) {\n            $112 = $90 + ($h$0$i127$looptemp << 3) | 0;\n            $113 = $90 + ($j$0$i23$lcssa + 1 << 3) | 0;\n            $114 = ($j$0$i23$lcssa | 0) < ($h$0$i127$looptemp | 0);\n            $iter$0$i = 0;\n            do {\n             if (($iter$0$i | 0) > 99) break L62;\n             $iter$0$i = $iter$0$i + 1 | 0;\n             $117 = HEAP32[$ev >> 2] | 0;\n             $118 = $117 + ($h$0$i127 << 3) | 0;\n             $120 = $117 + ($h$0$i127$looptemp << 3) | 0;\n             $121 = +HEAPF64[$120 >> 3];\n             $123 = (+HEAPF64[$118 >> 3] - $121) * .5;\n             $124 = +HEAPF64[$112 >> 3];\n             $125 = $124 * $124;\n             $128 = +Math_sqrt(+($125 + $123 * $123));\n             if ($114) {\n              $k$0$i24124 = $j$0$i23$lcssa;\n              $x$0$i122 = +HEAPF64[$117 + ($j$0$i23$lcssa << 3) >> 3] - $121 + $125 / ($123 + ($123 < 0.0 ? -$128 : $128));\n              $y$0$i123 = +HEAPF64[$113 >> 3];\n              while (1) {\n               $138 = +Math_abs(+$x$0$i122);\n               do if (!($138 >= +Math_abs(+$y$0$i123))) {\n                $150 = -$x$0$i122 / $y$0$i123;\n                $154 = 1.0 / +Math_sqrt(+($150 * $150 + 1.0));\n                $c$0$i = $150 * $154;\n                $s$1$i = $154;\n               } else {\n                if (!($138 > 1.0e-16)) {\n                 $c$0$i = 1.0;\n                 $s$1$i = 0.0;\n                 break;\n                }\n                $143 = -$y$0$i123 / $x$0$i122;\n                $147 = 1.0 / +Math_sqrt(+($143 * $143 + 1.0));\n                $c$0$i = $147;\n                $s$1$i = $143 * $147;\n               } while (0);\n               $156 = $117 + ($k$0$i24124 << 3) | 0;\n               $157 = +HEAPF64[$156 >> 3];\n               $k$0$i24124$looptemp = $k$0$i24124;\n               $k$0$i24124 = $k$0$i24124 + 1 | 0;\n               $159 = $117 + ($k$0$i24124 << 3) | 0;\n               $160 = +HEAPF64[$159 >> 3];\n               $161 = $157 - $160;\n               $164 = $90 + ($k$0$i24124 << 3) | 0;\n               $168 = $s$1$i * ($s$1$i * $161 + $c$0$i * 2.0 * +HEAPF64[$164 >> 3]);\n               HEAPF64[$156 >> 3] = $157 - $168;\n               HEAPF64[$159 >> 3] = $160 + $168;\n               if (($k$0$i24124$looptemp | 0) > ($j$0$i23$lcssa | 0)) {\n                $172 = $90 + ($k$0$i24124$looptemp << 3) | 0;\n                HEAPF64[$172 >> 3] = $c$0$i * +HEAPF64[$172 >> 3] - $y$0$i123 * $s$1$i;\n               }\n               $179 = +HEAPF64[$164 >> 3];\n               HEAPF64[$164 >> 3] = $179 + $s$1$i * ($c$0$i * $161 - $s$1$i * 2.0 * $179);\n               $184 = Math_imul($k$0$i24124$looptemp, $5) | 0;\n               $185 = Math_imul($k$0$i24124, $5) | 0;\n               if ($exitcond6$i115) {\n                $x$1$i$lcssa = $x$0$i122;\n                $y$1$i$lcssa = $y$0$i123;\n               } else {\n                $186 = HEAP32[$17 >> 2] | 0;\n                $i$0$i25116 = 0;\n                do {\n                 $188 = $186 + ($i$0$i25116 + $184 << 3) | 0;\n                 $189 = +HEAPF64[$188 >> 3];\n                 $191 = $186 + ($i$0$i25116 + $185 << 3) | 0;\n                 $192 = +HEAPF64[$191 >> 3];\n                 HEAPF64[$188 >> 3] = $c$0$i * $189 - $s$1$i * $192;\n                 HEAPF64[$191 >> 3] = $s$1$i * $189 + $c$0$i * $192;\n                 $i$0$i25116 = $i$0$i25116 + 1 | 0;\n                } while (($i$0$i25116 | 0) != ($5 | 0));\n                $x$1$i$lcssa = $189;\n                $y$1$i$lcssa = $192;\n               }\n               if (($k$0$i24124$looptemp | 0) < ($h$0$i127 | 0)) {\n                $202 = +HEAPF64[$164 >> 3];\n                $204 = $90 + ($k$0$i24124$looptemp + 2 << 3) | 0;\n                $205 = +HEAPF64[$204 >> 3];\n                HEAPF64[$204 >> 3] = $c$0$i * $205;\n                $x$0$i$be = $202;\n                $y$0$i$be = -($s$1$i * $205);\n               } else {\n                $x$0$i$be = $x$1$i$lcssa;\n                $y$0$i$be = $y$1$i$lcssa;\n               }\n               if (($k$0$i24124 | 0) >= ($h$0$i127$looptemp | 0)) break; else {\n                $x$0$i122 = $x$0$i$be;\n                $y$0$i123 = $y$0$i$be;\n               }\n              }\n             }\n             $210 = +Math_abs(+(+HEAPF64[$112 >> 3]));\n             $212 = +Math_abs(+(+HEAPF64[$118 >> 3]));\n            } while ($210 > ($212 + +Math_abs(+(+HEAPF64[$120 >> 3]))) * 1.0e-06);\n           } while (0);\n          } while (($h$0$i127$looptemp | 0) > 1);\n         }\n         if ($84) {\n          $92 = HEAP32[$ev >> 2] | 0;\n          $93 = HEAP32[$17 >> 2] | 0;\n          $exitcond$i28106 = ($5 | 0) == 0;\n          $k$1$i113 = 0;\n          do {\n           $219 = $92 + ($k$1$i113 << 3) | 0;\n           $220 = +HEAPF64[$219 >> 3];\n           $k$1$i113$looptemp = $k$1$i113;\n           $k$1$i113 = $k$1$i113 + 1 | 0;\n           if (($k$1$i113 | 0) < ($5 | 0)) {\n            $h$1$i100 = $k$1$i113$looptemp;\n            $i$1$i2799 = $k$1$i113;\n            $t$0$i98 = $220;\n            while (1) {\n             $223 = +HEAPF64[$92 + ($i$1$i2799 << 3) >> 3];\n             $224 = $223 > $t$0$i98;\n             $t$1$i = $224 ? $223 : $t$0$i98;\n             $h$2$i = $224 ? $i$1$i2799 : $h$1$i100;\n             $i$1$i2799 = $i$1$i2799 + 1 | 0;\n             if (($i$1$i2799 | 0) >= ($5 | 0)) {\n              $h$1$i$lcssa = $h$2$i;\n              $t$0$i$lcssa = $t$1$i;\n              break;\n             } else {\n              $h$1$i100 = $h$2$i;\n              $t$0$i98 = $t$1$i;\n             }\n            }\n           } else {\n            $h$1$i$lcssa = $k$1$i113$looptemp;\n            $t$0$i$lcssa = $220;\n           }\n           HEAPF64[$92 + ($h$1$i$lcssa << 3) >> 3] = $220;\n           HEAPF64[$219 >> 3] = $t$0$i$lcssa;\n           if (!$exitcond$i28106) {\n            $i$2$i109 = 0;\n            $v1$0$i107 = $93 + ((Math_imul($h$1$i$lcssa, $5) | 0) << 3) | 0;\n            $v2$0$i108 = $93 + ((Math_imul($k$1$i113$looptemp, $5) | 0) << 3) | 0;\n            while (1) {\n             $232 = +HEAPF64[$v1$0$i107 >> 3];\n             HEAPF64[$v1$0$i107 >> 3] = +HEAPF64[$v2$0$i108 >> 3];\n             HEAPF64[$v2$0$i108 >> 3] = $232;\n             $i$2$i109 = $i$2$i109 + 1 | 0;\n             if (($i$2$i109 | 0) == ($5 | 0)) break; else {\n              $v1$0$i107 = $v1$0$i107 + 8 | 0;\n              $v2$0$i108 = $v2$0$i108 + 8 | 0;\n             }\n            }\n           }\n          } while (($k$1$i113 | 0) != ($84 | 0));\n         }\n         _arVecFree($82) | 0;\n         L104 : do if ($24) {\n          $237 = HEAP32[$0 >> 2] | 0;\n          $238 = HEAP32[$2 >> 2] | 0;\n          do if (!(($237 | 0) < 1 | ($238 | 0) < 1)) {\n           if ((HEAP32[$18 >> 2] | 0) != ($237 | 0)) break;\n           if ((HEAP32[$21 >> 2] | 0) != ($237 | 0)) break;\n           if ((HEAP32[$11 >> 2] | 0) != ($237 | 0)) break;\n           if ((HEAP32[$8 >> 2] | 0) != ($238 | 0)) break;\n           if ((HEAP32[$14 >> 2] | 0) != ($237 | 0)) break;\n           $251 = HEAP32[$output >> 2] | 0;\n           L113 : do if (($237 | 0) > 0) {\n            $253 = HEAP32[$ev >> 2] | 0;\n            $exitcond3$i59 = ($238 | 0) == 0;\n            $exitcond$i651 = ($237 | 0) == 0;\n            $i$0$i266 = 0;\n            $m$0$i65 = $251;\n            while (1) {\n             $259 = +HEAPF64[$253 + ($i$0$i266 << 3) >> 3];\n             if ($259 < 1.0e-16) {\n              $i$0$i2$lcssa = $i$0$i266;\n              $m$0$i$lcssa = $m$0$i65;\n              break L113;\n             }\n             $263 = 1.0 / +Math_sqrt(+(+Math_abs(+$259)));\n             $264 = Math_imul($i$0$i266, $237) | 0;\n             if (!$exitcond3$i59) {\n              $j$0$i461 = 0;\n              $m$1$i60 = $m$0$i65;\n              while (1) {\n               if ($exitcond$i651) $sum$0$i$lcssa = 0.0; else {\n                $k$0$i555 = 0;\n                $m1$0$i54 = (HEAP32[$17 >> 2] | 0) + ($264 << 3) | 0;\n                $m2$0$i52 = (HEAP32[$input >> 2] | 0) + ($j$0$i461 << 3) | 0;\n                $sum$0$i53 = 0.0;\n                while (1) {\n                 $272 = $sum$0$i53 + +HEAPF64[$m1$0$i54 >> 3] * +HEAPF64[$m2$0$i52 >> 3];\n                 $k$0$i555 = $k$0$i555 + 1 | 0;\n                 if (($k$0$i555 | 0) == ($237 | 0)) {\n                  $sum$0$i$lcssa = $272;\n                  break;\n                 } else {\n                  $m1$0$i54 = $m1$0$i54 + 8 | 0;\n                  $m2$0$i52 = $m2$0$i52 + ($238 << 3) | 0;\n                  $sum$0$i53 = $272;\n                 }\n                }\n               }\n               HEAPF64[$m$1$i60 >> 3] = $263 * $sum$0$i$lcssa;\n               $j$0$i461 = $j$0$i461 + 1 | 0;\n               if (($j$0$i461 | 0) == ($238 | 0)) break; else $m$1$i60 = $m$1$i60 + 8 | 0;\n              }\n             }\n             $scevgep2$i = $m$0$i65 + ($238 << 3) | 0;\n             $279 = $i$0$i266 + 1 | 0;\n             if (($279 | 0) < ($237 | 0)) {\n              $i$0$i266 = $279;\n              $m$0$i65 = $scevgep2$i;\n             } else {\n              $i$0$i2$lcssa = $279;\n              $m$0$i$lcssa = $scevgep2$i;\n              break;\n             }\n            }\n           } else {\n            $i$0$i2$lcssa = 0;\n            $m$0$i$lcssa = $251;\n           } while (0);\n           $smax$i = ($238 | 0) > 0 ? $238 : 0;\n           if (($i$0$i2$lcssa | 0) >= ($237 | 0)) break L104;\n           $256 = HEAP32[$ev >> 2] | 0;\n           $257 = ($238 | 0) > 0;\n           $i$1$i49 = $i$0$i2$lcssa;\n           $m$2$i48 = $m$0$i$lcssa;\n           while (1) {\n            HEAPF64[$256 + ($i$1$i49 << 3) >> 3] = 0.0;\n            if ($257) {\n             $j$1$i47 = 0;\n             $m$3$i46 = $m$2$i48;\n             while (1) {\n              HEAPF64[$m$3$i46 >> 3] = 0.0;\n              $j$1$i47 = $j$1$i47 + 1 | 0;\n              if (($j$1$i47 | 0) >= ($238 | 0)) break; else $m$3$i46 = $m$3$i46 + 8 | 0;\n             }\n            }\n            $i$1$i49 = $i$1$i49 + 1 | 0;\n            if (($i$1$i49 | 0) >= ($237 | 0)) break L104; else $m$2$i48 = $m$2$i48 + ($smax$i << 3) | 0;\n           }\n          } while (0);\n          _arMatrixFree($17) | 0;\n          $$0 = -1;\n          break L1;\n         } else {\n          $287 = HEAP32[$output >> 2] | 0;\n          $289 = ($1 | 0) > ($3 | 0) ? $3 : $1;\n          L137 : do if (($5 | 0) > 0) {\n           $292 = HEAP32[$ev >> 2] | 0;\n           $exitcond82 = ($289 | 0) == 0;\n           $i$090 = 0;\n           $m1$089 = HEAP32[$17 >> 2] | 0;\n           $m2$088 = $287;\n           while (1) {\n            if (+HEAPF64[$292 + ($i$090 << 3) >> 3] < 1.0e-16) {\n             $i$0$lcssa = $i$090;\n             $m2$0$lcssa = $m2$088;\n             break L137;\n            }\n            if (!$exitcond82) {\n             $j$085 = 0;\n             $m1$184 = $m1$089;\n             $m2$183 = $m2$088;\n             while (1) {\n              HEAPF64[$m2$183 >> 3] = +HEAPF64[$m1$184 >> 3];\n              $j$085 = $j$085 + 1 | 0;\n              if (($j$085 | 0) == ($289 | 0)) break; else {\n               $m1$184 = $m1$184 + 8 | 0;\n               $m2$183 = $m2$183 + 8 | 0;\n              }\n             }\n            }\n            $m1$089 = $m1$089 + ($289 << 3) | 0;\n            $scevgep41 = $m2$088 + ($289 << 3) | 0;\n            $304 = $i$090 + 1 | 0;\n            if (($304 | 0) >= ($5 | 0)) {\n             $i$0$lcssa = $304;\n             $m2$0$lcssa = $scevgep41;\n             break;\n            } else {\n             $i$090 = $304;\n             $m2$088 = $scevgep41;\n            }\n           }\n          } else {\n           $i$0$lcssa = 0;\n           $m2$0$lcssa = $287;\n          } while (0);\n          $smax38 = ($289 | 0) > 0 ? $289 : 0;\n          if (($i$0$lcssa | 0) < ($5 | 0)) {\n           $295 = HEAP32[$ev >> 2] | 0;\n           $296 = ($5 | 0) > 0;\n           $i$180 = $i$0$lcssa;\n           $m2$279 = $m2$0$lcssa;\n           while (1) {\n            HEAPF64[$295 + ($i$180 << 3) >> 3] = 0.0;\n            if ($296) {\n             $j$175 = 0;\n             $m2$374 = $m2$279;\n             while (1) {\n              HEAPF64[$m2$374 >> 3] = 0.0;\n              $j$175 = $j$175 + 1 | 0;\n              if (($j$175 | 0) >= ($5 | 0)) break; else $m2$374 = $m2$374 + 8 | 0;\n             }\n            }\n            $i$180 = $i$180 + 1 | 0;\n            if (($i$180 | 0) >= ($5 | 0)) break; else $m2$279 = $m2$279 + ($smax38 << 3) | 0;\n           }\n          }\n         } while (0);\n         _arMatrixFree($17) | 0;\n         $$0 = 0;\n         break L1;\n        }\n       } while (0);\n       _arMatrixFree($17) | 0;\n       $$0 = -1;\n       break;\n      }\n     }\n     _arMatrixFree($17) | 0;\n     $$0 = -1;\n    } else $$0 = -1;\n   } else $$0 = -1;\n  } else $$0 = -1;\n } while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arDetectMarker($arHandle, $dataPtr) {\n $arHandle = $arHandle | 0;\n $dataPtr = $dataPtr | 0;\n var $$ = 0, $$0 = 0, $$lcssa = 0, $$lcssa109 = 0.0, $$lcssa110 = 0.0, $$pr10 = 0, $$pre$phi45Z2D = 0, $$pre$phi47Z2D = 0, $$pre$phi49Z2D = 0, $$pre$phi51Z2D = 0, $$pre$phi53Z2D = 0, $$pre$phiZ2D = 0, $$pre35 = 0, $$pre37 = 0, $0 = 0, $1 = 0, $10 = 0, $101 = 0, $102 = 0, $104 = 0, $106 = 0, $115 = 0, $118 = 0, $12 = 0, $120 = 0, $121 = 0, $126 = 0, $132 = 0, $135 = 0, $14 = 0, $144 = 0, $146 = 0, $155 = 0, $157 = 0, $16 = 0, $163 = 0, $164 = 0, $187 = 0, $190 = 0, $191 = 0, $193 = 0, $195 = 0, $196 = 0, $199 = 0.0, $2 = 0, $20 = 0, $202 = 0.0, $203 = 0.0, $209 = 0.0, $21 = 0, $214 = 0.0, $217 = 0.0, $22 = 0, $222 = 0, $223 = 0, $226 = 0.0, $229 = 0, $23 = 0, $231 = 0, $235 = 0, $238 = 0.0, $24 = 0, $244 = 0.0, $247 = 0.0, $25 = 0, $26 = 0, $262 = 0, $265 = 0.0, $267 = 0, $269 = 0, $27 = 0, $28 = 0, $282 = 0, $285 = 0.0, $29 = 0, $291 = 0.0, $294 = 0.0, $296 = 0, $30 = 0, $300 = 0, $31 = 0, $313 = 0, $314 = 0, $316 = 0, $32 = 0, $324 = 0, $326 = 0, $328 = 0, $33 = 0, $330 = 0, $335 = 0, $343 = 0, $350 = 0, $351 = 0, $353 = 0, $355 = 0.0, $358 = 0.0, $359 = 0.0, $365 = 0.0, $370 = 0.0, $375 = 0, $381 = 0, $385 = 0, $386 = 0, $387 = 0, $4 = 0, $5 = 0, $69 = 0, $71 = 0, $72 = 0, $74 = 0, $75 = 0, $77 = 0, $78 = 0, $8 = 0, $80 = 0, $83 = 0, $86 = 0, $89 = 0, $9 = 0, $91 = 0, $92 = 0, $cdir$1 = 0, $cdir$1$lcssa = 0, $cdir$295 = 0, $cdir$3 = 0, $cdir$3$lcssa = 0, $cid$0$lcssa = 0, $cid$087 = 0, $cid$1 = 0, $diff$097 = 0.0, $diff$192 = 0.0, $diffmin$099 = 0.0, $diffmin$1 = 0.0, $diffmin$294 = 0.0, $i$0104 = 0, $i$1101 = 0, $i$280 = 0, $i$373 = 0, $i$467 = 0, $j$088 = 0, $j$1100 = 0, $j$296 = 0, $j$3$lcssa = 0, $j$381 = 0, $j$4 = 0, $j$5$lcssa = 0, $j$568 = 0, $j$6$lcssa = 0, $j$663 = 0, $k$098 = 0, $k$193 = 0, $marker_nums = 0, $ret1$0 = 0, $rlenmin$086 = 0.0, $rlenmin$1 = 0.0, $storemerge = 0, $storemerge11 = 0, $storemerge4 = 0, $thresholds = 0, $value = 0, $vararg_buffer = 0, $vararg_buffer6 = 0, $vararg_buffer9 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 80 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer9 = sp + 32 | 0;\n $vararg_buffer6 = sp + 24 | 0;\n $vararg_buffer = sp;\n $thresholds = sp + 52 | 0;\n $marker_nums = sp + 40 | 0;\n $value = sp + 64 | 0;\n $0 = $arHandle + 44 | 0;\n HEAP32[$0 >> 2] = 0;\n $1 = $arHandle + 7062388 | 0;\n $2 = HEAP32[$1 >> 2] | 0;\n L1 : do if (($2 | 0) == 4) {\n  $4 = $arHandle + 7062396 | 0;\n  $5 = HEAP32[$4 >> 2] | 0;\n  do if (($5 | 0) > 0) {\n   $$pr10 = 4;\n   $storemerge11 = $5 + -1 | 0;\n  } else {\n   $8 = $arHandle + 16 | 0;\n   $9 = HEAP32[$8 >> 2] | 0;\n   $10 = $arHandle + 7062400 | 0;\n   $12 = (HEAP32[$10 >> 2] | 0) + $9 | 0;\n   $$ = ($12 | 0) > 255 ? 255 : $12;\n   HEAP32[$thresholds >> 2] = $$;\n   $14 = $arHandle + 7062404 | 0;\n   $16 = $9 - (HEAP32[$14 >> 2] | 0) | 0;\n   $storemerge4 = ($16 | 0) < 0 ? 0 : $16;\n   HEAP32[$thresholds + 4 >> 2] = $storemerge4;\n   HEAP32[$thresholds + 8 >> 2] = $9;\n   $20 = $arHandle + 36 | 0;\n   $21 = $arHandle + 40 | 0;\n   $22 = $arHandle + 4 | 0;\n   $23 = $arHandle + 12 | 0;\n   $24 = $arHandle + 20 | 0;\n   $25 = $arHandle + 4834144 | 0;\n   $26 = $arHandle + 15416 | 0;\n   $27 = $arHandle + 15408 | 0;\n   $28 = $arHandle + 7062384 | 0;\n   $29 = $arHandle + 24 | 0;\n   $30 = $arHandle + 32 | 0;\n   $31 = $arHandle + 7062416 | 0;\n   $32 = $arHandle + 48 | 0;\n   $33 = $arHandle + 7062424 | 0;\n   $i$0104 = 0;\n   do {\n    if ((_arLabeling($dataPtr, HEAP32[$20 >> 2] | 0, HEAP32[$21 >> 2] | 0, HEAP32[$22 >> 2] | 0, HEAP32[$arHandle >> 2] | 0, HEAP32[$23 >> 2] | 0, HEAP32[$thresholds + ($i$0104 << 2) >> 2] | 0, HEAP32[$24 >> 2] | 0, $25, 0) | 0) < 0) {\n     $$0 = -1;\n     break L1;\n    }\n    if ((_arDetectMarker2(HEAP32[$20 >> 2] | 0, HEAP32[$21 >> 2] | 0, $25, HEAP32[$24 >> 2] | 0, 1e6, 70, 1.0, $26, $27) | 0) < 0) {\n     $$0 = -1;\n     break L1;\n    }\n    if ((_arGetMarkerInfo($dataPtr, HEAP32[$20 >> 2] | 0, HEAP32[$21 >> 2] | 0, HEAP32[$22 >> 2] | 0, $26, HEAP32[$27 >> 2] | 0, HEAP32[$28 >> 2] | 0, HEAP32[$24 >> 2] | 0, HEAP32[$29 >> 2] | 0, (HEAP32[$30 >> 2] | 0) + 184 | 0, +HEAPF64[$31 >> 3], $32, $0, HEAP32[$33 >> 2] | 0) | 0) < 0) {\n     $$0 = -1;\n     break L1;\n    }\n    HEAP32[$marker_nums + ($i$0104 << 2) >> 2] = HEAP32[$0 >> 2];\n    $i$0104 = $i$0104 + 1 | 0;\n   } while (($i$0104 | 0) < 3);\n   if ((HEAP32[$arHandle >> 2] | 0) == 1) {\n    $69 = HEAP32[$marker_nums + 4 >> 2] | 0;\n    $71 = HEAP32[$marker_nums + 8 >> 2] | 0;\n    $72 = HEAP32[$marker_nums >> 2] | 0;\n    HEAP32[$vararg_buffer >> 2] = $storemerge4;\n    HEAP32[$vararg_buffer + 4 >> 2] = $69;\n    HEAP32[$vararg_buffer + 8 >> 2] = $9;\n    HEAP32[$vararg_buffer + 12 >> 2] = $71;\n    HEAP32[$vararg_buffer + 16 >> 2] = $$;\n    HEAP32[$vararg_buffer + 20 >> 2] = $72;\n    _arLog(3, 4153, $vararg_buffer);\n    $74 = $72;\n    $75 = $71;\n   } else {\n    $74 = HEAP32[$marker_nums >> 2] | 0;\n    $75 = HEAP32[$marker_nums + 8 >> 2] | 0;\n   }\n   $$pre35 = HEAP32[$marker_nums + 4 >> 2] | 0;\n   if (($74 | 0) > ($75 | 0) | ($$pre35 | 0) > ($75 | 0)) {\n    $91 = ($74 | 0) >= ($$pre35 | 0) ? $$ : $storemerge4;\n    HEAP32[$8 >> 2] = $91;\n    $92 = $91 - $9 | 0;\n    if (($92 | 0) > 0) {\n     HEAP32[$10 >> 2] = $92;\n     $storemerge = 1;\n    } else {\n     HEAP32[$10 >> 2] = 1;\n     $storemerge = 0 - $92 | 0;\n    }\n    HEAP32[$14 >> 2] = $storemerge;\n    if ((HEAP32[$arHandle >> 2] | 0) == 1) {\n     HEAP32[$vararg_buffer6 >> 2] = $91;\n     _arLog(3, 4229, $vararg_buffer6);\n    }\n    $$pr10 = HEAP32[$1 >> 2] | 0;\n    $storemerge11 = HEAP32[$arHandle + 7062392 >> 2] | 0;\n    break;\n   }\n   $77 = HEAP32[$10 >> 2] | 0;\n   $78 = HEAP32[$14 >> 2] | 0;\n   do if (($77 | 0) < ($78 | 0)) {\n    $80 = $77 + 1 | 0;\n    HEAP32[$10 >> 2] = $80;\n    $86 = $80;\n   } else if (($77 | 0) > ($78 | 0)) {\n    HEAP32[$14 >> 2] = $78 + 1;\n    $86 = $77;\n    break;\n   } else {\n    $83 = $77 + 1 | 0;\n    HEAP32[$10 >> 2] = $83;\n    HEAP32[$14 >> 2] = $78 + 1;\n    $86 = $83;\n    break;\n   } while (0);\n   if (($86 + $9 | 0) > 254) {\n    HEAP32[$10 >> 2] = 1;\n    $89 = 1;\n   } else $89 = $86;\n   if (($9 | 0) <= ($89 | 0)) HEAP32[$14 >> 2] = 1;\n   HEAP32[$4 >> 2] = HEAP32[$arHandle + 7062392 >> 2];\n   label = 47;\n   break L1;\n  } while (0);\n  HEAP32[$4 >> 2] = $storemerge11;\n  $101 = $$pr10;\n  label = 30;\n } else {\n  $101 = $2;\n  label = 30;\n } while (0);\n L40 : do if ((label | 0) == 30) {\n  L42 : do switch ($101 | 0) {\n  case 3:\n   {\n    $102 = $arHandle + 7062408 | 0;\n    $104 = _arImageProcLumaHistAndBoxFilterWithBias(HEAP32[$102 >> 2] | 0, $dataPtr, 9, -7) | 0;\n    if (($104 | 0) < 0) {\n     $$0 = $104;\n     break L40;\n    }\n    $106 = HEAP32[$102 >> 2] | 0;\n    $115 = $arHandle + 4834144 | 0;\n    $118 = _arLabeling(HEAP32[$106 >> 2] | 0, HEAP32[$106 + 8 >> 2] | 0, HEAP32[$106 + 12 >> 2] | 0, 5, HEAP32[$arHandle >> 2] | 0, HEAP32[$arHandle + 12 >> 2] | 0, 0, 0, $115, HEAP32[$106 + 4 >> 2] | 0) | 0;\n    if (($118 | 0) < 0) {\n     $$0 = $118;\n     break L40;\n    }\n    $$pre$phi45Z2D = $arHandle + 36 | 0;\n    $$pre$phi47Z2D = $arHandle + 40 | 0;\n    $$pre$phi49Z2D = $arHandle + 20 | 0;\n    $$pre$phiZ2D = $115;\n    break;\n   }\n  case 2:\n  case 1:\n   {\n    $120 = $arHandle + 7062396 | 0;\n    $121 = HEAP32[$120 >> 2] | 0;\n    if (($121 | 0) > 0) {\n     HEAP32[$120 >> 2] = $121 + -1;\n     label = 44;\n     break L42;\n    }\n    $126 = HEAP32[$arHandle + 7062408 >> 2] | 0;\n    if (($101 | 0) == 1) $ret1$0 = _arImageProcLumaHistAndCDFAndMedian($126, $dataPtr, $value) | 0; else $ret1$0 = _arImageProcLumaHistAndOtsu($126, $dataPtr, $value) | 0;\n    if (($ret1$0 | 0) < 0) {\n     $$0 = $ret1$0;\n     break L40;\n    }\n    $132 = $arHandle + 16 | 0;\n    if ((HEAP32[$arHandle >> 2] | 0) == 1) {\n     $135 = HEAPU8[$value >> 0] | 0;\n     if ((HEAP32[$132 >> 2] | 0) != ($135 | 0)) {\n      HEAP32[$vararg_buffer9 >> 2] = (HEAP32[$1 >> 2] | 0) == 1 ? 4281 : 4288;\n      HEAP32[$vararg_buffer9 + 4 >> 2] = $135;\n      _arLog(3, 4293, $vararg_buffer9);\n     }\n    }\n    HEAP32[$132 >> 2] = HEAPU8[$value >> 0];\n    HEAP32[$120 >> 2] = HEAP32[$arHandle + 7062392 >> 2];\n    label = 44;\n    break;\n   }\n  default:\n   label = 44;\n  } while (0);\n  if ((label | 0) == 44) {\n   $144 = $arHandle + 36 | 0;\n   $146 = $arHandle + 40 | 0;\n   $155 = $arHandle + 20 | 0;\n   $157 = $arHandle + 4834144 | 0;\n   if ((_arLabeling($dataPtr, HEAP32[$144 >> 2] | 0, HEAP32[$146 >> 2] | 0, HEAP32[$arHandle + 4 >> 2] | 0, HEAP32[$arHandle >> 2] | 0, HEAP32[$arHandle + 12 >> 2] | 0, HEAP32[$arHandle + 16 >> 2] | 0, HEAP32[$155 >> 2] | 0, $157, 0) | 0) < 0) {\n    $$0 = -1;\n    break;\n   } else {\n    $$pre$phi45Z2D = $144;\n    $$pre$phi47Z2D = $146;\n    $$pre$phi49Z2D = $155;\n    $$pre$phiZ2D = $157;\n   }\n  }\n  $163 = $arHandle + 15416 | 0;\n  $164 = $arHandle + 15408 | 0;\n  if ((_arDetectMarker2(HEAP32[$$pre$phi45Z2D >> 2] | 0, HEAP32[$$pre$phi47Z2D >> 2] | 0, $$pre$phiZ2D, HEAP32[$$pre$phi49Z2D >> 2] | 0, 1e6, 70, 1.0, $163, $164) | 0) < 0) $$0 = -1; else if ((_arGetMarkerInfo($dataPtr, HEAP32[$$pre$phi45Z2D >> 2] | 0, HEAP32[$$pre$phi47Z2D >> 2] | 0, HEAP32[$arHandle + 4 >> 2] | 0, $163, HEAP32[$164 >> 2] | 0, HEAP32[$arHandle + 7062384 >> 2] | 0, HEAP32[$$pre$phi49Z2D >> 2] | 0, HEAP32[$arHandle + 24 >> 2] | 0, (HEAP32[$arHandle + 32 >> 2] | 0) + 184 | 0, +HEAPF64[$arHandle + 7062416 >> 3], $arHandle + 48 | 0, $0, HEAP32[$arHandle + 7062424 >> 2] | 0) | 0) < 0) $$0 = -1; else label = 47;\n } while (0);\n L63 : do if ((label | 0) == 47) {\n  $187 = $arHandle + 28 | 0;\n  if ((HEAP32[$187 >> 2] | 0) == 1) {\n   _confidenceCutoff($arHandle);\n   $$0 = 0;\n   break;\n  }\n  $190 = $arHandle + 4818296 | 0;\n  $191 = $arHandle + 24 | 0;\n  $$pre37 = HEAP32[$190 >> 2] | 0;\n  if (($$pre37 | 0) > 0) {\n   $i$1101 = 0;\n   do {\n    $193 = HEAP32[$0 >> 2] | 0;\n    $195 = $arHandle + 4818304 + ($i$1101 * 264 | 0) + 56 | 0;\n    $196 = $arHandle + 4818304 + ($i$1101 * 264 | 0) + 64 | 0;\n    if (($193 | 0) > 0) {\n     $199 = +(HEAP32[$arHandle + 4818304 + ($i$1101 * 264 | 0) >> 2] | 0);\n     $cid$087 = -1;\n     $j$088 = 0;\n     $rlenmin$086 = .5;\n     while (1) {\n      $202 = +(HEAP32[$arHandle + 48 + ($j$088 << 8) >> 2] | 0);\n      $203 = $199 / $202;\n      if ($203 < .7 | $203 > 1.43) {\n       $cid$1 = $cid$087;\n       $rlenmin$1 = $rlenmin$086;\n      } else {\n       $209 = +HEAPF64[$arHandle + 48 + ($j$088 << 8) + 56 >> 3] - +HEAPF64[$195 >> 3];\n       $214 = +HEAPF64[$arHandle + 48 + ($j$088 << 8) + 64 >> 3] - +HEAPF64[$196 >> 3];\n       $217 = ($209 * $209 + $214 * $214) / $202;\n       if ($217 < $rlenmin$086) {\n        $cid$1 = $j$088;\n        $rlenmin$1 = $217;\n       } else {\n        $cid$1 = $cid$087;\n        $rlenmin$1 = $rlenmin$086;\n       }\n      }\n      $j$088 = $j$088 + 1 | 0;\n      if (($j$088 | 0) >= ($193 | 0)) {\n       $cid$0$lcssa = $cid$1;\n       break;\n      } else {\n       $cid$087 = $cid$1;\n       $rlenmin$086 = $rlenmin$1;\n      }\n     }\n    } else $cid$0$lcssa = -1;\n    L80 : do if (($cid$0$lcssa | 0) > -1) {\n     $222 = HEAP32[$191 >> 2] | 0;\n     switch ($222 | 0) {\n     case 2:\n     case 1:\n     case 0:\n      break;\n     case 4:\n     case 3:\n      {\n       $262 = $arHandle + 48 + ($cid$0$lcssa << 8) + 40 | 0;\n       $265 = +HEAPF64[$arHandle + 4818304 + ($i$1101 * 264 | 0) + 40 >> 3];\n       if (+HEAPF64[$262 >> 3] < $265) {\n        $$pre$phi51Z2D = $arHandle + 4818304 + ($i$1101 * 264 | 0) + 48 | 0;\n        $$pre$phi53Z2D = $arHandle + 48 + ($cid$0$lcssa << 8) + 48 | 0;\n       } else {\n        $267 = $arHandle + 48 + ($cid$0$lcssa << 8) + 48 | 0;\n        $269 = $arHandle + 4818304 + ($i$1101 * 264 | 0) + 48 | 0;\n        if (+HEAPF64[$267 >> 3] < +HEAPF64[$269 >> 3]) {\n         $$pre$phi51Z2D = $269;\n         $$pre$phi53Z2D = $267;\n        } else break L80;\n       }\n       HEAPF64[$262 >> 3] = $265;\n       HEAP32[$arHandle + 48 + ($cid$0$lcssa << 8) + 8 >> 2] = HEAP32[$arHandle + 4818304 + ($i$1101 * 264 | 0) + 8 >> 2];\n       HEAPF64[$$pre$phi53Z2D >> 3] = +HEAPF64[$$pre$phi51Z2D >> 3];\n       HEAP32[$arHandle + 48 + ($cid$0$lcssa << 8) + 12 >> 2] = HEAP32[$arHandle + 4818304 + ($i$1101 * 264 | 0) + 12 >> 2];\n       $cdir$295 = -1;\n       $diffmin$294 = 1.0e8;\n       $j$296 = 0;\n       while (1) {\n        $diff$192 = 0.0;\n        $k$193 = 0;\n        while (1) {\n         $282 = ($k$193 + $j$296 | 0) % 4 | 0;\n         $285 = +HEAPF64[$arHandle + 4818304 + ($i$1101 * 264 | 0) + 168 + ($k$193 << 4) >> 3] - +HEAPF64[$arHandle + 48 + ($cid$0$lcssa << 8) + 168 + ($282 << 4) >> 3];\n         $291 = +HEAPF64[$arHandle + 4818304 + ($i$1101 * 264 | 0) + 168 + ($k$193 << 4) + 8 >> 3] - +HEAPF64[$arHandle + 48 + ($cid$0$lcssa << 8) + 168 + ($282 << 4) + 8 >> 3];\n         $294 = $diff$192 + ($285 * $285 + $291 * $291);\n         $k$193 = $k$193 + 1 | 0;\n         if (($k$193 | 0) == 4) {\n          $$lcssa109 = $294;\n          break;\n         } else $diff$192 = $294;\n        }\n        $296 = $$lcssa109 < $diffmin$294;\n        $cdir$3 = $296 ? $j$296 : $cdir$295;\n        $j$296 = $j$296 + 1 | 0;\n        if (($j$296 | 0) == 4) {\n         $cdir$3$lcssa = $cdir$3;\n         break;\n        } else {\n         $cdir$295 = $cdir$3;\n         $diffmin$294 = $296 ? $$lcssa109 : $diffmin$294;\n        }\n       }\n       $300 = 4 - $cdir$3$lcssa | 0;\n       HEAP32[$arHandle + 48 + ($cid$0$lcssa << 8) + 20 >> 2] = ($300 + (HEAP32[$arHandle + 4818304 + ($i$1101 * 264 | 0) + 20 >> 2] | 0) | 0) % 4 | 0;\n       HEAP32[$arHandle + 48 + ($cid$0$lcssa << 8) + 24 >> 2] = ($300 + (HEAP32[$arHandle + 4818304 + ($i$1101 * 264 | 0) + 24 >> 2] | 0) | 0) % 4 | 0;\n       break L80;\n       break;\n      }\n     default:\n      {\n       $$0 = -1;\n       break L63;\n      }\n     }\n     $223 = $arHandle + 48 + ($cid$0$lcssa << 8) + 32 | 0;\n     $226 = +HEAPF64[$arHandle + 4818304 + ($i$1101 * 264 | 0) + 32 >> 3];\n     if (+HEAPF64[$223 >> 3] < $226) {\n      HEAPF64[$223 >> 3] = $226;\n      $229 = HEAP32[$arHandle + 4818304 + ($i$1101 * 264 | 0) + 4 >> 2] | 0;\n      HEAP32[$arHandle + 48 + ($cid$0$lcssa << 8) + 4 >> 2] = $229;\n      $231 = $arHandle + 4818304 + ($i$1101 * 264 | 0) + 16 | 0;\n      $385 = -1;\n      $diffmin$099 = 1.0e8;\n      $j$1100 = 0;\n      while (1) {\n       $diff$097 = 0.0;\n       $k$098 = 0;\n       while (1) {\n        $235 = ($k$098 + $j$1100 | 0) % 4 | 0;\n        $238 = +HEAPF64[$arHandle + 4818304 + ($i$1101 * 264 | 0) + 168 + ($k$098 << 4) >> 3] - +HEAPF64[$arHandle + 48 + ($cid$0$lcssa << 8) + 168 + ($235 << 4) >> 3];\n        $244 = +HEAPF64[$arHandle + 4818304 + ($i$1101 * 264 | 0) + 168 + ($k$098 << 4) + 8 >> 3] - +HEAPF64[$arHandle + 48 + ($cid$0$lcssa << 8) + 168 + ($235 << 4) + 8 >> 3];\n        $247 = $diff$097 + ($238 * $238 + $244 * $244);\n        $k$098 = $k$098 + 1 | 0;\n        if (($k$098 | 0) == 4) {\n         $$lcssa110 = $247;\n         break;\n        } else $diff$097 = $247;\n       }\n       if ($$lcssa110 < $diffmin$099) {\n        $cdir$1 = (4 - $j$1100 + (HEAP32[$231 >> 2] | 0) | 0) % 4 | 0;\n        $diffmin$1 = $$lcssa110;\n       } else {\n        $cdir$1 = $385;\n        $diffmin$1 = $diffmin$099;\n       }\n       $j$1100 = $j$1100 + 1 | 0;\n       if (($j$1100 | 0) == 4) {\n        $cdir$1$lcssa = $cdir$1;\n        break;\n       } else {\n        $385 = $cdir$1;\n        $diffmin$099 = $diffmin$1;\n       }\n      }\n      HEAP32[$arHandle + 48 + ($cid$0$lcssa << 8) + 16 >> 2] = $cdir$1$lcssa;\n      if ($222 >>> 0 < 2) {\n       HEAP32[$arHandle + 48 + ($cid$0$lcssa << 8) + 8 >> 2] = $229;\n       HEAPF64[$arHandle + 48 + ($cid$0$lcssa << 8) + 40 >> 3] = $226;\n       HEAP32[$arHandle + 48 + ($cid$0$lcssa << 8) + 20 >> 2] = $cdir$1$lcssa;\n       break;\n      } else {\n       HEAP32[$arHandle + 48 + ($cid$0$lcssa << 8) + 12 >> 2] = $229;\n       HEAPF64[$arHandle + 48 + ($cid$0$lcssa << 8) + 48 >> 3] = $226;\n       HEAP32[$arHandle + 48 + ($cid$0$lcssa << 8) + 24 >> 2] = $cdir$1$lcssa;\n       break;\n      }\n     }\n    } while (0);\n    $i$1101 = $i$1101 + 1 | 0;\n   } while (($i$1101 | 0) < ($$pre37 | 0));\n  }\n  _confidenceCutoff($arHandle);\n  if ((HEAP32[$190 >> 2] | 0) > 0) {\n   $i$280 = 0;\n   $j$381 = 0;\n   while (1) {\n    $313 = $arHandle + 4818304 + ($i$280 * 264 | 0) | 0;\n    $314 = $arHandle + 4818304 + ($i$280 * 264 | 0) + 256 | 0;\n    $316 = (HEAP32[$314 >> 2] | 0) + 1 | 0;\n    HEAP32[$314 >> 2] = $316;\n    if (($316 | 0) < 4) {\n     if (($i$280 | 0) != ($j$381 | 0)) _memcpy($arHandle + 4818304 + ($j$381 * 264 | 0) | 0, $313 | 0, 264) | 0;\n     $j$4 = $j$381 + 1 | 0;\n    } else $j$4 = $j$381;\n    $i$280 = $i$280 + 1 | 0;\n    if (($i$280 | 0) >= (HEAP32[$190 >> 2] | 0)) {\n     $j$3$lcssa = $j$4;\n     break;\n    } else $j$381 = $j$4;\n   }\n  } else $j$3$lcssa = 0;\n  HEAP32[$190 >> 2] = $j$3$lcssa;\n  $324 = HEAP32[$0 >> 2] | 0;\n  L120 : do if (($324 | 0) > 0) {\n   $386 = $324;\n   $i$373 = 0;\n   while (1) {\n    $326 = $arHandle + 48 + ($i$373 << 8) | 0;\n    $328 = HEAP32[$arHandle + 48 + ($i$373 << 8) + 4 >> 2] | 0;\n    if (($328 | 0) >= 0) {\n     $330 = HEAP32[$190 >> 2] | 0;\n     L125 : do if (($330 | 0) > 0) {\n      $j$568 = 0;\n      while (1) {\n       if ((HEAP32[$arHandle + 4818304 + ($j$568 * 264 | 0) + 4 >> 2] | 0) == ($328 | 0)) {\n        $j$5$lcssa = $j$568;\n        break L125;\n       }\n       $335 = $j$568 + 1 | 0;\n       if (($335 | 0) < ($330 | 0)) $j$568 = $335; else {\n        $j$5$lcssa = $335;\n        break;\n       }\n      }\n     } else $j$5$lcssa = 0; while (0);\n     if (($j$5$lcssa | 0) == ($330 | 0)) {\n      if (($330 | 0) == 60) {\n       $$lcssa = $386;\n       break L120;\n      }\n      HEAP32[$190 >> 2] = $330 + 1;\n     }\n     _memcpy($arHandle + 4818304 + ($j$5$lcssa * 264 | 0) | 0, $326 | 0, 256) | 0;\n     HEAP32[$arHandle + 4818304 + ($j$5$lcssa * 264 | 0) + 256 >> 2] = 1;\n    }\n    $i$373 = $i$373 + 1 | 0;\n    $343 = HEAP32[$0 >> 2] | 0;\n    if (($i$373 | 0) >= ($343 | 0)) {\n     $$lcssa = $343;\n     break;\n    } else $386 = $343;\n   }\n  } else $$lcssa = $324; while (0);\n  if ((HEAP32[$187 >> 2] | 0) == 2) $$0 = 0; else if ((HEAP32[$190 >> 2] | 0) > 0) {\n   $353 = $$lcssa;\n   $i$467 = 0;\n   while (1) {\n    $350 = $arHandle + 4818304 + ($i$467 * 264 | 0) + 56 | 0;\n    $351 = $arHandle + 4818304 + ($i$467 * 264 | 0) + 64 | 0;\n    L139 : do if (($353 | 0) > 0) {\n     $355 = +(HEAP32[$arHandle + 4818304 + ($i$467 * 264 | 0) >> 2] | 0);\n     $j$663 = 0;\n     while (1) {\n      $358 = +(HEAP32[$arHandle + 48 + ($j$663 << 8) >> 2] | 0);\n      $359 = $355 / $358;\n      if (!($359 < .7 | $359 > 1.43)) {\n       $365 = +HEAPF64[$arHandle + 48 + ($j$663 << 8) + 56 >> 3] - +HEAPF64[$350 >> 3];\n       $370 = +HEAPF64[$arHandle + 48 + ($j$663 << 8) + 64 >> 3] - +HEAPF64[$351 >> 3];\n       if (($365 * $365 + $370 * $370) / $358 < .5) {\n        $j$6$lcssa = $j$663;\n        break L139;\n       }\n      }\n      $375 = $j$663 + 1 | 0;\n      if (($375 | 0) < ($353 | 0)) $j$663 = $375; else {\n       $j$6$lcssa = $375;\n       break;\n      }\n     }\n    } else $j$6$lcssa = 0; while (0);\n    if (($j$6$lcssa | 0) == ($353 | 0)) {\n     _memcpy($arHandle + 48 + ($353 << 8) | 0, $arHandle + 4818304 + ($i$467 * 264 | 0) | 0, 256) | 0;\n     $381 = (HEAP32[$0 >> 2] | 0) + 1 | 0;\n     HEAP32[$0 >> 2] = $381;\n     $387 = $381;\n    } else $387 = $353;\n    $i$467 = $i$467 + 1 | 0;\n    if (($i$467 | 0) >= (HEAP32[$190 >> 2] | 0)) {\n     $$0 = 0;\n     break;\n    } else $353 = $387;\n   }\n  } else $$0 = 0;\n } while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) {\n $first = $first | 0;\n $last = $last | 0;\n $db = $db | 0;\n var $$19 = 0, $$pre = 0, $$pre$phi80Z2D = 0, $$pre$phi82Z2D = 0, $$pre$phi84Z2D = 0, $0 = 0, $1 = 0, $107 = 0, $108 = 0, $111 = 0, $113 = 0, $114 = 0, $115 = 0, $117 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $13 = 0, $130 = 0, $134 = 0, $136 = 0, $146 = 0, $148 = 0, $15 = 0, $150 = 0, $151 = 0, $159 = 0, $160 = 0, $161 = 0, $162 = 0, $165 = 0, $167 = 0, $177 = 0, $180 = 0, $181 = 0, $183 = 0, $184 = 0, $185 = 0, $187 = 0, $188 = 0, $19 = 0, $196 = 0, $197 = 0, $198 = 0, $199 = 0, $2 = 0, $201 = 0, $205 = 0, $207 = 0, $217 = 0, $221 = 0, $222 = 0, $225 = 0, $226 = 0, $227 = 0, $230 = 0, $233 = 0, $241 = 0, $242 = 0, $243 = 0, $244 = 0, $246 = 0, $250 = 0, $252 = 0, $261 = 0, $262 = 0, $265 = 0, $267 = 0, $268 = 0, $269 = 0, $271 = 0, $279 = 0, $280 = 0, $281 = 0, $282 = 0, $284 = 0, $288 = 0, $290 = 0, $3 = 0, $30 = 0, $33 = 0, $34 = 0, $37 = 0, $39 = 0, $4 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $53 = 0, $55 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $71 = 0, $72 = 0, $73 = 0, $76 = 0, $79 = 0, $87 = 0, $88 = 0, $89 = 0, $90 = 0, $92 = 0, $96 = 0, $98 = 0, $args = 0, $args3 = 0, $global$0$off0 = 0, $s = 0, $s1 = 0, $s4 = 0, $s5 = 0, $s6 = 0, $t$0 = 0, $t$1$lcssa = 0, $t$1$ph = 0, $t$1107 = 0, $t$2 = 0, $t$3$lcssa = 0, $t$3110 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 144 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $args = sp + 132 | 0;\n $s = sp + 120 | 0;\n $0 = sp + 108 | 0;\n $s1 = sp + 96 | 0;\n $1 = sp + 84 | 0;\n $args3 = sp + 72 | 0;\n $s4 = sp + 60 | 0;\n $2 = sp + 48 | 0;\n $s5 = sp + 36 | 0;\n $3 = sp + 24 | 0;\n $s6 = sp + 12 | 0;\n $4 = sp;\n $5 = $last;\n L1 : do if (($5 - $first | 0) > 2) {\n  if ((HEAP8[$first >> 0] | 0) == 103) {\n   $13 = (HEAP8[$first + 1 >> 0] | 0) == 115;\n   $global$0$off0 = $13;\n   $t$0 = $13 ? $first + 2 | 0 : $first;\n  } else {\n   $global$0$off0 = 0;\n   $t$0 = $first;\n  }\n  $15 = __ZN10__cxxabiv112_GLOBAL__N_126parse_base_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_($t$0, $last, $db) | 0;\n  if (($15 | 0) != ($t$0 | 0)) {\n   if (!$global$0$off0) {\n    $$19 = $15;\n    break;\n   }\n   $19 = HEAP32[$db + 4 >> 2] | 0;\n   if ((HEAP32[$db >> 2] | 0) == ($19 | 0)) {\n    $$19 = $first;\n    break;\n   }\n   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($19 + -24 | 0, 0, 12876) | 0;\n   $$19 = $15;\n   break;\n  }\n  if (($5 - $t$0 | 0) > 2) if ((HEAP8[$t$0 >> 0] | 0) == 115) if ((HEAP8[$t$0 + 1 >> 0] | 0) == 114) {\n   $30 = $t$0 + 2 | 0;\n   if ((HEAP8[$30 >> 0] | 0) == 78) {\n    $33 = $t$0 + 3 | 0;\n    $34 = __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_typeINS0_2DbEEEPKcS4_S4_RT_($33, $last, $db) | 0;\n    if (($34 | 0) == ($33 | 0) | ($34 | 0) == ($last | 0)) {\n     $$19 = $first;\n     break;\n    }\n    $37 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_($34, $last, $db) | 0;\n    $$pre = $db + 4 | 0;\n    do if (($37 | 0) == ($34 | 0)) {\n     $$pre$phi80Z2D = $db;\n     $t$1$ph = $34;\n    } else {\n     $39 = HEAP32[$$pre >> 2] | 0;\n     if ((($39 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {\n      $$19 = $first;\n      break L1;\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($args, $39 + -24 | 0);\n     $47 = HEAP32[$$pre >> 2] | 0;\n     $48 = $47 + -24 | 0;\n     $50 = $47;\n     do {\n      $49 = $50 + -24 | 0;\n      HEAP32[$$pre >> 2] = $49;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($49);\n      $50 = HEAP32[$$pre >> 2] | 0;\n     } while (($50 | 0) != ($48 | 0));\n     $53 = HEAP8[$args >> 0] | 0;\n     $55 = ($53 & 1) == 0;\n     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($47 + -48 | 0, $55 ? $args + 1 | 0 : HEAP32[$args + 8 >> 2] | 0, $55 ? ($53 & 255) >>> 1 : HEAP32[$args + 4 >> 2] | 0) | 0;\n     if (($37 | 0) != ($last | 0)) {\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($args);\n      $$pre$phi80Z2D = $db;\n      $t$1$ph = $37;\n      break;\n     }\n     $66 = HEAP32[$$pre >> 2] | 0;\n     $67 = $66 + -24 | 0;\n     $69 = $66;\n     do {\n      $68 = $69 + -24 | 0;\n      HEAP32[$$pre >> 2] = $68;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($68);\n      $69 = HEAP32[$$pre >> 2] | 0;\n     } while (($69 | 0) != ($67 | 0));\n     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($args);\n     $$19 = $first;\n     break L1;\n    } while (0);\n    $71 = $0 + 8 | 0;\n    $72 = $0 + 1 | 0;\n    $73 = $0 + 4 | 0;\n    if ((HEAP8[$t$1$ph >> 0] | 0) == 69) $t$1$lcssa = $t$1$ph; else {\n     $t$1107 = $t$1$ph;\n     while (1) {\n      $76 = __ZN10__cxxabiv112_GLOBAL__N_115parse_simple_idINS0_2DbEEEPKcS4_S4_RT_($t$1107, $last, $db) | 0;\n      if (($76 | 0) == ($t$1107 | 0) | ($76 | 0) == ($last | 0)) {\n       $$19 = $first;\n       break L1;\n      }\n      $79 = HEAP32[$$pre >> 2] | 0;\n      if ((($79 - (HEAP32[$$pre$phi80Z2D >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {\n       $$19 = $first;\n       break L1;\n      }\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($s, $79 + -24 | 0);\n      $87 = HEAP32[$$pre >> 2] | 0;\n      $88 = $87 + -24 | 0;\n      $90 = $87;\n      do {\n       $89 = $90 + -24 | 0;\n       HEAP32[$$pre >> 2] = $89;\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($89);\n       $90 = HEAP32[$$pre >> 2] | 0;\n      } while (($90 | 0) != ($88 | 0));\n      $92 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($s, 0, 12876) | 0;\n      HEAP32[$0 >> 2] = HEAP32[$92 >> 2];\n      HEAP32[$0 + 4 >> 2] = HEAP32[$92 + 4 >> 2];\n      HEAP32[$0 + 8 >> 2] = HEAP32[$92 + 8 >> 2];\n      HEAP32[$92 >> 2] = 0;\n      HEAP32[$92 + 4 >> 2] = 0;\n      HEAP32[$92 + 8 >> 2] = 0;\n      $96 = HEAP8[$0 >> 0] | 0;\n      $98 = ($96 & 1) == 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($87 + -48 | 0, $98 ? $72 : HEAP32[$71 >> 2] | 0, $98 ? ($96 & 255) >>> 1 : HEAP32[$73 >> 2] | 0) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($s);\n      if ((HEAP8[$76 >> 0] | 0) == 69) {\n       $t$1$lcssa = $76;\n       break;\n      } else $t$1107 = $76;\n     }\n    }\n    $107 = $t$1$lcssa + 1 | 0;\n    $108 = __ZN10__cxxabiv112_GLOBAL__N_126parse_base_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_($107, $last, $db) | 0;\n    if (($108 | 0) == ($107 | 0)) {\n     $111 = HEAP32[$$pre >> 2] | 0;\n     if ((HEAP32[$$pre$phi80Z2D >> 2] | 0) == ($111 | 0)) {\n      $$19 = $first;\n      break;\n     }\n     $113 = $111 + -24 | 0;\n     $115 = $111;\n     while (1) {\n      $114 = $115 + -24 | 0;\n      HEAP32[$$pre >> 2] = $114;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($114);\n      $115 = HEAP32[$$pre >> 2] | 0;\n      if (($115 | 0) == ($113 | 0)) {\n       $$19 = $first;\n       break L1;\n      }\n     }\n    }\n    $117 = HEAP32[$$pre >> 2] | 0;\n    if ((($117 - (HEAP32[$$pre$phi80Z2D >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {\n     $$19 = $first;\n     break;\n    }\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($s1, $117 + -24 | 0);\n    $125 = HEAP32[$$pre >> 2] | 0;\n    $126 = $125 + -24 | 0;\n    $128 = $125;\n    do {\n     $127 = $128 + -24 | 0;\n     HEAP32[$$pre >> 2] = $127;\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($127);\n     $128 = HEAP32[$$pre >> 2] | 0;\n    } while (($128 | 0) != ($126 | 0));\n    $130 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($s1, 0, 12876) | 0;\n    HEAP32[$1 >> 2] = HEAP32[$130 >> 2];\n    HEAP32[$1 + 4 >> 2] = HEAP32[$130 + 4 >> 2];\n    HEAP32[$1 + 8 >> 2] = HEAP32[$130 + 8 >> 2];\n    HEAP32[$130 >> 2] = 0;\n    HEAP32[$130 + 4 >> 2] = 0;\n    HEAP32[$130 + 8 >> 2] = 0;\n    $134 = HEAP8[$1 >> 0] | 0;\n    $136 = ($134 & 1) == 0;\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($125 + -48 | 0, $136 ? $1 + 1 | 0 : HEAP32[$1 + 8 >> 2] | 0, $136 ? ($134 & 255) >>> 1 : HEAP32[$1 + 4 >> 2] | 0) | 0;\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($s1);\n    $$19 = $108;\n    break;\n   }\n   $146 = __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_typeINS0_2DbEEEPKcS4_S4_RT_($30, $last, $db) | 0;\n   if (($146 | 0) != ($30 | 0)) {\n    $148 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_($146, $last, $db) | 0;\n    if (($148 | 0) == ($146 | 0)) $t$2 = $146; else {\n     $150 = $db + 4 | 0;\n     $151 = HEAP32[$150 >> 2] | 0;\n     if ((($151 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {\n      $$19 = $first;\n      break;\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($args3, $151 + -24 | 0);\n     $159 = HEAP32[$150 >> 2] | 0;\n     $160 = $159 + -24 | 0;\n     $162 = $159;\n     do {\n      $161 = $162 + -24 | 0;\n      HEAP32[$150 >> 2] = $161;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($161);\n      $162 = HEAP32[$150 >> 2] | 0;\n     } while (($162 | 0) != ($160 | 0));\n     $165 = HEAP8[$args3 >> 0] | 0;\n     $167 = ($165 & 1) == 0;\n     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($159 + -48 | 0, $167 ? $args3 + 1 | 0 : HEAP32[$args3 + 8 >> 2] | 0, $167 ? ($165 & 255) >>> 1 : HEAP32[$args3 + 4 >> 2] | 0) | 0;\n     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($args3);\n     $t$2 = $148;\n    }\n    $177 = __ZN10__cxxabiv112_GLOBAL__N_126parse_base_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_($t$2, $last, $db) | 0;\n    if (($177 | 0) == ($t$2 | 0)) {\n     $180 = $db + 4 | 0;\n     $181 = HEAP32[$180 >> 2] | 0;\n     if ((HEAP32[$db >> 2] | 0) == ($181 | 0)) {\n      $$19 = $first;\n      break;\n     }\n     $183 = $181 + -24 | 0;\n     $185 = $181;\n     while (1) {\n      $184 = $185 + -24 | 0;\n      HEAP32[$180 >> 2] = $184;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($184);\n      $185 = HEAP32[$180 >> 2] | 0;\n      if (($185 | 0) == ($183 | 0)) {\n       $$19 = $first;\n       break L1;\n      }\n     }\n    }\n    $187 = $db + 4 | 0;\n    $188 = HEAP32[$187 >> 2] | 0;\n    if ((($188 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {\n     $$19 = $first;\n     break;\n    }\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($s4, $188 + -24 | 0);\n    $196 = HEAP32[$187 >> 2] | 0;\n    $197 = $196 + -24 | 0;\n    $199 = $196;\n    do {\n     $198 = $199 + -24 | 0;\n     HEAP32[$187 >> 2] = $198;\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($198);\n     $199 = HEAP32[$187 >> 2] | 0;\n    } while (($199 | 0) != ($197 | 0));\n    $201 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($s4, 0, 12876) | 0;\n    HEAP32[$2 >> 2] = HEAP32[$201 >> 2];\n    HEAP32[$2 + 4 >> 2] = HEAP32[$201 + 4 >> 2];\n    HEAP32[$2 + 8 >> 2] = HEAP32[$201 + 8 >> 2];\n    HEAP32[$201 >> 2] = 0;\n    HEAP32[$201 + 4 >> 2] = 0;\n    HEAP32[$201 + 8 >> 2] = 0;\n    $205 = HEAP8[$2 >> 0] | 0;\n    $207 = ($205 & 1) == 0;\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($196 + -48 | 0, $207 ? $2 + 1 | 0 : HEAP32[$2 + 8 >> 2] | 0, $207 ? ($205 & 255) >>> 1 : HEAP32[$2 + 4 >> 2] | 0) | 0;\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($s4);\n    $$19 = $177;\n    break;\n   }\n   $217 = __ZN10__cxxabiv112_GLOBAL__N_115parse_simple_idINS0_2DbEEEPKcS4_S4_RT_($30, $last, $db) | 0;\n   if (($217 | 0) == ($30 | 0) | ($217 | 0) == ($last | 0)) $$19 = $first; else {\n    if ($global$0$off0) {\n     $221 = $db + 4 | 0;\n     $222 = HEAP32[$221 >> 2] | 0;\n     if ((HEAP32[$db >> 2] | 0) == ($222 | 0)) {\n      $$19 = $first;\n      break;\n     }\n     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($222 + -24 | 0, 0, 12876) | 0;\n     $$pre$phi82Z2D = $221;\n     $$pre$phi84Z2D = $db;\n    } else {\n     $$pre$phi82Z2D = $db + 4 | 0;\n     $$pre$phi84Z2D = $db;\n    }\n    $225 = $3 + 8 | 0;\n    $226 = $3 + 1 | 0;\n    $227 = $3 + 4 | 0;\n    if ((HEAP8[$217 >> 0] | 0) == 69) $t$3$lcssa = $217; else {\n     $t$3110 = $217;\n     while (1) {\n      $230 = __ZN10__cxxabiv112_GLOBAL__N_115parse_simple_idINS0_2DbEEEPKcS4_S4_RT_($t$3110, $last, $db) | 0;\n      if (($230 | 0) == ($t$3110 | 0) | ($230 | 0) == ($last | 0)) {\n       $$19 = $first;\n       break L1;\n      }\n      $233 = HEAP32[$$pre$phi82Z2D >> 2] | 0;\n      if ((($233 - (HEAP32[$$pre$phi84Z2D >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {\n       $$19 = $first;\n       break L1;\n      }\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($s5, $233 + -24 | 0);\n      $241 = HEAP32[$$pre$phi82Z2D >> 2] | 0;\n      $242 = $241 + -24 | 0;\n      $244 = $241;\n      do {\n       $243 = $244 + -24 | 0;\n       HEAP32[$$pre$phi82Z2D >> 2] = $243;\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($243);\n       $244 = HEAP32[$$pre$phi82Z2D >> 2] | 0;\n      } while (($244 | 0) != ($242 | 0));\n      $246 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($s5, 0, 12876) | 0;\n      HEAP32[$3 >> 2] = HEAP32[$246 >> 2];\n      HEAP32[$3 + 4 >> 2] = HEAP32[$246 + 4 >> 2];\n      HEAP32[$3 + 8 >> 2] = HEAP32[$246 + 8 >> 2];\n      HEAP32[$246 >> 2] = 0;\n      HEAP32[$246 + 4 >> 2] = 0;\n      HEAP32[$246 + 8 >> 2] = 0;\n      $250 = HEAP8[$3 >> 0] | 0;\n      $252 = ($250 & 1) == 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($241 + -48 | 0, $252 ? $226 : HEAP32[$225 >> 2] | 0, $252 ? ($250 & 255) >>> 1 : HEAP32[$227 >> 2] | 0) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($s5);\n      if ((HEAP8[$230 >> 0] | 0) == 69) {\n       $t$3$lcssa = $230;\n       break;\n      } else $t$3110 = $230;\n     }\n    }\n    $261 = $t$3$lcssa + 1 | 0;\n    $262 = __ZN10__cxxabiv112_GLOBAL__N_126parse_base_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_($261, $last, $db) | 0;\n    if (($262 | 0) == ($261 | 0)) {\n     $265 = HEAP32[$$pre$phi82Z2D >> 2] | 0;\n     if ((HEAP32[$$pre$phi84Z2D >> 2] | 0) == ($265 | 0)) {\n      $$19 = $first;\n      break;\n     }\n     $267 = $265 + -24 | 0;\n     $269 = $265;\n     while (1) {\n      $268 = $269 + -24 | 0;\n      HEAP32[$$pre$phi82Z2D >> 2] = $268;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($268);\n      $269 = HEAP32[$$pre$phi82Z2D >> 2] | 0;\n      if (($269 | 0) == ($267 | 0)) {\n       $$19 = $first;\n       break L1;\n      }\n     }\n    }\n    $271 = HEAP32[$$pre$phi82Z2D >> 2] | 0;\n    if ((($271 - (HEAP32[$$pre$phi84Z2D >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$19 = $first; else {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($s6, $271 + -24 | 0);\n     $279 = HEAP32[$$pre$phi82Z2D >> 2] | 0;\n     $280 = $279 + -24 | 0;\n     $282 = $279;\n     do {\n      $281 = $282 + -24 | 0;\n      HEAP32[$$pre$phi82Z2D >> 2] = $281;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($281);\n      $282 = HEAP32[$$pre$phi82Z2D >> 2] | 0;\n     } while (($282 | 0) != ($280 | 0));\n     $284 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($s6, 0, 12876) | 0;\n     HEAP32[$4 >> 2] = HEAP32[$284 >> 2];\n     HEAP32[$4 + 4 >> 2] = HEAP32[$284 + 4 >> 2];\n     HEAP32[$4 + 8 >> 2] = HEAP32[$284 + 8 >> 2];\n     HEAP32[$284 >> 2] = 0;\n     HEAP32[$284 + 4 >> 2] = 0;\n     HEAP32[$284 + 8 >> 2] = 0;\n     $288 = HEAP8[$4 >> 0] | 0;\n     $290 = ($288 & 1) == 0;\n     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($279 + -48 | 0, $290 ? $4 + 1 | 0 : HEAP32[$4 + 8 >> 2] | 0, $290 ? ($288 & 255) >>> 1 : HEAP32[$4 + 4 >> 2] | 0) | 0;\n     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4);\n     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($s6);\n     $$19 = $262;\n    }\n   }\n  } else $$19 = $first; else $$19 = $first; else $$19 = $first;\n } else $$19 = $first; while (0);\n STACKTOP = sp;\n return $$19 | 0;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_118parse_substitutionINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) {\n $first = $first | 0;\n $last = $last | 0;\n $db = $db | 0;\n var $$0 = 0, $$0$i$i$i = 0, $$0$i$i$i12 = 0, $$0$i$i$i17 = 0, $$0$i$i$i22 = 0, $$0$i$i$i27 = 0, $$0$i$i$i32 = 0, $$0$i$i$i37 = 0, $$0$i$i$i40 = 0, $$lcssa98 = 0, $0 = 0, $1 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $110 = 0, $112 = 0, $115 = 0, $116 = 0, $119 = 0, $12 = 0, $120 = 0, $122 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $136 = 0, $138 = 0, $14 = 0, $141 = 0, $142 = 0, $145 = 0, $146 = 0, $148 = 0, $15 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $16 = 0, $162 = 0, $164 = 0, $167 = 0, $168 = 0, $172 = 0, $176 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $181 = 0, $182 = 0, $184 = 0, $187 = 0, $195 = 0, $196 = 0, $197 = 0, $2 = 0, $200 = 0, $203 = 0, $212 = 0, $213 = 0, $214 = 0, $217 = 0, $218 = 0, $220 = 0, $221 = 0, $223 = 0, $224 = 0, $229 = 0, $233 = 0, $240 = 0, $242 = 0, $243 = 0, $244 = 0, $245 = 0, $246 = 0, $248 = 0, $25 = 0, $251 = 0, $259 = 0, $26 = 0, $260 = 0, $261 = 0, $264 = 0, $267 = 0, $27 = 0, $28 = 0, $3 = 0, $32 = 0, $34 = 0, $37 = 0, $38 = 0, $4 = 0, $41 = 0, $42 = 0, $44 = 0, $5 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $58 = 0, $60 = 0, $63 = 0, $64 = 0, $67 = 0, $68 = 0, $70 = 0, $77 = 0, $78 = 0, $79 = 0, $80 = 0, $84 = 0, $86 = 0, $89 = 0, $90 = 0, $93 = 0, $94 = 0, $96 = 0, $__v$i$i38 = 0, $isdigittmp5 = 0, $isdigittmp9 = 0, $sub$179 = 0, $sub$179$lcssa = 0, $t$080 = 0, $t$080$lcssa = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 176 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $__v$i$i38 = sp + 144 | 0;\n $0 = sp + 120 | 0;\n $1 = sp + 96 | 0;\n $2 = sp + 72 | 0;\n $3 = sp + 48 | 0;\n $4 = sp + 24 | 0;\n $5 = sp;\n L1 : do if (($last - $first | 0) > 1) if ((HEAP8[$first >> 0] | 0) == 83) {\n  $12 = $first + 1 | 0;\n  $13 = HEAP8[$12 >> 0] | 0;\n  $14 = $13 << 24 >> 24;\n  switch ($14 | 0) {\n  case 97:\n   {\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj15EEERAT__Kc($0, 12787);\n    $15 = $db + 4 | 0;\n    $16 = HEAP32[$15 >> 2] | 0;\n    $18 = HEAP32[$db + 8 >> 2] | 0;\n    if ($16 >>> 0 < $18 >>> 0) {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($16, $0);\n     HEAP32[$15 >> 2] = (HEAP32[$15 >> 2] | 0) + 24;\n    } else {\n     $25 = HEAP32[$db >> 2] | 0;\n     $26 = $16 - $25 | 0;\n     $27 = ($26 | 0) / 24 | 0;\n     $28 = $27 + 1 | 0;\n     if (($26 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n     $32 = ($18 - $25 | 0) / 24 | 0;\n     if ($32 >>> 0 < 1073741823) {\n      $34 = $32 << 1;\n      $$0$i$i$i = $34 >>> 0 < $28 >>> 0 ? $28 : $34;\n     } else $$0$i$i$i = 2147483647;\n     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i38, $$0$i$i$i, $27, $db + 12 | 0);\n     $37 = $__v$i$i38 + 8 | 0;\n     $38 = HEAP32[$37 >> 2] | 0;\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($38, $0);\n     HEAP32[$37 >> 2] = $38 + 24;\n     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i38);\n     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i38);\n    }\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0);\n    $$0 = $first + 2 | 0;\n    break L1;\n    break;\n   }\n  case 98:\n   {\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj18EEERAT__Kc($1, 12802);\n    $41 = $db + 4 | 0;\n    $42 = HEAP32[$41 >> 2] | 0;\n    $44 = HEAP32[$db + 8 >> 2] | 0;\n    if ($42 >>> 0 < $44 >>> 0) {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($42, $1);\n     HEAP32[$41 >> 2] = (HEAP32[$41 >> 2] | 0) + 24;\n    } else {\n     $51 = HEAP32[$db >> 2] | 0;\n     $52 = $42 - $51 | 0;\n     $53 = ($52 | 0) / 24 | 0;\n     $54 = $53 + 1 | 0;\n     if (($52 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n     $58 = ($44 - $51 | 0) / 24 | 0;\n     if ($58 >>> 0 < 1073741823) {\n      $60 = $58 << 1;\n      $$0$i$i$i12 = $60 >>> 0 < $54 >>> 0 ? $54 : $60;\n     } else $$0$i$i$i12 = 2147483647;\n     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i38, $$0$i$i$i12, $53, $db + 12 | 0);\n     $63 = $__v$i$i38 + 8 | 0;\n     $64 = HEAP32[$63 >> 2] | 0;\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($64, $1);\n     HEAP32[$63 >> 2] = $64 + 24;\n     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i38);\n     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i38);\n    }\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1);\n    $$0 = $first + 2 | 0;\n    break L1;\n    break;\n   }\n  case 115:\n   {\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj12EEERAT__Kc($2, 12820);\n    $67 = $db + 4 | 0;\n    $68 = HEAP32[$67 >> 2] | 0;\n    $70 = HEAP32[$db + 8 >> 2] | 0;\n    if ($68 >>> 0 < $70 >>> 0) {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($68, $2);\n     HEAP32[$67 >> 2] = (HEAP32[$67 >> 2] | 0) + 24;\n    } else {\n     $77 = HEAP32[$db >> 2] | 0;\n     $78 = $68 - $77 | 0;\n     $79 = ($78 | 0) / 24 | 0;\n     $80 = $79 + 1 | 0;\n     if (($78 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n     $84 = ($70 - $77 | 0) / 24 | 0;\n     if ($84 >>> 0 < 1073741823) {\n      $86 = $84 << 1;\n      $$0$i$i$i17 = $86 >>> 0 < $80 >>> 0 ? $80 : $86;\n     } else $$0$i$i$i17 = 2147483647;\n     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i38, $$0$i$i$i17, $79, $db + 12 | 0);\n     $89 = $__v$i$i38 + 8 | 0;\n     $90 = HEAP32[$89 >> 2] | 0;\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($90, $2);\n     HEAP32[$89 >> 2] = $90 + 24;\n     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i38);\n     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i38);\n    }\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($2);\n    $$0 = $first + 2 | 0;\n    break L1;\n    break;\n   }\n  case 105:\n   {\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj13EEERAT__Kc($3, 12832);\n    $93 = $db + 4 | 0;\n    $94 = HEAP32[$93 >> 2] | 0;\n    $96 = HEAP32[$db + 8 >> 2] | 0;\n    if ($94 >>> 0 < $96 >>> 0) {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($94, $3);\n     HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + 24;\n    } else {\n     $103 = HEAP32[$db >> 2] | 0;\n     $104 = $94 - $103 | 0;\n     $105 = ($104 | 0) / 24 | 0;\n     $106 = $105 + 1 | 0;\n     if (($104 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n     $110 = ($96 - $103 | 0) / 24 | 0;\n     if ($110 >>> 0 < 1073741823) {\n      $112 = $110 << 1;\n      $$0$i$i$i22 = $112 >>> 0 < $106 >>> 0 ? $106 : $112;\n     } else $$0$i$i$i22 = 2147483647;\n     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i38, $$0$i$i$i22, $105, $db + 12 | 0);\n     $115 = $__v$i$i38 + 8 | 0;\n     $116 = HEAP32[$115 >> 2] | 0;\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($116, $3);\n     HEAP32[$115 >> 2] = $116 + 24;\n     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i38);\n     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i38);\n    }\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($3);\n    $$0 = $first + 2 | 0;\n    break L1;\n    break;\n   }\n  case 111:\n   {\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj13EEERAT__Kc($4, 12845);\n    $119 = $db + 4 | 0;\n    $120 = HEAP32[$119 >> 2] | 0;\n    $122 = HEAP32[$db + 8 >> 2] | 0;\n    if ($120 >>> 0 < $122 >>> 0) {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($120, $4);\n     HEAP32[$119 >> 2] = (HEAP32[$119 >> 2] | 0) + 24;\n    } else {\n     $129 = HEAP32[$db >> 2] | 0;\n     $130 = $120 - $129 | 0;\n     $131 = ($130 | 0) / 24 | 0;\n     $132 = $131 + 1 | 0;\n     if (($130 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n     $136 = ($122 - $129 | 0) / 24 | 0;\n     if ($136 >>> 0 < 1073741823) {\n      $138 = $136 << 1;\n      $$0$i$i$i27 = $138 >>> 0 < $132 >>> 0 ? $132 : $138;\n     } else $$0$i$i$i27 = 2147483647;\n     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i38, $$0$i$i$i27, $131, $db + 12 | 0);\n     $141 = $__v$i$i38 + 8 | 0;\n     $142 = HEAP32[$141 >> 2] | 0;\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($142, $4);\n     HEAP32[$141 >> 2] = $142 + 24;\n     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i38);\n     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i38);\n    }\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($4);\n    $$0 = $first + 2 | 0;\n    break L1;\n    break;\n   }\n  case 100:\n   {\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj14EEERAT__Kc($5, 12858);\n    $145 = $db + 4 | 0;\n    $146 = HEAP32[$145 >> 2] | 0;\n    $148 = HEAP32[$db + 8 >> 2] | 0;\n    if ($146 >>> 0 < $148 >>> 0) {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($146, $5);\n     HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + 24;\n    } else {\n     $155 = HEAP32[$db >> 2] | 0;\n     $156 = $146 - $155 | 0;\n     $157 = ($156 | 0) / 24 | 0;\n     $158 = $157 + 1 | 0;\n     if (($156 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n     $162 = ($148 - $155 | 0) / 24 | 0;\n     if ($162 >>> 0 < 1073741823) {\n      $164 = $162 << 1;\n      $$0$i$i$i32 = $164 >>> 0 < $158 >>> 0 ? $158 : $164;\n     } else $$0$i$i$i32 = 2147483647;\n     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i38, $$0$i$i$i32, $157, $db + 12 | 0);\n     $167 = $__v$i$i38 + 8 | 0;\n     $168 = HEAP32[$167 >> 2] | 0;\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($168, $5);\n     HEAP32[$167 >> 2] = $168 + 24;\n     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i38);\n     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i38);\n    }\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($5);\n    $$0 = $first + 2 | 0;\n    break L1;\n    break;\n   }\n  case 95:\n   {\n    $172 = HEAP32[$db + 16 >> 2] | 0;\n    if (($172 | 0) == (HEAP32[$db + 20 >> 2] | 0)) {\n     $$0 = $first;\n     break L1;\n    }\n    $176 = HEAP32[$172 >> 2] | 0;\n    $178 = HEAP32[$172 + 4 >> 2] | 0;\n    $179 = $db + 4 | 0;\n    $180 = $db + 8 | 0;\n    $181 = $db + 12 | 0;\n    $182 = $__v$i$i38 + 8 | 0;\n    L100 : do if (($176 | 0) != ($178 | 0)) {\n     $187 = $176;\n     while (1) {\n      $184 = HEAP32[$179 >> 2] | 0;\n      if (($184 | 0) == (HEAP32[$180 >> 2] | 0)) {\n       $195 = $184 - (HEAP32[$db >> 2] | 0) | 0;\n       $196 = ($195 | 0) / 24 | 0;\n       $197 = $196 + 1 | 0;\n       if (($195 | 0) < -24) break;\n       if ($196 >>> 0 < 1073741823) {\n        $200 = $196 << 1;\n        $$0$i$i$i37 = $200 >>> 0 < $197 >>> 0 ? $197 : $200;\n       } else $$0$i$i$i37 = 2147483647;\n       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i38, $$0$i$i$i37, $196, $181);\n       $203 = HEAP32[$182 >> 2] | 0;\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($203, $187);\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($203 + 12 | 0, $187 + 12 | 0);\n       HEAP32[$182 >> 2] = $203 + 24;\n       __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i38);\n       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i38);\n      } else {\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($184, $187);\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($184 + 12 | 0, $187 + 12 | 0);\n       HEAP32[$179 >> 2] = (HEAP32[$179 >> 2] | 0) + 24;\n      }\n      $187 = $187 + 24 | 0;\n      if (($187 | 0) == ($178 | 0)) break L100;\n     }\n     __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n    } while (0);\n    $$0 = $first + 2 | 0;\n    break L1;\n    break;\n   }\n  default:\n   {\n    if (($14 + -48 | 0) >>> 0 < 10) $213 = $13; else {\n     if (!(_isupper($14) | 0)) {\n      $$0 = $first;\n      break L1;\n     }\n     $213 = HEAP8[$12 >> 0] | 0;\n    }\n    $212 = $213 << 24 >> 24;\n    $isdigittmp5 = $212 + -48 | 0;\n    $214 = $first + 2 | 0;\n    if (($214 | 0) == ($last | 0)) {\n     $$0 = $first;\n     break L1;\n    }\n    $sub$179 = $isdigittmp5 >>> 0 < 10 ? $isdigittmp5 : $212 + -55 | 0;\n    $t$080 = $214;\n    while (1) {\n     $217 = HEAP8[$t$080 >> 0] | 0;\n     $218 = $217 << 24 >> 24;\n     if (($218 + -48 | 0) >>> 0 < 10) $224 = $217; else {\n      $220 = (_isupper($218) | 0) == 0;\n      $221 = HEAP8[$t$080 >> 0] | 0;\n      if ($220) {\n       $$lcssa98 = $221;\n       $sub$179$lcssa = $sub$179;\n       $t$080$lcssa = $t$080;\n       break;\n      } else $224 = $221;\n     }\n     $223 = $224 << 24 >> 24;\n     $isdigittmp9 = $223 + -48 | 0;\n     $t$080 = $t$080 + 1 | 0;\n     if (($t$080 | 0) == ($last | 0)) {\n      $$0 = $first;\n      break L1;\n     } else $sub$179 = ($isdigittmp9 >>> 0 < 10 ? $isdigittmp9 : $223 + -55 | 0) + ($sub$179 * 36 | 0) | 0;\n    }\n    if ($$lcssa98 << 24 >> 24 != 95) {\n     $$0 = $first;\n     break L1;\n    }\n    $229 = $sub$179$lcssa + 1 | 0;\n    $233 = HEAP32[$db + 16 >> 2] | 0;\n    if ($229 >>> 0 >= (HEAP32[$db + 20 >> 2] | 0) - $233 >> 4 >>> 0) {\n     $$0 = $first;\n     break L1;\n    }\n    $240 = HEAP32[$233 + ($229 << 4) >> 2] | 0;\n    $242 = HEAP32[$233 + ($229 << 4) + 4 >> 2] | 0;\n    $243 = $db + 4 | 0;\n    $244 = $db + 8 | 0;\n    $245 = $db + 12 | 0;\n    $246 = $__v$i$i38 + 8 | 0;\n    L19 : do if (($240 | 0) != ($242 | 0)) {\n     $251 = $240;\n     while (1) {\n      $248 = HEAP32[$243 >> 2] | 0;\n      if (($248 | 0) == (HEAP32[$244 >> 2] | 0)) {\n       $259 = $248 - (HEAP32[$db >> 2] | 0) | 0;\n       $260 = ($259 | 0) / 24 | 0;\n       $261 = $260 + 1 | 0;\n       if (($259 | 0) < -24) break;\n       if ($260 >>> 0 < 1073741823) {\n        $264 = $260 << 1;\n        $$0$i$i$i40 = $264 >>> 0 < $261 >>> 0 ? $261 : $264;\n       } else $$0$i$i$i40 = 2147483647;\n       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i38, $$0$i$i$i40, $260, $245);\n       $267 = HEAP32[$246 >> 2] | 0;\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($267, $251);\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($267 + 12 | 0, $251 + 12 | 0);\n       HEAP32[$246 >> 2] = $267 + 24;\n       __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i38);\n       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i38);\n      } else {\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($248, $251);\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($248 + 12 | 0, $251 + 12 | 0);\n       HEAP32[$243 >> 2] = (HEAP32[$243 >> 2] | 0) + 24;\n      }\n      $251 = $251 + 24 | 0;\n      if (($251 | 0) == ($242 | 0)) break L19;\n     }\n     __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n    } while (0);\n    $$0 = $t$080$lcssa + 1 | 0;\n    break L1;\n   }\n  }\n } else $$0 = $first; else $$0 = $first; while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _icpGetInitXw2Xc_from_PlanarData($matXc2U, $screenCoord, $worldCoord, $num, $initMatXw2Xc) {\n $matXc2U = $matXc2U | 0;\n $screenCoord = $screenCoord | 0;\n $worldCoord = $worldCoord | 0;\n $num = $num | 0;\n $initMatXw2Xc = $initMatXw2Xc | 0;\n var $$$10$i = 0.0, $$$16$i = 0.0, $$$18$i = 0.0, $$$8$i = 0.0, $$0 = 0, $$10$$i = 0.0, $$10$i = 0.0, $$15$i = 0.0, $$16$$i = 0.0, $$16$i = 0.0, $$17$i = 0.0, $$18$$i = 0.0, $$18$i = 0.0, $$7$i = 0.0, $$7$i1 = 0.0, $$7$i2 = 0.0, $$8$$i = 0.0, $$8$i = 0.0, $$9$i = 0.0, $102 = 0, $104 = 0, $106 = 0, $11 = 0, $110 = 0, $112 = 0, $114 = 0.0, $118 = 0.0, $121 = 0.0, $122 = 0.0, $125 = 0.0, $129 = 0.0, $132 = 0.0, $133 = 0.0, $135 = 0.0, $140 = 0.0, $147 = 0.0, $151 = 0.0, $157 = 0.0, $163 = 0.0, $169 = 0.0, $170 = 0.0, $171 = 0.0, $172 = 0.0, $173 = 0.0, $174 = 0.0, $175 = 0.0, $177 = 0.0, $178 = 0.0, $180 = 0.0, $191 = 0.0, $193 = 0.0, $194 = 0.0, $195 = 0.0, $197 = 0.0, $199 = 0.0, $200 = 0.0, $203 = 0.0, $209 = 0.0, $211 = 0.0, $212 = 0.0, $213 = 0.0, $218 = 0.0, $226 = 0.0, $234 = 0, $235 = 0.0, $236 = 0.0, $237 = 0.0, $242 = 0.0, $244 = 0.0, $248 = 0.0, $249 = 0.0, $251 = 0.0, $255 = 0.0, $258 = 0.0, $265 = 0.0, $268 = 0.0, $270 = 0.0, $272 = 0.0, $274 = 0.0, $276 = 0.0, $278 = 0.0, $280 = 0.0, $281 = 0, $283 = 0, $291 = 0, $292 = 0.0, $293 = 0.0, $294 = 0.0, $299 = 0.0, $301 = 0.0, $305 = 0.0, $306 = 0.0, $308 = 0.0, $312 = 0.0, $315 = 0.0, $32 = 0, $322 = 0.0, $325 = 0.0, $327 = 0.0, $329 = 0.0, $33 = 0, $331 = 0.0, $333 = 0.0, $335 = 0.0, $337 = 0.0, $338 = 0, $340 = 0, $345 = 0.0, $35 = 0, $352 = 0.0, $359 = 0.0, $366 = 0.0, $37 = 0, $377 = 0.0, $379 = 0.0, $38 = 0, $380 = 0.0, $381 = 0.0, $383 = 0.0, $385 = 0.0, $386 = 0.0, $389 = 0.0, $39 = 0, $395 = 0.0, $41 = 0, $43 = 0, $56 = 0, $83 = 0, $96 = 0, $cb$0$i = 0.0, $e1$0$i = 0.0, $e2$0$i = 0.0, $e3$0$i = 0.0, $e4$0$i = 0.0, $f$0$i = 0, $f$2$i = 0, $i$0 = 0, $i$15 = 0, $t$sroa$0$0 = 0.0, $t$sroa$6$0 = 0.0, $v1$sroa$0$0$i = 0.0, $v1$sroa$16$0$i = 0.0, $v1$sroa$31$0$i = 0.0, $v2$sroa$0$0$i = 0.0, $v2$sroa$16$0$i = 0.0, $v2$sroa$31$0$i = 0.0, $v3$sroa$0$0$i = 0.0, $v3$sroa$0$0$v3$sroa$31$0$v3$sroa$60$0$i = 0.0, $v3$sroa$0$2$i = 0.0, $v3$sroa$31$0$i = 0.0, $v3$sroa$31$0$v3$sroa$60$0$i = 0.0, $v3$sroa$31$0$v3$sroa$60$0$v3$sroa$0$0$i = 0.0, $v3$sroa$31$2$i = 0.0, $v3$sroa$60$0$i = 0.0, $v3$sroa$60$0$v3$sroa$31$0$i = 0.0, $v3$sroa$60$3$i = 0.0, $vararg_buffer = 0, $vararg_buffer1 = 0, $vararg_buffer11 = 0, $vararg_buffer3 = 0, $vararg_buffer5 = 0, $vararg_buffer7 = 0, $vararg_buffer9 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 64 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer11 = sp + 48 | 0;\n $vararg_buffer9 = sp + 40 | 0;\n $vararg_buffer7 = sp + 32 | 0;\n $vararg_buffer5 = sp + 24 | 0;\n $vararg_buffer3 = sp + 16 | 0;\n $vararg_buffer1 = sp + 8 | 0;\n $vararg_buffer = sp;\n L1 : do if (($num | 0) < 4) $$0 = -1; else {\n  $i$0 = 0;\n  while (1) {\n   if (($i$0 | 0) >= ($num | 0)) break;\n   if (+HEAPF64[$worldCoord + ($i$0 * 24 | 0) + 16 >> 3] != 0.0) {\n    $$0 = -1;\n    break L1;\n   } else $i$0 = $i$0 + 1 | 0;\n  }\n  if (+HEAPF64[$matXc2U >> 3] == 0.0) $$0 = -1; else if (+HEAPF64[$matXc2U + 32 >> 3] != 0.0) $$0 = -1; else {\n   $11 = $matXc2U + 40 | 0;\n   if (+HEAPF64[$11 >> 3] == 0.0) $$0 = -1; else if (+HEAPF64[$matXc2U + 64 >> 3] != 0.0) $$0 = -1; else if (+HEAPF64[$matXc2U + 72 >> 3] != 0.0) $$0 = -1; else if (+HEAPF64[$matXc2U + 80 >> 3] != 1.0) $$0 = -1; else if (+HEAPF64[$matXc2U + 24 >> 3] != 0.0) $$0 = -1; else if (+HEAPF64[$matXc2U + 56 >> 3] != 0.0) $$0 = -1; else if (+HEAPF64[$matXc2U + 88 >> 3] != 0.0) $$0 = -1; else {\n    $32 = $num << 1;\n    $33 = _arMatrixAlloc($32, 8) | 0;\n    if (!$33) {\n     _arLog(3, 5124, $vararg_buffer);\n     $$0 = -1;\n     break;\n    }\n    $35 = _arMatrixAlloc($32, 1) | 0;\n    if (!$35) {\n     _arMatrixFree($33) | 0;\n     _arLog(3, 5150, $vararg_buffer1);\n     $$0 = -1;\n     break;\n    }\n    if ($num) {\n     $37 = HEAP32[$33 >> 2] | 0;\n     $38 = HEAP32[$35 >> 2] | 0;\n     $i$15 = 0;\n     do {\n      $39 = $worldCoord + ($i$15 * 24 | 0) | 0;\n      $41 = $i$15 << 4;\n      HEAPF64[$37 + ($41 << 3) >> 3] = +HEAPF64[$39 >> 3];\n      $43 = $worldCoord + ($i$15 * 24 | 0) + 8 | 0;\n      HEAPF64[$37 + (($41 | 1) << 3) >> 3] = +HEAPF64[$43 >> 3];\n      HEAPF64[$37 + (($41 | 2) << 3) >> 3] = 1.0;\n      HEAPF64[$37 + (($41 | 3) << 3) >> 3] = 0.0;\n      HEAPF64[$37 + (($41 | 4) << 3) >> 3] = 0.0;\n      HEAPF64[$37 + (($41 | 5) << 3) >> 3] = 0.0;\n      $56 = $screenCoord + ($i$15 << 4) | 0;\n      HEAPF64[$37 + (($41 | 6) << 3) >> 3] = -(+HEAPF64[$39 >> 3] * +HEAPF64[$56 >> 3]);\n      HEAPF64[$37 + (($41 | 7) << 3) >> 3] = -(+HEAPF64[$43 >> 3] * +HEAPF64[$56 >> 3]);\n      HEAPF64[$37 + (($41 | 8) << 3) >> 3] = 0.0;\n      HEAPF64[$37 + (($41 | 9) << 3) >> 3] = 0.0;\n      HEAPF64[$37 + (($41 | 10) << 3) >> 3] = 0.0;\n      HEAPF64[$37 + (($41 | 11) << 3) >> 3] = +HEAPF64[$39 >> 3];\n      HEAPF64[$37 + (($41 | 12) << 3) >> 3] = +HEAPF64[$43 >> 3];\n      HEAPF64[$37 + (($41 | 13) << 3) >> 3] = 1.0;\n      $83 = $screenCoord + ($i$15 << 4) + 8 | 0;\n      HEAPF64[$37 + (($41 | 14) << 3) >> 3] = -(+HEAPF64[$39 >> 3] * +HEAPF64[$83 >> 3]);\n      HEAPF64[$37 + (($41 | 15) << 3) >> 3] = -(+HEAPF64[$43 >> 3] * +HEAPF64[$83 >> 3]);\n      $96 = $i$15 << 1;\n      HEAPF64[$38 + ($96 << 3) >> 3] = +HEAPF64[$56 >> 3];\n      HEAPF64[$38 + (($96 | 1) << 3) >> 3] = +HEAPF64[$83 >> 3];\n      $i$15 = $i$15 + 1 | 0;\n     } while (($i$15 | 0) != ($num | 0));\n    }\n    $102 = _arMatrixAllocTrans($33) | 0;\n    if (!$102) {\n     _arMatrixFree($33) | 0;\n     _arMatrixFree($35) | 0;\n     _arLog(3, 5176, $vararg_buffer3);\n     $$0 = -1;\n     break;\n    }\n    $104 = _arMatrixAllocMul($102, $33) | 0;\n    if (!$104) {\n     _arMatrixFree($33) | 0;\n     _arMatrixFree($35) | 0;\n     _arMatrixFree($102) | 0;\n     _arLog(3, 5202, $vararg_buffer5);\n     $$0 = -1;\n     break;\n    }\n    $106 = _arMatrixAllocMul($102, $35) | 0;\n    if (!$106) {\n     _arMatrixFree($33) | 0;\n     _arMatrixFree($35) | 0;\n     _arMatrixFree($102) | 0;\n     _arMatrixFree($104) | 0;\n     _arLog(3, 5228, $vararg_buffer7);\n     $$0 = -1;\n     break;\n    }\n    if ((_arMatrixSelfInv($104) | 0) < 0) {\n     _arMatrixFree($33) | 0;\n     _arMatrixFree($35) | 0;\n     _arMatrixFree($102) | 0;\n     _arMatrixFree($104) | 0;\n     _arMatrixFree($106) | 0;\n     _arLog(3, 5254, $vararg_buffer9);\n     $$0 = -1;\n     break;\n    }\n    $110 = _arMatrixAllocMul($104, $106) | 0;\n    if (!$110) {\n     _arMatrixFree($33) | 0;\n     _arMatrixFree($35) | 0;\n     _arMatrixFree($102) | 0;\n     _arMatrixFree($104) | 0;\n     _arMatrixFree($106) | 0;\n     _arLog(3, 5280, $vararg_buffer11);\n     $$0 = -1;\n     break;\n    }\n    $112 = HEAP32[$110 >> 2] | 0;\n    $114 = +HEAPF64[$112 + 48 >> 3];\n    $118 = +HEAPF64[$matXc2U + 48 >> 3];\n    $121 = +HEAPF64[$11 >> 3];\n    $122 = (+HEAPF64[$112 + 24 >> 3] - $114 * $118) / $121;\n    $125 = +HEAPF64[$matXc2U + 16 >> 3];\n    $129 = +HEAPF64[$matXc2U + 8 >> 3];\n    $132 = +HEAPF64[$matXc2U >> 3];\n    $133 = (+HEAPF64[$112 >> 3] - $114 * $125 - $122 * $129) / $132;\n    $135 = +HEAPF64[$112 + 56 >> 3];\n    $140 = (+HEAPF64[$112 + 32 >> 3] - $118 * $135) / $121;\n    $147 = (+HEAPF64[$112 + 8 >> 3] - $125 * $135 - $129 * $140) / $132;\n    $151 = (+HEAPF64[$112 + 40 >> 3] - $118) / $121;\n    $157 = (+HEAPF64[$112 + 16 >> 3] - $125 - $129 * $151) / $132;\n    _arMatrixFree($33) | 0;\n    _arMatrixFree($35) | 0;\n    _arMatrixFree($102) | 0;\n    _arMatrixFree($104) | 0;\n    _arMatrixFree($106) | 0;\n    _arMatrixFree($110) | 0;\n    $163 = +Math_sqrt(+($114 * $114 + ($122 * $122 + $133 * $133)));\n    $169 = +Math_sqrt(+($135 * $135 + ($140 * $140 + $147 * $147)));\n    $170 = $133 / $163;\n    $171 = $122 / $163;\n    $172 = $114 / $163;\n    $173 = $147 / $169;\n    $174 = $140 / $169;\n    $175 = $135 / $169;\n    $177 = ($163 + $169) * .5;\n    $178 = $157 / $177;\n    $180 = 1.0 / $177;\n    if ($180 < 0.0) {\n     $$7$i1 = -$171;\n     $191 = -$175;\n     $193 = -$174;\n     $194 = -$172;\n     $197 = -$173;\n     $199 = -$170;\n     $t$sroa$0$0 = -$178;\n     $t$sroa$6$0 = -$180;\n    } else {\n     $$7$i1 = $171;\n     $191 = $175;\n     $193 = $174;\n     $194 = $172;\n     $197 = $173;\n     $199 = $170;\n     $t$sroa$0$0 = $178;\n     $t$sroa$6$0 = $151 / $177;\n    }\n    $195 = $191 * $$7$i1 - $193 * $194;\n    $200 = $197 * $194 - $191 * $199;\n    $203 = $193 * $199 - $197 * $$7$i1;\n    $209 = +Math_sqrt(+($203 * $203 + ($195 * $195 + $200 * $200)));\n    do if ($209 == 0.0) {\n     $$7$i2 = $$7$i1;\n     $377 = $191;\n     $379 = $193;\n     $380 = $194;\n     $383 = $197;\n     $385 = $199;\n    } else {\n     $211 = $195 / $209;\n     $212 = $200 / $209;\n     $213 = $203 / $209;\n     $218 = $191 * $194 + ($193 * $$7$i1 + $197 * $199);\n     $cb$0$i = $218 < 0.0 ? -$218 : $218;\n     $226 = (+Math_sqrt(+($cb$0$i + 1.0)) + +Math_sqrt(+(1.0 - $cb$0$i))) * .5;\n     if ($199 * $212 - $$7$i1 * $211 != 0.0) {\n      $f$0$i = 0;\n      $v1$sroa$0$0$i = $199;\n      $v1$sroa$16$0$i = $$7$i1;\n      $v1$sroa$31$0$i = $194;\n      $v3$sroa$0$0$i = $211;\n      $v3$sroa$31$0$i = $212;\n      $v3$sroa$60$0$i = $213;\n     } else {\n      $234 = $199 * $213 - $194 * $211 != 0.0;\n      $f$0$i = $234 ? 1 : 2;\n      $v1$sroa$0$0$i = $234 ? $199 : $194;\n      $v1$sroa$16$0$i = $234 ? $194 : $$7$i1;\n      $v1$sroa$31$0$i = $234 ? $$7$i1 : $199;\n      $v3$sroa$0$0$i = $234 ? $211 : $213;\n      $v3$sroa$31$0$i = $234 ? $213 : $212;\n      $v3$sroa$60$0$i = $234 ? $212 : $211;\n     }\n     $235 = $v1$sroa$0$0$i * $v3$sroa$31$0$i;\n     $236 = $v1$sroa$16$0$i * $v3$sroa$0$0$i;\n     $237 = $235 - $236;\n     if ($237 == 0.0) {\n      $$7$i2 = $$7$i1;\n      $377 = $191;\n      $379 = $193;\n      $380 = $194;\n      $383 = $197;\n      $385 = $199;\n      break;\n     }\n     $242 = ($v1$sroa$16$0$i * $v3$sroa$60$0$i - $v1$sroa$31$0$i * $v3$sroa$31$0$i) / $237;\n     $244 = $226 * $v3$sroa$31$0$i / $237;\n     $248 = $236 - $235;\n     $249 = ($v1$sroa$0$0$i * $v3$sroa$60$0$i - $v1$sroa$31$0$i * $v3$sroa$0$0$i) / $248;\n     $251 = $226 * $v3$sroa$0$0$i / $248;\n     $255 = $242 * $242 + $249 * $249 + 1.0;\n     $258 = $242 * $244 + $249 * $251;\n     $265 = $258 * $258 - $255 * ($244 * $244 + $251 * $251 + -1.0);\n     if ($265 < 0.0) {\n      $$7$i2 = $$7$i1;\n      $377 = $191;\n      $379 = $193;\n      $380 = $194;\n      $383 = $197;\n      $385 = $199;\n      break;\n     }\n     $268 = +Math_sqrt(+$265);\n     $270 = ($268 - $258) / $255;\n     $272 = $244 + $242 * $270;\n     $274 = $251 + $249 * $270;\n     $276 = (-$258 - $268) / $255;\n     $278 = $244 + $242 * $276;\n     $280 = $251 + $249 * $276;\n     $281 = ($f$0$i | 0) == 1;\n     $v3$sroa$31$0$v3$sroa$60$0$i = $281 ? $v3$sroa$31$0$i : $v3$sroa$60$0$i;\n     $v3$sroa$60$0$v3$sroa$31$0$i = $281 ? $v3$sroa$60$0$i : $v3$sroa$31$0$i;\n     $$7$i = $281 ? $270 : $274;\n     $$8$i = $281 ? $274 : $270;\n     $$9$i = $281 ? $276 : $280;\n     $$10$i = $281 ? $280 : $276;\n     $283 = ($f$0$i | 0) == 2 & ($281 ^ 1);\n     $v3$sroa$0$0$v3$sroa$31$0$v3$sroa$60$0$i = $283 ? $v3$sroa$0$0$i : $v3$sroa$31$0$v3$sroa$60$0$i;\n     $v3$sroa$31$0$v3$sroa$60$0$v3$sroa$0$0$i = $283 ? $v3$sroa$31$0$v3$sroa$60$0$i : $v3$sroa$0$0$i;\n     $$8$$i = $283 ? $$8$i : $272;\n     $$$8$i = $283 ? $272 : $$8$i;\n     $$10$$i = $283 ? $$10$i : $278;\n     $$$10$i = $283 ? $278 : $$10$i;\n     if ($197 * $v3$sroa$60$0$v3$sroa$31$0$i - $193 * $v3$sroa$31$0$v3$sroa$60$0$v3$sroa$0$0$i != 0.0) {\n      $f$2$i = 0;\n      $v2$sroa$0$0$i = $197;\n      $v2$sroa$16$0$i = $193;\n      $v2$sroa$31$0$i = $191;\n      $v3$sroa$0$2$i = $v3$sroa$31$0$v3$sroa$60$0$v3$sroa$0$0$i;\n      $v3$sroa$31$2$i = $v3$sroa$60$0$v3$sroa$31$0$i;\n      $v3$sroa$60$3$i = $v3$sroa$0$0$v3$sroa$31$0$v3$sroa$60$0$i;\n     } else {\n      $291 = $197 * $v3$sroa$0$0$v3$sroa$31$0$v3$sroa$60$0$i - $191 * $v3$sroa$31$0$v3$sroa$60$0$v3$sroa$0$0$i != 0.0;\n      $f$2$i = $291 ? 1 : 2;\n      $v2$sroa$0$0$i = $291 ? $197 : $191;\n      $v2$sroa$16$0$i = $291 ? $191 : $193;\n      $v2$sroa$31$0$i = $291 ? $193 : $197;\n      $v3$sroa$0$2$i = $291 ? $v3$sroa$31$0$v3$sroa$60$0$v3$sroa$0$0$i : $v3$sroa$0$0$v3$sroa$31$0$v3$sroa$60$0$i;\n      $v3$sroa$31$2$i = $291 ? $v3$sroa$0$0$v3$sroa$31$0$v3$sroa$60$0$i : $v3$sroa$60$0$v3$sroa$31$0$i;\n      $v3$sroa$60$3$i = $291 ? $v3$sroa$60$0$v3$sroa$31$0$i : $v3$sroa$31$0$v3$sroa$60$0$v3$sroa$0$0$i;\n     }\n     $292 = $v2$sroa$0$0$i * $v3$sroa$31$2$i;\n     $293 = $v2$sroa$16$0$i * $v3$sroa$0$2$i;\n     $294 = $292 - $293;\n     if ($294 == 0.0) {\n      $$7$i2 = $$7$i1;\n      $377 = $191;\n      $379 = $193;\n      $380 = $194;\n      $383 = $197;\n      $385 = $199;\n      break;\n     }\n     $299 = ($v2$sroa$16$0$i * $v3$sroa$60$3$i - $v2$sroa$31$0$i * $v3$sroa$31$2$i) / $294;\n     $301 = $226 * $v3$sroa$31$2$i / $294;\n     $305 = $293 - $292;\n     $306 = ($v2$sroa$0$0$i * $v3$sroa$60$3$i - $v2$sroa$31$0$i * $v3$sroa$0$2$i) / $305;\n     $308 = $226 * $v3$sroa$0$2$i / $305;\n     $312 = $299 * $299 + $306 * $306 + 1.0;\n     $315 = $299 * $301 + $306 * $308;\n     $322 = $315 * $315 - $312 * ($301 * $301 + $308 * $308 + -1.0);\n     if ($322 < 0.0) {\n      $$7$i2 = $$7$i1;\n      $377 = $191;\n      $379 = $193;\n      $380 = $194;\n      $383 = $197;\n      $385 = $199;\n      break;\n     }\n     $325 = +Math_sqrt(+$322);\n     $327 = ($325 - $315) / $312;\n     $329 = $301 + $299 * $327;\n     $331 = $308 + $306 * $327;\n     $333 = (-$315 - $325) / $312;\n     $335 = $301 + $299 * $333;\n     $337 = $308 + $306 * $333;\n     $338 = ($f$2$i | 0) == 1;\n     $$15$i = $338 ? $327 : $331;\n     $$16$i = $338 ? $331 : $327;\n     $$17$i = $338 ? $333 : $337;\n     $$18$i = $338 ? $337 : $333;\n     $340 = ($f$2$i | 0) == 2 & ($338 ^ 1);\n     $$16$$i = $340 ? $$16$i : $329;\n     $$$16$i = $340 ? $329 : $$16$i;\n     $$18$$i = $340 ? $$18$i : $335;\n     $$$18$i = $340 ? $335 : $$18$i;\n     $345 = $$$8$i * $$$16$i + ($$7$i * $$15$i + $$8$$i * $$16$$i);\n     $e1$0$i = $345 < 0.0 ? -$345 : $345;\n     $352 = $$$8$i * $$$18$i + ($$7$i * $$17$i + $$8$$i * $$18$$i);\n     $e2$0$i = $352 < 0.0 ? -$352 : $352;\n     $359 = $$$10$i * $$$16$i + ($$9$i * $$15$i + $$10$$i * $$16$$i);\n     $e3$0$i = $359 < 0.0 ? -$359 : $359;\n     $366 = $$$10$i * $$$18$i + ($$9$i * $$17$i + $$10$$i * $$18$$i);\n     $e4$0$i = $366 < 0.0 ? -$366 : $366;\n     if ($e1$0$i < $e2$0$i) if ($e1$0$i < $e3$0$i) {\n      if ($e1$0$i < $e4$0$i) {\n       $$7$i2 = $$7$i;\n       $377 = $$$16$i;\n       $379 = $$15$i;\n       $380 = $$$8$i;\n       $383 = $$16$$i;\n       $385 = $$8$$i;\n       break;\n      }\n      $$7$i2 = $$9$i;\n      $377 = $$$18$i;\n      $379 = $$17$i;\n      $380 = $$$10$i;\n      $383 = $$18$$i;\n      $385 = $$10$$i;\n      break;\n     } else {\n      if ($e3$0$i < $e4$0$i) {\n       $$7$i2 = $$9$i;\n       $377 = $$$16$i;\n       $379 = $$15$i;\n       $380 = $$$10$i;\n       $383 = $$16$$i;\n       $385 = $$10$$i;\n       break;\n      }\n      $$7$i2 = $$9$i;\n      $377 = $$$18$i;\n      $379 = $$17$i;\n      $380 = $$$10$i;\n      $383 = $$18$$i;\n      $385 = $$10$$i;\n      break;\n     } else if ($e2$0$i < $e3$0$i) {\n      if ($e2$0$i < $e4$0$i) {\n       $$7$i2 = $$7$i;\n       $377 = $$$18$i;\n       $379 = $$17$i;\n       $380 = $$$8$i;\n       $383 = $$18$$i;\n       $385 = $$8$$i;\n       break;\n      }\n      $$7$i2 = $$9$i;\n      $377 = $$$18$i;\n      $379 = $$17$i;\n      $380 = $$$10$i;\n      $383 = $$18$$i;\n      $385 = $$10$$i;\n      break;\n     } else {\n      if ($e3$0$i < $e4$0$i) {\n       $$7$i2 = $$9$i;\n       $377 = $$$16$i;\n       $379 = $$15$i;\n       $380 = $$$10$i;\n       $383 = $$16$$i;\n       $385 = $$10$$i;\n       break;\n      }\n      $$7$i2 = $$9$i;\n      $377 = $$$18$i;\n      $379 = $$17$i;\n      $380 = $$$10$i;\n      $383 = $$18$$i;\n      $385 = $$10$$i;\n      break;\n     }\n    } while (0);\n    $381 = $377 * $$7$i2 - $379 * $380;\n    $386 = $383 * $380 - $377 * $385;\n    $389 = $379 * $385 - $383 * $$7$i2;\n    $395 = +Math_sqrt(+($389 * $389 + ($381 * $381 + $386 * $386)));\n    HEAPF64[$initMatXw2Xc >> 3] = $385;\n    HEAPF64[$initMatXw2Xc + 32 >> 3] = $$7$i2;\n    HEAPF64[$initMatXw2Xc + 64 >> 3] = $380;\n    HEAPF64[$initMatXw2Xc + 8 >> 3] = $383;\n    HEAPF64[$initMatXw2Xc + 40 >> 3] = $379;\n    HEAPF64[$initMatXw2Xc + 72 >> 3] = $377;\n    HEAPF64[$initMatXw2Xc + 16 >> 3] = $381 / $395;\n    HEAPF64[$initMatXw2Xc + 48 >> 3] = $386 / $395;\n    HEAPF64[$initMatXw2Xc + 80 >> 3] = $389 / $395;\n    HEAPF64[$initMatXw2Xc + 24 >> 3] = $t$sroa$0$0;\n    HEAPF64[$initMatXw2Xc + 56 >> 3] = $t$sroa$6$0;\n    HEAPF64[$initMatXw2Xc + 88 >> 3] = $180;\n    $$0 = 0;\n   }\n  }\n } while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arGetTransMatMultiSquare2($handle, $marker_info, $marker_num, $config, $robustFlag) {\n $handle = $handle | 0;\n $marker_info = $marker_info | 0;\n $marker_num = $marker_num | 0;\n $config = $config | 0;\n $robustFlag = $robustFlag | 0;\n var $$0 = 0.0, $$pre38 = 0, $0 = 0, $1 = 0, $114 = 0, $116 = 0, $119 = 0, $12 = 0, $121 = 0, $123 = 0, $125 = 0, $128 = 0, $13 = 0, $130 = 0, $133 = 0, $140 = 0, $15 = 0, $150 = 0, $160 = 0, $171 = 0, $2 = 0, $20 = 0.0, $209 = 0, $221 = 0, $224 = 0, $225 = 0, $226 = 0.0, $229 = 0.0, $232 = 0.0, $235 = 0.0, $239 = 0.0, $240 = 0, $241 = 0.0, $242 = 0, $258 = 0.0, $259 = 0.0, $276 = 0.0, $277 = 0.0, $294 = 0.0, $295 = 0.0, $3 = 0, $312 = 0.0, $313 = 0.0, $342 = 0, $344 = 0, $346 = 0, $348 = 0, $35 = 0, $38 = 0, $40 = 0, $43 = 0, $47 = 0, $5 = 0, $59 = 0.0, $6 = 0, $7 = 0, $75 = 0, $77 = 0, $79 = 0, $86 = 0, $err$0 = 0.0, $err$1 = 0.0, $err$2 = 0.0, $err$3 = 0.0, $err$4 = 0.0, $err$5 = 0.0, $err$6 = 0.0, $i$081 = 0, $i$165 = 0, $i$256 = 0, $i$942 = 0, $j$077 = 0, $j$1055 = 0, $j$171 = 0, $j$261 = 0, $j$357 = 0, $j$4 = 0, $j$553 = 0, $j$651 = 0, $j$749 = 0, $j$847 = 0, $j$945 = 0, $k$0$lcssa = 0, $k$078 = 0, $k$1 = 0, $k$2$lcssa = 0, $k$273 = 0, $k$3 = 0, $max$0$lcssa = 0, $max$062 = 0, $max$1 = 0, $max$2 = 0, $maxArea$063 = 0, $maxArea$1 = 0, $maxArea$2 = 0, $trans1 = 0, $trans2 = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, $vnum$0$lcssa = 0, $vnum$064 = 0, $vnum$1 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 208 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer1 = sp + 200 | 0;\n $vararg_buffer = sp + 192 | 0;\n $trans1 = sp + 96 | 0;\n $trans2 = sp;\n $0 = $config + 4 | 0;\n $1 = HEAP32[$0 >> 2] | 0;\n $2 = $config + 112 | 0;\n $3 = $config + 120 | 0;\n if (($1 | 0) > 0) {\n  $5 = HEAP32[$config >> 2] | 0;\n  $6 = ($marker_num | 0) > 0;\n  $7 = ($marker_num | 0) > 0;\n  $i$081 = 0;\n  do {\n   if (!(HEAP32[$5 + ($i$081 * 320 | 0) + 4 >> 2] | 0)) {\n    if ($6) {\n     $15 = HEAP32[$5 + ($i$081 * 320 | 0) >> 2] | 0;\n     $j$077 = 0;\n     $k$078 = -1;\n     while (1) {\n      if ((HEAP32[$marker_info + ($j$077 << 8) + 8 >> 2] | 0) == ($15 | 0)) {\n       $20 = +HEAPF64[$marker_info + ($j$077 << 8) + 40 >> 3];\n       if ($20 < +HEAPF64[$2 >> 3]) $k$1 = $k$078; else if (($k$078 | 0) == -1) $k$1 = $j$077; else if (+HEAPF64[$marker_info + ($k$078 << 8) + 40 >> 3] < $20) $k$1 = $j$077; else $k$1 = $k$078;\n      } else $k$1 = $k$078;\n      $j$077 = $j$077 + 1 | 0;\n      if (($j$077 | 0) >= ($marker_num | 0)) {\n       $k$0$lcssa = $k$1;\n       break;\n      } else $k$078 = $k$1;\n     }\n    } else $k$0$lcssa = -1;\n    HEAP32[$5 + ($i$081 * 320 | 0) + 304 >> 2] = $k$0$lcssa;\n    if (($k$0$lcssa | 0) > -1) HEAP32[$marker_info + ($k$0$lcssa << 8) + 16 >> 2] = HEAP32[$marker_info + ($k$0$lcssa << 8) + 20 >> 2];\n   } else {\n    $12 = $5 + ($i$081 * 320 | 0) + 312 | 0;\n    $13 = $5 + ($i$081 * 320 | 0) | 0;\n    if ($7) {\n     $j$171 = 0;\n     $k$273 = -1;\n     while (1) {\n      $35 = HEAP32[$marker_info + ($j$171 << 8) + 12 >> 2] | 0;\n      if (!$35) {\n       $38 = $marker_info + ($j$171 << 8) + 248 | 0;\n       $40 = HEAP32[$38 >> 2] | 0;\n       $43 = HEAP32[$38 + 4 >> 2] | 0;\n       if (($40 | 0) == 0 & ($43 | 0) == 0) label = 19; else {\n        $47 = $12;\n        if (($40 | 0) == (HEAP32[$47 >> 2] | 0) ? ($43 | 0) == (HEAP32[$47 + 4 >> 2] | 0) : 0) label = 20; else $k$3 = $k$273;\n       }\n      } else label = 19;\n      if ((label | 0) == 19) {\n       label = 0;\n       if (($35 | 0) == (HEAP32[$13 >> 2] | 0)) label = 20; else $k$3 = $k$273;\n      }\n      if ((label | 0) == 20) {\n       label = 0;\n       $59 = +HEAPF64[$marker_info + ($j$171 << 8) + 48 >> 3];\n       if ($59 < +HEAPF64[$3 >> 3]) $k$3 = $k$273; else if (($k$273 | 0) == -1) $k$3 = $j$171; else if (+HEAPF64[$marker_info + ($k$273 << 8) + 48 >> 3] < $59) $k$3 = $j$171; else $k$3 = $k$273;\n      }\n      $j$171 = $j$171 + 1 | 0;\n      if (($j$171 | 0) >= ($marker_num | 0)) {\n       $k$2$lcssa = $k$3;\n       break;\n      } else $k$273 = $k$3;\n     }\n    } else $k$2$lcssa = -1;\n    HEAP32[$5 + ($i$081 * 320 | 0) + 304 >> 2] = $k$2$lcssa;\n    if (($k$2$lcssa | 0) > -1) HEAP32[$marker_info + ($k$2$lcssa << 8) + 16 >> 2] = HEAP32[$marker_info + ($k$2$lcssa << 8) + 24 >> 2];\n   }\n   $i$081 = $i$081 + 1 | 0;\n  } while (($i$081 | 0) < ($1 | 0));\n }\n if (($1 | 0) > 0) {\n  $i$165 = 0;\n  $max$062 = 0;\n  $maxArea$063 = 0;\n  $vnum$064 = 0;\n  while (1) {\n   $75 = HEAP32[$config >> 2] | 0;\n   $77 = HEAP32[$75 + ($i$165 * 320 | 0) + 304 >> 2] | 0;\n   do if (($77 | 0) < 0) {\n    $max$2 = $max$062;\n    $maxArea$2 = $maxArea$063;\n    $vnum$1 = $vnum$064;\n   } else {\n    $79 = $marker_info + ($77 << 8) | 0;\n    if (+_arGetTransMatSquare($handle, $79, +HEAPF64[$75 + ($i$165 * 320 | 0) + 8 >> 3], $trans2) > 4.0) {\n     HEAP32[(HEAP32[$config >> 2] | 0) + ($i$165 * 320 | 0) + 304 >> 2] = -1;\n     $86 = $marker_info + ($77 << 8) + 236 | 0;\n     if (HEAP32[$86 >> 2] | 0) {\n      $max$2 = $max$062;\n      $maxArea$2 = $maxArea$063;\n      $vnum$1 = $vnum$064;\n      break;\n     }\n     HEAP32[$86 >> 2] = 7;\n     $max$2 = $max$062;\n     $maxArea$2 = $maxArea$063;\n     $vnum$1 = $vnum$064;\n     break;\n    }\n    $$pre38 = HEAP32[$79 >> 2] | 0;\n    if (($vnum$064 | 0) == 0 | ($maxArea$063 | 0) < ($$pre38 | 0)) {\n     $j$261 = 0;\n     do {\n      HEAPF64[$trans1 + ($j$261 << 5) >> 3] = +HEAPF64[$trans2 + ($j$261 << 5) >> 3];\n      HEAPF64[$trans1 + ($j$261 << 5) + 8 >> 3] = +HEAPF64[$trans2 + ($j$261 << 5) + 8 >> 3];\n      HEAPF64[$trans1 + ($j$261 << 5) + 16 >> 3] = +HEAPF64[$trans2 + ($j$261 << 5) + 16 >> 3];\n      HEAPF64[$trans1 + ($j$261 << 5) + 24 >> 3] = +HEAPF64[$trans2 + ($j$261 << 5) + 24 >> 3];\n      $j$261 = $j$261 + 1 | 0;\n     } while (($j$261 | 0) != 3);\n     $max$1 = $i$165;\n     $maxArea$1 = $$pre38;\n    } else {\n     $max$1 = $max$062;\n     $maxArea$1 = $maxArea$063;\n    }\n    $max$2 = $max$1;\n    $maxArea$2 = $maxArea$1;\n    $vnum$1 = $vnum$064 + 1 | 0;\n   } while (0);\n   $i$165 = $i$165 + 1 | 0;\n   if (($i$165 | 0) >= (HEAP32[$0 >> 2] | 0)) {\n    $max$0$lcssa = $max$2;\n    $vnum$0$lcssa = $vnum$1;\n    break;\n   } else {\n    $max$062 = $max$2;\n    $maxArea$063 = $maxArea$2;\n    $vnum$064 = $vnum$1;\n   }\n  }\n } else {\n  $max$0$lcssa = 0;\n  $vnum$0$lcssa = 0;\n }\n do if (!$vnum$0$lcssa) label = 38; else if (($vnum$0$lcssa | 0) < (HEAP32[$config + 128 >> 2] | 0)) label = 38; else {\n  _arUtilMatMul($trans1, (HEAP32[$config >> 2] | 0) + ($max$0$lcssa * 320 | 0) + 112 | 0, $trans2) | 0;\n  $114 = $vnum$0$lcssa << 2;\n  $116 = _malloc($vnum$0$lcssa << 6) | 0;\n  if (!$116) {\n   _arLog(3, 5471, $vararg_buffer);\n   _exit(1);\n  }\n  $119 = _malloc($vnum$0$lcssa * 96 | 0) | 0;\n  if (!$119) {\n   _arLog(3, 5471, $vararg_buffer1);\n   _exit(1);\n  }\n  $121 = HEAP32[$0 >> 2] | 0;\n  if (($121 | 0) > 0) {\n   $123 = HEAP32[$config >> 2] | 0;\n   $i$256 = 0;\n   $j$357 = 0;\n   while (1) {\n    $125 = HEAP32[$123 + ($i$256 * 320 | 0) + 304 >> 2] | 0;\n    if (($125 | 0) < 0) $j$4 = $j$357; else {\n     $128 = HEAP32[$marker_info + ($125 << 8) + 16 >> 2] | 0;\n     $130 = (4 - $128 | 0) % 4 | 0;\n     $133 = $j$357 << 3;\n     HEAPF64[$116 + ($133 << 3) >> 3] = +HEAPF64[$marker_info + ($125 << 8) + 168 + ($130 << 4) >> 3];\n     HEAPF64[$116 + (($133 | 1) << 3) >> 3] = +HEAPF64[$marker_info + ($125 << 8) + 168 + ($130 << 4) + 8 >> 3];\n     $140 = (5 - $128 | 0) % 4 | 0;\n     HEAPF64[$116 + (($133 | 2) << 3) >> 3] = +HEAPF64[$marker_info + ($125 << 8) + 168 + ($140 << 4) >> 3];\n     HEAPF64[$116 + (($133 | 3) << 3) >> 3] = +HEAPF64[$marker_info + ($125 << 8) + 168 + ($140 << 4) + 8 >> 3];\n     $150 = (6 - $128 | 0) % 4 | 0;\n     HEAPF64[$116 + (($133 | 4) << 3) >> 3] = +HEAPF64[$marker_info + ($125 << 8) + 168 + ($150 << 4) >> 3];\n     HEAPF64[$116 + (($133 | 5) << 3) >> 3] = +HEAPF64[$marker_info + ($125 << 8) + 168 + ($150 << 4) + 8 >> 3];\n     $160 = (7 - $128 | 0) % 4 | 0;\n     HEAPF64[$116 + (($133 | 6) << 3) >> 3] = +HEAPF64[$marker_info + ($125 << 8) + 168 + ($160 << 4) >> 3];\n     HEAPF64[$116 + (($133 | 7) << 3) >> 3] = +HEAPF64[$marker_info + ($125 << 8) + 168 + ($160 << 4) + 8 >> 3];\n     $171 = $j$357 * 12 | 0;\n     HEAPF64[$119 + ($171 << 3) >> 3] = +HEAPF64[$123 + ($i$256 * 320 | 0) + 208 >> 3];\n     HEAPF64[$119 + (($171 | 1) << 3) >> 3] = +HEAPF64[$123 + ($i$256 * 320 | 0) + 216 >> 3];\n     HEAPF64[$119 + (($171 | 2) << 3) >> 3] = +HEAPF64[$123 + ($i$256 * 320 | 0) + 224 >> 3];\n     HEAPF64[$119 + (($171 | 3) << 3) >> 3] = +HEAPF64[$123 + ($i$256 * 320 | 0) + 232 >> 3];\n     HEAPF64[$119 + ($171 + 4 << 3) >> 3] = +HEAPF64[$123 + ($i$256 * 320 | 0) + 240 >> 3];\n     HEAPF64[$119 + ($171 + 5 << 3) >> 3] = +HEAPF64[$123 + ($i$256 * 320 | 0) + 248 >> 3];\n     HEAPF64[$119 + ($171 + 6 << 3) >> 3] = +HEAPF64[$123 + ($i$256 * 320 | 0) + 256 >> 3];\n     HEAPF64[$119 + ($171 + 7 << 3) >> 3] = +HEAPF64[$123 + ($i$256 * 320 | 0) + 264 >> 3];\n     HEAPF64[$119 + ($171 + 8 << 3) >> 3] = +HEAPF64[$123 + ($i$256 * 320 | 0) + 272 >> 3];\n     HEAPF64[$119 + ($171 + 9 << 3) >> 3] = +HEAPF64[$123 + ($i$256 * 320 | 0) + 280 >> 3];\n     $209 = HEAP32[$config >> 2] | 0;\n     HEAPF64[$119 + ($171 + 10 << 3) >> 3] = +HEAPF64[$209 + ($i$256 * 320 | 0) + 288 >> 3];\n     HEAPF64[$119 + ($171 + 11 << 3) >> 3] = +HEAPF64[$209 + ($i$256 * 320 | 0) + 296 >> 3];\n     $j$4 = $j$357 + 1 | 0;\n    }\n    $i$256 = $i$256 + 1 | 0;\n    if (($i$256 | 0) >= ($121 | 0)) break; else $j$357 = $j$4;\n   }\n  }\n  $221 = $config + 104 | 0;\n  $224 = ($robustFlag | 0) != 0;\n  if (!(HEAP32[$221 >> 2] | 0)) {\n   $225 = $config + 8 | 0;\n   $226 = +_arGetTransMat($handle, $trans2, $116, $119, $114, $225);\n   if ($224 & $226 >= 20.0) {\n    _icpSetInlierProbability(HEAP32[$handle >> 2] | 0, .8) | 0;\n    $229 = +_arGetTransMatRobust($handle, $trans2, $116, $119, $114, $225);\n    if (!($229 >= 20.0)) $err$0 = $229; else {\n     _icpSetInlierProbability(HEAP32[$handle >> 2] | 0, .6) | 0;\n     $232 = +_arGetTransMatRobust($handle, $trans2, $116, $119, $114, $225);\n     if (!($232 >= 20.0)) $err$0 = $232; else {\n      _icpSetInlierProbability(HEAP32[$handle >> 2] | 0, .4) | 0;\n      $235 = +_arGetTransMatRobust($handle, $trans2, $116, $119, $114, $225);\n      if (!($235 >= 20.0)) $err$0 = $235; else {\n       _icpSetInlierProbability(HEAP32[$handle >> 2] | 0, 0.0) | 0;\n       $err$0 = +_arGetTransMatRobust($handle, $trans2, $116, $119, $114, $225);\n      }\n     }\n    }\n   } else $err$0 = $226;\n   _free($119);\n   _free($116);\n   $err$6 = $err$0;\n  } else {\n   $239 = +_arGetTransMat($handle, $trans2, $116, $119, $114, $trans1);\n   $240 = $config + 8 | 0;\n   $241 = +_arGetTransMat($handle, $240, $116, $119, $114, $240);\n   $242 = $239 < $241;\n   do if ($224) {\n    if ($242) {\n     $j$553 = 0;\n     do {\n      HEAPF64[$config + 8 + ($j$553 << 5) >> 3] = +HEAPF64[$trans1 + ($j$553 << 5) >> 3];\n      HEAPF64[$config + 8 + ($j$553 << 5) + 8 >> 3] = +HEAPF64[$trans1 + ($j$553 << 5) + 8 >> 3];\n      HEAPF64[$config + 8 + ($j$553 << 5) + 16 >> 3] = +HEAPF64[$trans1 + ($j$553 << 5) + 16 >> 3];\n      HEAPF64[$config + 8 + ($j$553 << 5) + 24 >> 3] = +HEAPF64[$trans1 + ($j$553 << 5) + 24 >> 3];\n      $j$553 = $j$553 + 1 | 0;\n     } while (($j$553 | 0) != 3);\n     $err$1 = $239;\n    } else $err$1 = $241;\n    if (!($err$1 >= 20.0)) $err$5 = $err$1; else {\n     _icpSetInlierProbability(HEAP32[$handle >> 2] | 0, .8) | 0;\n     $258 = +_arGetTransMatRobust($handle, $trans2, $116, $119, $114, $trans1);\n     $259 = +_arGetTransMatRobust($handle, $240, $116, $119, $114, $240);\n     if ($258 < $259) {\n      $j$651 = 0;\n      do {\n       HEAPF64[$config + 8 + ($j$651 << 5) >> 3] = +HEAPF64[$trans1 + ($j$651 << 5) >> 3];\n       HEAPF64[$config + 8 + ($j$651 << 5) + 8 >> 3] = +HEAPF64[$trans1 + ($j$651 << 5) + 8 >> 3];\n       HEAPF64[$config + 8 + ($j$651 << 5) + 16 >> 3] = +HEAPF64[$trans1 + ($j$651 << 5) + 16 >> 3];\n       HEAPF64[$config + 8 + ($j$651 << 5) + 24 >> 3] = +HEAPF64[$trans1 + ($j$651 << 5) + 24 >> 3];\n       $j$651 = $j$651 + 1 | 0;\n      } while (($j$651 | 0) != 3);\n      $err$2 = $258;\n     } else $err$2 = $259;\n     if (!($err$2 >= 20.0)) $err$5 = $err$2; else {\n      _icpSetInlierProbability(HEAP32[$handle >> 2] | 0, .6) | 0;\n      $276 = +_arGetTransMatRobust($handle, $trans2, $116, $119, $114, $trans1);\n      $277 = +_arGetTransMatRobust($handle, $240, $116, $119, $114, $240);\n      if ($276 < $277) {\n       $j$749 = 0;\n       do {\n        HEAPF64[$config + 8 + ($j$749 << 5) >> 3] = +HEAPF64[$trans1 + ($j$749 << 5) >> 3];\n        HEAPF64[$config + 8 + ($j$749 << 5) + 8 >> 3] = +HEAPF64[$trans1 + ($j$749 << 5) + 8 >> 3];\n        HEAPF64[$config + 8 + ($j$749 << 5) + 16 >> 3] = +HEAPF64[$trans1 + ($j$749 << 5) + 16 >> 3];\n        HEAPF64[$config + 8 + ($j$749 << 5) + 24 >> 3] = +HEAPF64[$trans1 + ($j$749 << 5) + 24 >> 3];\n        $j$749 = $j$749 + 1 | 0;\n       } while (($j$749 | 0) != 3);\n       $err$3 = $276;\n      } else $err$3 = $277;\n      if (!($err$3 >= 20.0)) $err$5 = $err$3; else {\n       _icpSetInlierProbability(HEAP32[$handle >> 2] | 0, .4) | 0;\n       $294 = +_arGetTransMatRobust($handle, $trans2, $116, $119, $114, $trans1);\n       $295 = +_arGetTransMatRobust($handle, $240, $116, $119, $114, $240);\n       if ($294 < $295) {\n        $j$847 = 0;\n        do {\n         HEAPF64[$config + 8 + ($j$847 << 5) >> 3] = +HEAPF64[$trans1 + ($j$847 << 5) >> 3];\n         HEAPF64[$config + 8 + ($j$847 << 5) + 8 >> 3] = +HEAPF64[$trans1 + ($j$847 << 5) + 8 >> 3];\n         HEAPF64[$config + 8 + ($j$847 << 5) + 16 >> 3] = +HEAPF64[$trans1 + ($j$847 << 5) + 16 >> 3];\n         HEAPF64[$config + 8 + ($j$847 << 5) + 24 >> 3] = +HEAPF64[$trans1 + ($j$847 << 5) + 24 >> 3];\n         $j$847 = $j$847 + 1 | 0;\n        } while (($j$847 | 0) != 3);\n        $err$4 = $294;\n       } else $err$4 = $295;\n       if (!($err$4 >= 20.0)) $err$5 = $err$4; else {\n        _icpSetInlierProbability(HEAP32[$handle >> 2] | 0, 0.0) | 0;\n        $312 = +_arGetTransMatRobust($handle, $trans2, $116, $119, $114, $trans1);\n        $313 = +_arGetTransMatRobust($handle, $240, $116, $119, $114, $240);\n        if ($312 < $313) $j$945 = 0; else {\n         $err$5 = $313;\n         break;\n        }\n        do {\n         HEAPF64[$config + 8 + ($j$945 << 5) >> 3] = +HEAPF64[$trans1 + ($j$945 << 5) >> 3];\n         HEAPF64[$config + 8 + ($j$945 << 5) + 8 >> 3] = +HEAPF64[$trans1 + ($j$945 << 5) + 8 >> 3];\n         HEAPF64[$config + 8 + ($j$945 << 5) + 16 >> 3] = +HEAPF64[$trans1 + ($j$945 << 5) + 16 >> 3];\n         HEAPF64[$config + 8 + ($j$945 << 5) + 24 >> 3] = +HEAPF64[$trans1 + ($j$945 << 5) + 24 >> 3];\n         $j$945 = $j$945 + 1 | 0;\n        } while (($j$945 | 0) != 3);\n        $err$5 = $312;\n       }\n      }\n     }\n    }\n   } else if ($242) {\n    $j$1055 = 0;\n    do {\n     HEAPF64[$config + 8 + ($j$1055 << 5) >> 3] = +HEAPF64[$trans1 + ($j$1055 << 5) >> 3];\n     HEAPF64[$config + 8 + ($j$1055 << 5) + 8 >> 3] = +HEAPF64[$trans1 + ($j$1055 << 5) + 8 >> 3];\n     HEAPF64[$config + 8 + ($j$1055 << 5) + 16 >> 3] = +HEAPF64[$trans1 + ($j$1055 << 5) + 16 >> 3];\n     HEAPF64[$config + 8 + ($j$1055 << 5) + 24 >> 3] = +HEAPF64[$trans1 + ($j$1055 << 5) + 24 >> 3];\n     $j$1055 = $j$1055 + 1 | 0;\n    } while (($j$1055 | 0) != 3);\n    $err$5 = $239;\n   } else $err$5 = $241; while (0);\n   _free($119);\n   _free($116);\n   $err$6 = $err$5;\n  }\n  if ($err$6 < 20.0) {\n   HEAP32[$221 >> 2] = 1;\n   $$0 = $err$6;\n   break;\n  }\n  HEAP32[$221 >> 2] = 0;\n  $342 = HEAP32[$0 >> 2] | 0;\n  if (($342 | 0) > 0) {\n   $344 = HEAP32[$config >> 2] | 0;\n   $i$942 = 0;\n   do {\n    $346 = HEAP32[$344 + ($i$942 * 320 | 0) + 304 >> 2] | 0;\n    if (($346 | 0) >= 0) {\n     $348 = $marker_info + ($346 << 8) + 236 | 0;\n     if (!(HEAP32[$348 >> 2] | 0)) HEAP32[$348 >> 2] = 8;\n    }\n    $i$942 = $i$942 + 1 | 0;\n   } while (($i$942 | 0) < ($342 | 0));\n   $$0 = $err$6;\n  } else $$0 = $err$6;\n } while (0);\n if ((label | 0) == 38) {\n  HEAP32[$config + 104 >> 2] = 0;\n  $$0 = -1.0;\n }\n STACKTOP = sp;\n return +$$0;\n}\n\nfunction __ZNSt3__112__next_primeEj($n) {\n $n = $n | 0;\n var $$ = 0, $$0 = 0, $$k0$0 = 0, $0 = 0, $1 = 0, $103 = 0, $104 = 0, $108 = 0, $109 = 0, $113 = 0, $114 = 0, $118 = 0, $119 = 0, $12 = 0, $123 = 0, $124 = 0, $128 = 0, $129 = 0, $133 = 0, $134 = 0, $138 = 0, $139 = 0, $143 = 0, $144 = 0, $148 = 0, $149 = 0, $153 = 0, $154 = 0, $158 = 0, $159 = 0, $163 = 0, $164 = 0, $168 = 0, $169 = 0, $173 = 0, $174 = 0, $178 = 0, $179 = 0, $18 = 0, $183 = 0, $184 = 0, $188 = 0, $189 = 0, $19 = 0, $193 = 0, $194 = 0, $198 = 0, $199 = 0, $2 = 0, $203 = 0, $204 = 0, $208 = 0, $209 = 0, $213 = 0, $214 = 0, $218 = 0, $219 = 0, $223 = 0, $224 = 0, $228 = 0, $229 = 0, $233 = 0, $234 = 0, $238 = 0, $239 = 0, $24 = 0, $243 = 0, $244 = 0, $248 = 0, $249 = 0, $253 = 0, $254 = 0, $258 = 0, $259 = 0, $264 = 0, $265 = 0, $28 = 0, $29 = 0, $33 = 0, $34 = 0, $38 = 0, $39 = 0, $4 = 0, $43 = 0, $44 = 0, $48 = 0, $49 = 0, $53 = 0, $54 = 0, $58 = 0, $59 = 0, $6 = 0, $63 = 0, $64 = 0, $68 = 0, $69 = 0, $7 = 0, $73 = 0, $74 = 0, $78 = 0, $79 = 0, $83 = 0, $84 = 0, $88 = 0, $89 = 0, $93 = 0, $94 = 0, $98 = 0, $99 = 0, $i$0 = 0, $in$0 = 0, $j$0 = 0, $k0$0 = 0, $storemerge = 0, $storemerge$lcssa = 0, $storemerge$lcssa15 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $0 = sp + 8 | 0;\n $1 = sp + 4 | 0;\n $2 = sp;\n HEAP32[$1 >> 2] = $n;\n do if ($n >>> 0 < 212) {\n  $4 = __ZNSt3__113__lower_boundIRNS_6__lessIjjEEPKjjEET0_S6_S6_RKT1_T_(3520, 3712, $1, $0) | 0;\n  $$0 = HEAP32[$4 >> 2] | 0;\n } else {\n  $6 = ($n >>> 0) / 210 | 0;\n  $7 = $6 * 210 | 0;\n  HEAP32[$2 >> 2] = $n - $7;\n  $12 = (__ZNSt3__113__lower_boundIRNS_6__lessIjjEEPKjjEET0_S6_S6_RKT1_T_(3712, 3904, $2, $0) | 0) - 3712 >> 2;\n  $in$0 = $12;\n  $k0$0 = $6;\n  $storemerge = (HEAP32[3712 + ($12 << 2) >> 2] | 0) + $7 | 0;\n  L4 : while (1) {\n   $j$0 = 5;\n   while (1) {\n    if ($j$0 >>> 0 >= 47) {\n     $i$0 = 211;\n     label = 8;\n     break;\n    }\n    $18 = HEAP32[3520 + ($j$0 << 2) >> 2] | 0;\n    $19 = ($storemerge >>> 0) / ($18 >>> 0) | 0;\n    if ($19 >>> 0 < $18 >>> 0) {\n     $storemerge$lcssa15 = $storemerge;\n     label = 106;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($19, $18) | 0)) break; else $j$0 = $j$0 + 1 | 0;\n   }\n   L10 : do if ((label | 0) == 8) while (1) {\n    label = 0;\n    $24 = ($storemerge >>> 0) / ($i$0 >>> 0) | 0;\n    if ($24 >>> 0 < $i$0 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($24, $i$0) | 0)) break L10;\n    $28 = $i$0 + 10 | 0;\n    $29 = ($storemerge >>> 0) / ($28 >>> 0) | 0;\n    if ($29 >>> 0 < $28 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($29, $28) | 0)) break L10;\n    $33 = $i$0 + 12 | 0;\n    $34 = ($storemerge >>> 0) / ($33 >>> 0) | 0;\n    if ($34 >>> 0 < $33 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($34, $33) | 0)) break L10;\n    $38 = $i$0 + 16 | 0;\n    $39 = ($storemerge >>> 0) / ($38 >>> 0) | 0;\n    if ($39 >>> 0 < $38 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($39, $38) | 0)) break L10;\n    $43 = $i$0 + 18 | 0;\n    $44 = ($storemerge >>> 0) / ($43 >>> 0) | 0;\n    if ($44 >>> 0 < $43 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($44, $43) | 0)) break L10;\n    $48 = $i$0 + 22 | 0;\n    $49 = ($storemerge >>> 0) / ($48 >>> 0) | 0;\n    if ($49 >>> 0 < $48 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($49, $48) | 0)) break L10;\n    $53 = $i$0 + 28 | 0;\n    $54 = ($storemerge >>> 0) / ($53 >>> 0) | 0;\n    if ($54 >>> 0 < $53 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($54, $53) | 0)) break L10;\n    $58 = $i$0 + 30 | 0;\n    $59 = ($storemerge >>> 0) / ($58 >>> 0) | 0;\n    if ($59 >>> 0 < $58 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($59, $58) | 0)) break L10;\n    $63 = $i$0 + 36 | 0;\n    $64 = ($storemerge >>> 0) / ($63 >>> 0) | 0;\n    if ($64 >>> 0 < $63 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($64, $63) | 0)) break L10;\n    $68 = $i$0 + 40 | 0;\n    $69 = ($storemerge >>> 0) / ($68 >>> 0) | 0;\n    if ($69 >>> 0 < $68 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($69, $68) | 0)) break L10;\n    $73 = $i$0 + 42 | 0;\n    $74 = ($storemerge >>> 0) / ($73 >>> 0) | 0;\n    if ($74 >>> 0 < $73 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($74, $73) | 0)) break L10;\n    $78 = $i$0 + 46 | 0;\n    $79 = ($storemerge >>> 0) / ($78 >>> 0) | 0;\n    if ($79 >>> 0 < $78 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($79, $78) | 0)) break L10;\n    $83 = $i$0 + 52 | 0;\n    $84 = ($storemerge >>> 0) / ($83 >>> 0) | 0;\n    if ($84 >>> 0 < $83 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($84, $83) | 0)) break L10;\n    $88 = $i$0 + 58 | 0;\n    $89 = ($storemerge >>> 0) / ($88 >>> 0) | 0;\n    if ($89 >>> 0 < $88 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($89, $88) | 0)) break L10;\n    $93 = $i$0 + 60 | 0;\n    $94 = ($storemerge >>> 0) / ($93 >>> 0) | 0;\n    if ($94 >>> 0 < $93 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($94, $93) | 0)) break L10;\n    $98 = $i$0 + 66 | 0;\n    $99 = ($storemerge >>> 0) / ($98 >>> 0) | 0;\n    if ($99 >>> 0 < $98 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($99, $98) | 0)) break L10;\n    $103 = $i$0 + 70 | 0;\n    $104 = ($storemerge >>> 0) / ($103 >>> 0) | 0;\n    if ($104 >>> 0 < $103 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($104, $103) | 0)) break L10;\n    $108 = $i$0 + 72 | 0;\n    $109 = ($storemerge >>> 0) / ($108 >>> 0) | 0;\n    if ($109 >>> 0 < $108 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($109, $108) | 0)) break L10;\n    $113 = $i$0 + 78 | 0;\n    $114 = ($storemerge >>> 0) / ($113 >>> 0) | 0;\n    if ($114 >>> 0 < $113 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($114, $113) | 0)) break L10;\n    $118 = $i$0 + 82 | 0;\n    $119 = ($storemerge >>> 0) / ($118 >>> 0) | 0;\n    if ($119 >>> 0 < $118 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($119, $118) | 0)) break L10;\n    $123 = $i$0 + 88 | 0;\n    $124 = ($storemerge >>> 0) / ($123 >>> 0) | 0;\n    if ($124 >>> 0 < $123 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($124, $123) | 0)) break L10;\n    $128 = $i$0 + 96 | 0;\n    $129 = ($storemerge >>> 0) / ($128 >>> 0) | 0;\n    if ($129 >>> 0 < $128 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($129, $128) | 0)) break L10;\n    $133 = $i$0 + 100 | 0;\n    $134 = ($storemerge >>> 0) / ($133 >>> 0) | 0;\n    if ($134 >>> 0 < $133 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($134, $133) | 0)) break L10;\n    $138 = $i$0 + 102 | 0;\n    $139 = ($storemerge >>> 0) / ($138 >>> 0) | 0;\n    if ($139 >>> 0 < $138 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($139, $138) | 0)) break L10;\n    $143 = $i$0 + 106 | 0;\n    $144 = ($storemerge >>> 0) / ($143 >>> 0) | 0;\n    if ($144 >>> 0 < $143 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($144, $143) | 0)) break L10;\n    $148 = $i$0 + 108 | 0;\n    $149 = ($storemerge >>> 0) / ($148 >>> 0) | 0;\n    if ($149 >>> 0 < $148 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($149, $148) | 0)) break L10;\n    $153 = $i$0 + 112 | 0;\n    $154 = ($storemerge >>> 0) / ($153 >>> 0) | 0;\n    if ($154 >>> 0 < $153 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($154, $153) | 0)) break L10;\n    $158 = $i$0 + 120 | 0;\n    $159 = ($storemerge >>> 0) / ($158 >>> 0) | 0;\n    if ($159 >>> 0 < $158 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($159, $158) | 0)) break L10;\n    $163 = $i$0 + 126 | 0;\n    $164 = ($storemerge >>> 0) / ($163 >>> 0) | 0;\n    if ($164 >>> 0 < $163 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($164, $163) | 0)) break L10;\n    $168 = $i$0 + 130 | 0;\n    $169 = ($storemerge >>> 0) / ($168 >>> 0) | 0;\n    if ($169 >>> 0 < $168 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($169, $168) | 0)) break L10;\n    $173 = $i$0 + 136 | 0;\n    $174 = ($storemerge >>> 0) / ($173 >>> 0) | 0;\n    if ($174 >>> 0 < $173 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($174, $173) | 0)) break L10;\n    $178 = $i$0 + 138 | 0;\n    $179 = ($storemerge >>> 0) / ($178 >>> 0) | 0;\n    if ($179 >>> 0 < $178 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($179, $178) | 0)) break L10;\n    $183 = $i$0 + 142 | 0;\n    $184 = ($storemerge >>> 0) / ($183 >>> 0) | 0;\n    if ($184 >>> 0 < $183 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($184, $183) | 0)) break L10;\n    $188 = $i$0 + 148 | 0;\n    $189 = ($storemerge >>> 0) / ($188 >>> 0) | 0;\n    if ($189 >>> 0 < $188 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($189, $188) | 0)) break L10;\n    $193 = $i$0 + 150 | 0;\n    $194 = ($storemerge >>> 0) / ($193 >>> 0) | 0;\n    if ($194 >>> 0 < $193 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($194, $193) | 0)) break L10;\n    $198 = $i$0 + 156 | 0;\n    $199 = ($storemerge >>> 0) / ($198 >>> 0) | 0;\n    if ($199 >>> 0 < $198 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($199, $198) | 0)) break L10;\n    $203 = $i$0 + 162 | 0;\n    $204 = ($storemerge >>> 0) / ($203 >>> 0) | 0;\n    if ($204 >>> 0 < $203 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($204, $203) | 0)) break L10;\n    $208 = $i$0 + 166 | 0;\n    $209 = ($storemerge >>> 0) / ($208 >>> 0) | 0;\n    if ($209 >>> 0 < $208 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($209, $208) | 0)) break L10;\n    $213 = $i$0 + 168 | 0;\n    $214 = ($storemerge >>> 0) / ($213 >>> 0) | 0;\n    if ($214 >>> 0 < $213 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($214, $213) | 0)) break L10;\n    $218 = $i$0 + 172 | 0;\n    $219 = ($storemerge >>> 0) / ($218 >>> 0) | 0;\n    if ($219 >>> 0 < $218 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($219, $218) | 0)) break L10;\n    $223 = $i$0 + 178 | 0;\n    $224 = ($storemerge >>> 0) / ($223 >>> 0) | 0;\n    if ($224 >>> 0 < $223 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($224, $223) | 0)) break L10;\n    $228 = $i$0 + 180 | 0;\n    $229 = ($storemerge >>> 0) / ($228 >>> 0) | 0;\n    if ($229 >>> 0 < $228 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($229, $228) | 0)) break L10;\n    $233 = $i$0 + 186 | 0;\n    $234 = ($storemerge >>> 0) / ($233 >>> 0) | 0;\n    if ($234 >>> 0 < $233 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($234, $233) | 0)) break L10;\n    $238 = $i$0 + 190 | 0;\n    $239 = ($storemerge >>> 0) / ($238 >>> 0) | 0;\n    if ($239 >>> 0 < $238 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($239, $238) | 0)) break L10;\n    $243 = $i$0 + 192 | 0;\n    $244 = ($storemerge >>> 0) / ($243 >>> 0) | 0;\n    if ($244 >>> 0 < $243 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($244, $243) | 0)) break L10;\n    $248 = $i$0 + 196 | 0;\n    $249 = ($storemerge >>> 0) / ($248 >>> 0) | 0;\n    if ($249 >>> 0 < $248 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($249, $248) | 0)) break L10;\n    $253 = $i$0 + 198 | 0;\n    $254 = ($storemerge >>> 0) / ($253 >>> 0) | 0;\n    if ($254 >>> 0 < $253 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($254, $253) | 0)) break L10;\n    $258 = $i$0 + 208 | 0;\n    $259 = ($storemerge >>> 0) / ($258 >>> 0) | 0;\n    if ($259 >>> 0 < $258 >>> 0) {\n     $storemerge$lcssa = $storemerge;\n     label = 105;\n     break L4;\n    }\n    if (($storemerge | 0) == (Math_imul($259, $258) | 0)) break; else {\n     $i$0 = $i$0 + 210 | 0;\n     label = 8;\n    }\n   } while (0);\n   $264 = $in$0 + 1 | 0;\n   $265 = ($264 | 0) == 48;\n   $$ = $265 ? 0 : $264;\n   $$k0$0 = ($265 & 1) + $k0$0 | 0;\n   $in$0 = $$;\n   $k0$0 = $$k0$0;\n   $storemerge = (HEAP32[3712 + ($$ << 2) >> 2] | 0) + ($$k0$0 * 210 | 0) | 0;\n  }\n  if ((label | 0) == 105) {\n   HEAP32[$1 >> 2] = $storemerge$lcssa;\n   $$0 = $storemerge$lcssa;\n   break;\n  } else if ((label | 0) == 106) {\n   HEAP32[$1 >> 2] = $storemerge$lcssa15;\n   $$0 = $storemerge$lcssa15;\n   break;\n  }\n } while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubEWZ($image, $xsize, $ysize, $image_thresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $image_thresh = $image_thresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $102 = 0, $105 = 0, $122 = 0, $124 = 0, $126 = 0, $130 = 0, $134 = 0, $137 = 0, $139 = 0, $143 = 0, $147 = 0, $151 = 0, $156 = 0, $158 = 0, $16 = 0, $162 = 0, $166 = 0, $17 = 0, $170 = 0, $176 = 0, $179 = 0, $18 = 0, $181 = 0, $185 = 0, $189 = 0, $193 = 0, $196 = 0, $201 = 0, $216 = 0, $217 = 0, $218 = 0, $219 = 0, $227 = 0, $229 = 0, $235 = 0, $239 = 0, $240 = 0, $247 = 0, $26 = 0, $261 = 0, $262 = 0, $265 = 0, $272 = 0, $273 = 0, $281 = 0, $284 = 0, $285 = 0, $289 = 0, $292 = 0, $296 = 0, $299 = 0, $303 = 0, $306 = 0, $31 = 0, $310 = 0, $314 = 0, $317 = 0, $318 = 0, $324 = 0, $34 = 0, $36 = 0, $40 = 0, $44 = 0, $50 = 0, $51 = 0, $54 = 0, $55 = 0, $56 = 0, $59 = 0, $62 = 0, $79 = 0, $81 = 0, $83 = 0, $87 = 0, $9 = 0, $91 = 0, $97 = 0, $dpnt$080 = 0, $dpnt$1$lcssa = 0, $dpnt$163 = 0, $i$096 = 0, $i$190 = 0, $i$270 = 0, $i$345 = 0, $i$443 = 0, $i$541 = 0, $i$640 = 0, $j$083 = 0, $j$1$lcssa = 0, $j$146 = 0, $j$2 = 0, $k$059 = 0, $k$156 = 0, $k$252 = 0, $k$349 = 0, $pnt$086 = 0, $pnt$1$lcssa = 0, $pnt$173 = 0, $pnt1$097 = 0, $pnt1$191 = 0, $pnt2$095 = 0, $pnt2$189 = 0, $pnt2$281 = 0, $pnt2$3$lcssa = 0, $pnt2$364 = 0, $pnt_thresh$085 = 0, $pnt_thresh$1$lcssa = 0, $pnt_thresh$172 = 0, $vararg_buffer = 0, $wk$060 = 0, $wk$157 = 0, $wk$253 = 0, $wk$350 = 0, $wk$447 = 0, $wk_max$0$lcssa = 0, $wk_max$082 = 0, $wk_max$1$lcssa = 0, $wk_max$165 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$096 = 0;\n  $pnt1$097 = $0;\n  $pnt2$095 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$095 >> 1] = 0;\n   HEAP16[$pnt1$097 >> 1] = 0;\n   $i$096 = $i$096 + 1 | 0;\n   if (($i$096 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$097 = $pnt1$097 + 2 | 0;\n    $pnt2$095 = $pnt2$095 + 2 | 0;\n   }\n  }\n }\n $9 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$190 = 0;\n  $pnt1$191 = $0;\n  $pnt2$189 = $0 + ($9 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$189 >> 1] = 0;\n   HEAP16[$pnt1$191 >> 1] = 0;\n   $i$190 = $i$190 + 1 | 0;\n   if (($i$190 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$191 = $pnt1$191 + ($xsize << 1) | 0;\n    $pnt2$189 = $pnt2$189 + ($xsize << 1) | 0;\n   }\n  }\n }\n $16 = $labelInfo + 1179664 | 0;\n $17 = $xsize + 1 | 0;\n $18 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $26 = ($9 | 0) > 1;\n  $dpnt$080 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $17 | 0;\n  $j$083 = 1;\n  $pnt$086 = $image + $17 | 0;\n  $pnt2$281 = $0 + ($17 << 1) | 0;\n  $pnt_thresh$085 = $image_thresh + $17 | 0;\n  $wk_max$082 = 0;\n  L13 : while (1) {\n   if ($26) {\n    $dpnt$163 = $dpnt$080;\n    $i$270 = 1;\n    $pnt$173 = $pnt$086;\n    $pnt2$364 = $pnt2$281;\n    $pnt_thresh$172 = $pnt_thresh$085;\n    $wk_max$165 = $wk_max$082;\n    while (1) {\n     do if ((HEAPU8[$pnt$173 >> 0] | 0) > (HEAPU8[$pnt_thresh$172 >> 0] | 0)) {\n      HEAP8[$dpnt$163 >> 0] = -1;\n      $31 = HEAP16[$pnt2$364 + ($18 << 1) >> 1] | 0;\n      if ($31 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$364 >> 1] = $31;\n       $34 = ($31 << 16 >> 16) * 7 | 0;\n       $36 = $labelInfo + 1310736 + ($34 + -7 << 2) | 0;\n       HEAP32[$36 >> 2] = (HEAP32[$36 >> 2] | 0) + 1;\n       $40 = $labelInfo + 1310736 + ($34 + -6 << 2) | 0;\n       HEAP32[$40 >> 2] = (HEAP32[$40 >> 2] | 0) + $i$270;\n       $44 = $labelInfo + 1310736 + ($34 + -5 << 2) | 0;\n       HEAP32[$44 >> 2] = (HEAP32[$44 >> 2] | 0) + $j$083;\n       HEAP32[$labelInfo + 1310736 + ($34 + -1 << 2) >> 2] = $j$083;\n       $wk_max$2 = $wk_max$165;\n       break;\n      }\n      $50 = HEAP16[$pnt2$364 + ($$sum << 1) >> 1] | 0;\n      $51 = $50 << 16 >> 16;\n      $54 = HEAP16[$pnt2$364 + ($$sum1 << 1) >> 1] | 0;\n      $55 = $54 << 16 >> 16;\n      $56 = $54 << 16 >> 16 > 0;\n      if ($50 << 16 >> 16 <= 0) {\n       if ($56) {\n        HEAP16[$pnt2$364 >> 1] = $54;\n        $156 = $55 * 7 | 0;\n        $158 = $labelInfo + 1310736 + ($156 + -7 << 2) | 0;\n        HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + 1;\n        $162 = $labelInfo + 1310736 + ($156 + -6 << 2) | 0;\n        HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $i$270;\n        $166 = $labelInfo + 1310736 + ($156 + -5 << 2) | 0;\n        HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + $j$083;\n        $170 = $labelInfo + 1310736 + ($156 + -3 << 2) | 0;\n        if ((HEAP32[$170 >> 2] | 0) < ($i$270 | 0)) HEAP32[$170 >> 2] = $i$270;\n        HEAP32[$labelInfo + 1310736 + ($156 + -1 << 2) >> 2] = $j$083;\n        $wk_max$2 = $wk_max$165;\n        break;\n       }\n       $176 = HEAP16[$pnt2$364 + -2 >> 1] | 0;\n       if ($176 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$364 >> 1] = $176;\n        $179 = ($176 << 16 >> 16) * 7 | 0;\n        $181 = $labelInfo + 1310736 + ($179 + -7 << 2) | 0;\n        HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + 1;\n        $185 = $labelInfo + 1310736 + ($179 + -6 << 2) | 0;\n        HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + $i$270;\n        $189 = $labelInfo + 1310736 + ($179 + -5 << 2) | 0;\n        HEAP32[$189 >> 2] = (HEAP32[$189 >> 2] | 0) + $j$083;\n        $193 = $labelInfo + 1310736 + ($179 + -3 << 2) | 0;\n        if ((HEAP32[$193 >> 2] | 0) >= ($i$270 | 0)) {\n         $wk_max$2 = $wk_max$165;\n         break;\n        }\n        HEAP32[$193 >> 2] = $i$270;\n        $wk_max$2 = $wk_max$165;\n        break;\n       } else {\n        $196 = $wk_max$165 + 1 | 0;\n        if (($wk_max$165 | 0) > 32767) break L13;\n        HEAP16[$pnt2$364 >> 1] = $196;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$165 << 2) >> 2] = $196 << 16 >> 16;\n        $201 = $wk_max$165 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($201 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($201 + 1 << 2) >> 2] = $i$270;\n        HEAP32[$labelInfo + 1310736 + ($201 + 2 << 2) >> 2] = $j$083;\n        HEAP32[$labelInfo + 1310736 + ($201 + 3 << 2) >> 2] = $i$270;\n        HEAP32[$labelInfo + 1310736 + ($201 + 4 << 2) >> 2] = $i$270;\n        HEAP32[$labelInfo + 1310736 + ($201 + 5 << 2) >> 2] = $j$083;\n        HEAP32[$labelInfo + 1310736 + ($201 + 6 << 2) >> 2] = $j$083;\n        $wk_max$2 = $196;\n        break;\n       }\n      }\n      if ($56) {\n       $59 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0;\n       $62 = HEAP32[$labelInfo + 1179664 + ($55 + -1 << 2) >> 2] | 0;\n       if (($59 | 0) > ($62 | 0)) {\n        HEAP16[$pnt2$364 >> 1] = $62;\n        if (($wk_max$165 | 0) > 0) {\n         $k$059 = 0;\n         $wk$060 = $16;\n         while (1) {\n          if ((HEAP32[$wk$060 >> 2] | 0) == ($59 | 0)) HEAP32[$wk$060 >> 2] = $62;\n          $k$059 = $k$059 + 1 | 0;\n          if (($k$059 | 0) >= ($wk_max$165 | 0)) {\n           $79 = $62;\n           break;\n          } else $wk$060 = $wk$060 + 4 | 0;\n         }\n        } else $79 = $62;\n       } else {\n        HEAP16[$pnt2$364 >> 1] = $59;\n        if (($59 | 0) < ($62 | 0) & ($wk_max$165 | 0) > 0) {\n         $k$156 = 0;\n         $wk$157 = $16;\n         while (1) {\n          if ((HEAP32[$wk$157 >> 2] | 0) == ($62 | 0)) HEAP32[$wk$157 >> 2] = $59;\n          $k$156 = $k$156 + 1 | 0;\n          if (($k$156 | 0) >= ($wk_max$165 | 0)) {\n           $79 = $59;\n           break;\n          } else $wk$157 = $wk$157 + 4 | 0;\n         }\n        } else $79 = $59;\n       }\n       $81 = ($79 << 16 >> 16) * 7 | 0;\n       $83 = $labelInfo + 1310736 + ($81 + -7 << 2) | 0;\n       HEAP32[$83 >> 2] = (HEAP32[$83 >> 2] | 0) + 1;\n       $87 = $labelInfo + 1310736 + ($81 + -6 << 2) | 0;\n       HEAP32[$87 >> 2] = (HEAP32[$87 >> 2] | 0) + $i$270;\n       $91 = $labelInfo + 1310736 + ($81 + -5 << 2) | 0;\n       HEAP32[$91 >> 2] = (HEAP32[$91 >> 2] | 0) + $j$083;\n       HEAP32[$labelInfo + 1310736 + ($81 + -1 << 2) >> 2] = $j$083;\n       $wk_max$2 = $wk_max$165;\n       break;\n      }\n      $97 = HEAP16[$pnt2$364 + -2 >> 1] | 0;\n      if ($97 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$364 >> 1] = $50;\n       $137 = $51 * 7 | 0;\n       $139 = $labelInfo + 1310736 + ($137 + -7 << 2) | 0;\n       HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + 1;\n       $143 = $labelInfo + 1310736 + ($137 + -6 << 2) | 0;\n       HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $i$270;\n       $147 = $labelInfo + 1310736 + ($137 + -5 << 2) | 0;\n       HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + $j$083;\n       $151 = $labelInfo + 1310736 + ($137 + -4 << 2) | 0;\n       if ((HEAP32[$151 >> 2] | 0) > ($i$270 | 0)) HEAP32[$151 >> 2] = $i$270;\n       HEAP32[$labelInfo + 1310736 + ($137 + -1 << 2) >> 2] = $j$083;\n       $wk_max$2 = $wk_max$165;\n       break;\n      }\n      $102 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0;\n      $105 = HEAP32[$labelInfo + 1179664 + (($97 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($102 | 0) > ($105 | 0)) {\n       HEAP16[$pnt2$364 >> 1] = $105;\n       if (($wk_max$165 | 0) > 0) {\n        $k$252 = 0;\n        $wk$253 = $16;\n        while (1) {\n         if ((HEAP32[$wk$253 >> 2] | 0) == ($102 | 0)) HEAP32[$wk$253 >> 2] = $105;\n         $k$252 = $k$252 + 1 | 0;\n         if (($k$252 | 0) >= ($wk_max$165 | 0)) {\n          $122 = $105;\n          break;\n         } else $wk$253 = $wk$253 + 4 | 0;\n        }\n       } else $122 = $105;\n      } else {\n       HEAP16[$pnt2$364 >> 1] = $102;\n       if (($102 | 0) < ($105 | 0) & ($wk_max$165 | 0) > 0) {\n        $k$349 = 0;\n        $wk$350 = $16;\n        while (1) {\n         if ((HEAP32[$wk$350 >> 2] | 0) == ($105 | 0)) HEAP32[$wk$350 >> 2] = $102;\n         $k$349 = $k$349 + 1 | 0;\n         if (($k$349 | 0) >= ($wk_max$165 | 0)) {\n          $122 = $102;\n          break;\n         } else $wk$350 = $wk$350 + 4 | 0;\n        }\n       } else $122 = $102;\n      }\n      $124 = ($122 << 16 >> 16) * 7 | 0;\n      $126 = $labelInfo + 1310736 + ($124 + -7 << 2) | 0;\n      HEAP32[$126 >> 2] = (HEAP32[$126 >> 2] | 0) + 1;\n      $130 = $labelInfo + 1310736 + ($124 + -6 << 2) | 0;\n      HEAP32[$130 >> 2] = (HEAP32[$130 >> 2] | 0) + $i$270;\n      $134 = $labelInfo + 1310736 + ($124 + -5 << 2) | 0;\n      HEAP32[$134 >> 2] = (HEAP32[$134 >> 2] | 0) + $j$083;\n      $wk_max$2 = $wk_max$165;\n     } else {\n      HEAP16[$pnt2$364 >> 1] = 0;\n      HEAP8[$dpnt$163 >> 0] = 0;\n      $wk_max$2 = $wk_max$165;\n     } while (0);\n     $i$270 = $i$270 + 1 | 0;\n     $216 = $pnt$173 + 1 | 0;\n     $217 = $pnt_thresh$172 + 1 | 0;\n     $218 = $pnt2$364 + 2 | 0;\n     $219 = $dpnt$163 + 1 | 0;\n     if (($i$270 | 0) >= ($9 | 0)) {\n      $dpnt$1$lcssa = $219;\n      $pnt$1$lcssa = $216;\n      $pnt2$3$lcssa = $218;\n      $pnt_thresh$1$lcssa = $217;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $dpnt$163 = $219;\n      $pnt$173 = $216;\n      $pnt2$364 = $218;\n      $pnt_thresh$172 = $217;\n      $wk_max$165 = $wk_max$2;\n     }\n    }\n   } else {\n    $dpnt$1$lcssa = $dpnt$080;\n    $pnt$1$lcssa = $pnt$086;\n    $pnt2$3$lcssa = $pnt2$281;\n    $pnt_thresh$1$lcssa = $pnt_thresh$085;\n    $wk_max$1$lcssa = $wk_max$082;\n   }\n   $j$083 = $j$083 + 1 | 0;\n   if (($j$083 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $dpnt$080 = $dpnt$1$lcssa + 2 | 0;\n    $pnt$086 = $pnt$1$lcssa + 2 | 0;\n    $pnt2$281 = $pnt2$3$lcssa + 4 | 0;\n    $pnt_thresh$085 = $pnt_thresh$1$lcssa + 2 | 0;\n    $wk_max$082 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $227 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$345 = 1;\n   $j$146 = 1;\n   $wk$447 = $16;\n   while (1) {\n    $229 = HEAP32[$wk$447 >> 2] | 0;\n    if (($229 | 0) == ($i$345 | 0)) {\n     $235 = $j$146;\n     $j$2 = $j$146 + 1 | 0;\n    } else {\n     $235 = HEAP32[$labelInfo + 1179664 + ($229 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$146;\n    }\n    HEAP32[$wk$447 >> 2] = $235;\n    if (($i$345 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$345 = $i$345 + 1 | 0;\n     $j$146 = $j$2;\n     $wk$447 = $wk$447 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $239 = $labelInfo + 8 | 0;\n  $240 = $j$1$lcssa + -1 | 0;\n  HEAP32[$239 >> 2] = $240;\n  if (!$240) $$0 = 0; else {\n   _memset($227 | 0, 0, $240 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $240 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$443 = 0;\n    do {\n     $247 = $i$443 << 2;\n     HEAP32[$labelInfo + 131084 + ($247 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($247 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($247 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($247 | 3) << 2) >> 2] = 0;\n     $i$443 = $i$443 + 1 | 0;\n    } while (($i$443 | 0) < (HEAP32[$239 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$541 = 0;\n    do {\n     $261 = (HEAP32[$labelInfo + 1179664 + ($i$541 << 2) >> 2] | 0) + -1 | 0;\n     $262 = $i$541 * 7 | 0;\n     $265 = $labelInfo + 12 + ($261 << 2) | 0;\n     HEAP32[$265 >> 2] = (HEAP32[$265 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($262 << 2) >> 2] | 0);\n     $272 = $261 << 1;\n     $273 = $labelInfo + 655376 + ($272 << 3) | 0;\n     HEAPF64[$273 >> 3] = +HEAPF64[$273 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($262 + 1 << 2) >> 2] | 0);\n     $281 = $labelInfo + 655376 + (($272 | 1) << 3) | 0;\n     HEAPF64[$281 >> 3] = +HEAPF64[$281 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($262 + 2 << 2) >> 2] | 0);\n     $284 = $261 << 2;\n     $285 = $labelInfo + 131084 + ($284 << 2) | 0;\n     $289 = HEAP32[$labelInfo + 1310736 + ($262 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$285 >> 2] | 0) > ($289 | 0)) HEAP32[$285 >> 2] = $289;\n     $292 = $labelInfo + 131084 + (($284 | 1) << 2) | 0;\n     $296 = HEAP32[$labelInfo + 1310736 + ($262 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$292 >> 2] | 0) < ($296 | 0)) HEAP32[$292 >> 2] = $296;\n     $299 = $labelInfo + 131084 + (($284 | 2) << 2) | 0;\n     $303 = HEAP32[$labelInfo + 1310736 + ($262 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$299 >> 2] | 0) > ($303 | 0)) HEAP32[$299 >> 2] = $303;\n     $306 = $labelInfo + 131084 + (($284 | 3) << 2) | 0;\n     $310 = HEAP32[$labelInfo + 1310736 + ($262 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$306 >> 2] | 0) < ($310 | 0)) HEAP32[$306 >> 2] = $310;\n     $i$541 = $i$541 + 1 | 0;\n    } while (($i$541 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$239 >> 2] | 0) > 0) {\n    $i$640 = 0;\n    do {\n     $314 = $labelInfo + 12 + ($i$640 << 2) | 0;\n     $317 = $i$640 << 1;\n     $318 = $labelInfo + 655376 + ($317 << 3) | 0;\n     HEAPF64[$318 >> 3] = +HEAPF64[$318 >> 3] / +(HEAP32[$314 >> 2] | 0);\n     $324 = $labelInfo + 655376 + (($317 | 1) << 3) | 0;\n     HEAPF64[$324 >> 3] = +HEAPF64[$324 >> 3] / +(HEAP32[$314 >> 2] | 0);\n     $i$640 = $i$640 + 1 | 0;\n    } while (($i$640 | 0) < (HEAP32[$239 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubEBZ($image, $xsize, $ysize, $image_thresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $image_thresh = $image_thresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $102 = 0, $105 = 0, $122 = 0, $124 = 0, $126 = 0, $130 = 0, $134 = 0, $137 = 0, $139 = 0, $143 = 0, $147 = 0, $151 = 0, $156 = 0, $158 = 0, $16 = 0, $162 = 0, $166 = 0, $17 = 0, $170 = 0, $176 = 0, $179 = 0, $18 = 0, $181 = 0, $185 = 0, $189 = 0, $193 = 0, $196 = 0, $201 = 0, $216 = 0, $217 = 0, $218 = 0, $219 = 0, $227 = 0, $229 = 0, $235 = 0, $239 = 0, $240 = 0, $247 = 0, $26 = 0, $261 = 0, $262 = 0, $265 = 0, $272 = 0, $273 = 0, $281 = 0, $284 = 0, $285 = 0, $289 = 0, $292 = 0, $296 = 0, $299 = 0, $303 = 0, $306 = 0, $31 = 0, $310 = 0, $314 = 0, $317 = 0, $318 = 0, $324 = 0, $34 = 0, $36 = 0, $40 = 0, $44 = 0, $50 = 0, $51 = 0, $54 = 0, $55 = 0, $56 = 0, $59 = 0, $62 = 0, $79 = 0, $81 = 0, $83 = 0, $87 = 0, $9 = 0, $91 = 0, $97 = 0, $dpnt$080 = 0, $dpnt$1$lcssa = 0, $dpnt$163 = 0, $i$096 = 0, $i$190 = 0, $i$270 = 0, $i$345 = 0, $i$443 = 0, $i$541 = 0, $i$640 = 0, $j$083 = 0, $j$1$lcssa = 0, $j$146 = 0, $j$2 = 0, $k$059 = 0, $k$156 = 0, $k$252 = 0, $k$349 = 0, $pnt$086 = 0, $pnt$1$lcssa = 0, $pnt$173 = 0, $pnt1$097 = 0, $pnt1$191 = 0, $pnt2$095 = 0, $pnt2$189 = 0, $pnt2$281 = 0, $pnt2$3$lcssa = 0, $pnt2$364 = 0, $pnt_thresh$085 = 0, $pnt_thresh$1$lcssa = 0, $pnt_thresh$172 = 0, $vararg_buffer = 0, $wk$060 = 0, $wk$157 = 0, $wk$253 = 0, $wk$350 = 0, $wk$447 = 0, $wk_max$0$lcssa = 0, $wk_max$082 = 0, $wk_max$1$lcssa = 0, $wk_max$165 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$096 = 0;\n  $pnt1$097 = $0;\n  $pnt2$095 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$095 >> 1] = 0;\n   HEAP16[$pnt1$097 >> 1] = 0;\n   $i$096 = $i$096 + 1 | 0;\n   if (($i$096 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$097 = $pnt1$097 + 2 | 0;\n    $pnt2$095 = $pnt2$095 + 2 | 0;\n   }\n  }\n }\n $9 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$190 = 0;\n  $pnt1$191 = $0;\n  $pnt2$189 = $0 + ($9 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$189 >> 1] = 0;\n   HEAP16[$pnt1$191 >> 1] = 0;\n   $i$190 = $i$190 + 1 | 0;\n   if (($i$190 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$191 = $pnt1$191 + ($xsize << 1) | 0;\n    $pnt2$189 = $pnt2$189 + ($xsize << 1) | 0;\n   }\n  }\n }\n $16 = $labelInfo + 1179664 | 0;\n $17 = $xsize + 1 | 0;\n $18 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $26 = ($9 | 0) > 1;\n  $dpnt$080 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $17 | 0;\n  $j$083 = 1;\n  $pnt$086 = $image + $17 | 0;\n  $pnt2$281 = $0 + ($17 << 1) | 0;\n  $pnt_thresh$085 = $image_thresh + $17 | 0;\n  $wk_max$082 = 0;\n  L13 : while (1) {\n   if ($26) {\n    $dpnt$163 = $dpnt$080;\n    $i$270 = 1;\n    $pnt$173 = $pnt$086;\n    $pnt2$364 = $pnt2$281;\n    $pnt_thresh$172 = $pnt_thresh$085;\n    $wk_max$165 = $wk_max$082;\n    while (1) {\n     do if ((HEAPU8[$pnt$173 >> 0] | 0) > (HEAPU8[$pnt_thresh$172 >> 0] | 0)) {\n      HEAP16[$pnt2$364 >> 1] = 0;\n      HEAP8[$dpnt$163 >> 0] = 0;\n      $wk_max$2 = $wk_max$165;\n     } else {\n      HEAP8[$dpnt$163 >> 0] = -1;\n      $31 = HEAP16[$pnt2$364 + ($18 << 1) >> 1] | 0;\n      if ($31 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$364 >> 1] = $31;\n       $34 = ($31 << 16 >> 16) * 7 | 0;\n       $36 = $labelInfo + 1310736 + ($34 + -7 << 2) | 0;\n       HEAP32[$36 >> 2] = (HEAP32[$36 >> 2] | 0) + 1;\n       $40 = $labelInfo + 1310736 + ($34 + -6 << 2) | 0;\n       HEAP32[$40 >> 2] = (HEAP32[$40 >> 2] | 0) + $i$270;\n       $44 = $labelInfo + 1310736 + ($34 + -5 << 2) | 0;\n       HEAP32[$44 >> 2] = (HEAP32[$44 >> 2] | 0) + $j$083;\n       HEAP32[$labelInfo + 1310736 + ($34 + -1 << 2) >> 2] = $j$083;\n       $wk_max$2 = $wk_max$165;\n       break;\n      }\n      $50 = HEAP16[$pnt2$364 + ($$sum << 1) >> 1] | 0;\n      $51 = $50 << 16 >> 16;\n      $54 = HEAP16[$pnt2$364 + ($$sum1 << 1) >> 1] | 0;\n      $55 = $54 << 16 >> 16;\n      $56 = $54 << 16 >> 16 > 0;\n      if ($50 << 16 >> 16 <= 0) {\n       if ($56) {\n        HEAP16[$pnt2$364 >> 1] = $54;\n        $156 = $55 * 7 | 0;\n        $158 = $labelInfo + 1310736 + ($156 + -7 << 2) | 0;\n        HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + 1;\n        $162 = $labelInfo + 1310736 + ($156 + -6 << 2) | 0;\n        HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $i$270;\n        $166 = $labelInfo + 1310736 + ($156 + -5 << 2) | 0;\n        HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + $j$083;\n        $170 = $labelInfo + 1310736 + ($156 + -3 << 2) | 0;\n        if ((HEAP32[$170 >> 2] | 0) < ($i$270 | 0)) HEAP32[$170 >> 2] = $i$270;\n        HEAP32[$labelInfo + 1310736 + ($156 + -1 << 2) >> 2] = $j$083;\n        $wk_max$2 = $wk_max$165;\n        break;\n       }\n       $176 = HEAP16[$pnt2$364 + -2 >> 1] | 0;\n       if ($176 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$364 >> 1] = $176;\n        $179 = ($176 << 16 >> 16) * 7 | 0;\n        $181 = $labelInfo + 1310736 + ($179 + -7 << 2) | 0;\n        HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + 1;\n        $185 = $labelInfo + 1310736 + ($179 + -6 << 2) | 0;\n        HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + $i$270;\n        $189 = $labelInfo + 1310736 + ($179 + -5 << 2) | 0;\n        HEAP32[$189 >> 2] = (HEAP32[$189 >> 2] | 0) + $j$083;\n        $193 = $labelInfo + 1310736 + ($179 + -3 << 2) | 0;\n        if ((HEAP32[$193 >> 2] | 0) >= ($i$270 | 0)) {\n         $wk_max$2 = $wk_max$165;\n         break;\n        }\n        HEAP32[$193 >> 2] = $i$270;\n        $wk_max$2 = $wk_max$165;\n        break;\n       } else {\n        $196 = $wk_max$165 + 1 | 0;\n        if (($wk_max$165 | 0) > 32767) break L13;\n        HEAP16[$pnt2$364 >> 1] = $196;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$165 << 2) >> 2] = $196 << 16 >> 16;\n        $201 = $wk_max$165 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($201 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($201 + 1 << 2) >> 2] = $i$270;\n        HEAP32[$labelInfo + 1310736 + ($201 + 2 << 2) >> 2] = $j$083;\n        HEAP32[$labelInfo + 1310736 + ($201 + 3 << 2) >> 2] = $i$270;\n        HEAP32[$labelInfo + 1310736 + ($201 + 4 << 2) >> 2] = $i$270;\n        HEAP32[$labelInfo + 1310736 + ($201 + 5 << 2) >> 2] = $j$083;\n        HEAP32[$labelInfo + 1310736 + ($201 + 6 << 2) >> 2] = $j$083;\n        $wk_max$2 = $196;\n        break;\n       }\n      }\n      if ($56) {\n       $59 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0;\n       $62 = HEAP32[$labelInfo + 1179664 + ($55 + -1 << 2) >> 2] | 0;\n       if (($59 | 0) > ($62 | 0)) {\n        HEAP16[$pnt2$364 >> 1] = $62;\n        if (($wk_max$165 | 0) > 0) {\n         $k$059 = 0;\n         $wk$060 = $16;\n         while (1) {\n          if ((HEAP32[$wk$060 >> 2] | 0) == ($59 | 0)) HEAP32[$wk$060 >> 2] = $62;\n          $k$059 = $k$059 + 1 | 0;\n          if (($k$059 | 0) >= ($wk_max$165 | 0)) {\n           $79 = $62;\n           break;\n          } else $wk$060 = $wk$060 + 4 | 0;\n         }\n        } else $79 = $62;\n       } else {\n        HEAP16[$pnt2$364 >> 1] = $59;\n        if (($59 | 0) < ($62 | 0) & ($wk_max$165 | 0) > 0) {\n         $k$156 = 0;\n         $wk$157 = $16;\n         while (1) {\n          if ((HEAP32[$wk$157 >> 2] | 0) == ($62 | 0)) HEAP32[$wk$157 >> 2] = $59;\n          $k$156 = $k$156 + 1 | 0;\n          if (($k$156 | 0) >= ($wk_max$165 | 0)) {\n           $79 = $59;\n           break;\n          } else $wk$157 = $wk$157 + 4 | 0;\n         }\n        } else $79 = $59;\n       }\n       $81 = ($79 << 16 >> 16) * 7 | 0;\n       $83 = $labelInfo + 1310736 + ($81 + -7 << 2) | 0;\n       HEAP32[$83 >> 2] = (HEAP32[$83 >> 2] | 0) + 1;\n       $87 = $labelInfo + 1310736 + ($81 + -6 << 2) | 0;\n       HEAP32[$87 >> 2] = (HEAP32[$87 >> 2] | 0) + $i$270;\n       $91 = $labelInfo + 1310736 + ($81 + -5 << 2) | 0;\n       HEAP32[$91 >> 2] = (HEAP32[$91 >> 2] | 0) + $j$083;\n       HEAP32[$labelInfo + 1310736 + ($81 + -1 << 2) >> 2] = $j$083;\n       $wk_max$2 = $wk_max$165;\n       break;\n      }\n      $97 = HEAP16[$pnt2$364 + -2 >> 1] | 0;\n      if ($97 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$364 >> 1] = $50;\n       $137 = $51 * 7 | 0;\n       $139 = $labelInfo + 1310736 + ($137 + -7 << 2) | 0;\n       HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + 1;\n       $143 = $labelInfo + 1310736 + ($137 + -6 << 2) | 0;\n       HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $i$270;\n       $147 = $labelInfo + 1310736 + ($137 + -5 << 2) | 0;\n       HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + $j$083;\n       $151 = $labelInfo + 1310736 + ($137 + -4 << 2) | 0;\n       if ((HEAP32[$151 >> 2] | 0) > ($i$270 | 0)) HEAP32[$151 >> 2] = $i$270;\n       HEAP32[$labelInfo + 1310736 + ($137 + -1 << 2) >> 2] = $j$083;\n       $wk_max$2 = $wk_max$165;\n       break;\n      }\n      $102 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0;\n      $105 = HEAP32[$labelInfo + 1179664 + (($97 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($102 | 0) > ($105 | 0)) {\n       HEAP16[$pnt2$364 >> 1] = $105;\n       if (($wk_max$165 | 0) > 0) {\n        $k$252 = 0;\n        $wk$253 = $16;\n        while (1) {\n         if ((HEAP32[$wk$253 >> 2] | 0) == ($102 | 0)) HEAP32[$wk$253 >> 2] = $105;\n         $k$252 = $k$252 + 1 | 0;\n         if (($k$252 | 0) >= ($wk_max$165 | 0)) {\n          $122 = $105;\n          break;\n         } else $wk$253 = $wk$253 + 4 | 0;\n        }\n       } else $122 = $105;\n      } else {\n       HEAP16[$pnt2$364 >> 1] = $102;\n       if (($102 | 0) < ($105 | 0) & ($wk_max$165 | 0) > 0) {\n        $k$349 = 0;\n        $wk$350 = $16;\n        while (1) {\n         if ((HEAP32[$wk$350 >> 2] | 0) == ($105 | 0)) HEAP32[$wk$350 >> 2] = $102;\n         $k$349 = $k$349 + 1 | 0;\n         if (($k$349 | 0) >= ($wk_max$165 | 0)) {\n          $122 = $102;\n          break;\n         } else $wk$350 = $wk$350 + 4 | 0;\n        }\n       } else $122 = $102;\n      }\n      $124 = ($122 << 16 >> 16) * 7 | 0;\n      $126 = $labelInfo + 1310736 + ($124 + -7 << 2) | 0;\n      HEAP32[$126 >> 2] = (HEAP32[$126 >> 2] | 0) + 1;\n      $130 = $labelInfo + 1310736 + ($124 + -6 << 2) | 0;\n      HEAP32[$130 >> 2] = (HEAP32[$130 >> 2] | 0) + $i$270;\n      $134 = $labelInfo + 1310736 + ($124 + -5 << 2) | 0;\n      HEAP32[$134 >> 2] = (HEAP32[$134 >> 2] | 0) + $j$083;\n      $wk_max$2 = $wk_max$165;\n     } while (0);\n     $i$270 = $i$270 + 1 | 0;\n     $216 = $pnt$173 + 1 | 0;\n     $217 = $pnt_thresh$172 + 1 | 0;\n     $218 = $pnt2$364 + 2 | 0;\n     $219 = $dpnt$163 + 1 | 0;\n     if (($i$270 | 0) >= ($9 | 0)) {\n      $dpnt$1$lcssa = $219;\n      $pnt$1$lcssa = $216;\n      $pnt2$3$lcssa = $218;\n      $pnt_thresh$1$lcssa = $217;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $dpnt$163 = $219;\n      $pnt$173 = $216;\n      $pnt2$364 = $218;\n      $pnt_thresh$172 = $217;\n      $wk_max$165 = $wk_max$2;\n     }\n    }\n   } else {\n    $dpnt$1$lcssa = $dpnt$080;\n    $pnt$1$lcssa = $pnt$086;\n    $pnt2$3$lcssa = $pnt2$281;\n    $pnt_thresh$1$lcssa = $pnt_thresh$085;\n    $wk_max$1$lcssa = $wk_max$082;\n   }\n   $j$083 = $j$083 + 1 | 0;\n   if (($j$083 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $dpnt$080 = $dpnt$1$lcssa + 2 | 0;\n    $pnt$086 = $pnt$1$lcssa + 2 | 0;\n    $pnt2$281 = $pnt2$3$lcssa + 4 | 0;\n    $pnt_thresh$085 = $pnt_thresh$1$lcssa + 2 | 0;\n    $wk_max$082 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $227 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$345 = 1;\n   $j$146 = 1;\n   $wk$447 = $16;\n   while (1) {\n    $229 = HEAP32[$wk$447 >> 2] | 0;\n    if (($229 | 0) == ($i$345 | 0)) {\n     $235 = $j$146;\n     $j$2 = $j$146 + 1 | 0;\n    } else {\n     $235 = HEAP32[$labelInfo + 1179664 + ($229 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$146;\n    }\n    HEAP32[$wk$447 >> 2] = $235;\n    if (($i$345 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$345 = $i$345 + 1 | 0;\n     $j$146 = $j$2;\n     $wk$447 = $wk$447 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $239 = $labelInfo + 8 | 0;\n  $240 = $j$1$lcssa + -1 | 0;\n  HEAP32[$239 >> 2] = $240;\n  if (!$240) $$0 = 0; else {\n   _memset($227 | 0, 0, $240 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $240 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$443 = 0;\n    do {\n     $247 = $i$443 << 2;\n     HEAP32[$labelInfo + 131084 + ($247 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($247 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($247 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($247 | 3) << 2) >> 2] = 0;\n     $i$443 = $i$443 + 1 | 0;\n    } while (($i$443 | 0) < (HEAP32[$239 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$541 = 0;\n    do {\n     $261 = (HEAP32[$labelInfo + 1179664 + ($i$541 << 2) >> 2] | 0) + -1 | 0;\n     $262 = $i$541 * 7 | 0;\n     $265 = $labelInfo + 12 + ($261 << 2) | 0;\n     HEAP32[$265 >> 2] = (HEAP32[$265 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($262 << 2) >> 2] | 0);\n     $272 = $261 << 1;\n     $273 = $labelInfo + 655376 + ($272 << 3) | 0;\n     HEAPF64[$273 >> 3] = +HEAPF64[$273 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($262 + 1 << 2) >> 2] | 0);\n     $281 = $labelInfo + 655376 + (($272 | 1) << 3) | 0;\n     HEAPF64[$281 >> 3] = +HEAPF64[$281 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($262 + 2 << 2) >> 2] | 0);\n     $284 = $261 << 2;\n     $285 = $labelInfo + 131084 + ($284 << 2) | 0;\n     $289 = HEAP32[$labelInfo + 1310736 + ($262 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$285 >> 2] | 0) > ($289 | 0)) HEAP32[$285 >> 2] = $289;\n     $292 = $labelInfo + 131084 + (($284 | 1) << 2) | 0;\n     $296 = HEAP32[$labelInfo + 1310736 + ($262 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$292 >> 2] | 0) < ($296 | 0)) HEAP32[$292 >> 2] = $296;\n     $299 = $labelInfo + 131084 + (($284 | 2) << 2) | 0;\n     $303 = HEAP32[$labelInfo + 1310736 + ($262 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$299 >> 2] | 0) > ($303 | 0)) HEAP32[$299 >> 2] = $303;\n     $306 = $labelInfo + 131084 + (($284 | 3) << 2) | 0;\n     $310 = HEAP32[$labelInfo + 1310736 + ($262 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$306 >> 2] | 0) < ($310 | 0)) HEAP32[$306 >> 2] = $310;\n     $i$541 = $i$541 + 1 | 0;\n    } while (($i$541 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$239 >> 2] | 0) > 0) {\n    $i$640 = 0;\n    do {\n     $314 = $labelInfo + 12 + ($i$640 << 2) | 0;\n     $317 = $i$640 << 1;\n     $318 = $labelInfo + 655376 + ($317 << 3) | 0;\n     HEAPF64[$318 >> 3] = +HEAPF64[$318 >> 3] / +(HEAP32[$314 >> 2] | 0);\n     $324 = $labelInfo + 655376 + (($317 | 1) << 3) | 0;\n     HEAPF64[$324 >> 3] = +HEAPF64[$324 >> 3] / +(HEAP32[$314 >> 2] | 0);\n     $i$640 = $i$640 + 1 | 0;\n    } while (($i$640 | 0) < (HEAP32[$239 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubEWI3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $100 = 0, $102 = 0, $106 = 0, $11 = 0, $110 = 0, $116 = 0, $12 = 0, $121 = 0, $124 = 0, $141 = 0, $143 = 0, $145 = 0, $149 = 0, $153 = 0, $156 = 0, $158 = 0, $162 = 0, $166 = 0, $170 = 0, $175 = 0, $177 = 0, $181 = 0, $185 = 0, $189 = 0, $19 = 0, $195 = 0, $198 = 0, $2 = 0, $20 = 0, $200 = 0, $204 = 0, $208 = 0, $212 = 0, $215 = 0, $22 = 0, $220 = 0, $235 = 0, $236 = 0, $237 = 0, $244 = 0, $246 = 0, $252 = 0, $256 = 0, $257 = 0, $264 = 0, $278 = 0, $279 = 0, $282 = 0, $289 = 0, $290 = 0, $298 = 0, $3 = 0, $301 = 0, $302 = 0, $306 = 0, $309 = 0, $31 = 0, $313 = 0, $316 = 0, $320 = 0, $323 = 0, $327 = 0, $33 = 0, $331 = 0, $334 = 0, $335 = 0, $341 = 0, $39 = 0, $50 = 0, $53 = 0, $55 = 0, $59 = 0, $63 = 0, $69 = 0, $70 = 0, $73 = 0, $74 = 0, $75 = 0, $78 = 0, $81 = 0, $98 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = ($xsize | 0) / 2 | 0;\n $1 = ($ysize | 0) / 2 | 0;\n $2 = HEAP32[$labelInfo >> 2] | 0;\n $3 = $1 + -1 | 0;\n if (($xsize | 0) > 1) {\n  $i$089 = 0;\n  $pnt1$091 = $2;\n  $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$090 >> 1] = 0;\n   HEAP16[$pnt1$091 >> 1] = 0;\n   $i$089 = $i$089 + 1 | 0;\n   if (($i$089 | 0) >= ($0 | 0)) break; else {\n    $pnt1$091 = $pnt1$091 + 2 | 0;\n    $pnt2$090 = $pnt2$090 + 2 | 0;\n   }\n  }\n }\n $11 = $labelingThresh * 3 | 0;\n $12 = $0 + -1 | 0;\n if (($ysize | 0) > 1) {\n  $i$183 = 0;\n  $pnt1$185 = $2;\n  $pnt2$184 = $2 + ($12 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$184 >> 1] = 0;\n   HEAP16[$pnt1$185 >> 1] = 0;\n   $i$183 = $i$183 + 1 | 0;\n   if (($i$183 | 0) >= ($1 | 0)) break; else {\n    $pnt1$185 = $pnt1$185 + ($0 << 1) | 0;\n    $pnt2$184 = $pnt2$184 + ($0 << 1) | 0;\n   }\n  }\n }\n $19 = $labelInfo + 1179664 | 0;\n $20 = $0 + 1 | 0;\n $22 = 0 - $0 | 0;\n $$sum1 = 1 - $0 | 0;\n $$sum2 = ~$0;\n $$sum = ($xsize << 1) + 8 | 0;\n L11 : do if (($3 | 0) > 1) {\n  $31 = ($12 | 0) > 1;\n  $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $20 | 0;\n  $j$076 = 1;\n  $pnt$080 = $image + (($xsize << 2) + 4) | 0;\n  $pnt2$279 = $2 + ($20 << 1) | 0;\n  $wk_max$075 = 0;\n  L13 : while (1) {\n   if ($31) {\n    $dpnt$167 = $dpnt$078;\n    $i$265 = 1;\n    $pnt$169 = $pnt$080;\n    $pnt2$368 = $pnt2$279;\n    $wk_max$160 = $wk_max$075;\n    while (1) {\n     $33 = HEAPU8[$pnt$169 >> 0] | 0;\n     $39 = HEAPU8[$pnt$169 + 1 >> 0] | 0;\n     do if ((($33 & 248) + 12 + ($33 << 5 & 224) + ($39 >>> 3 & 24) + ($39 << 2 & 248) | 0) > ($11 | 0)) {\n      HEAP8[$dpnt$167 >> 0] = -1;\n      $50 = HEAP16[$pnt2$368 + ($22 << 1) >> 1] | 0;\n      if ($50 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$368 >> 1] = $50;\n       $53 = ($50 << 16 >> 16) * 7 | 0;\n       $55 = $labelInfo + 1310736 + ($53 + -7 << 2) | 0;\n       HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + 1;\n       $59 = $labelInfo + 1310736 + ($53 + -6 << 2) | 0;\n       HEAP32[$59 >> 2] = (HEAP32[$59 >> 2] | 0) + $i$265;\n       $63 = $labelInfo + 1310736 + ($53 + -5 << 2) | 0;\n       HEAP32[$63 >> 2] = (HEAP32[$63 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($53 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $69 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0;\n      $70 = $69 << 16 >> 16;\n      $73 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0;\n      $74 = $73 << 16 >> 16;\n      $75 = $73 << 16 >> 16 > 0;\n      if ($69 << 16 >> 16 <= 0) {\n       if ($75) {\n        HEAP16[$pnt2$368 >> 1] = $73;\n        $175 = $74 * 7 | 0;\n        $177 = $labelInfo + 1310736 + ($175 + -7 << 2) | 0;\n        HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + 1;\n        $181 = $labelInfo + 1310736 + ($175 + -6 << 2) | 0;\n        HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + $i$265;\n        $185 = $labelInfo + 1310736 + ($175 + -5 << 2) | 0;\n        HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + $j$076;\n        $189 = $labelInfo + 1310736 + ($175 + -3 << 2) | 0;\n        if ((HEAP32[$189 >> 2] | 0) < ($i$265 | 0)) HEAP32[$189 >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($175 + -1 << 2) >> 2] = $j$076;\n        $wk_max$2 = $wk_max$160;\n        break;\n       }\n       $195 = HEAP16[$pnt2$368 + -2 >> 1] | 0;\n       if ($195 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$368 >> 1] = $195;\n        $198 = ($195 << 16 >> 16) * 7 | 0;\n        $200 = $labelInfo + 1310736 + ($198 + -7 << 2) | 0;\n        HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + 1;\n        $204 = $labelInfo + 1310736 + ($198 + -6 << 2) | 0;\n        HEAP32[$204 >> 2] = (HEAP32[$204 >> 2] | 0) + $i$265;\n        $208 = $labelInfo + 1310736 + ($198 + -5 << 2) | 0;\n        HEAP32[$208 >> 2] = (HEAP32[$208 >> 2] | 0) + $j$076;\n        $212 = $labelInfo + 1310736 + ($198 + -3 << 2) | 0;\n        if ((HEAP32[$212 >> 2] | 0) >= ($i$265 | 0)) {\n         $wk_max$2 = $wk_max$160;\n         break;\n        }\n        HEAP32[$212 >> 2] = $i$265;\n        $wk_max$2 = $wk_max$160;\n        break;\n       } else {\n        $215 = $wk_max$160 + 1 | 0;\n        if (($wk_max$160 | 0) > 32767) break L13;\n        HEAP16[$pnt2$368 >> 1] = $215;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $215 << 16 >> 16;\n        $220 = $wk_max$160 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($220 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($220 + 1 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($220 + 2 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($220 + 3 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($220 + 4 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($220 + 5 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($220 + 6 << 2) >> 2] = $j$076;\n        $wk_max$2 = $215;\n        break;\n       }\n      }\n      if ($75) {\n       $78 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0;\n       $81 = HEAP32[$labelInfo + 1179664 + ($74 + -1 << 2) >> 2] | 0;\n       if (($78 | 0) > ($81 | 0)) {\n        HEAP16[$pnt2$368 >> 1] = $81;\n        if (($wk_max$160 | 0) > 0) {\n         $k$056 = 0;\n         $wk$057 = $19;\n         while (1) {\n          if ((HEAP32[$wk$057 >> 2] | 0) == ($78 | 0)) HEAP32[$wk$057 >> 2] = $81;\n          $k$056 = $k$056 + 1 | 0;\n          if (($k$056 | 0) >= ($wk_max$160 | 0)) {\n           $98 = $81;\n           break;\n          } else $wk$057 = $wk$057 + 4 | 0;\n         }\n        } else $98 = $81;\n       } else {\n        HEAP16[$pnt2$368 >> 1] = $78;\n        if (($78 | 0) < ($81 | 0) & ($wk_max$160 | 0) > 0) {\n         $k$153 = 0;\n         $wk$154 = $19;\n         while (1) {\n          if ((HEAP32[$wk$154 >> 2] | 0) == ($81 | 0)) HEAP32[$wk$154 >> 2] = $78;\n          $k$153 = $k$153 + 1 | 0;\n          if (($k$153 | 0) >= ($wk_max$160 | 0)) {\n           $98 = $78;\n           break;\n          } else $wk$154 = $wk$154 + 4 | 0;\n         }\n        } else $98 = $78;\n       }\n       $100 = ($98 << 16 >> 16) * 7 | 0;\n       $102 = $labelInfo + 1310736 + ($100 + -7 << 2) | 0;\n       HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + 1;\n       $106 = $labelInfo + 1310736 + ($100 + -6 << 2) | 0;\n       HEAP32[$106 >> 2] = (HEAP32[$106 >> 2] | 0) + $i$265;\n       $110 = $labelInfo + 1310736 + ($100 + -5 << 2) | 0;\n       HEAP32[$110 >> 2] = (HEAP32[$110 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($100 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $116 = HEAP16[$pnt2$368 + -2 >> 1] | 0;\n      if ($116 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$368 >> 1] = $69;\n       $156 = $70 * 7 | 0;\n       $158 = $labelInfo + 1310736 + ($156 + -7 << 2) | 0;\n       HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + 1;\n       $162 = $labelInfo + 1310736 + ($156 + -6 << 2) | 0;\n       HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $i$265;\n       $166 = $labelInfo + 1310736 + ($156 + -5 << 2) | 0;\n       HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + $j$076;\n       $170 = $labelInfo + 1310736 + ($156 + -4 << 2) | 0;\n       if ((HEAP32[$170 >> 2] | 0) > ($i$265 | 0)) HEAP32[$170 >> 2] = $i$265;\n       HEAP32[$labelInfo + 1310736 + ($156 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $121 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0;\n      $124 = HEAP32[$labelInfo + 1179664 + (($116 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($121 | 0) > ($124 | 0)) {\n       HEAP16[$pnt2$368 >> 1] = $124;\n       if (($wk_max$160 | 0) > 0) {\n        $k$249 = 0;\n        $wk$250 = $19;\n        while (1) {\n         if ((HEAP32[$wk$250 >> 2] | 0) == ($121 | 0)) HEAP32[$wk$250 >> 2] = $124;\n         $k$249 = $k$249 + 1 | 0;\n         if (($k$249 | 0) >= ($wk_max$160 | 0)) {\n          $141 = $124;\n          break;\n         } else $wk$250 = $wk$250 + 4 | 0;\n        }\n       } else $141 = $124;\n      } else {\n       HEAP16[$pnt2$368 >> 1] = $121;\n       if (($121 | 0) < ($124 | 0) & ($wk_max$160 | 0) > 0) {\n        $k$346 = 0;\n        $wk$347 = $19;\n        while (1) {\n         if ((HEAP32[$wk$347 >> 2] | 0) == ($124 | 0)) HEAP32[$wk$347 >> 2] = $121;\n         $k$346 = $k$346 + 1 | 0;\n         if (($k$346 | 0) >= ($wk_max$160 | 0)) {\n          $141 = $121;\n          break;\n         } else $wk$347 = $wk$347 + 4 | 0;\n        }\n       } else $141 = $121;\n      }\n      $143 = ($141 << 16 >> 16) * 7 | 0;\n      $145 = $labelInfo + 1310736 + ($143 + -7 << 2) | 0;\n      HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + 1;\n      $149 = $labelInfo + 1310736 + ($143 + -6 << 2) | 0;\n      HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $i$265;\n      $153 = $labelInfo + 1310736 + ($143 + -5 << 2) | 0;\n      HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $j$076;\n      $wk_max$2 = $wk_max$160;\n     } else {\n      HEAP16[$pnt2$368 >> 1] = 0;\n      HEAP8[$dpnt$167 >> 0] = 0;\n      $wk_max$2 = $wk_max$160;\n     } while (0);\n     $i$265 = $i$265 + 1 | 0;\n     $235 = $pnt$169 + 4 | 0;\n     $236 = $pnt2$368 + 2 | 0;\n     $237 = $dpnt$167 + 1 | 0;\n     if (($i$265 | 0) >= ($12 | 0)) {\n      $dpnt$1$lcssa = $237;\n      $pnt$1$lcssa = $235;\n      $pnt2$3$lcssa = $236;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $dpnt$167 = $237;\n      $pnt$169 = $235;\n      $pnt2$368 = $236;\n      $wk_max$160 = $wk_max$2;\n     }\n    }\n   } else {\n    $dpnt$1$lcssa = $dpnt$078;\n    $pnt$1$lcssa = $pnt$080;\n    $pnt2$3$lcssa = $pnt2$279;\n    $wk_max$1$lcssa = $wk_max$075;\n   }\n   $j$076 = $j$076 + 1 | 0;\n   if (($j$076 | 0) >= ($3 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $dpnt$078 = $dpnt$1$lcssa + 2 | 0;\n    $pnt$080 = $pnt$1$lcssa + $$sum | 0;\n    $pnt2$279 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$075 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $244 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$342 = 1;\n   $j$143 = 1;\n   $wk$444 = $19;\n   while (1) {\n    $246 = HEAP32[$wk$444 >> 2] | 0;\n    if (($246 | 0) == ($i$342 | 0)) {\n     $252 = $j$143;\n     $j$2 = $j$143 + 1 | 0;\n    } else {\n     $252 = HEAP32[$labelInfo + 1179664 + ($246 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$143;\n    }\n    HEAP32[$wk$444 >> 2] = $252;\n    if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$342 = $i$342 + 1 | 0;\n     $j$143 = $j$2;\n     $wk$444 = $wk$444 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $256 = $labelInfo + 8 | 0;\n  $257 = $j$1$lcssa + -1 | 0;\n  HEAP32[$256 >> 2] = $257;\n  if (!$257) $$0 = 0; else {\n   _memset($244 | 0, 0, $257 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $257 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$440 = 0;\n    do {\n     $264 = $i$440 << 2;\n     HEAP32[$labelInfo + 131084 + ($264 << 2) >> 2] = $0;\n     HEAP32[$labelInfo + 131084 + (($264 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($264 | 2) << 2) >> 2] = $1;\n     HEAP32[$labelInfo + 131084 + (($264 | 3) << 2) >> 2] = 0;\n     $i$440 = $i$440 + 1 | 0;\n    } while (($i$440 | 0) < (HEAP32[$256 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$538 = 0;\n    do {\n     $278 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0;\n     $279 = $i$538 * 7 | 0;\n     $282 = $labelInfo + 12 + ($278 << 2) | 0;\n     HEAP32[$282 >> 2] = (HEAP32[$282 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($279 << 2) >> 2] | 0);\n     $289 = $278 << 1;\n     $290 = $labelInfo + 655376 + ($289 << 3) | 0;\n     HEAPF64[$290 >> 3] = +HEAPF64[$290 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($279 + 1 << 2) >> 2] | 0);\n     $298 = $labelInfo + 655376 + (($289 | 1) << 3) | 0;\n     HEAPF64[$298 >> 3] = +HEAPF64[$298 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($279 + 2 << 2) >> 2] | 0);\n     $301 = $278 << 2;\n     $302 = $labelInfo + 131084 + ($301 << 2) | 0;\n     $306 = HEAP32[$labelInfo + 1310736 + ($279 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$302 >> 2] | 0) > ($306 | 0)) HEAP32[$302 >> 2] = $306;\n     $309 = $labelInfo + 131084 + (($301 | 1) << 2) | 0;\n     $313 = HEAP32[$labelInfo + 1310736 + ($279 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$309 >> 2] | 0) < ($313 | 0)) HEAP32[$309 >> 2] = $313;\n     $316 = $labelInfo + 131084 + (($301 | 2) << 2) | 0;\n     $320 = HEAP32[$labelInfo + 1310736 + ($279 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$316 >> 2] | 0) > ($320 | 0)) HEAP32[$316 >> 2] = $320;\n     $323 = $labelInfo + 131084 + (($301 | 3) << 2) | 0;\n     $327 = HEAP32[$labelInfo + 1310736 + ($279 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$323 >> 2] | 0) < ($327 | 0)) HEAP32[$323 >> 2] = $327;\n     $i$538 = $i$538 + 1 | 0;\n    } while (($i$538 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$256 >> 2] | 0) > 0) {\n    $i$637 = 0;\n    do {\n     $331 = $labelInfo + 12 + ($i$637 << 2) | 0;\n     $334 = $i$637 << 1;\n     $335 = $labelInfo + 655376 + ($334 << 3) | 0;\n     HEAPF64[$335 >> 3] = +HEAPF64[$335 >> 3] / +(HEAP32[$331 >> 2] | 0);\n     $341 = $labelInfo + 655376 + (($334 | 1) << 3) | 0;\n     HEAPF64[$341 >> 3] = +HEAPF64[$341 >> 3] / +(HEAP32[$331 >> 2] | 0);\n     $i$637 = $i$637 + 1 | 0;\n    } while (($i$637 | 0) < (HEAP32[$256 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubEBI3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $100 = 0, $102 = 0, $106 = 0, $11 = 0, $110 = 0, $116 = 0, $12 = 0, $121 = 0, $124 = 0, $141 = 0, $143 = 0, $145 = 0, $149 = 0, $153 = 0, $156 = 0, $158 = 0, $162 = 0, $166 = 0, $170 = 0, $175 = 0, $177 = 0, $181 = 0, $185 = 0, $189 = 0, $19 = 0, $195 = 0, $198 = 0, $2 = 0, $20 = 0, $200 = 0, $204 = 0, $208 = 0, $212 = 0, $215 = 0, $22 = 0, $220 = 0, $235 = 0, $236 = 0, $237 = 0, $244 = 0, $246 = 0, $252 = 0, $256 = 0, $257 = 0, $264 = 0, $278 = 0, $279 = 0, $282 = 0, $289 = 0, $290 = 0, $298 = 0, $3 = 0, $301 = 0, $302 = 0, $306 = 0, $309 = 0, $31 = 0, $313 = 0, $316 = 0, $320 = 0, $323 = 0, $327 = 0, $33 = 0, $331 = 0, $334 = 0, $335 = 0, $341 = 0, $39 = 0, $50 = 0, $53 = 0, $55 = 0, $59 = 0, $63 = 0, $69 = 0, $70 = 0, $73 = 0, $74 = 0, $75 = 0, $78 = 0, $81 = 0, $98 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = ($xsize | 0) / 2 | 0;\n $1 = ($ysize | 0) / 2 | 0;\n $2 = HEAP32[$labelInfo >> 2] | 0;\n $3 = $1 + -1 | 0;\n if (($xsize | 0) > 1) {\n  $i$089 = 0;\n  $pnt1$091 = $2;\n  $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$090 >> 1] = 0;\n   HEAP16[$pnt1$091 >> 1] = 0;\n   $i$089 = $i$089 + 1 | 0;\n   if (($i$089 | 0) >= ($0 | 0)) break; else {\n    $pnt1$091 = $pnt1$091 + 2 | 0;\n    $pnt2$090 = $pnt2$090 + 2 | 0;\n   }\n  }\n }\n $11 = $labelingThresh * 3 | 0;\n $12 = $0 + -1 | 0;\n if (($ysize | 0) > 1) {\n  $i$183 = 0;\n  $pnt1$185 = $2;\n  $pnt2$184 = $2 + ($12 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$184 >> 1] = 0;\n   HEAP16[$pnt1$185 >> 1] = 0;\n   $i$183 = $i$183 + 1 | 0;\n   if (($i$183 | 0) >= ($1 | 0)) break; else {\n    $pnt1$185 = $pnt1$185 + ($0 << 1) | 0;\n    $pnt2$184 = $pnt2$184 + ($0 << 1) | 0;\n   }\n  }\n }\n $19 = $labelInfo + 1179664 | 0;\n $20 = $0 + 1 | 0;\n $22 = 0 - $0 | 0;\n $$sum1 = 1 - $0 | 0;\n $$sum2 = ~$0;\n $$sum = ($xsize << 1) + 8 | 0;\n L11 : do if (($3 | 0) > 1) {\n  $31 = ($12 | 0) > 1;\n  $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $20 | 0;\n  $j$076 = 1;\n  $pnt$080 = $image + (($xsize << 2) + 4) | 0;\n  $pnt2$279 = $2 + ($20 << 1) | 0;\n  $wk_max$075 = 0;\n  L13 : while (1) {\n   if ($31) {\n    $dpnt$167 = $dpnt$078;\n    $i$265 = 1;\n    $pnt$169 = $pnt$080;\n    $pnt2$368 = $pnt2$279;\n    $wk_max$160 = $wk_max$075;\n    while (1) {\n     $33 = HEAPU8[$pnt$169 >> 0] | 0;\n     $39 = HEAPU8[$pnt$169 + 1 >> 0] | 0;\n     do if ((($33 & 248) + 12 + ($33 << 5 & 224) + ($39 >>> 3 & 24) + ($39 << 2 & 248) | 0) > ($11 | 0)) {\n      HEAP16[$pnt2$368 >> 1] = 0;\n      HEAP8[$dpnt$167 >> 0] = 0;\n      $wk_max$2 = $wk_max$160;\n     } else {\n      HEAP8[$dpnt$167 >> 0] = -1;\n      $50 = HEAP16[$pnt2$368 + ($22 << 1) >> 1] | 0;\n      if ($50 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$368 >> 1] = $50;\n       $53 = ($50 << 16 >> 16) * 7 | 0;\n       $55 = $labelInfo + 1310736 + ($53 + -7 << 2) | 0;\n       HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + 1;\n       $59 = $labelInfo + 1310736 + ($53 + -6 << 2) | 0;\n       HEAP32[$59 >> 2] = (HEAP32[$59 >> 2] | 0) + $i$265;\n       $63 = $labelInfo + 1310736 + ($53 + -5 << 2) | 0;\n       HEAP32[$63 >> 2] = (HEAP32[$63 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($53 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $69 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0;\n      $70 = $69 << 16 >> 16;\n      $73 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0;\n      $74 = $73 << 16 >> 16;\n      $75 = $73 << 16 >> 16 > 0;\n      if ($69 << 16 >> 16 <= 0) {\n       if ($75) {\n        HEAP16[$pnt2$368 >> 1] = $73;\n        $175 = $74 * 7 | 0;\n        $177 = $labelInfo + 1310736 + ($175 + -7 << 2) | 0;\n        HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + 1;\n        $181 = $labelInfo + 1310736 + ($175 + -6 << 2) | 0;\n        HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + $i$265;\n        $185 = $labelInfo + 1310736 + ($175 + -5 << 2) | 0;\n        HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + $j$076;\n        $189 = $labelInfo + 1310736 + ($175 + -3 << 2) | 0;\n        if ((HEAP32[$189 >> 2] | 0) < ($i$265 | 0)) HEAP32[$189 >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($175 + -1 << 2) >> 2] = $j$076;\n        $wk_max$2 = $wk_max$160;\n        break;\n       }\n       $195 = HEAP16[$pnt2$368 + -2 >> 1] | 0;\n       if ($195 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$368 >> 1] = $195;\n        $198 = ($195 << 16 >> 16) * 7 | 0;\n        $200 = $labelInfo + 1310736 + ($198 + -7 << 2) | 0;\n        HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + 1;\n        $204 = $labelInfo + 1310736 + ($198 + -6 << 2) | 0;\n        HEAP32[$204 >> 2] = (HEAP32[$204 >> 2] | 0) + $i$265;\n        $208 = $labelInfo + 1310736 + ($198 + -5 << 2) | 0;\n        HEAP32[$208 >> 2] = (HEAP32[$208 >> 2] | 0) + $j$076;\n        $212 = $labelInfo + 1310736 + ($198 + -3 << 2) | 0;\n        if ((HEAP32[$212 >> 2] | 0) >= ($i$265 | 0)) {\n         $wk_max$2 = $wk_max$160;\n         break;\n        }\n        HEAP32[$212 >> 2] = $i$265;\n        $wk_max$2 = $wk_max$160;\n        break;\n       } else {\n        $215 = $wk_max$160 + 1 | 0;\n        if (($wk_max$160 | 0) > 32767) break L13;\n        HEAP16[$pnt2$368 >> 1] = $215;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $215 << 16 >> 16;\n        $220 = $wk_max$160 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($220 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($220 + 1 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($220 + 2 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($220 + 3 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($220 + 4 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($220 + 5 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($220 + 6 << 2) >> 2] = $j$076;\n        $wk_max$2 = $215;\n        break;\n       }\n      }\n      if ($75) {\n       $78 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0;\n       $81 = HEAP32[$labelInfo + 1179664 + ($74 + -1 << 2) >> 2] | 0;\n       if (($78 | 0) > ($81 | 0)) {\n        HEAP16[$pnt2$368 >> 1] = $81;\n        if (($wk_max$160 | 0) > 0) {\n         $k$056 = 0;\n         $wk$057 = $19;\n         while (1) {\n          if ((HEAP32[$wk$057 >> 2] | 0) == ($78 | 0)) HEAP32[$wk$057 >> 2] = $81;\n          $k$056 = $k$056 + 1 | 0;\n          if (($k$056 | 0) >= ($wk_max$160 | 0)) {\n           $98 = $81;\n           break;\n          } else $wk$057 = $wk$057 + 4 | 0;\n         }\n        } else $98 = $81;\n       } else {\n        HEAP16[$pnt2$368 >> 1] = $78;\n        if (($78 | 0) < ($81 | 0) & ($wk_max$160 | 0) > 0) {\n         $k$153 = 0;\n         $wk$154 = $19;\n         while (1) {\n          if ((HEAP32[$wk$154 >> 2] | 0) == ($81 | 0)) HEAP32[$wk$154 >> 2] = $78;\n          $k$153 = $k$153 + 1 | 0;\n          if (($k$153 | 0) >= ($wk_max$160 | 0)) {\n           $98 = $78;\n           break;\n          } else $wk$154 = $wk$154 + 4 | 0;\n         }\n        } else $98 = $78;\n       }\n       $100 = ($98 << 16 >> 16) * 7 | 0;\n       $102 = $labelInfo + 1310736 + ($100 + -7 << 2) | 0;\n       HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + 1;\n       $106 = $labelInfo + 1310736 + ($100 + -6 << 2) | 0;\n       HEAP32[$106 >> 2] = (HEAP32[$106 >> 2] | 0) + $i$265;\n       $110 = $labelInfo + 1310736 + ($100 + -5 << 2) | 0;\n       HEAP32[$110 >> 2] = (HEAP32[$110 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($100 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $116 = HEAP16[$pnt2$368 + -2 >> 1] | 0;\n      if ($116 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$368 >> 1] = $69;\n       $156 = $70 * 7 | 0;\n       $158 = $labelInfo + 1310736 + ($156 + -7 << 2) | 0;\n       HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + 1;\n       $162 = $labelInfo + 1310736 + ($156 + -6 << 2) | 0;\n       HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $i$265;\n       $166 = $labelInfo + 1310736 + ($156 + -5 << 2) | 0;\n       HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + $j$076;\n       $170 = $labelInfo + 1310736 + ($156 + -4 << 2) | 0;\n       if ((HEAP32[$170 >> 2] | 0) > ($i$265 | 0)) HEAP32[$170 >> 2] = $i$265;\n       HEAP32[$labelInfo + 1310736 + ($156 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $121 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0;\n      $124 = HEAP32[$labelInfo + 1179664 + (($116 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($121 | 0) > ($124 | 0)) {\n       HEAP16[$pnt2$368 >> 1] = $124;\n       if (($wk_max$160 | 0) > 0) {\n        $k$249 = 0;\n        $wk$250 = $19;\n        while (1) {\n         if ((HEAP32[$wk$250 >> 2] | 0) == ($121 | 0)) HEAP32[$wk$250 >> 2] = $124;\n         $k$249 = $k$249 + 1 | 0;\n         if (($k$249 | 0) >= ($wk_max$160 | 0)) {\n          $141 = $124;\n          break;\n         } else $wk$250 = $wk$250 + 4 | 0;\n        }\n       } else $141 = $124;\n      } else {\n       HEAP16[$pnt2$368 >> 1] = $121;\n       if (($121 | 0) < ($124 | 0) & ($wk_max$160 | 0) > 0) {\n        $k$346 = 0;\n        $wk$347 = $19;\n        while (1) {\n         if ((HEAP32[$wk$347 >> 2] | 0) == ($124 | 0)) HEAP32[$wk$347 >> 2] = $121;\n         $k$346 = $k$346 + 1 | 0;\n         if (($k$346 | 0) >= ($wk_max$160 | 0)) {\n          $141 = $121;\n          break;\n         } else $wk$347 = $wk$347 + 4 | 0;\n        }\n       } else $141 = $121;\n      }\n      $143 = ($141 << 16 >> 16) * 7 | 0;\n      $145 = $labelInfo + 1310736 + ($143 + -7 << 2) | 0;\n      HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + 1;\n      $149 = $labelInfo + 1310736 + ($143 + -6 << 2) | 0;\n      HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $i$265;\n      $153 = $labelInfo + 1310736 + ($143 + -5 << 2) | 0;\n      HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $j$076;\n      $wk_max$2 = $wk_max$160;\n     } while (0);\n     $i$265 = $i$265 + 1 | 0;\n     $235 = $pnt$169 + 4 | 0;\n     $236 = $pnt2$368 + 2 | 0;\n     $237 = $dpnt$167 + 1 | 0;\n     if (($i$265 | 0) >= ($12 | 0)) {\n      $dpnt$1$lcssa = $237;\n      $pnt$1$lcssa = $235;\n      $pnt2$3$lcssa = $236;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $dpnt$167 = $237;\n      $pnt$169 = $235;\n      $pnt2$368 = $236;\n      $wk_max$160 = $wk_max$2;\n     }\n    }\n   } else {\n    $dpnt$1$lcssa = $dpnt$078;\n    $pnt$1$lcssa = $pnt$080;\n    $pnt2$3$lcssa = $pnt2$279;\n    $wk_max$1$lcssa = $wk_max$075;\n   }\n   $j$076 = $j$076 + 1 | 0;\n   if (($j$076 | 0) >= ($3 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $dpnt$078 = $dpnt$1$lcssa + 2 | 0;\n    $pnt$080 = $pnt$1$lcssa + $$sum | 0;\n    $pnt2$279 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$075 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $244 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$342 = 1;\n   $j$143 = 1;\n   $wk$444 = $19;\n   while (1) {\n    $246 = HEAP32[$wk$444 >> 2] | 0;\n    if (($246 | 0) == ($i$342 | 0)) {\n     $252 = $j$143;\n     $j$2 = $j$143 + 1 | 0;\n    } else {\n     $252 = HEAP32[$labelInfo + 1179664 + ($246 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$143;\n    }\n    HEAP32[$wk$444 >> 2] = $252;\n    if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$342 = $i$342 + 1 | 0;\n     $j$143 = $j$2;\n     $wk$444 = $wk$444 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $256 = $labelInfo + 8 | 0;\n  $257 = $j$1$lcssa + -1 | 0;\n  HEAP32[$256 >> 2] = $257;\n  if (!$257) $$0 = 0; else {\n   _memset($244 | 0, 0, $257 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $257 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$440 = 0;\n    do {\n     $264 = $i$440 << 2;\n     HEAP32[$labelInfo + 131084 + ($264 << 2) >> 2] = $0;\n     HEAP32[$labelInfo + 131084 + (($264 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($264 | 2) << 2) >> 2] = $1;\n     HEAP32[$labelInfo + 131084 + (($264 | 3) << 2) >> 2] = 0;\n     $i$440 = $i$440 + 1 | 0;\n    } while (($i$440 | 0) < (HEAP32[$256 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$538 = 0;\n    do {\n     $278 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0;\n     $279 = $i$538 * 7 | 0;\n     $282 = $labelInfo + 12 + ($278 << 2) | 0;\n     HEAP32[$282 >> 2] = (HEAP32[$282 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($279 << 2) >> 2] | 0);\n     $289 = $278 << 1;\n     $290 = $labelInfo + 655376 + ($289 << 3) | 0;\n     HEAPF64[$290 >> 3] = +HEAPF64[$290 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($279 + 1 << 2) >> 2] | 0);\n     $298 = $labelInfo + 655376 + (($289 | 1) << 3) | 0;\n     HEAPF64[$298 >> 3] = +HEAPF64[$298 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($279 + 2 << 2) >> 2] | 0);\n     $301 = $278 << 2;\n     $302 = $labelInfo + 131084 + ($301 << 2) | 0;\n     $306 = HEAP32[$labelInfo + 1310736 + ($279 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$302 >> 2] | 0) > ($306 | 0)) HEAP32[$302 >> 2] = $306;\n     $309 = $labelInfo + 131084 + (($301 | 1) << 2) | 0;\n     $313 = HEAP32[$labelInfo + 1310736 + ($279 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$309 >> 2] | 0) < ($313 | 0)) HEAP32[$309 >> 2] = $313;\n     $316 = $labelInfo + 131084 + (($301 | 2) << 2) | 0;\n     $320 = HEAP32[$labelInfo + 1310736 + ($279 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$316 >> 2] | 0) > ($320 | 0)) HEAP32[$316 >> 2] = $320;\n     $323 = $labelInfo + 131084 + (($301 | 3) << 2) | 0;\n     $327 = HEAP32[$labelInfo + 1310736 + ($279 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$323 >> 2] | 0) < ($327 | 0)) HEAP32[$323 >> 2] = $327;\n     $i$538 = $i$538 + 1 | 0;\n    } while (($i$538 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$256 >> 2] | 0) > 0) {\n    $i$637 = 0;\n    do {\n     $331 = $labelInfo + 12 + ($i$637 << 2) | 0;\n     $334 = $i$637 << 1;\n     $335 = $labelInfo + 655376 + ($334 << 3) | 0;\n     HEAPF64[$335 >> 3] = +HEAPF64[$335 >> 3] / +(HEAP32[$331 >> 2] | 0);\n     $341 = $labelInfo + 655376 + (($334 | 1) << 3) | 0;\n     HEAPF64[$341 >> 3] = +HEAPF64[$341 >> 3] / +(HEAP32[$331 >> 2] | 0);\n     $i$637 = $i$637 + 1 | 0;\n    } while (($i$637 | 0) < (HEAP32[$256 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubEWI3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $100 = 0, $102 = 0, $106 = 0, $11 = 0, $110 = 0, $116 = 0, $12 = 0, $121 = 0, $124 = 0, $141 = 0, $143 = 0, $145 = 0, $149 = 0, $153 = 0, $156 = 0, $158 = 0, $162 = 0, $166 = 0, $170 = 0, $175 = 0, $177 = 0, $181 = 0, $185 = 0, $189 = 0, $19 = 0, $195 = 0, $198 = 0, $2 = 0, $20 = 0, $200 = 0, $204 = 0, $208 = 0, $212 = 0, $215 = 0, $22 = 0, $220 = 0, $235 = 0, $236 = 0, $237 = 0, $244 = 0, $246 = 0, $252 = 0, $256 = 0, $257 = 0, $264 = 0, $278 = 0, $279 = 0, $282 = 0, $289 = 0, $290 = 0, $298 = 0, $3 = 0, $301 = 0, $302 = 0, $306 = 0, $309 = 0, $31 = 0, $313 = 0, $316 = 0, $320 = 0, $323 = 0, $327 = 0, $33 = 0, $331 = 0, $334 = 0, $335 = 0, $341 = 0, $39 = 0, $50 = 0, $53 = 0, $55 = 0, $59 = 0, $63 = 0, $69 = 0, $70 = 0, $73 = 0, $74 = 0, $75 = 0, $78 = 0, $81 = 0, $98 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = ($xsize | 0) / 2 | 0;\n $1 = ($ysize | 0) / 2 | 0;\n $2 = HEAP32[$labelInfo >> 2] | 0;\n $3 = $1 + -1 | 0;\n if (($xsize | 0) > 1) {\n  $i$089 = 0;\n  $pnt1$091 = $2;\n  $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$090 >> 1] = 0;\n   HEAP16[$pnt1$091 >> 1] = 0;\n   $i$089 = $i$089 + 1 | 0;\n   if (($i$089 | 0) >= ($0 | 0)) break; else {\n    $pnt1$091 = $pnt1$091 + 2 | 0;\n    $pnt2$090 = $pnt2$090 + 2 | 0;\n   }\n  }\n }\n $11 = $labelingThresh * 3 | 0;\n $12 = $0 + -1 | 0;\n if (($ysize | 0) > 1) {\n  $i$183 = 0;\n  $pnt1$185 = $2;\n  $pnt2$184 = $2 + ($12 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$184 >> 1] = 0;\n   HEAP16[$pnt1$185 >> 1] = 0;\n   $i$183 = $i$183 + 1 | 0;\n   if (($i$183 | 0) >= ($1 | 0)) break; else {\n    $pnt1$185 = $pnt1$185 + ($0 << 1) | 0;\n    $pnt2$184 = $pnt2$184 + ($0 << 1) | 0;\n   }\n  }\n }\n $19 = $labelInfo + 1179664 | 0;\n $20 = $0 + 1 | 0;\n $22 = 0 - $0 | 0;\n $$sum1 = 1 - $0 | 0;\n $$sum2 = ~$0;\n $$sum = ($xsize << 1) + 8 | 0;\n L11 : do if (($3 | 0) > 1) {\n  $31 = ($12 | 0) > 1;\n  $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $20 | 0;\n  $j$076 = 1;\n  $pnt$080 = $image + (($xsize << 2) + 4) | 0;\n  $pnt2$279 = $2 + ($20 << 1) | 0;\n  $wk_max$075 = 0;\n  L13 : while (1) {\n   if ($31) {\n    $dpnt$167 = $dpnt$078;\n    $i$265 = 1;\n    $pnt$169 = $pnt$080;\n    $pnt2$368 = $pnt2$279;\n    $wk_max$160 = $wk_max$075;\n    while (1) {\n     $33 = HEAPU8[$pnt$169 >> 0] | 0;\n     $39 = HEAPU8[$pnt$169 + 1 >> 0] | 0;\n     do if ((($33 & 248) + 10 + ($33 << 5 & 224) + ($39 >>> 3 & 28) + ($39 << 3 & 248) | 0) > ($11 | 0)) {\n      HEAP8[$dpnt$167 >> 0] = -1;\n      $50 = HEAP16[$pnt2$368 + ($22 << 1) >> 1] | 0;\n      if ($50 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$368 >> 1] = $50;\n       $53 = ($50 << 16 >> 16) * 7 | 0;\n       $55 = $labelInfo + 1310736 + ($53 + -7 << 2) | 0;\n       HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + 1;\n       $59 = $labelInfo + 1310736 + ($53 + -6 << 2) | 0;\n       HEAP32[$59 >> 2] = (HEAP32[$59 >> 2] | 0) + $i$265;\n       $63 = $labelInfo + 1310736 + ($53 + -5 << 2) | 0;\n       HEAP32[$63 >> 2] = (HEAP32[$63 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($53 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $69 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0;\n      $70 = $69 << 16 >> 16;\n      $73 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0;\n      $74 = $73 << 16 >> 16;\n      $75 = $73 << 16 >> 16 > 0;\n      if ($69 << 16 >> 16 <= 0) {\n       if ($75) {\n        HEAP16[$pnt2$368 >> 1] = $73;\n        $175 = $74 * 7 | 0;\n        $177 = $labelInfo + 1310736 + ($175 + -7 << 2) | 0;\n        HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + 1;\n        $181 = $labelInfo + 1310736 + ($175 + -6 << 2) | 0;\n        HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + $i$265;\n        $185 = $labelInfo + 1310736 + ($175 + -5 << 2) | 0;\n        HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + $j$076;\n        $189 = $labelInfo + 1310736 + ($175 + -3 << 2) | 0;\n        if ((HEAP32[$189 >> 2] | 0) < ($i$265 | 0)) HEAP32[$189 >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($175 + -1 << 2) >> 2] = $j$076;\n        $wk_max$2 = $wk_max$160;\n        break;\n       }\n       $195 = HEAP16[$pnt2$368 + -2 >> 1] | 0;\n       if ($195 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$368 >> 1] = $195;\n        $198 = ($195 << 16 >> 16) * 7 | 0;\n        $200 = $labelInfo + 1310736 + ($198 + -7 << 2) | 0;\n        HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + 1;\n        $204 = $labelInfo + 1310736 + ($198 + -6 << 2) | 0;\n        HEAP32[$204 >> 2] = (HEAP32[$204 >> 2] | 0) + $i$265;\n        $208 = $labelInfo + 1310736 + ($198 + -5 << 2) | 0;\n        HEAP32[$208 >> 2] = (HEAP32[$208 >> 2] | 0) + $j$076;\n        $212 = $labelInfo + 1310736 + ($198 + -3 << 2) | 0;\n        if ((HEAP32[$212 >> 2] | 0) >= ($i$265 | 0)) {\n         $wk_max$2 = $wk_max$160;\n         break;\n        }\n        HEAP32[$212 >> 2] = $i$265;\n        $wk_max$2 = $wk_max$160;\n        break;\n       } else {\n        $215 = $wk_max$160 + 1 | 0;\n        if (($wk_max$160 | 0) > 32767) break L13;\n        HEAP16[$pnt2$368 >> 1] = $215;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $215 << 16 >> 16;\n        $220 = $wk_max$160 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($220 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($220 + 1 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($220 + 2 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($220 + 3 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($220 + 4 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($220 + 5 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($220 + 6 << 2) >> 2] = $j$076;\n        $wk_max$2 = $215;\n        break;\n       }\n      }\n      if ($75) {\n       $78 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0;\n       $81 = HEAP32[$labelInfo + 1179664 + ($74 + -1 << 2) >> 2] | 0;\n       if (($78 | 0) > ($81 | 0)) {\n        HEAP16[$pnt2$368 >> 1] = $81;\n        if (($wk_max$160 | 0) > 0) {\n         $k$056 = 0;\n         $wk$057 = $19;\n         while (1) {\n          if ((HEAP32[$wk$057 >> 2] | 0) == ($78 | 0)) HEAP32[$wk$057 >> 2] = $81;\n          $k$056 = $k$056 + 1 | 0;\n          if (($k$056 | 0) >= ($wk_max$160 | 0)) {\n           $98 = $81;\n           break;\n          } else $wk$057 = $wk$057 + 4 | 0;\n         }\n        } else $98 = $81;\n       } else {\n        HEAP16[$pnt2$368 >> 1] = $78;\n        if (($78 | 0) < ($81 | 0) & ($wk_max$160 | 0) > 0) {\n         $k$153 = 0;\n         $wk$154 = $19;\n         while (1) {\n          if ((HEAP32[$wk$154 >> 2] | 0) == ($81 | 0)) HEAP32[$wk$154 >> 2] = $78;\n          $k$153 = $k$153 + 1 | 0;\n          if (($k$153 | 0) >= ($wk_max$160 | 0)) {\n           $98 = $78;\n           break;\n          } else $wk$154 = $wk$154 + 4 | 0;\n         }\n        } else $98 = $78;\n       }\n       $100 = ($98 << 16 >> 16) * 7 | 0;\n       $102 = $labelInfo + 1310736 + ($100 + -7 << 2) | 0;\n       HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + 1;\n       $106 = $labelInfo + 1310736 + ($100 + -6 << 2) | 0;\n       HEAP32[$106 >> 2] = (HEAP32[$106 >> 2] | 0) + $i$265;\n       $110 = $labelInfo + 1310736 + ($100 + -5 << 2) | 0;\n       HEAP32[$110 >> 2] = (HEAP32[$110 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($100 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $116 = HEAP16[$pnt2$368 + -2 >> 1] | 0;\n      if ($116 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$368 >> 1] = $69;\n       $156 = $70 * 7 | 0;\n       $158 = $labelInfo + 1310736 + ($156 + -7 << 2) | 0;\n       HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + 1;\n       $162 = $labelInfo + 1310736 + ($156 + -6 << 2) | 0;\n       HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $i$265;\n       $166 = $labelInfo + 1310736 + ($156 + -5 << 2) | 0;\n       HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + $j$076;\n       $170 = $labelInfo + 1310736 + ($156 + -4 << 2) | 0;\n       if ((HEAP32[$170 >> 2] | 0) > ($i$265 | 0)) HEAP32[$170 >> 2] = $i$265;\n       HEAP32[$labelInfo + 1310736 + ($156 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $121 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0;\n      $124 = HEAP32[$labelInfo + 1179664 + (($116 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($121 | 0) > ($124 | 0)) {\n       HEAP16[$pnt2$368 >> 1] = $124;\n       if (($wk_max$160 | 0) > 0) {\n        $k$249 = 0;\n        $wk$250 = $19;\n        while (1) {\n         if ((HEAP32[$wk$250 >> 2] | 0) == ($121 | 0)) HEAP32[$wk$250 >> 2] = $124;\n         $k$249 = $k$249 + 1 | 0;\n         if (($k$249 | 0) >= ($wk_max$160 | 0)) {\n          $141 = $124;\n          break;\n         } else $wk$250 = $wk$250 + 4 | 0;\n        }\n       } else $141 = $124;\n      } else {\n       HEAP16[$pnt2$368 >> 1] = $121;\n       if (($121 | 0) < ($124 | 0) & ($wk_max$160 | 0) > 0) {\n        $k$346 = 0;\n        $wk$347 = $19;\n        while (1) {\n         if ((HEAP32[$wk$347 >> 2] | 0) == ($124 | 0)) HEAP32[$wk$347 >> 2] = $121;\n         $k$346 = $k$346 + 1 | 0;\n         if (($k$346 | 0) >= ($wk_max$160 | 0)) {\n          $141 = $121;\n          break;\n         } else $wk$347 = $wk$347 + 4 | 0;\n        }\n       } else $141 = $121;\n      }\n      $143 = ($141 << 16 >> 16) * 7 | 0;\n      $145 = $labelInfo + 1310736 + ($143 + -7 << 2) | 0;\n      HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + 1;\n      $149 = $labelInfo + 1310736 + ($143 + -6 << 2) | 0;\n      HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $i$265;\n      $153 = $labelInfo + 1310736 + ($143 + -5 << 2) | 0;\n      HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $j$076;\n      $wk_max$2 = $wk_max$160;\n     } else {\n      HEAP16[$pnt2$368 >> 1] = 0;\n      HEAP8[$dpnt$167 >> 0] = 0;\n      $wk_max$2 = $wk_max$160;\n     } while (0);\n     $i$265 = $i$265 + 1 | 0;\n     $235 = $pnt$169 + 4 | 0;\n     $236 = $pnt2$368 + 2 | 0;\n     $237 = $dpnt$167 + 1 | 0;\n     if (($i$265 | 0) >= ($12 | 0)) {\n      $dpnt$1$lcssa = $237;\n      $pnt$1$lcssa = $235;\n      $pnt2$3$lcssa = $236;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $dpnt$167 = $237;\n      $pnt$169 = $235;\n      $pnt2$368 = $236;\n      $wk_max$160 = $wk_max$2;\n     }\n    }\n   } else {\n    $dpnt$1$lcssa = $dpnt$078;\n    $pnt$1$lcssa = $pnt$080;\n    $pnt2$3$lcssa = $pnt2$279;\n    $wk_max$1$lcssa = $wk_max$075;\n   }\n   $j$076 = $j$076 + 1 | 0;\n   if (($j$076 | 0) >= ($3 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $dpnt$078 = $dpnt$1$lcssa + 2 | 0;\n    $pnt$080 = $pnt$1$lcssa + $$sum | 0;\n    $pnt2$279 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$075 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $244 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$342 = 1;\n   $j$143 = 1;\n   $wk$444 = $19;\n   while (1) {\n    $246 = HEAP32[$wk$444 >> 2] | 0;\n    if (($246 | 0) == ($i$342 | 0)) {\n     $252 = $j$143;\n     $j$2 = $j$143 + 1 | 0;\n    } else {\n     $252 = HEAP32[$labelInfo + 1179664 + ($246 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$143;\n    }\n    HEAP32[$wk$444 >> 2] = $252;\n    if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$342 = $i$342 + 1 | 0;\n     $j$143 = $j$2;\n     $wk$444 = $wk$444 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $256 = $labelInfo + 8 | 0;\n  $257 = $j$1$lcssa + -1 | 0;\n  HEAP32[$256 >> 2] = $257;\n  if (!$257) $$0 = 0; else {\n   _memset($244 | 0, 0, $257 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $257 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$440 = 0;\n    do {\n     $264 = $i$440 << 2;\n     HEAP32[$labelInfo + 131084 + ($264 << 2) >> 2] = $0;\n     HEAP32[$labelInfo + 131084 + (($264 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($264 | 2) << 2) >> 2] = $1;\n     HEAP32[$labelInfo + 131084 + (($264 | 3) << 2) >> 2] = 0;\n     $i$440 = $i$440 + 1 | 0;\n    } while (($i$440 | 0) < (HEAP32[$256 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$538 = 0;\n    do {\n     $278 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0;\n     $279 = $i$538 * 7 | 0;\n     $282 = $labelInfo + 12 + ($278 << 2) | 0;\n     HEAP32[$282 >> 2] = (HEAP32[$282 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($279 << 2) >> 2] | 0);\n     $289 = $278 << 1;\n     $290 = $labelInfo + 655376 + ($289 << 3) | 0;\n     HEAPF64[$290 >> 3] = +HEAPF64[$290 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($279 + 1 << 2) >> 2] | 0);\n     $298 = $labelInfo + 655376 + (($289 | 1) << 3) | 0;\n     HEAPF64[$298 >> 3] = +HEAPF64[$298 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($279 + 2 << 2) >> 2] | 0);\n     $301 = $278 << 2;\n     $302 = $labelInfo + 131084 + ($301 << 2) | 0;\n     $306 = HEAP32[$labelInfo + 1310736 + ($279 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$302 >> 2] | 0) > ($306 | 0)) HEAP32[$302 >> 2] = $306;\n     $309 = $labelInfo + 131084 + (($301 | 1) << 2) | 0;\n     $313 = HEAP32[$labelInfo + 1310736 + ($279 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$309 >> 2] | 0) < ($313 | 0)) HEAP32[$309 >> 2] = $313;\n     $316 = $labelInfo + 131084 + (($301 | 2) << 2) | 0;\n     $320 = HEAP32[$labelInfo + 1310736 + ($279 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$316 >> 2] | 0) > ($320 | 0)) HEAP32[$316 >> 2] = $320;\n     $323 = $labelInfo + 131084 + (($301 | 3) << 2) | 0;\n     $327 = HEAP32[$labelInfo + 1310736 + ($279 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$323 >> 2] | 0) < ($327 | 0)) HEAP32[$323 >> 2] = $327;\n     $i$538 = $i$538 + 1 | 0;\n    } while (($i$538 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$256 >> 2] | 0) > 0) {\n    $i$637 = 0;\n    do {\n     $331 = $labelInfo + 12 + ($i$637 << 2) | 0;\n     $334 = $i$637 << 1;\n     $335 = $labelInfo + 655376 + ($334 << 3) | 0;\n     HEAPF64[$335 >> 3] = +HEAPF64[$335 >> 3] / +(HEAP32[$331 >> 2] | 0);\n     $341 = $labelInfo + 655376 + (($334 | 1) << 3) | 0;\n     HEAPF64[$341 >> 3] = +HEAPF64[$341 >> 3] / +(HEAP32[$331 >> 2] | 0);\n     $i$637 = $i$637 + 1 | 0;\n    } while (($i$637 | 0) < (HEAP32[$256 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubEBI3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $100 = 0, $102 = 0, $106 = 0, $11 = 0, $110 = 0, $116 = 0, $12 = 0, $121 = 0, $124 = 0, $141 = 0, $143 = 0, $145 = 0, $149 = 0, $153 = 0, $156 = 0, $158 = 0, $162 = 0, $166 = 0, $170 = 0, $175 = 0, $177 = 0, $181 = 0, $185 = 0, $189 = 0, $19 = 0, $195 = 0, $198 = 0, $2 = 0, $20 = 0, $200 = 0, $204 = 0, $208 = 0, $212 = 0, $215 = 0, $22 = 0, $220 = 0, $235 = 0, $236 = 0, $237 = 0, $244 = 0, $246 = 0, $252 = 0, $256 = 0, $257 = 0, $264 = 0, $278 = 0, $279 = 0, $282 = 0, $289 = 0, $290 = 0, $298 = 0, $3 = 0, $301 = 0, $302 = 0, $306 = 0, $309 = 0, $31 = 0, $313 = 0, $316 = 0, $320 = 0, $323 = 0, $327 = 0, $33 = 0, $331 = 0, $334 = 0, $335 = 0, $341 = 0, $39 = 0, $50 = 0, $53 = 0, $55 = 0, $59 = 0, $63 = 0, $69 = 0, $70 = 0, $73 = 0, $74 = 0, $75 = 0, $78 = 0, $81 = 0, $98 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = ($xsize | 0) / 2 | 0;\n $1 = ($ysize | 0) / 2 | 0;\n $2 = HEAP32[$labelInfo >> 2] | 0;\n $3 = $1 + -1 | 0;\n if (($xsize | 0) > 1) {\n  $i$089 = 0;\n  $pnt1$091 = $2;\n  $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$090 >> 1] = 0;\n   HEAP16[$pnt1$091 >> 1] = 0;\n   $i$089 = $i$089 + 1 | 0;\n   if (($i$089 | 0) >= ($0 | 0)) break; else {\n    $pnt1$091 = $pnt1$091 + 2 | 0;\n    $pnt2$090 = $pnt2$090 + 2 | 0;\n   }\n  }\n }\n $11 = $labelingThresh * 3 | 0;\n $12 = $0 + -1 | 0;\n if (($ysize | 0) > 1) {\n  $i$183 = 0;\n  $pnt1$185 = $2;\n  $pnt2$184 = $2 + ($12 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$184 >> 1] = 0;\n   HEAP16[$pnt1$185 >> 1] = 0;\n   $i$183 = $i$183 + 1 | 0;\n   if (($i$183 | 0) >= ($1 | 0)) break; else {\n    $pnt1$185 = $pnt1$185 + ($0 << 1) | 0;\n    $pnt2$184 = $pnt2$184 + ($0 << 1) | 0;\n   }\n  }\n }\n $19 = $labelInfo + 1179664 | 0;\n $20 = $0 + 1 | 0;\n $22 = 0 - $0 | 0;\n $$sum1 = 1 - $0 | 0;\n $$sum2 = ~$0;\n $$sum = ($xsize << 1) + 8 | 0;\n L11 : do if (($3 | 0) > 1) {\n  $31 = ($12 | 0) > 1;\n  $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $20 | 0;\n  $j$076 = 1;\n  $pnt$080 = $image + (($xsize << 2) + 4) | 0;\n  $pnt2$279 = $2 + ($20 << 1) | 0;\n  $wk_max$075 = 0;\n  L13 : while (1) {\n   if ($31) {\n    $dpnt$167 = $dpnt$078;\n    $i$265 = 1;\n    $pnt$169 = $pnt$080;\n    $pnt2$368 = $pnt2$279;\n    $wk_max$160 = $wk_max$075;\n    while (1) {\n     $33 = HEAPU8[$pnt$169 >> 0] | 0;\n     $39 = HEAPU8[$pnt$169 + 1 >> 0] | 0;\n     do if ((($33 & 248) + 10 + ($33 << 5 & 224) + ($39 >>> 3 & 28) + ($39 << 3 & 248) | 0) > ($11 | 0)) {\n      HEAP16[$pnt2$368 >> 1] = 0;\n      HEAP8[$dpnt$167 >> 0] = 0;\n      $wk_max$2 = $wk_max$160;\n     } else {\n      HEAP8[$dpnt$167 >> 0] = -1;\n      $50 = HEAP16[$pnt2$368 + ($22 << 1) >> 1] | 0;\n      if ($50 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$368 >> 1] = $50;\n       $53 = ($50 << 16 >> 16) * 7 | 0;\n       $55 = $labelInfo + 1310736 + ($53 + -7 << 2) | 0;\n       HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + 1;\n       $59 = $labelInfo + 1310736 + ($53 + -6 << 2) | 0;\n       HEAP32[$59 >> 2] = (HEAP32[$59 >> 2] | 0) + $i$265;\n       $63 = $labelInfo + 1310736 + ($53 + -5 << 2) | 0;\n       HEAP32[$63 >> 2] = (HEAP32[$63 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($53 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $69 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0;\n      $70 = $69 << 16 >> 16;\n      $73 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0;\n      $74 = $73 << 16 >> 16;\n      $75 = $73 << 16 >> 16 > 0;\n      if ($69 << 16 >> 16 <= 0) {\n       if ($75) {\n        HEAP16[$pnt2$368 >> 1] = $73;\n        $175 = $74 * 7 | 0;\n        $177 = $labelInfo + 1310736 + ($175 + -7 << 2) | 0;\n        HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + 1;\n        $181 = $labelInfo + 1310736 + ($175 + -6 << 2) | 0;\n        HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + $i$265;\n        $185 = $labelInfo + 1310736 + ($175 + -5 << 2) | 0;\n        HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + $j$076;\n        $189 = $labelInfo + 1310736 + ($175 + -3 << 2) | 0;\n        if ((HEAP32[$189 >> 2] | 0) < ($i$265 | 0)) HEAP32[$189 >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($175 + -1 << 2) >> 2] = $j$076;\n        $wk_max$2 = $wk_max$160;\n        break;\n       }\n       $195 = HEAP16[$pnt2$368 + -2 >> 1] | 0;\n       if ($195 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$368 >> 1] = $195;\n        $198 = ($195 << 16 >> 16) * 7 | 0;\n        $200 = $labelInfo + 1310736 + ($198 + -7 << 2) | 0;\n        HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + 1;\n        $204 = $labelInfo + 1310736 + ($198 + -6 << 2) | 0;\n        HEAP32[$204 >> 2] = (HEAP32[$204 >> 2] | 0) + $i$265;\n        $208 = $labelInfo + 1310736 + ($198 + -5 << 2) | 0;\n        HEAP32[$208 >> 2] = (HEAP32[$208 >> 2] | 0) + $j$076;\n        $212 = $labelInfo + 1310736 + ($198 + -3 << 2) | 0;\n        if ((HEAP32[$212 >> 2] | 0) >= ($i$265 | 0)) {\n         $wk_max$2 = $wk_max$160;\n         break;\n        }\n        HEAP32[$212 >> 2] = $i$265;\n        $wk_max$2 = $wk_max$160;\n        break;\n       } else {\n        $215 = $wk_max$160 + 1 | 0;\n        if (($wk_max$160 | 0) > 32767) break L13;\n        HEAP16[$pnt2$368 >> 1] = $215;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $215 << 16 >> 16;\n        $220 = $wk_max$160 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($220 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($220 + 1 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($220 + 2 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($220 + 3 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($220 + 4 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($220 + 5 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($220 + 6 << 2) >> 2] = $j$076;\n        $wk_max$2 = $215;\n        break;\n       }\n      }\n      if ($75) {\n       $78 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0;\n       $81 = HEAP32[$labelInfo + 1179664 + ($74 + -1 << 2) >> 2] | 0;\n       if (($78 | 0) > ($81 | 0)) {\n        HEAP16[$pnt2$368 >> 1] = $81;\n        if (($wk_max$160 | 0) > 0) {\n         $k$056 = 0;\n         $wk$057 = $19;\n         while (1) {\n          if ((HEAP32[$wk$057 >> 2] | 0) == ($78 | 0)) HEAP32[$wk$057 >> 2] = $81;\n          $k$056 = $k$056 + 1 | 0;\n          if (($k$056 | 0) >= ($wk_max$160 | 0)) {\n           $98 = $81;\n           break;\n          } else $wk$057 = $wk$057 + 4 | 0;\n         }\n        } else $98 = $81;\n       } else {\n        HEAP16[$pnt2$368 >> 1] = $78;\n        if (($78 | 0) < ($81 | 0) & ($wk_max$160 | 0) > 0) {\n         $k$153 = 0;\n         $wk$154 = $19;\n         while (1) {\n          if ((HEAP32[$wk$154 >> 2] | 0) == ($81 | 0)) HEAP32[$wk$154 >> 2] = $78;\n          $k$153 = $k$153 + 1 | 0;\n          if (($k$153 | 0) >= ($wk_max$160 | 0)) {\n           $98 = $78;\n           break;\n          } else $wk$154 = $wk$154 + 4 | 0;\n         }\n        } else $98 = $78;\n       }\n       $100 = ($98 << 16 >> 16) * 7 | 0;\n       $102 = $labelInfo + 1310736 + ($100 + -7 << 2) | 0;\n       HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + 1;\n       $106 = $labelInfo + 1310736 + ($100 + -6 << 2) | 0;\n       HEAP32[$106 >> 2] = (HEAP32[$106 >> 2] | 0) + $i$265;\n       $110 = $labelInfo + 1310736 + ($100 + -5 << 2) | 0;\n       HEAP32[$110 >> 2] = (HEAP32[$110 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($100 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $116 = HEAP16[$pnt2$368 + -2 >> 1] | 0;\n      if ($116 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$368 >> 1] = $69;\n       $156 = $70 * 7 | 0;\n       $158 = $labelInfo + 1310736 + ($156 + -7 << 2) | 0;\n       HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + 1;\n       $162 = $labelInfo + 1310736 + ($156 + -6 << 2) | 0;\n       HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $i$265;\n       $166 = $labelInfo + 1310736 + ($156 + -5 << 2) | 0;\n       HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + $j$076;\n       $170 = $labelInfo + 1310736 + ($156 + -4 << 2) | 0;\n       if ((HEAP32[$170 >> 2] | 0) > ($i$265 | 0)) HEAP32[$170 >> 2] = $i$265;\n       HEAP32[$labelInfo + 1310736 + ($156 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $121 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0;\n      $124 = HEAP32[$labelInfo + 1179664 + (($116 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($121 | 0) > ($124 | 0)) {\n       HEAP16[$pnt2$368 >> 1] = $124;\n       if (($wk_max$160 | 0) > 0) {\n        $k$249 = 0;\n        $wk$250 = $19;\n        while (1) {\n         if ((HEAP32[$wk$250 >> 2] | 0) == ($121 | 0)) HEAP32[$wk$250 >> 2] = $124;\n         $k$249 = $k$249 + 1 | 0;\n         if (($k$249 | 0) >= ($wk_max$160 | 0)) {\n          $141 = $124;\n          break;\n         } else $wk$250 = $wk$250 + 4 | 0;\n        }\n       } else $141 = $124;\n      } else {\n       HEAP16[$pnt2$368 >> 1] = $121;\n       if (($121 | 0) < ($124 | 0) & ($wk_max$160 | 0) > 0) {\n        $k$346 = 0;\n        $wk$347 = $19;\n        while (1) {\n         if ((HEAP32[$wk$347 >> 2] | 0) == ($124 | 0)) HEAP32[$wk$347 >> 2] = $121;\n         $k$346 = $k$346 + 1 | 0;\n         if (($k$346 | 0) >= ($wk_max$160 | 0)) {\n          $141 = $121;\n          break;\n         } else $wk$347 = $wk$347 + 4 | 0;\n        }\n       } else $141 = $121;\n      }\n      $143 = ($141 << 16 >> 16) * 7 | 0;\n      $145 = $labelInfo + 1310736 + ($143 + -7 << 2) | 0;\n      HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + 1;\n      $149 = $labelInfo + 1310736 + ($143 + -6 << 2) | 0;\n      HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $i$265;\n      $153 = $labelInfo + 1310736 + ($143 + -5 << 2) | 0;\n      HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $j$076;\n      $wk_max$2 = $wk_max$160;\n     } while (0);\n     $i$265 = $i$265 + 1 | 0;\n     $235 = $pnt$169 + 4 | 0;\n     $236 = $pnt2$368 + 2 | 0;\n     $237 = $dpnt$167 + 1 | 0;\n     if (($i$265 | 0) >= ($12 | 0)) {\n      $dpnt$1$lcssa = $237;\n      $pnt$1$lcssa = $235;\n      $pnt2$3$lcssa = $236;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $dpnt$167 = $237;\n      $pnt$169 = $235;\n      $pnt2$368 = $236;\n      $wk_max$160 = $wk_max$2;\n     }\n    }\n   } else {\n    $dpnt$1$lcssa = $dpnt$078;\n    $pnt$1$lcssa = $pnt$080;\n    $pnt2$3$lcssa = $pnt2$279;\n    $wk_max$1$lcssa = $wk_max$075;\n   }\n   $j$076 = $j$076 + 1 | 0;\n   if (($j$076 | 0) >= ($3 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $dpnt$078 = $dpnt$1$lcssa + 2 | 0;\n    $pnt$080 = $pnt$1$lcssa + $$sum | 0;\n    $pnt2$279 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$075 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $244 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$342 = 1;\n   $j$143 = 1;\n   $wk$444 = $19;\n   while (1) {\n    $246 = HEAP32[$wk$444 >> 2] | 0;\n    if (($246 | 0) == ($i$342 | 0)) {\n     $252 = $j$143;\n     $j$2 = $j$143 + 1 | 0;\n    } else {\n     $252 = HEAP32[$labelInfo + 1179664 + ($246 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$143;\n    }\n    HEAP32[$wk$444 >> 2] = $252;\n    if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$342 = $i$342 + 1 | 0;\n     $j$143 = $j$2;\n     $wk$444 = $wk$444 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $256 = $labelInfo + 8 | 0;\n  $257 = $j$1$lcssa + -1 | 0;\n  HEAP32[$256 >> 2] = $257;\n  if (!$257) $$0 = 0; else {\n   _memset($244 | 0, 0, $257 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $257 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$440 = 0;\n    do {\n     $264 = $i$440 << 2;\n     HEAP32[$labelInfo + 131084 + ($264 << 2) >> 2] = $0;\n     HEAP32[$labelInfo + 131084 + (($264 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($264 | 2) << 2) >> 2] = $1;\n     HEAP32[$labelInfo + 131084 + (($264 | 3) << 2) >> 2] = 0;\n     $i$440 = $i$440 + 1 | 0;\n    } while (($i$440 | 0) < (HEAP32[$256 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$538 = 0;\n    do {\n     $278 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0;\n     $279 = $i$538 * 7 | 0;\n     $282 = $labelInfo + 12 + ($278 << 2) | 0;\n     HEAP32[$282 >> 2] = (HEAP32[$282 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($279 << 2) >> 2] | 0);\n     $289 = $278 << 1;\n     $290 = $labelInfo + 655376 + ($289 << 3) | 0;\n     HEAPF64[$290 >> 3] = +HEAPF64[$290 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($279 + 1 << 2) >> 2] | 0);\n     $298 = $labelInfo + 655376 + (($289 | 1) << 3) | 0;\n     HEAPF64[$298 >> 3] = +HEAPF64[$298 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($279 + 2 << 2) >> 2] | 0);\n     $301 = $278 << 2;\n     $302 = $labelInfo + 131084 + ($301 << 2) | 0;\n     $306 = HEAP32[$labelInfo + 1310736 + ($279 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$302 >> 2] | 0) > ($306 | 0)) HEAP32[$302 >> 2] = $306;\n     $309 = $labelInfo + 131084 + (($301 | 1) << 2) | 0;\n     $313 = HEAP32[$labelInfo + 1310736 + ($279 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$309 >> 2] | 0) < ($313 | 0)) HEAP32[$309 >> 2] = $313;\n     $316 = $labelInfo + 131084 + (($301 | 2) << 2) | 0;\n     $320 = HEAP32[$labelInfo + 1310736 + ($279 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$316 >> 2] | 0) > ($320 | 0)) HEAP32[$316 >> 2] = $320;\n     $323 = $labelInfo + 131084 + (($301 | 3) << 2) | 0;\n     $327 = HEAP32[$labelInfo + 1310736 + ($279 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$323 >> 2] | 0) < ($327 | 0)) HEAP32[$323 >> 2] = $327;\n     $i$538 = $i$538 + 1 | 0;\n    } while (($i$538 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$256 >> 2] | 0) > 0) {\n    $i$637 = 0;\n    do {\n     $331 = $labelInfo + 12 + ($i$637 << 2) | 0;\n     $334 = $i$637 << 1;\n     $335 = $labelInfo + 655376 + ($334 << 3) | 0;\n     HEAPF64[$335 >> 3] = +HEAPF64[$335 >> 3] / +(HEAP32[$331 >> 2] | 0);\n     $341 = $labelInfo + 655376 + (($334 | 1) << 3) | 0;\n     HEAPF64[$341 >> 3] = +HEAPF64[$341 >> 3] / +(HEAP32[$331 >> 2] | 0);\n     $i$637 = $i$637 + 1 | 0;\n    } while (($i$637 | 0) < (HEAP32[$256 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubEWI3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $102 = 0, $106 = 0, $11 = 0, $112 = 0, $117 = 0, $12 = 0, $120 = 0, $137 = 0, $139 = 0, $141 = 0, $145 = 0, $149 = 0, $152 = 0, $154 = 0, $158 = 0, $162 = 0, $166 = 0, $171 = 0, $173 = 0, $177 = 0, $181 = 0, $185 = 0, $19 = 0, $191 = 0, $194 = 0, $196 = 0, $2 = 0, $20 = 0, $200 = 0, $204 = 0, $208 = 0, $211 = 0, $216 = 0, $22 = 0, $231 = 0, $232 = 0, $233 = 0, $240 = 0, $242 = 0, $248 = 0, $252 = 0, $253 = 0, $260 = 0, $274 = 0, $275 = 0, $278 = 0, $285 = 0, $286 = 0, $294 = 0, $297 = 0, $298 = 0, $3 = 0, $302 = 0, $305 = 0, $309 = 0, $31 = 0, $312 = 0, $316 = 0, $319 = 0, $323 = 0, $327 = 0, $33 = 0, $330 = 0, $331 = 0, $337 = 0, $46 = 0, $49 = 0, $51 = 0, $55 = 0, $59 = 0, $65 = 0, $66 = 0, $69 = 0, $70 = 0, $71 = 0, $74 = 0, $77 = 0, $94 = 0, $96 = 0, $98 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = ($xsize | 0) / 2 | 0;\n $1 = ($ysize | 0) / 2 | 0;\n $2 = HEAP32[$labelInfo >> 2] | 0;\n $3 = $1 + -1 | 0;\n if (($xsize | 0) > 1) {\n  $i$089 = 0;\n  $pnt1$091 = $2;\n  $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$090 >> 1] = 0;\n   HEAP16[$pnt1$091 >> 1] = 0;\n   $i$089 = $i$089 + 1 | 0;\n   if (($i$089 | 0) >= ($0 | 0)) break; else {\n    $pnt1$091 = $pnt1$091 + 2 | 0;\n    $pnt2$090 = $pnt2$090 + 2 | 0;\n   }\n  }\n }\n $11 = $labelingThresh * 3 | 0;\n $12 = $0 + -1 | 0;\n if (($ysize | 0) > 1) {\n  $i$183 = 0;\n  $pnt1$185 = $2;\n  $pnt2$184 = $2 + ($12 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$184 >> 1] = 0;\n   HEAP16[$pnt1$185 >> 1] = 0;\n   $i$183 = $i$183 + 1 | 0;\n   if (($i$183 | 0) >= ($1 | 0)) break; else {\n    $pnt1$185 = $pnt1$185 + ($0 << 1) | 0;\n    $pnt2$184 = $pnt2$184 + ($0 << 1) | 0;\n   }\n  }\n }\n $19 = $labelInfo + 1179664 | 0;\n $20 = $0 + 1 | 0;\n $22 = 0 - $0 | 0;\n $$sum1 = 1 - $0 | 0;\n $$sum2 = ~$0;\n $$sum = ($xsize << 1) + 8 | 0;\n L11 : do if (($3 | 0) > 1) {\n  $31 = ($12 | 0) > 1;\n  $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $20 | 0;\n  $j$076 = 1;\n  $pnt$080 = $image + (($xsize << 2) + 4) | 0;\n  $pnt2$279 = $2 + ($20 << 1) | 0;\n  $wk_max$075 = 0;\n  L13 : while (1) {\n   if ($31) {\n    $dpnt$167 = $dpnt$078;\n    $i$265 = 1;\n    $pnt$169 = $pnt$080;\n    $pnt2$368 = $pnt2$279;\n    $wk_max$160 = $wk_max$075;\n    while (1) {\n     $33 = HEAPU8[$pnt$169 >> 0] | 0;\n     do if ((($33 & 240) + 24 + ($33 << 4 & 240) + ((HEAPU8[$pnt$169 + 1 >> 0] | 0) & 240) | 0) > ($11 | 0)) {\n      HEAP8[$dpnt$167 >> 0] = -1;\n      $46 = HEAP16[$pnt2$368 + ($22 << 1) >> 1] | 0;\n      if ($46 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$368 >> 1] = $46;\n       $49 = ($46 << 16 >> 16) * 7 | 0;\n       $51 = $labelInfo + 1310736 + ($49 + -7 << 2) | 0;\n       HEAP32[$51 >> 2] = (HEAP32[$51 >> 2] | 0) + 1;\n       $55 = $labelInfo + 1310736 + ($49 + -6 << 2) | 0;\n       HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + $i$265;\n       $59 = $labelInfo + 1310736 + ($49 + -5 << 2) | 0;\n       HEAP32[$59 >> 2] = (HEAP32[$59 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($49 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $65 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0;\n      $66 = $65 << 16 >> 16;\n      $69 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0;\n      $70 = $69 << 16 >> 16;\n      $71 = $69 << 16 >> 16 > 0;\n      if ($65 << 16 >> 16 <= 0) {\n       if ($71) {\n        HEAP16[$pnt2$368 >> 1] = $69;\n        $171 = $70 * 7 | 0;\n        $173 = $labelInfo + 1310736 + ($171 + -7 << 2) | 0;\n        HEAP32[$173 >> 2] = (HEAP32[$173 >> 2] | 0) + 1;\n        $177 = $labelInfo + 1310736 + ($171 + -6 << 2) | 0;\n        HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + $i$265;\n        $181 = $labelInfo + 1310736 + ($171 + -5 << 2) | 0;\n        HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + $j$076;\n        $185 = $labelInfo + 1310736 + ($171 + -3 << 2) | 0;\n        if ((HEAP32[$185 >> 2] | 0) < ($i$265 | 0)) HEAP32[$185 >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($171 + -1 << 2) >> 2] = $j$076;\n        $wk_max$2 = $wk_max$160;\n        break;\n       }\n       $191 = HEAP16[$pnt2$368 + -2 >> 1] | 0;\n       if ($191 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$368 >> 1] = $191;\n        $194 = ($191 << 16 >> 16) * 7 | 0;\n        $196 = $labelInfo + 1310736 + ($194 + -7 << 2) | 0;\n        HEAP32[$196 >> 2] = (HEAP32[$196 >> 2] | 0) + 1;\n        $200 = $labelInfo + 1310736 + ($194 + -6 << 2) | 0;\n        HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + $i$265;\n        $204 = $labelInfo + 1310736 + ($194 + -5 << 2) | 0;\n        HEAP32[$204 >> 2] = (HEAP32[$204 >> 2] | 0) + $j$076;\n        $208 = $labelInfo + 1310736 + ($194 + -3 << 2) | 0;\n        if ((HEAP32[$208 >> 2] | 0) >= ($i$265 | 0)) {\n         $wk_max$2 = $wk_max$160;\n         break;\n        }\n        HEAP32[$208 >> 2] = $i$265;\n        $wk_max$2 = $wk_max$160;\n        break;\n       } else {\n        $211 = $wk_max$160 + 1 | 0;\n        if (($wk_max$160 | 0) > 32767) break L13;\n        HEAP16[$pnt2$368 >> 1] = $211;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $211 << 16 >> 16;\n        $216 = $wk_max$160 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($216 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($216 + 1 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($216 + 2 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($216 + 3 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($216 + 4 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($216 + 5 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($216 + 6 << 2) >> 2] = $j$076;\n        $wk_max$2 = $211;\n        break;\n       }\n      }\n      if ($71) {\n       $74 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0;\n       $77 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0;\n       if (($74 | 0) > ($77 | 0)) {\n        HEAP16[$pnt2$368 >> 1] = $77;\n        if (($wk_max$160 | 0) > 0) {\n         $k$056 = 0;\n         $wk$057 = $19;\n         while (1) {\n          if ((HEAP32[$wk$057 >> 2] | 0) == ($74 | 0)) HEAP32[$wk$057 >> 2] = $77;\n          $k$056 = $k$056 + 1 | 0;\n          if (($k$056 | 0) >= ($wk_max$160 | 0)) {\n           $94 = $77;\n           break;\n          } else $wk$057 = $wk$057 + 4 | 0;\n         }\n        } else $94 = $77;\n       } else {\n        HEAP16[$pnt2$368 >> 1] = $74;\n        if (($74 | 0) < ($77 | 0) & ($wk_max$160 | 0) > 0) {\n         $k$153 = 0;\n         $wk$154 = $19;\n         while (1) {\n          if ((HEAP32[$wk$154 >> 2] | 0) == ($77 | 0)) HEAP32[$wk$154 >> 2] = $74;\n          $k$153 = $k$153 + 1 | 0;\n          if (($k$153 | 0) >= ($wk_max$160 | 0)) {\n           $94 = $74;\n           break;\n          } else $wk$154 = $wk$154 + 4 | 0;\n         }\n        } else $94 = $74;\n       }\n       $96 = ($94 << 16 >> 16) * 7 | 0;\n       $98 = $labelInfo + 1310736 + ($96 + -7 << 2) | 0;\n       HEAP32[$98 >> 2] = (HEAP32[$98 >> 2] | 0) + 1;\n       $102 = $labelInfo + 1310736 + ($96 + -6 << 2) | 0;\n       HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + $i$265;\n       $106 = $labelInfo + 1310736 + ($96 + -5 << 2) | 0;\n       HEAP32[$106 >> 2] = (HEAP32[$106 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($96 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $112 = HEAP16[$pnt2$368 + -2 >> 1] | 0;\n      if ($112 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$368 >> 1] = $65;\n       $152 = $66 * 7 | 0;\n       $154 = $labelInfo + 1310736 + ($152 + -7 << 2) | 0;\n       HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + 1;\n       $158 = $labelInfo + 1310736 + ($152 + -6 << 2) | 0;\n       HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + $i$265;\n       $162 = $labelInfo + 1310736 + ($152 + -5 << 2) | 0;\n       HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $j$076;\n       $166 = $labelInfo + 1310736 + ($152 + -4 << 2) | 0;\n       if ((HEAP32[$166 >> 2] | 0) > ($i$265 | 0)) HEAP32[$166 >> 2] = $i$265;\n       HEAP32[$labelInfo + 1310736 + ($152 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $117 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0;\n      $120 = HEAP32[$labelInfo + 1179664 + (($112 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($117 | 0) > ($120 | 0)) {\n       HEAP16[$pnt2$368 >> 1] = $120;\n       if (($wk_max$160 | 0) > 0) {\n        $k$249 = 0;\n        $wk$250 = $19;\n        while (1) {\n         if ((HEAP32[$wk$250 >> 2] | 0) == ($117 | 0)) HEAP32[$wk$250 >> 2] = $120;\n         $k$249 = $k$249 + 1 | 0;\n         if (($k$249 | 0) >= ($wk_max$160 | 0)) {\n          $137 = $120;\n          break;\n         } else $wk$250 = $wk$250 + 4 | 0;\n        }\n       } else $137 = $120;\n      } else {\n       HEAP16[$pnt2$368 >> 1] = $117;\n       if (($117 | 0) < ($120 | 0) & ($wk_max$160 | 0) > 0) {\n        $k$346 = 0;\n        $wk$347 = $19;\n        while (1) {\n         if ((HEAP32[$wk$347 >> 2] | 0) == ($120 | 0)) HEAP32[$wk$347 >> 2] = $117;\n         $k$346 = $k$346 + 1 | 0;\n         if (($k$346 | 0) >= ($wk_max$160 | 0)) {\n          $137 = $117;\n          break;\n         } else $wk$347 = $wk$347 + 4 | 0;\n        }\n       } else $137 = $117;\n      }\n      $139 = ($137 << 16 >> 16) * 7 | 0;\n      $141 = $labelInfo + 1310736 + ($139 + -7 << 2) | 0;\n      HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + 1;\n      $145 = $labelInfo + 1310736 + ($139 + -6 << 2) | 0;\n      HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $i$265;\n      $149 = $labelInfo + 1310736 + ($139 + -5 << 2) | 0;\n      HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $j$076;\n      $wk_max$2 = $wk_max$160;\n     } else {\n      HEAP16[$pnt2$368 >> 1] = 0;\n      HEAP8[$dpnt$167 >> 0] = 0;\n      $wk_max$2 = $wk_max$160;\n     } while (0);\n     $i$265 = $i$265 + 1 | 0;\n     $231 = $pnt$169 + 4 | 0;\n     $232 = $pnt2$368 + 2 | 0;\n     $233 = $dpnt$167 + 1 | 0;\n     if (($i$265 | 0) >= ($12 | 0)) {\n      $dpnt$1$lcssa = $233;\n      $pnt$1$lcssa = $231;\n      $pnt2$3$lcssa = $232;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $dpnt$167 = $233;\n      $pnt$169 = $231;\n      $pnt2$368 = $232;\n      $wk_max$160 = $wk_max$2;\n     }\n    }\n   } else {\n    $dpnt$1$lcssa = $dpnt$078;\n    $pnt$1$lcssa = $pnt$080;\n    $pnt2$3$lcssa = $pnt2$279;\n    $wk_max$1$lcssa = $wk_max$075;\n   }\n   $j$076 = $j$076 + 1 | 0;\n   if (($j$076 | 0) >= ($3 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $dpnt$078 = $dpnt$1$lcssa + 2 | 0;\n    $pnt$080 = $pnt$1$lcssa + $$sum | 0;\n    $pnt2$279 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$075 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $240 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$342 = 1;\n   $j$143 = 1;\n   $wk$444 = $19;\n   while (1) {\n    $242 = HEAP32[$wk$444 >> 2] | 0;\n    if (($242 | 0) == ($i$342 | 0)) {\n     $248 = $j$143;\n     $j$2 = $j$143 + 1 | 0;\n    } else {\n     $248 = HEAP32[$labelInfo + 1179664 + ($242 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$143;\n    }\n    HEAP32[$wk$444 >> 2] = $248;\n    if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$342 = $i$342 + 1 | 0;\n     $j$143 = $j$2;\n     $wk$444 = $wk$444 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $252 = $labelInfo + 8 | 0;\n  $253 = $j$1$lcssa + -1 | 0;\n  HEAP32[$252 >> 2] = $253;\n  if (!$253) $$0 = 0; else {\n   _memset($240 | 0, 0, $253 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $253 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$440 = 0;\n    do {\n     $260 = $i$440 << 2;\n     HEAP32[$labelInfo + 131084 + ($260 << 2) >> 2] = $0;\n     HEAP32[$labelInfo + 131084 + (($260 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($260 | 2) << 2) >> 2] = $1;\n     HEAP32[$labelInfo + 131084 + (($260 | 3) << 2) >> 2] = 0;\n     $i$440 = $i$440 + 1 | 0;\n    } while (($i$440 | 0) < (HEAP32[$252 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$538 = 0;\n    do {\n     $274 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0;\n     $275 = $i$538 * 7 | 0;\n     $278 = $labelInfo + 12 + ($274 << 2) | 0;\n     HEAP32[$278 >> 2] = (HEAP32[$278 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($275 << 2) >> 2] | 0);\n     $285 = $274 << 1;\n     $286 = $labelInfo + 655376 + ($285 << 3) | 0;\n     HEAPF64[$286 >> 3] = +HEAPF64[$286 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($275 + 1 << 2) >> 2] | 0);\n     $294 = $labelInfo + 655376 + (($285 | 1) << 3) | 0;\n     HEAPF64[$294 >> 3] = +HEAPF64[$294 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($275 + 2 << 2) >> 2] | 0);\n     $297 = $274 << 2;\n     $298 = $labelInfo + 131084 + ($297 << 2) | 0;\n     $302 = HEAP32[$labelInfo + 1310736 + ($275 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$298 >> 2] | 0) > ($302 | 0)) HEAP32[$298 >> 2] = $302;\n     $305 = $labelInfo + 131084 + (($297 | 1) << 2) | 0;\n     $309 = HEAP32[$labelInfo + 1310736 + ($275 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$305 >> 2] | 0) < ($309 | 0)) HEAP32[$305 >> 2] = $309;\n     $312 = $labelInfo + 131084 + (($297 | 2) << 2) | 0;\n     $316 = HEAP32[$labelInfo + 1310736 + ($275 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$312 >> 2] | 0) > ($316 | 0)) HEAP32[$312 >> 2] = $316;\n     $319 = $labelInfo + 131084 + (($297 | 3) << 2) | 0;\n     $323 = HEAP32[$labelInfo + 1310736 + ($275 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$319 >> 2] | 0) < ($323 | 0)) HEAP32[$319 >> 2] = $323;\n     $i$538 = $i$538 + 1 | 0;\n    } while (($i$538 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$252 >> 2] | 0) > 0) {\n    $i$637 = 0;\n    do {\n     $327 = $labelInfo + 12 + ($i$637 << 2) | 0;\n     $330 = $i$637 << 1;\n     $331 = $labelInfo + 655376 + ($330 << 3) | 0;\n     HEAPF64[$331 >> 3] = +HEAPF64[$331 >> 3] / +(HEAP32[$327 >> 2] | 0);\n     $337 = $labelInfo + 655376 + (($330 | 1) << 3) | 0;\n     HEAPF64[$337 >> 3] = +HEAPF64[$337 >> 3] / +(HEAP32[$327 >> 2] | 0);\n     $i$637 = $i$637 + 1 | 0;\n    } while (($i$637 | 0) < (HEAP32[$252 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubEBI3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $102 = 0, $106 = 0, $11 = 0, $112 = 0, $117 = 0, $12 = 0, $120 = 0, $137 = 0, $139 = 0, $141 = 0, $145 = 0, $149 = 0, $152 = 0, $154 = 0, $158 = 0, $162 = 0, $166 = 0, $171 = 0, $173 = 0, $177 = 0, $181 = 0, $185 = 0, $19 = 0, $191 = 0, $194 = 0, $196 = 0, $2 = 0, $20 = 0, $200 = 0, $204 = 0, $208 = 0, $211 = 0, $216 = 0, $22 = 0, $231 = 0, $232 = 0, $233 = 0, $240 = 0, $242 = 0, $248 = 0, $252 = 0, $253 = 0, $260 = 0, $274 = 0, $275 = 0, $278 = 0, $285 = 0, $286 = 0, $294 = 0, $297 = 0, $298 = 0, $3 = 0, $302 = 0, $305 = 0, $309 = 0, $31 = 0, $312 = 0, $316 = 0, $319 = 0, $323 = 0, $327 = 0, $33 = 0, $330 = 0, $331 = 0, $337 = 0, $46 = 0, $49 = 0, $51 = 0, $55 = 0, $59 = 0, $65 = 0, $66 = 0, $69 = 0, $70 = 0, $71 = 0, $74 = 0, $77 = 0, $94 = 0, $96 = 0, $98 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = ($xsize | 0) / 2 | 0;\n $1 = ($ysize | 0) / 2 | 0;\n $2 = HEAP32[$labelInfo >> 2] | 0;\n $3 = $1 + -1 | 0;\n if (($xsize | 0) > 1) {\n  $i$089 = 0;\n  $pnt1$091 = $2;\n  $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$090 >> 1] = 0;\n   HEAP16[$pnt1$091 >> 1] = 0;\n   $i$089 = $i$089 + 1 | 0;\n   if (($i$089 | 0) >= ($0 | 0)) break; else {\n    $pnt1$091 = $pnt1$091 + 2 | 0;\n    $pnt2$090 = $pnt2$090 + 2 | 0;\n   }\n  }\n }\n $11 = $labelingThresh * 3 | 0;\n $12 = $0 + -1 | 0;\n if (($ysize | 0) > 1) {\n  $i$183 = 0;\n  $pnt1$185 = $2;\n  $pnt2$184 = $2 + ($12 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$184 >> 1] = 0;\n   HEAP16[$pnt1$185 >> 1] = 0;\n   $i$183 = $i$183 + 1 | 0;\n   if (($i$183 | 0) >= ($1 | 0)) break; else {\n    $pnt1$185 = $pnt1$185 + ($0 << 1) | 0;\n    $pnt2$184 = $pnt2$184 + ($0 << 1) | 0;\n   }\n  }\n }\n $19 = $labelInfo + 1179664 | 0;\n $20 = $0 + 1 | 0;\n $22 = 0 - $0 | 0;\n $$sum1 = 1 - $0 | 0;\n $$sum2 = ~$0;\n $$sum = ($xsize << 1) + 8 | 0;\n L11 : do if (($3 | 0) > 1) {\n  $31 = ($12 | 0) > 1;\n  $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $20 | 0;\n  $j$076 = 1;\n  $pnt$080 = $image + (($xsize << 2) + 4) | 0;\n  $pnt2$279 = $2 + ($20 << 1) | 0;\n  $wk_max$075 = 0;\n  L13 : while (1) {\n   if ($31) {\n    $dpnt$167 = $dpnt$078;\n    $i$265 = 1;\n    $pnt$169 = $pnt$080;\n    $pnt2$368 = $pnt2$279;\n    $wk_max$160 = $wk_max$075;\n    while (1) {\n     $33 = HEAPU8[$pnt$169 >> 0] | 0;\n     do if ((($33 & 240) + 24 + ($33 << 4 & 240) + ((HEAPU8[$pnt$169 + 1 >> 0] | 0) & 240) | 0) > ($11 | 0)) {\n      HEAP16[$pnt2$368 >> 1] = 0;\n      HEAP8[$dpnt$167 >> 0] = 0;\n      $wk_max$2 = $wk_max$160;\n     } else {\n      HEAP8[$dpnt$167 >> 0] = -1;\n      $46 = HEAP16[$pnt2$368 + ($22 << 1) >> 1] | 0;\n      if ($46 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$368 >> 1] = $46;\n       $49 = ($46 << 16 >> 16) * 7 | 0;\n       $51 = $labelInfo + 1310736 + ($49 + -7 << 2) | 0;\n       HEAP32[$51 >> 2] = (HEAP32[$51 >> 2] | 0) + 1;\n       $55 = $labelInfo + 1310736 + ($49 + -6 << 2) | 0;\n       HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + $i$265;\n       $59 = $labelInfo + 1310736 + ($49 + -5 << 2) | 0;\n       HEAP32[$59 >> 2] = (HEAP32[$59 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($49 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $65 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0;\n      $66 = $65 << 16 >> 16;\n      $69 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0;\n      $70 = $69 << 16 >> 16;\n      $71 = $69 << 16 >> 16 > 0;\n      if ($65 << 16 >> 16 <= 0) {\n       if ($71) {\n        HEAP16[$pnt2$368 >> 1] = $69;\n        $171 = $70 * 7 | 0;\n        $173 = $labelInfo + 1310736 + ($171 + -7 << 2) | 0;\n        HEAP32[$173 >> 2] = (HEAP32[$173 >> 2] | 0) + 1;\n        $177 = $labelInfo + 1310736 + ($171 + -6 << 2) | 0;\n        HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + $i$265;\n        $181 = $labelInfo + 1310736 + ($171 + -5 << 2) | 0;\n        HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + $j$076;\n        $185 = $labelInfo + 1310736 + ($171 + -3 << 2) | 0;\n        if ((HEAP32[$185 >> 2] | 0) < ($i$265 | 0)) HEAP32[$185 >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($171 + -1 << 2) >> 2] = $j$076;\n        $wk_max$2 = $wk_max$160;\n        break;\n       }\n       $191 = HEAP16[$pnt2$368 + -2 >> 1] | 0;\n       if ($191 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$368 >> 1] = $191;\n        $194 = ($191 << 16 >> 16) * 7 | 0;\n        $196 = $labelInfo + 1310736 + ($194 + -7 << 2) | 0;\n        HEAP32[$196 >> 2] = (HEAP32[$196 >> 2] | 0) + 1;\n        $200 = $labelInfo + 1310736 + ($194 + -6 << 2) | 0;\n        HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + $i$265;\n        $204 = $labelInfo + 1310736 + ($194 + -5 << 2) | 0;\n        HEAP32[$204 >> 2] = (HEAP32[$204 >> 2] | 0) + $j$076;\n        $208 = $labelInfo + 1310736 + ($194 + -3 << 2) | 0;\n        if ((HEAP32[$208 >> 2] | 0) >= ($i$265 | 0)) {\n         $wk_max$2 = $wk_max$160;\n         break;\n        }\n        HEAP32[$208 >> 2] = $i$265;\n        $wk_max$2 = $wk_max$160;\n        break;\n       } else {\n        $211 = $wk_max$160 + 1 | 0;\n        if (($wk_max$160 | 0) > 32767) break L13;\n        HEAP16[$pnt2$368 >> 1] = $211;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $211 << 16 >> 16;\n        $216 = $wk_max$160 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($216 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($216 + 1 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($216 + 2 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($216 + 3 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($216 + 4 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($216 + 5 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($216 + 6 << 2) >> 2] = $j$076;\n        $wk_max$2 = $211;\n        break;\n       }\n      }\n      if ($71) {\n       $74 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0;\n       $77 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0;\n       if (($74 | 0) > ($77 | 0)) {\n        HEAP16[$pnt2$368 >> 1] = $77;\n        if (($wk_max$160 | 0) > 0) {\n         $k$056 = 0;\n         $wk$057 = $19;\n         while (1) {\n          if ((HEAP32[$wk$057 >> 2] | 0) == ($74 | 0)) HEAP32[$wk$057 >> 2] = $77;\n          $k$056 = $k$056 + 1 | 0;\n          if (($k$056 | 0) >= ($wk_max$160 | 0)) {\n           $94 = $77;\n           break;\n          } else $wk$057 = $wk$057 + 4 | 0;\n         }\n        } else $94 = $77;\n       } else {\n        HEAP16[$pnt2$368 >> 1] = $74;\n        if (($74 | 0) < ($77 | 0) & ($wk_max$160 | 0) > 0) {\n         $k$153 = 0;\n         $wk$154 = $19;\n         while (1) {\n          if ((HEAP32[$wk$154 >> 2] | 0) == ($77 | 0)) HEAP32[$wk$154 >> 2] = $74;\n          $k$153 = $k$153 + 1 | 0;\n          if (($k$153 | 0) >= ($wk_max$160 | 0)) {\n           $94 = $74;\n           break;\n          } else $wk$154 = $wk$154 + 4 | 0;\n         }\n        } else $94 = $74;\n       }\n       $96 = ($94 << 16 >> 16) * 7 | 0;\n       $98 = $labelInfo + 1310736 + ($96 + -7 << 2) | 0;\n       HEAP32[$98 >> 2] = (HEAP32[$98 >> 2] | 0) + 1;\n       $102 = $labelInfo + 1310736 + ($96 + -6 << 2) | 0;\n       HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + $i$265;\n       $106 = $labelInfo + 1310736 + ($96 + -5 << 2) | 0;\n       HEAP32[$106 >> 2] = (HEAP32[$106 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($96 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $112 = HEAP16[$pnt2$368 + -2 >> 1] | 0;\n      if ($112 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$368 >> 1] = $65;\n       $152 = $66 * 7 | 0;\n       $154 = $labelInfo + 1310736 + ($152 + -7 << 2) | 0;\n       HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + 1;\n       $158 = $labelInfo + 1310736 + ($152 + -6 << 2) | 0;\n       HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + $i$265;\n       $162 = $labelInfo + 1310736 + ($152 + -5 << 2) | 0;\n       HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $j$076;\n       $166 = $labelInfo + 1310736 + ($152 + -4 << 2) | 0;\n       if ((HEAP32[$166 >> 2] | 0) > ($i$265 | 0)) HEAP32[$166 >> 2] = $i$265;\n       HEAP32[$labelInfo + 1310736 + ($152 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $117 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0;\n      $120 = HEAP32[$labelInfo + 1179664 + (($112 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($117 | 0) > ($120 | 0)) {\n       HEAP16[$pnt2$368 >> 1] = $120;\n       if (($wk_max$160 | 0) > 0) {\n        $k$249 = 0;\n        $wk$250 = $19;\n        while (1) {\n         if ((HEAP32[$wk$250 >> 2] | 0) == ($117 | 0)) HEAP32[$wk$250 >> 2] = $120;\n         $k$249 = $k$249 + 1 | 0;\n         if (($k$249 | 0) >= ($wk_max$160 | 0)) {\n          $137 = $120;\n          break;\n         } else $wk$250 = $wk$250 + 4 | 0;\n        }\n       } else $137 = $120;\n      } else {\n       HEAP16[$pnt2$368 >> 1] = $117;\n       if (($117 | 0) < ($120 | 0) & ($wk_max$160 | 0) > 0) {\n        $k$346 = 0;\n        $wk$347 = $19;\n        while (1) {\n         if ((HEAP32[$wk$347 >> 2] | 0) == ($120 | 0)) HEAP32[$wk$347 >> 2] = $117;\n         $k$346 = $k$346 + 1 | 0;\n         if (($k$346 | 0) >= ($wk_max$160 | 0)) {\n          $137 = $117;\n          break;\n         } else $wk$347 = $wk$347 + 4 | 0;\n        }\n       } else $137 = $117;\n      }\n      $139 = ($137 << 16 >> 16) * 7 | 0;\n      $141 = $labelInfo + 1310736 + ($139 + -7 << 2) | 0;\n      HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + 1;\n      $145 = $labelInfo + 1310736 + ($139 + -6 << 2) | 0;\n      HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $i$265;\n      $149 = $labelInfo + 1310736 + ($139 + -5 << 2) | 0;\n      HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $j$076;\n      $wk_max$2 = $wk_max$160;\n     } while (0);\n     $i$265 = $i$265 + 1 | 0;\n     $231 = $pnt$169 + 4 | 0;\n     $232 = $pnt2$368 + 2 | 0;\n     $233 = $dpnt$167 + 1 | 0;\n     if (($i$265 | 0) >= ($12 | 0)) {\n      $dpnt$1$lcssa = $233;\n      $pnt$1$lcssa = $231;\n      $pnt2$3$lcssa = $232;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $dpnt$167 = $233;\n      $pnt$169 = $231;\n      $pnt2$368 = $232;\n      $wk_max$160 = $wk_max$2;\n     }\n    }\n   } else {\n    $dpnt$1$lcssa = $dpnt$078;\n    $pnt$1$lcssa = $pnt$080;\n    $pnt2$3$lcssa = $pnt2$279;\n    $wk_max$1$lcssa = $wk_max$075;\n   }\n   $j$076 = $j$076 + 1 | 0;\n   if (($j$076 | 0) >= ($3 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $dpnt$078 = $dpnt$1$lcssa + 2 | 0;\n    $pnt$080 = $pnt$1$lcssa + $$sum | 0;\n    $pnt2$279 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$075 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $240 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$342 = 1;\n   $j$143 = 1;\n   $wk$444 = $19;\n   while (1) {\n    $242 = HEAP32[$wk$444 >> 2] | 0;\n    if (($242 | 0) == ($i$342 | 0)) {\n     $248 = $j$143;\n     $j$2 = $j$143 + 1 | 0;\n    } else {\n     $248 = HEAP32[$labelInfo + 1179664 + ($242 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$143;\n    }\n    HEAP32[$wk$444 >> 2] = $248;\n    if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$342 = $i$342 + 1 | 0;\n     $j$143 = $j$2;\n     $wk$444 = $wk$444 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $252 = $labelInfo + 8 | 0;\n  $253 = $j$1$lcssa + -1 | 0;\n  HEAP32[$252 >> 2] = $253;\n  if (!$253) $$0 = 0; else {\n   _memset($240 | 0, 0, $253 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $253 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$440 = 0;\n    do {\n     $260 = $i$440 << 2;\n     HEAP32[$labelInfo + 131084 + ($260 << 2) >> 2] = $0;\n     HEAP32[$labelInfo + 131084 + (($260 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($260 | 2) << 2) >> 2] = $1;\n     HEAP32[$labelInfo + 131084 + (($260 | 3) << 2) >> 2] = 0;\n     $i$440 = $i$440 + 1 | 0;\n    } while (($i$440 | 0) < (HEAP32[$252 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$538 = 0;\n    do {\n     $274 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0;\n     $275 = $i$538 * 7 | 0;\n     $278 = $labelInfo + 12 + ($274 << 2) | 0;\n     HEAP32[$278 >> 2] = (HEAP32[$278 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($275 << 2) >> 2] | 0);\n     $285 = $274 << 1;\n     $286 = $labelInfo + 655376 + ($285 << 3) | 0;\n     HEAPF64[$286 >> 3] = +HEAPF64[$286 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($275 + 1 << 2) >> 2] | 0);\n     $294 = $labelInfo + 655376 + (($285 | 1) << 3) | 0;\n     HEAPF64[$294 >> 3] = +HEAPF64[$294 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($275 + 2 << 2) >> 2] | 0);\n     $297 = $274 << 2;\n     $298 = $labelInfo + 131084 + ($297 << 2) | 0;\n     $302 = HEAP32[$labelInfo + 1310736 + ($275 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$298 >> 2] | 0) > ($302 | 0)) HEAP32[$298 >> 2] = $302;\n     $305 = $labelInfo + 131084 + (($297 | 1) << 2) | 0;\n     $309 = HEAP32[$labelInfo + 1310736 + ($275 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$305 >> 2] | 0) < ($309 | 0)) HEAP32[$305 >> 2] = $309;\n     $312 = $labelInfo + 131084 + (($297 | 2) << 2) | 0;\n     $316 = HEAP32[$labelInfo + 1310736 + ($275 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$312 >> 2] | 0) > ($316 | 0)) HEAP32[$312 >> 2] = $316;\n     $319 = $labelInfo + 131084 + (($297 | 3) << 2) | 0;\n     $323 = HEAP32[$labelInfo + 1310736 + ($275 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$319 >> 2] | 0) < ($323 | 0)) HEAP32[$319 >> 2] = $323;\n     $i$538 = $i$538 + 1 | 0;\n    } while (($i$538 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$252 >> 2] | 0) > 0) {\n    $i$637 = 0;\n    do {\n     $327 = $labelInfo + 12 + ($i$637 << 2) | 0;\n     $330 = $i$637 << 1;\n     $331 = $labelInfo + 655376 + ($330 << 3) | 0;\n     HEAPF64[$331 >> 3] = +HEAPF64[$331 >> 3] / +(HEAP32[$327 >> 2] | 0);\n     $337 = $labelInfo + 655376 + (($330 | 1) << 3) | 0;\n     HEAPF64[$337 >> 3] = +HEAPF64[$337 >> 3] / +(HEAP32[$327 >> 2] | 0);\n     $i$637 = $i$637 + 1 | 0;\n    } while (($i$637 | 0) < (HEAP32[$252 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubEWI3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $100 = 0, $104 = 0, $11 = 0, $110 = 0, $115 = 0, $118 = 0, $12 = 0, $135 = 0, $137 = 0, $139 = 0, $143 = 0, $147 = 0, $150 = 0, $152 = 0, $156 = 0, $160 = 0, $164 = 0, $169 = 0, $171 = 0, $175 = 0, $179 = 0, $183 = 0, $189 = 0, $19 = 0, $192 = 0, $194 = 0, $198 = 0, $2 = 0, $20 = 0, $202 = 0, $206 = 0, $209 = 0, $21 = 0, $214 = 0, $229 = 0, $230 = 0, $231 = 0, $238 = 0, $240 = 0, $246 = 0, $250 = 0, $251 = 0, $258 = 0, $272 = 0, $273 = 0, $276 = 0, $283 = 0, $284 = 0, $292 = 0, $295 = 0, $296 = 0, $3 = 0, $300 = 0, $303 = 0, $307 = 0, $31 = 0, $310 = 0, $314 = 0, $317 = 0, $321 = 0, $325 = 0, $328 = 0, $329 = 0, $335 = 0, $44 = 0, $47 = 0, $49 = 0, $53 = 0, $57 = 0, $63 = 0, $64 = 0, $67 = 0, $68 = 0, $69 = 0, $72 = 0, $75 = 0, $92 = 0, $94 = 0, $96 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = ($xsize | 0) / 2 | 0;\n $1 = ($ysize | 0) / 2 | 0;\n $2 = HEAP32[$labelInfo >> 2] | 0;\n $3 = $1 + -1 | 0;\n if (($xsize | 0) > 1) {\n  $i$089 = 0;\n  $pnt1$091 = $2;\n  $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$090 >> 1] = 0;\n   HEAP16[$pnt1$091 >> 1] = 0;\n   $i$089 = $i$089 + 1 | 0;\n   if (($i$089 | 0) >= ($0 | 0)) break; else {\n    $pnt1$091 = $pnt1$091 + 2 | 0;\n    $pnt2$090 = $pnt2$090 + 2 | 0;\n   }\n  }\n }\n $11 = $labelingThresh * 3 | 0;\n $12 = $0 + -1 | 0;\n if (($ysize | 0) > 1) {\n  $i$183 = 0;\n  $pnt1$185 = $2;\n  $pnt2$184 = $2 + ($12 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$184 >> 1] = 0;\n   HEAP16[$pnt1$185 >> 1] = 0;\n   $i$183 = $i$183 + 1 | 0;\n   if (($i$183 | 0) >= ($1 | 0)) break; else {\n    $pnt1$185 = $pnt1$185 + ($0 << 1) | 0;\n    $pnt2$184 = $pnt2$184 + ($0 << 1) | 0;\n   }\n  }\n }\n $19 = $labelInfo + 1179664 | 0;\n $20 = $0 + 1 | 0;\n $21 = 0 - $0 | 0;\n $$sum1 = 1 - $0 | 0;\n $$sum2 = ~$0;\n $$sum = ($xsize * 3 | 0) + 12 | 0;\n L11 : do if (($3 | 0) > 1) {\n  $31 = ($12 | 0) > 1;\n  $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $20 | 0;\n  $j$076 = 1;\n  $pnt$080 = $image + (($xsize * 6 | 0) + 6) | 0;\n  $pnt2$279 = $2 + ($20 << 1) | 0;\n  $wk_max$075 = 0;\n  L13 : while (1) {\n   if ($31) {\n    $dpnt$167 = $dpnt$078;\n    $i$265 = 1;\n    $pnt$169 = $pnt$080;\n    $pnt2$368 = $pnt2$279;\n    $wk_max$160 = $wk_max$075;\n    while (1) {\n     do if (((HEAPU8[$pnt$169 + 1 >> 0] | 0) + (HEAPU8[$pnt$169 >> 0] | 0) + (HEAPU8[$pnt$169 + 2 >> 0] | 0) | 0) > ($11 | 0)) {\n      HEAP8[$dpnt$167 >> 0] = -1;\n      $44 = HEAP16[$pnt2$368 + ($21 << 1) >> 1] | 0;\n      if ($44 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$368 >> 1] = $44;\n       $47 = ($44 << 16 >> 16) * 7 | 0;\n       $49 = $labelInfo + 1310736 + ($47 + -7 << 2) | 0;\n       HEAP32[$49 >> 2] = (HEAP32[$49 >> 2] | 0) + 1;\n       $53 = $labelInfo + 1310736 + ($47 + -6 << 2) | 0;\n       HEAP32[$53 >> 2] = (HEAP32[$53 >> 2] | 0) + $i$265;\n       $57 = $labelInfo + 1310736 + ($47 + -5 << 2) | 0;\n       HEAP32[$57 >> 2] = (HEAP32[$57 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($47 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $63 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0;\n      $64 = $63 << 16 >> 16;\n      $67 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0;\n      $68 = $67 << 16 >> 16;\n      $69 = $67 << 16 >> 16 > 0;\n      if ($63 << 16 >> 16 <= 0) {\n       if ($69) {\n        HEAP16[$pnt2$368 >> 1] = $67;\n        $169 = $68 * 7 | 0;\n        $171 = $labelInfo + 1310736 + ($169 + -7 << 2) | 0;\n        HEAP32[$171 >> 2] = (HEAP32[$171 >> 2] | 0) + 1;\n        $175 = $labelInfo + 1310736 + ($169 + -6 << 2) | 0;\n        HEAP32[$175 >> 2] = (HEAP32[$175 >> 2] | 0) + $i$265;\n        $179 = $labelInfo + 1310736 + ($169 + -5 << 2) | 0;\n        HEAP32[$179 >> 2] = (HEAP32[$179 >> 2] | 0) + $j$076;\n        $183 = $labelInfo + 1310736 + ($169 + -3 << 2) | 0;\n        if ((HEAP32[$183 >> 2] | 0) < ($i$265 | 0)) HEAP32[$183 >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($169 + -1 << 2) >> 2] = $j$076;\n        $wk_max$2 = $wk_max$160;\n        break;\n       }\n       $189 = HEAP16[$pnt2$368 + -2 >> 1] | 0;\n       if ($189 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$368 >> 1] = $189;\n        $192 = ($189 << 16 >> 16) * 7 | 0;\n        $194 = $labelInfo + 1310736 + ($192 + -7 << 2) | 0;\n        HEAP32[$194 >> 2] = (HEAP32[$194 >> 2] | 0) + 1;\n        $198 = $labelInfo + 1310736 + ($192 + -6 << 2) | 0;\n        HEAP32[$198 >> 2] = (HEAP32[$198 >> 2] | 0) + $i$265;\n        $202 = $labelInfo + 1310736 + ($192 + -5 << 2) | 0;\n        HEAP32[$202 >> 2] = (HEAP32[$202 >> 2] | 0) + $j$076;\n        $206 = $labelInfo + 1310736 + ($192 + -3 << 2) | 0;\n        if ((HEAP32[$206 >> 2] | 0) >= ($i$265 | 0)) {\n         $wk_max$2 = $wk_max$160;\n         break;\n        }\n        HEAP32[$206 >> 2] = $i$265;\n        $wk_max$2 = $wk_max$160;\n        break;\n       } else {\n        $209 = $wk_max$160 + 1 | 0;\n        if (($wk_max$160 | 0) > 32767) break L13;\n        HEAP16[$pnt2$368 >> 1] = $209;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $209 << 16 >> 16;\n        $214 = $wk_max$160 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($214 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($214 + 1 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($214 + 2 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($214 + 3 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($214 + 4 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($214 + 5 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($214 + 6 << 2) >> 2] = $j$076;\n        $wk_max$2 = $209;\n        break;\n       }\n      }\n      if ($69) {\n       $72 = HEAP32[$labelInfo + 1179664 + ($64 + -1 << 2) >> 2] | 0;\n       $75 = HEAP32[$labelInfo + 1179664 + ($68 + -1 << 2) >> 2] | 0;\n       if (($72 | 0) > ($75 | 0)) {\n        HEAP16[$pnt2$368 >> 1] = $75;\n        if (($wk_max$160 | 0) > 0) {\n         $k$056 = 0;\n         $wk$057 = $19;\n         while (1) {\n          if ((HEAP32[$wk$057 >> 2] | 0) == ($72 | 0)) HEAP32[$wk$057 >> 2] = $75;\n          $k$056 = $k$056 + 1 | 0;\n          if (($k$056 | 0) >= ($wk_max$160 | 0)) {\n           $92 = $75;\n           break;\n          } else $wk$057 = $wk$057 + 4 | 0;\n         }\n        } else $92 = $75;\n       } else {\n        HEAP16[$pnt2$368 >> 1] = $72;\n        if (($72 | 0) < ($75 | 0) & ($wk_max$160 | 0) > 0) {\n         $k$153 = 0;\n         $wk$154 = $19;\n         while (1) {\n          if ((HEAP32[$wk$154 >> 2] | 0) == ($75 | 0)) HEAP32[$wk$154 >> 2] = $72;\n          $k$153 = $k$153 + 1 | 0;\n          if (($k$153 | 0) >= ($wk_max$160 | 0)) {\n           $92 = $72;\n           break;\n          } else $wk$154 = $wk$154 + 4 | 0;\n         }\n        } else $92 = $72;\n       }\n       $94 = ($92 << 16 >> 16) * 7 | 0;\n       $96 = $labelInfo + 1310736 + ($94 + -7 << 2) | 0;\n       HEAP32[$96 >> 2] = (HEAP32[$96 >> 2] | 0) + 1;\n       $100 = $labelInfo + 1310736 + ($94 + -6 << 2) | 0;\n       HEAP32[$100 >> 2] = (HEAP32[$100 >> 2] | 0) + $i$265;\n       $104 = $labelInfo + 1310736 + ($94 + -5 << 2) | 0;\n       HEAP32[$104 >> 2] = (HEAP32[$104 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($94 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $110 = HEAP16[$pnt2$368 + -2 >> 1] | 0;\n      if ($110 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$368 >> 1] = $63;\n       $150 = $64 * 7 | 0;\n       $152 = $labelInfo + 1310736 + ($150 + -7 << 2) | 0;\n       HEAP32[$152 >> 2] = (HEAP32[$152 >> 2] | 0) + 1;\n       $156 = $labelInfo + 1310736 + ($150 + -6 << 2) | 0;\n       HEAP32[$156 >> 2] = (HEAP32[$156 >> 2] | 0) + $i$265;\n       $160 = $labelInfo + 1310736 + ($150 + -5 << 2) | 0;\n       HEAP32[$160 >> 2] = (HEAP32[$160 >> 2] | 0) + $j$076;\n       $164 = $labelInfo + 1310736 + ($150 + -4 << 2) | 0;\n       if ((HEAP32[$164 >> 2] | 0) > ($i$265 | 0)) HEAP32[$164 >> 2] = $i$265;\n       HEAP32[$labelInfo + 1310736 + ($150 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $115 = HEAP32[$labelInfo + 1179664 + ($64 + -1 << 2) >> 2] | 0;\n      $118 = HEAP32[$labelInfo + 1179664 + (($110 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($115 | 0) > ($118 | 0)) {\n       HEAP16[$pnt2$368 >> 1] = $118;\n       if (($wk_max$160 | 0) > 0) {\n        $k$249 = 0;\n        $wk$250 = $19;\n        while (1) {\n         if ((HEAP32[$wk$250 >> 2] | 0) == ($115 | 0)) HEAP32[$wk$250 >> 2] = $118;\n         $k$249 = $k$249 + 1 | 0;\n         if (($k$249 | 0) >= ($wk_max$160 | 0)) {\n          $135 = $118;\n          break;\n         } else $wk$250 = $wk$250 + 4 | 0;\n        }\n       } else $135 = $118;\n      } else {\n       HEAP16[$pnt2$368 >> 1] = $115;\n       if (($115 | 0) < ($118 | 0) & ($wk_max$160 | 0) > 0) {\n        $k$346 = 0;\n        $wk$347 = $19;\n        while (1) {\n         if ((HEAP32[$wk$347 >> 2] | 0) == ($118 | 0)) HEAP32[$wk$347 >> 2] = $115;\n         $k$346 = $k$346 + 1 | 0;\n         if (($k$346 | 0) >= ($wk_max$160 | 0)) {\n          $135 = $115;\n          break;\n         } else $wk$347 = $wk$347 + 4 | 0;\n        }\n       } else $135 = $115;\n      }\n      $137 = ($135 << 16 >> 16) * 7 | 0;\n      $139 = $labelInfo + 1310736 + ($137 + -7 << 2) | 0;\n      HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + 1;\n      $143 = $labelInfo + 1310736 + ($137 + -6 << 2) | 0;\n      HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $i$265;\n      $147 = $labelInfo + 1310736 + ($137 + -5 << 2) | 0;\n      HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + $j$076;\n      $wk_max$2 = $wk_max$160;\n     } else {\n      HEAP16[$pnt2$368 >> 1] = 0;\n      HEAP8[$dpnt$167 >> 0] = 0;\n      $wk_max$2 = $wk_max$160;\n     } while (0);\n     $i$265 = $i$265 + 1 | 0;\n     $229 = $pnt$169 + 6 | 0;\n     $230 = $pnt2$368 + 2 | 0;\n     $231 = $dpnt$167 + 1 | 0;\n     if (($i$265 | 0) >= ($12 | 0)) {\n      $dpnt$1$lcssa = $231;\n      $pnt$1$lcssa = $229;\n      $pnt2$3$lcssa = $230;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $dpnt$167 = $231;\n      $pnt$169 = $229;\n      $pnt2$368 = $230;\n      $wk_max$160 = $wk_max$2;\n     }\n    }\n   } else {\n    $dpnt$1$lcssa = $dpnt$078;\n    $pnt$1$lcssa = $pnt$080;\n    $pnt2$3$lcssa = $pnt2$279;\n    $wk_max$1$lcssa = $wk_max$075;\n   }\n   $j$076 = $j$076 + 1 | 0;\n   if (($j$076 | 0) >= ($3 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $dpnt$078 = $dpnt$1$lcssa + 2 | 0;\n    $pnt$080 = $pnt$1$lcssa + $$sum | 0;\n    $pnt2$279 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$075 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $238 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$342 = 1;\n   $j$143 = 1;\n   $wk$444 = $19;\n   while (1) {\n    $240 = HEAP32[$wk$444 >> 2] | 0;\n    if (($240 | 0) == ($i$342 | 0)) {\n     $246 = $j$143;\n     $j$2 = $j$143 + 1 | 0;\n    } else {\n     $246 = HEAP32[$labelInfo + 1179664 + ($240 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$143;\n    }\n    HEAP32[$wk$444 >> 2] = $246;\n    if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$342 = $i$342 + 1 | 0;\n     $j$143 = $j$2;\n     $wk$444 = $wk$444 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $250 = $labelInfo + 8 | 0;\n  $251 = $j$1$lcssa + -1 | 0;\n  HEAP32[$250 >> 2] = $251;\n  if (!$251) $$0 = 0; else {\n   _memset($238 | 0, 0, $251 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $251 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$440 = 0;\n    do {\n     $258 = $i$440 << 2;\n     HEAP32[$labelInfo + 131084 + ($258 << 2) >> 2] = $0;\n     HEAP32[$labelInfo + 131084 + (($258 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($258 | 2) << 2) >> 2] = $1;\n     HEAP32[$labelInfo + 131084 + (($258 | 3) << 2) >> 2] = 0;\n     $i$440 = $i$440 + 1 | 0;\n    } while (($i$440 | 0) < (HEAP32[$250 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$538 = 0;\n    do {\n     $272 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0;\n     $273 = $i$538 * 7 | 0;\n     $276 = $labelInfo + 12 + ($272 << 2) | 0;\n     HEAP32[$276 >> 2] = (HEAP32[$276 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($273 << 2) >> 2] | 0);\n     $283 = $272 << 1;\n     $284 = $labelInfo + 655376 + ($283 << 3) | 0;\n     HEAPF64[$284 >> 3] = +HEAPF64[$284 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($273 + 1 << 2) >> 2] | 0);\n     $292 = $labelInfo + 655376 + (($283 | 1) << 3) | 0;\n     HEAPF64[$292 >> 3] = +HEAPF64[$292 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($273 + 2 << 2) >> 2] | 0);\n     $295 = $272 << 2;\n     $296 = $labelInfo + 131084 + ($295 << 2) | 0;\n     $300 = HEAP32[$labelInfo + 1310736 + ($273 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$296 >> 2] | 0) > ($300 | 0)) HEAP32[$296 >> 2] = $300;\n     $303 = $labelInfo + 131084 + (($295 | 1) << 2) | 0;\n     $307 = HEAP32[$labelInfo + 1310736 + ($273 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$303 >> 2] | 0) < ($307 | 0)) HEAP32[$303 >> 2] = $307;\n     $310 = $labelInfo + 131084 + (($295 | 2) << 2) | 0;\n     $314 = HEAP32[$labelInfo + 1310736 + ($273 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$310 >> 2] | 0) > ($314 | 0)) HEAP32[$310 >> 2] = $314;\n     $317 = $labelInfo + 131084 + (($295 | 3) << 2) | 0;\n     $321 = HEAP32[$labelInfo + 1310736 + ($273 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$317 >> 2] | 0) < ($321 | 0)) HEAP32[$317 >> 2] = $321;\n     $i$538 = $i$538 + 1 | 0;\n    } while (($i$538 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$250 >> 2] | 0) > 0) {\n    $i$637 = 0;\n    do {\n     $325 = $labelInfo + 12 + ($i$637 << 2) | 0;\n     $328 = $i$637 << 1;\n     $329 = $labelInfo + 655376 + ($328 << 3) | 0;\n     HEAPF64[$329 >> 3] = +HEAPF64[$329 >> 3] / +(HEAP32[$325 >> 2] | 0);\n     $335 = $labelInfo + 655376 + (($328 | 1) << 3) | 0;\n     HEAPF64[$335 >> 3] = +HEAPF64[$335 >> 3] / +(HEAP32[$325 >> 2] | 0);\n     $i$637 = $i$637 + 1 | 0;\n    } while (($i$637 | 0) < (HEAP32[$250 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubEBI3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $100 = 0, $104 = 0, $11 = 0, $110 = 0, $115 = 0, $118 = 0, $12 = 0, $135 = 0, $137 = 0, $139 = 0, $143 = 0, $147 = 0, $150 = 0, $152 = 0, $156 = 0, $160 = 0, $164 = 0, $169 = 0, $171 = 0, $175 = 0, $179 = 0, $183 = 0, $189 = 0, $19 = 0, $192 = 0, $194 = 0, $198 = 0, $2 = 0, $20 = 0, $202 = 0, $206 = 0, $209 = 0, $21 = 0, $214 = 0, $229 = 0, $230 = 0, $231 = 0, $238 = 0, $240 = 0, $246 = 0, $250 = 0, $251 = 0, $258 = 0, $272 = 0, $273 = 0, $276 = 0, $283 = 0, $284 = 0, $292 = 0, $295 = 0, $296 = 0, $3 = 0, $300 = 0, $303 = 0, $307 = 0, $31 = 0, $310 = 0, $314 = 0, $317 = 0, $321 = 0, $325 = 0, $328 = 0, $329 = 0, $335 = 0, $44 = 0, $47 = 0, $49 = 0, $53 = 0, $57 = 0, $63 = 0, $64 = 0, $67 = 0, $68 = 0, $69 = 0, $72 = 0, $75 = 0, $92 = 0, $94 = 0, $96 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = ($xsize | 0) / 2 | 0;\n $1 = ($ysize | 0) / 2 | 0;\n $2 = HEAP32[$labelInfo >> 2] | 0;\n $3 = $1 + -1 | 0;\n if (($xsize | 0) > 1) {\n  $i$089 = 0;\n  $pnt1$091 = $2;\n  $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$090 >> 1] = 0;\n   HEAP16[$pnt1$091 >> 1] = 0;\n   $i$089 = $i$089 + 1 | 0;\n   if (($i$089 | 0) >= ($0 | 0)) break; else {\n    $pnt1$091 = $pnt1$091 + 2 | 0;\n    $pnt2$090 = $pnt2$090 + 2 | 0;\n   }\n  }\n }\n $11 = $labelingThresh * 3 | 0;\n $12 = $0 + -1 | 0;\n if (($ysize | 0) > 1) {\n  $i$183 = 0;\n  $pnt1$185 = $2;\n  $pnt2$184 = $2 + ($12 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$184 >> 1] = 0;\n   HEAP16[$pnt1$185 >> 1] = 0;\n   $i$183 = $i$183 + 1 | 0;\n   if (($i$183 | 0) >= ($1 | 0)) break; else {\n    $pnt1$185 = $pnt1$185 + ($0 << 1) | 0;\n    $pnt2$184 = $pnt2$184 + ($0 << 1) | 0;\n   }\n  }\n }\n $19 = $labelInfo + 1179664 | 0;\n $20 = $0 + 1 | 0;\n $21 = 0 - $0 | 0;\n $$sum1 = 1 - $0 | 0;\n $$sum2 = ~$0;\n $$sum = ($xsize * 3 | 0) + 12 | 0;\n L11 : do if (($3 | 0) > 1) {\n  $31 = ($12 | 0) > 1;\n  $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $20 | 0;\n  $j$076 = 1;\n  $pnt$080 = $image + (($xsize * 6 | 0) + 6) | 0;\n  $pnt2$279 = $2 + ($20 << 1) | 0;\n  $wk_max$075 = 0;\n  L13 : while (1) {\n   if ($31) {\n    $dpnt$167 = $dpnt$078;\n    $i$265 = 1;\n    $pnt$169 = $pnt$080;\n    $pnt2$368 = $pnt2$279;\n    $wk_max$160 = $wk_max$075;\n    while (1) {\n     do if (((HEAPU8[$pnt$169 + 1 >> 0] | 0) + (HEAPU8[$pnt$169 >> 0] | 0) + (HEAPU8[$pnt$169 + 2 >> 0] | 0) | 0) > ($11 | 0)) {\n      HEAP16[$pnt2$368 >> 1] = 0;\n      HEAP8[$dpnt$167 >> 0] = 0;\n      $wk_max$2 = $wk_max$160;\n     } else {\n      HEAP8[$dpnt$167 >> 0] = -1;\n      $44 = HEAP16[$pnt2$368 + ($21 << 1) >> 1] | 0;\n      if ($44 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$368 >> 1] = $44;\n       $47 = ($44 << 16 >> 16) * 7 | 0;\n       $49 = $labelInfo + 1310736 + ($47 + -7 << 2) | 0;\n       HEAP32[$49 >> 2] = (HEAP32[$49 >> 2] | 0) + 1;\n       $53 = $labelInfo + 1310736 + ($47 + -6 << 2) | 0;\n       HEAP32[$53 >> 2] = (HEAP32[$53 >> 2] | 0) + $i$265;\n       $57 = $labelInfo + 1310736 + ($47 + -5 << 2) | 0;\n       HEAP32[$57 >> 2] = (HEAP32[$57 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($47 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $63 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0;\n      $64 = $63 << 16 >> 16;\n      $67 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0;\n      $68 = $67 << 16 >> 16;\n      $69 = $67 << 16 >> 16 > 0;\n      if ($63 << 16 >> 16 <= 0) {\n       if ($69) {\n        HEAP16[$pnt2$368 >> 1] = $67;\n        $169 = $68 * 7 | 0;\n        $171 = $labelInfo + 1310736 + ($169 + -7 << 2) | 0;\n        HEAP32[$171 >> 2] = (HEAP32[$171 >> 2] | 0) + 1;\n        $175 = $labelInfo + 1310736 + ($169 + -6 << 2) | 0;\n        HEAP32[$175 >> 2] = (HEAP32[$175 >> 2] | 0) + $i$265;\n        $179 = $labelInfo + 1310736 + ($169 + -5 << 2) | 0;\n        HEAP32[$179 >> 2] = (HEAP32[$179 >> 2] | 0) + $j$076;\n        $183 = $labelInfo + 1310736 + ($169 + -3 << 2) | 0;\n        if ((HEAP32[$183 >> 2] | 0) < ($i$265 | 0)) HEAP32[$183 >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($169 + -1 << 2) >> 2] = $j$076;\n        $wk_max$2 = $wk_max$160;\n        break;\n       }\n       $189 = HEAP16[$pnt2$368 + -2 >> 1] | 0;\n       if ($189 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$368 >> 1] = $189;\n        $192 = ($189 << 16 >> 16) * 7 | 0;\n        $194 = $labelInfo + 1310736 + ($192 + -7 << 2) | 0;\n        HEAP32[$194 >> 2] = (HEAP32[$194 >> 2] | 0) + 1;\n        $198 = $labelInfo + 1310736 + ($192 + -6 << 2) | 0;\n        HEAP32[$198 >> 2] = (HEAP32[$198 >> 2] | 0) + $i$265;\n        $202 = $labelInfo + 1310736 + ($192 + -5 << 2) | 0;\n        HEAP32[$202 >> 2] = (HEAP32[$202 >> 2] | 0) + $j$076;\n        $206 = $labelInfo + 1310736 + ($192 + -3 << 2) | 0;\n        if ((HEAP32[$206 >> 2] | 0) >= ($i$265 | 0)) {\n         $wk_max$2 = $wk_max$160;\n         break;\n        }\n        HEAP32[$206 >> 2] = $i$265;\n        $wk_max$2 = $wk_max$160;\n        break;\n       } else {\n        $209 = $wk_max$160 + 1 | 0;\n        if (($wk_max$160 | 0) > 32767) break L13;\n        HEAP16[$pnt2$368 >> 1] = $209;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $209 << 16 >> 16;\n        $214 = $wk_max$160 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($214 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($214 + 1 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($214 + 2 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($214 + 3 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($214 + 4 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($214 + 5 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($214 + 6 << 2) >> 2] = $j$076;\n        $wk_max$2 = $209;\n        break;\n       }\n      }\n      if ($69) {\n       $72 = HEAP32[$labelInfo + 1179664 + ($64 + -1 << 2) >> 2] | 0;\n       $75 = HEAP32[$labelInfo + 1179664 + ($68 + -1 << 2) >> 2] | 0;\n       if (($72 | 0) > ($75 | 0)) {\n        HEAP16[$pnt2$368 >> 1] = $75;\n        if (($wk_max$160 | 0) > 0) {\n         $k$056 = 0;\n         $wk$057 = $19;\n         while (1) {\n          if ((HEAP32[$wk$057 >> 2] | 0) == ($72 | 0)) HEAP32[$wk$057 >> 2] = $75;\n          $k$056 = $k$056 + 1 | 0;\n          if (($k$056 | 0) >= ($wk_max$160 | 0)) {\n           $92 = $75;\n           break;\n          } else $wk$057 = $wk$057 + 4 | 0;\n         }\n        } else $92 = $75;\n       } else {\n        HEAP16[$pnt2$368 >> 1] = $72;\n        if (($72 | 0) < ($75 | 0) & ($wk_max$160 | 0) > 0) {\n         $k$153 = 0;\n         $wk$154 = $19;\n         while (1) {\n          if ((HEAP32[$wk$154 >> 2] | 0) == ($75 | 0)) HEAP32[$wk$154 >> 2] = $72;\n          $k$153 = $k$153 + 1 | 0;\n          if (($k$153 | 0) >= ($wk_max$160 | 0)) {\n           $92 = $72;\n           break;\n          } else $wk$154 = $wk$154 + 4 | 0;\n         }\n        } else $92 = $72;\n       }\n       $94 = ($92 << 16 >> 16) * 7 | 0;\n       $96 = $labelInfo + 1310736 + ($94 + -7 << 2) | 0;\n       HEAP32[$96 >> 2] = (HEAP32[$96 >> 2] | 0) + 1;\n       $100 = $labelInfo + 1310736 + ($94 + -6 << 2) | 0;\n       HEAP32[$100 >> 2] = (HEAP32[$100 >> 2] | 0) + $i$265;\n       $104 = $labelInfo + 1310736 + ($94 + -5 << 2) | 0;\n       HEAP32[$104 >> 2] = (HEAP32[$104 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($94 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $110 = HEAP16[$pnt2$368 + -2 >> 1] | 0;\n      if ($110 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$368 >> 1] = $63;\n       $150 = $64 * 7 | 0;\n       $152 = $labelInfo + 1310736 + ($150 + -7 << 2) | 0;\n       HEAP32[$152 >> 2] = (HEAP32[$152 >> 2] | 0) + 1;\n       $156 = $labelInfo + 1310736 + ($150 + -6 << 2) | 0;\n       HEAP32[$156 >> 2] = (HEAP32[$156 >> 2] | 0) + $i$265;\n       $160 = $labelInfo + 1310736 + ($150 + -5 << 2) | 0;\n       HEAP32[$160 >> 2] = (HEAP32[$160 >> 2] | 0) + $j$076;\n       $164 = $labelInfo + 1310736 + ($150 + -4 << 2) | 0;\n       if ((HEAP32[$164 >> 2] | 0) > ($i$265 | 0)) HEAP32[$164 >> 2] = $i$265;\n       HEAP32[$labelInfo + 1310736 + ($150 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $115 = HEAP32[$labelInfo + 1179664 + ($64 + -1 << 2) >> 2] | 0;\n      $118 = HEAP32[$labelInfo + 1179664 + (($110 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($115 | 0) > ($118 | 0)) {\n       HEAP16[$pnt2$368 >> 1] = $118;\n       if (($wk_max$160 | 0) > 0) {\n        $k$249 = 0;\n        $wk$250 = $19;\n        while (1) {\n         if ((HEAP32[$wk$250 >> 2] | 0) == ($115 | 0)) HEAP32[$wk$250 >> 2] = $118;\n         $k$249 = $k$249 + 1 | 0;\n         if (($k$249 | 0) >= ($wk_max$160 | 0)) {\n          $135 = $118;\n          break;\n         } else $wk$250 = $wk$250 + 4 | 0;\n        }\n       } else $135 = $118;\n      } else {\n       HEAP16[$pnt2$368 >> 1] = $115;\n       if (($115 | 0) < ($118 | 0) & ($wk_max$160 | 0) > 0) {\n        $k$346 = 0;\n        $wk$347 = $19;\n        while (1) {\n         if ((HEAP32[$wk$347 >> 2] | 0) == ($118 | 0)) HEAP32[$wk$347 >> 2] = $115;\n         $k$346 = $k$346 + 1 | 0;\n         if (($k$346 | 0) >= ($wk_max$160 | 0)) {\n          $135 = $115;\n          break;\n         } else $wk$347 = $wk$347 + 4 | 0;\n        }\n       } else $135 = $115;\n      }\n      $137 = ($135 << 16 >> 16) * 7 | 0;\n      $139 = $labelInfo + 1310736 + ($137 + -7 << 2) | 0;\n      HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + 1;\n      $143 = $labelInfo + 1310736 + ($137 + -6 << 2) | 0;\n      HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $i$265;\n      $147 = $labelInfo + 1310736 + ($137 + -5 << 2) | 0;\n      HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + $j$076;\n      $wk_max$2 = $wk_max$160;\n     } while (0);\n     $i$265 = $i$265 + 1 | 0;\n     $229 = $pnt$169 + 6 | 0;\n     $230 = $pnt2$368 + 2 | 0;\n     $231 = $dpnt$167 + 1 | 0;\n     if (($i$265 | 0) >= ($12 | 0)) {\n      $dpnt$1$lcssa = $231;\n      $pnt$1$lcssa = $229;\n      $pnt2$3$lcssa = $230;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $dpnt$167 = $231;\n      $pnt$169 = $229;\n      $pnt2$368 = $230;\n      $wk_max$160 = $wk_max$2;\n     }\n    }\n   } else {\n    $dpnt$1$lcssa = $dpnt$078;\n    $pnt$1$lcssa = $pnt$080;\n    $pnt2$3$lcssa = $pnt2$279;\n    $wk_max$1$lcssa = $wk_max$075;\n   }\n   $j$076 = $j$076 + 1 | 0;\n   if (($j$076 | 0) >= ($3 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $dpnt$078 = $dpnt$1$lcssa + 2 | 0;\n    $pnt$080 = $pnt$1$lcssa + $$sum | 0;\n    $pnt2$279 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$075 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $238 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$342 = 1;\n   $j$143 = 1;\n   $wk$444 = $19;\n   while (1) {\n    $240 = HEAP32[$wk$444 >> 2] | 0;\n    if (($240 | 0) == ($i$342 | 0)) {\n     $246 = $j$143;\n     $j$2 = $j$143 + 1 | 0;\n    } else {\n     $246 = HEAP32[$labelInfo + 1179664 + ($240 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$143;\n    }\n    HEAP32[$wk$444 >> 2] = $246;\n    if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$342 = $i$342 + 1 | 0;\n     $j$143 = $j$2;\n     $wk$444 = $wk$444 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $250 = $labelInfo + 8 | 0;\n  $251 = $j$1$lcssa + -1 | 0;\n  HEAP32[$250 >> 2] = $251;\n  if (!$251) $$0 = 0; else {\n   _memset($238 | 0, 0, $251 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $251 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$440 = 0;\n    do {\n     $258 = $i$440 << 2;\n     HEAP32[$labelInfo + 131084 + ($258 << 2) >> 2] = $0;\n     HEAP32[$labelInfo + 131084 + (($258 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($258 | 2) << 2) >> 2] = $1;\n     HEAP32[$labelInfo + 131084 + (($258 | 3) << 2) >> 2] = 0;\n     $i$440 = $i$440 + 1 | 0;\n    } while (($i$440 | 0) < (HEAP32[$250 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$538 = 0;\n    do {\n     $272 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0;\n     $273 = $i$538 * 7 | 0;\n     $276 = $labelInfo + 12 + ($272 << 2) | 0;\n     HEAP32[$276 >> 2] = (HEAP32[$276 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($273 << 2) >> 2] | 0);\n     $283 = $272 << 1;\n     $284 = $labelInfo + 655376 + ($283 << 3) | 0;\n     HEAPF64[$284 >> 3] = +HEAPF64[$284 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($273 + 1 << 2) >> 2] | 0);\n     $292 = $labelInfo + 655376 + (($283 | 1) << 3) | 0;\n     HEAPF64[$292 >> 3] = +HEAPF64[$292 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($273 + 2 << 2) >> 2] | 0);\n     $295 = $272 << 2;\n     $296 = $labelInfo + 131084 + ($295 << 2) | 0;\n     $300 = HEAP32[$labelInfo + 1310736 + ($273 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$296 >> 2] | 0) > ($300 | 0)) HEAP32[$296 >> 2] = $300;\n     $303 = $labelInfo + 131084 + (($295 | 1) << 2) | 0;\n     $307 = HEAP32[$labelInfo + 1310736 + ($273 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$303 >> 2] | 0) < ($307 | 0)) HEAP32[$303 >> 2] = $307;\n     $310 = $labelInfo + 131084 + (($295 | 2) << 2) | 0;\n     $314 = HEAP32[$labelInfo + 1310736 + ($273 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$310 >> 2] | 0) > ($314 | 0)) HEAP32[$310 >> 2] = $314;\n     $317 = $labelInfo + 131084 + (($295 | 3) << 2) | 0;\n     $321 = HEAP32[$labelInfo + 1310736 + ($273 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$317 >> 2] | 0) < ($321 | 0)) HEAP32[$317 >> 2] = $321;\n     $i$538 = $i$538 + 1 | 0;\n    } while (($i$538 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$250 >> 2] | 0) > 0) {\n    $i$637 = 0;\n    do {\n     $325 = $labelInfo + 12 + ($i$637 << 2) | 0;\n     $328 = $i$637 << 1;\n     $329 = $labelInfo + 655376 + ($328 << 3) | 0;\n     HEAPF64[$329 >> 3] = +HEAPF64[$329 >> 3] / +(HEAP32[$325 >> 2] | 0);\n     $335 = $labelInfo + 655376 + (($328 | 1) << 3) | 0;\n     HEAPF64[$335 >> 3] = +HEAPF64[$335 >> 3] / +(HEAP32[$325 >> 2] | 0);\n     $i$637 = $i$637 + 1 | 0;\n    } while (($i$637 | 0) < (HEAP32[$250 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubEWIA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $101 = 0, $105 = 0, $11 = 0, $111 = 0, $116 = 0, $119 = 0, $12 = 0, $136 = 0, $138 = 0, $140 = 0, $144 = 0, $148 = 0, $151 = 0, $153 = 0, $157 = 0, $161 = 0, $165 = 0, $170 = 0, $172 = 0, $176 = 0, $180 = 0, $184 = 0, $19 = 0, $190 = 0, $193 = 0, $195 = 0, $199 = 0, $2 = 0, $20 = 0, $203 = 0, $207 = 0, $21 = 0, $210 = 0, $215 = 0, $230 = 0, $231 = 0, $232 = 0, $239 = 0, $241 = 0, $247 = 0, $251 = 0, $252 = 0, $259 = 0, $273 = 0, $274 = 0, $277 = 0, $284 = 0, $285 = 0, $293 = 0, $296 = 0, $297 = 0, $3 = 0, $301 = 0, $304 = 0, $308 = 0, $31 = 0, $311 = 0, $315 = 0, $318 = 0, $322 = 0, $326 = 0, $329 = 0, $330 = 0, $336 = 0, $45 = 0, $48 = 0, $50 = 0, $54 = 0, $58 = 0, $64 = 0, $65 = 0, $68 = 0, $69 = 0, $70 = 0, $73 = 0, $76 = 0, $93 = 0, $95 = 0, $97 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = ($xsize | 0) / 2 | 0;\n $1 = ($ysize | 0) / 2 | 0;\n $2 = HEAP32[$labelInfo >> 2] | 0;\n $3 = $1 + -1 | 0;\n if (($xsize | 0) > 1) {\n  $i$089 = 0;\n  $pnt1$091 = $2;\n  $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$090 >> 1] = 0;\n   HEAP16[$pnt1$091 >> 1] = 0;\n   $i$089 = $i$089 + 1 | 0;\n   if (($i$089 | 0) >= ($0 | 0)) break; else {\n    $pnt1$091 = $pnt1$091 + 2 | 0;\n    $pnt2$090 = $pnt2$090 + 2 | 0;\n   }\n  }\n }\n $11 = $labelingThresh * 3 | 0;\n $12 = $0 + -1 | 0;\n if (($ysize | 0) > 1) {\n  $i$183 = 0;\n  $pnt1$185 = $2;\n  $pnt2$184 = $2 + ($12 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$184 >> 1] = 0;\n   HEAP16[$pnt1$185 >> 1] = 0;\n   $i$183 = $i$183 + 1 | 0;\n   if (($i$183 | 0) >= ($1 | 0)) break; else {\n    $pnt1$185 = $pnt1$185 + ($0 << 1) | 0;\n    $pnt2$184 = $pnt2$184 + ($0 << 1) | 0;\n   }\n  }\n }\n $19 = $labelInfo + 1179664 | 0;\n $20 = $0 + 1 | 0;\n $21 = 0 - $0 | 0;\n $$sum1 = 1 - $0 | 0;\n $$sum2 = ~$0;\n $$sum = ($xsize << 2) + 16 | 0;\n L11 : do if (($3 | 0) > 1) {\n  $31 = ($12 | 0) > 1;\n  $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $20 | 0;\n  $j$076 = 1;\n  $pnt$080 = $image + (($xsize << 3) + 8) | 0;\n  $pnt2$279 = $2 + ($20 << 1) | 0;\n  $wk_max$075 = 0;\n  L13 : while (1) {\n   if ($31) {\n    $dpnt$167 = $dpnt$078;\n    $i$265 = 1;\n    $pnt$169 = $pnt$080;\n    $pnt2$368 = $pnt2$279;\n    $wk_max$160 = $wk_max$075;\n    while (1) {\n     do if (((HEAPU8[$pnt$169 + 2 >> 0] | 0) + (HEAPU8[$pnt$169 + 1 >> 0] | 0) + (HEAPU8[$pnt$169 + 3 >> 0] | 0) | 0) > ($11 | 0)) {\n      HEAP8[$dpnt$167 >> 0] = -1;\n      $45 = HEAP16[$pnt2$368 + ($21 << 1) >> 1] | 0;\n      if ($45 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$368 >> 1] = $45;\n       $48 = ($45 << 16 >> 16) * 7 | 0;\n       $50 = $labelInfo + 1310736 + ($48 + -7 << 2) | 0;\n       HEAP32[$50 >> 2] = (HEAP32[$50 >> 2] | 0) + 1;\n       $54 = $labelInfo + 1310736 + ($48 + -6 << 2) | 0;\n       HEAP32[$54 >> 2] = (HEAP32[$54 >> 2] | 0) + $i$265;\n       $58 = $labelInfo + 1310736 + ($48 + -5 << 2) | 0;\n       HEAP32[$58 >> 2] = (HEAP32[$58 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($48 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $64 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0;\n      $65 = $64 << 16 >> 16;\n      $68 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0;\n      $69 = $68 << 16 >> 16;\n      $70 = $68 << 16 >> 16 > 0;\n      if ($64 << 16 >> 16 <= 0) {\n       if ($70) {\n        HEAP16[$pnt2$368 >> 1] = $68;\n        $170 = $69 * 7 | 0;\n        $172 = $labelInfo + 1310736 + ($170 + -7 << 2) | 0;\n        HEAP32[$172 >> 2] = (HEAP32[$172 >> 2] | 0) + 1;\n        $176 = $labelInfo + 1310736 + ($170 + -6 << 2) | 0;\n        HEAP32[$176 >> 2] = (HEAP32[$176 >> 2] | 0) + $i$265;\n        $180 = $labelInfo + 1310736 + ($170 + -5 << 2) | 0;\n        HEAP32[$180 >> 2] = (HEAP32[$180 >> 2] | 0) + $j$076;\n        $184 = $labelInfo + 1310736 + ($170 + -3 << 2) | 0;\n        if ((HEAP32[$184 >> 2] | 0) < ($i$265 | 0)) HEAP32[$184 >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($170 + -1 << 2) >> 2] = $j$076;\n        $wk_max$2 = $wk_max$160;\n        break;\n       }\n       $190 = HEAP16[$pnt2$368 + -2 >> 1] | 0;\n       if ($190 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$368 >> 1] = $190;\n        $193 = ($190 << 16 >> 16) * 7 | 0;\n        $195 = $labelInfo + 1310736 + ($193 + -7 << 2) | 0;\n        HEAP32[$195 >> 2] = (HEAP32[$195 >> 2] | 0) + 1;\n        $199 = $labelInfo + 1310736 + ($193 + -6 << 2) | 0;\n        HEAP32[$199 >> 2] = (HEAP32[$199 >> 2] | 0) + $i$265;\n        $203 = $labelInfo + 1310736 + ($193 + -5 << 2) | 0;\n        HEAP32[$203 >> 2] = (HEAP32[$203 >> 2] | 0) + $j$076;\n        $207 = $labelInfo + 1310736 + ($193 + -3 << 2) | 0;\n        if ((HEAP32[$207 >> 2] | 0) >= ($i$265 | 0)) {\n         $wk_max$2 = $wk_max$160;\n         break;\n        }\n        HEAP32[$207 >> 2] = $i$265;\n        $wk_max$2 = $wk_max$160;\n        break;\n       } else {\n        $210 = $wk_max$160 + 1 | 0;\n        if (($wk_max$160 | 0) > 32767) break L13;\n        HEAP16[$pnt2$368 >> 1] = $210;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $210 << 16 >> 16;\n        $215 = $wk_max$160 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($215 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($215 + 1 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($215 + 2 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($215 + 3 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($215 + 4 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($215 + 5 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($215 + 6 << 2) >> 2] = $j$076;\n        $wk_max$2 = $210;\n        break;\n       }\n      }\n      if ($70) {\n       $73 = HEAP32[$labelInfo + 1179664 + ($65 + -1 << 2) >> 2] | 0;\n       $76 = HEAP32[$labelInfo + 1179664 + ($69 + -1 << 2) >> 2] | 0;\n       if (($73 | 0) > ($76 | 0)) {\n        HEAP16[$pnt2$368 >> 1] = $76;\n        if (($wk_max$160 | 0) > 0) {\n         $k$056 = 0;\n         $wk$057 = $19;\n         while (1) {\n          if ((HEAP32[$wk$057 >> 2] | 0) == ($73 | 0)) HEAP32[$wk$057 >> 2] = $76;\n          $k$056 = $k$056 + 1 | 0;\n          if (($k$056 | 0) >= ($wk_max$160 | 0)) {\n           $93 = $76;\n           break;\n          } else $wk$057 = $wk$057 + 4 | 0;\n         }\n        } else $93 = $76;\n       } else {\n        HEAP16[$pnt2$368 >> 1] = $73;\n        if (($73 | 0) < ($76 | 0) & ($wk_max$160 | 0) > 0) {\n         $k$153 = 0;\n         $wk$154 = $19;\n         while (1) {\n          if ((HEAP32[$wk$154 >> 2] | 0) == ($76 | 0)) HEAP32[$wk$154 >> 2] = $73;\n          $k$153 = $k$153 + 1 | 0;\n          if (($k$153 | 0) >= ($wk_max$160 | 0)) {\n           $93 = $73;\n           break;\n          } else $wk$154 = $wk$154 + 4 | 0;\n         }\n        } else $93 = $73;\n       }\n       $95 = ($93 << 16 >> 16) * 7 | 0;\n       $97 = $labelInfo + 1310736 + ($95 + -7 << 2) | 0;\n       HEAP32[$97 >> 2] = (HEAP32[$97 >> 2] | 0) + 1;\n       $101 = $labelInfo + 1310736 + ($95 + -6 << 2) | 0;\n       HEAP32[$101 >> 2] = (HEAP32[$101 >> 2] | 0) + $i$265;\n       $105 = $labelInfo + 1310736 + ($95 + -5 << 2) | 0;\n       HEAP32[$105 >> 2] = (HEAP32[$105 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($95 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $111 = HEAP16[$pnt2$368 + -2 >> 1] | 0;\n      if ($111 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$368 >> 1] = $64;\n       $151 = $65 * 7 | 0;\n       $153 = $labelInfo + 1310736 + ($151 + -7 << 2) | 0;\n       HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + 1;\n       $157 = $labelInfo + 1310736 + ($151 + -6 << 2) | 0;\n       HEAP32[$157 >> 2] = (HEAP32[$157 >> 2] | 0) + $i$265;\n       $161 = $labelInfo + 1310736 + ($151 + -5 << 2) | 0;\n       HEAP32[$161 >> 2] = (HEAP32[$161 >> 2] | 0) + $j$076;\n       $165 = $labelInfo + 1310736 + ($151 + -4 << 2) | 0;\n       if ((HEAP32[$165 >> 2] | 0) > ($i$265 | 0)) HEAP32[$165 >> 2] = $i$265;\n       HEAP32[$labelInfo + 1310736 + ($151 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $116 = HEAP32[$labelInfo + 1179664 + ($65 + -1 << 2) >> 2] | 0;\n      $119 = HEAP32[$labelInfo + 1179664 + (($111 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($116 | 0) > ($119 | 0)) {\n       HEAP16[$pnt2$368 >> 1] = $119;\n       if (($wk_max$160 | 0) > 0) {\n        $k$249 = 0;\n        $wk$250 = $19;\n        while (1) {\n         if ((HEAP32[$wk$250 >> 2] | 0) == ($116 | 0)) HEAP32[$wk$250 >> 2] = $119;\n         $k$249 = $k$249 + 1 | 0;\n         if (($k$249 | 0) >= ($wk_max$160 | 0)) {\n          $136 = $119;\n          break;\n         } else $wk$250 = $wk$250 + 4 | 0;\n        }\n       } else $136 = $119;\n      } else {\n       HEAP16[$pnt2$368 >> 1] = $116;\n       if (($116 | 0) < ($119 | 0) & ($wk_max$160 | 0) > 0) {\n        $k$346 = 0;\n        $wk$347 = $19;\n        while (1) {\n         if ((HEAP32[$wk$347 >> 2] | 0) == ($119 | 0)) HEAP32[$wk$347 >> 2] = $116;\n         $k$346 = $k$346 + 1 | 0;\n         if (($k$346 | 0) >= ($wk_max$160 | 0)) {\n          $136 = $116;\n          break;\n         } else $wk$347 = $wk$347 + 4 | 0;\n        }\n       } else $136 = $116;\n      }\n      $138 = ($136 << 16 >> 16) * 7 | 0;\n      $140 = $labelInfo + 1310736 + ($138 + -7 << 2) | 0;\n      HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + 1;\n      $144 = $labelInfo + 1310736 + ($138 + -6 << 2) | 0;\n      HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $i$265;\n      $148 = $labelInfo + 1310736 + ($138 + -5 << 2) | 0;\n      HEAP32[$148 >> 2] = (HEAP32[$148 >> 2] | 0) + $j$076;\n      $wk_max$2 = $wk_max$160;\n     } else {\n      HEAP16[$pnt2$368 >> 1] = 0;\n      HEAP8[$dpnt$167 >> 0] = 0;\n      $wk_max$2 = $wk_max$160;\n     } while (0);\n     $i$265 = $i$265 + 1 | 0;\n     $230 = $pnt$169 + 8 | 0;\n     $231 = $pnt2$368 + 2 | 0;\n     $232 = $dpnt$167 + 1 | 0;\n     if (($i$265 | 0) >= ($12 | 0)) {\n      $dpnt$1$lcssa = $232;\n      $pnt$1$lcssa = $230;\n      $pnt2$3$lcssa = $231;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $dpnt$167 = $232;\n      $pnt$169 = $230;\n      $pnt2$368 = $231;\n      $wk_max$160 = $wk_max$2;\n     }\n    }\n   } else {\n    $dpnt$1$lcssa = $dpnt$078;\n    $pnt$1$lcssa = $pnt$080;\n    $pnt2$3$lcssa = $pnt2$279;\n    $wk_max$1$lcssa = $wk_max$075;\n   }\n   $j$076 = $j$076 + 1 | 0;\n   if (($j$076 | 0) >= ($3 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $dpnt$078 = $dpnt$1$lcssa + 2 | 0;\n    $pnt$080 = $pnt$1$lcssa + $$sum | 0;\n    $pnt2$279 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$075 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $239 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$342 = 1;\n   $j$143 = 1;\n   $wk$444 = $19;\n   while (1) {\n    $241 = HEAP32[$wk$444 >> 2] | 0;\n    if (($241 | 0) == ($i$342 | 0)) {\n     $247 = $j$143;\n     $j$2 = $j$143 + 1 | 0;\n    } else {\n     $247 = HEAP32[$labelInfo + 1179664 + ($241 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$143;\n    }\n    HEAP32[$wk$444 >> 2] = $247;\n    if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$342 = $i$342 + 1 | 0;\n     $j$143 = $j$2;\n     $wk$444 = $wk$444 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $251 = $labelInfo + 8 | 0;\n  $252 = $j$1$lcssa + -1 | 0;\n  HEAP32[$251 >> 2] = $252;\n  if (!$252) $$0 = 0; else {\n   _memset($239 | 0, 0, $252 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $252 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$440 = 0;\n    do {\n     $259 = $i$440 << 2;\n     HEAP32[$labelInfo + 131084 + ($259 << 2) >> 2] = $0;\n     HEAP32[$labelInfo + 131084 + (($259 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($259 | 2) << 2) >> 2] = $1;\n     HEAP32[$labelInfo + 131084 + (($259 | 3) << 2) >> 2] = 0;\n     $i$440 = $i$440 + 1 | 0;\n    } while (($i$440 | 0) < (HEAP32[$251 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$538 = 0;\n    do {\n     $273 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0;\n     $274 = $i$538 * 7 | 0;\n     $277 = $labelInfo + 12 + ($273 << 2) | 0;\n     HEAP32[$277 >> 2] = (HEAP32[$277 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($274 << 2) >> 2] | 0);\n     $284 = $273 << 1;\n     $285 = $labelInfo + 655376 + ($284 << 3) | 0;\n     HEAPF64[$285 >> 3] = +HEAPF64[$285 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($274 + 1 << 2) >> 2] | 0);\n     $293 = $labelInfo + 655376 + (($284 | 1) << 3) | 0;\n     HEAPF64[$293 >> 3] = +HEAPF64[$293 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($274 + 2 << 2) >> 2] | 0);\n     $296 = $273 << 2;\n     $297 = $labelInfo + 131084 + ($296 << 2) | 0;\n     $301 = HEAP32[$labelInfo + 1310736 + ($274 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$297 >> 2] | 0) > ($301 | 0)) HEAP32[$297 >> 2] = $301;\n     $304 = $labelInfo + 131084 + (($296 | 1) << 2) | 0;\n     $308 = HEAP32[$labelInfo + 1310736 + ($274 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$304 >> 2] | 0) < ($308 | 0)) HEAP32[$304 >> 2] = $308;\n     $311 = $labelInfo + 131084 + (($296 | 2) << 2) | 0;\n     $315 = HEAP32[$labelInfo + 1310736 + ($274 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$311 >> 2] | 0) > ($315 | 0)) HEAP32[$311 >> 2] = $315;\n     $318 = $labelInfo + 131084 + (($296 | 3) << 2) | 0;\n     $322 = HEAP32[$labelInfo + 1310736 + ($274 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$318 >> 2] | 0) < ($322 | 0)) HEAP32[$318 >> 2] = $322;\n     $i$538 = $i$538 + 1 | 0;\n    } while (($i$538 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$251 >> 2] | 0) > 0) {\n    $i$637 = 0;\n    do {\n     $326 = $labelInfo + 12 + ($i$637 << 2) | 0;\n     $329 = $i$637 << 1;\n     $330 = $labelInfo + 655376 + ($329 << 3) | 0;\n     HEAPF64[$330 >> 3] = +HEAPF64[$330 >> 3] / +(HEAP32[$326 >> 2] | 0);\n     $336 = $labelInfo + 655376 + (($329 | 1) << 3) | 0;\n     HEAPF64[$336 >> 3] = +HEAPF64[$336 >> 3] / +(HEAP32[$326 >> 2] | 0);\n     $i$637 = $i$637 + 1 | 0;\n    } while (($i$637 | 0) < (HEAP32[$251 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubEBIA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $101 = 0, $105 = 0, $11 = 0, $111 = 0, $116 = 0, $119 = 0, $12 = 0, $136 = 0, $138 = 0, $140 = 0, $144 = 0, $148 = 0, $151 = 0, $153 = 0, $157 = 0, $161 = 0, $165 = 0, $170 = 0, $172 = 0, $176 = 0, $180 = 0, $184 = 0, $19 = 0, $190 = 0, $193 = 0, $195 = 0, $199 = 0, $2 = 0, $20 = 0, $203 = 0, $207 = 0, $21 = 0, $210 = 0, $215 = 0, $230 = 0, $231 = 0, $232 = 0, $239 = 0, $241 = 0, $247 = 0, $251 = 0, $252 = 0, $259 = 0, $273 = 0, $274 = 0, $277 = 0, $284 = 0, $285 = 0, $293 = 0, $296 = 0, $297 = 0, $3 = 0, $301 = 0, $304 = 0, $308 = 0, $31 = 0, $311 = 0, $315 = 0, $318 = 0, $322 = 0, $326 = 0, $329 = 0, $330 = 0, $336 = 0, $45 = 0, $48 = 0, $50 = 0, $54 = 0, $58 = 0, $64 = 0, $65 = 0, $68 = 0, $69 = 0, $70 = 0, $73 = 0, $76 = 0, $93 = 0, $95 = 0, $97 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = ($xsize | 0) / 2 | 0;\n $1 = ($ysize | 0) / 2 | 0;\n $2 = HEAP32[$labelInfo >> 2] | 0;\n $3 = $1 + -1 | 0;\n if (($xsize | 0) > 1) {\n  $i$089 = 0;\n  $pnt1$091 = $2;\n  $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$090 >> 1] = 0;\n   HEAP16[$pnt1$091 >> 1] = 0;\n   $i$089 = $i$089 + 1 | 0;\n   if (($i$089 | 0) >= ($0 | 0)) break; else {\n    $pnt1$091 = $pnt1$091 + 2 | 0;\n    $pnt2$090 = $pnt2$090 + 2 | 0;\n   }\n  }\n }\n $11 = $labelingThresh * 3 | 0;\n $12 = $0 + -1 | 0;\n if (($ysize | 0) > 1) {\n  $i$183 = 0;\n  $pnt1$185 = $2;\n  $pnt2$184 = $2 + ($12 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$184 >> 1] = 0;\n   HEAP16[$pnt1$185 >> 1] = 0;\n   $i$183 = $i$183 + 1 | 0;\n   if (($i$183 | 0) >= ($1 | 0)) break; else {\n    $pnt1$185 = $pnt1$185 + ($0 << 1) | 0;\n    $pnt2$184 = $pnt2$184 + ($0 << 1) | 0;\n   }\n  }\n }\n $19 = $labelInfo + 1179664 | 0;\n $20 = $0 + 1 | 0;\n $21 = 0 - $0 | 0;\n $$sum1 = 1 - $0 | 0;\n $$sum2 = ~$0;\n $$sum = ($xsize << 2) + 16 | 0;\n L11 : do if (($3 | 0) > 1) {\n  $31 = ($12 | 0) > 1;\n  $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $20 | 0;\n  $j$076 = 1;\n  $pnt$080 = $image + (($xsize << 3) + 8) | 0;\n  $pnt2$279 = $2 + ($20 << 1) | 0;\n  $wk_max$075 = 0;\n  L13 : while (1) {\n   if ($31) {\n    $dpnt$167 = $dpnt$078;\n    $i$265 = 1;\n    $pnt$169 = $pnt$080;\n    $pnt2$368 = $pnt2$279;\n    $wk_max$160 = $wk_max$075;\n    while (1) {\n     do if (((HEAPU8[$pnt$169 + 2 >> 0] | 0) + (HEAPU8[$pnt$169 + 1 >> 0] | 0) + (HEAPU8[$pnt$169 + 3 >> 0] | 0) | 0) > ($11 | 0)) {\n      HEAP16[$pnt2$368 >> 1] = 0;\n      HEAP8[$dpnt$167 >> 0] = 0;\n      $wk_max$2 = $wk_max$160;\n     } else {\n      HEAP8[$dpnt$167 >> 0] = -1;\n      $45 = HEAP16[$pnt2$368 + ($21 << 1) >> 1] | 0;\n      if ($45 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$368 >> 1] = $45;\n       $48 = ($45 << 16 >> 16) * 7 | 0;\n       $50 = $labelInfo + 1310736 + ($48 + -7 << 2) | 0;\n       HEAP32[$50 >> 2] = (HEAP32[$50 >> 2] | 0) + 1;\n       $54 = $labelInfo + 1310736 + ($48 + -6 << 2) | 0;\n       HEAP32[$54 >> 2] = (HEAP32[$54 >> 2] | 0) + $i$265;\n       $58 = $labelInfo + 1310736 + ($48 + -5 << 2) | 0;\n       HEAP32[$58 >> 2] = (HEAP32[$58 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($48 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $64 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0;\n      $65 = $64 << 16 >> 16;\n      $68 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0;\n      $69 = $68 << 16 >> 16;\n      $70 = $68 << 16 >> 16 > 0;\n      if ($64 << 16 >> 16 <= 0) {\n       if ($70) {\n        HEAP16[$pnt2$368 >> 1] = $68;\n        $170 = $69 * 7 | 0;\n        $172 = $labelInfo + 1310736 + ($170 + -7 << 2) | 0;\n        HEAP32[$172 >> 2] = (HEAP32[$172 >> 2] | 0) + 1;\n        $176 = $labelInfo + 1310736 + ($170 + -6 << 2) | 0;\n        HEAP32[$176 >> 2] = (HEAP32[$176 >> 2] | 0) + $i$265;\n        $180 = $labelInfo + 1310736 + ($170 + -5 << 2) | 0;\n        HEAP32[$180 >> 2] = (HEAP32[$180 >> 2] | 0) + $j$076;\n        $184 = $labelInfo + 1310736 + ($170 + -3 << 2) | 0;\n        if ((HEAP32[$184 >> 2] | 0) < ($i$265 | 0)) HEAP32[$184 >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($170 + -1 << 2) >> 2] = $j$076;\n        $wk_max$2 = $wk_max$160;\n        break;\n       }\n       $190 = HEAP16[$pnt2$368 + -2 >> 1] | 0;\n       if ($190 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$368 >> 1] = $190;\n        $193 = ($190 << 16 >> 16) * 7 | 0;\n        $195 = $labelInfo + 1310736 + ($193 + -7 << 2) | 0;\n        HEAP32[$195 >> 2] = (HEAP32[$195 >> 2] | 0) + 1;\n        $199 = $labelInfo + 1310736 + ($193 + -6 << 2) | 0;\n        HEAP32[$199 >> 2] = (HEAP32[$199 >> 2] | 0) + $i$265;\n        $203 = $labelInfo + 1310736 + ($193 + -5 << 2) | 0;\n        HEAP32[$203 >> 2] = (HEAP32[$203 >> 2] | 0) + $j$076;\n        $207 = $labelInfo + 1310736 + ($193 + -3 << 2) | 0;\n        if ((HEAP32[$207 >> 2] | 0) >= ($i$265 | 0)) {\n         $wk_max$2 = $wk_max$160;\n         break;\n        }\n        HEAP32[$207 >> 2] = $i$265;\n        $wk_max$2 = $wk_max$160;\n        break;\n       } else {\n        $210 = $wk_max$160 + 1 | 0;\n        if (($wk_max$160 | 0) > 32767) break L13;\n        HEAP16[$pnt2$368 >> 1] = $210;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $210 << 16 >> 16;\n        $215 = $wk_max$160 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($215 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($215 + 1 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($215 + 2 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($215 + 3 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($215 + 4 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($215 + 5 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($215 + 6 << 2) >> 2] = $j$076;\n        $wk_max$2 = $210;\n        break;\n       }\n      }\n      if ($70) {\n       $73 = HEAP32[$labelInfo + 1179664 + ($65 + -1 << 2) >> 2] | 0;\n       $76 = HEAP32[$labelInfo + 1179664 + ($69 + -1 << 2) >> 2] | 0;\n       if (($73 | 0) > ($76 | 0)) {\n        HEAP16[$pnt2$368 >> 1] = $76;\n        if (($wk_max$160 | 0) > 0) {\n         $k$056 = 0;\n         $wk$057 = $19;\n         while (1) {\n          if ((HEAP32[$wk$057 >> 2] | 0) == ($73 | 0)) HEAP32[$wk$057 >> 2] = $76;\n          $k$056 = $k$056 + 1 | 0;\n          if (($k$056 | 0) >= ($wk_max$160 | 0)) {\n           $93 = $76;\n           break;\n          } else $wk$057 = $wk$057 + 4 | 0;\n         }\n        } else $93 = $76;\n       } else {\n        HEAP16[$pnt2$368 >> 1] = $73;\n        if (($73 | 0) < ($76 | 0) & ($wk_max$160 | 0) > 0) {\n         $k$153 = 0;\n         $wk$154 = $19;\n         while (1) {\n          if ((HEAP32[$wk$154 >> 2] | 0) == ($76 | 0)) HEAP32[$wk$154 >> 2] = $73;\n          $k$153 = $k$153 + 1 | 0;\n          if (($k$153 | 0) >= ($wk_max$160 | 0)) {\n           $93 = $73;\n           break;\n          } else $wk$154 = $wk$154 + 4 | 0;\n         }\n        } else $93 = $73;\n       }\n       $95 = ($93 << 16 >> 16) * 7 | 0;\n       $97 = $labelInfo + 1310736 + ($95 + -7 << 2) | 0;\n       HEAP32[$97 >> 2] = (HEAP32[$97 >> 2] | 0) + 1;\n       $101 = $labelInfo + 1310736 + ($95 + -6 << 2) | 0;\n       HEAP32[$101 >> 2] = (HEAP32[$101 >> 2] | 0) + $i$265;\n       $105 = $labelInfo + 1310736 + ($95 + -5 << 2) | 0;\n       HEAP32[$105 >> 2] = (HEAP32[$105 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($95 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $111 = HEAP16[$pnt2$368 + -2 >> 1] | 0;\n      if ($111 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$368 >> 1] = $64;\n       $151 = $65 * 7 | 0;\n       $153 = $labelInfo + 1310736 + ($151 + -7 << 2) | 0;\n       HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + 1;\n       $157 = $labelInfo + 1310736 + ($151 + -6 << 2) | 0;\n       HEAP32[$157 >> 2] = (HEAP32[$157 >> 2] | 0) + $i$265;\n       $161 = $labelInfo + 1310736 + ($151 + -5 << 2) | 0;\n       HEAP32[$161 >> 2] = (HEAP32[$161 >> 2] | 0) + $j$076;\n       $165 = $labelInfo + 1310736 + ($151 + -4 << 2) | 0;\n       if ((HEAP32[$165 >> 2] | 0) > ($i$265 | 0)) HEAP32[$165 >> 2] = $i$265;\n       HEAP32[$labelInfo + 1310736 + ($151 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $116 = HEAP32[$labelInfo + 1179664 + ($65 + -1 << 2) >> 2] | 0;\n      $119 = HEAP32[$labelInfo + 1179664 + (($111 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($116 | 0) > ($119 | 0)) {\n       HEAP16[$pnt2$368 >> 1] = $119;\n       if (($wk_max$160 | 0) > 0) {\n        $k$249 = 0;\n        $wk$250 = $19;\n        while (1) {\n         if ((HEAP32[$wk$250 >> 2] | 0) == ($116 | 0)) HEAP32[$wk$250 >> 2] = $119;\n         $k$249 = $k$249 + 1 | 0;\n         if (($k$249 | 0) >= ($wk_max$160 | 0)) {\n          $136 = $119;\n          break;\n         } else $wk$250 = $wk$250 + 4 | 0;\n        }\n       } else $136 = $119;\n      } else {\n       HEAP16[$pnt2$368 >> 1] = $116;\n       if (($116 | 0) < ($119 | 0) & ($wk_max$160 | 0) > 0) {\n        $k$346 = 0;\n        $wk$347 = $19;\n        while (1) {\n         if ((HEAP32[$wk$347 >> 2] | 0) == ($119 | 0)) HEAP32[$wk$347 >> 2] = $116;\n         $k$346 = $k$346 + 1 | 0;\n         if (($k$346 | 0) >= ($wk_max$160 | 0)) {\n          $136 = $116;\n          break;\n         } else $wk$347 = $wk$347 + 4 | 0;\n        }\n       } else $136 = $116;\n      }\n      $138 = ($136 << 16 >> 16) * 7 | 0;\n      $140 = $labelInfo + 1310736 + ($138 + -7 << 2) | 0;\n      HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + 1;\n      $144 = $labelInfo + 1310736 + ($138 + -6 << 2) | 0;\n      HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $i$265;\n      $148 = $labelInfo + 1310736 + ($138 + -5 << 2) | 0;\n      HEAP32[$148 >> 2] = (HEAP32[$148 >> 2] | 0) + $j$076;\n      $wk_max$2 = $wk_max$160;\n     } while (0);\n     $i$265 = $i$265 + 1 | 0;\n     $230 = $pnt$169 + 8 | 0;\n     $231 = $pnt2$368 + 2 | 0;\n     $232 = $dpnt$167 + 1 | 0;\n     if (($i$265 | 0) >= ($12 | 0)) {\n      $dpnt$1$lcssa = $232;\n      $pnt$1$lcssa = $230;\n      $pnt2$3$lcssa = $231;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $dpnt$167 = $232;\n      $pnt$169 = $230;\n      $pnt2$368 = $231;\n      $wk_max$160 = $wk_max$2;\n     }\n    }\n   } else {\n    $dpnt$1$lcssa = $dpnt$078;\n    $pnt$1$lcssa = $pnt$080;\n    $pnt2$3$lcssa = $pnt2$279;\n    $wk_max$1$lcssa = $wk_max$075;\n   }\n   $j$076 = $j$076 + 1 | 0;\n   if (($j$076 | 0) >= ($3 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $dpnt$078 = $dpnt$1$lcssa + 2 | 0;\n    $pnt$080 = $pnt$1$lcssa + $$sum | 0;\n    $pnt2$279 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$075 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $239 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$342 = 1;\n   $j$143 = 1;\n   $wk$444 = $19;\n   while (1) {\n    $241 = HEAP32[$wk$444 >> 2] | 0;\n    if (($241 | 0) == ($i$342 | 0)) {\n     $247 = $j$143;\n     $j$2 = $j$143 + 1 | 0;\n    } else {\n     $247 = HEAP32[$labelInfo + 1179664 + ($241 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$143;\n    }\n    HEAP32[$wk$444 >> 2] = $247;\n    if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$342 = $i$342 + 1 | 0;\n     $j$143 = $j$2;\n     $wk$444 = $wk$444 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $251 = $labelInfo + 8 | 0;\n  $252 = $j$1$lcssa + -1 | 0;\n  HEAP32[$251 >> 2] = $252;\n  if (!$252) $$0 = 0; else {\n   _memset($239 | 0, 0, $252 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $252 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$440 = 0;\n    do {\n     $259 = $i$440 << 2;\n     HEAP32[$labelInfo + 131084 + ($259 << 2) >> 2] = $0;\n     HEAP32[$labelInfo + 131084 + (($259 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($259 | 2) << 2) >> 2] = $1;\n     HEAP32[$labelInfo + 131084 + (($259 | 3) << 2) >> 2] = 0;\n     $i$440 = $i$440 + 1 | 0;\n    } while (($i$440 | 0) < (HEAP32[$251 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$538 = 0;\n    do {\n     $273 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0;\n     $274 = $i$538 * 7 | 0;\n     $277 = $labelInfo + 12 + ($273 << 2) | 0;\n     HEAP32[$277 >> 2] = (HEAP32[$277 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($274 << 2) >> 2] | 0);\n     $284 = $273 << 1;\n     $285 = $labelInfo + 655376 + ($284 << 3) | 0;\n     HEAPF64[$285 >> 3] = +HEAPF64[$285 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($274 + 1 << 2) >> 2] | 0);\n     $293 = $labelInfo + 655376 + (($284 | 1) << 3) | 0;\n     HEAPF64[$293 >> 3] = +HEAPF64[$293 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($274 + 2 << 2) >> 2] | 0);\n     $296 = $273 << 2;\n     $297 = $labelInfo + 131084 + ($296 << 2) | 0;\n     $301 = HEAP32[$labelInfo + 1310736 + ($274 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$297 >> 2] | 0) > ($301 | 0)) HEAP32[$297 >> 2] = $301;\n     $304 = $labelInfo + 131084 + (($296 | 1) << 2) | 0;\n     $308 = HEAP32[$labelInfo + 1310736 + ($274 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$304 >> 2] | 0) < ($308 | 0)) HEAP32[$304 >> 2] = $308;\n     $311 = $labelInfo + 131084 + (($296 | 2) << 2) | 0;\n     $315 = HEAP32[$labelInfo + 1310736 + ($274 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$311 >> 2] | 0) > ($315 | 0)) HEAP32[$311 >> 2] = $315;\n     $318 = $labelInfo + 131084 + (($296 | 3) << 2) | 0;\n     $322 = HEAP32[$labelInfo + 1310736 + ($274 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$318 >> 2] | 0) < ($322 | 0)) HEAP32[$318 >> 2] = $322;\n     $i$538 = $i$538 + 1 | 0;\n    } while (($i$538 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$251 >> 2] | 0) > 0) {\n    $i$637 = 0;\n    do {\n     $326 = $labelInfo + 12 + ($i$637 << 2) | 0;\n     $329 = $i$637 << 1;\n     $330 = $labelInfo + 655376 + ($329 << 3) | 0;\n     HEAPF64[$330 >> 3] = +HEAPF64[$330 >> 3] / +(HEAP32[$326 >> 2] | 0);\n     $336 = $labelInfo + 655376 + (($329 | 1) << 3) | 0;\n     HEAPF64[$336 >> 3] = +HEAPF64[$336 >> 3] / +(HEAP32[$326 >> 2] | 0);\n     $i$637 = $i$637 + 1 | 0;\n    } while (($i$637 | 0) < (HEAP32[$251 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubEWI3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $100 = 0, $104 = 0, $11 = 0, $110 = 0, $115 = 0, $118 = 0, $12 = 0, $135 = 0, $137 = 0, $139 = 0, $143 = 0, $147 = 0, $150 = 0, $152 = 0, $156 = 0, $160 = 0, $164 = 0, $169 = 0, $171 = 0, $175 = 0, $179 = 0, $183 = 0, $189 = 0, $19 = 0, $192 = 0, $194 = 0, $198 = 0, $2 = 0, $20 = 0, $202 = 0, $206 = 0, $209 = 0, $21 = 0, $214 = 0, $229 = 0, $230 = 0, $231 = 0, $238 = 0, $240 = 0, $246 = 0, $250 = 0, $251 = 0, $258 = 0, $272 = 0, $273 = 0, $276 = 0, $283 = 0, $284 = 0, $292 = 0, $295 = 0, $296 = 0, $3 = 0, $300 = 0, $303 = 0, $307 = 0, $31 = 0, $310 = 0, $314 = 0, $317 = 0, $321 = 0, $325 = 0, $328 = 0, $329 = 0, $335 = 0, $44 = 0, $47 = 0, $49 = 0, $53 = 0, $57 = 0, $63 = 0, $64 = 0, $67 = 0, $68 = 0, $69 = 0, $72 = 0, $75 = 0, $92 = 0, $94 = 0, $96 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = ($xsize | 0) / 2 | 0;\n $1 = ($ysize | 0) / 2 | 0;\n $2 = HEAP32[$labelInfo >> 2] | 0;\n $3 = $1 + -1 | 0;\n if (($xsize | 0) > 1) {\n  $i$089 = 0;\n  $pnt1$091 = $2;\n  $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$090 >> 1] = 0;\n   HEAP16[$pnt1$091 >> 1] = 0;\n   $i$089 = $i$089 + 1 | 0;\n   if (($i$089 | 0) >= ($0 | 0)) break; else {\n    $pnt1$091 = $pnt1$091 + 2 | 0;\n    $pnt2$090 = $pnt2$090 + 2 | 0;\n   }\n  }\n }\n $11 = $labelingThresh * 3 | 0;\n $12 = $0 + -1 | 0;\n if (($ysize | 0) > 1) {\n  $i$183 = 0;\n  $pnt1$185 = $2;\n  $pnt2$184 = $2 + ($12 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$184 >> 1] = 0;\n   HEAP16[$pnt1$185 >> 1] = 0;\n   $i$183 = $i$183 + 1 | 0;\n   if (($i$183 | 0) >= ($1 | 0)) break; else {\n    $pnt1$185 = $pnt1$185 + ($0 << 1) | 0;\n    $pnt2$184 = $pnt2$184 + ($0 << 1) | 0;\n   }\n  }\n }\n $19 = $labelInfo + 1179664 | 0;\n $20 = $0 + 1 | 0;\n $21 = 0 - $0 | 0;\n $$sum1 = 1 - $0 | 0;\n $$sum2 = ~$0;\n $$sum = ($xsize << 2) + 16 | 0;\n L11 : do if (($3 | 0) > 1) {\n  $31 = ($12 | 0) > 1;\n  $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $20 | 0;\n  $j$076 = 1;\n  $pnt$080 = $image + (($xsize << 3) + 8) | 0;\n  $pnt2$279 = $2 + ($20 << 1) | 0;\n  $wk_max$075 = 0;\n  L13 : while (1) {\n   if ($31) {\n    $dpnt$167 = $dpnt$078;\n    $i$265 = 1;\n    $pnt$169 = $pnt$080;\n    $pnt2$368 = $pnt2$279;\n    $wk_max$160 = $wk_max$075;\n    while (1) {\n     do if (((HEAPU8[$pnt$169 + 1 >> 0] | 0) + (HEAPU8[$pnt$169 >> 0] | 0) + (HEAPU8[$pnt$169 + 2 >> 0] | 0) | 0) > ($11 | 0)) {\n      HEAP8[$dpnt$167 >> 0] = -1;\n      $44 = HEAP16[$pnt2$368 + ($21 << 1) >> 1] | 0;\n      if ($44 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$368 >> 1] = $44;\n       $47 = ($44 << 16 >> 16) * 7 | 0;\n       $49 = $labelInfo + 1310736 + ($47 + -7 << 2) | 0;\n       HEAP32[$49 >> 2] = (HEAP32[$49 >> 2] | 0) + 1;\n       $53 = $labelInfo + 1310736 + ($47 + -6 << 2) | 0;\n       HEAP32[$53 >> 2] = (HEAP32[$53 >> 2] | 0) + $i$265;\n       $57 = $labelInfo + 1310736 + ($47 + -5 << 2) | 0;\n       HEAP32[$57 >> 2] = (HEAP32[$57 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($47 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $63 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0;\n      $64 = $63 << 16 >> 16;\n      $67 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0;\n      $68 = $67 << 16 >> 16;\n      $69 = $67 << 16 >> 16 > 0;\n      if ($63 << 16 >> 16 <= 0) {\n       if ($69) {\n        HEAP16[$pnt2$368 >> 1] = $67;\n        $169 = $68 * 7 | 0;\n        $171 = $labelInfo + 1310736 + ($169 + -7 << 2) | 0;\n        HEAP32[$171 >> 2] = (HEAP32[$171 >> 2] | 0) + 1;\n        $175 = $labelInfo + 1310736 + ($169 + -6 << 2) | 0;\n        HEAP32[$175 >> 2] = (HEAP32[$175 >> 2] | 0) + $i$265;\n        $179 = $labelInfo + 1310736 + ($169 + -5 << 2) | 0;\n        HEAP32[$179 >> 2] = (HEAP32[$179 >> 2] | 0) + $j$076;\n        $183 = $labelInfo + 1310736 + ($169 + -3 << 2) | 0;\n        if ((HEAP32[$183 >> 2] | 0) < ($i$265 | 0)) HEAP32[$183 >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($169 + -1 << 2) >> 2] = $j$076;\n        $wk_max$2 = $wk_max$160;\n        break;\n       }\n       $189 = HEAP16[$pnt2$368 + -2 >> 1] | 0;\n       if ($189 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$368 >> 1] = $189;\n        $192 = ($189 << 16 >> 16) * 7 | 0;\n        $194 = $labelInfo + 1310736 + ($192 + -7 << 2) | 0;\n        HEAP32[$194 >> 2] = (HEAP32[$194 >> 2] | 0) + 1;\n        $198 = $labelInfo + 1310736 + ($192 + -6 << 2) | 0;\n        HEAP32[$198 >> 2] = (HEAP32[$198 >> 2] | 0) + $i$265;\n        $202 = $labelInfo + 1310736 + ($192 + -5 << 2) | 0;\n        HEAP32[$202 >> 2] = (HEAP32[$202 >> 2] | 0) + $j$076;\n        $206 = $labelInfo + 1310736 + ($192 + -3 << 2) | 0;\n        if ((HEAP32[$206 >> 2] | 0) >= ($i$265 | 0)) {\n         $wk_max$2 = $wk_max$160;\n         break;\n        }\n        HEAP32[$206 >> 2] = $i$265;\n        $wk_max$2 = $wk_max$160;\n        break;\n       } else {\n        $209 = $wk_max$160 + 1 | 0;\n        if (($wk_max$160 | 0) > 32767) break L13;\n        HEAP16[$pnt2$368 >> 1] = $209;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $209 << 16 >> 16;\n        $214 = $wk_max$160 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($214 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($214 + 1 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($214 + 2 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($214 + 3 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($214 + 4 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($214 + 5 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($214 + 6 << 2) >> 2] = $j$076;\n        $wk_max$2 = $209;\n        break;\n       }\n      }\n      if ($69) {\n       $72 = HEAP32[$labelInfo + 1179664 + ($64 + -1 << 2) >> 2] | 0;\n       $75 = HEAP32[$labelInfo + 1179664 + ($68 + -1 << 2) >> 2] | 0;\n       if (($72 | 0) > ($75 | 0)) {\n        HEAP16[$pnt2$368 >> 1] = $75;\n        if (($wk_max$160 | 0) > 0) {\n         $k$056 = 0;\n         $wk$057 = $19;\n         while (1) {\n          if ((HEAP32[$wk$057 >> 2] | 0) == ($72 | 0)) HEAP32[$wk$057 >> 2] = $75;\n          $k$056 = $k$056 + 1 | 0;\n          if (($k$056 | 0) >= ($wk_max$160 | 0)) {\n           $92 = $75;\n           break;\n          } else $wk$057 = $wk$057 + 4 | 0;\n         }\n        } else $92 = $75;\n       } else {\n        HEAP16[$pnt2$368 >> 1] = $72;\n        if (($72 | 0) < ($75 | 0) & ($wk_max$160 | 0) > 0) {\n         $k$153 = 0;\n         $wk$154 = $19;\n         while (1) {\n          if ((HEAP32[$wk$154 >> 2] | 0) == ($75 | 0)) HEAP32[$wk$154 >> 2] = $72;\n          $k$153 = $k$153 + 1 | 0;\n          if (($k$153 | 0) >= ($wk_max$160 | 0)) {\n           $92 = $72;\n           break;\n          } else $wk$154 = $wk$154 + 4 | 0;\n         }\n        } else $92 = $72;\n       }\n       $94 = ($92 << 16 >> 16) * 7 | 0;\n       $96 = $labelInfo + 1310736 + ($94 + -7 << 2) | 0;\n       HEAP32[$96 >> 2] = (HEAP32[$96 >> 2] | 0) + 1;\n       $100 = $labelInfo + 1310736 + ($94 + -6 << 2) | 0;\n       HEAP32[$100 >> 2] = (HEAP32[$100 >> 2] | 0) + $i$265;\n       $104 = $labelInfo + 1310736 + ($94 + -5 << 2) | 0;\n       HEAP32[$104 >> 2] = (HEAP32[$104 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($94 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $110 = HEAP16[$pnt2$368 + -2 >> 1] | 0;\n      if ($110 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$368 >> 1] = $63;\n       $150 = $64 * 7 | 0;\n       $152 = $labelInfo + 1310736 + ($150 + -7 << 2) | 0;\n       HEAP32[$152 >> 2] = (HEAP32[$152 >> 2] | 0) + 1;\n       $156 = $labelInfo + 1310736 + ($150 + -6 << 2) | 0;\n       HEAP32[$156 >> 2] = (HEAP32[$156 >> 2] | 0) + $i$265;\n       $160 = $labelInfo + 1310736 + ($150 + -5 << 2) | 0;\n       HEAP32[$160 >> 2] = (HEAP32[$160 >> 2] | 0) + $j$076;\n       $164 = $labelInfo + 1310736 + ($150 + -4 << 2) | 0;\n       if ((HEAP32[$164 >> 2] | 0) > ($i$265 | 0)) HEAP32[$164 >> 2] = $i$265;\n       HEAP32[$labelInfo + 1310736 + ($150 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $115 = HEAP32[$labelInfo + 1179664 + ($64 + -1 << 2) >> 2] | 0;\n      $118 = HEAP32[$labelInfo + 1179664 + (($110 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($115 | 0) > ($118 | 0)) {\n       HEAP16[$pnt2$368 >> 1] = $118;\n       if (($wk_max$160 | 0) > 0) {\n        $k$249 = 0;\n        $wk$250 = $19;\n        while (1) {\n         if ((HEAP32[$wk$250 >> 2] | 0) == ($115 | 0)) HEAP32[$wk$250 >> 2] = $118;\n         $k$249 = $k$249 + 1 | 0;\n         if (($k$249 | 0) >= ($wk_max$160 | 0)) {\n          $135 = $118;\n          break;\n         } else $wk$250 = $wk$250 + 4 | 0;\n        }\n       } else $135 = $118;\n      } else {\n       HEAP16[$pnt2$368 >> 1] = $115;\n       if (($115 | 0) < ($118 | 0) & ($wk_max$160 | 0) > 0) {\n        $k$346 = 0;\n        $wk$347 = $19;\n        while (1) {\n         if ((HEAP32[$wk$347 >> 2] | 0) == ($118 | 0)) HEAP32[$wk$347 >> 2] = $115;\n         $k$346 = $k$346 + 1 | 0;\n         if (($k$346 | 0) >= ($wk_max$160 | 0)) {\n          $135 = $115;\n          break;\n         } else $wk$347 = $wk$347 + 4 | 0;\n        }\n       } else $135 = $115;\n      }\n      $137 = ($135 << 16 >> 16) * 7 | 0;\n      $139 = $labelInfo + 1310736 + ($137 + -7 << 2) | 0;\n      HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + 1;\n      $143 = $labelInfo + 1310736 + ($137 + -6 << 2) | 0;\n      HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $i$265;\n      $147 = $labelInfo + 1310736 + ($137 + -5 << 2) | 0;\n      HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + $j$076;\n      $wk_max$2 = $wk_max$160;\n     } else {\n      HEAP16[$pnt2$368 >> 1] = 0;\n      HEAP8[$dpnt$167 >> 0] = 0;\n      $wk_max$2 = $wk_max$160;\n     } while (0);\n     $i$265 = $i$265 + 1 | 0;\n     $229 = $pnt$169 + 8 | 0;\n     $230 = $pnt2$368 + 2 | 0;\n     $231 = $dpnt$167 + 1 | 0;\n     if (($i$265 | 0) >= ($12 | 0)) {\n      $dpnt$1$lcssa = $231;\n      $pnt$1$lcssa = $229;\n      $pnt2$3$lcssa = $230;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $dpnt$167 = $231;\n      $pnt$169 = $229;\n      $pnt2$368 = $230;\n      $wk_max$160 = $wk_max$2;\n     }\n    }\n   } else {\n    $dpnt$1$lcssa = $dpnt$078;\n    $pnt$1$lcssa = $pnt$080;\n    $pnt2$3$lcssa = $pnt2$279;\n    $wk_max$1$lcssa = $wk_max$075;\n   }\n   $j$076 = $j$076 + 1 | 0;\n   if (($j$076 | 0) >= ($3 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $dpnt$078 = $dpnt$1$lcssa + 2 | 0;\n    $pnt$080 = $pnt$1$lcssa + $$sum | 0;\n    $pnt2$279 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$075 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $238 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$342 = 1;\n   $j$143 = 1;\n   $wk$444 = $19;\n   while (1) {\n    $240 = HEAP32[$wk$444 >> 2] | 0;\n    if (($240 | 0) == ($i$342 | 0)) {\n     $246 = $j$143;\n     $j$2 = $j$143 + 1 | 0;\n    } else {\n     $246 = HEAP32[$labelInfo + 1179664 + ($240 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$143;\n    }\n    HEAP32[$wk$444 >> 2] = $246;\n    if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$342 = $i$342 + 1 | 0;\n     $j$143 = $j$2;\n     $wk$444 = $wk$444 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $250 = $labelInfo + 8 | 0;\n  $251 = $j$1$lcssa + -1 | 0;\n  HEAP32[$250 >> 2] = $251;\n  if (!$251) $$0 = 0; else {\n   _memset($238 | 0, 0, $251 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $251 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$440 = 0;\n    do {\n     $258 = $i$440 << 2;\n     HEAP32[$labelInfo + 131084 + ($258 << 2) >> 2] = $0;\n     HEAP32[$labelInfo + 131084 + (($258 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($258 | 2) << 2) >> 2] = $1;\n     HEAP32[$labelInfo + 131084 + (($258 | 3) << 2) >> 2] = 0;\n     $i$440 = $i$440 + 1 | 0;\n    } while (($i$440 | 0) < (HEAP32[$250 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$538 = 0;\n    do {\n     $272 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0;\n     $273 = $i$538 * 7 | 0;\n     $276 = $labelInfo + 12 + ($272 << 2) | 0;\n     HEAP32[$276 >> 2] = (HEAP32[$276 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($273 << 2) >> 2] | 0);\n     $283 = $272 << 1;\n     $284 = $labelInfo + 655376 + ($283 << 3) | 0;\n     HEAPF64[$284 >> 3] = +HEAPF64[$284 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($273 + 1 << 2) >> 2] | 0);\n     $292 = $labelInfo + 655376 + (($283 | 1) << 3) | 0;\n     HEAPF64[$292 >> 3] = +HEAPF64[$292 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($273 + 2 << 2) >> 2] | 0);\n     $295 = $272 << 2;\n     $296 = $labelInfo + 131084 + ($295 << 2) | 0;\n     $300 = HEAP32[$labelInfo + 1310736 + ($273 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$296 >> 2] | 0) > ($300 | 0)) HEAP32[$296 >> 2] = $300;\n     $303 = $labelInfo + 131084 + (($295 | 1) << 2) | 0;\n     $307 = HEAP32[$labelInfo + 1310736 + ($273 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$303 >> 2] | 0) < ($307 | 0)) HEAP32[$303 >> 2] = $307;\n     $310 = $labelInfo + 131084 + (($295 | 2) << 2) | 0;\n     $314 = HEAP32[$labelInfo + 1310736 + ($273 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$310 >> 2] | 0) > ($314 | 0)) HEAP32[$310 >> 2] = $314;\n     $317 = $labelInfo + 131084 + (($295 | 3) << 2) | 0;\n     $321 = HEAP32[$labelInfo + 1310736 + ($273 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$317 >> 2] | 0) < ($321 | 0)) HEAP32[$317 >> 2] = $321;\n     $i$538 = $i$538 + 1 | 0;\n    } while (($i$538 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$250 >> 2] | 0) > 0) {\n    $i$637 = 0;\n    do {\n     $325 = $labelInfo + 12 + ($i$637 << 2) | 0;\n     $328 = $i$637 << 1;\n     $329 = $labelInfo + 655376 + ($328 << 3) | 0;\n     HEAPF64[$329 >> 3] = +HEAPF64[$329 >> 3] / +(HEAP32[$325 >> 2] | 0);\n     $335 = $labelInfo + 655376 + (($328 | 1) << 3) | 0;\n     HEAPF64[$335 >> 3] = +HEAPF64[$335 >> 3] / +(HEAP32[$325 >> 2] | 0);\n     $i$637 = $i$637 + 1 | 0;\n    } while (($i$637 | 0) < (HEAP32[$250 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubEBI3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $100 = 0, $104 = 0, $11 = 0, $110 = 0, $115 = 0, $118 = 0, $12 = 0, $135 = 0, $137 = 0, $139 = 0, $143 = 0, $147 = 0, $150 = 0, $152 = 0, $156 = 0, $160 = 0, $164 = 0, $169 = 0, $171 = 0, $175 = 0, $179 = 0, $183 = 0, $189 = 0, $19 = 0, $192 = 0, $194 = 0, $198 = 0, $2 = 0, $20 = 0, $202 = 0, $206 = 0, $209 = 0, $21 = 0, $214 = 0, $229 = 0, $230 = 0, $231 = 0, $238 = 0, $240 = 0, $246 = 0, $250 = 0, $251 = 0, $258 = 0, $272 = 0, $273 = 0, $276 = 0, $283 = 0, $284 = 0, $292 = 0, $295 = 0, $296 = 0, $3 = 0, $300 = 0, $303 = 0, $307 = 0, $31 = 0, $310 = 0, $314 = 0, $317 = 0, $321 = 0, $325 = 0, $328 = 0, $329 = 0, $335 = 0, $44 = 0, $47 = 0, $49 = 0, $53 = 0, $57 = 0, $63 = 0, $64 = 0, $67 = 0, $68 = 0, $69 = 0, $72 = 0, $75 = 0, $92 = 0, $94 = 0, $96 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = ($xsize | 0) / 2 | 0;\n $1 = ($ysize | 0) / 2 | 0;\n $2 = HEAP32[$labelInfo >> 2] | 0;\n $3 = $1 + -1 | 0;\n if (($xsize | 0) > 1) {\n  $i$089 = 0;\n  $pnt1$091 = $2;\n  $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$090 >> 1] = 0;\n   HEAP16[$pnt1$091 >> 1] = 0;\n   $i$089 = $i$089 + 1 | 0;\n   if (($i$089 | 0) >= ($0 | 0)) break; else {\n    $pnt1$091 = $pnt1$091 + 2 | 0;\n    $pnt2$090 = $pnt2$090 + 2 | 0;\n   }\n  }\n }\n $11 = $labelingThresh * 3 | 0;\n $12 = $0 + -1 | 0;\n if (($ysize | 0) > 1) {\n  $i$183 = 0;\n  $pnt1$185 = $2;\n  $pnt2$184 = $2 + ($12 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$184 >> 1] = 0;\n   HEAP16[$pnt1$185 >> 1] = 0;\n   $i$183 = $i$183 + 1 | 0;\n   if (($i$183 | 0) >= ($1 | 0)) break; else {\n    $pnt1$185 = $pnt1$185 + ($0 << 1) | 0;\n    $pnt2$184 = $pnt2$184 + ($0 << 1) | 0;\n   }\n  }\n }\n $19 = $labelInfo + 1179664 | 0;\n $20 = $0 + 1 | 0;\n $21 = 0 - $0 | 0;\n $$sum1 = 1 - $0 | 0;\n $$sum2 = ~$0;\n $$sum = ($xsize << 2) + 16 | 0;\n L11 : do if (($3 | 0) > 1) {\n  $31 = ($12 | 0) > 1;\n  $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $20 | 0;\n  $j$076 = 1;\n  $pnt$080 = $image + (($xsize << 3) + 8) | 0;\n  $pnt2$279 = $2 + ($20 << 1) | 0;\n  $wk_max$075 = 0;\n  L13 : while (1) {\n   if ($31) {\n    $dpnt$167 = $dpnt$078;\n    $i$265 = 1;\n    $pnt$169 = $pnt$080;\n    $pnt2$368 = $pnt2$279;\n    $wk_max$160 = $wk_max$075;\n    while (1) {\n     do if (((HEAPU8[$pnt$169 + 1 >> 0] | 0) + (HEAPU8[$pnt$169 >> 0] | 0) + (HEAPU8[$pnt$169 + 2 >> 0] | 0) | 0) > ($11 | 0)) {\n      HEAP16[$pnt2$368 >> 1] = 0;\n      HEAP8[$dpnt$167 >> 0] = 0;\n      $wk_max$2 = $wk_max$160;\n     } else {\n      HEAP8[$dpnt$167 >> 0] = -1;\n      $44 = HEAP16[$pnt2$368 + ($21 << 1) >> 1] | 0;\n      if ($44 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$368 >> 1] = $44;\n       $47 = ($44 << 16 >> 16) * 7 | 0;\n       $49 = $labelInfo + 1310736 + ($47 + -7 << 2) | 0;\n       HEAP32[$49 >> 2] = (HEAP32[$49 >> 2] | 0) + 1;\n       $53 = $labelInfo + 1310736 + ($47 + -6 << 2) | 0;\n       HEAP32[$53 >> 2] = (HEAP32[$53 >> 2] | 0) + $i$265;\n       $57 = $labelInfo + 1310736 + ($47 + -5 << 2) | 0;\n       HEAP32[$57 >> 2] = (HEAP32[$57 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($47 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $63 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0;\n      $64 = $63 << 16 >> 16;\n      $67 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0;\n      $68 = $67 << 16 >> 16;\n      $69 = $67 << 16 >> 16 > 0;\n      if ($63 << 16 >> 16 <= 0) {\n       if ($69) {\n        HEAP16[$pnt2$368 >> 1] = $67;\n        $169 = $68 * 7 | 0;\n        $171 = $labelInfo + 1310736 + ($169 + -7 << 2) | 0;\n        HEAP32[$171 >> 2] = (HEAP32[$171 >> 2] | 0) + 1;\n        $175 = $labelInfo + 1310736 + ($169 + -6 << 2) | 0;\n        HEAP32[$175 >> 2] = (HEAP32[$175 >> 2] | 0) + $i$265;\n        $179 = $labelInfo + 1310736 + ($169 + -5 << 2) | 0;\n        HEAP32[$179 >> 2] = (HEAP32[$179 >> 2] | 0) + $j$076;\n        $183 = $labelInfo + 1310736 + ($169 + -3 << 2) | 0;\n        if ((HEAP32[$183 >> 2] | 0) < ($i$265 | 0)) HEAP32[$183 >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($169 + -1 << 2) >> 2] = $j$076;\n        $wk_max$2 = $wk_max$160;\n        break;\n       }\n       $189 = HEAP16[$pnt2$368 + -2 >> 1] | 0;\n       if ($189 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$368 >> 1] = $189;\n        $192 = ($189 << 16 >> 16) * 7 | 0;\n        $194 = $labelInfo + 1310736 + ($192 + -7 << 2) | 0;\n        HEAP32[$194 >> 2] = (HEAP32[$194 >> 2] | 0) + 1;\n        $198 = $labelInfo + 1310736 + ($192 + -6 << 2) | 0;\n        HEAP32[$198 >> 2] = (HEAP32[$198 >> 2] | 0) + $i$265;\n        $202 = $labelInfo + 1310736 + ($192 + -5 << 2) | 0;\n        HEAP32[$202 >> 2] = (HEAP32[$202 >> 2] | 0) + $j$076;\n        $206 = $labelInfo + 1310736 + ($192 + -3 << 2) | 0;\n        if ((HEAP32[$206 >> 2] | 0) >= ($i$265 | 0)) {\n         $wk_max$2 = $wk_max$160;\n         break;\n        }\n        HEAP32[$206 >> 2] = $i$265;\n        $wk_max$2 = $wk_max$160;\n        break;\n       } else {\n        $209 = $wk_max$160 + 1 | 0;\n        if (($wk_max$160 | 0) > 32767) break L13;\n        HEAP16[$pnt2$368 >> 1] = $209;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $209 << 16 >> 16;\n        $214 = $wk_max$160 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($214 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($214 + 1 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($214 + 2 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($214 + 3 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($214 + 4 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($214 + 5 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($214 + 6 << 2) >> 2] = $j$076;\n        $wk_max$2 = $209;\n        break;\n       }\n      }\n      if ($69) {\n       $72 = HEAP32[$labelInfo + 1179664 + ($64 + -1 << 2) >> 2] | 0;\n       $75 = HEAP32[$labelInfo + 1179664 + ($68 + -1 << 2) >> 2] | 0;\n       if (($72 | 0) > ($75 | 0)) {\n        HEAP16[$pnt2$368 >> 1] = $75;\n        if (($wk_max$160 | 0) > 0) {\n         $k$056 = 0;\n         $wk$057 = $19;\n         while (1) {\n          if ((HEAP32[$wk$057 >> 2] | 0) == ($72 | 0)) HEAP32[$wk$057 >> 2] = $75;\n          $k$056 = $k$056 + 1 | 0;\n          if (($k$056 | 0) >= ($wk_max$160 | 0)) {\n           $92 = $75;\n           break;\n          } else $wk$057 = $wk$057 + 4 | 0;\n         }\n        } else $92 = $75;\n       } else {\n        HEAP16[$pnt2$368 >> 1] = $72;\n        if (($72 | 0) < ($75 | 0) & ($wk_max$160 | 0) > 0) {\n         $k$153 = 0;\n         $wk$154 = $19;\n         while (1) {\n          if ((HEAP32[$wk$154 >> 2] | 0) == ($75 | 0)) HEAP32[$wk$154 >> 2] = $72;\n          $k$153 = $k$153 + 1 | 0;\n          if (($k$153 | 0) >= ($wk_max$160 | 0)) {\n           $92 = $72;\n           break;\n          } else $wk$154 = $wk$154 + 4 | 0;\n         }\n        } else $92 = $72;\n       }\n       $94 = ($92 << 16 >> 16) * 7 | 0;\n       $96 = $labelInfo + 1310736 + ($94 + -7 << 2) | 0;\n       HEAP32[$96 >> 2] = (HEAP32[$96 >> 2] | 0) + 1;\n       $100 = $labelInfo + 1310736 + ($94 + -6 << 2) | 0;\n       HEAP32[$100 >> 2] = (HEAP32[$100 >> 2] | 0) + $i$265;\n       $104 = $labelInfo + 1310736 + ($94 + -5 << 2) | 0;\n       HEAP32[$104 >> 2] = (HEAP32[$104 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($94 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $110 = HEAP16[$pnt2$368 + -2 >> 1] | 0;\n      if ($110 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$368 >> 1] = $63;\n       $150 = $64 * 7 | 0;\n       $152 = $labelInfo + 1310736 + ($150 + -7 << 2) | 0;\n       HEAP32[$152 >> 2] = (HEAP32[$152 >> 2] | 0) + 1;\n       $156 = $labelInfo + 1310736 + ($150 + -6 << 2) | 0;\n       HEAP32[$156 >> 2] = (HEAP32[$156 >> 2] | 0) + $i$265;\n       $160 = $labelInfo + 1310736 + ($150 + -5 << 2) | 0;\n       HEAP32[$160 >> 2] = (HEAP32[$160 >> 2] | 0) + $j$076;\n       $164 = $labelInfo + 1310736 + ($150 + -4 << 2) | 0;\n       if ((HEAP32[$164 >> 2] | 0) > ($i$265 | 0)) HEAP32[$164 >> 2] = $i$265;\n       HEAP32[$labelInfo + 1310736 + ($150 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $115 = HEAP32[$labelInfo + 1179664 + ($64 + -1 << 2) >> 2] | 0;\n      $118 = HEAP32[$labelInfo + 1179664 + (($110 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($115 | 0) > ($118 | 0)) {\n       HEAP16[$pnt2$368 >> 1] = $118;\n       if (($wk_max$160 | 0) > 0) {\n        $k$249 = 0;\n        $wk$250 = $19;\n        while (1) {\n         if ((HEAP32[$wk$250 >> 2] | 0) == ($115 | 0)) HEAP32[$wk$250 >> 2] = $118;\n         $k$249 = $k$249 + 1 | 0;\n         if (($k$249 | 0) >= ($wk_max$160 | 0)) {\n          $135 = $118;\n          break;\n         } else $wk$250 = $wk$250 + 4 | 0;\n        }\n       } else $135 = $118;\n      } else {\n       HEAP16[$pnt2$368 >> 1] = $115;\n       if (($115 | 0) < ($118 | 0) & ($wk_max$160 | 0) > 0) {\n        $k$346 = 0;\n        $wk$347 = $19;\n        while (1) {\n         if ((HEAP32[$wk$347 >> 2] | 0) == ($118 | 0)) HEAP32[$wk$347 >> 2] = $115;\n         $k$346 = $k$346 + 1 | 0;\n         if (($k$346 | 0) >= ($wk_max$160 | 0)) {\n          $135 = $115;\n          break;\n         } else $wk$347 = $wk$347 + 4 | 0;\n        }\n       } else $135 = $115;\n      }\n      $137 = ($135 << 16 >> 16) * 7 | 0;\n      $139 = $labelInfo + 1310736 + ($137 + -7 << 2) | 0;\n      HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + 1;\n      $143 = $labelInfo + 1310736 + ($137 + -6 << 2) | 0;\n      HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $i$265;\n      $147 = $labelInfo + 1310736 + ($137 + -5 << 2) | 0;\n      HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + $j$076;\n      $wk_max$2 = $wk_max$160;\n     } while (0);\n     $i$265 = $i$265 + 1 | 0;\n     $229 = $pnt$169 + 8 | 0;\n     $230 = $pnt2$368 + 2 | 0;\n     $231 = $dpnt$167 + 1 | 0;\n     if (($i$265 | 0) >= ($12 | 0)) {\n      $dpnt$1$lcssa = $231;\n      $pnt$1$lcssa = $229;\n      $pnt2$3$lcssa = $230;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $dpnt$167 = $231;\n      $pnt$169 = $229;\n      $pnt2$368 = $230;\n      $wk_max$160 = $wk_max$2;\n     }\n    }\n   } else {\n    $dpnt$1$lcssa = $dpnt$078;\n    $pnt$1$lcssa = $pnt$080;\n    $pnt2$3$lcssa = $pnt2$279;\n    $wk_max$1$lcssa = $wk_max$075;\n   }\n   $j$076 = $j$076 + 1 | 0;\n   if (($j$076 | 0) >= ($3 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $dpnt$078 = $dpnt$1$lcssa + 2 | 0;\n    $pnt$080 = $pnt$1$lcssa + $$sum | 0;\n    $pnt2$279 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$075 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $238 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$342 = 1;\n   $j$143 = 1;\n   $wk$444 = $19;\n   while (1) {\n    $240 = HEAP32[$wk$444 >> 2] | 0;\n    if (($240 | 0) == ($i$342 | 0)) {\n     $246 = $j$143;\n     $j$2 = $j$143 + 1 | 0;\n    } else {\n     $246 = HEAP32[$labelInfo + 1179664 + ($240 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$143;\n    }\n    HEAP32[$wk$444 >> 2] = $246;\n    if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$342 = $i$342 + 1 | 0;\n     $j$143 = $j$2;\n     $wk$444 = $wk$444 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $250 = $labelInfo + 8 | 0;\n  $251 = $j$1$lcssa + -1 | 0;\n  HEAP32[$250 >> 2] = $251;\n  if (!$251) $$0 = 0; else {\n   _memset($238 | 0, 0, $251 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $251 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$440 = 0;\n    do {\n     $258 = $i$440 << 2;\n     HEAP32[$labelInfo + 131084 + ($258 << 2) >> 2] = $0;\n     HEAP32[$labelInfo + 131084 + (($258 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($258 | 2) << 2) >> 2] = $1;\n     HEAP32[$labelInfo + 131084 + (($258 | 3) << 2) >> 2] = 0;\n     $i$440 = $i$440 + 1 | 0;\n    } while (($i$440 | 0) < (HEAP32[$250 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$538 = 0;\n    do {\n     $272 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0;\n     $273 = $i$538 * 7 | 0;\n     $276 = $labelInfo + 12 + ($272 << 2) | 0;\n     HEAP32[$276 >> 2] = (HEAP32[$276 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($273 << 2) >> 2] | 0);\n     $283 = $272 << 1;\n     $284 = $labelInfo + 655376 + ($283 << 3) | 0;\n     HEAPF64[$284 >> 3] = +HEAPF64[$284 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($273 + 1 << 2) >> 2] | 0);\n     $292 = $labelInfo + 655376 + (($283 | 1) << 3) | 0;\n     HEAPF64[$292 >> 3] = +HEAPF64[$292 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($273 + 2 << 2) >> 2] | 0);\n     $295 = $272 << 2;\n     $296 = $labelInfo + 131084 + ($295 << 2) | 0;\n     $300 = HEAP32[$labelInfo + 1310736 + ($273 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$296 >> 2] | 0) > ($300 | 0)) HEAP32[$296 >> 2] = $300;\n     $303 = $labelInfo + 131084 + (($295 | 1) << 2) | 0;\n     $307 = HEAP32[$labelInfo + 1310736 + ($273 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$303 >> 2] | 0) < ($307 | 0)) HEAP32[$303 >> 2] = $307;\n     $310 = $labelInfo + 131084 + (($295 | 2) << 2) | 0;\n     $314 = HEAP32[$labelInfo + 1310736 + ($273 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$310 >> 2] | 0) > ($314 | 0)) HEAP32[$310 >> 2] = $314;\n     $317 = $labelInfo + 131084 + (($295 | 3) << 2) | 0;\n     $321 = HEAP32[$labelInfo + 1310736 + ($273 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$317 >> 2] | 0) < ($321 | 0)) HEAP32[$317 >> 2] = $321;\n     $i$538 = $i$538 + 1 | 0;\n    } while (($i$538 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$250 >> 2] | 0) > 0) {\n    $i$637 = 0;\n    do {\n     $325 = $labelInfo + 12 + ($i$637 << 2) | 0;\n     $328 = $i$637 << 1;\n     $329 = $labelInfo + 655376 + ($328 << 3) | 0;\n     HEAPF64[$329 >> 3] = +HEAPF64[$329 >> 3] / +(HEAP32[$325 >> 2] | 0);\n     $335 = $labelInfo + 655376 + (($328 | 1) << 3) | 0;\n     HEAPF64[$335 >> 3] = +HEAPF64[$335 >> 3] / +(HEAP32[$325 >> 2] | 0);\n     $i$637 = $i$637 + 1 | 0;\n    } while (($i$637 | 0) < (HEAP32[$250 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubEWR3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $102 = 0, $106 = 0, $112 = 0, $117 = 0, $120 = 0, $137 = 0, $139 = 0, $141 = 0, $145 = 0, $149 = 0, $152 = 0, $154 = 0, $158 = 0, $162 = 0, $166 = 0, $17 = 0, $171 = 0, $173 = 0, $177 = 0, $18 = 0, $181 = 0, $185 = 0, $19 = 0, $191 = 0, $194 = 0, $196 = 0, $200 = 0, $204 = 0, $208 = 0, $211 = 0, $216 = 0, $231 = 0, $232 = 0, $233 = 0, $240 = 0, $242 = 0, $248 = 0, $252 = 0, $253 = 0, $260 = 0, $27 = 0, $274 = 0, $275 = 0, $278 = 0, $285 = 0, $286 = 0, $29 = 0, $294 = 0, $297 = 0, $298 = 0, $302 = 0, $305 = 0, $309 = 0, $312 = 0, $316 = 0, $319 = 0, $323 = 0, $327 = 0, $330 = 0, $331 = 0, $337 = 0, $35 = 0, $46 = 0, $49 = 0, $51 = 0, $55 = 0, $59 = 0, $65 = 0, $66 = 0, $69 = 0, $70 = 0, $71 = 0, $74 = 0, $77 = 0, $9 = 0, $94 = 0, $96 = 0, $98 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$088 = 0;\n  $pnt1$090 = $0;\n  $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$089 >> 1] = 0;\n   HEAP16[$pnt1$090 >> 1] = 0;\n   $i$088 = $i$088 + 1 | 0;\n   if (($i$088 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$090 = $pnt1$090 + 2 | 0;\n    $pnt2$089 = $pnt2$089 + 2 | 0;\n   }\n  }\n }\n $9 = $labelingThresh * 3 | 0;\n $10 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$182 = 0;\n  $pnt1$184 = $0;\n  $pnt2$183 = $0 + ($10 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$183 >> 1] = 0;\n   HEAP16[$pnt1$184 >> 1] = 0;\n   $i$182 = $i$182 + 1 | 0;\n   if (($i$182 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;\n    $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0;\n   }\n  }\n }\n $17 = $labelInfo + 1179664 | 0;\n $18 = $xsize + 1 | 0;\n $19 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $27 = ($10 | 0) > 1;\n  $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $18 | 0;\n  $j$075 = 1;\n  $pnt$079 = $image + ($18 << 1) | 0;\n  $pnt2$278 = $0 + ($18 << 1) | 0;\n  $wk_max$074 = 0;\n  L13 : while (1) {\n   if ($27) {\n    $dpnt$166 = $dpnt$077;\n    $i$264 = 1;\n    $pnt$168 = $pnt$079;\n    $pnt2$367 = $pnt2$278;\n    $wk_max$159 = $wk_max$074;\n    while (1) {\n     $29 = HEAPU8[$pnt$168 >> 0] | 0;\n     $35 = HEAPU8[$pnt$168 + 1 >> 0] | 0;\n     do if ((($29 & 248) + 12 + ($29 << 5 & 224) + ($35 >>> 3 & 24) + ($35 << 2 & 248) | 0) > ($9 | 0)) {\n      HEAP8[$dpnt$166 >> 0] = -1;\n      $46 = HEAP16[$pnt2$367 + ($19 << 1) >> 1] | 0;\n      if ($46 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$367 >> 1] = $46;\n       $49 = ($46 << 16 >> 16) * 7 | 0;\n       $51 = $labelInfo + 1310736 + ($49 + -7 << 2) | 0;\n       HEAP32[$51 >> 2] = (HEAP32[$51 >> 2] | 0) + 1;\n       $55 = $labelInfo + 1310736 + ($49 + -6 << 2) | 0;\n       HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + $i$264;\n       $59 = $labelInfo + 1310736 + ($49 + -5 << 2) | 0;\n       HEAP32[$59 >> 2] = (HEAP32[$59 >> 2] | 0) + $j$075;\n       HEAP32[$labelInfo + 1310736 + ($49 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $65 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0;\n      $66 = $65 << 16 >> 16;\n      $69 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0;\n      $70 = $69 << 16 >> 16;\n      $71 = $69 << 16 >> 16 > 0;\n      if ($65 << 16 >> 16 <= 0) {\n       if ($71) {\n        HEAP16[$pnt2$367 >> 1] = $69;\n        $171 = $70 * 7 | 0;\n        $173 = $labelInfo + 1310736 + ($171 + -7 << 2) | 0;\n        HEAP32[$173 >> 2] = (HEAP32[$173 >> 2] | 0) + 1;\n        $177 = $labelInfo + 1310736 + ($171 + -6 << 2) | 0;\n        HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + $i$264;\n        $181 = $labelInfo + 1310736 + ($171 + -5 << 2) | 0;\n        HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + $j$075;\n        $185 = $labelInfo + 1310736 + ($171 + -3 << 2) | 0;\n        if ((HEAP32[$185 >> 2] | 0) < ($i$264 | 0)) HEAP32[$185 >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($171 + -1 << 2) >> 2] = $j$075;\n        $wk_max$2 = $wk_max$159;\n        break;\n       }\n       $191 = HEAP16[$pnt2$367 + -2 >> 1] | 0;\n       if ($191 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$367 >> 1] = $191;\n        $194 = ($191 << 16 >> 16) * 7 | 0;\n        $196 = $labelInfo + 1310736 + ($194 + -7 << 2) | 0;\n        HEAP32[$196 >> 2] = (HEAP32[$196 >> 2] | 0) + 1;\n        $200 = $labelInfo + 1310736 + ($194 + -6 << 2) | 0;\n        HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + $i$264;\n        $204 = $labelInfo + 1310736 + ($194 + -5 << 2) | 0;\n        HEAP32[$204 >> 2] = (HEAP32[$204 >> 2] | 0) + $j$075;\n        $208 = $labelInfo + 1310736 + ($194 + -3 << 2) | 0;\n        if ((HEAP32[$208 >> 2] | 0) >= ($i$264 | 0)) {\n         $wk_max$2 = $wk_max$159;\n         break;\n        }\n        HEAP32[$208 >> 2] = $i$264;\n        $wk_max$2 = $wk_max$159;\n        break;\n       } else {\n        $211 = $wk_max$159 + 1 | 0;\n        if (($wk_max$159 | 0) > 32767) break L13;\n        HEAP16[$pnt2$367 >> 1] = $211;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $211 << 16 >> 16;\n        $216 = $wk_max$159 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($216 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($216 + 1 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($216 + 2 << 2) >> 2] = $j$075;\n        HEAP32[$labelInfo + 1310736 + ($216 + 3 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($216 + 4 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($216 + 5 << 2) >> 2] = $j$075;\n        HEAP32[$labelInfo + 1310736 + ($216 + 6 << 2) >> 2] = $j$075;\n        $wk_max$2 = $211;\n        break;\n       }\n      }\n      if ($71) {\n       $74 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0;\n       $77 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0;\n       if (($74 | 0) > ($77 | 0)) {\n        HEAP16[$pnt2$367 >> 1] = $77;\n        if (($wk_max$159 | 0) > 0) {\n         $k$055 = 0;\n         $wk$056 = $17;\n         while (1) {\n          if ((HEAP32[$wk$056 >> 2] | 0) == ($74 | 0)) HEAP32[$wk$056 >> 2] = $77;\n          $k$055 = $k$055 + 1 | 0;\n          if (($k$055 | 0) >= ($wk_max$159 | 0)) {\n           $94 = $77;\n           break;\n          } else $wk$056 = $wk$056 + 4 | 0;\n         }\n        } else $94 = $77;\n       } else {\n        HEAP16[$pnt2$367 >> 1] = $74;\n        if (($74 | 0) < ($77 | 0) & ($wk_max$159 | 0) > 0) {\n         $k$152 = 0;\n         $wk$153 = $17;\n         while (1) {\n          if ((HEAP32[$wk$153 >> 2] | 0) == ($77 | 0)) HEAP32[$wk$153 >> 2] = $74;\n          $k$152 = $k$152 + 1 | 0;\n          if (($k$152 | 0) >= ($wk_max$159 | 0)) {\n           $94 = $74;\n           break;\n          } else $wk$153 = $wk$153 + 4 | 0;\n         }\n        } else $94 = $74;\n       }\n       $96 = ($94 << 16 >> 16) * 7 | 0;\n       $98 = $labelInfo + 1310736 + ($96 + -7 << 2) | 0;\n       HEAP32[$98 >> 2] = (HEAP32[$98 >> 2] | 0) + 1;\n       $102 = $labelInfo + 1310736 + ($96 + -6 << 2) | 0;\n       HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + $i$264;\n       $106 = $labelInfo + 1310736 + ($96 + -5 << 2) | 0;\n       HEAP32[$106 >> 2] = (HEAP32[$106 >> 2] | 0) + $j$075;\n       HEAP32[$labelInfo + 1310736 + ($96 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $112 = HEAP16[$pnt2$367 + -2 >> 1] | 0;\n      if ($112 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$367 >> 1] = $65;\n       $152 = $66 * 7 | 0;\n       $154 = $labelInfo + 1310736 + ($152 + -7 << 2) | 0;\n       HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + 1;\n       $158 = $labelInfo + 1310736 + ($152 + -6 << 2) | 0;\n       HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + $i$264;\n       $162 = $labelInfo + 1310736 + ($152 + -5 << 2) | 0;\n       HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $j$075;\n       $166 = $labelInfo + 1310736 + ($152 + -4 << 2) | 0;\n       if ((HEAP32[$166 >> 2] | 0) > ($i$264 | 0)) HEAP32[$166 >> 2] = $i$264;\n       HEAP32[$labelInfo + 1310736 + ($152 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $117 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0;\n      $120 = HEAP32[$labelInfo + 1179664 + (($112 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($117 | 0) > ($120 | 0)) {\n       HEAP16[$pnt2$367 >> 1] = $120;\n       if (($wk_max$159 | 0) > 0) {\n        $k$248 = 0;\n        $wk$249 = $17;\n        while (1) {\n         if ((HEAP32[$wk$249 >> 2] | 0) == ($117 | 0)) HEAP32[$wk$249 >> 2] = $120;\n         $k$248 = $k$248 + 1 | 0;\n         if (($k$248 | 0) >= ($wk_max$159 | 0)) {\n          $137 = $120;\n          break;\n         } else $wk$249 = $wk$249 + 4 | 0;\n        }\n       } else $137 = $120;\n      } else {\n       HEAP16[$pnt2$367 >> 1] = $117;\n       if (($117 | 0) < ($120 | 0) & ($wk_max$159 | 0) > 0) {\n        $k$345 = 0;\n        $wk$346 = $17;\n        while (1) {\n         if ((HEAP32[$wk$346 >> 2] | 0) == ($120 | 0)) HEAP32[$wk$346 >> 2] = $117;\n         $k$345 = $k$345 + 1 | 0;\n         if (($k$345 | 0) >= ($wk_max$159 | 0)) {\n          $137 = $117;\n          break;\n         } else $wk$346 = $wk$346 + 4 | 0;\n        }\n       } else $137 = $117;\n      }\n      $139 = ($137 << 16 >> 16) * 7 | 0;\n      $141 = $labelInfo + 1310736 + ($139 + -7 << 2) | 0;\n      HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + 1;\n      $145 = $labelInfo + 1310736 + ($139 + -6 << 2) | 0;\n      HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $i$264;\n      $149 = $labelInfo + 1310736 + ($139 + -5 << 2) | 0;\n      HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $j$075;\n      $wk_max$2 = $wk_max$159;\n     } else {\n      HEAP16[$pnt2$367 >> 1] = 0;\n      HEAP8[$dpnt$166 >> 0] = 0;\n      $wk_max$2 = $wk_max$159;\n     } while (0);\n     $i$264 = $i$264 + 1 | 0;\n     $231 = $pnt$168 + 2 | 0;\n     $232 = $pnt2$367 + 2 | 0;\n     $233 = $dpnt$166 + 1 | 0;\n     if (($i$264 | 0) >= ($10 | 0)) {\n      $dpnt$1$lcssa = $233;\n      $pnt$1$lcssa = $231;\n      $pnt2$3$lcssa = $232;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $dpnt$166 = $233;\n      $pnt$168 = $231;\n      $pnt2$367 = $232;\n      $wk_max$159 = $wk_max$2;\n     }\n    }\n   } else {\n    $dpnt$1$lcssa = $dpnt$077;\n    $pnt$1$lcssa = $pnt$079;\n    $pnt2$3$lcssa = $pnt2$278;\n    $wk_max$1$lcssa = $wk_max$074;\n   }\n   $j$075 = $j$075 + 1 | 0;\n   if (($j$075 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $dpnt$077 = $dpnt$1$lcssa + 2 | 0;\n    $pnt$079 = $pnt$1$lcssa + 4 | 0;\n    $pnt2$278 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$074 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $240 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$341 = 1;\n   $j$142 = 1;\n   $wk$443 = $17;\n   while (1) {\n    $242 = HEAP32[$wk$443 >> 2] | 0;\n    if (($242 | 0) == ($i$341 | 0)) {\n     $248 = $j$142;\n     $j$2 = $j$142 + 1 | 0;\n    } else {\n     $248 = HEAP32[$labelInfo + 1179664 + ($242 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$142;\n    }\n    HEAP32[$wk$443 >> 2] = $248;\n    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$341 = $i$341 + 1 | 0;\n     $j$142 = $j$2;\n     $wk$443 = $wk$443 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $252 = $labelInfo + 8 | 0;\n  $253 = $j$1$lcssa + -1 | 0;\n  HEAP32[$252 >> 2] = $253;\n  if (!$253) $$0 = 0; else {\n   _memset($240 | 0, 0, $253 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $253 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$439 = 0;\n    do {\n     $260 = $i$439 << 2;\n     HEAP32[$labelInfo + 131084 + ($260 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($260 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($260 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($260 | 3) << 2) >> 2] = 0;\n     $i$439 = $i$439 + 1 | 0;\n    } while (($i$439 | 0) < (HEAP32[$252 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$537 = 0;\n    do {\n     $274 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;\n     $275 = $i$537 * 7 | 0;\n     $278 = $labelInfo + 12 + ($274 << 2) | 0;\n     HEAP32[$278 >> 2] = (HEAP32[$278 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($275 << 2) >> 2] | 0);\n     $285 = $274 << 1;\n     $286 = $labelInfo + 655376 + ($285 << 3) | 0;\n     HEAPF64[$286 >> 3] = +HEAPF64[$286 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($275 + 1 << 2) >> 2] | 0);\n     $294 = $labelInfo + 655376 + (($285 | 1) << 3) | 0;\n     HEAPF64[$294 >> 3] = +HEAPF64[$294 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($275 + 2 << 2) >> 2] | 0);\n     $297 = $274 << 2;\n     $298 = $labelInfo + 131084 + ($297 << 2) | 0;\n     $302 = HEAP32[$labelInfo + 1310736 + ($275 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$298 >> 2] | 0) > ($302 | 0)) HEAP32[$298 >> 2] = $302;\n     $305 = $labelInfo + 131084 + (($297 | 1) << 2) | 0;\n     $309 = HEAP32[$labelInfo + 1310736 + ($275 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$305 >> 2] | 0) < ($309 | 0)) HEAP32[$305 >> 2] = $309;\n     $312 = $labelInfo + 131084 + (($297 | 2) << 2) | 0;\n     $316 = HEAP32[$labelInfo + 1310736 + ($275 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$312 >> 2] | 0) > ($316 | 0)) HEAP32[$312 >> 2] = $316;\n     $319 = $labelInfo + 131084 + (($297 | 3) << 2) | 0;\n     $323 = HEAP32[$labelInfo + 1310736 + ($275 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$319 >> 2] | 0) < ($323 | 0)) HEAP32[$319 >> 2] = $323;\n     $i$537 = $i$537 + 1 | 0;\n    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$252 >> 2] | 0) > 0) {\n    $i$636 = 0;\n    do {\n     $327 = $labelInfo + 12 + ($i$636 << 2) | 0;\n     $330 = $i$636 << 1;\n     $331 = $labelInfo + 655376 + ($330 << 3) | 0;\n     HEAPF64[$331 >> 3] = +HEAPF64[$331 >> 3] / +(HEAP32[$327 >> 2] | 0);\n     $337 = $labelInfo + 655376 + (($330 | 1) << 3) | 0;\n     HEAPF64[$337 >> 3] = +HEAPF64[$337 >> 3] / +(HEAP32[$327 >> 2] | 0);\n     $i$636 = $i$636 + 1 | 0;\n    } while (($i$636 | 0) < (HEAP32[$252 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubEBR3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $102 = 0, $106 = 0, $112 = 0, $117 = 0, $120 = 0, $137 = 0, $139 = 0, $141 = 0, $145 = 0, $149 = 0, $152 = 0, $154 = 0, $158 = 0, $162 = 0, $166 = 0, $17 = 0, $171 = 0, $173 = 0, $177 = 0, $18 = 0, $181 = 0, $185 = 0, $19 = 0, $191 = 0, $194 = 0, $196 = 0, $200 = 0, $204 = 0, $208 = 0, $211 = 0, $216 = 0, $231 = 0, $232 = 0, $233 = 0, $240 = 0, $242 = 0, $248 = 0, $252 = 0, $253 = 0, $260 = 0, $27 = 0, $274 = 0, $275 = 0, $278 = 0, $285 = 0, $286 = 0, $29 = 0, $294 = 0, $297 = 0, $298 = 0, $302 = 0, $305 = 0, $309 = 0, $312 = 0, $316 = 0, $319 = 0, $323 = 0, $327 = 0, $330 = 0, $331 = 0, $337 = 0, $35 = 0, $46 = 0, $49 = 0, $51 = 0, $55 = 0, $59 = 0, $65 = 0, $66 = 0, $69 = 0, $70 = 0, $71 = 0, $74 = 0, $77 = 0, $9 = 0, $94 = 0, $96 = 0, $98 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$088 = 0;\n  $pnt1$090 = $0;\n  $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$089 >> 1] = 0;\n   HEAP16[$pnt1$090 >> 1] = 0;\n   $i$088 = $i$088 + 1 | 0;\n   if (($i$088 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$090 = $pnt1$090 + 2 | 0;\n    $pnt2$089 = $pnt2$089 + 2 | 0;\n   }\n  }\n }\n $9 = $labelingThresh * 3 | 0;\n $10 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$182 = 0;\n  $pnt1$184 = $0;\n  $pnt2$183 = $0 + ($10 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$183 >> 1] = 0;\n   HEAP16[$pnt1$184 >> 1] = 0;\n   $i$182 = $i$182 + 1 | 0;\n   if (($i$182 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;\n    $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0;\n   }\n  }\n }\n $17 = $labelInfo + 1179664 | 0;\n $18 = $xsize + 1 | 0;\n $19 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $27 = ($10 | 0) > 1;\n  $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $18 | 0;\n  $j$075 = 1;\n  $pnt$079 = $image + ($18 << 1) | 0;\n  $pnt2$278 = $0 + ($18 << 1) | 0;\n  $wk_max$074 = 0;\n  L13 : while (1) {\n   if ($27) {\n    $dpnt$166 = $dpnt$077;\n    $i$264 = 1;\n    $pnt$168 = $pnt$079;\n    $pnt2$367 = $pnt2$278;\n    $wk_max$159 = $wk_max$074;\n    while (1) {\n     $29 = HEAPU8[$pnt$168 >> 0] | 0;\n     $35 = HEAPU8[$pnt$168 + 1 >> 0] | 0;\n     do if ((($29 & 248) + 12 + ($29 << 5 & 224) + ($35 >>> 3 & 24) + ($35 << 2 & 248) | 0) > ($9 | 0)) {\n      HEAP16[$pnt2$367 >> 1] = 0;\n      HEAP8[$dpnt$166 >> 0] = 0;\n      $wk_max$2 = $wk_max$159;\n     } else {\n      HEAP8[$dpnt$166 >> 0] = -1;\n      $46 = HEAP16[$pnt2$367 + ($19 << 1) >> 1] | 0;\n      if ($46 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$367 >> 1] = $46;\n       $49 = ($46 << 16 >> 16) * 7 | 0;\n       $51 = $labelInfo + 1310736 + ($49 + -7 << 2) | 0;\n       HEAP32[$51 >> 2] = (HEAP32[$51 >> 2] | 0) + 1;\n       $55 = $labelInfo + 1310736 + ($49 + -6 << 2) | 0;\n       HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + $i$264;\n       $59 = $labelInfo + 1310736 + ($49 + -5 << 2) | 0;\n       HEAP32[$59 >> 2] = (HEAP32[$59 >> 2] | 0) + $j$075;\n       HEAP32[$labelInfo + 1310736 + ($49 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $65 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0;\n      $66 = $65 << 16 >> 16;\n      $69 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0;\n      $70 = $69 << 16 >> 16;\n      $71 = $69 << 16 >> 16 > 0;\n      if ($65 << 16 >> 16 <= 0) {\n       if ($71) {\n        HEAP16[$pnt2$367 >> 1] = $69;\n        $171 = $70 * 7 | 0;\n        $173 = $labelInfo + 1310736 + ($171 + -7 << 2) | 0;\n        HEAP32[$173 >> 2] = (HEAP32[$173 >> 2] | 0) + 1;\n        $177 = $labelInfo + 1310736 + ($171 + -6 << 2) | 0;\n        HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + $i$264;\n        $181 = $labelInfo + 1310736 + ($171 + -5 << 2) | 0;\n        HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + $j$075;\n        $185 = $labelInfo + 1310736 + ($171 + -3 << 2) | 0;\n        if ((HEAP32[$185 >> 2] | 0) < ($i$264 | 0)) HEAP32[$185 >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($171 + -1 << 2) >> 2] = $j$075;\n        $wk_max$2 = $wk_max$159;\n        break;\n       }\n       $191 = HEAP16[$pnt2$367 + -2 >> 1] | 0;\n       if ($191 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$367 >> 1] = $191;\n        $194 = ($191 << 16 >> 16) * 7 | 0;\n        $196 = $labelInfo + 1310736 + ($194 + -7 << 2) | 0;\n        HEAP32[$196 >> 2] = (HEAP32[$196 >> 2] | 0) + 1;\n        $200 = $labelInfo + 1310736 + ($194 + -6 << 2) | 0;\n        HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + $i$264;\n        $204 = $labelInfo + 1310736 + ($194 + -5 << 2) | 0;\n        HEAP32[$204 >> 2] = (HEAP32[$204 >> 2] | 0) + $j$075;\n        $208 = $labelInfo + 1310736 + ($194 + -3 << 2) | 0;\n        if ((HEAP32[$208 >> 2] | 0) >= ($i$264 | 0)) {\n         $wk_max$2 = $wk_max$159;\n         break;\n        }\n        HEAP32[$208 >> 2] = $i$264;\n        $wk_max$2 = $wk_max$159;\n        break;\n       } else {\n        $211 = $wk_max$159 + 1 | 0;\n        if (($wk_max$159 | 0) > 32767) break L13;\n        HEAP16[$pnt2$367 >> 1] = $211;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $211 << 16 >> 16;\n        $216 = $wk_max$159 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($216 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($216 + 1 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($216 + 2 << 2) >> 2] = $j$075;\n        HEAP32[$labelInfo + 1310736 + ($216 + 3 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($216 + 4 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($216 + 5 << 2) >> 2] = $j$075;\n        HEAP32[$labelInfo + 1310736 + ($216 + 6 << 2) >> 2] = $j$075;\n        $wk_max$2 = $211;\n        break;\n       }\n      }\n      if ($71) {\n       $74 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0;\n       $77 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0;\n       if (($74 | 0) > ($77 | 0)) {\n        HEAP16[$pnt2$367 >> 1] = $77;\n        if (($wk_max$159 | 0) > 0) {\n         $k$055 = 0;\n         $wk$056 = $17;\n         while (1) {\n          if ((HEAP32[$wk$056 >> 2] | 0) == ($74 | 0)) HEAP32[$wk$056 >> 2] = $77;\n          $k$055 = $k$055 + 1 | 0;\n          if (($k$055 | 0) >= ($wk_max$159 | 0)) {\n           $94 = $77;\n           break;\n          } else $wk$056 = $wk$056 + 4 | 0;\n         }\n        } else $94 = $77;\n       } else {\n        HEAP16[$pnt2$367 >> 1] = $74;\n        if (($74 | 0) < ($77 | 0) & ($wk_max$159 | 0) > 0) {\n         $k$152 = 0;\n         $wk$153 = $17;\n         while (1) {\n          if ((HEAP32[$wk$153 >> 2] | 0) == ($77 | 0)) HEAP32[$wk$153 >> 2] = $74;\n          $k$152 = $k$152 + 1 | 0;\n          if (($k$152 | 0) >= ($wk_max$159 | 0)) {\n           $94 = $74;\n           break;\n          } else $wk$153 = $wk$153 + 4 | 0;\n         }\n        } else $94 = $74;\n       }\n       $96 = ($94 << 16 >> 16) * 7 | 0;\n       $98 = $labelInfo + 1310736 + ($96 + -7 << 2) | 0;\n       HEAP32[$98 >> 2] = (HEAP32[$98 >> 2] | 0) + 1;\n       $102 = $labelInfo + 1310736 + ($96 + -6 << 2) | 0;\n       HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + $i$264;\n       $106 = $labelInfo + 1310736 + ($96 + -5 << 2) | 0;\n       HEAP32[$106 >> 2] = (HEAP32[$106 >> 2] | 0) + $j$075;\n       HEAP32[$labelInfo + 1310736 + ($96 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $112 = HEAP16[$pnt2$367 + -2 >> 1] | 0;\n      if ($112 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$367 >> 1] = $65;\n       $152 = $66 * 7 | 0;\n       $154 = $labelInfo + 1310736 + ($152 + -7 << 2) | 0;\n       HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + 1;\n       $158 = $labelInfo + 1310736 + ($152 + -6 << 2) | 0;\n       HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + $i$264;\n       $162 = $labelInfo + 1310736 + ($152 + -5 << 2) | 0;\n       HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $j$075;\n       $166 = $labelInfo + 1310736 + ($152 + -4 << 2) | 0;\n       if ((HEAP32[$166 >> 2] | 0) > ($i$264 | 0)) HEAP32[$166 >> 2] = $i$264;\n       HEAP32[$labelInfo + 1310736 + ($152 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $117 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0;\n      $120 = HEAP32[$labelInfo + 1179664 + (($112 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($117 | 0) > ($120 | 0)) {\n       HEAP16[$pnt2$367 >> 1] = $120;\n       if (($wk_max$159 | 0) > 0) {\n        $k$248 = 0;\n        $wk$249 = $17;\n        while (1) {\n         if ((HEAP32[$wk$249 >> 2] | 0) == ($117 | 0)) HEAP32[$wk$249 >> 2] = $120;\n         $k$248 = $k$248 + 1 | 0;\n         if (($k$248 | 0) >= ($wk_max$159 | 0)) {\n          $137 = $120;\n          break;\n         } else $wk$249 = $wk$249 + 4 | 0;\n        }\n       } else $137 = $120;\n      } else {\n       HEAP16[$pnt2$367 >> 1] = $117;\n       if (($117 | 0) < ($120 | 0) & ($wk_max$159 | 0) > 0) {\n        $k$345 = 0;\n        $wk$346 = $17;\n        while (1) {\n         if ((HEAP32[$wk$346 >> 2] | 0) == ($120 | 0)) HEAP32[$wk$346 >> 2] = $117;\n         $k$345 = $k$345 + 1 | 0;\n         if (($k$345 | 0) >= ($wk_max$159 | 0)) {\n          $137 = $117;\n          break;\n         } else $wk$346 = $wk$346 + 4 | 0;\n        }\n       } else $137 = $117;\n      }\n      $139 = ($137 << 16 >> 16) * 7 | 0;\n      $141 = $labelInfo + 1310736 + ($139 + -7 << 2) | 0;\n      HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + 1;\n      $145 = $labelInfo + 1310736 + ($139 + -6 << 2) | 0;\n      HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $i$264;\n      $149 = $labelInfo + 1310736 + ($139 + -5 << 2) | 0;\n      HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $j$075;\n      $wk_max$2 = $wk_max$159;\n     } while (0);\n     $i$264 = $i$264 + 1 | 0;\n     $231 = $pnt$168 + 2 | 0;\n     $232 = $pnt2$367 + 2 | 0;\n     $233 = $dpnt$166 + 1 | 0;\n     if (($i$264 | 0) >= ($10 | 0)) {\n      $dpnt$1$lcssa = $233;\n      $pnt$1$lcssa = $231;\n      $pnt2$3$lcssa = $232;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $dpnt$166 = $233;\n      $pnt$168 = $231;\n      $pnt2$367 = $232;\n      $wk_max$159 = $wk_max$2;\n     }\n    }\n   } else {\n    $dpnt$1$lcssa = $dpnt$077;\n    $pnt$1$lcssa = $pnt$079;\n    $pnt2$3$lcssa = $pnt2$278;\n    $wk_max$1$lcssa = $wk_max$074;\n   }\n   $j$075 = $j$075 + 1 | 0;\n   if (($j$075 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $dpnt$077 = $dpnt$1$lcssa + 2 | 0;\n    $pnt$079 = $pnt$1$lcssa + 4 | 0;\n    $pnt2$278 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$074 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $240 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$341 = 1;\n   $j$142 = 1;\n   $wk$443 = $17;\n   while (1) {\n    $242 = HEAP32[$wk$443 >> 2] | 0;\n    if (($242 | 0) == ($i$341 | 0)) {\n     $248 = $j$142;\n     $j$2 = $j$142 + 1 | 0;\n    } else {\n     $248 = HEAP32[$labelInfo + 1179664 + ($242 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$142;\n    }\n    HEAP32[$wk$443 >> 2] = $248;\n    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$341 = $i$341 + 1 | 0;\n     $j$142 = $j$2;\n     $wk$443 = $wk$443 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $252 = $labelInfo + 8 | 0;\n  $253 = $j$1$lcssa + -1 | 0;\n  HEAP32[$252 >> 2] = $253;\n  if (!$253) $$0 = 0; else {\n   _memset($240 | 0, 0, $253 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $253 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$439 = 0;\n    do {\n     $260 = $i$439 << 2;\n     HEAP32[$labelInfo + 131084 + ($260 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($260 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($260 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($260 | 3) << 2) >> 2] = 0;\n     $i$439 = $i$439 + 1 | 0;\n    } while (($i$439 | 0) < (HEAP32[$252 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$537 = 0;\n    do {\n     $274 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;\n     $275 = $i$537 * 7 | 0;\n     $278 = $labelInfo + 12 + ($274 << 2) | 0;\n     HEAP32[$278 >> 2] = (HEAP32[$278 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($275 << 2) >> 2] | 0);\n     $285 = $274 << 1;\n     $286 = $labelInfo + 655376 + ($285 << 3) | 0;\n     HEAPF64[$286 >> 3] = +HEAPF64[$286 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($275 + 1 << 2) >> 2] | 0);\n     $294 = $labelInfo + 655376 + (($285 | 1) << 3) | 0;\n     HEAPF64[$294 >> 3] = +HEAPF64[$294 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($275 + 2 << 2) >> 2] | 0);\n     $297 = $274 << 2;\n     $298 = $labelInfo + 131084 + ($297 << 2) | 0;\n     $302 = HEAP32[$labelInfo + 1310736 + ($275 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$298 >> 2] | 0) > ($302 | 0)) HEAP32[$298 >> 2] = $302;\n     $305 = $labelInfo + 131084 + (($297 | 1) << 2) | 0;\n     $309 = HEAP32[$labelInfo + 1310736 + ($275 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$305 >> 2] | 0) < ($309 | 0)) HEAP32[$305 >> 2] = $309;\n     $312 = $labelInfo + 131084 + (($297 | 2) << 2) | 0;\n     $316 = HEAP32[$labelInfo + 1310736 + ($275 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$312 >> 2] | 0) > ($316 | 0)) HEAP32[$312 >> 2] = $316;\n     $319 = $labelInfo + 131084 + (($297 | 3) << 2) | 0;\n     $323 = HEAP32[$labelInfo + 1310736 + ($275 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$319 >> 2] | 0) < ($323 | 0)) HEAP32[$319 >> 2] = $323;\n     $i$537 = $i$537 + 1 | 0;\n    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$252 >> 2] | 0) > 0) {\n    $i$636 = 0;\n    do {\n     $327 = $labelInfo + 12 + ($i$636 << 2) | 0;\n     $330 = $i$636 << 1;\n     $331 = $labelInfo + 655376 + ($330 << 3) | 0;\n     HEAPF64[$331 >> 3] = +HEAPF64[$331 >> 3] / +(HEAP32[$327 >> 2] | 0);\n     $337 = $labelInfo + 655376 + (($330 | 1) << 3) | 0;\n     HEAPF64[$337 >> 3] = +HEAPF64[$337 >> 3] / +(HEAP32[$327 >> 2] | 0);\n     $i$636 = $i$636 + 1 | 0;\n    } while (($i$636 | 0) < (HEAP32[$252 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubEWR3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $102 = 0, $106 = 0, $112 = 0, $117 = 0, $120 = 0, $137 = 0, $139 = 0, $141 = 0, $145 = 0, $149 = 0, $152 = 0, $154 = 0, $158 = 0, $162 = 0, $166 = 0, $17 = 0, $171 = 0, $173 = 0, $177 = 0, $18 = 0, $181 = 0, $185 = 0, $19 = 0, $191 = 0, $194 = 0, $196 = 0, $200 = 0, $204 = 0, $208 = 0, $211 = 0, $216 = 0, $231 = 0, $232 = 0, $233 = 0, $240 = 0, $242 = 0, $248 = 0, $252 = 0, $253 = 0, $260 = 0, $27 = 0, $274 = 0, $275 = 0, $278 = 0, $285 = 0, $286 = 0, $29 = 0, $294 = 0, $297 = 0, $298 = 0, $302 = 0, $305 = 0, $309 = 0, $312 = 0, $316 = 0, $319 = 0, $323 = 0, $327 = 0, $330 = 0, $331 = 0, $337 = 0, $35 = 0, $46 = 0, $49 = 0, $51 = 0, $55 = 0, $59 = 0, $65 = 0, $66 = 0, $69 = 0, $70 = 0, $71 = 0, $74 = 0, $77 = 0, $9 = 0, $94 = 0, $96 = 0, $98 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$088 = 0;\n  $pnt1$090 = $0;\n  $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$089 >> 1] = 0;\n   HEAP16[$pnt1$090 >> 1] = 0;\n   $i$088 = $i$088 + 1 | 0;\n   if (($i$088 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$090 = $pnt1$090 + 2 | 0;\n    $pnt2$089 = $pnt2$089 + 2 | 0;\n   }\n  }\n }\n $9 = $labelingThresh * 3 | 0;\n $10 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$182 = 0;\n  $pnt1$184 = $0;\n  $pnt2$183 = $0 + ($10 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$183 >> 1] = 0;\n   HEAP16[$pnt1$184 >> 1] = 0;\n   $i$182 = $i$182 + 1 | 0;\n   if (($i$182 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;\n    $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0;\n   }\n  }\n }\n $17 = $labelInfo + 1179664 | 0;\n $18 = $xsize + 1 | 0;\n $19 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $27 = ($10 | 0) > 1;\n  $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $18 | 0;\n  $j$075 = 1;\n  $pnt$079 = $image + ($18 << 1) | 0;\n  $pnt2$278 = $0 + ($18 << 1) | 0;\n  $wk_max$074 = 0;\n  L13 : while (1) {\n   if ($27) {\n    $dpnt$166 = $dpnt$077;\n    $i$264 = 1;\n    $pnt$168 = $pnt$079;\n    $pnt2$367 = $pnt2$278;\n    $wk_max$159 = $wk_max$074;\n    while (1) {\n     $29 = HEAPU8[$pnt$168 >> 0] | 0;\n     $35 = HEAPU8[$pnt$168 + 1 >> 0] | 0;\n     do if ((($29 & 248) + 10 + ($29 << 5 & 224) + ($35 >>> 3 & 28) + ($35 << 3 & 248) | 0) > ($9 | 0)) {\n      HEAP8[$dpnt$166 >> 0] = -1;\n      $46 = HEAP16[$pnt2$367 + ($19 << 1) >> 1] | 0;\n      if ($46 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$367 >> 1] = $46;\n       $49 = ($46 << 16 >> 16) * 7 | 0;\n       $51 = $labelInfo + 1310736 + ($49 + -7 << 2) | 0;\n       HEAP32[$51 >> 2] = (HEAP32[$51 >> 2] | 0) + 1;\n       $55 = $labelInfo + 1310736 + ($49 + -6 << 2) | 0;\n       HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + $i$264;\n       $59 = $labelInfo + 1310736 + ($49 + -5 << 2) | 0;\n       HEAP32[$59 >> 2] = (HEAP32[$59 >> 2] | 0) + $j$075;\n       HEAP32[$labelInfo + 1310736 + ($49 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $65 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0;\n      $66 = $65 << 16 >> 16;\n      $69 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0;\n      $70 = $69 << 16 >> 16;\n      $71 = $69 << 16 >> 16 > 0;\n      if ($65 << 16 >> 16 <= 0) {\n       if ($71) {\n        HEAP16[$pnt2$367 >> 1] = $69;\n        $171 = $70 * 7 | 0;\n        $173 = $labelInfo + 1310736 + ($171 + -7 << 2) | 0;\n        HEAP32[$173 >> 2] = (HEAP32[$173 >> 2] | 0) + 1;\n        $177 = $labelInfo + 1310736 + ($171 + -6 << 2) | 0;\n        HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + $i$264;\n        $181 = $labelInfo + 1310736 + ($171 + -5 << 2) | 0;\n        HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + $j$075;\n        $185 = $labelInfo + 1310736 + ($171 + -3 << 2) | 0;\n        if ((HEAP32[$185 >> 2] | 0) < ($i$264 | 0)) HEAP32[$185 >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($171 + -1 << 2) >> 2] = $j$075;\n        $wk_max$2 = $wk_max$159;\n        break;\n       }\n       $191 = HEAP16[$pnt2$367 + -2 >> 1] | 0;\n       if ($191 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$367 >> 1] = $191;\n        $194 = ($191 << 16 >> 16) * 7 | 0;\n        $196 = $labelInfo + 1310736 + ($194 + -7 << 2) | 0;\n        HEAP32[$196 >> 2] = (HEAP32[$196 >> 2] | 0) + 1;\n        $200 = $labelInfo + 1310736 + ($194 + -6 << 2) | 0;\n        HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + $i$264;\n        $204 = $labelInfo + 1310736 + ($194 + -5 << 2) | 0;\n        HEAP32[$204 >> 2] = (HEAP32[$204 >> 2] | 0) + $j$075;\n        $208 = $labelInfo + 1310736 + ($194 + -3 << 2) | 0;\n        if ((HEAP32[$208 >> 2] | 0) >= ($i$264 | 0)) {\n         $wk_max$2 = $wk_max$159;\n         break;\n        }\n        HEAP32[$208 >> 2] = $i$264;\n        $wk_max$2 = $wk_max$159;\n        break;\n       } else {\n        $211 = $wk_max$159 + 1 | 0;\n        if (($wk_max$159 | 0) > 32767) break L13;\n        HEAP16[$pnt2$367 >> 1] = $211;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $211 << 16 >> 16;\n        $216 = $wk_max$159 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($216 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($216 + 1 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($216 + 2 << 2) >> 2] = $j$075;\n        HEAP32[$labelInfo + 1310736 + ($216 + 3 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($216 + 4 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($216 + 5 << 2) >> 2] = $j$075;\n        HEAP32[$labelInfo + 1310736 + ($216 + 6 << 2) >> 2] = $j$075;\n        $wk_max$2 = $211;\n        break;\n       }\n      }\n      if ($71) {\n       $74 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0;\n       $77 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0;\n       if (($74 | 0) > ($77 | 0)) {\n        HEAP16[$pnt2$367 >> 1] = $77;\n        if (($wk_max$159 | 0) > 0) {\n         $k$055 = 0;\n         $wk$056 = $17;\n         while (1) {\n          if ((HEAP32[$wk$056 >> 2] | 0) == ($74 | 0)) HEAP32[$wk$056 >> 2] = $77;\n          $k$055 = $k$055 + 1 | 0;\n          if (($k$055 | 0) >= ($wk_max$159 | 0)) {\n           $94 = $77;\n           break;\n          } else $wk$056 = $wk$056 + 4 | 0;\n         }\n        } else $94 = $77;\n       } else {\n        HEAP16[$pnt2$367 >> 1] = $74;\n        if (($74 | 0) < ($77 | 0) & ($wk_max$159 | 0) > 0) {\n         $k$152 = 0;\n         $wk$153 = $17;\n         while (1) {\n          if ((HEAP32[$wk$153 >> 2] | 0) == ($77 | 0)) HEAP32[$wk$153 >> 2] = $74;\n          $k$152 = $k$152 + 1 | 0;\n          if (($k$152 | 0) >= ($wk_max$159 | 0)) {\n           $94 = $74;\n           break;\n          } else $wk$153 = $wk$153 + 4 | 0;\n         }\n        } else $94 = $74;\n       }\n       $96 = ($94 << 16 >> 16) * 7 | 0;\n       $98 = $labelInfo + 1310736 + ($96 + -7 << 2) | 0;\n       HEAP32[$98 >> 2] = (HEAP32[$98 >> 2] | 0) + 1;\n       $102 = $labelInfo + 1310736 + ($96 + -6 << 2) | 0;\n       HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + $i$264;\n       $106 = $labelInfo + 1310736 + ($96 + -5 << 2) | 0;\n       HEAP32[$106 >> 2] = (HEAP32[$106 >> 2] | 0) + $j$075;\n       HEAP32[$labelInfo + 1310736 + ($96 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $112 = HEAP16[$pnt2$367 + -2 >> 1] | 0;\n      if ($112 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$367 >> 1] = $65;\n       $152 = $66 * 7 | 0;\n       $154 = $labelInfo + 1310736 + ($152 + -7 << 2) | 0;\n       HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + 1;\n       $158 = $labelInfo + 1310736 + ($152 + -6 << 2) | 0;\n       HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + $i$264;\n       $162 = $labelInfo + 1310736 + ($152 + -5 << 2) | 0;\n       HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $j$075;\n       $166 = $labelInfo + 1310736 + ($152 + -4 << 2) | 0;\n       if ((HEAP32[$166 >> 2] | 0) > ($i$264 | 0)) HEAP32[$166 >> 2] = $i$264;\n       HEAP32[$labelInfo + 1310736 + ($152 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $117 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0;\n      $120 = HEAP32[$labelInfo + 1179664 + (($112 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($117 | 0) > ($120 | 0)) {\n       HEAP16[$pnt2$367 >> 1] = $120;\n       if (($wk_max$159 | 0) > 0) {\n        $k$248 = 0;\n        $wk$249 = $17;\n        while (1) {\n         if ((HEAP32[$wk$249 >> 2] | 0) == ($117 | 0)) HEAP32[$wk$249 >> 2] = $120;\n         $k$248 = $k$248 + 1 | 0;\n         if (($k$248 | 0) >= ($wk_max$159 | 0)) {\n          $137 = $120;\n          break;\n         } else $wk$249 = $wk$249 + 4 | 0;\n        }\n       } else $137 = $120;\n      } else {\n       HEAP16[$pnt2$367 >> 1] = $117;\n       if (($117 | 0) < ($120 | 0) & ($wk_max$159 | 0) > 0) {\n        $k$345 = 0;\n        $wk$346 = $17;\n        while (1) {\n         if ((HEAP32[$wk$346 >> 2] | 0) == ($120 | 0)) HEAP32[$wk$346 >> 2] = $117;\n         $k$345 = $k$345 + 1 | 0;\n         if (($k$345 | 0) >= ($wk_max$159 | 0)) {\n          $137 = $117;\n          break;\n         } else $wk$346 = $wk$346 + 4 | 0;\n        }\n       } else $137 = $117;\n      }\n      $139 = ($137 << 16 >> 16) * 7 | 0;\n      $141 = $labelInfo + 1310736 + ($139 + -7 << 2) | 0;\n      HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + 1;\n      $145 = $labelInfo + 1310736 + ($139 + -6 << 2) | 0;\n      HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $i$264;\n      $149 = $labelInfo + 1310736 + ($139 + -5 << 2) | 0;\n      HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $j$075;\n      $wk_max$2 = $wk_max$159;\n     } else {\n      HEAP16[$pnt2$367 >> 1] = 0;\n      HEAP8[$dpnt$166 >> 0] = 0;\n      $wk_max$2 = $wk_max$159;\n     } while (0);\n     $i$264 = $i$264 + 1 | 0;\n     $231 = $pnt$168 + 2 | 0;\n     $232 = $pnt2$367 + 2 | 0;\n     $233 = $dpnt$166 + 1 | 0;\n     if (($i$264 | 0) >= ($10 | 0)) {\n      $dpnt$1$lcssa = $233;\n      $pnt$1$lcssa = $231;\n      $pnt2$3$lcssa = $232;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $dpnt$166 = $233;\n      $pnt$168 = $231;\n      $pnt2$367 = $232;\n      $wk_max$159 = $wk_max$2;\n     }\n    }\n   } else {\n    $dpnt$1$lcssa = $dpnt$077;\n    $pnt$1$lcssa = $pnt$079;\n    $pnt2$3$lcssa = $pnt2$278;\n    $wk_max$1$lcssa = $wk_max$074;\n   }\n   $j$075 = $j$075 + 1 | 0;\n   if (($j$075 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $dpnt$077 = $dpnt$1$lcssa + 2 | 0;\n    $pnt$079 = $pnt$1$lcssa + 4 | 0;\n    $pnt2$278 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$074 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $240 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$341 = 1;\n   $j$142 = 1;\n   $wk$443 = $17;\n   while (1) {\n    $242 = HEAP32[$wk$443 >> 2] | 0;\n    if (($242 | 0) == ($i$341 | 0)) {\n     $248 = $j$142;\n     $j$2 = $j$142 + 1 | 0;\n    } else {\n     $248 = HEAP32[$labelInfo + 1179664 + ($242 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$142;\n    }\n    HEAP32[$wk$443 >> 2] = $248;\n    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$341 = $i$341 + 1 | 0;\n     $j$142 = $j$2;\n     $wk$443 = $wk$443 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $252 = $labelInfo + 8 | 0;\n  $253 = $j$1$lcssa + -1 | 0;\n  HEAP32[$252 >> 2] = $253;\n  if (!$253) $$0 = 0; else {\n   _memset($240 | 0, 0, $253 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $253 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$439 = 0;\n    do {\n     $260 = $i$439 << 2;\n     HEAP32[$labelInfo + 131084 + ($260 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($260 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($260 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($260 | 3) << 2) >> 2] = 0;\n     $i$439 = $i$439 + 1 | 0;\n    } while (($i$439 | 0) < (HEAP32[$252 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$537 = 0;\n    do {\n     $274 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;\n     $275 = $i$537 * 7 | 0;\n     $278 = $labelInfo + 12 + ($274 << 2) | 0;\n     HEAP32[$278 >> 2] = (HEAP32[$278 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($275 << 2) >> 2] | 0);\n     $285 = $274 << 1;\n     $286 = $labelInfo + 655376 + ($285 << 3) | 0;\n     HEAPF64[$286 >> 3] = +HEAPF64[$286 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($275 + 1 << 2) >> 2] | 0);\n     $294 = $labelInfo + 655376 + (($285 | 1) << 3) | 0;\n     HEAPF64[$294 >> 3] = +HEAPF64[$294 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($275 + 2 << 2) >> 2] | 0);\n     $297 = $274 << 2;\n     $298 = $labelInfo + 131084 + ($297 << 2) | 0;\n     $302 = HEAP32[$labelInfo + 1310736 + ($275 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$298 >> 2] | 0) > ($302 | 0)) HEAP32[$298 >> 2] = $302;\n     $305 = $labelInfo + 131084 + (($297 | 1) << 2) | 0;\n     $309 = HEAP32[$labelInfo + 1310736 + ($275 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$305 >> 2] | 0) < ($309 | 0)) HEAP32[$305 >> 2] = $309;\n     $312 = $labelInfo + 131084 + (($297 | 2) << 2) | 0;\n     $316 = HEAP32[$labelInfo + 1310736 + ($275 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$312 >> 2] | 0) > ($316 | 0)) HEAP32[$312 >> 2] = $316;\n     $319 = $labelInfo + 131084 + (($297 | 3) << 2) | 0;\n     $323 = HEAP32[$labelInfo + 1310736 + ($275 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$319 >> 2] | 0) < ($323 | 0)) HEAP32[$319 >> 2] = $323;\n     $i$537 = $i$537 + 1 | 0;\n    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$252 >> 2] | 0) > 0) {\n    $i$636 = 0;\n    do {\n     $327 = $labelInfo + 12 + ($i$636 << 2) | 0;\n     $330 = $i$636 << 1;\n     $331 = $labelInfo + 655376 + ($330 << 3) | 0;\n     HEAPF64[$331 >> 3] = +HEAPF64[$331 >> 3] / +(HEAP32[$327 >> 2] | 0);\n     $337 = $labelInfo + 655376 + (($330 | 1) << 3) | 0;\n     HEAPF64[$337 >> 3] = +HEAPF64[$337 >> 3] / +(HEAP32[$327 >> 2] | 0);\n     $i$636 = $i$636 + 1 | 0;\n    } while (($i$636 | 0) < (HEAP32[$252 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubEBR3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $102 = 0, $106 = 0, $112 = 0, $117 = 0, $120 = 0, $137 = 0, $139 = 0, $141 = 0, $145 = 0, $149 = 0, $152 = 0, $154 = 0, $158 = 0, $162 = 0, $166 = 0, $17 = 0, $171 = 0, $173 = 0, $177 = 0, $18 = 0, $181 = 0, $185 = 0, $19 = 0, $191 = 0, $194 = 0, $196 = 0, $200 = 0, $204 = 0, $208 = 0, $211 = 0, $216 = 0, $231 = 0, $232 = 0, $233 = 0, $240 = 0, $242 = 0, $248 = 0, $252 = 0, $253 = 0, $260 = 0, $27 = 0, $274 = 0, $275 = 0, $278 = 0, $285 = 0, $286 = 0, $29 = 0, $294 = 0, $297 = 0, $298 = 0, $302 = 0, $305 = 0, $309 = 0, $312 = 0, $316 = 0, $319 = 0, $323 = 0, $327 = 0, $330 = 0, $331 = 0, $337 = 0, $35 = 0, $46 = 0, $49 = 0, $51 = 0, $55 = 0, $59 = 0, $65 = 0, $66 = 0, $69 = 0, $70 = 0, $71 = 0, $74 = 0, $77 = 0, $9 = 0, $94 = 0, $96 = 0, $98 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$088 = 0;\n  $pnt1$090 = $0;\n  $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$089 >> 1] = 0;\n   HEAP16[$pnt1$090 >> 1] = 0;\n   $i$088 = $i$088 + 1 | 0;\n   if (($i$088 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$090 = $pnt1$090 + 2 | 0;\n    $pnt2$089 = $pnt2$089 + 2 | 0;\n   }\n  }\n }\n $9 = $labelingThresh * 3 | 0;\n $10 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$182 = 0;\n  $pnt1$184 = $0;\n  $pnt2$183 = $0 + ($10 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$183 >> 1] = 0;\n   HEAP16[$pnt1$184 >> 1] = 0;\n   $i$182 = $i$182 + 1 | 0;\n   if (($i$182 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;\n    $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0;\n   }\n  }\n }\n $17 = $labelInfo + 1179664 | 0;\n $18 = $xsize + 1 | 0;\n $19 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $27 = ($10 | 0) > 1;\n  $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $18 | 0;\n  $j$075 = 1;\n  $pnt$079 = $image + ($18 << 1) | 0;\n  $pnt2$278 = $0 + ($18 << 1) | 0;\n  $wk_max$074 = 0;\n  L13 : while (1) {\n   if ($27) {\n    $dpnt$166 = $dpnt$077;\n    $i$264 = 1;\n    $pnt$168 = $pnt$079;\n    $pnt2$367 = $pnt2$278;\n    $wk_max$159 = $wk_max$074;\n    while (1) {\n     $29 = HEAPU8[$pnt$168 >> 0] | 0;\n     $35 = HEAPU8[$pnt$168 + 1 >> 0] | 0;\n     do if ((($29 & 248) + 10 + ($29 << 5 & 224) + ($35 >>> 3 & 28) + ($35 << 3 & 248) | 0) > ($9 | 0)) {\n      HEAP16[$pnt2$367 >> 1] = 0;\n      HEAP8[$dpnt$166 >> 0] = 0;\n      $wk_max$2 = $wk_max$159;\n     } else {\n      HEAP8[$dpnt$166 >> 0] = -1;\n      $46 = HEAP16[$pnt2$367 + ($19 << 1) >> 1] | 0;\n      if ($46 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$367 >> 1] = $46;\n       $49 = ($46 << 16 >> 16) * 7 | 0;\n       $51 = $labelInfo + 1310736 + ($49 + -7 << 2) | 0;\n       HEAP32[$51 >> 2] = (HEAP32[$51 >> 2] | 0) + 1;\n       $55 = $labelInfo + 1310736 + ($49 + -6 << 2) | 0;\n       HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + $i$264;\n       $59 = $labelInfo + 1310736 + ($49 + -5 << 2) | 0;\n       HEAP32[$59 >> 2] = (HEAP32[$59 >> 2] | 0) + $j$075;\n       HEAP32[$labelInfo + 1310736 + ($49 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $65 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0;\n      $66 = $65 << 16 >> 16;\n      $69 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0;\n      $70 = $69 << 16 >> 16;\n      $71 = $69 << 16 >> 16 > 0;\n      if ($65 << 16 >> 16 <= 0) {\n       if ($71) {\n        HEAP16[$pnt2$367 >> 1] = $69;\n        $171 = $70 * 7 | 0;\n        $173 = $labelInfo + 1310736 + ($171 + -7 << 2) | 0;\n        HEAP32[$173 >> 2] = (HEAP32[$173 >> 2] | 0) + 1;\n        $177 = $labelInfo + 1310736 + ($171 + -6 << 2) | 0;\n        HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + $i$264;\n        $181 = $labelInfo + 1310736 + ($171 + -5 << 2) | 0;\n        HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + $j$075;\n        $185 = $labelInfo + 1310736 + ($171 + -3 << 2) | 0;\n        if ((HEAP32[$185 >> 2] | 0) < ($i$264 | 0)) HEAP32[$185 >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($171 + -1 << 2) >> 2] = $j$075;\n        $wk_max$2 = $wk_max$159;\n        break;\n       }\n       $191 = HEAP16[$pnt2$367 + -2 >> 1] | 0;\n       if ($191 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$367 >> 1] = $191;\n        $194 = ($191 << 16 >> 16) * 7 | 0;\n        $196 = $labelInfo + 1310736 + ($194 + -7 << 2) | 0;\n        HEAP32[$196 >> 2] = (HEAP32[$196 >> 2] | 0) + 1;\n        $200 = $labelInfo + 1310736 + ($194 + -6 << 2) | 0;\n        HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + $i$264;\n        $204 = $labelInfo + 1310736 + ($194 + -5 << 2) | 0;\n        HEAP32[$204 >> 2] = (HEAP32[$204 >> 2] | 0) + $j$075;\n        $208 = $labelInfo + 1310736 + ($194 + -3 << 2) | 0;\n        if ((HEAP32[$208 >> 2] | 0) >= ($i$264 | 0)) {\n         $wk_max$2 = $wk_max$159;\n         break;\n        }\n        HEAP32[$208 >> 2] = $i$264;\n        $wk_max$2 = $wk_max$159;\n        break;\n       } else {\n        $211 = $wk_max$159 + 1 | 0;\n        if (($wk_max$159 | 0) > 32767) break L13;\n        HEAP16[$pnt2$367 >> 1] = $211;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $211 << 16 >> 16;\n        $216 = $wk_max$159 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($216 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($216 + 1 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($216 + 2 << 2) >> 2] = $j$075;\n        HEAP32[$labelInfo + 1310736 + ($216 + 3 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($216 + 4 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($216 + 5 << 2) >> 2] = $j$075;\n        HEAP32[$labelInfo + 1310736 + ($216 + 6 << 2) >> 2] = $j$075;\n        $wk_max$2 = $211;\n        break;\n       }\n      }\n      if ($71) {\n       $74 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0;\n       $77 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0;\n       if (($74 | 0) > ($77 | 0)) {\n        HEAP16[$pnt2$367 >> 1] = $77;\n        if (($wk_max$159 | 0) > 0) {\n         $k$055 = 0;\n         $wk$056 = $17;\n         while (1) {\n          if ((HEAP32[$wk$056 >> 2] | 0) == ($74 | 0)) HEAP32[$wk$056 >> 2] = $77;\n          $k$055 = $k$055 + 1 | 0;\n          if (($k$055 | 0) >= ($wk_max$159 | 0)) {\n           $94 = $77;\n           break;\n          } else $wk$056 = $wk$056 + 4 | 0;\n         }\n        } else $94 = $77;\n       } else {\n        HEAP16[$pnt2$367 >> 1] = $74;\n        if (($74 | 0) < ($77 | 0) & ($wk_max$159 | 0) > 0) {\n         $k$152 = 0;\n         $wk$153 = $17;\n         while (1) {\n          if ((HEAP32[$wk$153 >> 2] | 0) == ($77 | 0)) HEAP32[$wk$153 >> 2] = $74;\n          $k$152 = $k$152 + 1 | 0;\n          if (($k$152 | 0) >= ($wk_max$159 | 0)) {\n           $94 = $74;\n           break;\n          } else $wk$153 = $wk$153 + 4 | 0;\n         }\n        } else $94 = $74;\n       }\n       $96 = ($94 << 16 >> 16) * 7 | 0;\n       $98 = $labelInfo + 1310736 + ($96 + -7 << 2) | 0;\n       HEAP32[$98 >> 2] = (HEAP32[$98 >> 2] | 0) + 1;\n       $102 = $labelInfo + 1310736 + ($96 + -6 << 2) | 0;\n       HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + $i$264;\n       $106 = $labelInfo + 1310736 + ($96 + -5 << 2) | 0;\n       HEAP32[$106 >> 2] = (HEAP32[$106 >> 2] | 0) + $j$075;\n       HEAP32[$labelInfo + 1310736 + ($96 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $112 = HEAP16[$pnt2$367 + -2 >> 1] | 0;\n      if ($112 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$367 >> 1] = $65;\n       $152 = $66 * 7 | 0;\n       $154 = $labelInfo + 1310736 + ($152 + -7 << 2) | 0;\n       HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + 1;\n       $158 = $labelInfo + 1310736 + ($152 + -6 << 2) | 0;\n       HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + $i$264;\n       $162 = $labelInfo + 1310736 + ($152 + -5 << 2) | 0;\n       HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $j$075;\n       $166 = $labelInfo + 1310736 + ($152 + -4 << 2) | 0;\n       if ((HEAP32[$166 >> 2] | 0) > ($i$264 | 0)) HEAP32[$166 >> 2] = $i$264;\n       HEAP32[$labelInfo + 1310736 + ($152 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $117 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0;\n      $120 = HEAP32[$labelInfo + 1179664 + (($112 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($117 | 0) > ($120 | 0)) {\n       HEAP16[$pnt2$367 >> 1] = $120;\n       if (($wk_max$159 | 0) > 0) {\n        $k$248 = 0;\n        $wk$249 = $17;\n        while (1) {\n         if ((HEAP32[$wk$249 >> 2] | 0) == ($117 | 0)) HEAP32[$wk$249 >> 2] = $120;\n         $k$248 = $k$248 + 1 | 0;\n         if (($k$248 | 0) >= ($wk_max$159 | 0)) {\n          $137 = $120;\n          break;\n         } else $wk$249 = $wk$249 + 4 | 0;\n        }\n       } else $137 = $120;\n      } else {\n       HEAP16[$pnt2$367 >> 1] = $117;\n       if (($117 | 0) < ($120 | 0) & ($wk_max$159 | 0) > 0) {\n        $k$345 = 0;\n        $wk$346 = $17;\n        while (1) {\n         if ((HEAP32[$wk$346 >> 2] | 0) == ($120 | 0)) HEAP32[$wk$346 >> 2] = $117;\n         $k$345 = $k$345 + 1 | 0;\n         if (($k$345 | 0) >= ($wk_max$159 | 0)) {\n          $137 = $117;\n          break;\n         } else $wk$346 = $wk$346 + 4 | 0;\n        }\n       } else $137 = $117;\n      }\n      $139 = ($137 << 16 >> 16) * 7 | 0;\n      $141 = $labelInfo + 1310736 + ($139 + -7 << 2) | 0;\n      HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + 1;\n      $145 = $labelInfo + 1310736 + ($139 + -6 << 2) | 0;\n      HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $i$264;\n      $149 = $labelInfo + 1310736 + ($139 + -5 << 2) | 0;\n      HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $j$075;\n      $wk_max$2 = $wk_max$159;\n     } while (0);\n     $i$264 = $i$264 + 1 | 0;\n     $231 = $pnt$168 + 2 | 0;\n     $232 = $pnt2$367 + 2 | 0;\n     $233 = $dpnt$166 + 1 | 0;\n     if (($i$264 | 0) >= ($10 | 0)) {\n      $dpnt$1$lcssa = $233;\n      $pnt$1$lcssa = $231;\n      $pnt2$3$lcssa = $232;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $dpnt$166 = $233;\n      $pnt$168 = $231;\n      $pnt2$367 = $232;\n      $wk_max$159 = $wk_max$2;\n     }\n    }\n   } else {\n    $dpnt$1$lcssa = $dpnt$077;\n    $pnt$1$lcssa = $pnt$079;\n    $pnt2$3$lcssa = $pnt2$278;\n    $wk_max$1$lcssa = $wk_max$074;\n   }\n   $j$075 = $j$075 + 1 | 0;\n   if (($j$075 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $dpnt$077 = $dpnt$1$lcssa + 2 | 0;\n    $pnt$079 = $pnt$1$lcssa + 4 | 0;\n    $pnt2$278 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$074 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $240 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$341 = 1;\n   $j$142 = 1;\n   $wk$443 = $17;\n   while (1) {\n    $242 = HEAP32[$wk$443 >> 2] | 0;\n    if (($242 | 0) == ($i$341 | 0)) {\n     $248 = $j$142;\n     $j$2 = $j$142 + 1 | 0;\n    } else {\n     $248 = HEAP32[$labelInfo + 1179664 + ($242 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$142;\n    }\n    HEAP32[$wk$443 >> 2] = $248;\n    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$341 = $i$341 + 1 | 0;\n     $j$142 = $j$2;\n     $wk$443 = $wk$443 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $252 = $labelInfo + 8 | 0;\n  $253 = $j$1$lcssa + -1 | 0;\n  HEAP32[$252 >> 2] = $253;\n  if (!$253) $$0 = 0; else {\n   _memset($240 | 0, 0, $253 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $253 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$439 = 0;\n    do {\n     $260 = $i$439 << 2;\n     HEAP32[$labelInfo + 131084 + ($260 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($260 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($260 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($260 | 3) << 2) >> 2] = 0;\n     $i$439 = $i$439 + 1 | 0;\n    } while (($i$439 | 0) < (HEAP32[$252 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$537 = 0;\n    do {\n     $274 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;\n     $275 = $i$537 * 7 | 0;\n     $278 = $labelInfo + 12 + ($274 << 2) | 0;\n     HEAP32[$278 >> 2] = (HEAP32[$278 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($275 << 2) >> 2] | 0);\n     $285 = $274 << 1;\n     $286 = $labelInfo + 655376 + ($285 << 3) | 0;\n     HEAPF64[$286 >> 3] = +HEAPF64[$286 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($275 + 1 << 2) >> 2] | 0);\n     $294 = $labelInfo + 655376 + (($285 | 1) << 3) | 0;\n     HEAPF64[$294 >> 3] = +HEAPF64[$294 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($275 + 2 << 2) >> 2] | 0);\n     $297 = $274 << 2;\n     $298 = $labelInfo + 131084 + ($297 << 2) | 0;\n     $302 = HEAP32[$labelInfo + 1310736 + ($275 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$298 >> 2] | 0) > ($302 | 0)) HEAP32[$298 >> 2] = $302;\n     $305 = $labelInfo + 131084 + (($297 | 1) << 2) | 0;\n     $309 = HEAP32[$labelInfo + 1310736 + ($275 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$305 >> 2] | 0) < ($309 | 0)) HEAP32[$305 >> 2] = $309;\n     $312 = $labelInfo + 131084 + (($297 | 2) << 2) | 0;\n     $316 = HEAP32[$labelInfo + 1310736 + ($275 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$312 >> 2] | 0) > ($316 | 0)) HEAP32[$312 >> 2] = $316;\n     $319 = $labelInfo + 131084 + (($297 | 3) << 2) | 0;\n     $323 = HEAP32[$labelInfo + 1310736 + ($275 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$319 >> 2] | 0) < ($323 | 0)) HEAP32[$319 >> 2] = $323;\n     $i$537 = $i$537 + 1 | 0;\n    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$252 >> 2] | 0) > 0) {\n    $i$636 = 0;\n    do {\n     $327 = $labelInfo + 12 + ($i$636 << 2) | 0;\n     $330 = $i$636 << 1;\n     $331 = $labelInfo + 655376 + ($330 << 3) | 0;\n     HEAPF64[$331 >> 3] = +HEAPF64[$331 >> 3] / +(HEAP32[$327 >> 2] | 0);\n     $337 = $labelInfo + 655376 + (($330 | 1) << 3) | 0;\n     HEAPF64[$337 >> 3] = +HEAPF64[$337 >> 3] / +(HEAP32[$327 >> 2] | 0);\n     $i$636 = $i$636 + 1 | 0;\n    } while (($i$636 | 0) < (HEAP32[$252 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arPattGetIDGlobal($pattHandle, $imageProcMode, $pattDetectMode, $image, $xsize, $ysize, $pixelFormat, $paramLTf, $vertex, $pattRatio, $codePatt, $dirPatt, $cfPatt, $codeMatrix, $dirMatrix, $cfMatrix, $matrixCodeType, $errorCorrected, $codeGlobalID_p) {\n $pattHandle = $pattHandle | 0;\n $imageProcMode = $imageProcMode | 0;\n $pattDetectMode = $pattDetectMode | 0;\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $pixelFormat = $pixelFormat | 0;\n $paramLTf = $paramLTf | 0;\n $vertex = $vertex | 0;\n $pattRatio = +$pattRatio;\n $codePatt = $codePatt | 0;\n $dirPatt = $dirPatt | 0;\n $cfPatt = $cfPatt | 0;\n $codeMatrix = $codeMatrix | 0;\n $dirMatrix = $dirMatrix | 0;\n $cfMatrix = $cfMatrix | 0;\n $matrixCodeType = $matrixCodeType | 0;\n $errorCorrected = $errorCorrected | 0;\n $codeGlobalID_p = $codeGlobalID_p | 0;\n var $$0 = 0, $$0$i = 0, $$max$0$i = 0, $$max$0$i$1 = 0, $$max$0$i$2 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $107 = 0, $114 = 0, $118 = 0, $122 = 0, $126 = 0, $137 = 0, $14 = 0, $141 = 0, $147 = 0, $148 = 0, $149 = 0, $162 = 0, $166 = 0, $175 = 0, $178 = 0, $186 = 0, $188 = 0, $196 = 0, $20 = 0, $200 = 0, $204 = 0, $206 = 0, $211 = 0, $212 = 0, $213 = 0, $26 = 0, $29 = 0, $30 = 0, $34 = 0, $68 = 0, $8 = 0, $80 = 0, $81 = 0, $84 = 0, $93 = 0, $97 = 0, $bit$0$i28 = 0, $bit$1$i25 = 0, $bit$10$i43 = 0, $bit$11$i = 0, $bit$11$i$lcssa = 0, $bit$2$i = 0, $bit$2$i$lcssa = 0, $bit$3$i34 = 0, $bit$4$i31 = 0, $bit$5$i = 0, $bit$5$i$lcssa = 0, $bit$6$i40 = 0, $bit$7$i37 = 0, $bit$8$i = 0, $bit$8$i$lcssa = 0, $bit$9$i46 = 0, $code$i = 0, $contrastMin$0$i26 = 0, $contrastMin$1$i23 = 0, $contrastMin$10$i41 = 0, $contrastMin$11$i = 0, $contrastMin$11$i$lcssa = 0, $contrastMin$12$i = 0, $contrastMin$2$i = 0, $contrastMin$2$i$lcssa = 0, $contrastMin$3$i32 = 0, $contrastMin$4$i29 = 0, $contrastMin$5$i = 0, $contrastMin$5$i$lcssa = 0, $contrastMin$6$i38 = 0, $contrastMin$7$i35 = 0, $contrastMin$8$i = 0, $contrastMin$8$i$lcssa = 0, $contrastMin$9$i44 = 0, $corner$i = 0, $dirCode$i = 0, $errorCodeMtx$0 = 0, $errorCodePatt$0 = 0, $ext_patt = 0, $i$2$i$lcssa = 0, $i$2$i47 = 0, $i$3$i24 = 0, $i$4$i33 = 0, $i$4$off$i = 0, $i$5$i36 = 0, $i$6$i45 = 0, $i$6$off$i = 0, $j$0$i27 = 0, $j$0$off$i = 0, $j$1$i30 = 0, $j$2$i39 = 0, $j$2$off$i = 0, $j$3$i42 = 0, $min$1$i = 0, $min$1$i$1 = 0, $min$1$i$2 = 0, $or$cond4454$i = 0, $recd127$i = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 12448 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $dirCode$i = sp + 12440 | 0;\n $corner$i = sp + 8 | 0;\n $code$i = sp;\n $recd127$i = sp + 12312 | 0;\n $ext_patt = sp + 24 | 0;\n do if (($pattDetectMode + -2 | 0) >>> 0 < 3) {\n  if (($matrixCodeType | 0) != 2830) {\n   $200 = $matrixCodeType & 255;\n   if ((_arPattGetImage2($imageProcMode, 2, $200, $200 * 3 | 0, $image, $xsize, $ysize, $pixelFormat, $paramLTf, $vertex, $pattRatio, $ext_patt) | 0) < 0) {\n    HEAP32[$codeMatrix >> 2] = -1;\n    $errorCodeMtx$0 = -6;\n    break;\n   }\n   $204 = _get_matrix_code($ext_patt, $200, $codeMatrix, $dirMatrix, $cfMatrix, $matrixCodeType, $errorCorrected) | 0;\n   if (!$codeGlobalID_p) {\n    $errorCodeMtx$0 = $204;\n    break;\n   }\n   $206 = $codeGlobalID_p;\n   HEAP32[$206 >> 2] = 0;\n   HEAP32[$206 + 4 >> 2] = 0;\n   $errorCodeMtx$0 = $204;\n   break;\n  }\n  if ((_arPattGetImage2($imageProcMode, 2, 14, 42, $image, $xsize, $ysize, $pixelFormat, $paramLTf, $vertex, .875, $ext_patt) | 0) < 0) {\n   HEAP32[$codeMatrix >> 2] = -1;\n   $errorCodeMtx$0 = -6;\n   break;\n  }\n  HEAP32[$corner$i >> 2] = 0;\n  HEAP32[$corner$i + 4 >> 2] = 182;\n  HEAP32[$corner$i + 8 >> 2] = 195;\n  HEAP32[$corner$i + 12 >> 2] = 13;\n  $8 = HEAP8[$ext_patt + (HEAP32[$corner$i >> 2] | 0) >> 0] | 0;\n  $$max$0$i = ($8 & 255) > 0 ? $8 : 0;\n  $min$1$i = ($8 & 255) < 255 ? $8 : -1;\n  $14 = HEAP8[$ext_patt + (HEAP32[$corner$i + 4 >> 2] | 0) >> 0] | 0;\n  $$max$0$i$1 = ($14 & 255) > ($$max$0$i & 255) ? $14 : $$max$0$i;\n  $min$1$i$1 = ($14 & 255) < ($min$1$i & 255) ? $14 : $min$1$i;\n  $20 = HEAP8[$ext_patt + (HEAP32[$corner$i + 8 >> 2] | 0) >> 0] | 0;\n  $$max$0$i$2 = ($20 & 255) > ($$max$0$i$1 & 255) ? $20 : $$max$0$i$1;\n  $min$1$i$2 = ($20 & 255) < ($min$1$i$1 & 255) ? $20 : $min$1$i$1;\n  $26 = HEAP8[$ext_patt + (HEAP32[$corner$i + 12 >> 2] | 0) >> 0] | 0;\n  $29 = (($26 & 255) > ($$max$0$i$2 & 255) ? $26 : $$max$0$i$2) & 255;\n  $30 = (($26 & 255) < ($min$1$i$2 & 255) ? $26 : $min$1$i$2) & 255;\n  L13 : do if (($29 - $30 | 0) < 30) {\n   HEAP32[$dirMatrix >> 2] = 0;\n   HEAPF64[$cfMatrix >> 3] = -1.0;\n   $$0$i = -2;\n   $186 = 0;\n   $188 = 0;\n  } else {\n   $34 = ($29 + $30 | 0) >>> 1;\n   HEAP8[$dirCode$i >> 0] = (HEAPU8[$ext_patt + (HEAP32[$corner$i >> 2] | 0) >> 0] | 0) >>> 0 < $34 >>> 0 & 1;\n   HEAP8[$dirCode$i + 1 >> 0] = (HEAPU8[$ext_patt + (HEAP32[$corner$i + 4 >> 2] | 0) >> 0] | 0) >>> 0 < $34 >>> 0 & 1;\n   HEAP8[$dirCode$i + 2 >> 0] = (HEAPU8[$ext_patt + (HEAP32[$corner$i + 8 >> 2] | 0) >> 0] | 0) >>> 0 < $34 >>> 0 & 1;\n   HEAP8[$dirCode$i + 3 >> 0] = (HEAPU8[$ext_patt + (HEAP32[$corner$i + 12 >> 2] | 0) >> 0] | 0) >>> 0 < $34 >>> 0 & 1;\n   $i$2$i47 = 0;\n   while (1) {\n    $68 = $i$2$i47 + 1 | 0;\n    if ((HEAP8[$dirCode$i + $i$2$i47 >> 0] | 0) == 1) if ((HEAP8[$dirCode$i + (($68 | 0) % 4 | 0) >> 0] | 0) == 1) if (!(HEAP8[$dirCode$i + (($i$2$i47 + 2 | 0) % 4 | 0) >> 0] | 0)) {\n     $i$2$i$lcssa = $i$2$i47;\n     break;\n    }\n    if (($68 | 0) < 4) $i$2$i47 = $68; else {\n     $i$2$i$lcssa = $68;\n     break;\n    }\n   }\n   switch ($i$2$i$lcssa | 0) {\n   case 4:\n    {\n     HEAP32[$dirMatrix >> 2] = 0;\n     HEAPF64[$cfMatrix >> 3] = -1.0;\n     $$0$i = -3;\n     $186 = 0;\n     $188 = 0;\n     break L13;\n     break;\n    }\n   case 0:\n    {\n     $bit$0$i28 = 119;\n     $contrastMin$0$i26 = 255;\n     $j$0$i27 = 0;\n     while (1) {\n      $j$0$off$i = $j$0$i27 + -3 | 0;\n      $80 = ($j$0$i27 & -2 | 0) == 12;\n      $81 = $j$0$i27 * 14 | 0;\n      $bit$1$i25 = $bit$0$i28;\n      $contrastMin$1$i23 = $contrastMin$0$i26;\n      $i$3$i24 = 0;\n      while (1) {\n       if (($i$3$i24 + -3 | $j$0$off$i) >>> 0 < 8) {\n        $bit$2$i = $bit$1$i25;\n        $contrastMin$2$i = $contrastMin$1$i23;\n       } else {\n        $84 = $i$3$i24 & -2;\n        if (($i$3$i24 | $j$0$i27) >>> 0 < 2) {\n         $bit$2$i = $bit$1$i25;\n         $contrastMin$2$i = $contrastMin$1$i23;\n        } else if ($80 & (($84 | 0) == 0 | ($84 | 0) == 12)) {\n         $bit$2$i = $bit$1$i25;\n         $contrastMin$2$i = $contrastMin$1$i23;\n        } else {\n         $93 = (HEAPU8[$ext_patt + ($i$3$i24 + $81) >> 0] | 0) - $34 | 0;\n         HEAP8[$recd127$i + $bit$1$i25 >> 0] = $93 >>> 31;\n         $97 = ($93 | 0) > -1 ? $93 : 0 - $93 | 0;\n         $bit$2$i = $bit$1$i25 + -1 | 0;\n         $contrastMin$2$i = ($97 | 0) < ($contrastMin$1$i23 | 0) ? $97 : $contrastMin$1$i23;\n        }\n       }\n       $i$3$i24 = $i$3$i24 + 1 | 0;\n       if (($i$3$i24 | 0) == 14) {\n        $bit$2$i$lcssa = $bit$2$i;\n        $contrastMin$2$i$lcssa = $contrastMin$2$i;\n        break;\n       } else {\n        $bit$1$i25 = $bit$2$i;\n        $contrastMin$1$i23 = $contrastMin$2$i;\n       }\n      }\n      $100 = $j$0$i27 + 1 | 0;\n      if (($100 | 0) == 14) {\n       $contrastMin$12$i = $contrastMin$2$i$lcssa;\n       break;\n      } else {\n       $bit$0$i28 = $bit$2$i$lcssa;\n       $contrastMin$0$i26 = $contrastMin$2$i$lcssa;\n       $j$0$i27 = $100;\n      }\n     }\n     break;\n    }\n   case 1:\n    {\n     $bit$3$i34 = 119;\n     $contrastMin$3$i32 = 255;\n     $i$4$i33 = 0;\n     while (1) {\n      $i$4$off$i = $i$4$i33 + -3 | 0;\n      $101 = $i$4$i33 & -2;\n      $102 = ($101 | 0) == 0;\n      $103 = ($101 | 0) == 12;\n      $bit$4$i31 = $bit$3$i34;\n      $contrastMin$4$i29 = $contrastMin$3$i32;\n      $j$1$i30 = 13;\n      while (1) {\n       if (($j$1$i30 + -3 | $i$4$off$i) >>> 0 < 8) {\n        $bit$5$i = $bit$4$i31;\n        $contrastMin$5$i = $contrastMin$4$i29;\n       } else {\n        $107 = ($j$1$i30 & -2 | 0) == 12;\n        if ($102 & $107) {\n         $bit$5$i = $bit$4$i31;\n         $contrastMin$5$i = $contrastMin$4$i29;\n        } else if ($103 & ($j$1$i30 >>> 0 < 2 | $107)) {\n         $bit$5$i = $bit$4$i31;\n         $contrastMin$5$i = $contrastMin$4$i29;\n        } else {\n         $114 = (HEAPU8[$ext_patt + (($j$1$i30 * 14 | 0) + $i$4$i33) >> 0] | 0) - $34 | 0;\n         HEAP8[$recd127$i + $bit$4$i31 >> 0] = $114 >>> 31;\n         $118 = ($114 | 0) > -1 ? $114 : 0 - $114 | 0;\n         $bit$5$i = $bit$4$i31 + -1 | 0;\n         $contrastMin$5$i = ($118 | 0) < ($contrastMin$4$i29 | 0) ? $118 : $contrastMin$4$i29;\n        }\n       }\n       if (($j$1$i30 | 0) > 0) {\n        $bit$4$i31 = $bit$5$i;\n        $contrastMin$4$i29 = $contrastMin$5$i;\n        $j$1$i30 = $j$1$i30 + -1 | 0;\n       } else {\n        $bit$5$i$lcssa = $bit$5$i;\n        $contrastMin$5$i$lcssa = $contrastMin$5$i;\n        break;\n       }\n      }\n      $122 = $i$4$i33 + 1 | 0;\n      if (($122 | 0) == 14) {\n       $contrastMin$12$i = $contrastMin$5$i$lcssa;\n       break;\n      } else {\n       $bit$3$i34 = $bit$5$i$lcssa;\n       $contrastMin$3$i32 = $contrastMin$5$i$lcssa;\n       $i$4$i33 = $122;\n      }\n     }\n     break;\n    }\n   case 2:\n    {\n     $bit$6$i40 = 119;\n     $contrastMin$6$i38 = 255;\n     $j$2$i39 = 13;\n     while (1) {\n      $j$2$off$i = $j$2$i39 + -3 | 0;\n      $or$cond4454$i = $j$2$i39 >>> 0 < 2 | ($j$2$i39 & -2 | 0) == 12;\n      $126 = $j$2$i39 * 14 | 0;\n      $bit$7$i37 = $bit$6$i40;\n      $contrastMin$7$i35 = $contrastMin$6$i38;\n      $i$5$i36 = 13;\n      while (1) {\n       if (($i$5$i36 + -3 | $j$2$off$i) >>> 0 < 8) {\n        $bit$8$i = $bit$7$i37;\n        $contrastMin$8$i = $contrastMin$7$i35;\n       } else if (($i$5$i36 | $j$2$i39) >>> 0 < 2 | $or$cond4454$i & ($i$5$i36 & -2 | 0) == 12) {\n        $bit$8$i = $bit$7$i37;\n        $contrastMin$8$i = $contrastMin$7$i35;\n       } else {\n        $137 = (HEAPU8[$ext_patt + ($i$5$i36 + $126) >> 0] | 0) - $34 | 0;\n        HEAP8[$recd127$i + $bit$7$i37 >> 0] = $137 >>> 31;\n        $141 = ($137 | 0) > -1 ? $137 : 0 - $137 | 0;\n        $bit$8$i = $bit$7$i37 + -1 | 0;\n        $contrastMin$8$i = ($141 | 0) < ($contrastMin$7$i35 | 0) ? $141 : $contrastMin$7$i35;\n       }\n       if (($i$5$i36 | 0) > 0) {\n        $bit$7$i37 = $bit$8$i;\n        $contrastMin$7$i35 = $contrastMin$8$i;\n        $i$5$i36 = $i$5$i36 + -1 | 0;\n       } else {\n        $bit$8$i$lcssa = $bit$8$i;\n        $contrastMin$8$i$lcssa = $contrastMin$8$i;\n        break;\n       }\n      }\n      if (($j$2$i39 | 0) > 0) {\n       $bit$6$i40 = $bit$8$i$lcssa;\n       $contrastMin$6$i38 = $contrastMin$8$i$lcssa;\n       $j$2$i39 = $j$2$i39 + -1 | 0;\n      } else {\n       $contrastMin$12$i = $contrastMin$8$i$lcssa;\n       break;\n      }\n     }\n     break;\n    }\n   case 3:\n    {\n     $bit$9$i46 = 119;\n     $contrastMin$9$i44 = 255;\n     $i$6$i45 = 13;\n     while (1) {\n      $i$6$off$i = $i$6$i45 + -3 | 0;\n      $147 = $i$6$i45 & -2;\n      $148 = ($147 | 0) == 12;\n      $149 = ($147 | 0) == 0;\n      $bit$10$i43 = $bit$9$i46;\n      $contrastMin$10$i41 = $contrastMin$9$i44;\n      $j$3$i42 = 0;\n      while (1) {\n       if (($j$3$i42 + -3 | $i$6$off$i) >>> 0 < 8) {\n        $bit$11$i = $bit$10$i43;\n        $contrastMin$11$i = $contrastMin$10$i41;\n       } else if ($148 & $j$3$i42 >>> 0 < 2 | ($j$3$i42 | $i$6$i45) >>> 0 < 2) {\n        $bit$11$i = $bit$10$i43;\n        $contrastMin$11$i = $contrastMin$10$i41;\n       } else if ($149 & ($j$3$i42 & -2 | 0) == 12) {\n        $bit$11$i = $bit$10$i43;\n        $contrastMin$11$i = $contrastMin$10$i41;\n       } else {\n        $162 = (HEAPU8[$ext_patt + (($j$3$i42 * 14 | 0) + $i$6$i45) >> 0] | 0) - $34 | 0;\n        HEAP8[$recd127$i + $bit$10$i43 >> 0] = $162 >>> 31;\n        $166 = ($162 | 0) > -1 ? $162 : 0 - $162 | 0;\n        $bit$11$i = $bit$10$i43 + -1 | 0;\n        $contrastMin$11$i = ($166 | 0) < ($contrastMin$10$i41 | 0) ? $166 : $contrastMin$10$i41;\n       }\n       $j$3$i42 = $j$3$i42 + 1 | 0;\n       if (($j$3$i42 | 0) == 14) {\n        $bit$11$i$lcssa = $bit$11$i;\n        $contrastMin$11$i$lcssa = $contrastMin$11$i;\n        break;\n       } else {\n        $bit$10$i43 = $bit$11$i;\n        $contrastMin$10$i41 = $contrastMin$11$i;\n       }\n      }\n      if (($i$6$i45 | 0) > 0) {\n       $bit$9$i46 = $bit$11$i$lcssa;\n       $contrastMin$9$i44 = $contrastMin$11$i$lcssa;\n       $i$6$i45 = $i$6$i45 + -1 | 0;\n      } else {\n       $contrastMin$12$i = $contrastMin$11$i$lcssa;\n       break;\n      }\n     }\n     break;\n    }\n   default:\n    $contrastMin$12$i = 255;\n   }\n   HEAP32[$dirMatrix >> 2] = $i$2$i$lcssa;\n   HEAPF64[$cfMatrix >> 3] = ($contrastMin$12$i | 0) > 30 ? 1.0 : +($contrastMin$12$i | 0) / 30.0;\n   $175 = _decode_bch(2830, 0, 0, $recd127$i, $code$i) | 0;\n   if (($175 | 0) < 0) {\n    $$0$i = -4;\n    $186 = 0;\n    $188 = 0;\n   } else {\n    if ($errorCorrected) HEAP32[$errorCorrected >> 2] = $175;\n    $178 = $code$i;\n    $$0$i = 0;\n    $186 = HEAP32[$178 >> 2] | 0;\n    $188 = HEAP32[$178 + 4 >> 2] | 0;\n   }\n  } while (0);\n  if (($$0$i | 0) < 0) {\n   HEAP32[$codeMatrix >> 2] = -1;\n   $errorCodeMtx$0 = $$0$i;\n   break;\n  }\n  if (($186 | 0) == -1 & ($188 | 0) == -1) {\n   HEAP32[$codeMatrix >> 2] = -1;\n   $errorCodeMtx$0 = -5;\n   break;\n  }\n  HEAP32[$codeMatrix >> 2] = ($186 & -32768 | 0) == 0 & 0 == 0 ? $186 & 32767 : 0;\n  if (!$codeGlobalID_p) $errorCodeMtx$0 = 0; else {\n   $196 = $codeGlobalID_p;\n   HEAP32[$196 >> 2] = $186;\n   HEAP32[$196 + 4 >> 2] = $188;\n   $errorCodeMtx$0 = 0;\n  }\n } else $errorCodeMtx$0 = 1; while (0);\n L78 : do switch ($pattDetectMode | 0) {\n case 0:\n case 1:\n case 3:\n case 4:\n  {\n   if (!$pattHandle) {\n    HEAP32[$codePatt >> 2] = -1;\n    $errorCodePatt$0 = -1;\n    break L78;\n   }\n   $211 = $pattHandle + 28 | 0;\n   $212 = HEAP32[$211 >> 2] | 0;\n   $213 = $212 << 2;\n   switch ($pattDetectMode | 0) {\n   case 0:\n   case 3:\n    {\n     if ((_arPattGetImage2($imageProcMode, 0, $212, $213, $image, $xsize, $ysize, $pixelFormat, $paramLTf, $vertex, $pattRatio, $ext_patt) | 0) < 0) {\n      HEAP32[$codePatt >> 2] = -1;\n      $errorCodePatt$0 = -6;\n      break L78;\n     } else {\n      $errorCodePatt$0 = _pattern_match($pattHandle, 0, $ext_patt, HEAP32[$211 >> 2] | 0, $codePatt, $dirPatt, $cfPatt) | 0;\n      break L78;\n     }\n     break;\n    }\n   default:\n    if ((_arPattGetImage2($imageProcMode, 1, $212, $213, $image, $xsize, $ysize, $pixelFormat, $paramLTf, $vertex, $pattRatio, $ext_patt) | 0) < 0) {\n     HEAP32[$codePatt >> 2] = -1;\n     $errorCodePatt$0 = -6;\n     break L78;\n    } else {\n     $errorCodePatt$0 = _pattern_match($pattHandle, 1, $ext_patt, HEAP32[$211 >> 2] | 0, $codePatt, $dirPatt, $cfPatt) | 0;\n     break L78;\n    }\n   }\n   break;\n  }\n default:\n  $errorCodePatt$0 = 1;\n } while (0);\n if (($errorCodeMtx$0 | 0) == 1) $$0 = $errorCodePatt$0; else if (($errorCodePatt$0 | 0) == 1) $$0 = $errorCodeMtx$0; else $$0 = ($errorCodePatt$0 & $errorCodeMtx$0 | 0) < 0 ? $errorCodePatt$0 : 0;\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubEWR3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $102 = 0, $108 = 0, $113 = 0, $116 = 0, $133 = 0, $135 = 0, $137 = 0, $141 = 0, $145 = 0, $148 = 0, $150 = 0, $154 = 0, $158 = 0, $162 = 0, $167 = 0, $169 = 0, $17 = 0, $173 = 0, $177 = 0, $18 = 0, $181 = 0, $187 = 0, $19 = 0, $190 = 0, $192 = 0, $196 = 0, $200 = 0, $204 = 0, $207 = 0, $212 = 0, $227 = 0, $228 = 0, $229 = 0, $236 = 0, $238 = 0, $244 = 0, $248 = 0, $249 = 0, $256 = 0, $27 = 0, $270 = 0, $271 = 0, $274 = 0, $281 = 0, $282 = 0, $29 = 0, $290 = 0, $293 = 0, $294 = 0, $298 = 0, $301 = 0, $305 = 0, $308 = 0, $312 = 0, $315 = 0, $319 = 0, $323 = 0, $326 = 0, $327 = 0, $333 = 0, $42 = 0, $45 = 0, $47 = 0, $51 = 0, $55 = 0, $61 = 0, $62 = 0, $65 = 0, $66 = 0, $67 = 0, $70 = 0, $73 = 0, $9 = 0, $90 = 0, $92 = 0, $94 = 0, $98 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$088 = 0;\n  $pnt1$090 = $0;\n  $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$089 >> 1] = 0;\n   HEAP16[$pnt1$090 >> 1] = 0;\n   $i$088 = $i$088 + 1 | 0;\n   if (($i$088 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$090 = $pnt1$090 + 2 | 0;\n    $pnt2$089 = $pnt2$089 + 2 | 0;\n   }\n  }\n }\n $9 = $labelingThresh * 3 | 0;\n $10 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$182 = 0;\n  $pnt1$184 = $0;\n  $pnt2$183 = $0 + ($10 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$183 >> 1] = 0;\n   HEAP16[$pnt1$184 >> 1] = 0;\n   $i$182 = $i$182 + 1 | 0;\n   if (($i$182 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;\n    $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0;\n   }\n  }\n }\n $17 = $labelInfo + 1179664 | 0;\n $18 = $xsize + 1 | 0;\n $19 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $27 = ($10 | 0) > 1;\n  $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $18 | 0;\n  $j$075 = 1;\n  $pnt$079 = $image + ($18 << 1) | 0;\n  $pnt2$278 = $0 + ($18 << 1) | 0;\n  $wk_max$074 = 0;\n  L13 : while (1) {\n   if ($27) {\n    $dpnt$166 = $dpnt$077;\n    $i$264 = 1;\n    $pnt$168 = $pnt$079;\n    $pnt2$367 = $pnt2$278;\n    $wk_max$159 = $wk_max$074;\n    while (1) {\n     $29 = HEAPU8[$pnt$168 >> 0] | 0;\n     do if ((($29 & 240) + 24 + ($29 << 4 & 240) + ((HEAPU8[$pnt$168 + 1 >> 0] | 0) & 240) | 0) > ($9 | 0)) {\n      HEAP8[$dpnt$166 >> 0] = -1;\n      $42 = HEAP16[$pnt2$367 + ($19 << 1) >> 1] | 0;\n      if ($42 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$367 >> 1] = $42;\n       $45 = ($42 << 16 >> 16) * 7 | 0;\n       $47 = $labelInfo + 1310736 + ($45 + -7 << 2) | 0;\n       HEAP32[$47 >> 2] = (HEAP32[$47 >> 2] | 0) + 1;\n       $51 = $labelInfo + 1310736 + ($45 + -6 << 2) | 0;\n       HEAP32[$51 >> 2] = (HEAP32[$51 >> 2] | 0) + $i$264;\n       $55 = $labelInfo + 1310736 + ($45 + -5 << 2) | 0;\n       HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + $j$075;\n       HEAP32[$labelInfo + 1310736 + ($45 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $61 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0;\n      $62 = $61 << 16 >> 16;\n      $65 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0;\n      $66 = $65 << 16 >> 16;\n      $67 = $65 << 16 >> 16 > 0;\n      if ($61 << 16 >> 16 <= 0) {\n       if ($67) {\n        HEAP16[$pnt2$367 >> 1] = $65;\n        $167 = $66 * 7 | 0;\n        $169 = $labelInfo + 1310736 + ($167 + -7 << 2) | 0;\n        HEAP32[$169 >> 2] = (HEAP32[$169 >> 2] | 0) + 1;\n        $173 = $labelInfo + 1310736 + ($167 + -6 << 2) | 0;\n        HEAP32[$173 >> 2] = (HEAP32[$173 >> 2] | 0) + $i$264;\n        $177 = $labelInfo + 1310736 + ($167 + -5 << 2) | 0;\n        HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + $j$075;\n        $181 = $labelInfo + 1310736 + ($167 + -3 << 2) | 0;\n        if ((HEAP32[$181 >> 2] | 0) < ($i$264 | 0)) HEAP32[$181 >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($167 + -1 << 2) >> 2] = $j$075;\n        $wk_max$2 = $wk_max$159;\n        break;\n       }\n       $187 = HEAP16[$pnt2$367 + -2 >> 1] | 0;\n       if ($187 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$367 >> 1] = $187;\n        $190 = ($187 << 16 >> 16) * 7 | 0;\n        $192 = $labelInfo + 1310736 + ($190 + -7 << 2) | 0;\n        HEAP32[$192 >> 2] = (HEAP32[$192 >> 2] | 0) + 1;\n        $196 = $labelInfo + 1310736 + ($190 + -6 << 2) | 0;\n        HEAP32[$196 >> 2] = (HEAP32[$196 >> 2] | 0) + $i$264;\n        $200 = $labelInfo + 1310736 + ($190 + -5 << 2) | 0;\n        HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + $j$075;\n        $204 = $labelInfo + 1310736 + ($190 + -3 << 2) | 0;\n        if ((HEAP32[$204 >> 2] | 0) >= ($i$264 | 0)) {\n         $wk_max$2 = $wk_max$159;\n         break;\n        }\n        HEAP32[$204 >> 2] = $i$264;\n        $wk_max$2 = $wk_max$159;\n        break;\n       } else {\n        $207 = $wk_max$159 + 1 | 0;\n        if (($wk_max$159 | 0) > 32767) break L13;\n        HEAP16[$pnt2$367 >> 1] = $207;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $207 << 16 >> 16;\n        $212 = $wk_max$159 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($212 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($212 + 1 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($212 + 2 << 2) >> 2] = $j$075;\n        HEAP32[$labelInfo + 1310736 + ($212 + 3 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($212 + 4 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($212 + 5 << 2) >> 2] = $j$075;\n        HEAP32[$labelInfo + 1310736 + ($212 + 6 << 2) >> 2] = $j$075;\n        $wk_max$2 = $207;\n        break;\n       }\n      }\n      if ($67) {\n       $70 = HEAP32[$labelInfo + 1179664 + ($62 + -1 << 2) >> 2] | 0;\n       $73 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0;\n       if (($70 | 0) > ($73 | 0)) {\n        HEAP16[$pnt2$367 >> 1] = $73;\n        if (($wk_max$159 | 0) > 0) {\n         $k$055 = 0;\n         $wk$056 = $17;\n         while (1) {\n          if ((HEAP32[$wk$056 >> 2] | 0) == ($70 | 0)) HEAP32[$wk$056 >> 2] = $73;\n          $k$055 = $k$055 + 1 | 0;\n          if (($k$055 | 0) >= ($wk_max$159 | 0)) {\n           $90 = $73;\n           break;\n          } else $wk$056 = $wk$056 + 4 | 0;\n         }\n        } else $90 = $73;\n       } else {\n        HEAP16[$pnt2$367 >> 1] = $70;\n        if (($70 | 0) < ($73 | 0) & ($wk_max$159 | 0) > 0) {\n         $k$152 = 0;\n         $wk$153 = $17;\n         while (1) {\n          if ((HEAP32[$wk$153 >> 2] | 0) == ($73 | 0)) HEAP32[$wk$153 >> 2] = $70;\n          $k$152 = $k$152 + 1 | 0;\n          if (($k$152 | 0) >= ($wk_max$159 | 0)) {\n           $90 = $70;\n           break;\n          } else $wk$153 = $wk$153 + 4 | 0;\n         }\n        } else $90 = $70;\n       }\n       $92 = ($90 << 16 >> 16) * 7 | 0;\n       $94 = $labelInfo + 1310736 + ($92 + -7 << 2) | 0;\n       HEAP32[$94 >> 2] = (HEAP32[$94 >> 2] | 0) + 1;\n       $98 = $labelInfo + 1310736 + ($92 + -6 << 2) | 0;\n       HEAP32[$98 >> 2] = (HEAP32[$98 >> 2] | 0) + $i$264;\n       $102 = $labelInfo + 1310736 + ($92 + -5 << 2) | 0;\n       HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + $j$075;\n       HEAP32[$labelInfo + 1310736 + ($92 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $108 = HEAP16[$pnt2$367 + -2 >> 1] | 0;\n      if ($108 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$367 >> 1] = $61;\n       $148 = $62 * 7 | 0;\n       $150 = $labelInfo + 1310736 + ($148 + -7 << 2) | 0;\n       HEAP32[$150 >> 2] = (HEAP32[$150 >> 2] | 0) + 1;\n       $154 = $labelInfo + 1310736 + ($148 + -6 << 2) | 0;\n       HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + $i$264;\n       $158 = $labelInfo + 1310736 + ($148 + -5 << 2) | 0;\n       HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + $j$075;\n       $162 = $labelInfo + 1310736 + ($148 + -4 << 2) | 0;\n       if ((HEAP32[$162 >> 2] | 0) > ($i$264 | 0)) HEAP32[$162 >> 2] = $i$264;\n       HEAP32[$labelInfo + 1310736 + ($148 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $113 = HEAP32[$labelInfo + 1179664 + ($62 + -1 << 2) >> 2] | 0;\n      $116 = HEAP32[$labelInfo + 1179664 + (($108 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($113 | 0) > ($116 | 0)) {\n       HEAP16[$pnt2$367 >> 1] = $116;\n       if (($wk_max$159 | 0) > 0) {\n        $k$248 = 0;\n        $wk$249 = $17;\n        while (1) {\n         if ((HEAP32[$wk$249 >> 2] | 0) == ($113 | 0)) HEAP32[$wk$249 >> 2] = $116;\n         $k$248 = $k$248 + 1 | 0;\n         if (($k$248 | 0) >= ($wk_max$159 | 0)) {\n          $133 = $116;\n          break;\n         } else $wk$249 = $wk$249 + 4 | 0;\n        }\n       } else $133 = $116;\n      } else {\n       HEAP16[$pnt2$367 >> 1] = $113;\n       if (($113 | 0) < ($116 | 0) & ($wk_max$159 | 0) > 0) {\n        $k$345 = 0;\n        $wk$346 = $17;\n        while (1) {\n         if ((HEAP32[$wk$346 >> 2] | 0) == ($116 | 0)) HEAP32[$wk$346 >> 2] = $113;\n         $k$345 = $k$345 + 1 | 0;\n         if (($k$345 | 0) >= ($wk_max$159 | 0)) {\n          $133 = $113;\n          break;\n         } else $wk$346 = $wk$346 + 4 | 0;\n        }\n       } else $133 = $113;\n      }\n      $135 = ($133 << 16 >> 16) * 7 | 0;\n      $137 = $labelInfo + 1310736 + ($135 + -7 << 2) | 0;\n      HEAP32[$137 >> 2] = (HEAP32[$137 >> 2] | 0) + 1;\n      $141 = $labelInfo + 1310736 + ($135 + -6 << 2) | 0;\n      HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + $i$264;\n      $145 = $labelInfo + 1310736 + ($135 + -5 << 2) | 0;\n      HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $j$075;\n      $wk_max$2 = $wk_max$159;\n     } else {\n      HEAP16[$pnt2$367 >> 1] = 0;\n      HEAP8[$dpnt$166 >> 0] = 0;\n      $wk_max$2 = $wk_max$159;\n     } while (0);\n     $i$264 = $i$264 + 1 | 0;\n     $227 = $pnt$168 + 2 | 0;\n     $228 = $pnt2$367 + 2 | 0;\n     $229 = $dpnt$166 + 1 | 0;\n     if (($i$264 | 0) >= ($10 | 0)) {\n      $dpnt$1$lcssa = $229;\n      $pnt$1$lcssa = $227;\n      $pnt2$3$lcssa = $228;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $dpnt$166 = $229;\n      $pnt$168 = $227;\n      $pnt2$367 = $228;\n      $wk_max$159 = $wk_max$2;\n     }\n    }\n   } else {\n    $dpnt$1$lcssa = $dpnt$077;\n    $pnt$1$lcssa = $pnt$079;\n    $pnt2$3$lcssa = $pnt2$278;\n    $wk_max$1$lcssa = $wk_max$074;\n   }\n   $j$075 = $j$075 + 1 | 0;\n   if (($j$075 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $dpnt$077 = $dpnt$1$lcssa + 2 | 0;\n    $pnt$079 = $pnt$1$lcssa + 4 | 0;\n    $pnt2$278 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$074 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $236 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$341 = 1;\n   $j$142 = 1;\n   $wk$443 = $17;\n   while (1) {\n    $238 = HEAP32[$wk$443 >> 2] | 0;\n    if (($238 | 0) == ($i$341 | 0)) {\n     $244 = $j$142;\n     $j$2 = $j$142 + 1 | 0;\n    } else {\n     $244 = HEAP32[$labelInfo + 1179664 + ($238 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$142;\n    }\n    HEAP32[$wk$443 >> 2] = $244;\n    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$341 = $i$341 + 1 | 0;\n     $j$142 = $j$2;\n     $wk$443 = $wk$443 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $248 = $labelInfo + 8 | 0;\n  $249 = $j$1$lcssa + -1 | 0;\n  HEAP32[$248 >> 2] = $249;\n  if (!$249) $$0 = 0; else {\n   _memset($236 | 0, 0, $249 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $249 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$439 = 0;\n    do {\n     $256 = $i$439 << 2;\n     HEAP32[$labelInfo + 131084 + ($256 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($256 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($256 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($256 | 3) << 2) >> 2] = 0;\n     $i$439 = $i$439 + 1 | 0;\n    } while (($i$439 | 0) < (HEAP32[$248 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$537 = 0;\n    do {\n     $270 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;\n     $271 = $i$537 * 7 | 0;\n     $274 = $labelInfo + 12 + ($270 << 2) | 0;\n     HEAP32[$274 >> 2] = (HEAP32[$274 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($271 << 2) >> 2] | 0);\n     $281 = $270 << 1;\n     $282 = $labelInfo + 655376 + ($281 << 3) | 0;\n     HEAPF64[$282 >> 3] = +HEAPF64[$282 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($271 + 1 << 2) >> 2] | 0);\n     $290 = $labelInfo + 655376 + (($281 | 1) << 3) | 0;\n     HEAPF64[$290 >> 3] = +HEAPF64[$290 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($271 + 2 << 2) >> 2] | 0);\n     $293 = $270 << 2;\n     $294 = $labelInfo + 131084 + ($293 << 2) | 0;\n     $298 = HEAP32[$labelInfo + 1310736 + ($271 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$294 >> 2] | 0) > ($298 | 0)) HEAP32[$294 >> 2] = $298;\n     $301 = $labelInfo + 131084 + (($293 | 1) << 2) | 0;\n     $305 = HEAP32[$labelInfo + 1310736 + ($271 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$301 >> 2] | 0) < ($305 | 0)) HEAP32[$301 >> 2] = $305;\n     $308 = $labelInfo + 131084 + (($293 | 2) << 2) | 0;\n     $312 = HEAP32[$labelInfo + 1310736 + ($271 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$308 >> 2] | 0) > ($312 | 0)) HEAP32[$308 >> 2] = $312;\n     $315 = $labelInfo + 131084 + (($293 | 3) << 2) | 0;\n     $319 = HEAP32[$labelInfo + 1310736 + ($271 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$315 >> 2] | 0) < ($319 | 0)) HEAP32[$315 >> 2] = $319;\n     $i$537 = $i$537 + 1 | 0;\n    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$248 >> 2] | 0) > 0) {\n    $i$636 = 0;\n    do {\n     $323 = $labelInfo + 12 + ($i$636 << 2) | 0;\n     $326 = $i$636 << 1;\n     $327 = $labelInfo + 655376 + ($326 << 3) | 0;\n     HEAPF64[$327 >> 3] = +HEAPF64[$327 >> 3] / +(HEAP32[$323 >> 2] | 0);\n     $333 = $labelInfo + 655376 + (($326 | 1) << 3) | 0;\n     HEAPF64[$333 >> 3] = +HEAPF64[$333 >> 3] / +(HEAP32[$323 >> 2] | 0);\n     $i$636 = $i$636 + 1 | 0;\n    } while (($i$636 | 0) < (HEAP32[$248 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubEBR3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $102 = 0, $108 = 0, $113 = 0, $116 = 0, $133 = 0, $135 = 0, $137 = 0, $141 = 0, $145 = 0, $148 = 0, $150 = 0, $154 = 0, $158 = 0, $162 = 0, $167 = 0, $169 = 0, $17 = 0, $173 = 0, $177 = 0, $18 = 0, $181 = 0, $187 = 0, $19 = 0, $190 = 0, $192 = 0, $196 = 0, $200 = 0, $204 = 0, $207 = 0, $212 = 0, $227 = 0, $228 = 0, $229 = 0, $236 = 0, $238 = 0, $244 = 0, $248 = 0, $249 = 0, $256 = 0, $27 = 0, $270 = 0, $271 = 0, $274 = 0, $281 = 0, $282 = 0, $29 = 0, $290 = 0, $293 = 0, $294 = 0, $298 = 0, $301 = 0, $305 = 0, $308 = 0, $312 = 0, $315 = 0, $319 = 0, $323 = 0, $326 = 0, $327 = 0, $333 = 0, $42 = 0, $45 = 0, $47 = 0, $51 = 0, $55 = 0, $61 = 0, $62 = 0, $65 = 0, $66 = 0, $67 = 0, $70 = 0, $73 = 0, $9 = 0, $90 = 0, $92 = 0, $94 = 0, $98 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$088 = 0;\n  $pnt1$090 = $0;\n  $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$089 >> 1] = 0;\n   HEAP16[$pnt1$090 >> 1] = 0;\n   $i$088 = $i$088 + 1 | 0;\n   if (($i$088 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$090 = $pnt1$090 + 2 | 0;\n    $pnt2$089 = $pnt2$089 + 2 | 0;\n   }\n  }\n }\n $9 = $labelingThresh * 3 | 0;\n $10 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$182 = 0;\n  $pnt1$184 = $0;\n  $pnt2$183 = $0 + ($10 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$183 >> 1] = 0;\n   HEAP16[$pnt1$184 >> 1] = 0;\n   $i$182 = $i$182 + 1 | 0;\n   if (($i$182 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;\n    $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0;\n   }\n  }\n }\n $17 = $labelInfo + 1179664 | 0;\n $18 = $xsize + 1 | 0;\n $19 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $27 = ($10 | 0) > 1;\n  $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $18 | 0;\n  $j$075 = 1;\n  $pnt$079 = $image + ($18 << 1) | 0;\n  $pnt2$278 = $0 + ($18 << 1) | 0;\n  $wk_max$074 = 0;\n  L13 : while (1) {\n   if ($27) {\n    $dpnt$166 = $dpnt$077;\n    $i$264 = 1;\n    $pnt$168 = $pnt$079;\n    $pnt2$367 = $pnt2$278;\n    $wk_max$159 = $wk_max$074;\n    while (1) {\n     $29 = HEAPU8[$pnt$168 >> 0] | 0;\n     do if ((($29 & 240) + 24 + ($29 << 4 & 240) + ((HEAPU8[$pnt$168 + 1 >> 0] | 0) & 240) | 0) > ($9 | 0)) {\n      HEAP16[$pnt2$367 >> 1] = 0;\n      HEAP8[$dpnt$166 >> 0] = 0;\n      $wk_max$2 = $wk_max$159;\n     } else {\n      HEAP8[$dpnt$166 >> 0] = -1;\n      $42 = HEAP16[$pnt2$367 + ($19 << 1) >> 1] | 0;\n      if ($42 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$367 >> 1] = $42;\n       $45 = ($42 << 16 >> 16) * 7 | 0;\n       $47 = $labelInfo + 1310736 + ($45 + -7 << 2) | 0;\n       HEAP32[$47 >> 2] = (HEAP32[$47 >> 2] | 0) + 1;\n       $51 = $labelInfo + 1310736 + ($45 + -6 << 2) | 0;\n       HEAP32[$51 >> 2] = (HEAP32[$51 >> 2] | 0) + $i$264;\n       $55 = $labelInfo + 1310736 + ($45 + -5 << 2) | 0;\n       HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + $j$075;\n       HEAP32[$labelInfo + 1310736 + ($45 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $61 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0;\n      $62 = $61 << 16 >> 16;\n      $65 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0;\n      $66 = $65 << 16 >> 16;\n      $67 = $65 << 16 >> 16 > 0;\n      if ($61 << 16 >> 16 <= 0) {\n       if ($67) {\n        HEAP16[$pnt2$367 >> 1] = $65;\n        $167 = $66 * 7 | 0;\n        $169 = $labelInfo + 1310736 + ($167 + -7 << 2) | 0;\n        HEAP32[$169 >> 2] = (HEAP32[$169 >> 2] | 0) + 1;\n        $173 = $labelInfo + 1310736 + ($167 + -6 << 2) | 0;\n        HEAP32[$173 >> 2] = (HEAP32[$173 >> 2] | 0) + $i$264;\n        $177 = $labelInfo + 1310736 + ($167 + -5 << 2) | 0;\n        HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + $j$075;\n        $181 = $labelInfo + 1310736 + ($167 + -3 << 2) | 0;\n        if ((HEAP32[$181 >> 2] | 0) < ($i$264 | 0)) HEAP32[$181 >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($167 + -1 << 2) >> 2] = $j$075;\n        $wk_max$2 = $wk_max$159;\n        break;\n       }\n       $187 = HEAP16[$pnt2$367 + -2 >> 1] | 0;\n       if ($187 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$367 >> 1] = $187;\n        $190 = ($187 << 16 >> 16) * 7 | 0;\n        $192 = $labelInfo + 1310736 + ($190 + -7 << 2) | 0;\n        HEAP32[$192 >> 2] = (HEAP32[$192 >> 2] | 0) + 1;\n        $196 = $labelInfo + 1310736 + ($190 + -6 << 2) | 0;\n        HEAP32[$196 >> 2] = (HEAP32[$196 >> 2] | 0) + $i$264;\n        $200 = $labelInfo + 1310736 + ($190 + -5 << 2) | 0;\n        HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + $j$075;\n        $204 = $labelInfo + 1310736 + ($190 + -3 << 2) | 0;\n        if ((HEAP32[$204 >> 2] | 0) >= ($i$264 | 0)) {\n         $wk_max$2 = $wk_max$159;\n         break;\n        }\n        HEAP32[$204 >> 2] = $i$264;\n        $wk_max$2 = $wk_max$159;\n        break;\n       } else {\n        $207 = $wk_max$159 + 1 | 0;\n        if (($wk_max$159 | 0) > 32767) break L13;\n        HEAP16[$pnt2$367 >> 1] = $207;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $207 << 16 >> 16;\n        $212 = $wk_max$159 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($212 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($212 + 1 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($212 + 2 << 2) >> 2] = $j$075;\n        HEAP32[$labelInfo + 1310736 + ($212 + 3 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($212 + 4 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($212 + 5 << 2) >> 2] = $j$075;\n        HEAP32[$labelInfo + 1310736 + ($212 + 6 << 2) >> 2] = $j$075;\n        $wk_max$2 = $207;\n        break;\n       }\n      }\n      if ($67) {\n       $70 = HEAP32[$labelInfo + 1179664 + ($62 + -1 << 2) >> 2] | 0;\n       $73 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0;\n       if (($70 | 0) > ($73 | 0)) {\n        HEAP16[$pnt2$367 >> 1] = $73;\n        if (($wk_max$159 | 0) > 0) {\n         $k$055 = 0;\n         $wk$056 = $17;\n         while (1) {\n          if ((HEAP32[$wk$056 >> 2] | 0) == ($70 | 0)) HEAP32[$wk$056 >> 2] = $73;\n          $k$055 = $k$055 + 1 | 0;\n          if (($k$055 | 0) >= ($wk_max$159 | 0)) {\n           $90 = $73;\n           break;\n          } else $wk$056 = $wk$056 + 4 | 0;\n         }\n        } else $90 = $73;\n       } else {\n        HEAP16[$pnt2$367 >> 1] = $70;\n        if (($70 | 0) < ($73 | 0) & ($wk_max$159 | 0) > 0) {\n         $k$152 = 0;\n         $wk$153 = $17;\n         while (1) {\n          if ((HEAP32[$wk$153 >> 2] | 0) == ($73 | 0)) HEAP32[$wk$153 >> 2] = $70;\n          $k$152 = $k$152 + 1 | 0;\n          if (($k$152 | 0) >= ($wk_max$159 | 0)) {\n           $90 = $70;\n           break;\n          } else $wk$153 = $wk$153 + 4 | 0;\n         }\n        } else $90 = $70;\n       }\n       $92 = ($90 << 16 >> 16) * 7 | 0;\n       $94 = $labelInfo + 1310736 + ($92 + -7 << 2) | 0;\n       HEAP32[$94 >> 2] = (HEAP32[$94 >> 2] | 0) + 1;\n       $98 = $labelInfo + 1310736 + ($92 + -6 << 2) | 0;\n       HEAP32[$98 >> 2] = (HEAP32[$98 >> 2] | 0) + $i$264;\n       $102 = $labelInfo + 1310736 + ($92 + -5 << 2) | 0;\n       HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + $j$075;\n       HEAP32[$labelInfo + 1310736 + ($92 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $108 = HEAP16[$pnt2$367 + -2 >> 1] | 0;\n      if ($108 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$367 >> 1] = $61;\n       $148 = $62 * 7 | 0;\n       $150 = $labelInfo + 1310736 + ($148 + -7 << 2) | 0;\n       HEAP32[$150 >> 2] = (HEAP32[$150 >> 2] | 0) + 1;\n       $154 = $labelInfo + 1310736 + ($148 + -6 << 2) | 0;\n       HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + $i$264;\n       $158 = $labelInfo + 1310736 + ($148 + -5 << 2) | 0;\n       HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + $j$075;\n       $162 = $labelInfo + 1310736 + ($148 + -4 << 2) | 0;\n       if ((HEAP32[$162 >> 2] | 0) > ($i$264 | 0)) HEAP32[$162 >> 2] = $i$264;\n       HEAP32[$labelInfo + 1310736 + ($148 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $113 = HEAP32[$labelInfo + 1179664 + ($62 + -1 << 2) >> 2] | 0;\n      $116 = HEAP32[$labelInfo + 1179664 + (($108 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($113 | 0) > ($116 | 0)) {\n       HEAP16[$pnt2$367 >> 1] = $116;\n       if (($wk_max$159 | 0) > 0) {\n        $k$248 = 0;\n        $wk$249 = $17;\n        while (1) {\n         if ((HEAP32[$wk$249 >> 2] | 0) == ($113 | 0)) HEAP32[$wk$249 >> 2] = $116;\n         $k$248 = $k$248 + 1 | 0;\n         if (($k$248 | 0) >= ($wk_max$159 | 0)) {\n          $133 = $116;\n          break;\n         } else $wk$249 = $wk$249 + 4 | 0;\n        }\n       } else $133 = $116;\n      } else {\n       HEAP16[$pnt2$367 >> 1] = $113;\n       if (($113 | 0) < ($116 | 0) & ($wk_max$159 | 0) > 0) {\n        $k$345 = 0;\n        $wk$346 = $17;\n        while (1) {\n         if ((HEAP32[$wk$346 >> 2] | 0) == ($116 | 0)) HEAP32[$wk$346 >> 2] = $113;\n         $k$345 = $k$345 + 1 | 0;\n         if (($k$345 | 0) >= ($wk_max$159 | 0)) {\n          $133 = $113;\n          break;\n         } else $wk$346 = $wk$346 + 4 | 0;\n        }\n       } else $133 = $113;\n      }\n      $135 = ($133 << 16 >> 16) * 7 | 0;\n      $137 = $labelInfo + 1310736 + ($135 + -7 << 2) | 0;\n      HEAP32[$137 >> 2] = (HEAP32[$137 >> 2] | 0) + 1;\n      $141 = $labelInfo + 1310736 + ($135 + -6 << 2) | 0;\n      HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + $i$264;\n      $145 = $labelInfo + 1310736 + ($135 + -5 << 2) | 0;\n      HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $j$075;\n      $wk_max$2 = $wk_max$159;\n     } while (0);\n     $i$264 = $i$264 + 1 | 0;\n     $227 = $pnt$168 + 2 | 0;\n     $228 = $pnt2$367 + 2 | 0;\n     $229 = $dpnt$166 + 1 | 0;\n     if (($i$264 | 0) >= ($10 | 0)) {\n      $dpnt$1$lcssa = $229;\n      $pnt$1$lcssa = $227;\n      $pnt2$3$lcssa = $228;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $dpnt$166 = $229;\n      $pnt$168 = $227;\n      $pnt2$367 = $228;\n      $wk_max$159 = $wk_max$2;\n     }\n    }\n   } else {\n    $dpnt$1$lcssa = $dpnt$077;\n    $pnt$1$lcssa = $pnt$079;\n    $pnt2$3$lcssa = $pnt2$278;\n    $wk_max$1$lcssa = $wk_max$074;\n   }\n   $j$075 = $j$075 + 1 | 0;\n   if (($j$075 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $dpnt$077 = $dpnt$1$lcssa + 2 | 0;\n    $pnt$079 = $pnt$1$lcssa + 4 | 0;\n    $pnt2$278 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$074 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $236 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$341 = 1;\n   $j$142 = 1;\n   $wk$443 = $17;\n   while (1) {\n    $238 = HEAP32[$wk$443 >> 2] | 0;\n    if (($238 | 0) == ($i$341 | 0)) {\n     $244 = $j$142;\n     $j$2 = $j$142 + 1 | 0;\n    } else {\n     $244 = HEAP32[$labelInfo + 1179664 + ($238 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$142;\n    }\n    HEAP32[$wk$443 >> 2] = $244;\n    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$341 = $i$341 + 1 | 0;\n     $j$142 = $j$2;\n     $wk$443 = $wk$443 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $248 = $labelInfo + 8 | 0;\n  $249 = $j$1$lcssa + -1 | 0;\n  HEAP32[$248 >> 2] = $249;\n  if (!$249) $$0 = 0; else {\n   _memset($236 | 0, 0, $249 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $249 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$439 = 0;\n    do {\n     $256 = $i$439 << 2;\n     HEAP32[$labelInfo + 131084 + ($256 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($256 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($256 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($256 | 3) << 2) >> 2] = 0;\n     $i$439 = $i$439 + 1 | 0;\n    } while (($i$439 | 0) < (HEAP32[$248 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$537 = 0;\n    do {\n     $270 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;\n     $271 = $i$537 * 7 | 0;\n     $274 = $labelInfo + 12 + ($270 << 2) | 0;\n     HEAP32[$274 >> 2] = (HEAP32[$274 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($271 << 2) >> 2] | 0);\n     $281 = $270 << 1;\n     $282 = $labelInfo + 655376 + ($281 << 3) | 0;\n     HEAPF64[$282 >> 3] = +HEAPF64[$282 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($271 + 1 << 2) >> 2] | 0);\n     $290 = $labelInfo + 655376 + (($281 | 1) << 3) | 0;\n     HEAPF64[$290 >> 3] = +HEAPF64[$290 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($271 + 2 << 2) >> 2] | 0);\n     $293 = $270 << 2;\n     $294 = $labelInfo + 131084 + ($293 << 2) | 0;\n     $298 = HEAP32[$labelInfo + 1310736 + ($271 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$294 >> 2] | 0) > ($298 | 0)) HEAP32[$294 >> 2] = $298;\n     $301 = $labelInfo + 131084 + (($293 | 1) << 2) | 0;\n     $305 = HEAP32[$labelInfo + 1310736 + ($271 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$301 >> 2] | 0) < ($305 | 0)) HEAP32[$301 >> 2] = $305;\n     $308 = $labelInfo + 131084 + (($293 | 2) << 2) | 0;\n     $312 = HEAP32[$labelInfo + 1310736 + ($271 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$308 >> 2] | 0) > ($312 | 0)) HEAP32[$308 >> 2] = $312;\n     $315 = $labelInfo + 131084 + (($293 | 3) << 2) | 0;\n     $319 = HEAP32[$labelInfo + 1310736 + ($271 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$315 >> 2] | 0) < ($319 | 0)) HEAP32[$315 >> 2] = $319;\n     $i$537 = $i$537 + 1 | 0;\n    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$248 >> 2] | 0) > 0) {\n    $i$636 = 0;\n    do {\n     $323 = $labelInfo + 12 + ($i$636 << 2) | 0;\n     $326 = $i$636 << 1;\n     $327 = $labelInfo + 655376 + ($326 << 3) | 0;\n     HEAPF64[$327 >> 3] = +HEAPF64[$327 >> 3] / +(HEAP32[$323 >> 2] | 0);\n     $333 = $labelInfo + 655376 + (($326 | 1) << 3) | 0;\n     HEAPF64[$333 >> 3] = +HEAPF64[$333 >> 3] / +(HEAP32[$323 >> 2] | 0);\n     $i$636 = $i$636 + 1 | 0;\n    } while (($i$636 | 0) < (HEAP32[$248 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabeling($image, $xsize, $ysize, $pixFormat, $debugMode, $labelingMode, $labelingThresh, $imageProcMode, $labelInfo, $image_thresh) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $pixFormat = $pixFormat | 0;\n $debugMode = $debugMode | 0;\n $labelingMode = $labelingMode | 0;\n $labelingThresh = $labelingThresh | 0;\n $imageProcMode = $imageProcMode | 0;\n $labelInfo = $labelInfo | 0;\n $image_thresh = $image_thresh | 0;\n var $$0 = 0;\n L1 : do switch ($debugMode | 0) {\n case 0:\n  {\n   switch ($labelingMode | 0) {\n   case 1:\n    {\n     if ($image_thresh) {\n      $$0 = _arLabelingSubDBZ($image, $xsize, $ysize, $image_thresh, $labelInfo) | 0;\n      break L1;\n     }\n     switch ($imageProcMode | 0) {\n     case 0:\n      {\n       if ($pixFormat >>> 0 < 2) {\n        $$0 = _arLabelingSubDBR3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n        break L1;\n       }\n       if (($pixFormat & -2 | 0) == 2) {\n        $$0 = _arLabelingSubDBR3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n        break L1;\n       }\n       if (($pixFormat & -3 | 0) == 4) {\n        $$0 = _arLabelingSubDBRA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n        break L1;\n       }\n       switch ($pixFormat | 0) {\n       case 5:\n       case 12:\n       case 13:\n       case 14:\n        {\n         $$0 = _arLabelingSubDBRC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 8:\n        {\n         $$0 = _arLabelingSubDBRYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 7:\n        {\n         $$0 = _arLabelingSubDBRCY($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 9:\n        {\n         $$0 = _arLabelingSubDBR3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 10:\n        {\n         $$0 = _arLabelingSubDBR3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 11:\n        {\n         $$0 = _arLabelingSubDBR3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       default:\n        _exit(0);\n       }\n       break;\n      }\n     case 1:\n      {\n       if ($pixFormat >>> 0 < 2) {\n        $$0 = _arLabelingSubDBI3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n        break L1;\n       }\n       if (($pixFormat & -2 | 0) == 2) {\n        $$0 = _arLabelingSubDBI3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n        break L1;\n       }\n       if (($pixFormat & -3 | 0) == 4) {\n        $$0 = _arLabelingSubDBIA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n        break L1;\n       }\n       switch ($pixFormat | 0) {\n       case 5:\n       case 12:\n       case 13:\n       case 14:\n        {\n         $$0 = _arLabelingSubDBIC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 8:\n        {\n         $$0 = _arLabelingSubDBIYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 7:\n        {\n         $$0 = _arLabelingSubDBICY($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 9:\n        {\n         $$0 = _arLabelingSubDBI3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 10:\n        {\n         $$0 = _arLabelingSubDBI3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 11:\n        {\n         $$0 = _arLabelingSubDBI3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       default:\n        _exit(0);\n       }\n       break;\n      }\n     default:\n      _exit(0);\n     }\n     break;\n    }\n   case 0:\n    {\n     if ($image_thresh) {\n      $$0 = _arLabelingSubDWZ($image, $xsize, $ysize, $image_thresh, $labelInfo) | 0;\n      break L1;\n     }\n     switch ($imageProcMode | 0) {\n     case 0:\n      {\n       if ($pixFormat >>> 0 < 2) {\n        $$0 = _arLabelingSubDWR3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n        break L1;\n       }\n       if (($pixFormat & -2 | 0) == 2) {\n        $$0 = _arLabelingSubDWR3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n        break L1;\n       }\n       if (($pixFormat & -3 | 0) == 4) {\n        $$0 = _arLabelingSubDWRA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n        break L1;\n       }\n       switch ($pixFormat | 0) {\n       case 5:\n       case 12:\n       case 13:\n       case 14:\n        {\n         $$0 = _arLabelingSubDWRC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 8:\n        {\n         $$0 = _arLabelingSubDWRYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 7:\n        {\n         $$0 = _arLabelingSubDWRCY($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 9:\n        {\n         $$0 = _arLabelingSubDWR3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 10:\n        {\n         $$0 = _arLabelingSubDWR3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 11:\n        {\n         $$0 = _arLabelingSubDWR3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       default:\n        _exit(0);\n       }\n       break;\n      }\n     case 1:\n      {\n       if ($pixFormat >>> 0 < 2) {\n        $$0 = _arLabelingSubDWI3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n        break L1;\n       }\n       if (($pixFormat & -2 | 0) == 2) {\n        $$0 = _arLabelingSubDWI3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n        break L1;\n       }\n       if (($pixFormat & -3 | 0) == 4) {\n        $$0 = _arLabelingSubDWIA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n        break L1;\n       }\n       switch ($pixFormat | 0) {\n       case 5:\n       case 12:\n       case 13:\n       case 14:\n        {\n         $$0 = _arLabelingSubDWIC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 8:\n        {\n         $$0 = _arLabelingSubDWIYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 7:\n        {\n         $$0 = _arLabelingSubDWICY($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 9:\n        {\n         $$0 = _arLabelingSubDWI3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 10:\n        {\n         $$0 = _arLabelingSubDWI3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 11:\n        {\n         $$0 = _arLabelingSubDWI3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       default:\n        _exit(0);\n       }\n       break;\n      }\n     default:\n      _exit(0);\n     }\n     break;\n    }\n   default:\n    _exit(0);\n   }\n   break;\n  }\n case 1:\n  {\n   switch ($labelingMode | 0) {\n   case 1:\n    {\n     if ($image_thresh) {\n      $$0 = _arLabelingSubEBZ($image, $xsize, $ysize, $image_thresh, $labelInfo) | 0;\n      break L1;\n     }\n     switch ($imageProcMode | 0) {\n     case 0:\n      {\n       if ($pixFormat >>> 0 < 2) {\n        $$0 = _arLabelingSubEBR3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n        break L1;\n       }\n       if (($pixFormat & -2 | 0) == 2) {\n        $$0 = _arLabelingSubEBR3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n        break L1;\n       }\n       if (($pixFormat & -3 | 0) == 4) {\n        $$0 = _arLabelingSubEBRA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n        break L1;\n       }\n       switch ($pixFormat | 0) {\n       case 5:\n       case 12:\n       case 13:\n       case 14:\n        {\n         $$0 = _arLabelingSubEBRC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 8:\n        {\n         $$0 = _arLabelingSubEBRYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 7:\n        {\n         $$0 = _arLabelingSubEBRCY($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 9:\n        {\n         $$0 = _arLabelingSubEBR3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 10:\n        {\n         $$0 = _arLabelingSubEBR3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 11:\n        {\n         $$0 = _arLabelingSubEBR3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       default:\n        _exit(0);\n       }\n       break;\n      }\n     case 1:\n      {\n       if ($pixFormat >>> 0 < 2) {\n        $$0 = _arLabelingSubEBI3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n        break L1;\n       }\n       if (($pixFormat & -2 | 0) == 2) {\n        $$0 = _arLabelingSubEBI3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n        break L1;\n       }\n       if (($pixFormat & -3 | 0) == 4) {\n        $$0 = _arLabelingSubEBIA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n        break L1;\n       }\n       switch ($pixFormat | 0) {\n       case 5:\n       case 12:\n       case 13:\n       case 14:\n        {\n         $$0 = _arLabelingSubEBIC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 8:\n        {\n         $$0 = _arLabelingSubEBIYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 7:\n        {\n         $$0 = _arLabelingSubEBICY($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 9:\n        {\n         $$0 = _arLabelingSubEBI3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 10:\n        {\n         $$0 = _arLabelingSubEBI3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 11:\n        {\n         $$0 = _arLabelingSubEBI3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       default:\n        _exit(0);\n       }\n       break;\n      }\n     default:\n      _exit(0);\n     }\n     break;\n    }\n   case 0:\n    {\n     if ($image_thresh) {\n      $$0 = _arLabelingSubEWZ($image, $xsize, $ysize, $image_thresh, $labelInfo) | 0;\n      break L1;\n     }\n     switch ($imageProcMode | 0) {\n     case 0:\n      {\n       if ($pixFormat >>> 0 < 2) {\n        $$0 = _arLabelingSubEWR3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n        break L1;\n       }\n       if (($pixFormat & -2 | 0) == 2) {\n        $$0 = _arLabelingSubEWR3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n        break L1;\n       }\n       if (($pixFormat & -3 | 0) == 4) {\n        $$0 = _arLabelingSubEWRA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n        break L1;\n       }\n       switch ($pixFormat | 0) {\n       case 5:\n       case 12:\n       case 13:\n       case 14:\n        {\n         $$0 = _arLabelingSubEWRC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 8:\n        {\n         $$0 = _arLabelingSubEWRYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 7:\n        {\n         $$0 = _arLabelingSubEWRCY($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 9:\n        {\n         $$0 = _arLabelingSubEWR3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 10:\n        {\n         $$0 = _arLabelingSubEWR3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 11:\n        {\n         $$0 = _arLabelingSubEWR3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       default:\n        _exit(0);\n       }\n       break;\n      }\n     case 1:\n      {\n       if ($pixFormat >>> 0 < 2) {\n        $$0 = _arLabelingSubEWI3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n        break L1;\n       }\n       if (($pixFormat & -2 | 0) == 2) {\n        $$0 = _arLabelingSubEWI3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n        break L1;\n       }\n       if (($pixFormat & -3 | 0) == 4) {\n        $$0 = _arLabelingSubEWIA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n        break L1;\n       }\n       switch ($pixFormat | 0) {\n       case 5:\n       case 12:\n       case 13:\n       case 14:\n        {\n         $$0 = _arLabelingSubEWIC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 8:\n        {\n         $$0 = _arLabelingSubEWIYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 7:\n        {\n         $$0 = _arLabelingSubEWICY($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 9:\n        {\n         $$0 = _arLabelingSubEWI3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 10:\n        {\n         $$0 = _arLabelingSubEWI3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       case 11:\n        {\n         $$0 = _arLabelingSubEWI3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;\n         break L1;\n         break;\n        }\n       default:\n        _exit(0);\n       }\n       break;\n      }\n     default:\n      _exit(0);\n     }\n     break;\n    }\n   default:\n    _exit(0);\n   }\n   break;\n  }\n default:\n  _exit(0);\n } while (0);\n return $$0 | 0;\n}\n\nfunction _arLabelingSubEWRA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $101 = 0, $107 = 0, $112 = 0, $115 = 0, $132 = 0, $134 = 0, $136 = 0, $140 = 0, $144 = 0, $147 = 0, $149 = 0, $153 = 0, $157 = 0, $161 = 0, $166 = 0, $168 = 0, $17 = 0, $172 = 0, $176 = 0, $18 = 0, $180 = 0, $186 = 0, $189 = 0, $19 = 0, $191 = 0, $195 = 0, $199 = 0, $203 = 0, $206 = 0, $211 = 0, $226 = 0, $227 = 0, $228 = 0, $235 = 0, $237 = 0, $243 = 0, $247 = 0, $248 = 0, $255 = 0, $269 = 0, $27 = 0, $270 = 0, $273 = 0, $280 = 0, $281 = 0, $289 = 0, $292 = 0, $293 = 0, $297 = 0, $300 = 0, $304 = 0, $307 = 0, $311 = 0, $314 = 0, $318 = 0, $322 = 0, $325 = 0, $326 = 0, $332 = 0, $41 = 0, $44 = 0, $46 = 0, $50 = 0, $54 = 0, $60 = 0, $61 = 0, $64 = 0, $65 = 0, $66 = 0, $69 = 0, $72 = 0, $89 = 0, $9 = 0, $91 = 0, $93 = 0, $97 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$088 = 0;\n  $pnt1$090 = $0;\n  $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$089 >> 1] = 0;\n   HEAP16[$pnt1$090 >> 1] = 0;\n   $i$088 = $i$088 + 1 | 0;\n   if (($i$088 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$090 = $pnt1$090 + 2 | 0;\n    $pnt2$089 = $pnt2$089 + 2 | 0;\n   }\n  }\n }\n $9 = $labelingThresh * 3 | 0;\n $10 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$182 = 0;\n  $pnt1$184 = $0;\n  $pnt2$183 = $0 + ($10 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$183 >> 1] = 0;\n   HEAP16[$pnt1$184 >> 1] = 0;\n   $i$182 = $i$182 + 1 | 0;\n   if (($i$182 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;\n    $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0;\n   }\n  }\n }\n $17 = $labelInfo + 1179664 | 0;\n $18 = $xsize + 1 | 0;\n $19 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $27 = ($10 | 0) > 1;\n  $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $18 | 0;\n  $j$075 = 1;\n  $pnt$079 = $image + ($18 << 2) | 0;\n  $pnt2$278 = $0 + ($18 << 1) | 0;\n  $wk_max$074 = 0;\n  L13 : while (1) {\n   if ($27) {\n    $dpnt$166 = $dpnt$077;\n    $i$264 = 1;\n    $pnt$168 = $pnt$079;\n    $pnt2$367 = $pnt2$278;\n    $wk_max$159 = $wk_max$074;\n    while (1) {\n     do if (((HEAPU8[$pnt$168 + 2 >> 0] | 0) + (HEAPU8[$pnt$168 + 1 >> 0] | 0) + (HEAPU8[$pnt$168 + 3 >> 0] | 0) | 0) > ($9 | 0)) {\n      HEAP8[$dpnt$166 >> 0] = -1;\n      $41 = HEAP16[$pnt2$367 + ($19 << 1) >> 1] | 0;\n      if ($41 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$367 >> 1] = $41;\n       $44 = ($41 << 16 >> 16) * 7 | 0;\n       $46 = $labelInfo + 1310736 + ($44 + -7 << 2) | 0;\n       HEAP32[$46 >> 2] = (HEAP32[$46 >> 2] | 0) + 1;\n       $50 = $labelInfo + 1310736 + ($44 + -6 << 2) | 0;\n       HEAP32[$50 >> 2] = (HEAP32[$50 >> 2] | 0) + $i$264;\n       $54 = $labelInfo + 1310736 + ($44 + -5 << 2) | 0;\n       HEAP32[$54 >> 2] = (HEAP32[$54 >> 2] | 0) + $j$075;\n       HEAP32[$labelInfo + 1310736 + ($44 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $60 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0;\n      $61 = $60 << 16 >> 16;\n      $64 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0;\n      $65 = $64 << 16 >> 16;\n      $66 = $64 << 16 >> 16 > 0;\n      if ($60 << 16 >> 16 <= 0) {\n       if ($66) {\n        HEAP16[$pnt2$367 >> 1] = $64;\n        $166 = $65 * 7 | 0;\n        $168 = $labelInfo + 1310736 + ($166 + -7 << 2) | 0;\n        HEAP32[$168 >> 2] = (HEAP32[$168 >> 2] | 0) + 1;\n        $172 = $labelInfo + 1310736 + ($166 + -6 << 2) | 0;\n        HEAP32[$172 >> 2] = (HEAP32[$172 >> 2] | 0) + $i$264;\n        $176 = $labelInfo + 1310736 + ($166 + -5 << 2) | 0;\n        HEAP32[$176 >> 2] = (HEAP32[$176 >> 2] | 0) + $j$075;\n        $180 = $labelInfo + 1310736 + ($166 + -3 << 2) | 0;\n        if ((HEAP32[$180 >> 2] | 0) < ($i$264 | 0)) HEAP32[$180 >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($166 + -1 << 2) >> 2] = $j$075;\n        $wk_max$2 = $wk_max$159;\n        break;\n       }\n       $186 = HEAP16[$pnt2$367 + -2 >> 1] | 0;\n       if ($186 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$367 >> 1] = $186;\n        $189 = ($186 << 16 >> 16) * 7 | 0;\n        $191 = $labelInfo + 1310736 + ($189 + -7 << 2) | 0;\n        HEAP32[$191 >> 2] = (HEAP32[$191 >> 2] | 0) + 1;\n        $195 = $labelInfo + 1310736 + ($189 + -6 << 2) | 0;\n        HEAP32[$195 >> 2] = (HEAP32[$195 >> 2] | 0) + $i$264;\n        $199 = $labelInfo + 1310736 + ($189 + -5 << 2) | 0;\n        HEAP32[$199 >> 2] = (HEAP32[$199 >> 2] | 0) + $j$075;\n        $203 = $labelInfo + 1310736 + ($189 + -3 << 2) | 0;\n        if ((HEAP32[$203 >> 2] | 0) >= ($i$264 | 0)) {\n         $wk_max$2 = $wk_max$159;\n         break;\n        }\n        HEAP32[$203 >> 2] = $i$264;\n        $wk_max$2 = $wk_max$159;\n        break;\n       } else {\n        $206 = $wk_max$159 + 1 | 0;\n        if (($wk_max$159 | 0) > 32767) break L13;\n        HEAP16[$pnt2$367 >> 1] = $206;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $206 << 16 >> 16;\n        $211 = $wk_max$159 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($211 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($211 + 1 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($211 + 2 << 2) >> 2] = $j$075;\n        HEAP32[$labelInfo + 1310736 + ($211 + 3 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($211 + 4 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($211 + 5 << 2) >> 2] = $j$075;\n        HEAP32[$labelInfo + 1310736 + ($211 + 6 << 2) >> 2] = $j$075;\n        $wk_max$2 = $206;\n        break;\n       }\n      }\n      if ($66) {\n       $69 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0;\n       $72 = HEAP32[$labelInfo + 1179664 + ($65 + -1 << 2) >> 2] | 0;\n       if (($69 | 0) > ($72 | 0)) {\n        HEAP16[$pnt2$367 >> 1] = $72;\n        if (($wk_max$159 | 0) > 0) {\n         $k$055 = 0;\n         $wk$056 = $17;\n         while (1) {\n          if ((HEAP32[$wk$056 >> 2] | 0) == ($69 | 0)) HEAP32[$wk$056 >> 2] = $72;\n          $k$055 = $k$055 + 1 | 0;\n          if (($k$055 | 0) >= ($wk_max$159 | 0)) {\n           $89 = $72;\n           break;\n          } else $wk$056 = $wk$056 + 4 | 0;\n         }\n        } else $89 = $72;\n       } else {\n        HEAP16[$pnt2$367 >> 1] = $69;\n        if (($69 | 0) < ($72 | 0) & ($wk_max$159 | 0) > 0) {\n         $k$152 = 0;\n         $wk$153 = $17;\n         while (1) {\n          if ((HEAP32[$wk$153 >> 2] | 0) == ($72 | 0)) HEAP32[$wk$153 >> 2] = $69;\n          $k$152 = $k$152 + 1 | 0;\n          if (($k$152 | 0) >= ($wk_max$159 | 0)) {\n           $89 = $69;\n           break;\n          } else $wk$153 = $wk$153 + 4 | 0;\n         }\n        } else $89 = $69;\n       }\n       $91 = ($89 << 16 >> 16) * 7 | 0;\n       $93 = $labelInfo + 1310736 + ($91 + -7 << 2) | 0;\n       HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + 1;\n       $97 = $labelInfo + 1310736 + ($91 + -6 << 2) | 0;\n       HEAP32[$97 >> 2] = (HEAP32[$97 >> 2] | 0) + $i$264;\n       $101 = $labelInfo + 1310736 + ($91 + -5 << 2) | 0;\n       HEAP32[$101 >> 2] = (HEAP32[$101 >> 2] | 0) + $j$075;\n       HEAP32[$labelInfo + 1310736 + ($91 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $107 = HEAP16[$pnt2$367 + -2 >> 1] | 0;\n      if ($107 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$367 >> 1] = $60;\n       $147 = $61 * 7 | 0;\n       $149 = $labelInfo + 1310736 + ($147 + -7 << 2) | 0;\n       HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + 1;\n       $153 = $labelInfo + 1310736 + ($147 + -6 << 2) | 0;\n       HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $i$264;\n       $157 = $labelInfo + 1310736 + ($147 + -5 << 2) | 0;\n       HEAP32[$157 >> 2] = (HEAP32[$157 >> 2] | 0) + $j$075;\n       $161 = $labelInfo + 1310736 + ($147 + -4 << 2) | 0;\n       if ((HEAP32[$161 >> 2] | 0) > ($i$264 | 0)) HEAP32[$161 >> 2] = $i$264;\n       HEAP32[$labelInfo + 1310736 + ($147 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $112 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0;\n      $115 = HEAP32[$labelInfo + 1179664 + (($107 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($112 | 0) > ($115 | 0)) {\n       HEAP16[$pnt2$367 >> 1] = $115;\n       if (($wk_max$159 | 0) > 0) {\n        $k$248 = 0;\n        $wk$249 = $17;\n        while (1) {\n         if ((HEAP32[$wk$249 >> 2] | 0) == ($112 | 0)) HEAP32[$wk$249 >> 2] = $115;\n         $k$248 = $k$248 + 1 | 0;\n         if (($k$248 | 0) >= ($wk_max$159 | 0)) {\n          $132 = $115;\n          break;\n         } else $wk$249 = $wk$249 + 4 | 0;\n        }\n       } else $132 = $115;\n      } else {\n       HEAP16[$pnt2$367 >> 1] = $112;\n       if (($112 | 0) < ($115 | 0) & ($wk_max$159 | 0) > 0) {\n        $k$345 = 0;\n        $wk$346 = $17;\n        while (1) {\n         if ((HEAP32[$wk$346 >> 2] | 0) == ($115 | 0)) HEAP32[$wk$346 >> 2] = $112;\n         $k$345 = $k$345 + 1 | 0;\n         if (($k$345 | 0) >= ($wk_max$159 | 0)) {\n          $132 = $112;\n          break;\n         } else $wk$346 = $wk$346 + 4 | 0;\n        }\n       } else $132 = $112;\n      }\n      $134 = ($132 << 16 >> 16) * 7 | 0;\n      $136 = $labelInfo + 1310736 + ($134 + -7 << 2) | 0;\n      HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + 1;\n      $140 = $labelInfo + 1310736 + ($134 + -6 << 2) | 0;\n      HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $i$264;\n      $144 = $labelInfo + 1310736 + ($134 + -5 << 2) | 0;\n      HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $j$075;\n      $wk_max$2 = $wk_max$159;\n     } else {\n      HEAP16[$pnt2$367 >> 1] = 0;\n      HEAP8[$dpnt$166 >> 0] = 0;\n      $wk_max$2 = $wk_max$159;\n     } while (0);\n     $i$264 = $i$264 + 1 | 0;\n     $226 = $pnt$168 + 4 | 0;\n     $227 = $pnt2$367 + 2 | 0;\n     $228 = $dpnt$166 + 1 | 0;\n     if (($i$264 | 0) >= ($10 | 0)) {\n      $dpnt$1$lcssa = $228;\n      $pnt$1$lcssa = $226;\n      $pnt2$3$lcssa = $227;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $dpnt$166 = $228;\n      $pnt$168 = $226;\n      $pnt2$367 = $227;\n      $wk_max$159 = $wk_max$2;\n     }\n    }\n   } else {\n    $dpnt$1$lcssa = $dpnt$077;\n    $pnt$1$lcssa = $pnt$079;\n    $pnt2$3$lcssa = $pnt2$278;\n    $wk_max$1$lcssa = $wk_max$074;\n   }\n   $j$075 = $j$075 + 1 | 0;\n   if (($j$075 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $dpnt$077 = $dpnt$1$lcssa + 2 | 0;\n    $pnt$079 = $pnt$1$lcssa + 8 | 0;\n    $pnt2$278 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$074 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $235 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$341 = 1;\n   $j$142 = 1;\n   $wk$443 = $17;\n   while (1) {\n    $237 = HEAP32[$wk$443 >> 2] | 0;\n    if (($237 | 0) == ($i$341 | 0)) {\n     $243 = $j$142;\n     $j$2 = $j$142 + 1 | 0;\n    } else {\n     $243 = HEAP32[$labelInfo + 1179664 + ($237 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$142;\n    }\n    HEAP32[$wk$443 >> 2] = $243;\n    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$341 = $i$341 + 1 | 0;\n     $j$142 = $j$2;\n     $wk$443 = $wk$443 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $247 = $labelInfo + 8 | 0;\n  $248 = $j$1$lcssa + -1 | 0;\n  HEAP32[$247 >> 2] = $248;\n  if (!$248) $$0 = 0; else {\n   _memset($235 | 0, 0, $248 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $248 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$439 = 0;\n    do {\n     $255 = $i$439 << 2;\n     HEAP32[$labelInfo + 131084 + ($255 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($255 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($255 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($255 | 3) << 2) >> 2] = 0;\n     $i$439 = $i$439 + 1 | 0;\n    } while (($i$439 | 0) < (HEAP32[$247 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$537 = 0;\n    do {\n     $269 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;\n     $270 = $i$537 * 7 | 0;\n     $273 = $labelInfo + 12 + ($269 << 2) | 0;\n     HEAP32[$273 >> 2] = (HEAP32[$273 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($270 << 2) >> 2] | 0);\n     $280 = $269 << 1;\n     $281 = $labelInfo + 655376 + ($280 << 3) | 0;\n     HEAPF64[$281 >> 3] = +HEAPF64[$281 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 1 << 2) >> 2] | 0);\n     $289 = $labelInfo + 655376 + (($280 | 1) << 3) | 0;\n     HEAPF64[$289 >> 3] = +HEAPF64[$289 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 2 << 2) >> 2] | 0);\n     $292 = $269 << 2;\n     $293 = $labelInfo + 131084 + ($292 << 2) | 0;\n     $297 = HEAP32[$labelInfo + 1310736 + ($270 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$293 >> 2] | 0) > ($297 | 0)) HEAP32[$293 >> 2] = $297;\n     $300 = $labelInfo + 131084 + (($292 | 1) << 2) | 0;\n     $304 = HEAP32[$labelInfo + 1310736 + ($270 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$300 >> 2] | 0) < ($304 | 0)) HEAP32[$300 >> 2] = $304;\n     $307 = $labelInfo + 131084 + (($292 | 2) << 2) | 0;\n     $311 = HEAP32[$labelInfo + 1310736 + ($270 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$307 >> 2] | 0) > ($311 | 0)) HEAP32[$307 >> 2] = $311;\n     $314 = $labelInfo + 131084 + (($292 | 3) << 2) | 0;\n     $318 = HEAP32[$labelInfo + 1310736 + ($270 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$314 >> 2] | 0) < ($318 | 0)) HEAP32[$314 >> 2] = $318;\n     $i$537 = $i$537 + 1 | 0;\n    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$247 >> 2] | 0) > 0) {\n    $i$636 = 0;\n    do {\n     $322 = $labelInfo + 12 + ($i$636 << 2) | 0;\n     $325 = $i$636 << 1;\n     $326 = $labelInfo + 655376 + ($325 << 3) | 0;\n     HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$322 >> 2] | 0);\n     $332 = $labelInfo + 655376 + (($325 | 1) << 3) | 0;\n     HEAPF64[$332 >> 3] = +HEAPF64[$332 >> 3] / +(HEAP32[$322 >> 2] | 0);\n     $i$636 = $i$636 + 1 | 0;\n    } while (($i$636 | 0) < (HEAP32[$247 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubEBRA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $101 = 0, $107 = 0, $112 = 0, $115 = 0, $132 = 0, $134 = 0, $136 = 0, $140 = 0, $144 = 0, $147 = 0, $149 = 0, $153 = 0, $157 = 0, $161 = 0, $166 = 0, $168 = 0, $17 = 0, $172 = 0, $176 = 0, $18 = 0, $180 = 0, $186 = 0, $189 = 0, $19 = 0, $191 = 0, $195 = 0, $199 = 0, $203 = 0, $206 = 0, $211 = 0, $226 = 0, $227 = 0, $228 = 0, $235 = 0, $237 = 0, $243 = 0, $247 = 0, $248 = 0, $255 = 0, $269 = 0, $27 = 0, $270 = 0, $273 = 0, $280 = 0, $281 = 0, $289 = 0, $292 = 0, $293 = 0, $297 = 0, $300 = 0, $304 = 0, $307 = 0, $311 = 0, $314 = 0, $318 = 0, $322 = 0, $325 = 0, $326 = 0, $332 = 0, $41 = 0, $44 = 0, $46 = 0, $50 = 0, $54 = 0, $60 = 0, $61 = 0, $64 = 0, $65 = 0, $66 = 0, $69 = 0, $72 = 0, $89 = 0, $9 = 0, $91 = 0, $93 = 0, $97 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$088 = 0;\n  $pnt1$090 = $0;\n  $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$089 >> 1] = 0;\n   HEAP16[$pnt1$090 >> 1] = 0;\n   $i$088 = $i$088 + 1 | 0;\n   if (($i$088 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$090 = $pnt1$090 + 2 | 0;\n    $pnt2$089 = $pnt2$089 + 2 | 0;\n   }\n  }\n }\n $9 = $labelingThresh * 3 | 0;\n $10 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$182 = 0;\n  $pnt1$184 = $0;\n  $pnt2$183 = $0 + ($10 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$183 >> 1] = 0;\n   HEAP16[$pnt1$184 >> 1] = 0;\n   $i$182 = $i$182 + 1 | 0;\n   if (($i$182 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;\n    $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0;\n   }\n  }\n }\n $17 = $labelInfo + 1179664 | 0;\n $18 = $xsize + 1 | 0;\n $19 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $27 = ($10 | 0) > 1;\n  $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $18 | 0;\n  $j$075 = 1;\n  $pnt$079 = $image + ($18 << 2) | 0;\n  $pnt2$278 = $0 + ($18 << 1) | 0;\n  $wk_max$074 = 0;\n  L13 : while (1) {\n   if ($27) {\n    $dpnt$166 = $dpnt$077;\n    $i$264 = 1;\n    $pnt$168 = $pnt$079;\n    $pnt2$367 = $pnt2$278;\n    $wk_max$159 = $wk_max$074;\n    while (1) {\n     do if (((HEAPU8[$pnt$168 + 2 >> 0] | 0) + (HEAPU8[$pnt$168 + 1 >> 0] | 0) + (HEAPU8[$pnt$168 + 3 >> 0] | 0) | 0) > ($9 | 0)) {\n      HEAP16[$pnt2$367 >> 1] = 0;\n      HEAP8[$dpnt$166 >> 0] = 0;\n      $wk_max$2 = $wk_max$159;\n     } else {\n      HEAP8[$dpnt$166 >> 0] = -1;\n      $41 = HEAP16[$pnt2$367 + ($19 << 1) >> 1] | 0;\n      if ($41 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$367 >> 1] = $41;\n       $44 = ($41 << 16 >> 16) * 7 | 0;\n       $46 = $labelInfo + 1310736 + ($44 + -7 << 2) | 0;\n       HEAP32[$46 >> 2] = (HEAP32[$46 >> 2] | 0) + 1;\n       $50 = $labelInfo + 1310736 + ($44 + -6 << 2) | 0;\n       HEAP32[$50 >> 2] = (HEAP32[$50 >> 2] | 0) + $i$264;\n       $54 = $labelInfo + 1310736 + ($44 + -5 << 2) | 0;\n       HEAP32[$54 >> 2] = (HEAP32[$54 >> 2] | 0) + $j$075;\n       HEAP32[$labelInfo + 1310736 + ($44 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $60 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0;\n      $61 = $60 << 16 >> 16;\n      $64 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0;\n      $65 = $64 << 16 >> 16;\n      $66 = $64 << 16 >> 16 > 0;\n      if ($60 << 16 >> 16 <= 0) {\n       if ($66) {\n        HEAP16[$pnt2$367 >> 1] = $64;\n        $166 = $65 * 7 | 0;\n        $168 = $labelInfo + 1310736 + ($166 + -7 << 2) | 0;\n        HEAP32[$168 >> 2] = (HEAP32[$168 >> 2] | 0) + 1;\n        $172 = $labelInfo + 1310736 + ($166 + -6 << 2) | 0;\n        HEAP32[$172 >> 2] = (HEAP32[$172 >> 2] | 0) + $i$264;\n        $176 = $labelInfo + 1310736 + ($166 + -5 << 2) | 0;\n        HEAP32[$176 >> 2] = (HEAP32[$176 >> 2] | 0) + $j$075;\n        $180 = $labelInfo + 1310736 + ($166 + -3 << 2) | 0;\n        if ((HEAP32[$180 >> 2] | 0) < ($i$264 | 0)) HEAP32[$180 >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($166 + -1 << 2) >> 2] = $j$075;\n        $wk_max$2 = $wk_max$159;\n        break;\n       }\n       $186 = HEAP16[$pnt2$367 + -2 >> 1] | 0;\n       if ($186 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$367 >> 1] = $186;\n        $189 = ($186 << 16 >> 16) * 7 | 0;\n        $191 = $labelInfo + 1310736 + ($189 + -7 << 2) | 0;\n        HEAP32[$191 >> 2] = (HEAP32[$191 >> 2] | 0) + 1;\n        $195 = $labelInfo + 1310736 + ($189 + -6 << 2) | 0;\n        HEAP32[$195 >> 2] = (HEAP32[$195 >> 2] | 0) + $i$264;\n        $199 = $labelInfo + 1310736 + ($189 + -5 << 2) | 0;\n        HEAP32[$199 >> 2] = (HEAP32[$199 >> 2] | 0) + $j$075;\n        $203 = $labelInfo + 1310736 + ($189 + -3 << 2) | 0;\n        if ((HEAP32[$203 >> 2] | 0) >= ($i$264 | 0)) {\n         $wk_max$2 = $wk_max$159;\n         break;\n        }\n        HEAP32[$203 >> 2] = $i$264;\n        $wk_max$2 = $wk_max$159;\n        break;\n       } else {\n        $206 = $wk_max$159 + 1 | 0;\n        if (($wk_max$159 | 0) > 32767) break L13;\n        HEAP16[$pnt2$367 >> 1] = $206;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $206 << 16 >> 16;\n        $211 = $wk_max$159 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($211 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($211 + 1 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($211 + 2 << 2) >> 2] = $j$075;\n        HEAP32[$labelInfo + 1310736 + ($211 + 3 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($211 + 4 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($211 + 5 << 2) >> 2] = $j$075;\n        HEAP32[$labelInfo + 1310736 + ($211 + 6 << 2) >> 2] = $j$075;\n        $wk_max$2 = $206;\n        break;\n       }\n      }\n      if ($66) {\n       $69 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0;\n       $72 = HEAP32[$labelInfo + 1179664 + ($65 + -1 << 2) >> 2] | 0;\n       if (($69 | 0) > ($72 | 0)) {\n        HEAP16[$pnt2$367 >> 1] = $72;\n        if (($wk_max$159 | 0) > 0) {\n         $k$055 = 0;\n         $wk$056 = $17;\n         while (1) {\n          if ((HEAP32[$wk$056 >> 2] | 0) == ($69 | 0)) HEAP32[$wk$056 >> 2] = $72;\n          $k$055 = $k$055 + 1 | 0;\n          if (($k$055 | 0) >= ($wk_max$159 | 0)) {\n           $89 = $72;\n           break;\n          } else $wk$056 = $wk$056 + 4 | 0;\n         }\n        } else $89 = $72;\n       } else {\n        HEAP16[$pnt2$367 >> 1] = $69;\n        if (($69 | 0) < ($72 | 0) & ($wk_max$159 | 0) > 0) {\n         $k$152 = 0;\n         $wk$153 = $17;\n         while (1) {\n          if ((HEAP32[$wk$153 >> 2] | 0) == ($72 | 0)) HEAP32[$wk$153 >> 2] = $69;\n          $k$152 = $k$152 + 1 | 0;\n          if (($k$152 | 0) >= ($wk_max$159 | 0)) {\n           $89 = $69;\n           break;\n          } else $wk$153 = $wk$153 + 4 | 0;\n         }\n        } else $89 = $69;\n       }\n       $91 = ($89 << 16 >> 16) * 7 | 0;\n       $93 = $labelInfo + 1310736 + ($91 + -7 << 2) | 0;\n       HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + 1;\n       $97 = $labelInfo + 1310736 + ($91 + -6 << 2) | 0;\n       HEAP32[$97 >> 2] = (HEAP32[$97 >> 2] | 0) + $i$264;\n       $101 = $labelInfo + 1310736 + ($91 + -5 << 2) | 0;\n       HEAP32[$101 >> 2] = (HEAP32[$101 >> 2] | 0) + $j$075;\n       HEAP32[$labelInfo + 1310736 + ($91 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $107 = HEAP16[$pnt2$367 + -2 >> 1] | 0;\n      if ($107 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$367 >> 1] = $60;\n       $147 = $61 * 7 | 0;\n       $149 = $labelInfo + 1310736 + ($147 + -7 << 2) | 0;\n       HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + 1;\n       $153 = $labelInfo + 1310736 + ($147 + -6 << 2) | 0;\n       HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $i$264;\n       $157 = $labelInfo + 1310736 + ($147 + -5 << 2) | 0;\n       HEAP32[$157 >> 2] = (HEAP32[$157 >> 2] | 0) + $j$075;\n       $161 = $labelInfo + 1310736 + ($147 + -4 << 2) | 0;\n       if ((HEAP32[$161 >> 2] | 0) > ($i$264 | 0)) HEAP32[$161 >> 2] = $i$264;\n       HEAP32[$labelInfo + 1310736 + ($147 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $112 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0;\n      $115 = HEAP32[$labelInfo + 1179664 + (($107 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($112 | 0) > ($115 | 0)) {\n       HEAP16[$pnt2$367 >> 1] = $115;\n       if (($wk_max$159 | 0) > 0) {\n        $k$248 = 0;\n        $wk$249 = $17;\n        while (1) {\n         if ((HEAP32[$wk$249 >> 2] | 0) == ($112 | 0)) HEAP32[$wk$249 >> 2] = $115;\n         $k$248 = $k$248 + 1 | 0;\n         if (($k$248 | 0) >= ($wk_max$159 | 0)) {\n          $132 = $115;\n          break;\n         } else $wk$249 = $wk$249 + 4 | 0;\n        }\n       } else $132 = $115;\n      } else {\n       HEAP16[$pnt2$367 >> 1] = $112;\n       if (($112 | 0) < ($115 | 0) & ($wk_max$159 | 0) > 0) {\n        $k$345 = 0;\n        $wk$346 = $17;\n        while (1) {\n         if ((HEAP32[$wk$346 >> 2] | 0) == ($115 | 0)) HEAP32[$wk$346 >> 2] = $112;\n         $k$345 = $k$345 + 1 | 0;\n         if (($k$345 | 0) >= ($wk_max$159 | 0)) {\n          $132 = $112;\n          break;\n         } else $wk$346 = $wk$346 + 4 | 0;\n        }\n       } else $132 = $112;\n      }\n      $134 = ($132 << 16 >> 16) * 7 | 0;\n      $136 = $labelInfo + 1310736 + ($134 + -7 << 2) | 0;\n      HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + 1;\n      $140 = $labelInfo + 1310736 + ($134 + -6 << 2) | 0;\n      HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $i$264;\n      $144 = $labelInfo + 1310736 + ($134 + -5 << 2) | 0;\n      HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $j$075;\n      $wk_max$2 = $wk_max$159;\n     } while (0);\n     $i$264 = $i$264 + 1 | 0;\n     $226 = $pnt$168 + 4 | 0;\n     $227 = $pnt2$367 + 2 | 0;\n     $228 = $dpnt$166 + 1 | 0;\n     if (($i$264 | 0) >= ($10 | 0)) {\n      $dpnt$1$lcssa = $228;\n      $pnt$1$lcssa = $226;\n      $pnt2$3$lcssa = $227;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $dpnt$166 = $228;\n      $pnt$168 = $226;\n      $pnt2$367 = $227;\n      $wk_max$159 = $wk_max$2;\n     }\n    }\n   } else {\n    $dpnt$1$lcssa = $dpnt$077;\n    $pnt$1$lcssa = $pnt$079;\n    $pnt2$3$lcssa = $pnt2$278;\n    $wk_max$1$lcssa = $wk_max$074;\n   }\n   $j$075 = $j$075 + 1 | 0;\n   if (($j$075 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $dpnt$077 = $dpnt$1$lcssa + 2 | 0;\n    $pnt$079 = $pnt$1$lcssa + 8 | 0;\n    $pnt2$278 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$074 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $235 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$341 = 1;\n   $j$142 = 1;\n   $wk$443 = $17;\n   while (1) {\n    $237 = HEAP32[$wk$443 >> 2] | 0;\n    if (($237 | 0) == ($i$341 | 0)) {\n     $243 = $j$142;\n     $j$2 = $j$142 + 1 | 0;\n    } else {\n     $243 = HEAP32[$labelInfo + 1179664 + ($237 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$142;\n    }\n    HEAP32[$wk$443 >> 2] = $243;\n    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$341 = $i$341 + 1 | 0;\n     $j$142 = $j$2;\n     $wk$443 = $wk$443 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $247 = $labelInfo + 8 | 0;\n  $248 = $j$1$lcssa + -1 | 0;\n  HEAP32[$247 >> 2] = $248;\n  if (!$248) $$0 = 0; else {\n   _memset($235 | 0, 0, $248 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $248 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$439 = 0;\n    do {\n     $255 = $i$439 << 2;\n     HEAP32[$labelInfo + 131084 + ($255 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($255 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($255 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($255 | 3) << 2) >> 2] = 0;\n     $i$439 = $i$439 + 1 | 0;\n    } while (($i$439 | 0) < (HEAP32[$247 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$537 = 0;\n    do {\n     $269 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;\n     $270 = $i$537 * 7 | 0;\n     $273 = $labelInfo + 12 + ($269 << 2) | 0;\n     HEAP32[$273 >> 2] = (HEAP32[$273 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($270 << 2) >> 2] | 0);\n     $280 = $269 << 1;\n     $281 = $labelInfo + 655376 + ($280 << 3) | 0;\n     HEAPF64[$281 >> 3] = +HEAPF64[$281 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 1 << 2) >> 2] | 0);\n     $289 = $labelInfo + 655376 + (($280 | 1) << 3) | 0;\n     HEAPF64[$289 >> 3] = +HEAPF64[$289 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 2 << 2) >> 2] | 0);\n     $292 = $269 << 2;\n     $293 = $labelInfo + 131084 + ($292 << 2) | 0;\n     $297 = HEAP32[$labelInfo + 1310736 + ($270 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$293 >> 2] | 0) > ($297 | 0)) HEAP32[$293 >> 2] = $297;\n     $300 = $labelInfo + 131084 + (($292 | 1) << 2) | 0;\n     $304 = HEAP32[$labelInfo + 1310736 + ($270 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$300 >> 2] | 0) < ($304 | 0)) HEAP32[$300 >> 2] = $304;\n     $307 = $labelInfo + 131084 + (($292 | 2) << 2) | 0;\n     $311 = HEAP32[$labelInfo + 1310736 + ($270 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$307 >> 2] | 0) > ($311 | 0)) HEAP32[$307 >> 2] = $311;\n     $314 = $labelInfo + 131084 + (($292 | 3) << 2) | 0;\n     $318 = HEAP32[$labelInfo + 1310736 + ($270 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$314 >> 2] | 0) < ($318 | 0)) HEAP32[$314 >> 2] = $318;\n     $i$537 = $i$537 + 1 | 0;\n    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$247 >> 2] | 0) > 0) {\n    $i$636 = 0;\n    do {\n     $322 = $labelInfo + 12 + ($i$636 << 2) | 0;\n     $325 = $i$636 << 1;\n     $326 = $labelInfo + 655376 + ($325 << 3) | 0;\n     HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$322 >> 2] | 0);\n     $332 = $labelInfo + 655376 + (($325 | 1) << 3) | 0;\n     HEAPF64[$332 >> 3] = +HEAPF64[$332 >> 3] / +(HEAP32[$322 >> 2] | 0);\n     $i$636 = $i$636 + 1 | 0;\n    } while (($i$636 | 0) < (HEAP32[$247 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubEWR3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $106 = 0, $111 = 0, $114 = 0, $131 = 0, $133 = 0, $135 = 0, $139 = 0, $143 = 0, $146 = 0, $148 = 0, $152 = 0, $156 = 0, $160 = 0, $165 = 0, $167 = 0, $17 = 0, $171 = 0, $175 = 0, $179 = 0, $18 = 0, $185 = 0, $188 = 0, $19 = 0, $190 = 0, $194 = 0, $198 = 0, $202 = 0, $205 = 0, $210 = 0, $225 = 0, $226 = 0, $227 = 0, $234 = 0, $236 = 0, $242 = 0, $246 = 0, $247 = 0, $254 = 0, $268 = 0, $269 = 0, $27 = 0, $272 = 0, $279 = 0, $280 = 0, $288 = 0, $291 = 0, $292 = 0, $296 = 0, $299 = 0, $303 = 0, $306 = 0, $310 = 0, $313 = 0, $317 = 0, $321 = 0, $324 = 0, $325 = 0, $331 = 0, $40 = 0, $43 = 0, $45 = 0, $49 = 0, $53 = 0, $59 = 0, $60 = 0, $63 = 0, $64 = 0, $65 = 0, $68 = 0, $71 = 0, $88 = 0, $9 = 0, $90 = 0, $92 = 0, $96 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$088 = 0;\n  $pnt1$090 = $0;\n  $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$089 >> 1] = 0;\n   HEAP16[$pnt1$090 >> 1] = 0;\n   $i$088 = $i$088 + 1 | 0;\n   if (($i$088 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$090 = $pnt1$090 + 2 | 0;\n    $pnt2$089 = $pnt2$089 + 2 | 0;\n   }\n  }\n }\n $9 = $labelingThresh * 3 | 0;\n $10 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$182 = 0;\n  $pnt1$184 = $0;\n  $pnt2$183 = $0 + ($10 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$183 >> 1] = 0;\n   HEAP16[$pnt1$184 >> 1] = 0;\n   $i$182 = $i$182 + 1 | 0;\n   if (($i$182 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;\n    $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0;\n   }\n  }\n }\n $17 = $labelInfo + 1179664 | 0;\n $18 = $xsize + 1 | 0;\n $19 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $27 = ($10 | 0) > 1;\n  $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $18 | 0;\n  $j$075 = 1;\n  $pnt$079 = $image + ($18 * 3 | 0) | 0;\n  $pnt2$278 = $0 + ($18 << 1) | 0;\n  $wk_max$074 = 0;\n  L13 : while (1) {\n   if ($27) {\n    $dpnt$166 = $dpnt$077;\n    $i$264 = 1;\n    $pnt$168 = $pnt$079;\n    $pnt2$367 = $pnt2$278;\n    $wk_max$159 = $wk_max$074;\n    while (1) {\n     do if (((HEAPU8[$pnt$168 + 1 >> 0] | 0) + (HEAPU8[$pnt$168 >> 0] | 0) + (HEAPU8[$pnt$168 + 2 >> 0] | 0) | 0) > ($9 | 0)) {\n      HEAP8[$dpnt$166 >> 0] = -1;\n      $40 = HEAP16[$pnt2$367 + ($19 << 1) >> 1] | 0;\n      if ($40 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$367 >> 1] = $40;\n       $43 = ($40 << 16 >> 16) * 7 | 0;\n       $45 = $labelInfo + 1310736 + ($43 + -7 << 2) | 0;\n       HEAP32[$45 >> 2] = (HEAP32[$45 >> 2] | 0) + 1;\n       $49 = $labelInfo + 1310736 + ($43 + -6 << 2) | 0;\n       HEAP32[$49 >> 2] = (HEAP32[$49 >> 2] | 0) + $i$264;\n       $53 = $labelInfo + 1310736 + ($43 + -5 << 2) | 0;\n       HEAP32[$53 >> 2] = (HEAP32[$53 >> 2] | 0) + $j$075;\n       HEAP32[$labelInfo + 1310736 + ($43 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $59 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0;\n      $60 = $59 << 16 >> 16;\n      $63 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0;\n      $64 = $63 << 16 >> 16;\n      $65 = $63 << 16 >> 16 > 0;\n      if ($59 << 16 >> 16 <= 0) {\n       if ($65) {\n        HEAP16[$pnt2$367 >> 1] = $63;\n        $165 = $64 * 7 | 0;\n        $167 = $labelInfo + 1310736 + ($165 + -7 << 2) | 0;\n        HEAP32[$167 >> 2] = (HEAP32[$167 >> 2] | 0) + 1;\n        $171 = $labelInfo + 1310736 + ($165 + -6 << 2) | 0;\n        HEAP32[$171 >> 2] = (HEAP32[$171 >> 2] | 0) + $i$264;\n        $175 = $labelInfo + 1310736 + ($165 + -5 << 2) | 0;\n        HEAP32[$175 >> 2] = (HEAP32[$175 >> 2] | 0) + $j$075;\n        $179 = $labelInfo + 1310736 + ($165 + -3 << 2) | 0;\n        if ((HEAP32[$179 >> 2] | 0) < ($i$264 | 0)) HEAP32[$179 >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($165 + -1 << 2) >> 2] = $j$075;\n        $wk_max$2 = $wk_max$159;\n        break;\n       }\n       $185 = HEAP16[$pnt2$367 + -2 >> 1] | 0;\n       if ($185 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$367 >> 1] = $185;\n        $188 = ($185 << 16 >> 16) * 7 | 0;\n        $190 = $labelInfo + 1310736 + ($188 + -7 << 2) | 0;\n        HEAP32[$190 >> 2] = (HEAP32[$190 >> 2] | 0) + 1;\n        $194 = $labelInfo + 1310736 + ($188 + -6 << 2) | 0;\n        HEAP32[$194 >> 2] = (HEAP32[$194 >> 2] | 0) + $i$264;\n        $198 = $labelInfo + 1310736 + ($188 + -5 << 2) | 0;\n        HEAP32[$198 >> 2] = (HEAP32[$198 >> 2] | 0) + $j$075;\n        $202 = $labelInfo + 1310736 + ($188 + -3 << 2) | 0;\n        if ((HEAP32[$202 >> 2] | 0) >= ($i$264 | 0)) {\n         $wk_max$2 = $wk_max$159;\n         break;\n        }\n        HEAP32[$202 >> 2] = $i$264;\n        $wk_max$2 = $wk_max$159;\n        break;\n       } else {\n        $205 = $wk_max$159 + 1 | 0;\n        if (($wk_max$159 | 0) > 32767) break L13;\n        HEAP16[$pnt2$367 >> 1] = $205;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $205 << 16 >> 16;\n        $210 = $wk_max$159 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($210 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($210 + 1 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($210 + 2 << 2) >> 2] = $j$075;\n        HEAP32[$labelInfo + 1310736 + ($210 + 3 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($210 + 4 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($210 + 5 << 2) >> 2] = $j$075;\n        HEAP32[$labelInfo + 1310736 + ($210 + 6 << 2) >> 2] = $j$075;\n        $wk_max$2 = $205;\n        break;\n       }\n      }\n      if ($65) {\n       $68 = HEAP32[$labelInfo + 1179664 + ($60 + -1 << 2) >> 2] | 0;\n       $71 = HEAP32[$labelInfo + 1179664 + ($64 + -1 << 2) >> 2] | 0;\n       if (($68 | 0) > ($71 | 0)) {\n        HEAP16[$pnt2$367 >> 1] = $71;\n        if (($wk_max$159 | 0) > 0) {\n         $k$055 = 0;\n         $wk$056 = $17;\n         while (1) {\n          if ((HEAP32[$wk$056 >> 2] | 0) == ($68 | 0)) HEAP32[$wk$056 >> 2] = $71;\n          $k$055 = $k$055 + 1 | 0;\n          if (($k$055 | 0) >= ($wk_max$159 | 0)) {\n           $88 = $71;\n           break;\n          } else $wk$056 = $wk$056 + 4 | 0;\n         }\n        } else $88 = $71;\n       } else {\n        HEAP16[$pnt2$367 >> 1] = $68;\n        if (($68 | 0) < ($71 | 0) & ($wk_max$159 | 0) > 0) {\n         $k$152 = 0;\n         $wk$153 = $17;\n         while (1) {\n          if ((HEAP32[$wk$153 >> 2] | 0) == ($71 | 0)) HEAP32[$wk$153 >> 2] = $68;\n          $k$152 = $k$152 + 1 | 0;\n          if (($k$152 | 0) >= ($wk_max$159 | 0)) {\n           $88 = $68;\n           break;\n          } else $wk$153 = $wk$153 + 4 | 0;\n         }\n        } else $88 = $68;\n       }\n       $90 = ($88 << 16 >> 16) * 7 | 0;\n       $92 = $labelInfo + 1310736 + ($90 + -7 << 2) | 0;\n       HEAP32[$92 >> 2] = (HEAP32[$92 >> 2] | 0) + 1;\n       $96 = $labelInfo + 1310736 + ($90 + -6 << 2) | 0;\n       HEAP32[$96 >> 2] = (HEAP32[$96 >> 2] | 0) + $i$264;\n       $100 = $labelInfo + 1310736 + ($90 + -5 << 2) | 0;\n       HEAP32[$100 >> 2] = (HEAP32[$100 >> 2] | 0) + $j$075;\n       HEAP32[$labelInfo + 1310736 + ($90 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $106 = HEAP16[$pnt2$367 + -2 >> 1] | 0;\n      if ($106 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$367 >> 1] = $59;\n       $146 = $60 * 7 | 0;\n       $148 = $labelInfo + 1310736 + ($146 + -7 << 2) | 0;\n       HEAP32[$148 >> 2] = (HEAP32[$148 >> 2] | 0) + 1;\n       $152 = $labelInfo + 1310736 + ($146 + -6 << 2) | 0;\n       HEAP32[$152 >> 2] = (HEAP32[$152 >> 2] | 0) + $i$264;\n       $156 = $labelInfo + 1310736 + ($146 + -5 << 2) | 0;\n       HEAP32[$156 >> 2] = (HEAP32[$156 >> 2] | 0) + $j$075;\n       $160 = $labelInfo + 1310736 + ($146 + -4 << 2) | 0;\n       if ((HEAP32[$160 >> 2] | 0) > ($i$264 | 0)) HEAP32[$160 >> 2] = $i$264;\n       HEAP32[$labelInfo + 1310736 + ($146 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $111 = HEAP32[$labelInfo + 1179664 + ($60 + -1 << 2) >> 2] | 0;\n      $114 = HEAP32[$labelInfo + 1179664 + (($106 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($111 | 0) > ($114 | 0)) {\n       HEAP16[$pnt2$367 >> 1] = $114;\n       if (($wk_max$159 | 0) > 0) {\n        $k$248 = 0;\n        $wk$249 = $17;\n        while (1) {\n         if ((HEAP32[$wk$249 >> 2] | 0) == ($111 | 0)) HEAP32[$wk$249 >> 2] = $114;\n         $k$248 = $k$248 + 1 | 0;\n         if (($k$248 | 0) >= ($wk_max$159 | 0)) {\n          $131 = $114;\n          break;\n         } else $wk$249 = $wk$249 + 4 | 0;\n        }\n       } else $131 = $114;\n      } else {\n       HEAP16[$pnt2$367 >> 1] = $111;\n       if (($111 | 0) < ($114 | 0) & ($wk_max$159 | 0) > 0) {\n        $k$345 = 0;\n        $wk$346 = $17;\n        while (1) {\n         if ((HEAP32[$wk$346 >> 2] | 0) == ($114 | 0)) HEAP32[$wk$346 >> 2] = $111;\n         $k$345 = $k$345 + 1 | 0;\n         if (($k$345 | 0) >= ($wk_max$159 | 0)) {\n          $131 = $111;\n          break;\n         } else $wk$346 = $wk$346 + 4 | 0;\n        }\n       } else $131 = $111;\n      }\n      $133 = ($131 << 16 >> 16) * 7 | 0;\n      $135 = $labelInfo + 1310736 + ($133 + -7 << 2) | 0;\n      HEAP32[$135 >> 2] = (HEAP32[$135 >> 2] | 0) + 1;\n      $139 = $labelInfo + 1310736 + ($133 + -6 << 2) | 0;\n      HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + $i$264;\n      $143 = $labelInfo + 1310736 + ($133 + -5 << 2) | 0;\n      HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $j$075;\n      $wk_max$2 = $wk_max$159;\n     } else {\n      HEAP16[$pnt2$367 >> 1] = 0;\n      HEAP8[$dpnt$166 >> 0] = 0;\n      $wk_max$2 = $wk_max$159;\n     } while (0);\n     $i$264 = $i$264 + 1 | 0;\n     $225 = $pnt$168 + 3 | 0;\n     $226 = $pnt2$367 + 2 | 0;\n     $227 = $dpnt$166 + 1 | 0;\n     if (($i$264 | 0) >= ($10 | 0)) {\n      $dpnt$1$lcssa = $227;\n      $pnt$1$lcssa = $225;\n      $pnt2$3$lcssa = $226;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $dpnt$166 = $227;\n      $pnt$168 = $225;\n      $pnt2$367 = $226;\n      $wk_max$159 = $wk_max$2;\n     }\n    }\n   } else {\n    $dpnt$1$lcssa = $dpnt$077;\n    $pnt$1$lcssa = $pnt$079;\n    $pnt2$3$lcssa = $pnt2$278;\n    $wk_max$1$lcssa = $wk_max$074;\n   }\n   $j$075 = $j$075 + 1 | 0;\n   if (($j$075 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $dpnt$077 = $dpnt$1$lcssa + 2 | 0;\n    $pnt$079 = $pnt$1$lcssa + 6 | 0;\n    $pnt2$278 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$074 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $234 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$341 = 1;\n   $j$142 = 1;\n   $wk$443 = $17;\n   while (1) {\n    $236 = HEAP32[$wk$443 >> 2] | 0;\n    if (($236 | 0) == ($i$341 | 0)) {\n     $242 = $j$142;\n     $j$2 = $j$142 + 1 | 0;\n    } else {\n     $242 = HEAP32[$labelInfo + 1179664 + ($236 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$142;\n    }\n    HEAP32[$wk$443 >> 2] = $242;\n    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$341 = $i$341 + 1 | 0;\n     $j$142 = $j$2;\n     $wk$443 = $wk$443 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $246 = $labelInfo + 8 | 0;\n  $247 = $j$1$lcssa + -1 | 0;\n  HEAP32[$246 >> 2] = $247;\n  if (!$247) $$0 = 0; else {\n   _memset($234 | 0, 0, $247 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $247 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$439 = 0;\n    do {\n     $254 = $i$439 << 2;\n     HEAP32[$labelInfo + 131084 + ($254 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($254 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($254 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($254 | 3) << 2) >> 2] = 0;\n     $i$439 = $i$439 + 1 | 0;\n    } while (($i$439 | 0) < (HEAP32[$246 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$537 = 0;\n    do {\n     $268 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;\n     $269 = $i$537 * 7 | 0;\n     $272 = $labelInfo + 12 + ($268 << 2) | 0;\n     HEAP32[$272 >> 2] = (HEAP32[$272 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($269 << 2) >> 2] | 0);\n     $279 = $268 << 1;\n     $280 = $labelInfo + 655376 + ($279 << 3) | 0;\n     HEAPF64[$280 >> 3] = +HEAPF64[$280 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($269 + 1 << 2) >> 2] | 0);\n     $288 = $labelInfo + 655376 + (($279 | 1) << 3) | 0;\n     HEAPF64[$288 >> 3] = +HEAPF64[$288 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($269 + 2 << 2) >> 2] | 0);\n     $291 = $268 << 2;\n     $292 = $labelInfo + 131084 + ($291 << 2) | 0;\n     $296 = HEAP32[$labelInfo + 1310736 + ($269 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$292 >> 2] | 0) > ($296 | 0)) HEAP32[$292 >> 2] = $296;\n     $299 = $labelInfo + 131084 + (($291 | 1) << 2) | 0;\n     $303 = HEAP32[$labelInfo + 1310736 + ($269 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$299 >> 2] | 0) < ($303 | 0)) HEAP32[$299 >> 2] = $303;\n     $306 = $labelInfo + 131084 + (($291 | 2) << 2) | 0;\n     $310 = HEAP32[$labelInfo + 1310736 + ($269 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$306 >> 2] | 0) > ($310 | 0)) HEAP32[$306 >> 2] = $310;\n     $313 = $labelInfo + 131084 + (($291 | 3) << 2) | 0;\n     $317 = HEAP32[$labelInfo + 1310736 + ($269 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$313 >> 2] | 0) < ($317 | 0)) HEAP32[$313 >> 2] = $317;\n     $i$537 = $i$537 + 1 | 0;\n    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$246 >> 2] | 0) > 0) {\n    $i$636 = 0;\n    do {\n     $321 = $labelInfo + 12 + ($i$636 << 2) | 0;\n     $324 = $i$636 << 1;\n     $325 = $labelInfo + 655376 + ($324 << 3) | 0;\n     HEAPF64[$325 >> 3] = +HEAPF64[$325 >> 3] / +(HEAP32[$321 >> 2] | 0);\n     $331 = $labelInfo + 655376 + (($324 | 1) << 3) | 0;\n     HEAPF64[$331 >> 3] = +HEAPF64[$331 >> 3] / +(HEAP32[$321 >> 2] | 0);\n     $i$636 = $i$636 + 1 | 0;\n    } while (($i$636 | 0) < (HEAP32[$246 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubEBR3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $106 = 0, $111 = 0, $114 = 0, $131 = 0, $133 = 0, $135 = 0, $139 = 0, $143 = 0, $146 = 0, $148 = 0, $152 = 0, $156 = 0, $160 = 0, $165 = 0, $167 = 0, $17 = 0, $171 = 0, $175 = 0, $179 = 0, $18 = 0, $185 = 0, $188 = 0, $19 = 0, $190 = 0, $194 = 0, $198 = 0, $202 = 0, $205 = 0, $210 = 0, $225 = 0, $226 = 0, $227 = 0, $234 = 0, $236 = 0, $242 = 0, $246 = 0, $247 = 0, $254 = 0, $268 = 0, $269 = 0, $27 = 0, $272 = 0, $279 = 0, $280 = 0, $288 = 0, $291 = 0, $292 = 0, $296 = 0, $299 = 0, $303 = 0, $306 = 0, $310 = 0, $313 = 0, $317 = 0, $321 = 0, $324 = 0, $325 = 0, $331 = 0, $40 = 0, $43 = 0, $45 = 0, $49 = 0, $53 = 0, $59 = 0, $60 = 0, $63 = 0, $64 = 0, $65 = 0, $68 = 0, $71 = 0, $88 = 0, $9 = 0, $90 = 0, $92 = 0, $96 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$088 = 0;\n  $pnt1$090 = $0;\n  $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$089 >> 1] = 0;\n   HEAP16[$pnt1$090 >> 1] = 0;\n   $i$088 = $i$088 + 1 | 0;\n   if (($i$088 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$090 = $pnt1$090 + 2 | 0;\n    $pnt2$089 = $pnt2$089 + 2 | 0;\n   }\n  }\n }\n $9 = $labelingThresh * 3 | 0;\n $10 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$182 = 0;\n  $pnt1$184 = $0;\n  $pnt2$183 = $0 + ($10 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$183 >> 1] = 0;\n   HEAP16[$pnt1$184 >> 1] = 0;\n   $i$182 = $i$182 + 1 | 0;\n   if (($i$182 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;\n    $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0;\n   }\n  }\n }\n $17 = $labelInfo + 1179664 | 0;\n $18 = $xsize + 1 | 0;\n $19 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $27 = ($10 | 0) > 1;\n  $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $18 | 0;\n  $j$075 = 1;\n  $pnt$079 = $image + ($18 * 3 | 0) | 0;\n  $pnt2$278 = $0 + ($18 << 1) | 0;\n  $wk_max$074 = 0;\n  L13 : while (1) {\n   if ($27) {\n    $dpnt$166 = $dpnt$077;\n    $i$264 = 1;\n    $pnt$168 = $pnt$079;\n    $pnt2$367 = $pnt2$278;\n    $wk_max$159 = $wk_max$074;\n    while (1) {\n     do if (((HEAPU8[$pnt$168 + 1 >> 0] | 0) + (HEAPU8[$pnt$168 >> 0] | 0) + (HEAPU8[$pnt$168 + 2 >> 0] | 0) | 0) > ($9 | 0)) {\n      HEAP16[$pnt2$367 >> 1] = 0;\n      HEAP8[$dpnt$166 >> 0] = 0;\n      $wk_max$2 = $wk_max$159;\n     } else {\n      HEAP8[$dpnt$166 >> 0] = -1;\n      $40 = HEAP16[$pnt2$367 + ($19 << 1) >> 1] | 0;\n      if ($40 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$367 >> 1] = $40;\n       $43 = ($40 << 16 >> 16) * 7 | 0;\n       $45 = $labelInfo + 1310736 + ($43 + -7 << 2) | 0;\n       HEAP32[$45 >> 2] = (HEAP32[$45 >> 2] | 0) + 1;\n       $49 = $labelInfo + 1310736 + ($43 + -6 << 2) | 0;\n       HEAP32[$49 >> 2] = (HEAP32[$49 >> 2] | 0) + $i$264;\n       $53 = $labelInfo + 1310736 + ($43 + -5 << 2) | 0;\n       HEAP32[$53 >> 2] = (HEAP32[$53 >> 2] | 0) + $j$075;\n       HEAP32[$labelInfo + 1310736 + ($43 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $59 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0;\n      $60 = $59 << 16 >> 16;\n      $63 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0;\n      $64 = $63 << 16 >> 16;\n      $65 = $63 << 16 >> 16 > 0;\n      if ($59 << 16 >> 16 <= 0) {\n       if ($65) {\n        HEAP16[$pnt2$367 >> 1] = $63;\n        $165 = $64 * 7 | 0;\n        $167 = $labelInfo + 1310736 + ($165 + -7 << 2) | 0;\n        HEAP32[$167 >> 2] = (HEAP32[$167 >> 2] | 0) + 1;\n        $171 = $labelInfo + 1310736 + ($165 + -6 << 2) | 0;\n        HEAP32[$171 >> 2] = (HEAP32[$171 >> 2] | 0) + $i$264;\n        $175 = $labelInfo + 1310736 + ($165 + -5 << 2) | 0;\n        HEAP32[$175 >> 2] = (HEAP32[$175 >> 2] | 0) + $j$075;\n        $179 = $labelInfo + 1310736 + ($165 + -3 << 2) | 0;\n        if ((HEAP32[$179 >> 2] | 0) < ($i$264 | 0)) HEAP32[$179 >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($165 + -1 << 2) >> 2] = $j$075;\n        $wk_max$2 = $wk_max$159;\n        break;\n       }\n       $185 = HEAP16[$pnt2$367 + -2 >> 1] | 0;\n       if ($185 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$367 >> 1] = $185;\n        $188 = ($185 << 16 >> 16) * 7 | 0;\n        $190 = $labelInfo + 1310736 + ($188 + -7 << 2) | 0;\n        HEAP32[$190 >> 2] = (HEAP32[$190 >> 2] | 0) + 1;\n        $194 = $labelInfo + 1310736 + ($188 + -6 << 2) | 0;\n        HEAP32[$194 >> 2] = (HEAP32[$194 >> 2] | 0) + $i$264;\n        $198 = $labelInfo + 1310736 + ($188 + -5 << 2) | 0;\n        HEAP32[$198 >> 2] = (HEAP32[$198 >> 2] | 0) + $j$075;\n        $202 = $labelInfo + 1310736 + ($188 + -3 << 2) | 0;\n        if ((HEAP32[$202 >> 2] | 0) >= ($i$264 | 0)) {\n         $wk_max$2 = $wk_max$159;\n         break;\n        }\n        HEAP32[$202 >> 2] = $i$264;\n        $wk_max$2 = $wk_max$159;\n        break;\n       } else {\n        $205 = $wk_max$159 + 1 | 0;\n        if (($wk_max$159 | 0) > 32767) break L13;\n        HEAP16[$pnt2$367 >> 1] = $205;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $205 << 16 >> 16;\n        $210 = $wk_max$159 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($210 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($210 + 1 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($210 + 2 << 2) >> 2] = $j$075;\n        HEAP32[$labelInfo + 1310736 + ($210 + 3 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($210 + 4 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($210 + 5 << 2) >> 2] = $j$075;\n        HEAP32[$labelInfo + 1310736 + ($210 + 6 << 2) >> 2] = $j$075;\n        $wk_max$2 = $205;\n        break;\n       }\n      }\n      if ($65) {\n       $68 = HEAP32[$labelInfo + 1179664 + ($60 + -1 << 2) >> 2] | 0;\n       $71 = HEAP32[$labelInfo + 1179664 + ($64 + -1 << 2) >> 2] | 0;\n       if (($68 | 0) > ($71 | 0)) {\n        HEAP16[$pnt2$367 >> 1] = $71;\n        if (($wk_max$159 | 0) > 0) {\n         $k$055 = 0;\n         $wk$056 = $17;\n         while (1) {\n          if ((HEAP32[$wk$056 >> 2] | 0) == ($68 | 0)) HEAP32[$wk$056 >> 2] = $71;\n          $k$055 = $k$055 + 1 | 0;\n          if (($k$055 | 0) >= ($wk_max$159 | 0)) {\n           $88 = $71;\n           break;\n          } else $wk$056 = $wk$056 + 4 | 0;\n         }\n        } else $88 = $71;\n       } else {\n        HEAP16[$pnt2$367 >> 1] = $68;\n        if (($68 | 0) < ($71 | 0) & ($wk_max$159 | 0) > 0) {\n         $k$152 = 0;\n         $wk$153 = $17;\n         while (1) {\n          if ((HEAP32[$wk$153 >> 2] | 0) == ($71 | 0)) HEAP32[$wk$153 >> 2] = $68;\n          $k$152 = $k$152 + 1 | 0;\n          if (($k$152 | 0) >= ($wk_max$159 | 0)) {\n           $88 = $68;\n           break;\n          } else $wk$153 = $wk$153 + 4 | 0;\n         }\n        } else $88 = $68;\n       }\n       $90 = ($88 << 16 >> 16) * 7 | 0;\n       $92 = $labelInfo + 1310736 + ($90 + -7 << 2) | 0;\n       HEAP32[$92 >> 2] = (HEAP32[$92 >> 2] | 0) + 1;\n       $96 = $labelInfo + 1310736 + ($90 + -6 << 2) | 0;\n       HEAP32[$96 >> 2] = (HEAP32[$96 >> 2] | 0) + $i$264;\n       $100 = $labelInfo + 1310736 + ($90 + -5 << 2) | 0;\n       HEAP32[$100 >> 2] = (HEAP32[$100 >> 2] | 0) + $j$075;\n       HEAP32[$labelInfo + 1310736 + ($90 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $106 = HEAP16[$pnt2$367 + -2 >> 1] | 0;\n      if ($106 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$367 >> 1] = $59;\n       $146 = $60 * 7 | 0;\n       $148 = $labelInfo + 1310736 + ($146 + -7 << 2) | 0;\n       HEAP32[$148 >> 2] = (HEAP32[$148 >> 2] | 0) + 1;\n       $152 = $labelInfo + 1310736 + ($146 + -6 << 2) | 0;\n       HEAP32[$152 >> 2] = (HEAP32[$152 >> 2] | 0) + $i$264;\n       $156 = $labelInfo + 1310736 + ($146 + -5 << 2) | 0;\n       HEAP32[$156 >> 2] = (HEAP32[$156 >> 2] | 0) + $j$075;\n       $160 = $labelInfo + 1310736 + ($146 + -4 << 2) | 0;\n       if ((HEAP32[$160 >> 2] | 0) > ($i$264 | 0)) HEAP32[$160 >> 2] = $i$264;\n       HEAP32[$labelInfo + 1310736 + ($146 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $111 = HEAP32[$labelInfo + 1179664 + ($60 + -1 << 2) >> 2] | 0;\n      $114 = HEAP32[$labelInfo + 1179664 + (($106 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($111 | 0) > ($114 | 0)) {\n       HEAP16[$pnt2$367 >> 1] = $114;\n       if (($wk_max$159 | 0) > 0) {\n        $k$248 = 0;\n        $wk$249 = $17;\n        while (1) {\n         if ((HEAP32[$wk$249 >> 2] | 0) == ($111 | 0)) HEAP32[$wk$249 >> 2] = $114;\n         $k$248 = $k$248 + 1 | 0;\n         if (($k$248 | 0) >= ($wk_max$159 | 0)) {\n          $131 = $114;\n          break;\n         } else $wk$249 = $wk$249 + 4 | 0;\n        }\n       } else $131 = $114;\n      } else {\n       HEAP16[$pnt2$367 >> 1] = $111;\n       if (($111 | 0) < ($114 | 0) & ($wk_max$159 | 0) > 0) {\n        $k$345 = 0;\n        $wk$346 = $17;\n        while (1) {\n         if ((HEAP32[$wk$346 >> 2] | 0) == ($114 | 0)) HEAP32[$wk$346 >> 2] = $111;\n         $k$345 = $k$345 + 1 | 0;\n         if (($k$345 | 0) >= ($wk_max$159 | 0)) {\n          $131 = $111;\n          break;\n         } else $wk$346 = $wk$346 + 4 | 0;\n        }\n       } else $131 = $111;\n      }\n      $133 = ($131 << 16 >> 16) * 7 | 0;\n      $135 = $labelInfo + 1310736 + ($133 + -7 << 2) | 0;\n      HEAP32[$135 >> 2] = (HEAP32[$135 >> 2] | 0) + 1;\n      $139 = $labelInfo + 1310736 + ($133 + -6 << 2) | 0;\n      HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + $i$264;\n      $143 = $labelInfo + 1310736 + ($133 + -5 << 2) | 0;\n      HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $j$075;\n      $wk_max$2 = $wk_max$159;\n     } while (0);\n     $i$264 = $i$264 + 1 | 0;\n     $225 = $pnt$168 + 3 | 0;\n     $226 = $pnt2$367 + 2 | 0;\n     $227 = $dpnt$166 + 1 | 0;\n     if (($i$264 | 0) >= ($10 | 0)) {\n      $dpnt$1$lcssa = $227;\n      $pnt$1$lcssa = $225;\n      $pnt2$3$lcssa = $226;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $dpnt$166 = $227;\n      $pnt$168 = $225;\n      $pnt2$367 = $226;\n      $wk_max$159 = $wk_max$2;\n     }\n    }\n   } else {\n    $dpnt$1$lcssa = $dpnt$077;\n    $pnt$1$lcssa = $pnt$079;\n    $pnt2$3$lcssa = $pnt2$278;\n    $wk_max$1$lcssa = $wk_max$074;\n   }\n   $j$075 = $j$075 + 1 | 0;\n   if (($j$075 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $dpnt$077 = $dpnt$1$lcssa + 2 | 0;\n    $pnt$079 = $pnt$1$lcssa + 6 | 0;\n    $pnt2$278 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$074 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $234 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$341 = 1;\n   $j$142 = 1;\n   $wk$443 = $17;\n   while (1) {\n    $236 = HEAP32[$wk$443 >> 2] | 0;\n    if (($236 | 0) == ($i$341 | 0)) {\n     $242 = $j$142;\n     $j$2 = $j$142 + 1 | 0;\n    } else {\n     $242 = HEAP32[$labelInfo + 1179664 + ($236 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$142;\n    }\n    HEAP32[$wk$443 >> 2] = $242;\n    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$341 = $i$341 + 1 | 0;\n     $j$142 = $j$2;\n     $wk$443 = $wk$443 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $246 = $labelInfo + 8 | 0;\n  $247 = $j$1$lcssa + -1 | 0;\n  HEAP32[$246 >> 2] = $247;\n  if (!$247) $$0 = 0; else {\n   _memset($234 | 0, 0, $247 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $247 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$439 = 0;\n    do {\n     $254 = $i$439 << 2;\n     HEAP32[$labelInfo + 131084 + ($254 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($254 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($254 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($254 | 3) << 2) >> 2] = 0;\n     $i$439 = $i$439 + 1 | 0;\n    } while (($i$439 | 0) < (HEAP32[$246 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$537 = 0;\n    do {\n     $268 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;\n     $269 = $i$537 * 7 | 0;\n     $272 = $labelInfo + 12 + ($268 << 2) | 0;\n     HEAP32[$272 >> 2] = (HEAP32[$272 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($269 << 2) >> 2] | 0);\n     $279 = $268 << 1;\n     $280 = $labelInfo + 655376 + ($279 << 3) | 0;\n     HEAPF64[$280 >> 3] = +HEAPF64[$280 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($269 + 1 << 2) >> 2] | 0);\n     $288 = $labelInfo + 655376 + (($279 | 1) << 3) | 0;\n     HEAPF64[$288 >> 3] = +HEAPF64[$288 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($269 + 2 << 2) >> 2] | 0);\n     $291 = $268 << 2;\n     $292 = $labelInfo + 131084 + ($291 << 2) | 0;\n     $296 = HEAP32[$labelInfo + 1310736 + ($269 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$292 >> 2] | 0) > ($296 | 0)) HEAP32[$292 >> 2] = $296;\n     $299 = $labelInfo + 131084 + (($291 | 1) << 2) | 0;\n     $303 = HEAP32[$labelInfo + 1310736 + ($269 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$299 >> 2] | 0) < ($303 | 0)) HEAP32[$299 >> 2] = $303;\n     $306 = $labelInfo + 131084 + (($291 | 2) << 2) | 0;\n     $310 = HEAP32[$labelInfo + 1310736 + ($269 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$306 >> 2] | 0) > ($310 | 0)) HEAP32[$306 >> 2] = $310;\n     $313 = $labelInfo + 131084 + (($291 | 3) << 2) | 0;\n     $317 = HEAP32[$labelInfo + 1310736 + ($269 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$313 >> 2] | 0) < ($317 | 0)) HEAP32[$313 >> 2] = $317;\n     $i$537 = $i$537 + 1 | 0;\n    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$246 >> 2] | 0) > 0) {\n    $i$636 = 0;\n    do {\n     $321 = $labelInfo + 12 + ($i$636 << 2) | 0;\n     $324 = $i$636 << 1;\n     $325 = $labelInfo + 655376 + ($324 << 3) | 0;\n     HEAPF64[$325 >> 3] = +HEAPF64[$325 >> 3] / +(HEAP32[$321 >> 2] | 0);\n     $331 = $labelInfo + 655376 + (($324 | 1) << 3) | 0;\n     HEAPF64[$331 >> 3] = +HEAPF64[$331 >> 3] / +(HEAP32[$321 >> 2] | 0);\n     $i$636 = $i$636 + 1 | 0;\n    } while (($i$636 | 0) < (HEAP32[$246 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubEWR3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $106 = 0, $111 = 0, $114 = 0, $131 = 0, $133 = 0, $135 = 0, $139 = 0, $143 = 0, $146 = 0, $148 = 0, $152 = 0, $156 = 0, $160 = 0, $165 = 0, $167 = 0, $17 = 0, $171 = 0, $175 = 0, $179 = 0, $18 = 0, $185 = 0, $188 = 0, $19 = 0, $190 = 0, $194 = 0, $198 = 0, $202 = 0, $205 = 0, $210 = 0, $225 = 0, $226 = 0, $227 = 0, $234 = 0, $236 = 0, $242 = 0, $246 = 0, $247 = 0, $254 = 0, $268 = 0, $269 = 0, $27 = 0, $272 = 0, $279 = 0, $280 = 0, $288 = 0, $291 = 0, $292 = 0, $296 = 0, $299 = 0, $303 = 0, $306 = 0, $310 = 0, $313 = 0, $317 = 0, $321 = 0, $324 = 0, $325 = 0, $331 = 0, $40 = 0, $43 = 0, $45 = 0, $49 = 0, $53 = 0, $59 = 0, $60 = 0, $63 = 0, $64 = 0, $65 = 0, $68 = 0, $71 = 0, $88 = 0, $9 = 0, $90 = 0, $92 = 0, $96 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$088 = 0;\n  $pnt1$090 = $0;\n  $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$089 >> 1] = 0;\n   HEAP16[$pnt1$090 >> 1] = 0;\n   $i$088 = $i$088 + 1 | 0;\n   if (($i$088 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$090 = $pnt1$090 + 2 | 0;\n    $pnt2$089 = $pnt2$089 + 2 | 0;\n   }\n  }\n }\n $9 = $labelingThresh * 3 | 0;\n $10 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$182 = 0;\n  $pnt1$184 = $0;\n  $pnt2$183 = $0 + ($10 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$183 >> 1] = 0;\n   HEAP16[$pnt1$184 >> 1] = 0;\n   $i$182 = $i$182 + 1 | 0;\n   if (($i$182 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;\n    $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0;\n   }\n  }\n }\n $17 = $labelInfo + 1179664 | 0;\n $18 = $xsize + 1 | 0;\n $19 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $27 = ($10 | 0) > 1;\n  $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $18 | 0;\n  $j$075 = 1;\n  $pnt$079 = $image + ($18 << 2) | 0;\n  $pnt2$278 = $0 + ($18 << 1) | 0;\n  $wk_max$074 = 0;\n  L13 : while (1) {\n   if ($27) {\n    $dpnt$166 = $dpnt$077;\n    $i$264 = 1;\n    $pnt$168 = $pnt$079;\n    $pnt2$367 = $pnt2$278;\n    $wk_max$159 = $wk_max$074;\n    while (1) {\n     do if (((HEAPU8[$pnt$168 + 1 >> 0] | 0) + (HEAPU8[$pnt$168 >> 0] | 0) + (HEAPU8[$pnt$168 + 2 >> 0] | 0) | 0) > ($9 | 0)) {\n      HEAP8[$dpnt$166 >> 0] = -1;\n      $40 = HEAP16[$pnt2$367 + ($19 << 1) >> 1] | 0;\n      if ($40 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$367 >> 1] = $40;\n       $43 = ($40 << 16 >> 16) * 7 | 0;\n       $45 = $labelInfo + 1310736 + ($43 + -7 << 2) | 0;\n       HEAP32[$45 >> 2] = (HEAP32[$45 >> 2] | 0) + 1;\n       $49 = $labelInfo + 1310736 + ($43 + -6 << 2) | 0;\n       HEAP32[$49 >> 2] = (HEAP32[$49 >> 2] | 0) + $i$264;\n       $53 = $labelInfo + 1310736 + ($43 + -5 << 2) | 0;\n       HEAP32[$53 >> 2] = (HEAP32[$53 >> 2] | 0) + $j$075;\n       HEAP32[$labelInfo + 1310736 + ($43 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $59 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0;\n      $60 = $59 << 16 >> 16;\n      $63 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0;\n      $64 = $63 << 16 >> 16;\n      $65 = $63 << 16 >> 16 > 0;\n      if ($59 << 16 >> 16 <= 0) {\n       if ($65) {\n        HEAP16[$pnt2$367 >> 1] = $63;\n        $165 = $64 * 7 | 0;\n        $167 = $labelInfo + 1310736 + ($165 + -7 << 2) | 0;\n        HEAP32[$167 >> 2] = (HEAP32[$167 >> 2] | 0) + 1;\n        $171 = $labelInfo + 1310736 + ($165 + -6 << 2) | 0;\n        HEAP32[$171 >> 2] = (HEAP32[$171 >> 2] | 0) + $i$264;\n        $175 = $labelInfo + 1310736 + ($165 + -5 << 2) | 0;\n        HEAP32[$175 >> 2] = (HEAP32[$175 >> 2] | 0) + $j$075;\n        $179 = $labelInfo + 1310736 + ($165 + -3 << 2) | 0;\n        if ((HEAP32[$179 >> 2] | 0) < ($i$264 | 0)) HEAP32[$179 >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($165 + -1 << 2) >> 2] = $j$075;\n        $wk_max$2 = $wk_max$159;\n        break;\n       }\n       $185 = HEAP16[$pnt2$367 + -2 >> 1] | 0;\n       if ($185 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$367 >> 1] = $185;\n        $188 = ($185 << 16 >> 16) * 7 | 0;\n        $190 = $labelInfo + 1310736 + ($188 + -7 << 2) | 0;\n        HEAP32[$190 >> 2] = (HEAP32[$190 >> 2] | 0) + 1;\n        $194 = $labelInfo + 1310736 + ($188 + -6 << 2) | 0;\n        HEAP32[$194 >> 2] = (HEAP32[$194 >> 2] | 0) + $i$264;\n        $198 = $labelInfo + 1310736 + ($188 + -5 << 2) | 0;\n        HEAP32[$198 >> 2] = (HEAP32[$198 >> 2] | 0) + $j$075;\n        $202 = $labelInfo + 1310736 + ($188 + -3 << 2) | 0;\n        if ((HEAP32[$202 >> 2] | 0) >= ($i$264 | 0)) {\n         $wk_max$2 = $wk_max$159;\n         break;\n        }\n        HEAP32[$202 >> 2] = $i$264;\n        $wk_max$2 = $wk_max$159;\n        break;\n       } else {\n        $205 = $wk_max$159 + 1 | 0;\n        if (($wk_max$159 | 0) > 32767) break L13;\n        HEAP16[$pnt2$367 >> 1] = $205;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $205 << 16 >> 16;\n        $210 = $wk_max$159 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($210 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($210 + 1 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($210 + 2 << 2) >> 2] = $j$075;\n        HEAP32[$labelInfo + 1310736 + ($210 + 3 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($210 + 4 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($210 + 5 << 2) >> 2] = $j$075;\n        HEAP32[$labelInfo + 1310736 + ($210 + 6 << 2) >> 2] = $j$075;\n        $wk_max$2 = $205;\n        break;\n       }\n      }\n      if ($65) {\n       $68 = HEAP32[$labelInfo + 1179664 + ($60 + -1 << 2) >> 2] | 0;\n       $71 = HEAP32[$labelInfo + 1179664 + ($64 + -1 << 2) >> 2] | 0;\n       if (($68 | 0) > ($71 | 0)) {\n        HEAP16[$pnt2$367 >> 1] = $71;\n        if (($wk_max$159 | 0) > 0) {\n         $k$055 = 0;\n         $wk$056 = $17;\n         while (1) {\n          if ((HEAP32[$wk$056 >> 2] | 0) == ($68 | 0)) HEAP32[$wk$056 >> 2] = $71;\n          $k$055 = $k$055 + 1 | 0;\n          if (($k$055 | 0) >= ($wk_max$159 | 0)) {\n           $88 = $71;\n           break;\n          } else $wk$056 = $wk$056 + 4 | 0;\n         }\n        } else $88 = $71;\n       } else {\n        HEAP16[$pnt2$367 >> 1] = $68;\n        if (($68 | 0) < ($71 | 0) & ($wk_max$159 | 0) > 0) {\n         $k$152 = 0;\n         $wk$153 = $17;\n         while (1) {\n          if ((HEAP32[$wk$153 >> 2] | 0) == ($71 | 0)) HEAP32[$wk$153 >> 2] = $68;\n          $k$152 = $k$152 + 1 | 0;\n          if (($k$152 | 0) >= ($wk_max$159 | 0)) {\n           $88 = $68;\n           break;\n          } else $wk$153 = $wk$153 + 4 | 0;\n         }\n        } else $88 = $68;\n       }\n       $90 = ($88 << 16 >> 16) * 7 | 0;\n       $92 = $labelInfo + 1310736 + ($90 + -7 << 2) | 0;\n       HEAP32[$92 >> 2] = (HEAP32[$92 >> 2] | 0) + 1;\n       $96 = $labelInfo + 1310736 + ($90 + -6 << 2) | 0;\n       HEAP32[$96 >> 2] = (HEAP32[$96 >> 2] | 0) + $i$264;\n       $100 = $labelInfo + 1310736 + ($90 + -5 << 2) | 0;\n       HEAP32[$100 >> 2] = (HEAP32[$100 >> 2] | 0) + $j$075;\n       HEAP32[$labelInfo + 1310736 + ($90 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $106 = HEAP16[$pnt2$367 + -2 >> 1] | 0;\n      if ($106 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$367 >> 1] = $59;\n       $146 = $60 * 7 | 0;\n       $148 = $labelInfo + 1310736 + ($146 + -7 << 2) | 0;\n       HEAP32[$148 >> 2] = (HEAP32[$148 >> 2] | 0) + 1;\n       $152 = $labelInfo + 1310736 + ($146 + -6 << 2) | 0;\n       HEAP32[$152 >> 2] = (HEAP32[$152 >> 2] | 0) + $i$264;\n       $156 = $labelInfo + 1310736 + ($146 + -5 << 2) | 0;\n       HEAP32[$156 >> 2] = (HEAP32[$156 >> 2] | 0) + $j$075;\n       $160 = $labelInfo + 1310736 + ($146 + -4 << 2) | 0;\n       if ((HEAP32[$160 >> 2] | 0) > ($i$264 | 0)) HEAP32[$160 >> 2] = $i$264;\n       HEAP32[$labelInfo + 1310736 + ($146 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $111 = HEAP32[$labelInfo + 1179664 + ($60 + -1 << 2) >> 2] | 0;\n      $114 = HEAP32[$labelInfo + 1179664 + (($106 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($111 | 0) > ($114 | 0)) {\n       HEAP16[$pnt2$367 >> 1] = $114;\n       if (($wk_max$159 | 0) > 0) {\n        $k$248 = 0;\n        $wk$249 = $17;\n        while (1) {\n         if ((HEAP32[$wk$249 >> 2] | 0) == ($111 | 0)) HEAP32[$wk$249 >> 2] = $114;\n         $k$248 = $k$248 + 1 | 0;\n         if (($k$248 | 0) >= ($wk_max$159 | 0)) {\n          $131 = $114;\n          break;\n         } else $wk$249 = $wk$249 + 4 | 0;\n        }\n       } else $131 = $114;\n      } else {\n       HEAP16[$pnt2$367 >> 1] = $111;\n       if (($111 | 0) < ($114 | 0) & ($wk_max$159 | 0) > 0) {\n        $k$345 = 0;\n        $wk$346 = $17;\n        while (1) {\n         if ((HEAP32[$wk$346 >> 2] | 0) == ($114 | 0)) HEAP32[$wk$346 >> 2] = $111;\n         $k$345 = $k$345 + 1 | 0;\n         if (($k$345 | 0) >= ($wk_max$159 | 0)) {\n          $131 = $111;\n          break;\n         } else $wk$346 = $wk$346 + 4 | 0;\n        }\n       } else $131 = $111;\n      }\n      $133 = ($131 << 16 >> 16) * 7 | 0;\n      $135 = $labelInfo + 1310736 + ($133 + -7 << 2) | 0;\n      HEAP32[$135 >> 2] = (HEAP32[$135 >> 2] | 0) + 1;\n      $139 = $labelInfo + 1310736 + ($133 + -6 << 2) | 0;\n      HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + $i$264;\n      $143 = $labelInfo + 1310736 + ($133 + -5 << 2) | 0;\n      HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $j$075;\n      $wk_max$2 = $wk_max$159;\n     } else {\n      HEAP16[$pnt2$367 >> 1] = 0;\n      HEAP8[$dpnt$166 >> 0] = 0;\n      $wk_max$2 = $wk_max$159;\n     } while (0);\n     $i$264 = $i$264 + 1 | 0;\n     $225 = $pnt$168 + 4 | 0;\n     $226 = $pnt2$367 + 2 | 0;\n     $227 = $dpnt$166 + 1 | 0;\n     if (($i$264 | 0) >= ($10 | 0)) {\n      $dpnt$1$lcssa = $227;\n      $pnt$1$lcssa = $225;\n      $pnt2$3$lcssa = $226;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $dpnt$166 = $227;\n      $pnt$168 = $225;\n      $pnt2$367 = $226;\n      $wk_max$159 = $wk_max$2;\n     }\n    }\n   } else {\n    $dpnt$1$lcssa = $dpnt$077;\n    $pnt$1$lcssa = $pnt$079;\n    $pnt2$3$lcssa = $pnt2$278;\n    $wk_max$1$lcssa = $wk_max$074;\n   }\n   $j$075 = $j$075 + 1 | 0;\n   if (($j$075 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $dpnt$077 = $dpnt$1$lcssa + 2 | 0;\n    $pnt$079 = $pnt$1$lcssa + 8 | 0;\n    $pnt2$278 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$074 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $234 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$341 = 1;\n   $j$142 = 1;\n   $wk$443 = $17;\n   while (1) {\n    $236 = HEAP32[$wk$443 >> 2] | 0;\n    if (($236 | 0) == ($i$341 | 0)) {\n     $242 = $j$142;\n     $j$2 = $j$142 + 1 | 0;\n    } else {\n     $242 = HEAP32[$labelInfo + 1179664 + ($236 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$142;\n    }\n    HEAP32[$wk$443 >> 2] = $242;\n    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$341 = $i$341 + 1 | 0;\n     $j$142 = $j$2;\n     $wk$443 = $wk$443 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $246 = $labelInfo + 8 | 0;\n  $247 = $j$1$lcssa + -1 | 0;\n  HEAP32[$246 >> 2] = $247;\n  if (!$247) $$0 = 0; else {\n   _memset($234 | 0, 0, $247 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $247 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$439 = 0;\n    do {\n     $254 = $i$439 << 2;\n     HEAP32[$labelInfo + 131084 + ($254 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($254 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($254 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($254 | 3) << 2) >> 2] = 0;\n     $i$439 = $i$439 + 1 | 0;\n    } while (($i$439 | 0) < (HEAP32[$246 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$537 = 0;\n    do {\n     $268 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;\n     $269 = $i$537 * 7 | 0;\n     $272 = $labelInfo + 12 + ($268 << 2) | 0;\n     HEAP32[$272 >> 2] = (HEAP32[$272 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($269 << 2) >> 2] | 0);\n     $279 = $268 << 1;\n     $280 = $labelInfo + 655376 + ($279 << 3) | 0;\n     HEAPF64[$280 >> 3] = +HEAPF64[$280 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($269 + 1 << 2) >> 2] | 0);\n     $288 = $labelInfo + 655376 + (($279 | 1) << 3) | 0;\n     HEAPF64[$288 >> 3] = +HEAPF64[$288 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($269 + 2 << 2) >> 2] | 0);\n     $291 = $268 << 2;\n     $292 = $labelInfo + 131084 + ($291 << 2) | 0;\n     $296 = HEAP32[$labelInfo + 1310736 + ($269 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$292 >> 2] | 0) > ($296 | 0)) HEAP32[$292 >> 2] = $296;\n     $299 = $labelInfo + 131084 + (($291 | 1) << 2) | 0;\n     $303 = HEAP32[$labelInfo + 1310736 + ($269 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$299 >> 2] | 0) < ($303 | 0)) HEAP32[$299 >> 2] = $303;\n     $306 = $labelInfo + 131084 + (($291 | 2) << 2) | 0;\n     $310 = HEAP32[$labelInfo + 1310736 + ($269 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$306 >> 2] | 0) > ($310 | 0)) HEAP32[$306 >> 2] = $310;\n     $313 = $labelInfo + 131084 + (($291 | 3) << 2) | 0;\n     $317 = HEAP32[$labelInfo + 1310736 + ($269 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$313 >> 2] | 0) < ($317 | 0)) HEAP32[$313 >> 2] = $317;\n     $i$537 = $i$537 + 1 | 0;\n    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$246 >> 2] | 0) > 0) {\n    $i$636 = 0;\n    do {\n     $321 = $labelInfo + 12 + ($i$636 << 2) | 0;\n     $324 = $i$636 << 1;\n     $325 = $labelInfo + 655376 + ($324 << 3) | 0;\n     HEAPF64[$325 >> 3] = +HEAPF64[$325 >> 3] / +(HEAP32[$321 >> 2] | 0);\n     $331 = $labelInfo + 655376 + (($324 | 1) << 3) | 0;\n     HEAPF64[$331 >> 3] = +HEAPF64[$331 >> 3] / +(HEAP32[$321 >> 2] | 0);\n     $i$636 = $i$636 + 1 | 0;\n    } while (($i$636 | 0) < (HEAP32[$246 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubEBR3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $106 = 0, $111 = 0, $114 = 0, $131 = 0, $133 = 0, $135 = 0, $139 = 0, $143 = 0, $146 = 0, $148 = 0, $152 = 0, $156 = 0, $160 = 0, $165 = 0, $167 = 0, $17 = 0, $171 = 0, $175 = 0, $179 = 0, $18 = 0, $185 = 0, $188 = 0, $19 = 0, $190 = 0, $194 = 0, $198 = 0, $202 = 0, $205 = 0, $210 = 0, $225 = 0, $226 = 0, $227 = 0, $234 = 0, $236 = 0, $242 = 0, $246 = 0, $247 = 0, $254 = 0, $268 = 0, $269 = 0, $27 = 0, $272 = 0, $279 = 0, $280 = 0, $288 = 0, $291 = 0, $292 = 0, $296 = 0, $299 = 0, $303 = 0, $306 = 0, $310 = 0, $313 = 0, $317 = 0, $321 = 0, $324 = 0, $325 = 0, $331 = 0, $40 = 0, $43 = 0, $45 = 0, $49 = 0, $53 = 0, $59 = 0, $60 = 0, $63 = 0, $64 = 0, $65 = 0, $68 = 0, $71 = 0, $88 = 0, $9 = 0, $90 = 0, $92 = 0, $96 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$088 = 0;\n  $pnt1$090 = $0;\n  $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$089 >> 1] = 0;\n   HEAP16[$pnt1$090 >> 1] = 0;\n   $i$088 = $i$088 + 1 | 0;\n   if (($i$088 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$090 = $pnt1$090 + 2 | 0;\n    $pnt2$089 = $pnt2$089 + 2 | 0;\n   }\n  }\n }\n $9 = $labelingThresh * 3 | 0;\n $10 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$182 = 0;\n  $pnt1$184 = $0;\n  $pnt2$183 = $0 + ($10 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$183 >> 1] = 0;\n   HEAP16[$pnt1$184 >> 1] = 0;\n   $i$182 = $i$182 + 1 | 0;\n   if (($i$182 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;\n    $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0;\n   }\n  }\n }\n $17 = $labelInfo + 1179664 | 0;\n $18 = $xsize + 1 | 0;\n $19 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $27 = ($10 | 0) > 1;\n  $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $18 | 0;\n  $j$075 = 1;\n  $pnt$079 = $image + ($18 << 2) | 0;\n  $pnt2$278 = $0 + ($18 << 1) | 0;\n  $wk_max$074 = 0;\n  L13 : while (1) {\n   if ($27) {\n    $dpnt$166 = $dpnt$077;\n    $i$264 = 1;\n    $pnt$168 = $pnt$079;\n    $pnt2$367 = $pnt2$278;\n    $wk_max$159 = $wk_max$074;\n    while (1) {\n     do if (((HEAPU8[$pnt$168 + 1 >> 0] | 0) + (HEAPU8[$pnt$168 >> 0] | 0) + (HEAPU8[$pnt$168 + 2 >> 0] | 0) | 0) > ($9 | 0)) {\n      HEAP16[$pnt2$367 >> 1] = 0;\n      HEAP8[$dpnt$166 >> 0] = 0;\n      $wk_max$2 = $wk_max$159;\n     } else {\n      HEAP8[$dpnt$166 >> 0] = -1;\n      $40 = HEAP16[$pnt2$367 + ($19 << 1) >> 1] | 0;\n      if ($40 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$367 >> 1] = $40;\n       $43 = ($40 << 16 >> 16) * 7 | 0;\n       $45 = $labelInfo + 1310736 + ($43 + -7 << 2) | 0;\n       HEAP32[$45 >> 2] = (HEAP32[$45 >> 2] | 0) + 1;\n       $49 = $labelInfo + 1310736 + ($43 + -6 << 2) | 0;\n       HEAP32[$49 >> 2] = (HEAP32[$49 >> 2] | 0) + $i$264;\n       $53 = $labelInfo + 1310736 + ($43 + -5 << 2) | 0;\n       HEAP32[$53 >> 2] = (HEAP32[$53 >> 2] | 0) + $j$075;\n       HEAP32[$labelInfo + 1310736 + ($43 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $59 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0;\n      $60 = $59 << 16 >> 16;\n      $63 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0;\n      $64 = $63 << 16 >> 16;\n      $65 = $63 << 16 >> 16 > 0;\n      if ($59 << 16 >> 16 <= 0) {\n       if ($65) {\n        HEAP16[$pnt2$367 >> 1] = $63;\n        $165 = $64 * 7 | 0;\n        $167 = $labelInfo + 1310736 + ($165 + -7 << 2) | 0;\n        HEAP32[$167 >> 2] = (HEAP32[$167 >> 2] | 0) + 1;\n        $171 = $labelInfo + 1310736 + ($165 + -6 << 2) | 0;\n        HEAP32[$171 >> 2] = (HEAP32[$171 >> 2] | 0) + $i$264;\n        $175 = $labelInfo + 1310736 + ($165 + -5 << 2) | 0;\n        HEAP32[$175 >> 2] = (HEAP32[$175 >> 2] | 0) + $j$075;\n        $179 = $labelInfo + 1310736 + ($165 + -3 << 2) | 0;\n        if ((HEAP32[$179 >> 2] | 0) < ($i$264 | 0)) HEAP32[$179 >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($165 + -1 << 2) >> 2] = $j$075;\n        $wk_max$2 = $wk_max$159;\n        break;\n       }\n       $185 = HEAP16[$pnt2$367 + -2 >> 1] | 0;\n       if ($185 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$367 >> 1] = $185;\n        $188 = ($185 << 16 >> 16) * 7 | 0;\n        $190 = $labelInfo + 1310736 + ($188 + -7 << 2) | 0;\n        HEAP32[$190 >> 2] = (HEAP32[$190 >> 2] | 0) + 1;\n        $194 = $labelInfo + 1310736 + ($188 + -6 << 2) | 0;\n        HEAP32[$194 >> 2] = (HEAP32[$194 >> 2] | 0) + $i$264;\n        $198 = $labelInfo + 1310736 + ($188 + -5 << 2) | 0;\n        HEAP32[$198 >> 2] = (HEAP32[$198 >> 2] | 0) + $j$075;\n        $202 = $labelInfo + 1310736 + ($188 + -3 << 2) | 0;\n        if ((HEAP32[$202 >> 2] | 0) >= ($i$264 | 0)) {\n         $wk_max$2 = $wk_max$159;\n         break;\n        }\n        HEAP32[$202 >> 2] = $i$264;\n        $wk_max$2 = $wk_max$159;\n        break;\n       } else {\n        $205 = $wk_max$159 + 1 | 0;\n        if (($wk_max$159 | 0) > 32767) break L13;\n        HEAP16[$pnt2$367 >> 1] = $205;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $205 << 16 >> 16;\n        $210 = $wk_max$159 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($210 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($210 + 1 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($210 + 2 << 2) >> 2] = $j$075;\n        HEAP32[$labelInfo + 1310736 + ($210 + 3 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($210 + 4 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($210 + 5 << 2) >> 2] = $j$075;\n        HEAP32[$labelInfo + 1310736 + ($210 + 6 << 2) >> 2] = $j$075;\n        $wk_max$2 = $205;\n        break;\n       }\n      }\n      if ($65) {\n       $68 = HEAP32[$labelInfo + 1179664 + ($60 + -1 << 2) >> 2] | 0;\n       $71 = HEAP32[$labelInfo + 1179664 + ($64 + -1 << 2) >> 2] | 0;\n       if (($68 | 0) > ($71 | 0)) {\n        HEAP16[$pnt2$367 >> 1] = $71;\n        if (($wk_max$159 | 0) > 0) {\n         $k$055 = 0;\n         $wk$056 = $17;\n         while (1) {\n          if ((HEAP32[$wk$056 >> 2] | 0) == ($68 | 0)) HEAP32[$wk$056 >> 2] = $71;\n          $k$055 = $k$055 + 1 | 0;\n          if (($k$055 | 0) >= ($wk_max$159 | 0)) {\n           $88 = $71;\n           break;\n          } else $wk$056 = $wk$056 + 4 | 0;\n         }\n        } else $88 = $71;\n       } else {\n        HEAP16[$pnt2$367 >> 1] = $68;\n        if (($68 | 0) < ($71 | 0) & ($wk_max$159 | 0) > 0) {\n         $k$152 = 0;\n         $wk$153 = $17;\n         while (1) {\n          if ((HEAP32[$wk$153 >> 2] | 0) == ($71 | 0)) HEAP32[$wk$153 >> 2] = $68;\n          $k$152 = $k$152 + 1 | 0;\n          if (($k$152 | 0) >= ($wk_max$159 | 0)) {\n           $88 = $68;\n           break;\n          } else $wk$153 = $wk$153 + 4 | 0;\n         }\n        } else $88 = $68;\n       }\n       $90 = ($88 << 16 >> 16) * 7 | 0;\n       $92 = $labelInfo + 1310736 + ($90 + -7 << 2) | 0;\n       HEAP32[$92 >> 2] = (HEAP32[$92 >> 2] | 0) + 1;\n       $96 = $labelInfo + 1310736 + ($90 + -6 << 2) | 0;\n       HEAP32[$96 >> 2] = (HEAP32[$96 >> 2] | 0) + $i$264;\n       $100 = $labelInfo + 1310736 + ($90 + -5 << 2) | 0;\n       HEAP32[$100 >> 2] = (HEAP32[$100 >> 2] | 0) + $j$075;\n       HEAP32[$labelInfo + 1310736 + ($90 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $106 = HEAP16[$pnt2$367 + -2 >> 1] | 0;\n      if ($106 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$367 >> 1] = $59;\n       $146 = $60 * 7 | 0;\n       $148 = $labelInfo + 1310736 + ($146 + -7 << 2) | 0;\n       HEAP32[$148 >> 2] = (HEAP32[$148 >> 2] | 0) + 1;\n       $152 = $labelInfo + 1310736 + ($146 + -6 << 2) | 0;\n       HEAP32[$152 >> 2] = (HEAP32[$152 >> 2] | 0) + $i$264;\n       $156 = $labelInfo + 1310736 + ($146 + -5 << 2) | 0;\n       HEAP32[$156 >> 2] = (HEAP32[$156 >> 2] | 0) + $j$075;\n       $160 = $labelInfo + 1310736 + ($146 + -4 << 2) | 0;\n       if ((HEAP32[$160 >> 2] | 0) > ($i$264 | 0)) HEAP32[$160 >> 2] = $i$264;\n       HEAP32[$labelInfo + 1310736 + ($146 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $111 = HEAP32[$labelInfo + 1179664 + ($60 + -1 << 2) >> 2] | 0;\n      $114 = HEAP32[$labelInfo + 1179664 + (($106 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($111 | 0) > ($114 | 0)) {\n       HEAP16[$pnt2$367 >> 1] = $114;\n       if (($wk_max$159 | 0) > 0) {\n        $k$248 = 0;\n        $wk$249 = $17;\n        while (1) {\n         if ((HEAP32[$wk$249 >> 2] | 0) == ($111 | 0)) HEAP32[$wk$249 >> 2] = $114;\n         $k$248 = $k$248 + 1 | 0;\n         if (($k$248 | 0) >= ($wk_max$159 | 0)) {\n          $131 = $114;\n          break;\n         } else $wk$249 = $wk$249 + 4 | 0;\n        }\n       } else $131 = $114;\n      } else {\n       HEAP16[$pnt2$367 >> 1] = $111;\n       if (($111 | 0) < ($114 | 0) & ($wk_max$159 | 0) > 0) {\n        $k$345 = 0;\n        $wk$346 = $17;\n        while (1) {\n         if ((HEAP32[$wk$346 >> 2] | 0) == ($114 | 0)) HEAP32[$wk$346 >> 2] = $111;\n         $k$345 = $k$345 + 1 | 0;\n         if (($k$345 | 0) >= ($wk_max$159 | 0)) {\n          $131 = $111;\n          break;\n         } else $wk$346 = $wk$346 + 4 | 0;\n        }\n       } else $131 = $111;\n      }\n      $133 = ($131 << 16 >> 16) * 7 | 0;\n      $135 = $labelInfo + 1310736 + ($133 + -7 << 2) | 0;\n      HEAP32[$135 >> 2] = (HEAP32[$135 >> 2] | 0) + 1;\n      $139 = $labelInfo + 1310736 + ($133 + -6 << 2) | 0;\n      HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + $i$264;\n      $143 = $labelInfo + 1310736 + ($133 + -5 << 2) | 0;\n      HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $j$075;\n      $wk_max$2 = $wk_max$159;\n     } while (0);\n     $i$264 = $i$264 + 1 | 0;\n     $225 = $pnt$168 + 4 | 0;\n     $226 = $pnt2$367 + 2 | 0;\n     $227 = $dpnt$166 + 1 | 0;\n     if (($i$264 | 0) >= ($10 | 0)) {\n      $dpnt$1$lcssa = $227;\n      $pnt$1$lcssa = $225;\n      $pnt2$3$lcssa = $226;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $dpnt$166 = $227;\n      $pnt$168 = $225;\n      $pnt2$367 = $226;\n      $wk_max$159 = $wk_max$2;\n     }\n    }\n   } else {\n    $dpnt$1$lcssa = $dpnt$077;\n    $pnt$1$lcssa = $pnt$079;\n    $pnt2$3$lcssa = $pnt2$278;\n    $wk_max$1$lcssa = $wk_max$074;\n   }\n   $j$075 = $j$075 + 1 | 0;\n   if (($j$075 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $dpnt$077 = $dpnt$1$lcssa + 2 | 0;\n    $pnt$079 = $pnt$1$lcssa + 8 | 0;\n    $pnt2$278 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$074 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $234 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$341 = 1;\n   $j$142 = 1;\n   $wk$443 = $17;\n   while (1) {\n    $236 = HEAP32[$wk$443 >> 2] | 0;\n    if (($236 | 0) == ($i$341 | 0)) {\n     $242 = $j$142;\n     $j$2 = $j$142 + 1 | 0;\n    } else {\n     $242 = HEAP32[$labelInfo + 1179664 + ($236 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$142;\n    }\n    HEAP32[$wk$443 >> 2] = $242;\n    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$341 = $i$341 + 1 | 0;\n     $j$142 = $j$2;\n     $wk$443 = $wk$443 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $246 = $labelInfo + 8 | 0;\n  $247 = $j$1$lcssa + -1 | 0;\n  HEAP32[$246 >> 2] = $247;\n  if (!$247) $$0 = 0; else {\n   _memset($234 | 0, 0, $247 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $247 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$439 = 0;\n    do {\n     $254 = $i$439 << 2;\n     HEAP32[$labelInfo + 131084 + ($254 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($254 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($254 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($254 | 3) << 2) >> 2] = 0;\n     $i$439 = $i$439 + 1 | 0;\n    } while (($i$439 | 0) < (HEAP32[$246 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$537 = 0;\n    do {\n     $268 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;\n     $269 = $i$537 * 7 | 0;\n     $272 = $labelInfo + 12 + ($268 << 2) | 0;\n     HEAP32[$272 >> 2] = (HEAP32[$272 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($269 << 2) >> 2] | 0);\n     $279 = $268 << 1;\n     $280 = $labelInfo + 655376 + ($279 << 3) | 0;\n     HEAPF64[$280 >> 3] = +HEAPF64[$280 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($269 + 1 << 2) >> 2] | 0);\n     $288 = $labelInfo + 655376 + (($279 | 1) << 3) | 0;\n     HEAPF64[$288 >> 3] = +HEAPF64[$288 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($269 + 2 << 2) >> 2] | 0);\n     $291 = $268 << 2;\n     $292 = $labelInfo + 131084 + ($291 << 2) | 0;\n     $296 = HEAP32[$labelInfo + 1310736 + ($269 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$292 >> 2] | 0) > ($296 | 0)) HEAP32[$292 >> 2] = $296;\n     $299 = $labelInfo + 131084 + (($291 | 1) << 2) | 0;\n     $303 = HEAP32[$labelInfo + 1310736 + ($269 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$299 >> 2] | 0) < ($303 | 0)) HEAP32[$299 >> 2] = $303;\n     $306 = $labelInfo + 131084 + (($291 | 2) << 2) | 0;\n     $310 = HEAP32[$labelInfo + 1310736 + ($269 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$306 >> 2] | 0) > ($310 | 0)) HEAP32[$306 >> 2] = $310;\n     $313 = $labelInfo + 131084 + (($291 | 3) << 2) | 0;\n     $317 = HEAP32[$labelInfo + 1310736 + ($269 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$313 >> 2] | 0) < ($317 | 0)) HEAP32[$313 >> 2] = $317;\n     $i$537 = $i$537 + 1 | 0;\n    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$246 >> 2] | 0) > 0) {\n    $i$636 = 0;\n    do {\n     $321 = $labelInfo + 12 + ($i$636 << 2) | 0;\n     $324 = $i$636 << 1;\n     $325 = $labelInfo + 655376 + ($324 << 3) | 0;\n     HEAPF64[$325 >> 3] = +HEAPF64[$325 >> 3] / +(HEAP32[$321 >> 2] | 0);\n     $331 = $labelInfo + 655376 + (($324 | 1) << 3) | 0;\n     HEAPF64[$331 >> 3] = +HEAPF64[$331 >> 3] / +(HEAP32[$321 >> 2] | 0);\n     $i$636 = $i$636 + 1 | 0;\n    } while (($i$636 | 0) < (HEAP32[$246 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubEWICY($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $102 = 0, $107 = 0, $11 = 0, $110 = 0, $127 = 0, $129 = 0, $131 = 0, $135 = 0, $139 = 0, $142 = 0, $144 = 0, $148 = 0, $152 = 0, $156 = 0, $161 = 0, $163 = 0, $167 = 0, $171 = 0, $175 = 0, $18 = 0, $181 = 0, $184 = 0, $186 = 0, $19 = 0, $190 = 0, $194 = 0, $198 = 0, $2 = 0, $201 = 0, $206 = 0, $21 = 0, $221 = 0, $222 = 0, $223 = 0, $230 = 0, $232 = 0, $238 = 0, $242 = 0, $243 = 0, $250 = 0, $264 = 0, $265 = 0, $268 = 0, $275 = 0, $276 = 0, $284 = 0, $287 = 0, $288 = 0, $292 = 0, $295 = 0, $299 = 0, $3 = 0, $30 = 0, $302 = 0, $306 = 0, $309 = 0, $313 = 0, $317 = 0, $320 = 0, $321 = 0, $327 = 0, $36 = 0, $39 = 0, $41 = 0, $45 = 0, $49 = 0, $55 = 0, $56 = 0, $59 = 0, $60 = 0, $61 = 0, $64 = 0, $67 = 0, $84 = 0, $86 = 0, $88 = 0, $92 = 0, $96 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = ($xsize | 0) / 2 | 0;\n $1 = ($ysize | 0) / 2 | 0;\n $2 = HEAP32[$labelInfo >> 2] | 0;\n $3 = $1 + -1 | 0;\n if (($xsize | 0) > 1) {\n  $i$089 = 0;\n  $pnt1$091 = $2;\n  $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$090 >> 1] = 0;\n   HEAP16[$pnt1$091 >> 1] = 0;\n   $i$089 = $i$089 + 1 | 0;\n   if (($i$089 | 0) >= ($0 | 0)) break; else {\n    $pnt1$091 = $pnt1$091 + 2 | 0;\n    $pnt2$090 = $pnt2$090 + 2 | 0;\n   }\n  }\n }\n $11 = $0 + -1 | 0;\n if (($ysize | 0) > 1) {\n  $i$183 = 0;\n  $pnt1$185 = $2;\n  $pnt2$184 = $2 + ($11 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$184 >> 1] = 0;\n   HEAP16[$pnt1$185 >> 1] = 0;\n   $i$183 = $i$183 + 1 | 0;\n   if (($i$183 | 0) >= ($1 | 0)) break; else {\n    $pnt1$185 = $pnt1$185 + ($0 << 1) | 0;\n    $pnt2$184 = $pnt2$184 + ($0 << 1) | 0;\n   }\n  }\n }\n $18 = $labelInfo + 1179664 | 0;\n $19 = $0 + 1 | 0;\n $21 = 0 - $0 | 0;\n $$sum1 = 1 - $0 | 0;\n $$sum2 = ~$0;\n $$sum = ($xsize << 1) + 8 | 0;\n L11 : do if (($3 | 0) > 1) {\n  $30 = ($11 | 0) > 1;\n  $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $19 | 0;\n  $j$076 = 1;\n  $pnt$080 = $image + (($xsize << 2) + 4) | 0;\n  $pnt2$279 = $2 + ($19 << 1) | 0;\n  $wk_max$075 = 0;\n  L13 : while (1) {\n   if ($30) {\n    $dpnt$167 = $dpnt$078;\n    $i$265 = 1;\n    $pnt$169 = $pnt$080;\n    $pnt2$368 = $pnt2$279;\n    $wk_max$160 = $wk_max$075;\n    while (1) {\n     do if ((HEAPU8[$pnt$169 + 1 >> 0] | 0 | 0) > ($labelingThresh | 0)) {\n      HEAP8[$dpnt$167 >> 0] = -1;\n      $36 = HEAP16[$pnt2$368 + ($21 << 1) >> 1] | 0;\n      if ($36 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$368 >> 1] = $36;\n       $39 = ($36 << 16 >> 16) * 7 | 0;\n       $41 = $labelInfo + 1310736 + ($39 + -7 << 2) | 0;\n       HEAP32[$41 >> 2] = (HEAP32[$41 >> 2] | 0) + 1;\n       $45 = $labelInfo + 1310736 + ($39 + -6 << 2) | 0;\n       HEAP32[$45 >> 2] = (HEAP32[$45 >> 2] | 0) + $i$265;\n       $49 = $labelInfo + 1310736 + ($39 + -5 << 2) | 0;\n       HEAP32[$49 >> 2] = (HEAP32[$49 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($39 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $55 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0;\n      $56 = $55 << 16 >> 16;\n      $59 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0;\n      $60 = $59 << 16 >> 16;\n      $61 = $59 << 16 >> 16 > 0;\n      if ($55 << 16 >> 16 <= 0) {\n       if ($61) {\n        HEAP16[$pnt2$368 >> 1] = $59;\n        $161 = $60 * 7 | 0;\n        $163 = $labelInfo + 1310736 + ($161 + -7 << 2) | 0;\n        HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + 1;\n        $167 = $labelInfo + 1310736 + ($161 + -6 << 2) | 0;\n        HEAP32[$167 >> 2] = (HEAP32[$167 >> 2] | 0) + $i$265;\n        $171 = $labelInfo + 1310736 + ($161 + -5 << 2) | 0;\n        HEAP32[$171 >> 2] = (HEAP32[$171 >> 2] | 0) + $j$076;\n        $175 = $labelInfo + 1310736 + ($161 + -3 << 2) | 0;\n        if ((HEAP32[$175 >> 2] | 0) < ($i$265 | 0)) HEAP32[$175 >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($161 + -1 << 2) >> 2] = $j$076;\n        $wk_max$2 = $wk_max$160;\n        break;\n       }\n       $181 = HEAP16[$pnt2$368 + -2 >> 1] | 0;\n       if ($181 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$368 >> 1] = $181;\n        $184 = ($181 << 16 >> 16) * 7 | 0;\n        $186 = $labelInfo + 1310736 + ($184 + -7 << 2) | 0;\n        HEAP32[$186 >> 2] = (HEAP32[$186 >> 2] | 0) + 1;\n        $190 = $labelInfo + 1310736 + ($184 + -6 << 2) | 0;\n        HEAP32[$190 >> 2] = (HEAP32[$190 >> 2] | 0) + $i$265;\n        $194 = $labelInfo + 1310736 + ($184 + -5 << 2) | 0;\n        HEAP32[$194 >> 2] = (HEAP32[$194 >> 2] | 0) + $j$076;\n        $198 = $labelInfo + 1310736 + ($184 + -3 << 2) | 0;\n        if ((HEAP32[$198 >> 2] | 0) >= ($i$265 | 0)) {\n         $wk_max$2 = $wk_max$160;\n         break;\n        }\n        HEAP32[$198 >> 2] = $i$265;\n        $wk_max$2 = $wk_max$160;\n        break;\n       } else {\n        $201 = $wk_max$160 + 1 | 0;\n        if (($wk_max$160 | 0) > 32767) break L13;\n        HEAP16[$pnt2$368 >> 1] = $201;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $201 << 16 >> 16;\n        $206 = $wk_max$160 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($206 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($206 + 1 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($206 + 2 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($206 + 3 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($206 + 4 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($206 + 5 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($206 + 6 << 2) >> 2] = $j$076;\n        $wk_max$2 = $201;\n        break;\n       }\n      }\n      if ($61) {\n       $64 = HEAP32[$labelInfo + 1179664 + ($56 + -1 << 2) >> 2] | 0;\n       $67 = HEAP32[$labelInfo + 1179664 + ($60 + -1 << 2) >> 2] | 0;\n       if (($64 | 0) > ($67 | 0)) {\n        HEAP16[$pnt2$368 >> 1] = $67;\n        if (($wk_max$160 | 0) > 0) {\n         $k$056 = 0;\n         $wk$057 = $18;\n         while (1) {\n          if ((HEAP32[$wk$057 >> 2] | 0) == ($64 | 0)) HEAP32[$wk$057 >> 2] = $67;\n          $k$056 = $k$056 + 1 | 0;\n          if (($k$056 | 0) >= ($wk_max$160 | 0)) {\n           $84 = $67;\n           break;\n          } else $wk$057 = $wk$057 + 4 | 0;\n         }\n        } else $84 = $67;\n       } else {\n        HEAP16[$pnt2$368 >> 1] = $64;\n        if (($64 | 0) < ($67 | 0) & ($wk_max$160 | 0) > 0) {\n         $k$153 = 0;\n         $wk$154 = $18;\n         while (1) {\n          if ((HEAP32[$wk$154 >> 2] | 0) == ($67 | 0)) HEAP32[$wk$154 >> 2] = $64;\n          $k$153 = $k$153 + 1 | 0;\n          if (($k$153 | 0) >= ($wk_max$160 | 0)) {\n           $84 = $64;\n           break;\n          } else $wk$154 = $wk$154 + 4 | 0;\n         }\n        } else $84 = $64;\n       }\n       $86 = ($84 << 16 >> 16) * 7 | 0;\n       $88 = $labelInfo + 1310736 + ($86 + -7 << 2) | 0;\n       HEAP32[$88 >> 2] = (HEAP32[$88 >> 2] | 0) + 1;\n       $92 = $labelInfo + 1310736 + ($86 + -6 << 2) | 0;\n       HEAP32[$92 >> 2] = (HEAP32[$92 >> 2] | 0) + $i$265;\n       $96 = $labelInfo + 1310736 + ($86 + -5 << 2) | 0;\n       HEAP32[$96 >> 2] = (HEAP32[$96 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($86 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $102 = HEAP16[$pnt2$368 + -2 >> 1] | 0;\n      if ($102 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$368 >> 1] = $55;\n       $142 = $56 * 7 | 0;\n       $144 = $labelInfo + 1310736 + ($142 + -7 << 2) | 0;\n       HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + 1;\n       $148 = $labelInfo + 1310736 + ($142 + -6 << 2) | 0;\n       HEAP32[$148 >> 2] = (HEAP32[$148 >> 2] | 0) + $i$265;\n       $152 = $labelInfo + 1310736 + ($142 + -5 << 2) | 0;\n       HEAP32[$152 >> 2] = (HEAP32[$152 >> 2] | 0) + $j$076;\n       $156 = $labelInfo + 1310736 + ($142 + -4 << 2) | 0;\n       if ((HEAP32[$156 >> 2] | 0) > ($i$265 | 0)) HEAP32[$156 >> 2] = $i$265;\n       HEAP32[$labelInfo + 1310736 + ($142 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $107 = HEAP32[$labelInfo + 1179664 + ($56 + -1 << 2) >> 2] | 0;\n      $110 = HEAP32[$labelInfo + 1179664 + (($102 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($107 | 0) > ($110 | 0)) {\n       HEAP16[$pnt2$368 >> 1] = $110;\n       if (($wk_max$160 | 0) > 0) {\n        $k$249 = 0;\n        $wk$250 = $18;\n        while (1) {\n         if ((HEAP32[$wk$250 >> 2] | 0) == ($107 | 0)) HEAP32[$wk$250 >> 2] = $110;\n         $k$249 = $k$249 + 1 | 0;\n         if (($k$249 | 0) >= ($wk_max$160 | 0)) {\n          $127 = $110;\n          break;\n         } else $wk$250 = $wk$250 + 4 | 0;\n        }\n       } else $127 = $110;\n      } else {\n       HEAP16[$pnt2$368 >> 1] = $107;\n       if (($107 | 0) < ($110 | 0) & ($wk_max$160 | 0) > 0) {\n        $k$346 = 0;\n        $wk$347 = $18;\n        while (1) {\n         if ((HEAP32[$wk$347 >> 2] | 0) == ($110 | 0)) HEAP32[$wk$347 >> 2] = $107;\n         $k$346 = $k$346 + 1 | 0;\n         if (($k$346 | 0) >= ($wk_max$160 | 0)) {\n          $127 = $107;\n          break;\n         } else $wk$347 = $wk$347 + 4 | 0;\n        }\n       } else $127 = $107;\n      }\n      $129 = ($127 << 16 >> 16) * 7 | 0;\n      $131 = $labelInfo + 1310736 + ($129 + -7 << 2) | 0;\n      HEAP32[$131 >> 2] = (HEAP32[$131 >> 2] | 0) + 1;\n      $135 = $labelInfo + 1310736 + ($129 + -6 << 2) | 0;\n      HEAP32[$135 >> 2] = (HEAP32[$135 >> 2] | 0) + $i$265;\n      $139 = $labelInfo + 1310736 + ($129 + -5 << 2) | 0;\n      HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + $j$076;\n      $wk_max$2 = $wk_max$160;\n     } else {\n      HEAP16[$pnt2$368 >> 1] = 0;\n      HEAP8[$dpnt$167 >> 0] = 0;\n      $wk_max$2 = $wk_max$160;\n     } while (0);\n     $i$265 = $i$265 + 1 | 0;\n     $221 = $pnt$169 + 4 | 0;\n     $222 = $pnt2$368 + 2 | 0;\n     $223 = $dpnt$167 + 1 | 0;\n     if (($i$265 | 0) >= ($11 | 0)) {\n      $dpnt$1$lcssa = $223;\n      $pnt$1$lcssa = $221;\n      $pnt2$3$lcssa = $222;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $dpnt$167 = $223;\n      $pnt$169 = $221;\n      $pnt2$368 = $222;\n      $wk_max$160 = $wk_max$2;\n     }\n    }\n   } else {\n    $dpnt$1$lcssa = $dpnt$078;\n    $pnt$1$lcssa = $pnt$080;\n    $pnt2$3$lcssa = $pnt2$279;\n    $wk_max$1$lcssa = $wk_max$075;\n   }\n   $j$076 = $j$076 + 1 | 0;\n   if (($j$076 | 0) >= ($3 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $dpnt$078 = $dpnt$1$lcssa + 2 | 0;\n    $pnt$080 = $pnt$1$lcssa + $$sum | 0;\n    $pnt2$279 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$075 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $230 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$342 = 1;\n   $j$143 = 1;\n   $wk$444 = $18;\n   while (1) {\n    $232 = HEAP32[$wk$444 >> 2] | 0;\n    if (($232 | 0) == ($i$342 | 0)) {\n     $238 = $j$143;\n     $j$2 = $j$143 + 1 | 0;\n    } else {\n     $238 = HEAP32[$labelInfo + 1179664 + ($232 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$143;\n    }\n    HEAP32[$wk$444 >> 2] = $238;\n    if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$342 = $i$342 + 1 | 0;\n     $j$143 = $j$2;\n     $wk$444 = $wk$444 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $242 = $labelInfo + 8 | 0;\n  $243 = $j$1$lcssa + -1 | 0;\n  HEAP32[$242 >> 2] = $243;\n  if (!$243) $$0 = 0; else {\n   _memset($230 | 0, 0, $243 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $243 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$440 = 0;\n    do {\n     $250 = $i$440 << 2;\n     HEAP32[$labelInfo + 131084 + ($250 << 2) >> 2] = $0;\n     HEAP32[$labelInfo + 131084 + (($250 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($250 | 2) << 2) >> 2] = $1;\n     HEAP32[$labelInfo + 131084 + (($250 | 3) << 2) >> 2] = 0;\n     $i$440 = $i$440 + 1 | 0;\n    } while (($i$440 | 0) < (HEAP32[$242 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$538 = 0;\n    do {\n     $264 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0;\n     $265 = $i$538 * 7 | 0;\n     $268 = $labelInfo + 12 + ($264 << 2) | 0;\n     HEAP32[$268 >> 2] = (HEAP32[$268 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($265 << 2) >> 2] | 0);\n     $275 = $264 << 1;\n     $276 = $labelInfo + 655376 + ($275 << 3) | 0;\n     HEAPF64[$276 >> 3] = +HEAPF64[$276 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($265 + 1 << 2) >> 2] | 0);\n     $284 = $labelInfo + 655376 + (($275 | 1) << 3) | 0;\n     HEAPF64[$284 >> 3] = +HEAPF64[$284 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($265 + 2 << 2) >> 2] | 0);\n     $287 = $264 << 2;\n     $288 = $labelInfo + 131084 + ($287 << 2) | 0;\n     $292 = HEAP32[$labelInfo + 1310736 + ($265 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$288 >> 2] | 0) > ($292 | 0)) HEAP32[$288 >> 2] = $292;\n     $295 = $labelInfo + 131084 + (($287 | 1) << 2) | 0;\n     $299 = HEAP32[$labelInfo + 1310736 + ($265 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$295 >> 2] | 0) < ($299 | 0)) HEAP32[$295 >> 2] = $299;\n     $302 = $labelInfo + 131084 + (($287 | 2) << 2) | 0;\n     $306 = HEAP32[$labelInfo + 1310736 + ($265 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$302 >> 2] | 0) > ($306 | 0)) HEAP32[$302 >> 2] = $306;\n     $309 = $labelInfo + 131084 + (($287 | 3) << 2) | 0;\n     $313 = HEAP32[$labelInfo + 1310736 + ($265 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$309 >> 2] | 0) < ($313 | 0)) HEAP32[$309 >> 2] = $313;\n     $i$538 = $i$538 + 1 | 0;\n    } while (($i$538 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$242 >> 2] | 0) > 0) {\n    $i$637 = 0;\n    do {\n     $317 = $labelInfo + 12 + ($i$637 << 2) | 0;\n     $320 = $i$637 << 1;\n     $321 = $labelInfo + 655376 + ($320 << 3) | 0;\n     HEAPF64[$321 >> 3] = +HEAPF64[$321 >> 3] / +(HEAP32[$317 >> 2] | 0);\n     $327 = $labelInfo + 655376 + (($320 | 1) << 3) | 0;\n     HEAPF64[$327 >> 3] = +HEAPF64[$327 >> 3] / +(HEAP32[$317 >> 2] | 0);\n     $i$637 = $i$637 + 1 | 0;\n    } while (($i$637 | 0) < (HEAP32[$242 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubEBICY($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $102 = 0, $107 = 0, $11 = 0, $110 = 0, $127 = 0, $129 = 0, $131 = 0, $135 = 0, $139 = 0, $142 = 0, $144 = 0, $148 = 0, $152 = 0, $156 = 0, $161 = 0, $163 = 0, $167 = 0, $171 = 0, $175 = 0, $18 = 0, $181 = 0, $184 = 0, $186 = 0, $19 = 0, $190 = 0, $194 = 0, $198 = 0, $2 = 0, $201 = 0, $206 = 0, $21 = 0, $221 = 0, $222 = 0, $223 = 0, $230 = 0, $232 = 0, $238 = 0, $242 = 0, $243 = 0, $250 = 0, $264 = 0, $265 = 0, $268 = 0, $275 = 0, $276 = 0, $284 = 0, $287 = 0, $288 = 0, $292 = 0, $295 = 0, $299 = 0, $3 = 0, $30 = 0, $302 = 0, $306 = 0, $309 = 0, $313 = 0, $317 = 0, $320 = 0, $321 = 0, $327 = 0, $36 = 0, $39 = 0, $41 = 0, $45 = 0, $49 = 0, $55 = 0, $56 = 0, $59 = 0, $60 = 0, $61 = 0, $64 = 0, $67 = 0, $84 = 0, $86 = 0, $88 = 0, $92 = 0, $96 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = ($xsize | 0) / 2 | 0;\n $1 = ($ysize | 0) / 2 | 0;\n $2 = HEAP32[$labelInfo >> 2] | 0;\n $3 = $1 + -1 | 0;\n if (($xsize | 0) > 1) {\n  $i$089 = 0;\n  $pnt1$091 = $2;\n  $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$090 >> 1] = 0;\n   HEAP16[$pnt1$091 >> 1] = 0;\n   $i$089 = $i$089 + 1 | 0;\n   if (($i$089 | 0) >= ($0 | 0)) break; else {\n    $pnt1$091 = $pnt1$091 + 2 | 0;\n    $pnt2$090 = $pnt2$090 + 2 | 0;\n   }\n  }\n }\n $11 = $0 + -1 | 0;\n if (($ysize | 0) > 1) {\n  $i$183 = 0;\n  $pnt1$185 = $2;\n  $pnt2$184 = $2 + ($11 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$184 >> 1] = 0;\n   HEAP16[$pnt1$185 >> 1] = 0;\n   $i$183 = $i$183 + 1 | 0;\n   if (($i$183 | 0) >= ($1 | 0)) break; else {\n    $pnt1$185 = $pnt1$185 + ($0 << 1) | 0;\n    $pnt2$184 = $pnt2$184 + ($0 << 1) | 0;\n   }\n  }\n }\n $18 = $labelInfo + 1179664 | 0;\n $19 = $0 + 1 | 0;\n $21 = 0 - $0 | 0;\n $$sum1 = 1 - $0 | 0;\n $$sum2 = ~$0;\n $$sum = ($xsize << 1) + 8 | 0;\n L11 : do if (($3 | 0) > 1) {\n  $30 = ($11 | 0) > 1;\n  $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $19 | 0;\n  $j$076 = 1;\n  $pnt$080 = $image + (($xsize << 2) + 4) | 0;\n  $pnt2$279 = $2 + ($19 << 1) | 0;\n  $wk_max$075 = 0;\n  L13 : while (1) {\n   if ($30) {\n    $dpnt$167 = $dpnt$078;\n    $i$265 = 1;\n    $pnt$169 = $pnt$080;\n    $pnt2$368 = $pnt2$279;\n    $wk_max$160 = $wk_max$075;\n    while (1) {\n     do if ((HEAPU8[$pnt$169 + 1 >> 0] | 0 | 0) > ($labelingThresh | 0)) {\n      HEAP16[$pnt2$368 >> 1] = 0;\n      HEAP8[$dpnt$167 >> 0] = 0;\n      $wk_max$2 = $wk_max$160;\n     } else {\n      HEAP8[$dpnt$167 >> 0] = -1;\n      $36 = HEAP16[$pnt2$368 + ($21 << 1) >> 1] | 0;\n      if ($36 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$368 >> 1] = $36;\n       $39 = ($36 << 16 >> 16) * 7 | 0;\n       $41 = $labelInfo + 1310736 + ($39 + -7 << 2) | 0;\n       HEAP32[$41 >> 2] = (HEAP32[$41 >> 2] | 0) + 1;\n       $45 = $labelInfo + 1310736 + ($39 + -6 << 2) | 0;\n       HEAP32[$45 >> 2] = (HEAP32[$45 >> 2] | 0) + $i$265;\n       $49 = $labelInfo + 1310736 + ($39 + -5 << 2) | 0;\n       HEAP32[$49 >> 2] = (HEAP32[$49 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($39 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $55 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0;\n      $56 = $55 << 16 >> 16;\n      $59 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0;\n      $60 = $59 << 16 >> 16;\n      $61 = $59 << 16 >> 16 > 0;\n      if ($55 << 16 >> 16 <= 0) {\n       if ($61) {\n        HEAP16[$pnt2$368 >> 1] = $59;\n        $161 = $60 * 7 | 0;\n        $163 = $labelInfo + 1310736 + ($161 + -7 << 2) | 0;\n        HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + 1;\n        $167 = $labelInfo + 1310736 + ($161 + -6 << 2) | 0;\n        HEAP32[$167 >> 2] = (HEAP32[$167 >> 2] | 0) + $i$265;\n        $171 = $labelInfo + 1310736 + ($161 + -5 << 2) | 0;\n        HEAP32[$171 >> 2] = (HEAP32[$171 >> 2] | 0) + $j$076;\n        $175 = $labelInfo + 1310736 + ($161 + -3 << 2) | 0;\n        if ((HEAP32[$175 >> 2] | 0) < ($i$265 | 0)) HEAP32[$175 >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($161 + -1 << 2) >> 2] = $j$076;\n        $wk_max$2 = $wk_max$160;\n        break;\n       }\n       $181 = HEAP16[$pnt2$368 + -2 >> 1] | 0;\n       if ($181 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$368 >> 1] = $181;\n        $184 = ($181 << 16 >> 16) * 7 | 0;\n        $186 = $labelInfo + 1310736 + ($184 + -7 << 2) | 0;\n        HEAP32[$186 >> 2] = (HEAP32[$186 >> 2] | 0) + 1;\n        $190 = $labelInfo + 1310736 + ($184 + -6 << 2) | 0;\n        HEAP32[$190 >> 2] = (HEAP32[$190 >> 2] | 0) + $i$265;\n        $194 = $labelInfo + 1310736 + ($184 + -5 << 2) | 0;\n        HEAP32[$194 >> 2] = (HEAP32[$194 >> 2] | 0) + $j$076;\n        $198 = $labelInfo + 1310736 + ($184 + -3 << 2) | 0;\n        if ((HEAP32[$198 >> 2] | 0) >= ($i$265 | 0)) {\n         $wk_max$2 = $wk_max$160;\n         break;\n        }\n        HEAP32[$198 >> 2] = $i$265;\n        $wk_max$2 = $wk_max$160;\n        break;\n       } else {\n        $201 = $wk_max$160 + 1 | 0;\n        if (($wk_max$160 | 0) > 32767) break L13;\n        HEAP16[$pnt2$368 >> 1] = $201;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $201 << 16 >> 16;\n        $206 = $wk_max$160 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($206 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($206 + 1 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($206 + 2 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($206 + 3 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($206 + 4 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($206 + 5 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($206 + 6 << 2) >> 2] = $j$076;\n        $wk_max$2 = $201;\n        break;\n       }\n      }\n      if ($61) {\n       $64 = HEAP32[$labelInfo + 1179664 + ($56 + -1 << 2) >> 2] | 0;\n       $67 = HEAP32[$labelInfo + 1179664 + ($60 + -1 << 2) >> 2] | 0;\n       if (($64 | 0) > ($67 | 0)) {\n        HEAP16[$pnt2$368 >> 1] = $67;\n        if (($wk_max$160 | 0) > 0) {\n         $k$056 = 0;\n         $wk$057 = $18;\n         while (1) {\n          if ((HEAP32[$wk$057 >> 2] | 0) == ($64 | 0)) HEAP32[$wk$057 >> 2] = $67;\n          $k$056 = $k$056 + 1 | 0;\n          if (($k$056 | 0) >= ($wk_max$160 | 0)) {\n           $84 = $67;\n           break;\n          } else $wk$057 = $wk$057 + 4 | 0;\n         }\n        } else $84 = $67;\n       } else {\n        HEAP16[$pnt2$368 >> 1] = $64;\n        if (($64 | 0) < ($67 | 0) & ($wk_max$160 | 0) > 0) {\n         $k$153 = 0;\n         $wk$154 = $18;\n         while (1) {\n          if ((HEAP32[$wk$154 >> 2] | 0) == ($67 | 0)) HEAP32[$wk$154 >> 2] = $64;\n          $k$153 = $k$153 + 1 | 0;\n          if (($k$153 | 0) >= ($wk_max$160 | 0)) {\n           $84 = $64;\n           break;\n          } else $wk$154 = $wk$154 + 4 | 0;\n         }\n        } else $84 = $64;\n       }\n       $86 = ($84 << 16 >> 16) * 7 | 0;\n       $88 = $labelInfo + 1310736 + ($86 + -7 << 2) | 0;\n       HEAP32[$88 >> 2] = (HEAP32[$88 >> 2] | 0) + 1;\n       $92 = $labelInfo + 1310736 + ($86 + -6 << 2) | 0;\n       HEAP32[$92 >> 2] = (HEAP32[$92 >> 2] | 0) + $i$265;\n       $96 = $labelInfo + 1310736 + ($86 + -5 << 2) | 0;\n       HEAP32[$96 >> 2] = (HEAP32[$96 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($86 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $102 = HEAP16[$pnt2$368 + -2 >> 1] | 0;\n      if ($102 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$368 >> 1] = $55;\n       $142 = $56 * 7 | 0;\n       $144 = $labelInfo + 1310736 + ($142 + -7 << 2) | 0;\n       HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + 1;\n       $148 = $labelInfo + 1310736 + ($142 + -6 << 2) | 0;\n       HEAP32[$148 >> 2] = (HEAP32[$148 >> 2] | 0) + $i$265;\n       $152 = $labelInfo + 1310736 + ($142 + -5 << 2) | 0;\n       HEAP32[$152 >> 2] = (HEAP32[$152 >> 2] | 0) + $j$076;\n       $156 = $labelInfo + 1310736 + ($142 + -4 << 2) | 0;\n       if ((HEAP32[$156 >> 2] | 0) > ($i$265 | 0)) HEAP32[$156 >> 2] = $i$265;\n       HEAP32[$labelInfo + 1310736 + ($142 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $107 = HEAP32[$labelInfo + 1179664 + ($56 + -1 << 2) >> 2] | 0;\n      $110 = HEAP32[$labelInfo + 1179664 + (($102 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($107 | 0) > ($110 | 0)) {\n       HEAP16[$pnt2$368 >> 1] = $110;\n       if (($wk_max$160 | 0) > 0) {\n        $k$249 = 0;\n        $wk$250 = $18;\n        while (1) {\n         if ((HEAP32[$wk$250 >> 2] | 0) == ($107 | 0)) HEAP32[$wk$250 >> 2] = $110;\n         $k$249 = $k$249 + 1 | 0;\n         if (($k$249 | 0) >= ($wk_max$160 | 0)) {\n          $127 = $110;\n          break;\n         } else $wk$250 = $wk$250 + 4 | 0;\n        }\n       } else $127 = $110;\n      } else {\n       HEAP16[$pnt2$368 >> 1] = $107;\n       if (($107 | 0) < ($110 | 0) & ($wk_max$160 | 0) > 0) {\n        $k$346 = 0;\n        $wk$347 = $18;\n        while (1) {\n         if ((HEAP32[$wk$347 >> 2] | 0) == ($110 | 0)) HEAP32[$wk$347 >> 2] = $107;\n         $k$346 = $k$346 + 1 | 0;\n         if (($k$346 | 0) >= ($wk_max$160 | 0)) {\n          $127 = $107;\n          break;\n         } else $wk$347 = $wk$347 + 4 | 0;\n        }\n       } else $127 = $107;\n      }\n      $129 = ($127 << 16 >> 16) * 7 | 0;\n      $131 = $labelInfo + 1310736 + ($129 + -7 << 2) | 0;\n      HEAP32[$131 >> 2] = (HEAP32[$131 >> 2] | 0) + 1;\n      $135 = $labelInfo + 1310736 + ($129 + -6 << 2) | 0;\n      HEAP32[$135 >> 2] = (HEAP32[$135 >> 2] | 0) + $i$265;\n      $139 = $labelInfo + 1310736 + ($129 + -5 << 2) | 0;\n      HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + $j$076;\n      $wk_max$2 = $wk_max$160;\n     } while (0);\n     $i$265 = $i$265 + 1 | 0;\n     $221 = $pnt$169 + 4 | 0;\n     $222 = $pnt2$368 + 2 | 0;\n     $223 = $dpnt$167 + 1 | 0;\n     if (($i$265 | 0) >= ($11 | 0)) {\n      $dpnt$1$lcssa = $223;\n      $pnt$1$lcssa = $221;\n      $pnt2$3$lcssa = $222;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $dpnt$167 = $223;\n      $pnt$169 = $221;\n      $pnt2$368 = $222;\n      $wk_max$160 = $wk_max$2;\n     }\n    }\n   } else {\n    $dpnt$1$lcssa = $dpnt$078;\n    $pnt$1$lcssa = $pnt$080;\n    $pnt2$3$lcssa = $pnt2$279;\n    $wk_max$1$lcssa = $wk_max$075;\n   }\n   $j$076 = $j$076 + 1 | 0;\n   if (($j$076 | 0) >= ($3 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $dpnt$078 = $dpnt$1$lcssa + 2 | 0;\n    $pnt$080 = $pnt$1$lcssa + $$sum | 0;\n    $pnt2$279 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$075 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $230 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$342 = 1;\n   $j$143 = 1;\n   $wk$444 = $18;\n   while (1) {\n    $232 = HEAP32[$wk$444 >> 2] | 0;\n    if (($232 | 0) == ($i$342 | 0)) {\n     $238 = $j$143;\n     $j$2 = $j$143 + 1 | 0;\n    } else {\n     $238 = HEAP32[$labelInfo + 1179664 + ($232 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$143;\n    }\n    HEAP32[$wk$444 >> 2] = $238;\n    if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$342 = $i$342 + 1 | 0;\n     $j$143 = $j$2;\n     $wk$444 = $wk$444 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $242 = $labelInfo + 8 | 0;\n  $243 = $j$1$lcssa + -1 | 0;\n  HEAP32[$242 >> 2] = $243;\n  if (!$243) $$0 = 0; else {\n   _memset($230 | 0, 0, $243 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $243 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$440 = 0;\n    do {\n     $250 = $i$440 << 2;\n     HEAP32[$labelInfo + 131084 + ($250 << 2) >> 2] = $0;\n     HEAP32[$labelInfo + 131084 + (($250 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($250 | 2) << 2) >> 2] = $1;\n     HEAP32[$labelInfo + 131084 + (($250 | 3) << 2) >> 2] = 0;\n     $i$440 = $i$440 + 1 | 0;\n    } while (($i$440 | 0) < (HEAP32[$242 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$538 = 0;\n    do {\n     $264 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0;\n     $265 = $i$538 * 7 | 0;\n     $268 = $labelInfo + 12 + ($264 << 2) | 0;\n     HEAP32[$268 >> 2] = (HEAP32[$268 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($265 << 2) >> 2] | 0);\n     $275 = $264 << 1;\n     $276 = $labelInfo + 655376 + ($275 << 3) | 0;\n     HEAPF64[$276 >> 3] = +HEAPF64[$276 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($265 + 1 << 2) >> 2] | 0);\n     $284 = $labelInfo + 655376 + (($275 | 1) << 3) | 0;\n     HEAPF64[$284 >> 3] = +HEAPF64[$284 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($265 + 2 << 2) >> 2] | 0);\n     $287 = $264 << 2;\n     $288 = $labelInfo + 131084 + ($287 << 2) | 0;\n     $292 = HEAP32[$labelInfo + 1310736 + ($265 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$288 >> 2] | 0) > ($292 | 0)) HEAP32[$288 >> 2] = $292;\n     $295 = $labelInfo + 131084 + (($287 | 1) << 2) | 0;\n     $299 = HEAP32[$labelInfo + 1310736 + ($265 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$295 >> 2] | 0) < ($299 | 0)) HEAP32[$295 >> 2] = $299;\n     $302 = $labelInfo + 131084 + (($287 | 2) << 2) | 0;\n     $306 = HEAP32[$labelInfo + 1310736 + ($265 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$302 >> 2] | 0) > ($306 | 0)) HEAP32[$302 >> 2] = $306;\n     $309 = $labelInfo + 131084 + (($287 | 3) << 2) | 0;\n     $313 = HEAP32[$labelInfo + 1310736 + ($265 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$309 >> 2] | 0) < ($313 | 0)) HEAP32[$309 >> 2] = $313;\n     $i$538 = $i$538 + 1 | 0;\n    } while (($i$538 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$242 >> 2] | 0) > 0) {\n    $i$637 = 0;\n    do {\n     $317 = $labelInfo + 12 + ($i$637 << 2) | 0;\n     $320 = $i$637 << 1;\n     $321 = $labelInfo + 655376 + ($320 << 3) | 0;\n     HEAPF64[$321 >> 3] = +HEAPF64[$321 >> 3] / +(HEAP32[$317 >> 2] | 0);\n     $327 = $labelInfo + 655376 + (($320 | 1) << 3) | 0;\n     HEAPF64[$327 >> 3] = +HEAPF64[$327 >> 3] / +(HEAP32[$317 >> 2] | 0);\n     $i$637 = $i$637 + 1 | 0;\n    } while (($i$637 | 0) < (HEAP32[$242 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubEBIYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $101 = 0, $106 = 0, $109 = 0, $11 = 0, $126 = 0, $128 = 0, $130 = 0, $134 = 0, $138 = 0, $141 = 0, $143 = 0, $147 = 0, $151 = 0, $155 = 0, $160 = 0, $162 = 0, $166 = 0, $170 = 0, $174 = 0, $18 = 0, $180 = 0, $183 = 0, $185 = 0, $189 = 0, $19 = 0, $193 = 0, $197 = 0, $2 = 0, $200 = 0, $205 = 0, $21 = 0, $220 = 0, $221 = 0, $222 = 0, $229 = 0, $231 = 0, $237 = 0, $241 = 0, $242 = 0, $249 = 0, $263 = 0, $264 = 0, $267 = 0, $274 = 0, $275 = 0, $283 = 0, $286 = 0, $287 = 0, $291 = 0, $294 = 0, $298 = 0, $3 = 0, $30 = 0, $301 = 0, $305 = 0, $308 = 0, $312 = 0, $316 = 0, $319 = 0, $320 = 0, $326 = 0, $35 = 0, $38 = 0, $40 = 0, $44 = 0, $48 = 0, $54 = 0, $55 = 0, $58 = 0, $59 = 0, $60 = 0, $63 = 0, $66 = 0, $83 = 0, $85 = 0, $87 = 0, $91 = 0, $95 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = ($xsize | 0) / 2 | 0;\n $1 = ($ysize | 0) / 2 | 0;\n $2 = HEAP32[$labelInfo >> 2] | 0;\n $3 = $1 + -1 | 0;\n if (($xsize | 0) > 1) {\n  $i$089 = 0;\n  $pnt1$091 = $2;\n  $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$090 >> 1] = 0;\n   HEAP16[$pnt1$091 >> 1] = 0;\n   $i$089 = $i$089 + 1 | 0;\n   if (($i$089 | 0) >= ($0 | 0)) break; else {\n    $pnt1$091 = $pnt1$091 + 2 | 0;\n    $pnt2$090 = $pnt2$090 + 2 | 0;\n   }\n  }\n }\n $11 = $0 + -1 | 0;\n if (($ysize | 0) > 1) {\n  $i$183 = 0;\n  $pnt1$185 = $2;\n  $pnt2$184 = $2 + ($11 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$184 >> 1] = 0;\n   HEAP16[$pnt1$185 >> 1] = 0;\n   $i$183 = $i$183 + 1 | 0;\n   if (($i$183 | 0) >= ($1 | 0)) break; else {\n    $pnt1$185 = $pnt1$185 + ($0 << 1) | 0;\n    $pnt2$184 = $pnt2$184 + ($0 << 1) | 0;\n   }\n  }\n }\n $18 = $labelInfo + 1179664 | 0;\n $19 = $0 + 1 | 0;\n $21 = 0 - $0 | 0;\n $$sum1 = 1 - $0 | 0;\n $$sum2 = ~$0;\n $$sum = ($xsize << 1) + 8 | 0;\n L11 : do if (($3 | 0) > 1) {\n  $30 = ($11 | 0) > 1;\n  $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $19 | 0;\n  $j$076 = 1;\n  $pnt$080 = $image + (($xsize << 2) + 4) | 0;\n  $pnt2$279 = $2 + ($19 << 1) | 0;\n  $wk_max$075 = 0;\n  L13 : while (1) {\n   if ($30) {\n    $dpnt$167 = $dpnt$078;\n    $i$265 = 1;\n    $pnt$169 = $pnt$080;\n    $pnt2$368 = $pnt2$279;\n    $wk_max$160 = $wk_max$075;\n    while (1) {\n     do if ((HEAPU8[$pnt$169 >> 0] | 0 | 0) > ($labelingThresh | 0)) {\n      HEAP16[$pnt2$368 >> 1] = 0;\n      HEAP8[$dpnt$167 >> 0] = 0;\n      $wk_max$2 = $wk_max$160;\n     } else {\n      HEAP8[$dpnt$167 >> 0] = -1;\n      $35 = HEAP16[$pnt2$368 + ($21 << 1) >> 1] | 0;\n      if ($35 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$368 >> 1] = $35;\n       $38 = ($35 << 16 >> 16) * 7 | 0;\n       $40 = $labelInfo + 1310736 + ($38 + -7 << 2) | 0;\n       HEAP32[$40 >> 2] = (HEAP32[$40 >> 2] | 0) + 1;\n       $44 = $labelInfo + 1310736 + ($38 + -6 << 2) | 0;\n       HEAP32[$44 >> 2] = (HEAP32[$44 >> 2] | 0) + $i$265;\n       $48 = $labelInfo + 1310736 + ($38 + -5 << 2) | 0;\n       HEAP32[$48 >> 2] = (HEAP32[$48 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($38 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $54 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0;\n      $55 = $54 << 16 >> 16;\n      $58 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0;\n      $59 = $58 << 16 >> 16;\n      $60 = $58 << 16 >> 16 > 0;\n      if ($54 << 16 >> 16 <= 0) {\n       if ($60) {\n        HEAP16[$pnt2$368 >> 1] = $58;\n        $160 = $59 * 7 | 0;\n        $162 = $labelInfo + 1310736 + ($160 + -7 << 2) | 0;\n        HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + 1;\n        $166 = $labelInfo + 1310736 + ($160 + -6 << 2) | 0;\n        HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + $i$265;\n        $170 = $labelInfo + 1310736 + ($160 + -5 << 2) | 0;\n        HEAP32[$170 >> 2] = (HEAP32[$170 >> 2] | 0) + $j$076;\n        $174 = $labelInfo + 1310736 + ($160 + -3 << 2) | 0;\n        if ((HEAP32[$174 >> 2] | 0) < ($i$265 | 0)) HEAP32[$174 >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($160 + -1 << 2) >> 2] = $j$076;\n        $wk_max$2 = $wk_max$160;\n        break;\n       }\n       $180 = HEAP16[$pnt2$368 + -2 >> 1] | 0;\n       if ($180 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$368 >> 1] = $180;\n        $183 = ($180 << 16 >> 16) * 7 | 0;\n        $185 = $labelInfo + 1310736 + ($183 + -7 << 2) | 0;\n        HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + 1;\n        $189 = $labelInfo + 1310736 + ($183 + -6 << 2) | 0;\n        HEAP32[$189 >> 2] = (HEAP32[$189 >> 2] | 0) + $i$265;\n        $193 = $labelInfo + 1310736 + ($183 + -5 << 2) | 0;\n        HEAP32[$193 >> 2] = (HEAP32[$193 >> 2] | 0) + $j$076;\n        $197 = $labelInfo + 1310736 + ($183 + -3 << 2) | 0;\n        if ((HEAP32[$197 >> 2] | 0) >= ($i$265 | 0)) {\n         $wk_max$2 = $wk_max$160;\n         break;\n        }\n        HEAP32[$197 >> 2] = $i$265;\n        $wk_max$2 = $wk_max$160;\n        break;\n       } else {\n        $200 = $wk_max$160 + 1 | 0;\n        if (($wk_max$160 | 0) > 32767) break L13;\n        HEAP16[$pnt2$368 >> 1] = $200;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $200 << 16 >> 16;\n        $205 = $wk_max$160 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($205 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($205 + 1 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($205 + 2 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($205 + 3 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($205 + 4 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($205 + 5 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($205 + 6 << 2) >> 2] = $j$076;\n        $wk_max$2 = $200;\n        break;\n       }\n      }\n      if ($60) {\n       $63 = HEAP32[$labelInfo + 1179664 + ($55 + -1 << 2) >> 2] | 0;\n       $66 = HEAP32[$labelInfo + 1179664 + ($59 + -1 << 2) >> 2] | 0;\n       if (($63 | 0) > ($66 | 0)) {\n        HEAP16[$pnt2$368 >> 1] = $66;\n        if (($wk_max$160 | 0) > 0) {\n         $k$056 = 0;\n         $wk$057 = $18;\n         while (1) {\n          if ((HEAP32[$wk$057 >> 2] | 0) == ($63 | 0)) HEAP32[$wk$057 >> 2] = $66;\n          $k$056 = $k$056 + 1 | 0;\n          if (($k$056 | 0) >= ($wk_max$160 | 0)) {\n           $83 = $66;\n           break;\n          } else $wk$057 = $wk$057 + 4 | 0;\n         }\n        } else $83 = $66;\n       } else {\n        HEAP16[$pnt2$368 >> 1] = $63;\n        if (($63 | 0) < ($66 | 0) & ($wk_max$160 | 0) > 0) {\n         $k$153 = 0;\n         $wk$154 = $18;\n         while (1) {\n          if ((HEAP32[$wk$154 >> 2] | 0) == ($66 | 0)) HEAP32[$wk$154 >> 2] = $63;\n          $k$153 = $k$153 + 1 | 0;\n          if (($k$153 | 0) >= ($wk_max$160 | 0)) {\n           $83 = $63;\n           break;\n          } else $wk$154 = $wk$154 + 4 | 0;\n         }\n        } else $83 = $63;\n       }\n       $85 = ($83 << 16 >> 16) * 7 | 0;\n       $87 = $labelInfo + 1310736 + ($85 + -7 << 2) | 0;\n       HEAP32[$87 >> 2] = (HEAP32[$87 >> 2] | 0) + 1;\n       $91 = $labelInfo + 1310736 + ($85 + -6 << 2) | 0;\n       HEAP32[$91 >> 2] = (HEAP32[$91 >> 2] | 0) + $i$265;\n       $95 = $labelInfo + 1310736 + ($85 + -5 << 2) | 0;\n       HEAP32[$95 >> 2] = (HEAP32[$95 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($85 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $101 = HEAP16[$pnt2$368 + -2 >> 1] | 0;\n      if ($101 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$368 >> 1] = $54;\n       $141 = $55 * 7 | 0;\n       $143 = $labelInfo + 1310736 + ($141 + -7 << 2) | 0;\n       HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + 1;\n       $147 = $labelInfo + 1310736 + ($141 + -6 << 2) | 0;\n       HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + $i$265;\n       $151 = $labelInfo + 1310736 + ($141 + -5 << 2) | 0;\n       HEAP32[$151 >> 2] = (HEAP32[$151 >> 2] | 0) + $j$076;\n       $155 = $labelInfo + 1310736 + ($141 + -4 << 2) | 0;\n       if ((HEAP32[$155 >> 2] | 0) > ($i$265 | 0)) HEAP32[$155 >> 2] = $i$265;\n       HEAP32[$labelInfo + 1310736 + ($141 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $106 = HEAP32[$labelInfo + 1179664 + ($55 + -1 << 2) >> 2] | 0;\n      $109 = HEAP32[$labelInfo + 1179664 + (($101 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($106 | 0) > ($109 | 0)) {\n       HEAP16[$pnt2$368 >> 1] = $109;\n       if (($wk_max$160 | 0) > 0) {\n        $k$249 = 0;\n        $wk$250 = $18;\n        while (1) {\n         if ((HEAP32[$wk$250 >> 2] | 0) == ($106 | 0)) HEAP32[$wk$250 >> 2] = $109;\n         $k$249 = $k$249 + 1 | 0;\n         if (($k$249 | 0) >= ($wk_max$160 | 0)) {\n          $126 = $109;\n          break;\n         } else $wk$250 = $wk$250 + 4 | 0;\n        }\n       } else $126 = $109;\n      } else {\n       HEAP16[$pnt2$368 >> 1] = $106;\n       if (($106 | 0) < ($109 | 0) & ($wk_max$160 | 0) > 0) {\n        $k$346 = 0;\n        $wk$347 = $18;\n        while (1) {\n         if ((HEAP32[$wk$347 >> 2] | 0) == ($109 | 0)) HEAP32[$wk$347 >> 2] = $106;\n         $k$346 = $k$346 + 1 | 0;\n         if (($k$346 | 0) >= ($wk_max$160 | 0)) {\n          $126 = $106;\n          break;\n         } else $wk$347 = $wk$347 + 4 | 0;\n        }\n       } else $126 = $106;\n      }\n      $128 = ($126 << 16 >> 16) * 7 | 0;\n      $130 = $labelInfo + 1310736 + ($128 + -7 << 2) | 0;\n      HEAP32[$130 >> 2] = (HEAP32[$130 >> 2] | 0) + 1;\n      $134 = $labelInfo + 1310736 + ($128 + -6 << 2) | 0;\n      HEAP32[$134 >> 2] = (HEAP32[$134 >> 2] | 0) + $i$265;\n      $138 = $labelInfo + 1310736 + ($128 + -5 << 2) | 0;\n      HEAP32[$138 >> 2] = (HEAP32[$138 >> 2] | 0) + $j$076;\n      $wk_max$2 = $wk_max$160;\n     } while (0);\n     $i$265 = $i$265 + 1 | 0;\n     $220 = $pnt$169 + 4 | 0;\n     $221 = $pnt2$368 + 2 | 0;\n     $222 = $dpnt$167 + 1 | 0;\n     if (($i$265 | 0) >= ($11 | 0)) {\n      $dpnt$1$lcssa = $222;\n      $pnt$1$lcssa = $220;\n      $pnt2$3$lcssa = $221;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $dpnt$167 = $222;\n      $pnt$169 = $220;\n      $pnt2$368 = $221;\n      $wk_max$160 = $wk_max$2;\n     }\n    }\n   } else {\n    $dpnt$1$lcssa = $dpnt$078;\n    $pnt$1$lcssa = $pnt$080;\n    $pnt2$3$lcssa = $pnt2$279;\n    $wk_max$1$lcssa = $wk_max$075;\n   }\n   $j$076 = $j$076 + 1 | 0;\n   if (($j$076 | 0) >= ($3 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $dpnt$078 = $dpnt$1$lcssa + 2 | 0;\n    $pnt$080 = $pnt$1$lcssa + $$sum | 0;\n    $pnt2$279 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$075 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $229 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$342 = 1;\n   $j$143 = 1;\n   $wk$444 = $18;\n   while (1) {\n    $231 = HEAP32[$wk$444 >> 2] | 0;\n    if (($231 | 0) == ($i$342 | 0)) {\n     $237 = $j$143;\n     $j$2 = $j$143 + 1 | 0;\n    } else {\n     $237 = HEAP32[$labelInfo + 1179664 + ($231 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$143;\n    }\n    HEAP32[$wk$444 >> 2] = $237;\n    if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$342 = $i$342 + 1 | 0;\n     $j$143 = $j$2;\n     $wk$444 = $wk$444 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $241 = $labelInfo + 8 | 0;\n  $242 = $j$1$lcssa + -1 | 0;\n  HEAP32[$241 >> 2] = $242;\n  if (!$242) $$0 = 0; else {\n   _memset($229 | 0, 0, $242 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $242 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$440 = 0;\n    do {\n     $249 = $i$440 << 2;\n     HEAP32[$labelInfo + 131084 + ($249 << 2) >> 2] = $0;\n     HEAP32[$labelInfo + 131084 + (($249 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($249 | 2) << 2) >> 2] = $1;\n     HEAP32[$labelInfo + 131084 + (($249 | 3) << 2) >> 2] = 0;\n     $i$440 = $i$440 + 1 | 0;\n    } while (($i$440 | 0) < (HEAP32[$241 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$538 = 0;\n    do {\n     $263 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0;\n     $264 = $i$538 * 7 | 0;\n     $267 = $labelInfo + 12 + ($263 << 2) | 0;\n     HEAP32[$267 >> 2] = (HEAP32[$267 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($264 << 2) >> 2] | 0);\n     $274 = $263 << 1;\n     $275 = $labelInfo + 655376 + ($274 << 3) | 0;\n     HEAPF64[$275 >> 3] = +HEAPF64[$275 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($264 + 1 << 2) >> 2] | 0);\n     $283 = $labelInfo + 655376 + (($274 | 1) << 3) | 0;\n     HEAPF64[$283 >> 3] = +HEAPF64[$283 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($264 + 2 << 2) >> 2] | 0);\n     $286 = $263 << 2;\n     $287 = $labelInfo + 131084 + ($286 << 2) | 0;\n     $291 = HEAP32[$labelInfo + 1310736 + ($264 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$287 >> 2] | 0) > ($291 | 0)) HEAP32[$287 >> 2] = $291;\n     $294 = $labelInfo + 131084 + (($286 | 1) << 2) | 0;\n     $298 = HEAP32[$labelInfo + 1310736 + ($264 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$294 >> 2] | 0) < ($298 | 0)) HEAP32[$294 >> 2] = $298;\n     $301 = $labelInfo + 131084 + (($286 | 2) << 2) | 0;\n     $305 = HEAP32[$labelInfo + 1310736 + ($264 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$301 >> 2] | 0) > ($305 | 0)) HEAP32[$301 >> 2] = $305;\n     $308 = $labelInfo + 131084 + (($286 | 3) << 2) | 0;\n     $312 = HEAP32[$labelInfo + 1310736 + ($264 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$308 >> 2] | 0) < ($312 | 0)) HEAP32[$308 >> 2] = $312;\n     $i$538 = $i$538 + 1 | 0;\n    } while (($i$538 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$241 >> 2] | 0) > 0) {\n    $i$637 = 0;\n    do {\n     $316 = $labelInfo + 12 + ($i$637 << 2) | 0;\n     $319 = $i$637 << 1;\n     $320 = $labelInfo + 655376 + ($319 << 3) | 0;\n     HEAPF64[$320 >> 3] = +HEAPF64[$320 >> 3] / +(HEAP32[$316 >> 2] | 0);\n     $326 = $labelInfo + 655376 + (($319 | 1) << 3) | 0;\n     HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$316 >> 2] | 0);\n     $i$637 = $i$637 + 1 | 0;\n    } while (($i$637 | 0) < (HEAP32[$241 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\nfunction _arLabelingSubEWIYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $101 = 0, $106 = 0, $109 = 0, $11 = 0, $126 = 0, $128 = 0, $130 = 0, $134 = 0, $138 = 0, $141 = 0, $143 = 0, $147 = 0, $151 = 0, $155 = 0, $160 = 0, $162 = 0, $166 = 0, $170 = 0, $174 = 0, $18 = 0, $180 = 0, $183 = 0, $185 = 0, $189 = 0, $19 = 0, $193 = 0, $197 = 0, $2 = 0, $200 = 0, $205 = 0, $21 = 0, $220 = 0, $221 = 0, $222 = 0, $229 = 0, $231 = 0, $237 = 0, $241 = 0, $242 = 0, $249 = 0, $263 = 0, $264 = 0, $267 = 0, $274 = 0, $275 = 0, $283 = 0, $286 = 0, $287 = 0, $291 = 0, $294 = 0, $298 = 0, $3 = 0, $30 = 0, $301 = 0, $305 = 0, $308 = 0, $312 = 0, $316 = 0, $319 = 0, $320 = 0, $326 = 0, $35 = 0, $38 = 0, $40 = 0, $44 = 0, $48 = 0, $54 = 0, $55 = 0, $58 = 0, $59 = 0, $60 = 0, $63 = 0, $66 = 0, $83 = 0, $85 = 0, $87 = 0, $91 = 0, $95 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = ($xsize | 0) / 2 | 0;\n $1 = ($ysize | 0) / 2 | 0;\n $2 = HEAP32[$labelInfo >> 2] | 0;\n $3 = $1 + -1 | 0;\n if (($xsize | 0) > 1) {\n  $i$089 = 0;\n  $pnt1$091 = $2;\n  $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$090 >> 1] = 0;\n   HEAP16[$pnt1$091 >> 1] = 0;\n   $i$089 = $i$089 + 1 | 0;\n   if (($i$089 | 0) >= ($0 | 0)) break; else {\n    $pnt1$091 = $pnt1$091 + 2 | 0;\n    $pnt2$090 = $pnt2$090 + 2 | 0;\n   }\n  }\n }\n $11 = $0 + -1 | 0;\n if (($ysize | 0) > 1) {\n  $i$183 = 0;\n  $pnt1$185 = $2;\n  $pnt2$184 = $2 + ($11 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$184 >> 1] = 0;\n   HEAP16[$pnt1$185 >> 1] = 0;\n   $i$183 = $i$183 + 1 | 0;\n   if (($i$183 | 0) >= ($1 | 0)) break; else {\n    $pnt1$185 = $pnt1$185 + ($0 << 1) | 0;\n    $pnt2$184 = $pnt2$184 + ($0 << 1) | 0;\n   }\n  }\n }\n $18 = $labelInfo + 1179664 | 0;\n $19 = $0 + 1 | 0;\n $21 = 0 - $0 | 0;\n $$sum1 = 1 - $0 | 0;\n $$sum2 = ~$0;\n $$sum = ($xsize << 1) + 8 | 0;\n L11 : do if (($3 | 0) > 1) {\n  $30 = ($11 | 0) > 1;\n  $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $19 | 0;\n  $j$076 = 1;\n  $pnt$080 = $image + (($xsize << 2) + 4) | 0;\n  $pnt2$279 = $2 + ($19 << 1) | 0;\n  $wk_max$075 = 0;\n  L13 : while (1) {\n   if ($30) {\n    $dpnt$167 = $dpnt$078;\n    $i$265 = 1;\n    $pnt$169 = $pnt$080;\n    $pnt2$368 = $pnt2$279;\n    $wk_max$160 = $wk_max$075;\n    while (1) {\n     do if ((HEAPU8[$pnt$169 >> 0] | 0 | 0) > ($labelingThresh | 0)) {\n      HEAP8[$dpnt$167 >> 0] = -1;\n      $35 = HEAP16[$pnt2$368 + ($21 << 1) >> 1] | 0;\n      if ($35 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$368 >> 1] = $35;\n       $38 = ($35 << 16 >> 16) * 7 | 0;\n       $40 = $labelInfo + 1310736 + ($38 + -7 << 2) | 0;\n       HEAP32[$40 >> 2] = (HEAP32[$40 >> 2] | 0) + 1;\n       $44 = $labelInfo + 1310736 + ($38 + -6 << 2) | 0;\n       HEAP32[$44 >> 2] = (HEAP32[$44 >> 2] | 0) + $i$265;\n       $48 = $labelInfo + 1310736 + ($38 + -5 << 2) | 0;\n       HEAP32[$48 >> 2] = (HEAP32[$48 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($38 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $54 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0;\n      $55 = $54 << 16 >> 16;\n      $58 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0;\n      $59 = $58 << 16 >> 16;\n      $60 = $58 << 16 >> 16 > 0;\n      if ($54 << 16 >> 16 <= 0) {\n       if ($60) {\n        HEAP16[$pnt2$368 >> 1] = $58;\n        $160 = $59 * 7 | 0;\n        $162 = $labelInfo + 1310736 + ($160 + -7 << 2) | 0;\n        HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + 1;\n        $166 = $labelInfo + 1310736 + ($160 + -6 << 2) | 0;\n        HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + $i$265;\n        $170 = $labelInfo + 1310736 + ($160 + -5 << 2) | 0;\n        HEAP32[$170 >> 2] = (HEAP32[$170 >> 2] | 0) + $j$076;\n        $174 = $labelInfo + 1310736 + ($160 + -3 << 2) | 0;\n        if ((HEAP32[$174 >> 2] | 0) < ($i$265 | 0)) HEAP32[$174 >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($160 + -1 << 2) >> 2] = $j$076;\n        $wk_max$2 = $wk_max$160;\n        break;\n       }\n       $180 = HEAP16[$pnt2$368 + -2 >> 1] | 0;\n       if ($180 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$368 >> 1] = $180;\n        $183 = ($180 << 16 >> 16) * 7 | 0;\n        $185 = $labelInfo + 1310736 + ($183 + -7 << 2) | 0;\n        HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + 1;\n        $189 = $labelInfo + 1310736 + ($183 + -6 << 2) | 0;\n        HEAP32[$189 >> 2] = (HEAP32[$189 >> 2] | 0) + $i$265;\n        $193 = $labelInfo + 1310736 + ($183 + -5 << 2) | 0;\n        HEAP32[$193 >> 2] = (HEAP32[$193 >> 2] | 0) + $j$076;\n        $197 = $labelInfo + 1310736 + ($183 + -3 << 2) | 0;\n        if ((HEAP32[$197 >> 2] | 0) >= ($i$265 | 0)) {\n         $wk_max$2 = $wk_max$160;\n         break;\n        }\n        HEAP32[$197 >> 2] = $i$265;\n        $wk_max$2 = $wk_max$160;\n        break;\n       } else {\n        $200 = $wk_max$160 + 1 | 0;\n        if (($wk_max$160 | 0) > 32767) break L13;\n        HEAP16[$pnt2$368 >> 1] = $200;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $200 << 16 >> 16;\n        $205 = $wk_max$160 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($205 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($205 + 1 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($205 + 2 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($205 + 3 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($205 + 4 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($205 + 5 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($205 + 6 << 2) >> 2] = $j$076;\n        $wk_max$2 = $200;\n        break;\n       }\n      }\n      if ($60) {\n       $63 = HEAP32[$labelInfo + 1179664 + ($55 + -1 << 2) >> 2] | 0;\n       $66 = HEAP32[$labelInfo + 1179664 + ($59 + -1 << 2) >> 2] | 0;\n       if (($63 | 0) > ($66 | 0)) {\n        HEAP16[$pnt2$368 >> 1] = $66;\n        if (($wk_max$160 | 0) > 0) {\n         $k$056 = 0;\n         $wk$057 = $18;\n         while (1) {\n          if ((HEAP32[$wk$057 >> 2] | 0) == ($63 | 0)) HEAP32[$wk$057 >> 2] = $66;\n          $k$056 = $k$056 + 1 | 0;\n          if (($k$056 | 0) >= ($wk_max$160 | 0)) {\n           $83 = $66;\n           break;\n          } else $wk$057 = $wk$057 + 4 | 0;\n         }\n        } else $83 = $66;\n       } else {\n        HEAP16[$pnt2$368 >> 1] = $63;\n        if (($63 | 0) < ($66 | 0) & ($wk_max$160 | 0) > 0) {\n         $k$153 = 0;\n         $wk$154 = $18;\n         while (1) {\n          if ((HEAP32[$wk$154 >> 2] | 0) == ($66 | 0)) HEAP32[$wk$154 >> 2] = $63;\n          $k$153 = $k$153 + 1 | 0;\n          if (($k$153 | 0) >= ($wk_max$160 | 0)) {\n           $83 = $63;\n           break;\n          } else $wk$154 = $wk$154 + 4 | 0;\n         }\n        } else $83 = $63;\n       }\n       $85 = ($83 << 16 >> 16) * 7 | 0;\n       $87 = $labelInfo + 1310736 + ($85 + -7 << 2) | 0;\n       HEAP32[$87 >> 2] = (HEAP32[$87 >> 2] | 0) + 1;\n       $91 = $labelInfo + 1310736 + ($85 + -6 << 2) | 0;\n       HEAP32[$91 >> 2] = (HEAP32[$91 >> 2] | 0) + $i$265;\n       $95 = $labelInfo + 1310736 + ($85 + -5 << 2) | 0;\n       HEAP32[$95 >> 2] = (HEAP32[$95 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($85 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $101 = HEAP16[$pnt2$368 + -2 >> 1] | 0;\n      if ($101 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$368 >> 1] = $54;\n       $141 = $55 * 7 | 0;\n       $143 = $labelInfo + 1310736 + ($141 + -7 << 2) | 0;\n       HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + 1;\n       $147 = $labelInfo + 1310736 + ($141 + -6 << 2) | 0;\n       HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + $i$265;\n       $151 = $labelInfo + 1310736 + ($141 + -5 << 2) | 0;\n       HEAP32[$151 >> 2] = (HEAP32[$151 >> 2] | 0) + $j$076;\n       $155 = $labelInfo + 1310736 + ($141 + -4 << 2) | 0;\n       if ((HEAP32[$155 >> 2] | 0) > ($i$265 | 0)) HEAP32[$155 >> 2] = $i$265;\n       HEAP32[$labelInfo + 1310736 + ($141 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $106 = HEAP32[$labelInfo + 1179664 + ($55 + -1 << 2) >> 2] | 0;\n      $109 = HEAP32[$labelInfo + 1179664 + (($101 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($106 | 0) > ($109 | 0)) {\n       HEAP16[$pnt2$368 >> 1] = $109;\n       if (($wk_max$160 | 0) > 0) {\n        $k$249 = 0;\n        $wk$250 = $18;\n        while (1) {\n         if ((HEAP32[$wk$250 >> 2] | 0) == ($106 | 0)) HEAP32[$wk$250 >> 2] = $109;\n         $k$249 = $k$249 + 1 | 0;\n         if (($k$249 | 0) >= ($wk_max$160 | 0)) {\n          $126 = $109;\n          break;\n         } else $wk$250 = $wk$250 + 4 | 0;\n        }\n       } else $126 = $109;\n      } else {\n       HEAP16[$pnt2$368 >> 1] = $106;\n       if (($106 | 0) < ($109 | 0) & ($wk_max$160 | 0) > 0) {\n        $k$346 = 0;\n        $wk$347 = $18;\n        while (1) {\n         if ((HEAP32[$wk$347 >> 2] | 0) == ($109 | 0)) HEAP32[$wk$347 >> 2] = $106;\n         $k$346 = $k$346 + 1 | 0;\n         if (($k$346 | 0) >= ($wk_max$160 | 0)) {\n          $126 = $106;\n          break;\n         } else $wk$347 = $wk$347 + 4 | 0;\n        }\n       } else $126 = $106;\n      }\n      $128 = ($126 << 16 >> 16) * 7 | 0;\n      $130 = $labelInfo + 1310736 + ($128 + -7 << 2) | 0;\n      HEAP32[$130 >> 2] = (HEAP32[$130 >> 2] | 0) + 1;\n      $134 = $labelInfo + 1310736 + ($128 + -6 << 2) | 0;\n      HEAP32[$134 >> 2] = (HEAP32[$134 >> 2] | 0) + $i$265;\n      $138 = $labelInfo + 1310736 + ($128 + -5 << 2) | 0;\n      HEAP32[$138 >> 2] = (HEAP32[$138 >> 2] | 0) + $j$076;\n      $wk_max$2 = $wk_max$160;\n     } else {\n      HEAP16[$pnt2$368 >> 1] = 0;\n      HEAP8[$dpnt$167 >> 0] = 0;\n      $wk_max$2 = $wk_max$160;\n     } while (0);\n     $i$265 = $i$265 + 1 | 0;\n     $220 = $pnt$169 + 4 | 0;\n     $221 = $pnt2$368 + 2 | 0;\n     $222 = $dpnt$167 + 1 | 0;\n     if (($i$265 | 0) >= ($11 | 0)) {\n      $dpnt$1$lcssa = $222;\n      $pnt$1$lcssa = $220;\n      $pnt2$3$lcssa = $221;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $dpnt$167 = $222;\n      $pnt$169 = $220;\n      $pnt2$368 = $221;\n      $wk_max$160 = $wk_max$2;\n     }\n    }\n   } else {\n    $dpnt$1$lcssa = $dpnt$078;\n    $pnt$1$lcssa = $pnt$080;\n    $pnt2$3$lcssa = $pnt2$279;\n    $wk_max$1$lcssa = $wk_max$075;\n   }\n   $j$076 = $j$076 + 1 | 0;\n   if (($j$076 | 0) >= ($3 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $dpnt$078 = $dpnt$1$lcssa + 2 | 0;\n    $pnt$080 = $pnt$1$lcssa + $$sum | 0;\n    $pnt2$279 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$075 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $229 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$342 = 1;\n   $j$143 = 1;\n   $wk$444 = $18;\n   while (1) {\n    $231 = HEAP32[$wk$444 >> 2] | 0;\n    if (($231 | 0) == ($i$342 | 0)) {\n     $237 = $j$143;\n     $j$2 = $j$143 + 1 | 0;\n    } else {\n     $237 = HEAP32[$labelInfo + 1179664 + ($231 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$143;\n    }\n    HEAP32[$wk$444 >> 2] = $237;\n    if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$342 = $i$342 + 1 | 0;\n     $j$143 = $j$2;\n     $wk$444 = $wk$444 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $241 = $labelInfo + 8 | 0;\n  $242 = $j$1$lcssa + -1 | 0;\n  HEAP32[$241 >> 2] = $242;\n  if (!$242) $$0 = 0; else {\n   _memset($229 | 0, 0, $242 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $242 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$440 = 0;\n    do {\n     $249 = $i$440 << 2;\n     HEAP32[$labelInfo + 131084 + ($249 << 2) >> 2] = $0;\n     HEAP32[$labelInfo + 131084 + (($249 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($249 | 2) << 2) >> 2] = $1;\n     HEAP32[$labelInfo + 131084 + (($249 | 3) << 2) >> 2] = 0;\n     $i$440 = $i$440 + 1 | 0;\n    } while (($i$440 | 0) < (HEAP32[$241 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$538 = 0;\n    do {\n     $263 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0;\n     $264 = $i$538 * 7 | 0;\n     $267 = $labelInfo + 12 + ($263 << 2) | 0;\n     HEAP32[$267 >> 2] = (HEAP32[$267 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($264 << 2) >> 2] | 0);\n     $274 = $263 << 1;\n     $275 = $labelInfo + 655376 + ($274 << 3) | 0;\n     HEAPF64[$275 >> 3] = +HEAPF64[$275 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($264 + 1 << 2) >> 2] | 0);\n     $283 = $labelInfo + 655376 + (($274 | 1) << 3) | 0;\n     HEAPF64[$283 >> 3] = +HEAPF64[$283 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($264 + 2 << 2) >> 2] | 0);\n     $286 = $263 << 2;\n     $287 = $labelInfo + 131084 + ($286 << 2) | 0;\n     $291 = HEAP32[$labelInfo + 1310736 + ($264 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$287 >> 2] | 0) > ($291 | 0)) HEAP32[$287 >> 2] = $291;\n     $294 = $labelInfo + 131084 + (($286 | 1) << 2) | 0;\n     $298 = HEAP32[$labelInfo + 1310736 + ($264 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$294 >> 2] | 0) < ($298 | 0)) HEAP32[$294 >> 2] = $298;\n     $301 = $labelInfo + 131084 + (($286 | 2) << 2) | 0;\n     $305 = HEAP32[$labelInfo + 1310736 + ($264 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$301 >> 2] | 0) > ($305 | 0)) HEAP32[$301 >> 2] = $305;\n     $308 = $labelInfo + 131084 + (($286 | 3) << 2) | 0;\n     $312 = HEAP32[$labelInfo + 1310736 + ($264 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$308 >> 2] | 0) < ($312 | 0)) HEAP32[$308 >> 2] = $312;\n     $i$538 = $i$538 + 1 | 0;\n    } while (($i$538 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$241 >> 2] | 0) > 0) {\n    $i$637 = 0;\n    do {\n     $316 = $labelInfo + 12 + ($i$637 << 2) | 0;\n     $319 = $i$637 << 1;\n     $320 = $labelInfo + 655376 + ($319 << 3) | 0;\n     HEAPF64[$320 >> 3] = +HEAPF64[$320 >> 3] / +(HEAP32[$316 >> 2] | 0);\n     $326 = $labelInfo + 655376 + (($319 | 1) << 3) | 0;\n     HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$316 >> 2] | 0);\n     $i$637 = $i$637 + 1 | 0;\n    } while (($i$637 | 0) < (HEAP32[$241 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubEWIC($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $100 = 0, $105 = 0, $108 = 0, $11 = 0, $125 = 0, $127 = 0, $129 = 0, $133 = 0, $137 = 0, $140 = 0, $142 = 0, $146 = 0, $150 = 0, $154 = 0, $159 = 0, $161 = 0, $165 = 0, $169 = 0, $173 = 0, $179 = 0, $18 = 0, $182 = 0, $184 = 0, $188 = 0, $19 = 0, $192 = 0, $196 = 0, $199 = 0, $2 = 0, $20 = 0, $204 = 0, $219 = 0, $220 = 0, $221 = 0, $228 = 0, $230 = 0, $236 = 0, $240 = 0, $241 = 0, $248 = 0, $262 = 0, $263 = 0, $266 = 0, $273 = 0, $274 = 0, $282 = 0, $285 = 0, $286 = 0, $29 = 0, $290 = 0, $293 = 0, $297 = 0, $3 = 0, $300 = 0, $304 = 0, $307 = 0, $311 = 0, $315 = 0, $318 = 0, $319 = 0, $325 = 0, $34 = 0, $37 = 0, $39 = 0, $43 = 0, $47 = 0, $53 = 0, $54 = 0, $57 = 0, $58 = 0, $59 = 0, $62 = 0, $65 = 0, $82 = 0, $84 = 0, $86 = 0, $90 = 0, $94 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = ($xsize | 0) / 2 | 0;\n $1 = ($ysize | 0) / 2 | 0;\n $2 = HEAP32[$labelInfo >> 2] | 0;\n $3 = $1 + -1 | 0;\n if (($xsize | 0) > 1) {\n  $i$089 = 0;\n  $pnt1$091 = $2;\n  $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$090 >> 1] = 0;\n   HEAP16[$pnt1$091 >> 1] = 0;\n   $i$089 = $i$089 + 1 | 0;\n   if (($i$089 | 0) >= ($0 | 0)) break; else {\n    $pnt1$091 = $pnt1$091 + 2 | 0;\n    $pnt2$090 = $pnt2$090 + 2 | 0;\n   }\n  }\n }\n $11 = $0 + -1 | 0;\n if (($ysize | 0) > 1) {\n  $i$183 = 0;\n  $pnt1$185 = $2;\n  $pnt2$184 = $2 + ($11 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$184 >> 1] = 0;\n   HEAP16[$pnt1$185 >> 1] = 0;\n   $i$183 = $i$183 + 1 | 0;\n   if (($i$183 | 0) >= ($1 | 0)) break; else {\n    $pnt1$185 = $pnt1$185 + ($0 << 1) | 0;\n    $pnt2$184 = $pnt2$184 + ($0 << 1) | 0;\n   }\n  }\n }\n $18 = $labelInfo + 1179664 | 0;\n $19 = $0 + 1 | 0;\n $20 = 0 - $0 | 0;\n $$sum1 = 1 - $0 | 0;\n $$sum2 = ~$0;\n $$sum = $xsize + 4 | 0;\n L11 : do if (($3 | 0) > 1) {\n  $29 = ($11 | 0) > 1;\n  $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $19 | 0;\n  $j$076 = 1;\n  $pnt$080 = $image + (($xsize << 1) + 2) | 0;\n  $pnt2$279 = $2 + ($19 << 1) | 0;\n  $wk_max$075 = 0;\n  L13 : while (1) {\n   if ($29) {\n    $dpnt$167 = $dpnt$078;\n    $i$265 = 1;\n    $pnt$169 = $pnt$080;\n    $pnt2$368 = $pnt2$279;\n    $wk_max$160 = $wk_max$075;\n    while (1) {\n     do if ((HEAPU8[$pnt$169 >> 0] | 0 | 0) > ($labelingThresh | 0)) {\n      HEAP8[$dpnt$167 >> 0] = -1;\n      $34 = HEAP16[$pnt2$368 + ($20 << 1) >> 1] | 0;\n      if ($34 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$368 >> 1] = $34;\n       $37 = ($34 << 16 >> 16) * 7 | 0;\n       $39 = $labelInfo + 1310736 + ($37 + -7 << 2) | 0;\n       HEAP32[$39 >> 2] = (HEAP32[$39 >> 2] | 0) + 1;\n       $43 = $labelInfo + 1310736 + ($37 + -6 << 2) | 0;\n       HEAP32[$43 >> 2] = (HEAP32[$43 >> 2] | 0) + $i$265;\n       $47 = $labelInfo + 1310736 + ($37 + -5 << 2) | 0;\n       HEAP32[$47 >> 2] = (HEAP32[$47 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($37 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $53 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0;\n      $54 = $53 << 16 >> 16;\n      $57 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0;\n      $58 = $57 << 16 >> 16;\n      $59 = $57 << 16 >> 16 > 0;\n      if ($53 << 16 >> 16 <= 0) {\n       if ($59) {\n        HEAP16[$pnt2$368 >> 1] = $57;\n        $159 = $58 * 7 | 0;\n        $161 = $labelInfo + 1310736 + ($159 + -7 << 2) | 0;\n        HEAP32[$161 >> 2] = (HEAP32[$161 >> 2] | 0) + 1;\n        $165 = $labelInfo + 1310736 + ($159 + -6 << 2) | 0;\n        HEAP32[$165 >> 2] = (HEAP32[$165 >> 2] | 0) + $i$265;\n        $169 = $labelInfo + 1310736 + ($159 + -5 << 2) | 0;\n        HEAP32[$169 >> 2] = (HEAP32[$169 >> 2] | 0) + $j$076;\n        $173 = $labelInfo + 1310736 + ($159 + -3 << 2) | 0;\n        if ((HEAP32[$173 >> 2] | 0) < ($i$265 | 0)) HEAP32[$173 >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($159 + -1 << 2) >> 2] = $j$076;\n        $wk_max$2 = $wk_max$160;\n        break;\n       }\n       $179 = HEAP16[$pnt2$368 + -2 >> 1] | 0;\n       if ($179 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$368 >> 1] = $179;\n        $182 = ($179 << 16 >> 16) * 7 | 0;\n        $184 = $labelInfo + 1310736 + ($182 + -7 << 2) | 0;\n        HEAP32[$184 >> 2] = (HEAP32[$184 >> 2] | 0) + 1;\n        $188 = $labelInfo + 1310736 + ($182 + -6 << 2) | 0;\n        HEAP32[$188 >> 2] = (HEAP32[$188 >> 2] | 0) + $i$265;\n        $192 = $labelInfo + 1310736 + ($182 + -5 << 2) | 0;\n        HEAP32[$192 >> 2] = (HEAP32[$192 >> 2] | 0) + $j$076;\n        $196 = $labelInfo + 1310736 + ($182 + -3 << 2) | 0;\n        if ((HEAP32[$196 >> 2] | 0) >= ($i$265 | 0)) {\n         $wk_max$2 = $wk_max$160;\n         break;\n        }\n        HEAP32[$196 >> 2] = $i$265;\n        $wk_max$2 = $wk_max$160;\n        break;\n       } else {\n        $199 = $wk_max$160 + 1 | 0;\n        if (($wk_max$160 | 0) > 32767) break L13;\n        HEAP16[$pnt2$368 >> 1] = $199;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $199 << 16 >> 16;\n        $204 = $wk_max$160 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($204 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($204 + 1 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($204 + 2 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($204 + 3 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($204 + 4 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($204 + 5 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($204 + 6 << 2) >> 2] = $j$076;\n        $wk_max$2 = $199;\n        break;\n       }\n      }\n      if ($59) {\n       $62 = HEAP32[$labelInfo + 1179664 + ($54 + -1 << 2) >> 2] | 0;\n       $65 = HEAP32[$labelInfo + 1179664 + ($58 + -1 << 2) >> 2] | 0;\n       if (($62 | 0) > ($65 | 0)) {\n        HEAP16[$pnt2$368 >> 1] = $65;\n        if (($wk_max$160 | 0) > 0) {\n         $k$056 = 0;\n         $wk$057 = $18;\n         while (1) {\n          if ((HEAP32[$wk$057 >> 2] | 0) == ($62 | 0)) HEAP32[$wk$057 >> 2] = $65;\n          $k$056 = $k$056 + 1 | 0;\n          if (($k$056 | 0) >= ($wk_max$160 | 0)) {\n           $82 = $65;\n           break;\n          } else $wk$057 = $wk$057 + 4 | 0;\n         }\n        } else $82 = $65;\n       } else {\n        HEAP16[$pnt2$368 >> 1] = $62;\n        if (($62 | 0) < ($65 | 0) & ($wk_max$160 | 0) > 0) {\n         $k$153 = 0;\n         $wk$154 = $18;\n         while (1) {\n          if ((HEAP32[$wk$154 >> 2] | 0) == ($65 | 0)) HEAP32[$wk$154 >> 2] = $62;\n          $k$153 = $k$153 + 1 | 0;\n          if (($k$153 | 0) >= ($wk_max$160 | 0)) {\n           $82 = $62;\n           break;\n          } else $wk$154 = $wk$154 + 4 | 0;\n         }\n        } else $82 = $62;\n       }\n       $84 = ($82 << 16 >> 16) * 7 | 0;\n       $86 = $labelInfo + 1310736 + ($84 + -7 << 2) | 0;\n       HEAP32[$86 >> 2] = (HEAP32[$86 >> 2] | 0) + 1;\n       $90 = $labelInfo + 1310736 + ($84 + -6 << 2) | 0;\n       HEAP32[$90 >> 2] = (HEAP32[$90 >> 2] | 0) + $i$265;\n       $94 = $labelInfo + 1310736 + ($84 + -5 << 2) | 0;\n       HEAP32[$94 >> 2] = (HEAP32[$94 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($84 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $100 = HEAP16[$pnt2$368 + -2 >> 1] | 0;\n      if ($100 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$368 >> 1] = $53;\n       $140 = $54 * 7 | 0;\n       $142 = $labelInfo + 1310736 + ($140 + -7 << 2) | 0;\n       HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + 1;\n       $146 = $labelInfo + 1310736 + ($140 + -6 << 2) | 0;\n       HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $i$265;\n       $150 = $labelInfo + 1310736 + ($140 + -5 << 2) | 0;\n       HEAP32[$150 >> 2] = (HEAP32[$150 >> 2] | 0) + $j$076;\n       $154 = $labelInfo + 1310736 + ($140 + -4 << 2) | 0;\n       if ((HEAP32[$154 >> 2] | 0) > ($i$265 | 0)) HEAP32[$154 >> 2] = $i$265;\n       HEAP32[$labelInfo + 1310736 + ($140 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $105 = HEAP32[$labelInfo + 1179664 + ($54 + -1 << 2) >> 2] | 0;\n      $108 = HEAP32[$labelInfo + 1179664 + (($100 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($105 | 0) > ($108 | 0)) {\n       HEAP16[$pnt2$368 >> 1] = $108;\n       if (($wk_max$160 | 0) > 0) {\n        $k$249 = 0;\n        $wk$250 = $18;\n        while (1) {\n         if ((HEAP32[$wk$250 >> 2] | 0) == ($105 | 0)) HEAP32[$wk$250 >> 2] = $108;\n         $k$249 = $k$249 + 1 | 0;\n         if (($k$249 | 0) >= ($wk_max$160 | 0)) {\n          $125 = $108;\n          break;\n         } else $wk$250 = $wk$250 + 4 | 0;\n        }\n       } else $125 = $108;\n      } else {\n       HEAP16[$pnt2$368 >> 1] = $105;\n       if (($105 | 0) < ($108 | 0) & ($wk_max$160 | 0) > 0) {\n        $k$346 = 0;\n        $wk$347 = $18;\n        while (1) {\n         if ((HEAP32[$wk$347 >> 2] | 0) == ($108 | 0)) HEAP32[$wk$347 >> 2] = $105;\n         $k$346 = $k$346 + 1 | 0;\n         if (($k$346 | 0) >= ($wk_max$160 | 0)) {\n          $125 = $105;\n          break;\n         } else $wk$347 = $wk$347 + 4 | 0;\n        }\n       } else $125 = $105;\n      }\n      $127 = ($125 << 16 >> 16) * 7 | 0;\n      $129 = $labelInfo + 1310736 + ($127 + -7 << 2) | 0;\n      HEAP32[$129 >> 2] = (HEAP32[$129 >> 2] | 0) + 1;\n      $133 = $labelInfo + 1310736 + ($127 + -6 << 2) | 0;\n      HEAP32[$133 >> 2] = (HEAP32[$133 >> 2] | 0) + $i$265;\n      $137 = $labelInfo + 1310736 + ($127 + -5 << 2) | 0;\n      HEAP32[$137 >> 2] = (HEAP32[$137 >> 2] | 0) + $j$076;\n      $wk_max$2 = $wk_max$160;\n     } else {\n      HEAP16[$pnt2$368 >> 1] = 0;\n      HEAP8[$dpnt$167 >> 0] = 0;\n      $wk_max$2 = $wk_max$160;\n     } while (0);\n     $i$265 = $i$265 + 1 | 0;\n     $219 = $pnt$169 + 2 | 0;\n     $220 = $pnt2$368 + 2 | 0;\n     $221 = $dpnt$167 + 1 | 0;\n     if (($i$265 | 0) >= ($11 | 0)) {\n      $dpnt$1$lcssa = $221;\n      $pnt$1$lcssa = $219;\n      $pnt2$3$lcssa = $220;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $dpnt$167 = $221;\n      $pnt$169 = $219;\n      $pnt2$368 = $220;\n      $wk_max$160 = $wk_max$2;\n     }\n    }\n   } else {\n    $dpnt$1$lcssa = $dpnt$078;\n    $pnt$1$lcssa = $pnt$080;\n    $pnt2$3$lcssa = $pnt2$279;\n    $wk_max$1$lcssa = $wk_max$075;\n   }\n   $j$076 = $j$076 + 1 | 0;\n   if (($j$076 | 0) >= ($3 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $dpnt$078 = $dpnt$1$lcssa + 2 | 0;\n    $pnt$080 = $pnt$1$lcssa + $$sum | 0;\n    $pnt2$279 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$075 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $228 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$342 = 1;\n   $j$143 = 1;\n   $wk$444 = $18;\n   while (1) {\n    $230 = HEAP32[$wk$444 >> 2] | 0;\n    if (($230 | 0) == ($i$342 | 0)) {\n     $236 = $j$143;\n     $j$2 = $j$143 + 1 | 0;\n    } else {\n     $236 = HEAP32[$labelInfo + 1179664 + ($230 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$143;\n    }\n    HEAP32[$wk$444 >> 2] = $236;\n    if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$342 = $i$342 + 1 | 0;\n     $j$143 = $j$2;\n     $wk$444 = $wk$444 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $240 = $labelInfo + 8 | 0;\n  $241 = $j$1$lcssa + -1 | 0;\n  HEAP32[$240 >> 2] = $241;\n  if (!$241) $$0 = 0; else {\n   _memset($228 | 0, 0, $241 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $241 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$440 = 0;\n    do {\n     $248 = $i$440 << 2;\n     HEAP32[$labelInfo + 131084 + ($248 << 2) >> 2] = $0;\n     HEAP32[$labelInfo + 131084 + (($248 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($248 | 2) << 2) >> 2] = $1;\n     HEAP32[$labelInfo + 131084 + (($248 | 3) << 2) >> 2] = 0;\n     $i$440 = $i$440 + 1 | 0;\n    } while (($i$440 | 0) < (HEAP32[$240 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$538 = 0;\n    do {\n     $262 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0;\n     $263 = $i$538 * 7 | 0;\n     $266 = $labelInfo + 12 + ($262 << 2) | 0;\n     HEAP32[$266 >> 2] = (HEAP32[$266 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($263 << 2) >> 2] | 0);\n     $273 = $262 << 1;\n     $274 = $labelInfo + 655376 + ($273 << 3) | 0;\n     HEAPF64[$274 >> 3] = +HEAPF64[$274 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($263 + 1 << 2) >> 2] | 0);\n     $282 = $labelInfo + 655376 + (($273 | 1) << 3) | 0;\n     HEAPF64[$282 >> 3] = +HEAPF64[$282 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($263 + 2 << 2) >> 2] | 0);\n     $285 = $262 << 2;\n     $286 = $labelInfo + 131084 + ($285 << 2) | 0;\n     $290 = HEAP32[$labelInfo + 1310736 + ($263 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$286 >> 2] | 0) > ($290 | 0)) HEAP32[$286 >> 2] = $290;\n     $293 = $labelInfo + 131084 + (($285 | 1) << 2) | 0;\n     $297 = HEAP32[$labelInfo + 1310736 + ($263 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$293 >> 2] | 0) < ($297 | 0)) HEAP32[$293 >> 2] = $297;\n     $300 = $labelInfo + 131084 + (($285 | 2) << 2) | 0;\n     $304 = HEAP32[$labelInfo + 1310736 + ($263 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$300 >> 2] | 0) > ($304 | 0)) HEAP32[$300 >> 2] = $304;\n     $307 = $labelInfo + 131084 + (($285 | 3) << 2) | 0;\n     $311 = HEAP32[$labelInfo + 1310736 + ($263 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$307 >> 2] | 0) < ($311 | 0)) HEAP32[$307 >> 2] = $311;\n     $i$538 = $i$538 + 1 | 0;\n    } while (($i$538 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$240 >> 2] | 0) > 0) {\n    $i$637 = 0;\n    do {\n     $315 = $labelInfo + 12 + ($i$637 << 2) | 0;\n     $318 = $i$637 << 1;\n     $319 = $labelInfo + 655376 + ($318 << 3) | 0;\n     HEAPF64[$319 >> 3] = +HEAPF64[$319 >> 3] / +(HEAP32[$315 >> 2] | 0);\n     $325 = $labelInfo + 655376 + (($318 | 1) << 3) | 0;\n     HEAPF64[$325 >> 3] = +HEAPF64[$325 >> 3] / +(HEAP32[$315 >> 2] | 0);\n     $i$637 = $i$637 + 1 | 0;\n    } while (($i$637 | 0) < (HEAP32[$240 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\nfunction _arLabelingSubEBIC($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $100 = 0, $105 = 0, $108 = 0, $11 = 0, $125 = 0, $127 = 0, $129 = 0, $133 = 0, $137 = 0, $140 = 0, $142 = 0, $146 = 0, $150 = 0, $154 = 0, $159 = 0, $161 = 0, $165 = 0, $169 = 0, $173 = 0, $179 = 0, $18 = 0, $182 = 0, $184 = 0, $188 = 0, $19 = 0, $192 = 0, $196 = 0, $199 = 0, $2 = 0, $20 = 0, $204 = 0, $219 = 0, $220 = 0, $221 = 0, $228 = 0, $230 = 0, $236 = 0, $240 = 0, $241 = 0, $248 = 0, $262 = 0, $263 = 0, $266 = 0, $273 = 0, $274 = 0, $282 = 0, $285 = 0, $286 = 0, $29 = 0, $290 = 0, $293 = 0, $297 = 0, $3 = 0, $300 = 0, $304 = 0, $307 = 0, $311 = 0, $315 = 0, $318 = 0, $319 = 0, $325 = 0, $34 = 0, $37 = 0, $39 = 0, $43 = 0, $47 = 0, $53 = 0, $54 = 0, $57 = 0, $58 = 0, $59 = 0, $62 = 0, $65 = 0, $82 = 0, $84 = 0, $86 = 0, $90 = 0, $94 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = ($xsize | 0) / 2 | 0;\n $1 = ($ysize | 0) / 2 | 0;\n $2 = HEAP32[$labelInfo >> 2] | 0;\n $3 = $1 + -1 | 0;\n if (($xsize | 0) > 1) {\n  $i$089 = 0;\n  $pnt1$091 = $2;\n  $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$090 >> 1] = 0;\n   HEAP16[$pnt1$091 >> 1] = 0;\n   $i$089 = $i$089 + 1 | 0;\n   if (($i$089 | 0) >= ($0 | 0)) break; else {\n    $pnt1$091 = $pnt1$091 + 2 | 0;\n    $pnt2$090 = $pnt2$090 + 2 | 0;\n   }\n  }\n }\n $11 = $0 + -1 | 0;\n if (($ysize | 0) > 1) {\n  $i$183 = 0;\n  $pnt1$185 = $2;\n  $pnt2$184 = $2 + ($11 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$184 >> 1] = 0;\n   HEAP16[$pnt1$185 >> 1] = 0;\n   $i$183 = $i$183 + 1 | 0;\n   if (($i$183 | 0) >= ($1 | 0)) break; else {\n    $pnt1$185 = $pnt1$185 + ($0 << 1) | 0;\n    $pnt2$184 = $pnt2$184 + ($0 << 1) | 0;\n   }\n  }\n }\n $18 = $labelInfo + 1179664 | 0;\n $19 = $0 + 1 | 0;\n $20 = 0 - $0 | 0;\n $$sum1 = 1 - $0 | 0;\n $$sum2 = ~$0;\n $$sum = $xsize + 4 | 0;\n L11 : do if (($3 | 0) > 1) {\n  $29 = ($11 | 0) > 1;\n  $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $19 | 0;\n  $j$076 = 1;\n  $pnt$080 = $image + (($xsize << 1) + 2) | 0;\n  $pnt2$279 = $2 + ($19 << 1) | 0;\n  $wk_max$075 = 0;\n  L13 : while (1) {\n   if ($29) {\n    $dpnt$167 = $dpnt$078;\n    $i$265 = 1;\n    $pnt$169 = $pnt$080;\n    $pnt2$368 = $pnt2$279;\n    $wk_max$160 = $wk_max$075;\n    while (1) {\n     do if ((HEAPU8[$pnt$169 >> 0] | 0 | 0) > ($labelingThresh | 0)) {\n      HEAP16[$pnt2$368 >> 1] = 0;\n      HEAP8[$dpnt$167 >> 0] = 0;\n      $wk_max$2 = $wk_max$160;\n     } else {\n      HEAP8[$dpnt$167 >> 0] = -1;\n      $34 = HEAP16[$pnt2$368 + ($20 << 1) >> 1] | 0;\n      if ($34 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$368 >> 1] = $34;\n       $37 = ($34 << 16 >> 16) * 7 | 0;\n       $39 = $labelInfo + 1310736 + ($37 + -7 << 2) | 0;\n       HEAP32[$39 >> 2] = (HEAP32[$39 >> 2] | 0) + 1;\n       $43 = $labelInfo + 1310736 + ($37 + -6 << 2) | 0;\n       HEAP32[$43 >> 2] = (HEAP32[$43 >> 2] | 0) + $i$265;\n       $47 = $labelInfo + 1310736 + ($37 + -5 << 2) | 0;\n       HEAP32[$47 >> 2] = (HEAP32[$47 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($37 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $53 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0;\n      $54 = $53 << 16 >> 16;\n      $57 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0;\n      $58 = $57 << 16 >> 16;\n      $59 = $57 << 16 >> 16 > 0;\n      if ($53 << 16 >> 16 <= 0) {\n       if ($59) {\n        HEAP16[$pnt2$368 >> 1] = $57;\n        $159 = $58 * 7 | 0;\n        $161 = $labelInfo + 1310736 + ($159 + -7 << 2) | 0;\n        HEAP32[$161 >> 2] = (HEAP32[$161 >> 2] | 0) + 1;\n        $165 = $labelInfo + 1310736 + ($159 + -6 << 2) | 0;\n        HEAP32[$165 >> 2] = (HEAP32[$165 >> 2] | 0) + $i$265;\n        $169 = $labelInfo + 1310736 + ($159 + -5 << 2) | 0;\n        HEAP32[$169 >> 2] = (HEAP32[$169 >> 2] | 0) + $j$076;\n        $173 = $labelInfo + 1310736 + ($159 + -3 << 2) | 0;\n        if ((HEAP32[$173 >> 2] | 0) < ($i$265 | 0)) HEAP32[$173 >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($159 + -1 << 2) >> 2] = $j$076;\n        $wk_max$2 = $wk_max$160;\n        break;\n       }\n       $179 = HEAP16[$pnt2$368 + -2 >> 1] | 0;\n       if ($179 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$368 >> 1] = $179;\n        $182 = ($179 << 16 >> 16) * 7 | 0;\n        $184 = $labelInfo + 1310736 + ($182 + -7 << 2) | 0;\n        HEAP32[$184 >> 2] = (HEAP32[$184 >> 2] | 0) + 1;\n        $188 = $labelInfo + 1310736 + ($182 + -6 << 2) | 0;\n        HEAP32[$188 >> 2] = (HEAP32[$188 >> 2] | 0) + $i$265;\n        $192 = $labelInfo + 1310736 + ($182 + -5 << 2) | 0;\n        HEAP32[$192 >> 2] = (HEAP32[$192 >> 2] | 0) + $j$076;\n        $196 = $labelInfo + 1310736 + ($182 + -3 << 2) | 0;\n        if ((HEAP32[$196 >> 2] | 0) >= ($i$265 | 0)) {\n         $wk_max$2 = $wk_max$160;\n         break;\n        }\n        HEAP32[$196 >> 2] = $i$265;\n        $wk_max$2 = $wk_max$160;\n        break;\n       } else {\n        $199 = $wk_max$160 + 1 | 0;\n        if (($wk_max$160 | 0) > 32767) break L13;\n        HEAP16[$pnt2$368 >> 1] = $199;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $199 << 16 >> 16;\n        $204 = $wk_max$160 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($204 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($204 + 1 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($204 + 2 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($204 + 3 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($204 + 4 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($204 + 5 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($204 + 6 << 2) >> 2] = $j$076;\n        $wk_max$2 = $199;\n        break;\n       }\n      }\n      if ($59) {\n       $62 = HEAP32[$labelInfo + 1179664 + ($54 + -1 << 2) >> 2] | 0;\n       $65 = HEAP32[$labelInfo + 1179664 + ($58 + -1 << 2) >> 2] | 0;\n       if (($62 | 0) > ($65 | 0)) {\n        HEAP16[$pnt2$368 >> 1] = $65;\n        if (($wk_max$160 | 0) > 0) {\n         $k$056 = 0;\n         $wk$057 = $18;\n         while (1) {\n          if ((HEAP32[$wk$057 >> 2] | 0) == ($62 | 0)) HEAP32[$wk$057 >> 2] = $65;\n          $k$056 = $k$056 + 1 | 0;\n          if (($k$056 | 0) >= ($wk_max$160 | 0)) {\n           $82 = $65;\n           break;\n          } else $wk$057 = $wk$057 + 4 | 0;\n         }\n        } else $82 = $65;\n       } else {\n        HEAP16[$pnt2$368 >> 1] = $62;\n        if (($62 | 0) < ($65 | 0) & ($wk_max$160 | 0) > 0) {\n         $k$153 = 0;\n         $wk$154 = $18;\n         while (1) {\n          if ((HEAP32[$wk$154 >> 2] | 0) == ($65 | 0)) HEAP32[$wk$154 >> 2] = $62;\n          $k$153 = $k$153 + 1 | 0;\n          if (($k$153 | 0) >= ($wk_max$160 | 0)) {\n           $82 = $62;\n           break;\n          } else $wk$154 = $wk$154 + 4 | 0;\n         }\n        } else $82 = $62;\n       }\n       $84 = ($82 << 16 >> 16) * 7 | 0;\n       $86 = $labelInfo + 1310736 + ($84 + -7 << 2) | 0;\n       HEAP32[$86 >> 2] = (HEAP32[$86 >> 2] | 0) + 1;\n       $90 = $labelInfo + 1310736 + ($84 + -6 << 2) | 0;\n       HEAP32[$90 >> 2] = (HEAP32[$90 >> 2] | 0) + $i$265;\n       $94 = $labelInfo + 1310736 + ($84 + -5 << 2) | 0;\n       HEAP32[$94 >> 2] = (HEAP32[$94 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($84 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $100 = HEAP16[$pnt2$368 + -2 >> 1] | 0;\n      if ($100 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$368 >> 1] = $53;\n       $140 = $54 * 7 | 0;\n       $142 = $labelInfo + 1310736 + ($140 + -7 << 2) | 0;\n       HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + 1;\n       $146 = $labelInfo + 1310736 + ($140 + -6 << 2) | 0;\n       HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $i$265;\n       $150 = $labelInfo + 1310736 + ($140 + -5 << 2) | 0;\n       HEAP32[$150 >> 2] = (HEAP32[$150 >> 2] | 0) + $j$076;\n       $154 = $labelInfo + 1310736 + ($140 + -4 << 2) | 0;\n       if ((HEAP32[$154 >> 2] | 0) > ($i$265 | 0)) HEAP32[$154 >> 2] = $i$265;\n       HEAP32[$labelInfo + 1310736 + ($140 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $105 = HEAP32[$labelInfo + 1179664 + ($54 + -1 << 2) >> 2] | 0;\n      $108 = HEAP32[$labelInfo + 1179664 + (($100 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($105 | 0) > ($108 | 0)) {\n       HEAP16[$pnt2$368 >> 1] = $108;\n       if (($wk_max$160 | 0) > 0) {\n        $k$249 = 0;\n        $wk$250 = $18;\n        while (1) {\n         if ((HEAP32[$wk$250 >> 2] | 0) == ($105 | 0)) HEAP32[$wk$250 >> 2] = $108;\n         $k$249 = $k$249 + 1 | 0;\n         if (($k$249 | 0) >= ($wk_max$160 | 0)) {\n          $125 = $108;\n          break;\n         } else $wk$250 = $wk$250 + 4 | 0;\n        }\n       } else $125 = $108;\n      } else {\n       HEAP16[$pnt2$368 >> 1] = $105;\n       if (($105 | 0) < ($108 | 0) & ($wk_max$160 | 0) > 0) {\n        $k$346 = 0;\n        $wk$347 = $18;\n        while (1) {\n         if ((HEAP32[$wk$347 >> 2] | 0) == ($108 | 0)) HEAP32[$wk$347 >> 2] = $105;\n         $k$346 = $k$346 + 1 | 0;\n         if (($k$346 | 0) >= ($wk_max$160 | 0)) {\n          $125 = $105;\n          break;\n         } else $wk$347 = $wk$347 + 4 | 0;\n        }\n       } else $125 = $105;\n      }\n      $127 = ($125 << 16 >> 16) * 7 | 0;\n      $129 = $labelInfo + 1310736 + ($127 + -7 << 2) | 0;\n      HEAP32[$129 >> 2] = (HEAP32[$129 >> 2] | 0) + 1;\n      $133 = $labelInfo + 1310736 + ($127 + -6 << 2) | 0;\n      HEAP32[$133 >> 2] = (HEAP32[$133 >> 2] | 0) + $i$265;\n      $137 = $labelInfo + 1310736 + ($127 + -5 << 2) | 0;\n      HEAP32[$137 >> 2] = (HEAP32[$137 >> 2] | 0) + $j$076;\n      $wk_max$2 = $wk_max$160;\n     } while (0);\n     $i$265 = $i$265 + 1 | 0;\n     $219 = $pnt$169 + 2 | 0;\n     $220 = $pnt2$368 + 2 | 0;\n     $221 = $dpnt$167 + 1 | 0;\n     if (($i$265 | 0) >= ($11 | 0)) {\n      $dpnt$1$lcssa = $221;\n      $pnt$1$lcssa = $219;\n      $pnt2$3$lcssa = $220;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $dpnt$167 = $221;\n      $pnt$169 = $219;\n      $pnt2$368 = $220;\n      $wk_max$160 = $wk_max$2;\n     }\n    }\n   } else {\n    $dpnt$1$lcssa = $dpnt$078;\n    $pnt$1$lcssa = $pnt$080;\n    $pnt2$3$lcssa = $pnt2$279;\n    $wk_max$1$lcssa = $wk_max$075;\n   }\n   $j$076 = $j$076 + 1 | 0;\n   if (($j$076 | 0) >= ($3 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $dpnt$078 = $dpnt$1$lcssa + 2 | 0;\n    $pnt$080 = $pnt$1$lcssa + $$sum | 0;\n    $pnt2$279 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$075 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $228 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$342 = 1;\n   $j$143 = 1;\n   $wk$444 = $18;\n   while (1) {\n    $230 = HEAP32[$wk$444 >> 2] | 0;\n    if (($230 | 0) == ($i$342 | 0)) {\n     $236 = $j$143;\n     $j$2 = $j$143 + 1 | 0;\n    } else {\n     $236 = HEAP32[$labelInfo + 1179664 + ($230 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$143;\n    }\n    HEAP32[$wk$444 >> 2] = $236;\n    if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$342 = $i$342 + 1 | 0;\n     $j$143 = $j$2;\n     $wk$444 = $wk$444 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $240 = $labelInfo + 8 | 0;\n  $241 = $j$1$lcssa + -1 | 0;\n  HEAP32[$240 >> 2] = $241;\n  if (!$241) $$0 = 0; else {\n   _memset($228 | 0, 0, $241 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $241 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$440 = 0;\n    do {\n     $248 = $i$440 << 2;\n     HEAP32[$labelInfo + 131084 + ($248 << 2) >> 2] = $0;\n     HEAP32[$labelInfo + 131084 + (($248 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($248 | 2) << 2) >> 2] = $1;\n     HEAP32[$labelInfo + 131084 + (($248 | 3) << 2) >> 2] = 0;\n     $i$440 = $i$440 + 1 | 0;\n    } while (($i$440 | 0) < (HEAP32[$240 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$538 = 0;\n    do {\n     $262 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0;\n     $263 = $i$538 * 7 | 0;\n     $266 = $labelInfo + 12 + ($262 << 2) | 0;\n     HEAP32[$266 >> 2] = (HEAP32[$266 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($263 << 2) >> 2] | 0);\n     $273 = $262 << 1;\n     $274 = $labelInfo + 655376 + ($273 << 3) | 0;\n     HEAPF64[$274 >> 3] = +HEAPF64[$274 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($263 + 1 << 2) >> 2] | 0);\n     $282 = $labelInfo + 655376 + (($273 | 1) << 3) | 0;\n     HEAPF64[$282 >> 3] = +HEAPF64[$282 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($263 + 2 << 2) >> 2] | 0);\n     $285 = $262 << 2;\n     $286 = $labelInfo + 131084 + ($285 << 2) | 0;\n     $290 = HEAP32[$labelInfo + 1310736 + ($263 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$286 >> 2] | 0) > ($290 | 0)) HEAP32[$286 >> 2] = $290;\n     $293 = $labelInfo + 131084 + (($285 | 1) << 2) | 0;\n     $297 = HEAP32[$labelInfo + 1310736 + ($263 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$293 >> 2] | 0) < ($297 | 0)) HEAP32[$293 >> 2] = $297;\n     $300 = $labelInfo + 131084 + (($285 | 2) << 2) | 0;\n     $304 = HEAP32[$labelInfo + 1310736 + ($263 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$300 >> 2] | 0) > ($304 | 0)) HEAP32[$300 >> 2] = $304;\n     $307 = $labelInfo + 131084 + (($285 | 3) << 2) | 0;\n     $311 = HEAP32[$labelInfo + 1310736 + ($263 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$307 >> 2] | 0) < ($311 | 0)) HEAP32[$307 >> 2] = $311;\n     $i$538 = $i$538 + 1 | 0;\n    } while (($i$538 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$240 >> 2] | 0) > 0) {\n    $i$637 = 0;\n    do {\n     $315 = $labelInfo + 12 + ($i$637 << 2) | 0;\n     $318 = $i$637 << 1;\n     $319 = $labelInfo + 655376 + ($318 << 3) | 0;\n     HEAPF64[$319 >> 3] = +HEAPF64[$319 >> 3] / +(HEAP32[$315 >> 2] | 0);\n     $325 = $labelInfo + 655376 + (($318 | 1) << 3) | 0;\n     HEAPF64[$325 >> 3] = +HEAPF64[$325 >> 3] / +(HEAP32[$315 >> 2] | 0);\n     $i$637 = $i$637 + 1 | 0;\n    } while (($i$637 | 0) < (HEAP32[$240 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubEWRCY($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $103 = 0, $106 = 0, $123 = 0, $125 = 0, $127 = 0, $131 = 0, $135 = 0, $138 = 0, $140 = 0, $144 = 0, $148 = 0, $152 = 0, $157 = 0, $159 = 0, $16 = 0, $163 = 0, $167 = 0, $17 = 0, $171 = 0, $177 = 0, $18 = 0, $180 = 0, $182 = 0, $186 = 0, $190 = 0, $194 = 0, $197 = 0, $202 = 0, $217 = 0, $218 = 0, $219 = 0, $226 = 0, $228 = 0, $234 = 0, $238 = 0, $239 = 0, $246 = 0, $26 = 0, $260 = 0, $261 = 0, $264 = 0, $271 = 0, $272 = 0, $280 = 0, $283 = 0, $284 = 0, $288 = 0, $291 = 0, $295 = 0, $298 = 0, $302 = 0, $305 = 0, $309 = 0, $313 = 0, $316 = 0, $317 = 0, $32 = 0, $323 = 0, $35 = 0, $37 = 0, $41 = 0, $45 = 0, $51 = 0, $52 = 0, $55 = 0, $56 = 0, $57 = 0, $60 = 0, $63 = 0, $80 = 0, $82 = 0, $84 = 0, $88 = 0, $9 = 0, $92 = 0, $98 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$088 = 0;\n  $pnt1$090 = $0;\n  $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$089 >> 1] = 0;\n   HEAP16[$pnt1$090 >> 1] = 0;\n   $i$088 = $i$088 + 1 | 0;\n   if (($i$088 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$090 = $pnt1$090 + 2 | 0;\n    $pnt2$089 = $pnt2$089 + 2 | 0;\n   }\n  }\n }\n $9 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$182 = 0;\n  $pnt1$184 = $0;\n  $pnt2$183 = $0 + ($9 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$183 >> 1] = 0;\n   HEAP16[$pnt1$184 >> 1] = 0;\n   $i$182 = $i$182 + 1 | 0;\n   if (($i$182 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;\n    $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0;\n   }\n  }\n }\n $16 = $labelInfo + 1179664 | 0;\n $17 = $xsize + 1 | 0;\n $18 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $26 = ($9 | 0) > 1;\n  $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $17 | 0;\n  $j$075 = 1;\n  $pnt$079 = $image + ($17 << 1) | 0;\n  $pnt2$278 = $0 + ($17 << 1) | 0;\n  $wk_max$074 = 0;\n  L13 : while (1) {\n   if ($26) {\n    $dpnt$166 = $dpnt$077;\n    $i$264 = 1;\n    $pnt$168 = $pnt$079;\n    $pnt2$367 = $pnt2$278;\n    $wk_max$159 = $wk_max$074;\n    while (1) {\n     do if ((HEAPU8[$pnt$168 + 1 >> 0] | 0 | 0) > ($labelingThresh | 0)) {\n      HEAP8[$dpnt$166 >> 0] = -1;\n      $32 = HEAP16[$pnt2$367 + ($18 << 1) >> 1] | 0;\n      if ($32 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$367 >> 1] = $32;\n       $35 = ($32 << 16 >> 16) * 7 | 0;\n       $37 = $labelInfo + 1310736 + ($35 + -7 << 2) | 0;\n       HEAP32[$37 >> 2] = (HEAP32[$37 >> 2] | 0) + 1;\n       $41 = $labelInfo + 1310736 + ($35 + -6 << 2) | 0;\n       HEAP32[$41 >> 2] = (HEAP32[$41 >> 2] | 0) + $i$264;\n       $45 = $labelInfo + 1310736 + ($35 + -5 << 2) | 0;\n       HEAP32[$45 >> 2] = (HEAP32[$45 >> 2] | 0) + $j$075;\n       HEAP32[$labelInfo + 1310736 + ($35 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $51 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0;\n      $52 = $51 << 16 >> 16;\n      $55 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0;\n      $56 = $55 << 16 >> 16;\n      $57 = $55 << 16 >> 16 > 0;\n      if ($51 << 16 >> 16 <= 0) {\n       if ($57) {\n        HEAP16[$pnt2$367 >> 1] = $55;\n        $157 = $56 * 7 | 0;\n        $159 = $labelInfo + 1310736 + ($157 + -7 << 2) | 0;\n        HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + 1;\n        $163 = $labelInfo + 1310736 + ($157 + -6 << 2) | 0;\n        HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + $i$264;\n        $167 = $labelInfo + 1310736 + ($157 + -5 << 2) | 0;\n        HEAP32[$167 >> 2] = (HEAP32[$167 >> 2] | 0) + $j$075;\n        $171 = $labelInfo + 1310736 + ($157 + -3 << 2) | 0;\n        if ((HEAP32[$171 >> 2] | 0) < ($i$264 | 0)) HEAP32[$171 >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($157 + -1 << 2) >> 2] = $j$075;\n        $wk_max$2 = $wk_max$159;\n        break;\n       }\n       $177 = HEAP16[$pnt2$367 + -2 >> 1] | 0;\n       if ($177 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$367 >> 1] = $177;\n        $180 = ($177 << 16 >> 16) * 7 | 0;\n        $182 = $labelInfo + 1310736 + ($180 + -7 << 2) | 0;\n        HEAP32[$182 >> 2] = (HEAP32[$182 >> 2] | 0) + 1;\n        $186 = $labelInfo + 1310736 + ($180 + -6 << 2) | 0;\n        HEAP32[$186 >> 2] = (HEAP32[$186 >> 2] | 0) + $i$264;\n        $190 = $labelInfo + 1310736 + ($180 + -5 << 2) | 0;\n        HEAP32[$190 >> 2] = (HEAP32[$190 >> 2] | 0) + $j$075;\n        $194 = $labelInfo + 1310736 + ($180 + -3 << 2) | 0;\n        if ((HEAP32[$194 >> 2] | 0) >= ($i$264 | 0)) {\n         $wk_max$2 = $wk_max$159;\n         break;\n        }\n        HEAP32[$194 >> 2] = $i$264;\n        $wk_max$2 = $wk_max$159;\n        break;\n       } else {\n        $197 = $wk_max$159 + 1 | 0;\n        if (($wk_max$159 | 0) > 32767) break L13;\n        HEAP16[$pnt2$367 >> 1] = $197;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $197 << 16 >> 16;\n        $202 = $wk_max$159 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($202 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($202 + 1 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($202 + 2 << 2) >> 2] = $j$075;\n        HEAP32[$labelInfo + 1310736 + ($202 + 3 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($202 + 4 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($202 + 5 << 2) >> 2] = $j$075;\n        HEAP32[$labelInfo + 1310736 + ($202 + 6 << 2) >> 2] = $j$075;\n        $wk_max$2 = $197;\n        break;\n       }\n      }\n      if ($57) {\n       $60 = HEAP32[$labelInfo + 1179664 + ($52 + -1 << 2) >> 2] | 0;\n       $63 = HEAP32[$labelInfo + 1179664 + ($56 + -1 << 2) >> 2] | 0;\n       if (($60 | 0) > ($63 | 0)) {\n        HEAP16[$pnt2$367 >> 1] = $63;\n        if (($wk_max$159 | 0) > 0) {\n         $k$055 = 0;\n         $wk$056 = $16;\n         while (1) {\n          if ((HEAP32[$wk$056 >> 2] | 0) == ($60 | 0)) HEAP32[$wk$056 >> 2] = $63;\n          $k$055 = $k$055 + 1 | 0;\n          if (($k$055 | 0) >= ($wk_max$159 | 0)) {\n           $80 = $63;\n           break;\n          } else $wk$056 = $wk$056 + 4 | 0;\n         }\n        } else $80 = $63;\n       } else {\n        HEAP16[$pnt2$367 >> 1] = $60;\n        if (($60 | 0) < ($63 | 0) & ($wk_max$159 | 0) > 0) {\n         $k$152 = 0;\n         $wk$153 = $16;\n         while (1) {\n          if ((HEAP32[$wk$153 >> 2] | 0) == ($63 | 0)) HEAP32[$wk$153 >> 2] = $60;\n          $k$152 = $k$152 + 1 | 0;\n          if (($k$152 | 0) >= ($wk_max$159 | 0)) {\n           $80 = $60;\n           break;\n          } else $wk$153 = $wk$153 + 4 | 0;\n         }\n        } else $80 = $60;\n       }\n       $82 = ($80 << 16 >> 16) * 7 | 0;\n       $84 = $labelInfo + 1310736 + ($82 + -7 << 2) | 0;\n       HEAP32[$84 >> 2] = (HEAP32[$84 >> 2] | 0) + 1;\n       $88 = $labelInfo + 1310736 + ($82 + -6 << 2) | 0;\n       HEAP32[$88 >> 2] = (HEAP32[$88 >> 2] | 0) + $i$264;\n       $92 = $labelInfo + 1310736 + ($82 + -5 << 2) | 0;\n       HEAP32[$92 >> 2] = (HEAP32[$92 >> 2] | 0) + $j$075;\n       HEAP32[$labelInfo + 1310736 + ($82 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $98 = HEAP16[$pnt2$367 + -2 >> 1] | 0;\n      if ($98 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$367 >> 1] = $51;\n       $138 = $52 * 7 | 0;\n       $140 = $labelInfo + 1310736 + ($138 + -7 << 2) | 0;\n       HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + 1;\n       $144 = $labelInfo + 1310736 + ($138 + -6 << 2) | 0;\n       HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $i$264;\n       $148 = $labelInfo + 1310736 + ($138 + -5 << 2) | 0;\n       HEAP32[$148 >> 2] = (HEAP32[$148 >> 2] | 0) + $j$075;\n       $152 = $labelInfo + 1310736 + ($138 + -4 << 2) | 0;\n       if ((HEAP32[$152 >> 2] | 0) > ($i$264 | 0)) HEAP32[$152 >> 2] = $i$264;\n       HEAP32[$labelInfo + 1310736 + ($138 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $103 = HEAP32[$labelInfo + 1179664 + ($52 + -1 << 2) >> 2] | 0;\n      $106 = HEAP32[$labelInfo + 1179664 + (($98 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($103 | 0) > ($106 | 0)) {\n       HEAP16[$pnt2$367 >> 1] = $106;\n       if (($wk_max$159 | 0) > 0) {\n        $k$248 = 0;\n        $wk$249 = $16;\n        while (1) {\n         if ((HEAP32[$wk$249 >> 2] | 0) == ($103 | 0)) HEAP32[$wk$249 >> 2] = $106;\n         $k$248 = $k$248 + 1 | 0;\n         if (($k$248 | 0) >= ($wk_max$159 | 0)) {\n          $123 = $106;\n          break;\n         } else $wk$249 = $wk$249 + 4 | 0;\n        }\n       } else $123 = $106;\n      } else {\n       HEAP16[$pnt2$367 >> 1] = $103;\n       if (($103 | 0) < ($106 | 0) & ($wk_max$159 | 0) > 0) {\n        $k$345 = 0;\n        $wk$346 = $16;\n        while (1) {\n         if ((HEAP32[$wk$346 >> 2] | 0) == ($106 | 0)) HEAP32[$wk$346 >> 2] = $103;\n         $k$345 = $k$345 + 1 | 0;\n         if (($k$345 | 0) >= ($wk_max$159 | 0)) {\n          $123 = $103;\n          break;\n         } else $wk$346 = $wk$346 + 4 | 0;\n        }\n       } else $123 = $103;\n      }\n      $125 = ($123 << 16 >> 16) * 7 | 0;\n      $127 = $labelInfo + 1310736 + ($125 + -7 << 2) | 0;\n      HEAP32[$127 >> 2] = (HEAP32[$127 >> 2] | 0) + 1;\n      $131 = $labelInfo + 1310736 + ($125 + -6 << 2) | 0;\n      HEAP32[$131 >> 2] = (HEAP32[$131 >> 2] | 0) + $i$264;\n      $135 = $labelInfo + 1310736 + ($125 + -5 << 2) | 0;\n      HEAP32[$135 >> 2] = (HEAP32[$135 >> 2] | 0) + $j$075;\n      $wk_max$2 = $wk_max$159;\n     } else {\n      HEAP16[$pnt2$367 >> 1] = 0;\n      HEAP8[$dpnt$166 >> 0] = 0;\n      $wk_max$2 = $wk_max$159;\n     } while (0);\n     $i$264 = $i$264 + 1 | 0;\n     $217 = $pnt$168 + 2 | 0;\n     $218 = $pnt2$367 + 2 | 0;\n     $219 = $dpnt$166 + 1 | 0;\n     if (($i$264 | 0) >= ($9 | 0)) {\n      $dpnt$1$lcssa = $219;\n      $pnt$1$lcssa = $217;\n      $pnt2$3$lcssa = $218;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $dpnt$166 = $219;\n      $pnt$168 = $217;\n      $pnt2$367 = $218;\n      $wk_max$159 = $wk_max$2;\n     }\n    }\n   } else {\n    $dpnt$1$lcssa = $dpnt$077;\n    $pnt$1$lcssa = $pnt$079;\n    $pnt2$3$lcssa = $pnt2$278;\n    $wk_max$1$lcssa = $wk_max$074;\n   }\n   $j$075 = $j$075 + 1 | 0;\n   if (($j$075 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $dpnt$077 = $dpnt$1$lcssa + 2 | 0;\n    $pnt$079 = $pnt$1$lcssa + 4 | 0;\n    $pnt2$278 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$074 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $226 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$341 = 1;\n   $j$142 = 1;\n   $wk$443 = $16;\n   while (1) {\n    $228 = HEAP32[$wk$443 >> 2] | 0;\n    if (($228 | 0) == ($i$341 | 0)) {\n     $234 = $j$142;\n     $j$2 = $j$142 + 1 | 0;\n    } else {\n     $234 = HEAP32[$labelInfo + 1179664 + ($228 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$142;\n    }\n    HEAP32[$wk$443 >> 2] = $234;\n    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$341 = $i$341 + 1 | 0;\n     $j$142 = $j$2;\n     $wk$443 = $wk$443 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $238 = $labelInfo + 8 | 0;\n  $239 = $j$1$lcssa + -1 | 0;\n  HEAP32[$238 >> 2] = $239;\n  if (!$239) $$0 = 0; else {\n   _memset($226 | 0, 0, $239 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $239 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$439 = 0;\n    do {\n     $246 = $i$439 << 2;\n     HEAP32[$labelInfo + 131084 + ($246 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($246 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($246 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($246 | 3) << 2) >> 2] = 0;\n     $i$439 = $i$439 + 1 | 0;\n    } while (($i$439 | 0) < (HEAP32[$238 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$537 = 0;\n    do {\n     $260 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;\n     $261 = $i$537 * 7 | 0;\n     $264 = $labelInfo + 12 + ($260 << 2) | 0;\n     HEAP32[$264 >> 2] = (HEAP32[$264 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($261 << 2) >> 2] | 0);\n     $271 = $260 << 1;\n     $272 = $labelInfo + 655376 + ($271 << 3) | 0;\n     HEAPF64[$272 >> 3] = +HEAPF64[$272 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($261 + 1 << 2) >> 2] | 0);\n     $280 = $labelInfo + 655376 + (($271 | 1) << 3) | 0;\n     HEAPF64[$280 >> 3] = +HEAPF64[$280 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($261 + 2 << 2) >> 2] | 0);\n     $283 = $260 << 2;\n     $284 = $labelInfo + 131084 + ($283 << 2) | 0;\n     $288 = HEAP32[$labelInfo + 1310736 + ($261 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$284 >> 2] | 0) > ($288 | 0)) HEAP32[$284 >> 2] = $288;\n     $291 = $labelInfo + 131084 + (($283 | 1) << 2) | 0;\n     $295 = HEAP32[$labelInfo + 1310736 + ($261 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$291 >> 2] | 0) < ($295 | 0)) HEAP32[$291 >> 2] = $295;\n     $298 = $labelInfo + 131084 + (($283 | 2) << 2) | 0;\n     $302 = HEAP32[$labelInfo + 1310736 + ($261 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$298 >> 2] | 0) > ($302 | 0)) HEAP32[$298 >> 2] = $302;\n     $305 = $labelInfo + 131084 + (($283 | 3) << 2) | 0;\n     $309 = HEAP32[$labelInfo + 1310736 + ($261 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$305 >> 2] | 0) < ($309 | 0)) HEAP32[$305 >> 2] = $309;\n     $i$537 = $i$537 + 1 | 0;\n    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$238 >> 2] | 0) > 0) {\n    $i$636 = 0;\n    do {\n     $313 = $labelInfo + 12 + ($i$636 << 2) | 0;\n     $316 = $i$636 << 1;\n     $317 = $labelInfo + 655376 + ($316 << 3) | 0;\n     HEAPF64[$317 >> 3] = +HEAPF64[$317 >> 3] / +(HEAP32[$313 >> 2] | 0);\n     $323 = $labelInfo + 655376 + (($316 | 1) << 3) | 0;\n     HEAPF64[$323 >> 3] = +HEAPF64[$323 >> 3] / +(HEAP32[$313 >> 2] | 0);\n     $i$636 = $i$636 + 1 | 0;\n    } while (($i$636 | 0) < (HEAP32[$238 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubEBRCY($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $103 = 0, $106 = 0, $123 = 0, $125 = 0, $127 = 0, $131 = 0, $135 = 0, $138 = 0, $140 = 0, $144 = 0, $148 = 0, $152 = 0, $157 = 0, $159 = 0, $16 = 0, $163 = 0, $167 = 0, $17 = 0, $171 = 0, $177 = 0, $18 = 0, $180 = 0, $182 = 0, $186 = 0, $190 = 0, $194 = 0, $197 = 0, $202 = 0, $217 = 0, $218 = 0, $219 = 0, $226 = 0, $228 = 0, $234 = 0, $238 = 0, $239 = 0, $246 = 0, $26 = 0, $260 = 0, $261 = 0, $264 = 0, $271 = 0, $272 = 0, $280 = 0, $283 = 0, $284 = 0, $288 = 0, $291 = 0, $295 = 0, $298 = 0, $302 = 0, $305 = 0, $309 = 0, $313 = 0, $316 = 0, $317 = 0, $32 = 0, $323 = 0, $35 = 0, $37 = 0, $41 = 0, $45 = 0, $51 = 0, $52 = 0, $55 = 0, $56 = 0, $57 = 0, $60 = 0, $63 = 0, $80 = 0, $82 = 0, $84 = 0, $88 = 0, $9 = 0, $92 = 0, $98 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$088 = 0;\n  $pnt1$090 = $0;\n  $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$089 >> 1] = 0;\n   HEAP16[$pnt1$090 >> 1] = 0;\n   $i$088 = $i$088 + 1 | 0;\n   if (($i$088 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$090 = $pnt1$090 + 2 | 0;\n    $pnt2$089 = $pnt2$089 + 2 | 0;\n   }\n  }\n }\n $9 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$182 = 0;\n  $pnt1$184 = $0;\n  $pnt2$183 = $0 + ($9 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$183 >> 1] = 0;\n   HEAP16[$pnt1$184 >> 1] = 0;\n   $i$182 = $i$182 + 1 | 0;\n   if (($i$182 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;\n    $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0;\n   }\n  }\n }\n $16 = $labelInfo + 1179664 | 0;\n $17 = $xsize + 1 | 0;\n $18 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $26 = ($9 | 0) > 1;\n  $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $17 | 0;\n  $j$075 = 1;\n  $pnt$079 = $image + ($17 << 1) | 0;\n  $pnt2$278 = $0 + ($17 << 1) | 0;\n  $wk_max$074 = 0;\n  L13 : while (1) {\n   if ($26) {\n    $dpnt$166 = $dpnt$077;\n    $i$264 = 1;\n    $pnt$168 = $pnt$079;\n    $pnt2$367 = $pnt2$278;\n    $wk_max$159 = $wk_max$074;\n    while (1) {\n     do if ((HEAPU8[$pnt$168 + 1 >> 0] | 0 | 0) > ($labelingThresh | 0)) {\n      HEAP16[$pnt2$367 >> 1] = 0;\n      HEAP8[$dpnt$166 >> 0] = 0;\n      $wk_max$2 = $wk_max$159;\n     } else {\n      HEAP8[$dpnt$166 >> 0] = -1;\n      $32 = HEAP16[$pnt2$367 + ($18 << 1) >> 1] | 0;\n      if ($32 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$367 >> 1] = $32;\n       $35 = ($32 << 16 >> 16) * 7 | 0;\n       $37 = $labelInfo + 1310736 + ($35 + -7 << 2) | 0;\n       HEAP32[$37 >> 2] = (HEAP32[$37 >> 2] | 0) + 1;\n       $41 = $labelInfo + 1310736 + ($35 + -6 << 2) | 0;\n       HEAP32[$41 >> 2] = (HEAP32[$41 >> 2] | 0) + $i$264;\n       $45 = $labelInfo + 1310736 + ($35 + -5 << 2) | 0;\n       HEAP32[$45 >> 2] = (HEAP32[$45 >> 2] | 0) + $j$075;\n       HEAP32[$labelInfo + 1310736 + ($35 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $51 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0;\n      $52 = $51 << 16 >> 16;\n      $55 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0;\n      $56 = $55 << 16 >> 16;\n      $57 = $55 << 16 >> 16 > 0;\n      if ($51 << 16 >> 16 <= 0) {\n       if ($57) {\n        HEAP16[$pnt2$367 >> 1] = $55;\n        $157 = $56 * 7 | 0;\n        $159 = $labelInfo + 1310736 + ($157 + -7 << 2) | 0;\n        HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + 1;\n        $163 = $labelInfo + 1310736 + ($157 + -6 << 2) | 0;\n        HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + $i$264;\n        $167 = $labelInfo + 1310736 + ($157 + -5 << 2) | 0;\n        HEAP32[$167 >> 2] = (HEAP32[$167 >> 2] | 0) + $j$075;\n        $171 = $labelInfo + 1310736 + ($157 + -3 << 2) | 0;\n        if ((HEAP32[$171 >> 2] | 0) < ($i$264 | 0)) HEAP32[$171 >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($157 + -1 << 2) >> 2] = $j$075;\n        $wk_max$2 = $wk_max$159;\n        break;\n       }\n       $177 = HEAP16[$pnt2$367 + -2 >> 1] | 0;\n       if ($177 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$367 >> 1] = $177;\n        $180 = ($177 << 16 >> 16) * 7 | 0;\n        $182 = $labelInfo + 1310736 + ($180 + -7 << 2) | 0;\n        HEAP32[$182 >> 2] = (HEAP32[$182 >> 2] | 0) + 1;\n        $186 = $labelInfo + 1310736 + ($180 + -6 << 2) | 0;\n        HEAP32[$186 >> 2] = (HEAP32[$186 >> 2] | 0) + $i$264;\n        $190 = $labelInfo + 1310736 + ($180 + -5 << 2) | 0;\n        HEAP32[$190 >> 2] = (HEAP32[$190 >> 2] | 0) + $j$075;\n        $194 = $labelInfo + 1310736 + ($180 + -3 << 2) | 0;\n        if ((HEAP32[$194 >> 2] | 0) >= ($i$264 | 0)) {\n         $wk_max$2 = $wk_max$159;\n         break;\n        }\n        HEAP32[$194 >> 2] = $i$264;\n        $wk_max$2 = $wk_max$159;\n        break;\n       } else {\n        $197 = $wk_max$159 + 1 | 0;\n        if (($wk_max$159 | 0) > 32767) break L13;\n        HEAP16[$pnt2$367 >> 1] = $197;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $197 << 16 >> 16;\n        $202 = $wk_max$159 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($202 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($202 + 1 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($202 + 2 << 2) >> 2] = $j$075;\n        HEAP32[$labelInfo + 1310736 + ($202 + 3 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($202 + 4 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($202 + 5 << 2) >> 2] = $j$075;\n        HEAP32[$labelInfo + 1310736 + ($202 + 6 << 2) >> 2] = $j$075;\n        $wk_max$2 = $197;\n        break;\n       }\n      }\n      if ($57) {\n       $60 = HEAP32[$labelInfo + 1179664 + ($52 + -1 << 2) >> 2] | 0;\n       $63 = HEAP32[$labelInfo + 1179664 + ($56 + -1 << 2) >> 2] | 0;\n       if (($60 | 0) > ($63 | 0)) {\n        HEAP16[$pnt2$367 >> 1] = $63;\n        if (($wk_max$159 | 0) > 0) {\n         $k$055 = 0;\n         $wk$056 = $16;\n         while (1) {\n          if ((HEAP32[$wk$056 >> 2] | 0) == ($60 | 0)) HEAP32[$wk$056 >> 2] = $63;\n          $k$055 = $k$055 + 1 | 0;\n          if (($k$055 | 0) >= ($wk_max$159 | 0)) {\n           $80 = $63;\n           break;\n          } else $wk$056 = $wk$056 + 4 | 0;\n         }\n        } else $80 = $63;\n       } else {\n        HEAP16[$pnt2$367 >> 1] = $60;\n        if (($60 | 0) < ($63 | 0) & ($wk_max$159 | 0) > 0) {\n         $k$152 = 0;\n         $wk$153 = $16;\n         while (1) {\n          if ((HEAP32[$wk$153 >> 2] | 0) == ($63 | 0)) HEAP32[$wk$153 >> 2] = $60;\n          $k$152 = $k$152 + 1 | 0;\n          if (($k$152 | 0) >= ($wk_max$159 | 0)) {\n           $80 = $60;\n           break;\n          } else $wk$153 = $wk$153 + 4 | 0;\n         }\n        } else $80 = $60;\n       }\n       $82 = ($80 << 16 >> 16) * 7 | 0;\n       $84 = $labelInfo + 1310736 + ($82 + -7 << 2) | 0;\n       HEAP32[$84 >> 2] = (HEAP32[$84 >> 2] | 0) + 1;\n       $88 = $labelInfo + 1310736 + ($82 + -6 << 2) | 0;\n       HEAP32[$88 >> 2] = (HEAP32[$88 >> 2] | 0) + $i$264;\n       $92 = $labelInfo + 1310736 + ($82 + -5 << 2) | 0;\n       HEAP32[$92 >> 2] = (HEAP32[$92 >> 2] | 0) + $j$075;\n       HEAP32[$labelInfo + 1310736 + ($82 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $98 = HEAP16[$pnt2$367 + -2 >> 1] | 0;\n      if ($98 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$367 >> 1] = $51;\n       $138 = $52 * 7 | 0;\n       $140 = $labelInfo + 1310736 + ($138 + -7 << 2) | 0;\n       HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + 1;\n       $144 = $labelInfo + 1310736 + ($138 + -6 << 2) | 0;\n       HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $i$264;\n       $148 = $labelInfo + 1310736 + ($138 + -5 << 2) | 0;\n       HEAP32[$148 >> 2] = (HEAP32[$148 >> 2] | 0) + $j$075;\n       $152 = $labelInfo + 1310736 + ($138 + -4 << 2) | 0;\n       if ((HEAP32[$152 >> 2] | 0) > ($i$264 | 0)) HEAP32[$152 >> 2] = $i$264;\n       HEAP32[$labelInfo + 1310736 + ($138 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $103 = HEAP32[$labelInfo + 1179664 + ($52 + -1 << 2) >> 2] | 0;\n      $106 = HEAP32[$labelInfo + 1179664 + (($98 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($103 | 0) > ($106 | 0)) {\n       HEAP16[$pnt2$367 >> 1] = $106;\n       if (($wk_max$159 | 0) > 0) {\n        $k$248 = 0;\n        $wk$249 = $16;\n        while (1) {\n         if ((HEAP32[$wk$249 >> 2] | 0) == ($103 | 0)) HEAP32[$wk$249 >> 2] = $106;\n         $k$248 = $k$248 + 1 | 0;\n         if (($k$248 | 0) >= ($wk_max$159 | 0)) {\n          $123 = $106;\n          break;\n         } else $wk$249 = $wk$249 + 4 | 0;\n        }\n       } else $123 = $106;\n      } else {\n       HEAP16[$pnt2$367 >> 1] = $103;\n       if (($103 | 0) < ($106 | 0) & ($wk_max$159 | 0) > 0) {\n        $k$345 = 0;\n        $wk$346 = $16;\n        while (1) {\n         if ((HEAP32[$wk$346 >> 2] | 0) == ($106 | 0)) HEAP32[$wk$346 >> 2] = $103;\n         $k$345 = $k$345 + 1 | 0;\n         if (($k$345 | 0) >= ($wk_max$159 | 0)) {\n          $123 = $103;\n          break;\n         } else $wk$346 = $wk$346 + 4 | 0;\n        }\n       } else $123 = $103;\n      }\n      $125 = ($123 << 16 >> 16) * 7 | 0;\n      $127 = $labelInfo + 1310736 + ($125 + -7 << 2) | 0;\n      HEAP32[$127 >> 2] = (HEAP32[$127 >> 2] | 0) + 1;\n      $131 = $labelInfo + 1310736 + ($125 + -6 << 2) | 0;\n      HEAP32[$131 >> 2] = (HEAP32[$131 >> 2] | 0) + $i$264;\n      $135 = $labelInfo + 1310736 + ($125 + -5 << 2) | 0;\n      HEAP32[$135 >> 2] = (HEAP32[$135 >> 2] | 0) + $j$075;\n      $wk_max$2 = $wk_max$159;\n     } while (0);\n     $i$264 = $i$264 + 1 | 0;\n     $217 = $pnt$168 + 2 | 0;\n     $218 = $pnt2$367 + 2 | 0;\n     $219 = $dpnt$166 + 1 | 0;\n     if (($i$264 | 0) >= ($9 | 0)) {\n      $dpnt$1$lcssa = $219;\n      $pnt$1$lcssa = $217;\n      $pnt2$3$lcssa = $218;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $dpnt$166 = $219;\n      $pnt$168 = $217;\n      $pnt2$367 = $218;\n      $wk_max$159 = $wk_max$2;\n     }\n    }\n   } else {\n    $dpnt$1$lcssa = $dpnt$077;\n    $pnt$1$lcssa = $pnt$079;\n    $pnt2$3$lcssa = $pnt2$278;\n    $wk_max$1$lcssa = $wk_max$074;\n   }\n   $j$075 = $j$075 + 1 | 0;\n   if (($j$075 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $dpnt$077 = $dpnt$1$lcssa + 2 | 0;\n    $pnt$079 = $pnt$1$lcssa + 4 | 0;\n    $pnt2$278 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$074 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $226 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$341 = 1;\n   $j$142 = 1;\n   $wk$443 = $16;\n   while (1) {\n    $228 = HEAP32[$wk$443 >> 2] | 0;\n    if (($228 | 0) == ($i$341 | 0)) {\n     $234 = $j$142;\n     $j$2 = $j$142 + 1 | 0;\n    } else {\n     $234 = HEAP32[$labelInfo + 1179664 + ($228 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$142;\n    }\n    HEAP32[$wk$443 >> 2] = $234;\n    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$341 = $i$341 + 1 | 0;\n     $j$142 = $j$2;\n     $wk$443 = $wk$443 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $238 = $labelInfo + 8 | 0;\n  $239 = $j$1$lcssa + -1 | 0;\n  HEAP32[$238 >> 2] = $239;\n  if (!$239) $$0 = 0; else {\n   _memset($226 | 0, 0, $239 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $239 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$439 = 0;\n    do {\n     $246 = $i$439 << 2;\n     HEAP32[$labelInfo + 131084 + ($246 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($246 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($246 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($246 | 3) << 2) >> 2] = 0;\n     $i$439 = $i$439 + 1 | 0;\n    } while (($i$439 | 0) < (HEAP32[$238 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$537 = 0;\n    do {\n     $260 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;\n     $261 = $i$537 * 7 | 0;\n     $264 = $labelInfo + 12 + ($260 << 2) | 0;\n     HEAP32[$264 >> 2] = (HEAP32[$264 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($261 << 2) >> 2] | 0);\n     $271 = $260 << 1;\n     $272 = $labelInfo + 655376 + ($271 << 3) | 0;\n     HEAPF64[$272 >> 3] = +HEAPF64[$272 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($261 + 1 << 2) >> 2] | 0);\n     $280 = $labelInfo + 655376 + (($271 | 1) << 3) | 0;\n     HEAPF64[$280 >> 3] = +HEAPF64[$280 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($261 + 2 << 2) >> 2] | 0);\n     $283 = $260 << 2;\n     $284 = $labelInfo + 131084 + ($283 << 2) | 0;\n     $288 = HEAP32[$labelInfo + 1310736 + ($261 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$284 >> 2] | 0) > ($288 | 0)) HEAP32[$284 >> 2] = $288;\n     $291 = $labelInfo + 131084 + (($283 | 1) << 2) | 0;\n     $295 = HEAP32[$labelInfo + 1310736 + ($261 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$291 >> 2] | 0) < ($295 | 0)) HEAP32[$291 >> 2] = $295;\n     $298 = $labelInfo + 131084 + (($283 | 2) << 2) | 0;\n     $302 = HEAP32[$labelInfo + 1310736 + ($261 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$298 >> 2] | 0) > ($302 | 0)) HEAP32[$298 >> 2] = $302;\n     $305 = $labelInfo + 131084 + (($283 | 3) << 2) | 0;\n     $309 = HEAP32[$labelInfo + 1310736 + ($261 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$305 >> 2] | 0) < ($309 | 0)) HEAP32[$305 >> 2] = $309;\n     $i$537 = $i$537 + 1 | 0;\n    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$238 >> 2] | 0) > 0) {\n    $i$636 = 0;\n    do {\n     $313 = $labelInfo + 12 + ($i$636 << 2) | 0;\n     $316 = $i$636 << 1;\n     $317 = $labelInfo + 655376 + ($316 << 3) | 0;\n     HEAPF64[$317 >> 3] = +HEAPF64[$317 >> 3] / +(HEAP32[$313 >> 2] | 0);\n     $323 = $labelInfo + 655376 + (($316 | 1) << 3) | 0;\n     HEAPF64[$323 >> 3] = +HEAPF64[$323 >> 3] / +(HEAP32[$313 >> 2] | 0);\n     $i$636 = $i$636 + 1 | 0;\n    } while (($i$636 | 0) < (HEAP32[$238 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubEWRYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $102 = 0, $105 = 0, $122 = 0, $124 = 0, $126 = 0, $130 = 0, $134 = 0, $137 = 0, $139 = 0, $143 = 0, $147 = 0, $151 = 0, $156 = 0, $158 = 0, $16 = 0, $162 = 0, $166 = 0, $17 = 0, $170 = 0, $176 = 0, $179 = 0, $18 = 0, $181 = 0, $185 = 0, $189 = 0, $193 = 0, $196 = 0, $201 = 0, $216 = 0, $217 = 0, $218 = 0, $225 = 0, $227 = 0, $233 = 0, $237 = 0, $238 = 0, $245 = 0, $259 = 0, $26 = 0, $260 = 0, $263 = 0, $270 = 0, $271 = 0, $279 = 0, $282 = 0, $283 = 0, $287 = 0, $290 = 0, $294 = 0, $297 = 0, $301 = 0, $304 = 0, $308 = 0, $31 = 0, $312 = 0, $315 = 0, $316 = 0, $322 = 0, $34 = 0, $36 = 0, $40 = 0, $44 = 0, $50 = 0, $51 = 0, $54 = 0, $55 = 0, $56 = 0, $59 = 0, $62 = 0, $79 = 0, $81 = 0, $83 = 0, $87 = 0, $9 = 0, $91 = 0, $97 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$088 = 0;\n  $pnt1$090 = $0;\n  $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$089 >> 1] = 0;\n   HEAP16[$pnt1$090 >> 1] = 0;\n   $i$088 = $i$088 + 1 | 0;\n   if (($i$088 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$090 = $pnt1$090 + 2 | 0;\n    $pnt2$089 = $pnt2$089 + 2 | 0;\n   }\n  }\n }\n $9 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$182 = 0;\n  $pnt1$184 = $0;\n  $pnt2$183 = $0 + ($9 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$183 >> 1] = 0;\n   HEAP16[$pnt1$184 >> 1] = 0;\n   $i$182 = $i$182 + 1 | 0;\n   if (($i$182 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;\n    $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0;\n   }\n  }\n }\n $16 = $labelInfo + 1179664 | 0;\n $17 = $xsize + 1 | 0;\n $18 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $26 = ($9 | 0) > 1;\n  $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $17 | 0;\n  $j$075 = 1;\n  $pnt$079 = $image + ($17 << 1) | 0;\n  $pnt2$278 = $0 + ($17 << 1) | 0;\n  $wk_max$074 = 0;\n  L13 : while (1) {\n   if ($26) {\n    $dpnt$166 = $dpnt$077;\n    $i$264 = 1;\n    $pnt$168 = $pnt$079;\n    $pnt2$367 = $pnt2$278;\n    $wk_max$159 = $wk_max$074;\n    while (1) {\n     do if ((HEAPU8[$pnt$168 >> 0] | 0 | 0) > ($labelingThresh | 0)) {\n      HEAP8[$dpnt$166 >> 0] = -1;\n      $31 = HEAP16[$pnt2$367 + ($18 << 1) >> 1] | 0;\n      if ($31 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$367 >> 1] = $31;\n       $34 = ($31 << 16 >> 16) * 7 | 0;\n       $36 = $labelInfo + 1310736 + ($34 + -7 << 2) | 0;\n       HEAP32[$36 >> 2] = (HEAP32[$36 >> 2] | 0) + 1;\n       $40 = $labelInfo + 1310736 + ($34 + -6 << 2) | 0;\n       HEAP32[$40 >> 2] = (HEAP32[$40 >> 2] | 0) + $i$264;\n       $44 = $labelInfo + 1310736 + ($34 + -5 << 2) | 0;\n       HEAP32[$44 >> 2] = (HEAP32[$44 >> 2] | 0) + $j$075;\n       HEAP32[$labelInfo + 1310736 + ($34 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $50 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0;\n      $51 = $50 << 16 >> 16;\n      $54 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0;\n      $55 = $54 << 16 >> 16;\n      $56 = $54 << 16 >> 16 > 0;\n      if ($50 << 16 >> 16 <= 0) {\n       if ($56) {\n        HEAP16[$pnt2$367 >> 1] = $54;\n        $156 = $55 * 7 | 0;\n        $158 = $labelInfo + 1310736 + ($156 + -7 << 2) | 0;\n        HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + 1;\n        $162 = $labelInfo + 1310736 + ($156 + -6 << 2) | 0;\n        HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $i$264;\n        $166 = $labelInfo + 1310736 + ($156 + -5 << 2) | 0;\n        HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + $j$075;\n        $170 = $labelInfo + 1310736 + ($156 + -3 << 2) | 0;\n        if ((HEAP32[$170 >> 2] | 0) < ($i$264 | 0)) HEAP32[$170 >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($156 + -1 << 2) >> 2] = $j$075;\n        $wk_max$2 = $wk_max$159;\n        break;\n       }\n       $176 = HEAP16[$pnt2$367 + -2 >> 1] | 0;\n       if ($176 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$367 >> 1] = $176;\n        $179 = ($176 << 16 >> 16) * 7 | 0;\n        $181 = $labelInfo + 1310736 + ($179 + -7 << 2) | 0;\n        HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + 1;\n        $185 = $labelInfo + 1310736 + ($179 + -6 << 2) | 0;\n        HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + $i$264;\n        $189 = $labelInfo + 1310736 + ($179 + -5 << 2) | 0;\n        HEAP32[$189 >> 2] = (HEAP32[$189 >> 2] | 0) + $j$075;\n        $193 = $labelInfo + 1310736 + ($179 + -3 << 2) | 0;\n        if ((HEAP32[$193 >> 2] | 0) >= ($i$264 | 0)) {\n         $wk_max$2 = $wk_max$159;\n         break;\n        }\n        HEAP32[$193 >> 2] = $i$264;\n        $wk_max$2 = $wk_max$159;\n        break;\n       } else {\n        $196 = $wk_max$159 + 1 | 0;\n        if (($wk_max$159 | 0) > 32767) break L13;\n        HEAP16[$pnt2$367 >> 1] = $196;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $196 << 16 >> 16;\n        $201 = $wk_max$159 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($201 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($201 + 1 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($201 + 2 << 2) >> 2] = $j$075;\n        HEAP32[$labelInfo + 1310736 + ($201 + 3 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($201 + 4 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($201 + 5 << 2) >> 2] = $j$075;\n        HEAP32[$labelInfo + 1310736 + ($201 + 6 << 2) >> 2] = $j$075;\n        $wk_max$2 = $196;\n        break;\n       }\n      }\n      if ($56) {\n       $59 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0;\n       $62 = HEAP32[$labelInfo + 1179664 + ($55 + -1 << 2) >> 2] | 0;\n       if (($59 | 0) > ($62 | 0)) {\n        HEAP16[$pnt2$367 >> 1] = $62;\n        if (($wk_max$159 | 0) > 0) {\n         $k$055 = 0;\n         $wk$056 = $16;\n         while (1) {\n          if ((HEAP32[$wk$056 >> 2] | 0) == ($59 | 0)) HEAP32[$wk$056 >> 2] = $62;\n          $k$055 = $k$055 + 1 | 0;\n          if (($k$055 | 0) >= ($wk_max$159 | 0)) {\n           $79 = $62;\n           break;\n          } else $wk$056 = $wk$056 + 4 | 0;\n         }\n        } else $79 = $62;\n       } else {\n        HEAP16[$pnt2$367 >> 1] = $59;\n        if (($59 | 0) < ($62 | 0) & ($wk_max$159 | 0) > 0) {\n         $k$152 = 0;\n         $wk$153 = $16;\n         while (1) {\n          if ((HEAP32[$wk$153 >> 2] | 0) == ($62 | 0)) HEAP32[$wk$153 >> 2] = $59;\n          $k$152 = $k$152 + 1 | 0;\n          if (($k$152 | 0) >= ($wk_max$159 | 0)) {\n           $79 = $59;\n           break;\n          } else $wk$153 = $wk$153 + 4 | 0;\n         }\n        } else $79 = $59;\n       }\n       $81 = ($79 << 16 >> 16) * 7 | 0;\n       $83 = $labelInfo + 1310736 + ($81 + -7 << 2) | 0;\n       HEAP32[$83 >> 2] = (HEAP32[$83 >> 2] | 0) + 1;\n       $87 = $labelInfo + 1310736 + ($81 + -6 << 2) | 0;\n       HEAP32[$87 >> 2] = (HEAP32[$87 >> 2] | 0) + $i$264;\n       $91 = $labelInfo + 1310736 + ($81 + -5 << 2) | 0;\n       HEAP32[$91 >> 2] = (HEAP32[$91 >> 2] | 0) + $j$075;\n       HEAP32[$labelInfo + 1310736 + ($81 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $97 = HEAP16[$pnt2$367 + -2 >> 1] | 0;\n      if ($97 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$367 >> 1] = $50;\n       $137 = $51 * 7 | 0;\n       $139 = $labelInfo + 1310736 + ($137 + -7 << 2) | 0;\n       HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + 1;\n       $143 = $labelInfo + 1310736 + ($137 + -6 << 2) | 0;\n       HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $i$264;\n       $147 = $labelInfo + 1310736 + ($137 + -5 << 2) | 0;\n       HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + $j$075;\n       $151 = $labelInfo + 1310736 + ($137 + -4 << 2) | 0;\n       if ((HEAP32[$151 >> 2] | 0) > ($i$264 | 0)) HEAP32[$151 >> 2] = $i$264;\n       HEAP32[$labelInfo + 1310736 + ($137 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $102 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0;\n      $105 = HEAP32[$labelInfo + 1179664 + (($97 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($102 | 0) > ($105 | 0)) {\n       HEAP16[$pnt2$367 >> 1] = $105;\n       if (($wk_max$159 | 0) > 0) {\n        $k$248 = 0;\n        $wk$249 = $16;\n        while (1) {\n         if ((HEAP32[$wk$249 >> 2] | 0) == ($102 | 0)) HEAP32[$wk$249 >> 2] = $105;\n         $k$248 = $k$248 + 1 | 0;\n         if (($k$248 | 0) >= ($wk_max$159 | 0)) {\n          $122 = $105;\n          break;\n         } else $wk$249 = $wk$249 + 4 | 0;\n        }\n       } else $122 = $105;\n      } else {\n       HEAP16[$pnt2$367 >> 1] = $102;\n       if (($102 | 0) < ($105 | 0) & ($wk_max$159 | 0) > 0) {\n        $k$345 = 0;\n        $wk$346 = $16;\n        while (1) {\n         if ((HEAP32[$wk$346 >> 2] | 0) == ($105 | 0)) HEAP32[$wk$346 >> 2] = $102;\n         $k$345 = $k$345 + 1 | 0;\n         if (($k$345 | 0) >= ($wk_max$159 | 0)) {\n          $122 = $102;\n          break;\n         } else $wk$346 = $wk$346 + 4 | 0;\n        }\n       } else $122 = $102;\n      }\n      $124 = ($122 << 16 >> 16) * 7 | 0;\n      $126 = $labelInfo + 1310736 + ($124 + -7 << 2) | 0;\n      HEAP32[$126 >> 2] = (HEAP32[$126 >> 2] | 0) + 1;\n      $130 = $labelInfo + 1310736 + ($124 + -6 << 2) | 0;\n      HEAP32[$130 >> 2] = (HEAP32[$130 >> 2] | 0) + $i$264;\n      $134 = $labelInfo + 1310736 + ($124 + -5 << 2) | 0;\n      HEAP32[$134 >> 2] = (HEAP32[$134 >> 2] | 0) + $j$075;\n      $wk_max$2 = $wk_max$159;\n     } else {\n      HEAP16[$pnt2$367 >> 1] = 0;\n      HEAP8[$dpnt$166 >> 0] = 0;\n      $wk_max$2 = $wk_max$159;\n     } while (0);\n     $i$264 = $i$264 + 1 | 0;\n     $216 = $pnt$168 + 2 | 0;\n     $217 = $pnt2$367 + 2 | 0;\n     $218 = $dpnt$166 + 1 | 0;\n     if (($i$264 | 0) >= ($9 | 0)) {\n      $dpnt$1$lcssa = $218;\n      $pnt$1$lcssa = $216;\n      $pnt2$3$lcssa = $217;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $dpnt$166 = $218;\n      $pnt$168 = $216;\n      $pnt2$367 = $217;\n      $wk_max$159 = $wk_max$2;\n     }\n    }\n   } else {\n    $dpnt$1$lcssa = $dpnt$077;\n    $pnt$1$lcssa = $pnt$079;\n    $pnt2$3$lcssa = $pnt2$278;\n    $wk_max$1$lcssa = $wk_max$074;\n   }\n   $j$075 = $j$075 + 1 | 0;\n   if (($j$075 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $dpnt$077 = $dpnt$1$lcssa + 2 | 0;\n    $pnt$079 = $pnt$1$lcssa + 4 | 0;\n    $pnt2$278 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$074 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $225 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$341 = 1;\n   $j$142 = 1;\n   $wk$443 = $16;\n   while (1) {\n    $227 = HEAP32[$wk$443 >> 2] | 0;\n    if (($227 | 0) == ($i$341 | 0)) {\n     $233 = $j$142;\n     $j$2 = $j$142 + 1 | 0;\n    } else {\n     $233 = HEAP32[$labelInfo + 1179664 + ($227 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$142;\n    }\n    HEAP32[$wk$443 >> 2] = $233;\n    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$341 = $i$341 + 1 | 0;\n     $j$142 = $j$2;\n     $wk$443 = $wk$443 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $237 = $labelInfo + 8 | 0;\n  $238 = $j$1$lcssa + -1 | 0;\n  HEAP32[$237 >> 2] = $238;\n  if (!$238) $$0 = 0; else {\n   _memset($225 | 0, 0, $238 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $238 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$439 = 0;\n    do {\n     $245 = $i$439 << 2;\n     HEAP32[$labelInfo + 131084 + ($245 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($245 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($245 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($245 | 3) << 2) >> 2] = 0;\n     $i$439 = $i$439 + 1 | 0;\n    } while (($i$439 | 0) < (HEAP32[$237 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$537 = 0;\n    do {\n     $259 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;\n     $260 = $i$537 * 7 | 0;\n     $263 = $labelInfo + 12 + ($259 << 2) | 0;\n     HEAP32[$263 >> 2] = (HEAP32[$263 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($260 << 2) >> 2] | 0);\n     $270 = $259 << 1;\n     $271 = $labelInfo + 655376 + ($270 << 3) | 0;\n     HEAPF64[$271 >> 3] = +HEAPF64[$271 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($260 + 1 << 2) >> 2] | 0);\n     $279 = $labelInfo + 655376 + (($270 | 1) << 3) | 0;\n     HEAPF64[$279 >> 3] = +HEAPF64[$279 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($260 + 2 << 2) >> 2] | 0);\n     $282 = $259 << 2;\n     $283 = $labelInfo + 131084 + ($282 << 2) | 0;\n     $287 = HEAP32[$labelInfo + 1310736 + ($260 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$283 >> 2] | 0) > ($287 | 0)) HEAP32[$283 >> 2] = $287;\n     $290 = $labelInfo + 131084 + (($282 | 1) << 2) | 0;\n     $294 = HEAP32[$labelInfo + 1310736 + ($260 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$290 >> 2] | 0) < ($294 | 0)) HEAP32[$290 >> 2] = $294;\n     $297 = $labelInfo + 131084 + (($282 | 2) << 2) | 0;\n     $301 = HEAP32[$labelInfo + 1310736 + ($260 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$297 >> 2] | 0) > ($301 | 0)) HEAP32[$297 >> 2] = $301;\n     $304 = $labelInfo + 131084 + (($282 | 3) << 2) | 0;\n     $308 = HEAP32[$labelInfo + 1310736 + ($260 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$304 >> 2] | 0) < ($308 | 0)) HEAP32[$304 >> 2] = $308;\n     $i$537 = $i$537 + 1 | 0;\n    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$237 >> 2] | 0) > 0) {\n    $i$636 = 0;\n    do {\n     $312 = $labelInfo + 12 + ($i$636 << 2) | 0;\n     $315 = $i$636 << 1;\n     $316 = $labelInfo + 655376 + ($315 << 3) | 0;\n     HEAPF64[$316 >> 3] = +HEAPF64[$316 >> 3] / +(HEAP32[$312 >> 2] | 0);\n     $322 = $labelInfo + 655376 + (($315 | 1) << 3) | 0;\n     HEAPF64[$322 >> 3] = +HEAPF64[$322 >> 3] / +(HEAP32[$312 >> 2] | 0);\n     $i$636 = $i$636 + 1 | 0;\n    } while (($i$636 | 0) < (HEAP32[$237 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubEBRYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $102 = 0, $105 = 0, $122 = 0, $124 = 0, $126 = 0, $130 = 0, $134 = 0, $137 = 0, $139 = 0, $143 = 0, $147 = 0, $151 = 0, $156 = 0, $158 = 0, $16 = 0, $162 = 0, $166 = 0, $17 = 0, $170 = 0, $176 = 0, $179 = 0, $18 = 0, $181 = 0, $185 = 0, $189 = 0, $193 = 0, $196 = 0, $201 = 0, $216 = 0, $217 = 0, $218 = 0, $225 = 0, $227 = 0, $233 = 0, $237 = 0, $238 = 0, $245 = 0, $259 = 0, $26 = 0, $260 = 0, $263 = 0, $270 = 0, $271 = 0, $279 = 0, $282 = 0, $283 = 0, $287 = 0, $290 = 0, $294 = 0, $297 = 0, $301 = 0, $304 = 0, $308 = 0, $31 = 0, $312 = 0, $315 = 0, $316 = 0, $322 = 0, $34 = 0, $36 = 0, $40 = 0, $44 = 0, $50 = 0, $51 = 0, $54 = 0, $55 = 0, $56 = 0, $59 = 0, $62 = 0, $79 = 0, $81 = 0, $83 = 0, $87 = 0, $9 = 0, $91 = 0, $97 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$088 = 0;\n  $pnt1$090 = $0;\n  $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$089 >> 1] = 0;\n   HEAP16[$pnt1$090 >> 1] = 0;\n   $i$088 = $i$088 + 1 | 0;\n   if (($i$088 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$090 = $pnt1$090 + 2 | 0;\n    $pnt2$089 = $pnt2$089 + 2 | 0;\n   }\n  }\n }\n $9 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$182 = 0;\n  $pnt1$184 = $0;\n  $pnt2$183 = $0 + ($9 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$183 >> 1] = 0;\n   HEAP16[$pnt1$184 >> 1] = 0;\n   $i$182 = $i$182 + 1 | 0;\n   if (($i$182 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;\n    $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0;\n   }\n  }\n }\n $16 = $labelInfo + 1179664 | 0;\n $17 = $xsize + 1 | 0;\n $18 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $26 = ($9 | 0) > 1;\n  $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $17 | 0;\n  $j$075 = 1;\n  $pnt$079 = $image + ($17 << 1) | 0;\n  $pnt2$278 = $0 + ($17 << 1) | 0;\n  $wk_max$074 = 0;\n  L13 : while (1) {\n   if ($26) {\n    $dpnt$166 = $dpnt$077;\n    $i$264 = 1;\n    $pnt$168 = $pnt$079;\n    $pnt2$367 = $pnt2$278;\n    $wk_max$159 = $wk_max$074;\n    while (1) {\n     do if ((HEAPU8[$pnt$168 >> 0] | 0 | 0) > ($labelingThresh | 0)) {\n      HEAP16[$pnt2$367 >> 1] = 0;\n      HEAP8[$dpnt$166 >> 0] = 0;\n      $wk_max$2 = $wk_max$159;\n     } else {\n      HEAP8[$dpnt$166 >> 0] = -1;\n      $31 = HEAP16[$pnt2$367 + ($18 << 1) >> 1] | 0;\n      if ($31 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$367 >> 1] = $31;\n       $34 = ($31 << 16 >> 16) * 7 | 0;\n       $36 = $labelInfo + 1310736 + ($34 + -7 << 2) | 0;\n       HEAP32[$36 >> 2] = (HEAP32[$36 >> 2] | 0) + 1;\n       $40 = $labelInfo + 1310736 + ($34 + -6 << 2) | 0;\n       HEAP32[$40 >> 2] = (HEAP32[$40 >> 2] | 0) + $i$264;\n       $44 = $labelInfo + 1310736 + ($34 + -5 << 2) | 0;\n       HEAP32[$44 >> 2] = (HEAP32[$44 >> 2] | 0) + $j$075;\n       HEAP32[$labelInfo + 1310736 + ($34 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $50 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0;\n      $51 = $50 << 16 >> 16;\n      $54 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0;\n      $55 = $54 << 16 >> 16;\n      $56 = $54 << 16 >> 16 > 0;\n      if ($50 << 16 >> 16 <= 0) {\n       if ($56) {\n        HEAP16[$pnt2$367 >> 1] = $54;\n        $156 = $55 * 7 | 0;\n        $158 = $labelInfo + 1310736 + ($156 + -7 << 2) | 0;\n        HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + 1;\n        $162 = $labelInfo + 1310736 + ($156 + -6 << 2) | 0;\n        HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $i$264;\n        $166 = $labelInfo + 1310736 + ($156 + -5 << 2) | 0;\n        HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + $j$075;\n        $170 = $labelInfo + 1310736 + ($156 + -3 << 2) | 0;\n        if ((HEAP32[$170 >> 2] | 0) < ($i$264 | 0)) HEAP32[$170 >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($156 + -1 << 2) >> 2] = $j$075;\n        $wk_max$2 = $wk_max$159;\n        break;\n       }\n       $176 = HEAP16[$pnt2$367 + -2 >> 1] | 0;\n       if ($176 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$367 >> 1] = $176;\n        $179 = ($176 << 16 >> 16) * 7 | 0;\n        $181 = $labelInfo + 1310736 + ($179 + -7 << 2) | 0;\n        HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + 1;\n        $185 = $labelInfo + 1310736 + ($179 + -6 << 2) | 0;\n        HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + $i$264;\n        $189 = $labelInfo + 1310736 + ($179 + -5 << 2) | 0;\n        HEAP32[$189 >> 2] = (HEAP32[$189 >> 2] | 0) + $j$075;\n        $193 = $labelInfo + 1310736 + ($179 + -3 << 2) | 0;\n        if ((HEAP32[$193 >> 2] | 0) >= ($i$264 | 0)) {\n         $wk_max$2 = $wk_max$159;\n         break;\n        }\n        HEAP32[$193 >> 2] = $i$264;\n        $wk_max$2 = $wk_max$159;\n        break;\n       } else {\n        $196 = $wk_max$159 + 1 | 0;\n        if (($wk_max$159 | 0) > 32767) break L13;\n        HEAP16[$pnt2$367 >> 1] = $196;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $196 << 16 >> 16;\n        $201 = $wk_max$159 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($201 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($201 + 1 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($201 + 2 << 2) >> 2] = $j$075;\n        HEAP32[$labelInfo + 1310736 + ($201 + 3 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($201 + 4 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($201 + 5 << 2) >> 2] = $j$075;\n        HEAP32[$labelInfo + 1310736 + ($201 + 6 << 2) >> 2] = $j$075;\n        $wk_max$2 = $196;\n        break;\n       }\n      }\n      if ($56) {\n       $59 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0;\n       $62 = HEAP32[$labelInfo + 1179664 + ($55 + -1 << 2) >> 2] | 0;\n       if (($59 | 0) > ($62 | 0)) {\n        HEAP16[$pnt2$367 >> 1] = $62;\n        if (($wk_max$159 | 0) > 0) {\n         $k$055 = 0;\n         $wk$056 = $16;\n         while (1) {\n          if ((HEAP32[$wk$056 >> 2] | 0) == ($59 | 0)) HEAP32[$wk$056 >> 2] = $62;\n          $k$055 = $k$055 + 1 | 0;\n          if (($k$055 | 0) >= ($wk_max$159 | 0)) {\n           $79 = $62;\n           break;\n          } else $wk$056 = $wk$056 + 4 | 0;\n         }\n        } else $79 = $62;\n       } else {\n        HEAP16[$pnt2$367 >> 1] = $59;\n        if (($59 | 0) < ($62 | 0) & ($wk_max$159 | 0) > 0) {\n         $k$152 = 0;\n         $wk$153 = $16;\n         while (1) {\n          if ((HEAP32[$wk$153 >> 2] | 0) == ($62 | 0)) HEAP32[$wk$153 >> 2] = $59;\n          $k$152 = $k$152 + 1 | 0;\n          if (($k$152 | 0) >= ($wk_max$159 | 0)) {\n           $79 = $59;\n           break;\n          } else $wk$153 = $wk$153 + 4 | 0;\n         }\n        } else $79 = $59;\n       }\n       $81 = ($79 << 16 >> 16) * 7 | 0;\n       $83 = $labelInfo + 1310736 + ($81 + -7 << 2) | 0;\n       HEAP32[$83 >> 2] = (HEAP32[$83 >> 2] | 0) + 1;\n       $87 = $labelInfo + 1310736 + ($81 + -6 << 2) | 0;\n       HEAP32[$87 >> 2] = (HEAP32[$87 >> 2] | 0) + $i$264;\n       $91 = $labelInfo + 1310736 + ($81 + -5 << 2) | 0;\n       HEAP32[$91 >> 2] = (HEAP32[$91 >> 2] | 0) + $j$075;\n       HEAP32[$labelInfo + 1310736 + ($81 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $97 = HEAP16[$pnt2$367 + -2 >> 1] | 0;\n      if ($97 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$367 >> 1] = $50;\n       $137 = $51 * 7 | 0;\n       $139 = $labelInfo + 1310736 + ($137 + -7 << 2) | 0;\n       HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + 1;\n       $143 = $labelInfo + 1310736 + ($137 + -6 << 2) | 0;\n       HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $i$264;\n       $147 = $labelInfo + 1310736 + ($137 + -5 << 2) | 0;\n       HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + $j$075;\n       $151 = $labelInfo + 1310736 + ($137 + -4 << 2) | 0;\n       if ((HEAP32[$151 >> 2] | 0) > ($i$264 | 0)) HEAP32[$151 >> 2] = $i$264;\n       HEAP32[$labelInfo + 1310736 + ($137 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $102 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0;\n      $105 = HEAP32[$labelInfo + 1179664 + (($97 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($102 | 0) > ($105 | 0)) {\n       HEAP16[$pnt2$367 >> 1] = $105;\n       if (($wk_max$159 | 0) > 0) {\n        $k$248 = 0;\n        $wk$249 = $16;\n        while (1) {\n         if ((HEAP32[$wk$249 >> 2] | 0) == ($102 | 0)) HEAP32[$wk$249 >> 2] = $105;\n         $k$248 = $k$248 + 1 | 0;\n         if (($k$248 | 0) >= ($wk_max$159 | 0)) {\n          $122 = $105;\n          break;\n         } else $wk$249 = $wk$249 + 4 | 0;\n        }\n       } else $122 = $105;\n      } else {\n       HEAP16[$pnt2$367 >> 1] = $102;\n       if (($102 | 0) < ($105 | 0) & ($wk_max$159 | 0) > 0) {\n        $k$345 = 0;\n        $wk$346 = $16;\n        while (1) {\n         if ((HEAP32[$wk$346 >> 2] | 0) == ($105 | 0)) HEAP32[$wk$346 >> 2] = $102;\n         $k$345 = $k$345 + 1 | 0;\n         if (($k$345 | 0) >= ($wk_max$159 | 0)) {\n          $122 = $102;\n          break;\n         } else $wk$346 = $wk$346 + 4 | 0;\n        }\n       } else $122 = $102;\n      }\n      $124 = ($122 << 16 >> 16) * 7 | 0;\n      $126 = $labelInfo + 1310736 + ($124 + -7 << 2) | 0;\n      HEAP32[$126 >> 2] = (HEAP32[$126 >> 2] | 0) + 1;\n      $130 = $labelInfo + 1310736 + ($124 + -6 << 2) | 0;\n      HEAP32[$130 >> 2] = (HEAP32[$130 >> 2] | 0) + $i$264;\n      $134 = $labelInfo + 1310736 + ($124 + -5 << 2) | 0;\n      HEAP32[$134 >> 2] = (HEAP32[$134 >> 2] | 0) + $j$075;\n      $wk_max$2 = $wk_max$159;\n     } while (0);\n     $i$264 = $i$264 + 1 | 0;\n     $216 = $pnt$168 + 2 | 0;\n     $217 = $pnt2$367 + 2 | 0;\n     $218 = $dpnt$166 + 1 | 0;\n     if (($i$264 | 0) >= ($9 | 0)) {\n      $dpnt$1$lcssa = $218;\n      $pnt$1$lcssa = $216;\n      $pnt2$3$lcssa = $217;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $dpnt$166 = $218;\n      $pnt$168 = $216;\n      $pnt2$367 = $217;\n      $wk_max$159 = $wk_max$2;\n     }\n    }\n   } else {\n    $dpnt$1$lcssa = $dpnt$077;\n    $pnt$1$lcssa = $pnt$079;\n    $pnt2$3$lcssa = $pnt2$278;\n    $wk_max$1$lcssa = $wk_max$074;\n   }\n   $j$075 = $j$075 + 1 | 0;\n   if (($j$075 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $dpnt$077 = $dpnt$1$lcssa + 2 | 0;\n    $pnt$079 = $pnt$1$lcssa + 4 | 0;\n    $pnt2$278 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$074 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $225 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$341 = 1;\n   $j$142 = 1;\n   $wk$443 = $16;\n   while (1) {\n    $227 = HEAP32[$wk$443 >> 2] | 0;\n    if (($227 | 0) == ($i$341 | 0)) {\n     $233 = $j$142;\n     $j$2 = $j$142 + 1 | 0;\n    } else {\n     $233 = HEAP32[$labelInfo + 1179664 + ($227 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$142;\n    }\n    HEAP32[$wk$443 >> 2] = $233;\n    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$341 = $i$341 + 1 | 0;\n     $j$142 = $j$2;\n     $wk$443 = $wk$443 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $237 = $labelInfo + 8 | 0;\n  $238 = $j$1$lcssa + -1 | 0;\n  HEAP32[$237 >> 2] = $238;\n  if (!$238) $$0 = 0; else {\n   _memset($225 | 0, 0, $238 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $238 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$439 = 0;\n    do {\n     $245 = $i$439 << 2;\n     HEAP32[$labelInfo + 131084 + ($245 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($245 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($245 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($245 | 3) << 2) >> 2] = 0;\n     $i$439 = $i$439 + 1 | 0;\n    } while (($i$439 | 0) < (HEAP32[$237 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$537 = 0;\n    do {\n     $259 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;\n     $260 = $i$537 * 7 | 0;\n     $263 = $labelInfo + 12 + ($259 << 2) | 0;\n     HEAP32[$263 >> 2] = (HEAP32[$263 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($260 << 2) >> 2] | 0);\n     $270 = $259 << 1;\n     $271 = $labelInfo + 655376 + ($270 << 3) | 0;\n     HEAPF64[$271 >> 3] = +HEAPF64[$271 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($260 + 1 << 2) >> 2] | 0);\n     $279 = $labelInfo + 655376 + (($270 | 1) << 3) | 0;\n     HEAPF64[$279 >> 3] = +HEAPF64[$279 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($260 + 2 << 2) >> 2] | 0);\n     $282 = $259 << 2;\n     $283 = $labelInfo + 131084 + ($282 << 2) | 0;\n     $287 = HEAP32[$labelInfo + 1310736 + ($260 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$283 >> 2] | 0) > ($287 | 0)) HEAP32[$283 >> 2] = $287;\n     $290 = $labelInfo + 131084 + (($282 | 1) << 2) | 0;\n     $294 = HEAP32[$labelInfo + 1310736 + ($260 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$290 >> 2] | 0) < ($294 | 0)) HEAP32[$290 >> 2] = $294;\n     $297 = $labelInfo + 131084 + (($282 | 2) << 2) | 0;\n     $301 = HEAP32[$labelInfo + 1310736 + ($260 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$297 >> 2] | 0) > ($301 | 0)) HEAP32[$297 >> 2] = $301;\n     $304 = $labelInfo + 131084 + (($282 | 3) << 2) | 0;\n     $308 = HEAP32[$labelInfo + 1310736 + ($260 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$304 >> 2] | 0) < ($308 | 0)) HEAP32[$304 >> 2] = $308;\n     $i$537 = $i$537 + 1 | 0;\n    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$237 >> 2] | 0) > 0) {\n    $i$636 = 0;\n    do {\n     $312 = $labelInfo + 12 + ($i$636 << 2) | 0;\n     $315 = $i$636 << 1;\n     $316 = $labelInfo + 655376 + ($315 << 3) | 0;\n     HEAPF64[$316 >> 3] = +HEAPF64[$316 >> 3] / +(HEAP32[$312 >> 2] | 0);\n     $322 = $labelInfo + 655376 + (($315 | 1) << 3) | 0;\n     HEAPF64[$322 >> 3] = +HEAPF64[$322 >> 3] / +(HEAP32[$312 >> 2] | 0);\n     $i$636 = $i$636 + 1 | 0;\n    } while (($i$636 | 0) < (HEAP32[$237 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubEWRC($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $101 = 0, $104 = 0, $121 = 0, $123 = 0, $125 = 0, $129 = 0, $133 = 0, $136 = 0, $138 = 0, $142 = 0, $146 = 0, $150 = 0, $155 = 0, $157 = 0, $16 = 0, $161 = 0, $165 = 0, $169 = 0, $17 = 0, $175 = 0, $178 = 0, $18 = 0, $180 = 0, $184 = 0, $188 = 0, $192 = 0, $195 = 0, $200 = 0, $215 = 0, $216 = 0, $217 = 0, $224 = 0, $226 = 0, $232 = 0, $236 = 0, $237 = 0, $244 = 0, $25 = 0, $258 = 0, $259 = 0, $262 = 0, $269 = 0, $270 = 0, $278 = 0, $281 = 0, $282 = 0, $286 = 0, $289 = 0, $293 = 0, $296 = 0, $30 = 0, $300 = 0, $303 = 0, $307 = 0, $311 = 0, $314 = 0, $315 = 0, $321 = 0, $33 = 0, $35 = 0, $39 = 0, $43 = 0, $49 = 0, $50 = 0, $53 = 0, $54 = 0, $55 = 0, $58 = 0, $61 = 0, $78 = 0, $80 = 0, $82 = 0, $86 = 0, $9 = 0, $90 = 0, $96 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$088 = 0;\n  $pnt1$090 = $0;\n  $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$089 >> 1] = 0;\n   HEAP16[$pnt1$090 >> 1] = 0;\n   $i$088 = $i$088 + 1 | 0;\n   if (($i$088 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$090 = $pnt1$090 + 2 | 0;\n    $pnt2$089 = $pnt2$089 + 2 | 0;\n   }\n  }\n }\n $9 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$182 = 0;\n  $pnt1$184 = $0;\n  $pnt2$183 = $0 + ($9 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$183 >> 1] = 0;\n   HEAP16[$pnt1$184 >> 1] = 0;\n   $i$182 = $i$182 + 1 | 0;\n   if (($i$182 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;\n    $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0;\n   }\n  }\n }\n $16 = $labelInfo + 1179664 | 0;\n $17 = $xsize + 1 | 0;\n $18 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $25 = ($9 | 0) > 1;\n  $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $17 | 0;\n  $j$075 = 1;\n  $pnt$079 = $image + $17 | 0;\n  $pnt2$278 = $0 + ($17 << 1) | 0;\n  $wk_max$074 = 0;\n  L13 : while (1) {\n   if ($25) {\n    $dpnt$166 = $dpnt$077;\n    $i$264 = 1;\n    $pnt$168 = $pnt$079;\n    $pnt2$367 = $pnt2$278;\n    $wk_max$159 = $wk_max$074;\n    while (1) {\n     do if ((HEAPU8[$pnt$168 >> 0] | 0 | 0) > ($labelingThresh | 0)) {\n      HEAP8[$dpnt$166 >> 0] = -1;\n      $30 = HEAP16[$pnt2$367 + ($18 << 1) >> 1] | 0;\n      if ($30 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$367 >> 1] = $30;\n       $33 = ($30 << 16 >> 16) * 7 | 0;\n       $35 = $labelInfo + 1310736 + ($33 + -7 << 2) | 0;\n       HEAP32[$35 >> 2] = (HEAP32[$35 >> 2] | 0) + 1;\n       $39 = $labelInfo + 1310736 + ($33 + -6 << 2) | 0;\n       HEAP32[$39 >> 2] = (HEAP32[$39 >> 2] | 0) + $i$264;\n       $43 = $labelInfo + 1310736 + ($33 + -5 << 2) | 0;\n       HEAP32[$43 >> 2] = (HEAP32[$43 >> 2] | 0) + $j$075;\n       HEAP32[$labelInfo + 1310736 + ($33 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $49 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0;\n      $50 = $49 << 16 >> 16;\n      $53 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0;\n      $54 = $53 << 16 >> 16;\n      $55 = $53 << 16 >> 16 > 0;\n      if ($49 << 16 >> 16 <= 0) {\n       if ($55) {\n        HEAP16[$pnt2$367 >> 1] = $53;\n        $155 = $54 * 7 | 0;\n        $157 = $labelInfo + 1310736 + ($155 + -7 << 2) | 0;\n        HEAP32[$157 >> 2] = (HEAP32[$157 >> 2] | 0) + 1;\n        $161 = $labelInfo + 1310736 + ($155 + -6 << 2) | 0;\n        HEAP32[$161 >> 2] = (HEAP32[$161 >> 2] | 0) + $i$264;\n        $165 = $labelInfo + 1310736 + ($155 + -5 << 2) | 0;\n        HEAP32[$165 >> 2] = (HEAP32[$165 >> 2] | 0) + $j$075;\n        $169 = $labelInfo + 1310736 + ($155 + -3 << 2) | 0;\n        if ((HEAP32[$169 >> 2] | 0) < ($i$264 | 0)) HEAP32[$169 >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($155 + -1 << 2) >> 2] = $j$075;\n        $wk_max$2 = $wk_max$159;\n        break;\n       }\n       $175 = HEAP16[$pnt2$367 + -2 >> 1] | 0;\n       if ($175 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$367 >> 1] = $175;\n        $178 = ($175 << 16 >> 16) * 7 | 0;\n        $180 = $labelInfo + 1310736 + ($178 + -7 << 2) | 0;\n        HEAP32[$180 >> 2] = (HEAP32[$180 >> 2] | 0) + 1;\n        $184 = $labelInfo + 1310736 + ($178 + -6 << 2) | 0;\n        HEAP32[$184 >> 2] = (HEAP32[$184 >> 2] | 0) + $i$264;\n        $188 = $labelInfo + 1310736 + ($178 + -5 << 2) | 0;\n        HEAP32[$188 >> 2] = (HEAP32[$188 >> 2] | 0) + $j$075;\n        $192 = $labelInfo + 1310736 + ($178 + -3 << 2) | 0;\n        if ((HEAP32[$192 >> 2] | 0) >= ($i$264 | 0)) {\n         $wk_max$2 = $wk_max$159;\n         break;\n        }\n        HEAP32[$192 >> 2] = $i$264;\n        $wk_max$2 = $wk_max$159;\n        break;\n       } else {\n        $195 = $wk_max$159 + 1 | 0;\n        if (($wk_max$159 | 0) > 32767) break L13;\n        HEAP16[$pnt2$367 >> 1] = $195;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $195 << 16 >> 16;\n        $200 = $wk_max$159 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($200 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($200 + 1 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($200 + 2 << 2) >> 2] = $j$075;\n        HEAP32[$labelInfo + 1310736 + ($200 + 3 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($200 + 4 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($200 + 5 << 2) >> 2] = $j$075;\n        HEAP32[$labelInfo + 1310736 + ($200 + 6 << 2) >> 2] = $j$075;\n        $wk_max$2 = $195;\n        break;\n       }\n      }\n      if ($55) {\n       $58 = HEAP32[$labelInfo + 1179664 + ($50 + -1 << 2) >> 2] | 0;\n       $61 = HEAP32[$labelInfo + 1179664 + ($54 + -1 << 2) >> 2] | 0;\n       if (($58 | 0) > ($61 | 0)) {\n        HEAP16[$pnt2$367 >> 1] = $61;\n        if (($wk_max$159 | 0) > 0) {\n         $k$055 = 0;\n         $wk$056 = $16;\n         while (1) {\n          if ((HEAP32[$wk$056 >> 2] | 0) == ($58 | 0)) HEAP32[$wk$056 >> 2] = $61;\n          $k$055 = $k$055 + 1 | 0;\n          if (($k$055 | 0) >= ($wk_max$159 | 0)) {\n           $78 = $61;\n           break;\n          } else $wk$056 = $wk$056 + 4 | 0;\n         }\n        } else $78 = $61;\n       } else {\n        HEAP16[$pnt2$367 >> 1] = $58;\n        if (($58 | 0) < ($61 | 0) & ($wk_max$159 | 0) > 0) {\n         $k$152 = 0;\n         $wk$153 = $16;\n         while (1) {\n          if ((HEAP32[$wk$153 >> 2] | 0) == ($61 | 0)) HEAP32[$wk$153 >> 2] = $58;\n          $k$152 = $k$152 + 1 | 0;\n          if (($k$152 | 0) >= ($wk_max$159 | 0)) {\n           $78 = $58;\n           break;\n          } else $wk$153 = $wk$153 + 4 | 0;\n         }\n        } else $78 = $58;\n       }\n       $80 = ($78 << 16 >> 16) * 7 | 0;\n       $82 = $labelInfo + 1310736 + ($80 + -7 << 2) | 0;\n       HEAP32[$82 >> 2] = (HEAP32[$82 >> 2] | 0) + 1;\n       $86 = $labelInfo + 1310736 + ($80 + -6 << 2) | 0;\n       HEAP32[$86 >> 2] = (HEAP32[$86 >> 2] | 0) + $i$264;\n       $90 = $labelInfo + 1310736 + ($80 + -5 << 2) | 0;\n       HEAP32[$90 >> 2] = (HEAP32[$90 >> 2] | 0) + $j$075;\n       HEAP32[$labelInfo + 1310736 + ($80 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $96 = HEAP16[$pnt2$367 + -2 >> 1] | 0;\n      if ($96 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$367 >> 1] = $49;\n       $136 = $50 * 7 | 0;\n       $138 = $labelInfo + 1310736 + ($136 + -7 << 2) | 0;\n       HEAP32[$138 >> 2] = (HEAP32[$138 >> 2] | 0) + 1;\n       $142 = $labelInfo + 1310736 + ($136 + -6 << 2) | 0;\n       HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + $i$264;\n       $146 = $labelInfo + 1310736 + ($136 + -5 << 2) | 0;\n       HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $j$075;\n       $150 = $labelInfo + 1310736 + ($136 + -4 << 2) | 0;\n       if ((HEAP32[$150 >> 2] | 0) > ($i$264 | 0)) HEAP32[$150 >> 2] = $i$264;\n       HEAP32[$labelInfo + 1310736 + ($136 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $101 = HEAP32[$labelInfo + 1179664 + ($50 + -1 << 2) >> 2] | 0;\n      $104 = HEAP32[$labelInfo + 1179664 + (($96 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($101 | 0) > ($104 | 0)) {\n       HEAP16[$pnt2$367 >> 1] = $104;\n       if (($wk_max$159 | 0) > 0) {\n        $k$248 = 0;\n        $wk$249 = $16;\n        while (1) {\n         if ((HEAP32[$wk$249 >> 2] | 0) == ($101 | 0)) HEAP32[$wk$249 >> 2] = $104;\n         $k$248 = $k$248 + 1 | 0;\n         if (($k$248 | 0) >= ($wk_max$159 | 0)) {\n          $121 = $104;\n          break;\n         } else $wk$249 = $wk$249 + 4 | 0;\n        }\n       } else $121 = $104;\n      } else {\n       HEAP16[$pnt2$367 >> 1] = $101;\n       if (($101 | 0) < ($104 | 0) & ($wk_max$159 | 0) > 0) {\n        $k$345 = 0;\n        $wk$346 = $16;\n        while (1) {\n         if ((HEAP32[$wk$346 >> 2] | 0) == ($104 | 0)) HEAP32[$wk$346 >> 2] = $101;\n         $k$345 = $k$345 + 1 | 0;\n         if (($k$345 | 0) >= ($wk_max$159 | 0)) {\n          $121 = $101;\n          break;\n         } else $wk$346 = $wk$346 + 4 | 0;\n        }\n       } else $121 = $101;\n      }\n      $123 = ($121 << 16 >> 16) * 7 | 0;\n      $125 = $labelInfo + 1310736 + ($123 + -7 << 2) | 0;\n      HEAP32[$125 >> 2] = (HEAP32[$125 >> 2] | 0) + 1;\n      $129 = $labelInfo + 1310736 + ($123 + -6 << 2) | 0;\n      HEAP32[$129 >> 2] = (HEAP32[$129 >> 2] | 0) + $i$264;\n      $133 = $labelInfo + 1310736 + ($123 + -5 << 2) | 0;\n      HEAP32[$133 >> 2] = (HEAP32[$133 >> 2] | 0) + $j$075;\n      $wk_max$2 = $wk_max$159;\n     } else {\n      HEAP16[$pnt2$367 >> 1] = 0;\n      HEAP8[$dpnt$166 >> 0] = 0;\n      $wk_max$2 = $wk_max$159;\n     } while (0);\n     $i$264 = $i$264 + 1 | 0;\n     $215 = $pnt$168 + 1 | 0;\n     $216 = $pnt2$367 + 2 | 0;\n     $217 = $dpnt$166 + 1 | 0;\n     if (($i$264 | 0) >= ($9 | 0)) {\n      $dpnt$1$lcssa = $217;\n      $pnt$1$lcssa = $215;\n      $pnt2$3$lcssa = $216;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $dpnt$166 = $217;\n      $pnt$168 = $215;\n      $pnt2$367 = $216;\n      $wk_max$159 = $wk_max$2;\n     }\n    }\n   } else {\n    $dpnt$1$lcssa = $dpnt$077;\n    $pnt$1$lcssa = $pnt$079;\n    $pnt2$3$lcssa = $pnt2$278;\n    $wk_max$1$lcssa = $wk_max$074;\n   }\n   $j$075 = $j$075 + 1 | 0;\n   if (($j$075 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $dpnt$077 = $dpnt$1$lcssa + 2 | 0;\n    $pnt$079 = $pnt$1$lcssa + 2 | 0;\n    $pnt2$278 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$074 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $224 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$341 = 1;\n   $j$142 = 1;\n   $wk$443 = $16;\n   while (1) {\n    $226 = HEAP32[$wk$443 >> 2] | 0;\n    if (($226 | 0) == ($i$341 | 0)) {\n     $232 = $j$142;\n     $j$2 = $j$142 + 1 | 0;\n    } else {\n     $232 = HEAP32[$labelInfo + 1179664 + ($226 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$142;\n    }\n    HEAP32[$wk$443 >> 2] = $232;\n    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$341 = $i$341 + 1 | 0;\n     $j$142 = $j$2;\n     $wk$443 = $wk$443 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $236 = $labelInfo + 8 | 0;\n  $237 = $j$1$lcssa + -1 | 0;\n  HEAP32[$236 >> 2] = $237;\n  if (!$237) $$0 = 0; else {\n   _memset($224 | 0, 0, $237 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $237 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$439 = 0;\n    do {\n     $244 = $i$439 << 2;\n     HEAP32[$labelInfo + 131084 + ($244 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($244 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($244 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($244 | 3) << 2) >> 2] = 0;\n     $i$439 = $i$439 + 1 | 0;\n    } while (($i$439 | 0) < (HEAP32[$236 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$537 = 0;\n    do {\n     $258 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;\n     $259 = $i$537 * 7 | 0;\n     $262 = $labelInfo + 12 + ($258 << 2) | 0;\n     HEAP32[$262 >> 2] = (HEAP32[$262 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($259 << 2) >> 2] | 0);\n     $269 = $258 << 1;\n     $270 = $labelInfo + 655376 + ($269 << 3) | 0;\n     HEAPF64[$270 >> 3] = +HEAPF64[$270 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($259 + 1 << 2) >> 2] | 0);\n     $278 = $labelInfo + 655376 + (($269 | 1) << 3) | 0;\n     HEAPF64[$278 >> 3] = +HEAPF64[$278 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($259 + 2 << 2) >> 2] | 0);\n     $281 = $258 << 2;\n     $282 = $labelInfo + 131084 + ($281 << 2) | 0;\n     $286 = HEAP32[$labelInfo + 1310736 + ($259 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$282 >> 2] | 0) > ($286 | 0)) HEAP32[$282 >> 2] = $286;\n     $289 = $labelInfo + 131084 + (($281 | 1) << 2) | 0;\n     $293 = HEAP32[$labelInfo + 1310736 + ($259 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$289 >> 2] | 0) < ($293 | 0)) HEAP32[$289 >> 2] = $293;\n     $296 = $labelInfo + 131084 + (($281 | 2) << 2) | 0;\n     $300 = HEAP32[$labelInfo + 1310736 + ($259 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$296 >> 2] | 0) > ($300 | 0)) HEAP32[$296 >> 2] = $300;\n     $303 = $labelInfo + 131084 + (($281 | 3) << 2) | 0;\n     $307 = HEAP32[$labelInfo + 1310736 + ($259 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$303 >> 2] | 0) < ($307 | 0)) HEAP32[$303 >> 2] = $307;\n     $i$537 = $i$537 + 1 | 0;\n    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$236 >> 2] | 0) > 0) {\n    $i$636 = 0;\n    do {\n     $311 = $labelInfo + 12 + ($i$636 << 2) | 0;\n     $314 = $i$636 << 1;\n     $315 = $labelInfo + 655376 + ($314 << 3) | 0;\n     HEAPF64[$315 >> 3] = +HEAPF64[$315 >> 3] / +(HEAP32[$311 >> 2] | 0);\n     $321 = $labelInfo + 655376 + (($314 | 1) << 3) | 0;\n     HEAPF64[$321 >> 3] = +HEAPF64[$321 >> 3] / +(HEAP32[$311 >> 2] | 0);\n     $i$636 = $i$636 + 1 | 0;\n    } while (($i$636 | 0) < (HEAP32[$236 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubEBRC($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $101 = 0, $104 = 0, $121 = 0, $123 = 0, $125 = 0, $129 = 0, $133 = 0, $136 = 0, $138 = 0, $142 = 0, $146 = 0, $150 = 0, $155 = 0, $157 = 0, $16 = 0, $161 = 0, $165 = 0, $169 = 0, $17 = 0, $175 = 0, $178 = 0, $18 = 0, $180 = 0, $184 = 0, $188 = 0, $192 = 0, $195 = 0, $200 = 0, $215 = 0, $216 = 0, $217 = 0, $224 = 0, $226 = 0, $232 = 0, $236 = 0, $237 = 0, $244 = 0, $25 = 0, $258 = 0, $259 = 0, $262 = 0, $269 = 0, $270 = 0, $278 = 0, $281 = 0, $282 = 0, $286 = 0, $289 = 0, $293 = 0, $296 = 0, $30 = 0, $300 = 0, $303 = 0, $307 = 0, $311 = 0, $314 = 0, $315 = 0, $321 = 0, $33 = 0, $35 = 0, $39 = 0, $43 = 0, $49 = 0, $50 = 0, $53 = 0, $54 = 0, $55 = 0, $58 = 0, $61 = 0, $78 = 0, $80 = 0, $82 = 0, $86 = 0, $9 = 0, $90 = 0, $96 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$088 = 0;\n  $pnt1$090 = $0;\n  $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$089 >> 1] = 0;\n   HEAP16[$pnt1$090 >> 1] = 0;\n   $i$088 = $i$088 + 1 | 0;\n   if (($i$088 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$090 = $pnt1$090 + 2 | 0;\n    $pnt2$089 = $pnt2$089 + 2 | 0;\n   }\n  }\n }\n $9 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$182 = 0;\n  $pnt1$184 = $0;\n  $pnt2$183 = $0 + ($9 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$183 >> 1] = 0;\n   HEAP16[$pnt1$184 >> 1] = 0;\n   $i$182 = $i$182 + 1 | 0;\n   if (($i$182 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;\n    $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0;\n   }\n  }\n }\n $16 = $labelInfo + 1179664 | 0;\n $17 = $xsize + 1 | 0;\n $18 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $25 = ($9 | 0) > 1;\n  $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $17 | 0;\n  $j$075 = 1;\n  $pnt$079 = $image + $17 | 0;\n  $pnt2$278 = $0 + ($17 << 1) | 0;\n  $wk_max$074 = 0;\n  L13 : while (1) {\n   if ($25) {\n    $dpnt$166 = $dpnt$077;\n    $i$264 = 1;\n    $pnt$168 = $pnt$079;\n    $pnt2$367 = $pnt2$278;\n    $wk_max$159 = $wk_max$074;\n    while (1) {\n     do if ((HEAPU8[$pnt$168 >> 0] | 0 | 0) > ($labelingThresh | 0)) {\n      HEAP16[$pnt2$367 >> 1] = 0;\n      HEAP8[$dpnt$166 >> 0] = 0;\n      $wk_max$2 = $wk_max$159;\n     } else {\n      HEAP8[$dpnt$166 >> 0] = -1;\n      $30 = HEAP16[$pnt2$367 + ($18 << 1) >> 1] | 0;\n      if ($30 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$367 >> 1] = $30;\n       $33 = ($30 << 16 >> 16) * 7 | 0;\n       $35 = $labelInfo + 1310736 + ($33 + -7 << 2) | 0;\n       HEAP32[$35 >> 2] = (HEAP32[$35 >> 2] | 0) + 1;\n       $39 = $labelInfo + 1310736 + ($33 + -6 << 2) | 0;\n       HEAP32[$39 >> 2] = (HEAP32[$39 >> 2] | 0) + $i$264;\n       $43 = $labelInfo + 1310736 + ($33 + -5 << 2) | 0;\n       HEAP32[$43 >> 2] = (HEAP32[$43 >> 2] | 0) + $j$075;\n       HEAP32[$labelInfo + 1310736 + ($33 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $49 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0;\n      $50 = $49 << 16 >> 16;\n      $53 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0;\n      $54 = $53 << 16 >> 16;\n      $55 = $53 << 16 >> 16 > 0;\n      if ($49 << 16 >> 16 <= 0) {\n       if ($55) {\n        HEAP16[$pnt2$367 >> 1] = $53;\n        $155 = $54 * 7 | 0;\n        $157 = $labelInfo + 1310736 + ($155 + -7 << 2) | 0;\n        HEAP32[$157 >> 2] = (HEAP32[$157 >> 2] | 0) + 1;\n        $161 = $labelInfo + 1310736 + ($155 + -6 << 2) | 0;\n        HEAP32[$161 >> 2] = (HEAP32[$161 >> 2] | 0) + $i$264;\n        $165 = $labelInfo + 1310736 + ($155 + -5 << 2) | 0;\n        HEAP32[$165 >> 2] = (HEAP32[$165 >> 2] | 0) + $j$075;\n        $169 = $labelInfo + 1310736 + ($155 + -3 << 2) | 0;\n        if ((HEAP32[$169 >> 2] | 0) < ($i$264 | 0)) HEAP32[$169 >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($155 + -1 << 2) >> 2] = $j$075;\n        $wk_max$2 = $wk_max$159;\n        break;\n       }\n       $175 = HEAP16[$pnt2$367 + -2 >> 1] | 0;\n       if ($175 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$367 >> 1] = $175;\n        $178 = ($175 << 16 >> 16) * 7 | 0;\n        $180 = $labelInfo + 1310736 + ($178 + -7 << 2) | 0;\n        HEAP32[$180 >> 2] = (HEAP32[$180 >> 2] | 0) + 1;\n        $184 = $labelInfo + 1310736 + ($178 + -6 << 2) | 0;\n        HEAP32[$184 >> 2] = (HEAP32[$184 >> 2] | 0) + $i$264;\n        $188 = $labelInfo + 1310736 + ($178 + -5 << 2) | 0;\n        HEAP32[$188 >> 2] = (HEAP32[$188 >> 2] | 0) + $j$075;\n        $192 = $labelInfo + 1310736 + ($178 + -3 << 2) | 0;\n        if ((HEAP32[$192 >> 2] | 0) >= ($i$264 | 0)) {\n         $wk_max$2 = $wk_max$159;\n         break;\n        }\n        HEAP32[$192 >> 2] = $i$264;\n        $wk_max$2 = $wk_max$159;\n        break;\n       } else {\n        $195 = $wk_max$159 + 1 | 0;\n        if (($wk_max$159 | 0) > 32767) break L13;\n        HEAP16[$pnt2$367 >> 1] = $195;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $195 << 16 >> 16;\n        $200 = $wk_max$159 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($200 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($200 + 1 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($200 + 2 << 2) >> 2] = $j$075;\n        HEAP32[$labelInfo + 1310736 + ($200 + 3 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($200 + 4 << 2) >> 2] = $i$264;\n        HEAP32[$labelInfo + 1310736 + ($200 + 5 << 2) >> 2] = $j$075;\n        HEAP32[$labelInfo + 1310736 + ($200 + 6 << 2) >> 2] = $j$075;\n        $wk_max$2 = $195;\n        break;\n       }\n      }\n      if ($55) {\n       $58 = HEAP32[$labelInfo + 1179664 + ($50 + -1 << 2) >> 2] | 0;\n       $61 = HEAP32[$labelInfo + 1179664 + ($54 + -1 << 2) >> 2] | 0;\n       if (($58 | 0) > ($61 | 0)) {\n        HEAP16[$pnt2$367 >> 1] = $61;\n        if (($wk_max$159 | 0) > 0) {\n         $k$055 = 0;\n         $wk$056 = $16;\n         while (1) {\n          if ((HEAP32[$wk$056 >> 2] | 0) == ($58 | 0)) HEAP32[$wk$056 >> 2] = $61;\n          $k$055 = $k$055 + 1 | 0;\n          if (($k$055 | 0) >= ($wk_max$159 | 0)) {\n           $78 = $61;\n           break;\n          } else $wk$056 = $wk$056 + 4 | 0;\n         }\n        } else $78 = $61;\n       } else {\n        HEAP16[$pnt2$367 >> 1] = $58;\n        if (($58 | 0) < ($61 | 0) & ($wk_max$159 | 0) > 0) {\n         $k$152 = 0;\n         $wk$153 = $16;\n         while (1) {\n          if ((HEAP32[$wk$153 >> 2] | 0) == ($61 | 0)) HEAP32[$wk$153 >> 2] = $58;\n          $k$152 = $k$152 + 1 | 0;\n          if (($k$152 | 0) >= ($wk_max$159 | 0)) {\n           $78 = $58;\n           break;\n          } else $wk$153 = $wk$153 + 4 | 0;\n         }\n        } else $78 = $58;\n       }\n       $80 = ($78 << 16 >> 16) * 7 | 0;\n       $82 = $labelInfo + 1310736 + ($80 + -7 << 2) | 0;\n       HEAP32[$82 >> 2] = (HEAP32[$82 >> 2] | 0) + 1;\n       $86 = $labelInfo + 1310736 + ($80 + -6 << 2) | 0;\n       HEAP32[$86 >> 2] = (HEAP32[$86 >> 2] | 0) + $i$264;\n       $90 = $labelInfo + 1310736 + ($80 + -5 << 2) | 0;\n       HEAP32[$90 >> 2] = (HEAP32[$90 >> 2] | 0) + $j$075;\n       HEAP32[$labelInfo + 1310736 + ($80 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $96 = HEAP16[$pnt2$367 + -2 >> 1] | 0;\n      if ($96 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$367 >> 1] = $49;\n       $136 = $50 * 7 | 0;\n       $138 = $labelInfo + 1310736 + ($136 + -7 << 2) | 0;\n       HEAP32[$138 >> 2] = (HEAP32[$138 >> 2] | 0) + 1;\n       $142 = $labelInfo + 1310736 + ($136 + -6 << 2) | 0;\n       HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + $i$264;\n       $146 = $labelInfo + 1310736 + ($136 + -5 << 2) | 0;\n       HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $j$075;\n       $150 = $labelInfo + 1310736 + ($136 + -4 << 2) | 0;\n       if ((HEAP32[$150 >> 2] | 0) > ($i$264 | 0)) HEAP32[$150 >> 2] = $i$264;\n       HEAP32[$labelInfo + 1310736 + ($136 + -1 << 2) >> 2] = $j$075;\n       $wk_max$2 = $wk_max$159;\n       break;\n      }\n      $101 = HEAP32[$labelInfo + 1179664 + ($50 + -1 << 2) >> 2] | 0;\n      $104 = HEAP32[$labelInfo + 1179664 + (($96 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($101 | 0) > ($104 | 0)) {\n       HEAP16[$pnt2$367 >> 1] = $104;\n       if (($wk_max$159 | 0) > 0) {\n        $k$248 = 0;\n        $wk$249 = $16;\n        while (1) {\n         if ((HEAP32[$wk$249 >> 2] | 0) == ($101 | 0)) HEAP32[$wk$249 >> 2] = $104;\n         $k$248 = $k$248 + 1 | 0;\n         if (($k$248 | 0) >= ($wk_max$159 | 0)) {\n          $121 = $104;\n          break;\n         } else $wk$249 = $wk$249 + 4 | 0;\n        }\n       } else $121 = $104;\n      } else {\n       HEAP16[$pnt2$367 >> 1] = $101;\n       if (($101 | 0) < ($104 | 0) & ($wk_max$159 | 0) > 0) {\n        $k$345 = 0;\n        $wk$346 = $16;\n        while (1) {\n         if ((HEAP32[$wk$346 >> 2] | 0) == ($104 | 0)) HEAP32[$wk$346 >> 2] = $101;\n         $k$345 = $k$345 + 1 | 0;\n         if (($k$345 | 0) >= ($wk_max$159 | 0)) {\n          $121 = $101;\n          break;\n         } else $wk$346 = $wk$346 + 4 | 0;\n        }\n       } else $121 = $101;\n      }\n      $123 = ($121 << 16 >> 16) * 7 | 0;\n      $125 = $labelInfo + 1310736 + ($123 + -7 << 2) | 0;\n      HEAP32[$125 >> 2] = (HEAP32[$125 >> 2] | 0) + 1;\n      $129 = $labelInfo + 1310736 + ($123 + -6 << 2) | 0;\n      HEAP32[$129 >> 2] = (HEAP32[$129 >> 2] | 0) + $i$264;\n      $133 = $labelInfo + 1310736 + ($123 + -5 << 2) | 0;\n      HEAP32[$133 >> 2] = (HEAP32[$133 >> 2] | 0) + $j$075;\n      $wk_max$2 = $wk_max$159;\n     } while (0);\n     $i$264 = $i$264 + 1 | 0;\n     $215 = $pnt$168 + 1 | 0;\n     $216 = $pnt2$367 + 2 | 0;\n     $217 = $dpnt$166 + 1 | 0;\n     if (($i$264 | 0) >= ($9 | 0)) {\n      $dpnt$1$lcssa = $217;\n      $pnt$1$lcssa = $215;\n      $pnt2$3$lcssa = $216;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $dpnt$166 = $217;\n      $pnt$168 = $215;\n      $pnt2$367 = $216;\n      $wk_max$159 = $wk_max$2;\n     }\n    }\n   } else {\n    $dpnt$1$lcssa = $dpnt$077;\n    $pnt$1$lcssa = $pnt$079;\n    $pnt2$3$lcssa = $pnt2$278;\n    $wk_max$1$lcssa = $wk_max$074;\n   }\n   $j$075 = $j$075 + 1 | 0;\n   if (($j$075 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $dpnt$077 = $dpnt$1$lcssa + 2 | 0;\n    $pnt$079 = $pnt$1$lcssa + 2 | 0;\n    $pnt2$278 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$074 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $224 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$341 = 1;\n   $j$142 = 1;\n   $wk$443 = $16;\n   while (1) {\n    $226 = HEAP32[$wk$443 >> 2] | 0;\n    if (($226 | 0) == ($i$341 | 0)) {\n     $232 = $j$142;\n     $j$2 = $j$142 + 1 | 0;\n    } else {\n     $232 = HEAP32[$labelInfo + 1179664 + ($226 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$142;\n    }\n    HEAP32[$wk$443 >> 2] = $232;\n    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$341 = $i$341 + 1 | 0;\n     $j$142 = $j$2;\n     $wk$443 = $wk$443 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $236 = $labelInfo + 8 | 0;\n  $237 = $j$1$lcssa + -1 | 0;\n  HEAP32[$236 >> 2] = $237;\n  if (!$237) $$0 = 0; else {\n   _memset($224 | 0, 0, $237 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $237 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$439 = 0;\n    do {\n     $244 = $i$439 << 2;\n     HEAP32[$labelInfo + 131084 + ($244 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($244 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($244 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($244 | 3) << 2) >> 2] = 0;\n     $i$439 = $i$439 + 1 | 0;\n    } while (($i$439 | 0) < (HEAP32[$236 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$537 = 0;\n    do {\n     $258 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;\n     $259 = $i$537 * 7 | 0;\n     $262 = $labelInfo + 12 + ($258 << 2) | 0;\n     HEAP32[$262 >> 2] = (HEAP32[$262 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($259 << 2) >> 2] | 0);\n     $269 = $258 << 1;\n     $270 = $labelInfo + 655376 + ($269 << 3) | 0;\n     HEAPF64[$270 >> 3] = +HEAPF64[$270 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($259 + 1 << 2) >> 2] | 0);\n     $278 = $labelInfo + 655376 + (($269 | 1) << 3) | 0;\n     HEAPF64[$278 >> 3] = +HEAPF64[$278 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($259 + 2 << 2) >> 2] | 0);\n     $281 = $258 << 2;\n     $282 = $labelInfo + 131084 + ($281 << 2) | 0;\n     $286 = HEAP32[$labelInfo + 1310736 + ($259 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$282 >> 2] | 0) > ($286 | 0)) HEAP32[$282 >> 2] = $286;\n     $289 = $labelInfo + 131084 + (($281 | 1) << 2) | 0;\n     $293 = HEAP32[$labelInfo + 1310736 + ($259 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$289 >> 2] | 0) < ($293 | 0)) HEAP32[$289 >> 2] = $293;\n     $296 = $labelInfo + 131084 + (($281 | 2) << 2) | 0;\n     $300 = HEAP32[$labelInfo + 1310736 + ($259 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$296 >> 2] | 0) > ($300 | 0)) HEAP32[$296 >> 2] = $300;\n     $303 = $labelInfo + 131084 + (($281 | 3) << 2) | 0;\n     $307 = HEAP32[$labelInfo + 1310736 + ($259 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$303 >> 2] | 0) < ($307 | 0)) HEAP32[$303 >> 2] = $307;\n     $i$537 = $i$537 + 1 | 0;\n    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$236 >> 2] | 0) > 0) {\n    $i$636 = 0;\n    do {\n     $311 = $labelInfo + 12 + ($i$636 << 2) | 0;\n     $314 = $i$636 << 1;\n     $315 = $labelInfo + 655376 + ($314 << 3) | 0;\n     HEAPF64[$315 >> 3] = +HEAPF64[$315 >> 3] / +(HEAP32[$311 >> 2] | 0);\n     $321 = $labelInfo + 655376 + (($314 | 1) << 3) | 0;\n     HEAPF64[$321 >> 3] = +HEAPF64[$321 >> 3] / +(HEAP32[$311 >> 2] | 0);\n     $i$636 = $i$636 + 1 | 0;\n    } while (($i$636 | 0) < (HEAP32[$236 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubDWZ($image, $xsize, $ysize, $image_thresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $image_thresh = $image_thresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $102 = 0, $119 = 0, $121 = 0, $123 = 0, $127 = 0, $131 = 0, $134 = 0, $136 = 0, $140 = 0, $144 = 0, $148 = 0, $153 = 0, $155 = 0, $159 = 0, $16 = 0, $163 = 0, $167 = 0, $17 = 0, $173 = 0, $176 = 0, $178 = 0, $18 = 0, $182 = 0, $186 = 0, $190 = 0, $193 = 0, $198 = 0, $213 = 0, $214 = 0, $215 = 0, $222 = 0, $224 = 0, $23 = 0, $230 = 0, $234 = 0, $235 = 0, $242 = 0, $256 = 0, $257 = 0, $260 = 0, $267 = 0, $268 = 0, $276 = 0, $279 = 0, $28 = 0, $280 = 0, $284 = 0, $287 = 0, $291 = 0, $294 = 0, $298 = 0, $301 = 0, $305 = 0, $309 = 0, $31 = 0, $312 = 0, $313 = 0, $319 = 0, $33 = 0, $37 = 0, $41 = 0, $47 = 0, $48 = 0, $51 = 0, $52 = 0, $53 = 0, $56 = 0, $59 = 0, $76 = 0, $78 = 0, $80 = 0, $84 = 0, $88 = 0, $9 = 0, $94 = 0, $99 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$088 = 0, $pnt2$182 = 0, $pnt2$274 = 0, $pnt2$3$lcssa = 0, $pnt2$359 = 0, $pnt_thresh$078 = 0, $pnt_thresh$1$lcssa = 0, $pnt_thresh$167 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$089 = 0;\n  $pnt1$090 = $0;\n  $pnt2$088 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$088 >> 1] = 0;\n   HEAP16[$pnt1$090 >> 1] = 0;\n   $i$089 = $i$089 + 1 | 0;\n   if (($i$089 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$090 = $pnt1$090 + 2 | 0;\n    $pnt2$088 = $pnt2$088 + 2 | 0;\n   }\n  }\n }\n $9 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$183 = 0;\n  $pnt1$184 = $0;\n  $pnt2$182 = $0 + ($9 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$182 >> 1] = 0;\n   HEAP16[$pnt1$184 >> 1] = 0;\n   $i$183 = $i$183 + 1 | 0;\n   if (($i$183 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;\n    $pnt2$182 = $pnt2$182 + ($xsize << 1) | 0;\n   }\n  }\n }\n $16 = $labelInfo + 1179664 | 0;\n $17 = $xsize + 1 | 0;\n $18 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $23 = ($9 | 0) > 1;\n  $j$076 = 1;\n  $pnt$079 = $image + $17 | 0;\n  $pnt2$274 = $0 + ($17 << 1) | 0;\n  $pnt_thresh$078 = $image_thresh + $17 | 0;\n  $wk_max$075 = 0;\n  L13 : while (1) {\n   if ($23) {\n    $i$265 = 1;\n    $pnt$168 = $pnt$079;\n    $pnt2$359 = $pnt2$274;\n    $pnt_thresh$167 = $pnt_thresh$078;\n    $wk_max$160 = $wk_max$075;\n    while (1) {\n     do if ((HEAPU8[$pnt$168 >> 0] | 0) > (HEAPU8[$pnt_thresh$167 >> 0] | 0)) {\n      $28 = HEAP16[$pnt2$359 + ($18 << 1) >> 1] | 0;\n      if ($28 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$359 >> 1] = $28;\n       $31 = ($28 << 16 >> 16) * 7 | 0;\n       $33 = $labelInfo + 1310736 + ($31 + -7 << 2) | 0;\n       HEAP32[$33 >> 2] = (HEAP32[$33 >> 2] | 0) + 1;\n       $37 = $labelInfo + 1310736 + ($31 + -6 << 2) | 0;\n       HEAP32[$37 >> 2] = (HEAP32[$37 >> 2] | 0) + $i$265;\n       $41 = $labelInfo + 1310736 + ($31 + -5 << 2) | 0;\n       HEAP32[$41 >> 2] = (HEAP32[$41 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($31 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $47 = HEAP16[$pnt2$359 + ($$sum << 1) >> 1] | 0;\n      $48 = $47 << 16 >> 16;\n      $51 = HEAP16[$pnt2$359 + ($$sum1 << 1) >> 1] | 0;\n      $52 = $51 << 16 >> 16;\n      $53 = $51 << 16 >> 16 > 0;\n      if ($47 << 16 >> 16 <= 0) {\n       if ($53) {\n        HEAP16[$pnt2$359 >> 1] = $51;\n        $153 = $52 * 7 | 0;\n        $155 = $labelInfo + 1310736 + ($153 + -7 << 2) | 0;\n        HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + 1;\n        $159 = $labelInfo + 1310736 + ($153 + -6 << 2) | 0;\n        HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $i$265;\n        $163 = $labelInfo + 1310736 + ($153 + -5 << 2) | 0;\n        HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + $j$076;\n        $167 = $labelInfo + 1310736 + ($153 + -3 << 2) | 0;\n        if ((HEAP32[$167 >> 2] | 0) < ($i$265 | 0)) HEAP32[$167 >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($153 + -1 << 2) >> 2] = $j$076;\n        $wk_max$2 = $wk_max$160;\n        break;\n       }\n       $173 = HEAP16[$pnt2$359 + -2 >> 1] | 0;\n       if ($173 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$359 >> 1] = $173;\n        $176 = ($173 << 16 >> 16) * 7 | 0;\n        $178 = $labelInfo + 1310736 + ($176 + -7 << 2) | 0;\n        HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + 1;\n        $182 = $labelInfo + 1310736 + ($176 + -6 << 2) | 0;\n        HEAP32[$182 >> 2] = (HEAP32[$182 >> 2] | 0) + $i$265;\n        $186 = $labelInfo + 1310736 + ($176 + -5 << 2) | 0;\n        HEAP32[$186 >> 2] = (HEAP32[$186 >> 2] | 0) + $j$076;\n        $190 = $labelInfo + 1310736 + ($176 + -3 << 2) | 0;\n        if ((HEAP32[$190 >> 2] | 0) >= ($i$265 | 0)) {\n         $wk_max$2 = $wk_max$160;\n         break;\n        }\n        HEAP32[$190 >> 2] = $i$265;\n        $wk_max$2 = $wk_max$160;\n        break;\n       } else {\n        $193 = $wk_max$160 + 1 | 0;\n        if (($wk_max$160 | 0) > 32767) break L13;\n        HEAP16[$pnt2$359 >> 1] = $193;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $193 << 16 >> 16;\n        $198 = $wk_max$160 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($198 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($198 + 1 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($198 + 2 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($198 + 3 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($198 + 4 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($198 + 5 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($198 + 6 << 2) >> 2] = $j$076;\n        $wk_max$2 = $193;\n        break;\n       }\n      }\n      if ($53) {\n       $56 = HEAP32[$labelInfo + 1179664 + ($48 + -1 << 2) >> 2] | 0;\n       $59 = HEAP32[$labelInfo + 1179664 + ($52 + -1 << 2) >> 2] | 0;\n       if (($56 | 0) > ($59 | 0)) {\n        HEAP16[$pnt2$359 >> 1] = $59;\n        if (($wk_max$160 | 0) > 0) {\n         $k$055 = 0;\n         $wk$056 = $16;\n         while (1) {\n          if ((HEAP32[$wk$056 >> 2] | 0) == ($56 | 0)) HEAP32[$wk$056 >> 2] = $59;\n          $k$055 = $k$055 + 1 | 0;\n          if (($k$055 | 0) >= ($wk_max$160 | 0)) {\n           $76 = $59;\n           break;\n          } else $wk$056 = $wk$056 + 4 | 0;\n         }\n        } else $76 = $59;\n       } else {\n        HEAP16[$pnt2$359 >> 1] = $56;\n        if (($56 | 0) < ($59 | 0) & ($wk_max$160 | 0) > 0) {\n         $k$152 = 0;\n         $wk$153 = $16;\n         while (1) {\n          if ((HEAP32[$wk$153 >> 2] | 0) == ($59 | 0)) HEAP32[$wk$153 >> 2] = $56;\n          $k$152 = $k$152 + 1 | 0;\n          if (($k$152 | 0) >= ($wk_max$160 | 0)) {\n           $76 = $56;\n           break;\n          } else $wk$153 = $wk$153 + 4 | 0;\n         }\n        } else $76 = $56;\n       }\n       $78 = ($76 << 16 >> 16) * 7 | 0;\n       $80 = $labelInfo + 1310736 + ($78 + -7 << 2) | 0;\n       HEAP32[$80 >> 2] = (HEAP32[$80 >> 2] | 0) + 1;\n       $84 = $labelInfo + 1310736 + ($78 + -6 << 2) | 0;\n       HEAP32[$84 >> 2] = (HEAP32[$84 >> 2] | 0) + $i$265;\n       $88 = $labelInfo + 1310736 + ($78 + -5 << 2) | 0;\n       HEAP32[$88 >> 2] = (HEAP32[$88 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($78 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $94 = HEAP16[$pnt2$359 + -2 >> 1] | 0;\n      if ($94 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$359 >> 1] = $47;\n       $134 = $48 * 7 | 0;\n       $136 = $labelInfo + 1310736 + ($134 + -7 << 2) | 0;\n       HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + 1;\n       $140 = $labelInfo + 1310736 + ($134 + -6 << 2) | 0;\n       HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $i$265;\n       $144 = $labelInfo + 1310736 + ($134 + -5 << 2) | 0;\n       HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $j$076;\n       $148 = $labelInfo + 1310736 + ($134 + -4 << 2) | 0;\n       if ((HEAP32[$148 >> 2] | 0) > ($i$265 | 0)) HEAP32[$148 >> 2] = $i$265;\n       HEAP32[$labelInfo + 1310736 + ($134 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $99 = HEAP32[$labelInfo + 1179664 + ($48 + -1 << 2) >> 2] | 0;\n      $102 = HEAP32[$labelInfo + 1179664 + (($94 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($99 | 0) > ($102 | 0)) {\n       HEAP16[$pnt2$359 >> 1] = $102;\n       if (($wk_max$160 | 0) > 0) {\n        $k$248 = 0;\n        $wk$249 = $16;\n        while (1) {\n         if ((HEAP32[$wk$249 >> 2] | 0) == ($99 | 0)) HEAP32[$wk$249 >> 2] = $102;\n         $k$248 = $k$248 + 1 | 0;\n         if (($k$248 | 0) >= ($wk_max$160 | 0)) {\n          $119 = $102;\n          break;\n         } else $wk$249 = $wk$249 + 4 | 0;\n        }\n       } else $119 = $102;\n      } else {\n       HEAP16[$pnt2$359 >> 1] = $99;\n       if (($99 | 0) < ($102 | 0) & ($wk_max$160 | 0) > 0) {\n        $k$345 = 0;\n        $wk$346 = $16;\n        while (1) {\n         if ((HEAP32[$wk$346 >> 2] | 0) == ($102 | 0)) HEAP32[$wk$346 >> 2] = $99;\n         $k$345 = $k$345 + 1 | 0;\n         if (($k$345 | 0) >= ($wk_max$160 | 0)) {\n          $119 = $99;\n          break;\n         } else $wk$346 = $wk$346 + 4 | 0;\n        }\n       } else $119 = $99;\n      }\n      $121 = ($119 << 16 >> 16) * 7 | 0;\n      $123 = $labelInfo + 1310736 + ($121 + -7 << 2) | 0;\n      HEAP32[$123 >> 2] = (HEAP32[$123 >> 2] | 0) + 1;\n      $127 = $labelInfo + 1310736 + ($121 + -6 << 2) | 0;\n      HEAP32[$127 >> 2] = (HEAP32[$127 >> 2] | 0) + $i$265;\n      $131 = $labelInfo + 1310736 + ($121 + -5 << 2) | 0;\n      HEAP32[$131 >> 2] = (HEAP32[$131 >> 2] | 0) + $j$076;\n      $wk_max$2 = $wk_max$160;\n     } else {\n      HEAP16[$pnt2$359 >> 1] = 0;\n      $wk_max$2 = $wk_max$160;\n     } while (0);\n     $i$265 = $i$265 + 1 | 0;\n     $213 = $pnt$168 + 1 | 0;\n     $214 = $pnt_thresh$167 + 1 | 0;\n     $215 = $pnt2$359 + 2 | 0;\n     if (($i$265 | 0) >= ($9 | 0)) {\n      $pnt$1$lcssa = $213;\n      $pnt2$3$lcssa = $215;\n      $pnt_thresh$1$lcssa = $214;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $pnt$168 = $213;\n      $pnt2$359 = $215;\n      $pnt_thresh$167 = $214;\n      $wk_max$160 = $wk_max$2;\n     }\n    }\n   } else {\n    $pnt$1$lcssa = $pnt$079;\n    $pnt2$3$lcssa = $pnt2$274;\n    $pnt_thresh$1$lcssa = $pnt_thresh$078;\n    $wk_max$1$lcssa = $wk_max$075;\n   }\n   $j$076 = $j$076 + 1 | 0;\n   if (($j$076 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $pnt$079 = $pnt$1$lcssa + 2 | 0;\n    $pnt2$274 = $pnt2$3$lcssa + 4 | 0;\n    $pnt_thresh$078 = $pnt_thresh$1$lcssa + 2 | 0;\n    $wk_max$075 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $222 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$341 = 1;\n   $j$142 = 1;\n   $wk$443 = $16;\n   while (1) {\n    $224 = HEAP32[$wk$443 >> 2] | 0;\n    if (($224 | 0) == ($i$341 | 0)) {\n     $230 = $j$142;\n     $j$2 = $j$142 + 1 | 0;\n    } else {\n     $230 = HEAP32[$labelInfo + 1179664 + ($224 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$142;\n    }\n    HEAP32[$wk$443 >> 2] = $230;\n    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$341 = $i$341 + 1 | 0;\n     $j$142 = $j$2;\n     $wk$443 = $wk$443 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $234 = $labelInfo + 8 | 0;\n  $235 = $j$1$lcssa + -1 | 0;\n  HEAP32[$234 >> 2] = $235;\n  if (!$235) $$0 = 0; else {\n   _memset($222 | 0, 0, $235 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $235 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$439 = 0;\n    do {\n     $242 = $i$439 << 2;\n     HEAP32[$labelInfo + 131084 + ($242 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($242 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($242 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($242 | 3) << 2) >> 2] = 0;\n     $i$439 = $i$439 + 1 | 0;\n    } while (($i$439 | 0) < (HEAP32[$234 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$537 = 0;\n    do {\n     $256 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;\n     $257 = $i$537 * 7 | 0;\n     $260 = $labelInfo + 12 + ($256 << 2) | 0;\n     HEAP32[$260 >> 2] = (HEAP32[$260 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($257 << 2) >> 2] | 0);\n     $267 = $256 << 1;\n     $268 = $labelInfo + 655376 + ($267 << 3) | 0;\n     HEAPF64[$268 >> 3] = +HEAPF64[$268 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($257 + 1 << 2) >> 2] | 0);\n     $276 = $labelInfo + 655376 + (($267 | 1) << 3) | 0;\n     HEAPF64[$276 >> 3] = +HEAPF64[$276 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($257 + 2 << 2) >> 2] | 0);\n     $279 = $256 << 2;\n     $280 = $labelInfo + 131084 + ($279 << 2) | 0;\n     $284 = HEAP32[$labelInfo + 1310736 + ($257 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$280 >> 2] | 0) > ($284 | 0)) HEAP32[$280 >> 2] = $284;\n     $287 = $labelInfo + 131084 + (($279 | 1) << 2) | 0;\n     $291 = HEAP32[$labelInfo + 1310736 + ($257 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$287 >> 2] | 0) < ($291 | 0)) HEAP32[$287 >> 2] = $291;\n     $294 = $labelInfo + 131084 + (($279 | 2) << 2) | 0;\n     $298 = HEAP32[$labelInfo + 1310736 + ($257 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$294 >> 2] | 0) > ($298 | 0)) HEAP32[$294 >> 2] = $298;\n     $301 = $labelInfo + 131084 + (($279 | 3) << 2) | 0;\n     $305 = HEAP32[$labelInfo + 1310736 + ($257 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$301 >> 2] | 0) < ($305 | 0)) HEAP32[$301 >> 2] = $305;\n     $i$537 = $i$537 + 1 | 0;\n    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$234 >> 2] | 0) > 0) {\n    $i$636 = 0;\n    do {\n     $309 = $labelInfo + 12 + ($i$636 << 2) | 0;\n     $312 = $i$636 << 1;\n     $313 = $labelInfo + 655376 + ($312 << 3) | 0;\n     HEAPF64[$313 >> 3] = +HEAPF64[$313 >> 3] / +(HEAP32[$309 >> 2] | 0);\n     $319 = $labelInfo + 655376 + (($312 | 1) << 3) | 0;\n     HEAPF64[$319 >> 3] = +HEAPF64[$319 >> 3] / +(HEAP32[$309 >> 2] | 0);\n     $i$636 = $i$636 + 1 | 0;\n    } while (($i$636 | 0) < (HEAP32[$234 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubDBZ($image, $xsize, $ysize, $image_thresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $image_thresh = $image_thresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $102 = 0, $119 = 0, $121 = 0, $123 = 0, $127 = 0, $131 = 0, $134 = 0, $136 = 0, $140 = 0, $144 = 0, $148 = 0, $153 = 0, $155 = 0, $159 = 0, $16 = 0, $163 = 0, $167 = 0, $17 = 0, $173 = 0, $176 = 0, $178 = 0, $18 = 0, $182 = 0, $186 = 0, $190 = 0, $193 = 0, $198 = 0, $213 = 0, $214 = 0, $215 = 0, $222 = 0, $224 = 0, $23 = 0, $230 = 0, $234 = 0, $235 = 0, $242 = 0, $256 = 0, $257 = 0, $260 = 0, $267 = 0, $268 = 0, $276 = 0, $279 = 0, $28 = 0, $280 = 0, $284 = 0, $287 = 0, $291 = 0, $294 = 0, $298 = 0, $301 = 0, $305 = 0, $309 = 0, $31 = 0, $312 = 0, $313 = 0, $319 = 0, $33 = 0, $37 = 0, $41 = 0, $47 = 0, $48 = 0, $51 = 0, $52 = 0, $53 = 0, $56 = 0, $59 = 0, $76 = 0, $78 = 0, $80 = 0, $84 = 0, $88 = 0, $9 = 0, $94 = 0, $99 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$088 = 0, $pnt2$182 = 0, $pnt2$274 = 0, $pnt2$3$lcssa = 0, $pnt2$359 = 0, $pnt_thresh$078 = 0, $pnt_thresh$1$lcssa = 0, $pnt_thresh$167 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$089 = 0;\n  $pnt1$090 = $0;\n  $pnt2$088 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$088 >> 1] = 0;\n   HEAP16[$pnt1$090 >> 1] = 0;\n   $i$089 = $i$089 + 1 | 0;\n   if (($i$089 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$090 = $pnt1$090 + 2 | 0;\n    $pnt2$088 = $pnt2$088 + 2 | 0;\n   }\n  }\n }\n $9 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$183 = 0;\n  $pnt1$184 = $0;\n  $pnt2$182 = $0 + ($9 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$182 >> 1] = 0;\n   HEAP16[$pnt1$184 >> 1] = 0;\n   $i$183 = $i$183 + 1 | 0;\n   if (($i$183 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;\n    $pnt2$182 = $pnt2$182 + ($xsize << 1) | 0;\n   }\n  }\n }\n $16 = $labelInfo + 1179664 | 0;\n $17 = $xsize + 1 | 0;\n $18 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $23 = ($9 | 0) > 1;\n  $j$076 = 1;\n  $pnt$079 = $image + $17 | 0;\n  $pnt2$274 = $0 + ($17 << 1) | 0;\n  $pnt_thresh$078 = $image_thresh + $17 | 0;\n  $wk_max$075 = 0;\n  L13 : while (1) {\n   if ($23) {\n    $i$265 = 1;\n    $pnt$168 = $pnt$079;\n    $pnt2$359 = $pnt2$274;\n    $pnt_thresh$167 = $pnt_thresh$078;\n    $wk_max$160 = $wk_max$075;\n    while (1) {\n     do if ((HEAPU8[$pnt$168 >> 0] | 0) > (HEAPU8[$pnt_thresh$167 >> 0] | 0)) {\n      HEAP16[$pnt2$359 >> 1] = 0;\n      $wk_max$2 = $wk_max$160;\n     } else {\n      $28 = HEAP16[$pnt2$359 + ($18 << 1) >> 1] | 0;\n      if ($28 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$359 >> 1] = $28;\n       $31 = ($28 << 16 >> 16) * 7 | 0;\n       $33 = $labelInfo + 1310736 + ($31 + -7 << 2) | 0;\n       HEAP32[$33 >> 2] = (HEAP32[$33 >> 2] | 0) + 1;\n       $37 = $labelInfo + 1310736 + ($31 + -6 << 2) | 0;\n       HEAP32[$37 >> 2] = (HEAP32[$37 >> 2] | 0) + $i$265;\n       $41 = $labelInfo + 1310736 + ($31 + -5 << 2) | 0;\n       HEAP32[$41 >> 2] = (HEAP32[$41 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($31 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $47 = HEAP16[$pnt2$359 + ($$sum << 1) >> 1] | 0;\n      $48 = $47 << 16 >> 16;\n      $51 = HEAP16[$pnt2$359 + ($$sum1 << 1) >> 1] | 0;\n      $52 = $51 << 16 >> 16;\n      $53 = $51 << 16 >> 16 > 0;\n      if ($47 << 16 >> 16 <= 0) {\n       if ($53) {\n        HEAP16[$pnt2$359 >> 1] = $51;\n        $153 = $52 * 7 | 0;\n        $155 = $labelInfo + 1310736 + ($153 + -7 << 2) | 0;\n        HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + 1;\n        $159 = $labelInfo + 1310736 + ($153 + -6 << 2) | 0;\n        HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $i$265;\n        $163 = $labelInfo + 1310736 + ($153 + -5 << 2) | 0;\n        HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + $j$076;\n        $167 = $labelInfo + 1310736 + ($153 + -3 << 2) | 0;\n        if ((HEAP32[$167 >> 2] | 0) < ($i$265 | 0)) HEAP32[$167 >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($153 + -1 << 2) >> 2] = $j$076;\n        $wk_max$2 = $wk_max$160;\n        break;\n       }\n       $173 = HEAP16[$pnt2$359 + -2 >> 1] | 0;\n       if ($173 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$359 >> 1] = $173;\n        $176 = ($173 << 16 >> 16) * 7 | 0;\n        $178 = $labelInfo + 1310736 + ($176 + -7 << 2) | 0;\n        HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + 1;\n        $182 = $labelInfo + 1310736 + ($176 + -6 << 2) | 0;\n        HEAP32[$182 >> 2] = (HEAP32[$182 >> 2] | 0) + $i$265;\n        $186 = $labelInfo + 1310736 + ($176 + -5 << 2) | 0;\n        HEAP32[$186 >> 2] = (HEAP32[$186 >> 2] | 0) + $j$076;\n        $190 = $labelInfo + 1310736 + ($176 + -3 << 2) | 0;\n        if ((HEAP32[$190 >> 2] | 0) >= ($i$265 | 0)) {\n         $wk_max$2 = $wk_max$160;\n         break;\n        }\n        HEAP32[$190 >> 2] = $i$265;\n        $wk_max$2 = $wk_max$160;\n        break;\n       } else {\n        $193 = $wk_max$160 + 1 | 0;\n        if (($wk_max$160 | 0) > 32767) break L13;\n        HEAP16[$pnt2$359 >> 1] = $193;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $193 << 16 >> 16;\n        $198 = $wk_max$160 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($198 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($198 + 1 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($198 + 2 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($198 + 3 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($198 + 4 << 2) >> 2] = $i$265;\n        HEAP32[$labelInfo + 1310736 + ($198 + 5 << 2) >> 2] = $j$076;\n        HEAP32[$labelInfo + 1310736 + ($198 + 6 << 2) >> 2] = $j$076;\n        $wk_max$2 = $193;\n        break;\n       }\n      }\n      if ($53) {\n       $56 = HEAP32[$labelInfo + 1179664 + ($48 + -1 << 2) >> 2] | 0;\n       $59 = HEAP32[$labelInfo + 1179664 + ($52 + -1 << 2) >> 2] | 0;\n       if (($56 | 0) > ($59 | 0)) {\n        HEAP16[$pnt2$359 >> 1] = $59;\n        if (($wk_max$160 | 0) > 0) {\n         $k$055 = 0;\n         $wk$056 = $16;\n         while (1) {\n          if ((HEAP32[$wk$056 >> 2] | 0) == ($56 | 0)) HEAP32[$wk$056 >> 2] = $59;\n          $k$055 = $k$055 + 1 | 0;\n          if (($k$055 | 0) >= ($wk_max$160 | 0)) {\n           $76 = $59;\n           break;\n          } else $wk$056 = $wk$056 + 4 | 0;\n         }\n        } else $76 = $59;\n       } else {\n        HEAP16[$pnt2$359 >> 1] = $56;\n        if (($56 | 0) < ($59 | 0) & ($wk_max$160 | 0) > 0) {\n         $k$152 = 0;\n         $wk$153 = $16;\n         while (1) {\n          if ((HEAP32[$wk$153 >> 2] | 0) == ($59 | 0)) HEAP32[$wk$153 >> 2] = $56;\n          $k$152 = $k$152 + 1 | 0;\n          if (($k$152 | 0) >= ($wk_max$160 | 0)) {\n           $76 = $56;\n           break;\n          } else $wk$153 = $wk$153 + 4 | 0;\n         }\n        } else $76 = $56;\n       }\n       $78 = ($76 << 16 >> 16) * 7 | 0;\n       $80 = $labelInfo + 1310736 + ($78 + -7 << 2) | 0;\n       HEAP32[$80 >> 2] = (HEAP32[$80 >> 2] | 0) + 1;\n       $84 = $labelInfo + 1310736 + ($78 + -6 << 2) | 0;\n       HEAP32[$84 >> 2] = (HEAP32[$84 >> 2] | 0) + $i$265;\n       $88 = $labelInfo + 1310736 + ($78 + -5 << 2) | 0;\n       HEAP32[$88 >> 2] = (HEAP32[$88 >> 2] | 0) + $j$076;\n       HEAP32[$labelInfo + 1310736 + ($78 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $94 = HEAP16[$pnt2$359 + -2 >> 1] | 0;\n      if ($94 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$359 >> 1] = $47;\n       $134 = $48 * 7 | 0;\n       $136 = $labelInfo + 1310736 + ($134 + -7 << 2) | 0;\n       HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + 1;\n       $140 = $labelInfo + 1310736 + ($134 + -6 << 2) | 0;\n       HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $i$265;\n       $144 = $labelInfo + 1310736 + ($134 + -5 << 2) | 0;\n       HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $j$076;\n       $148 = $labelInfo + 1310736 + ($134 + -4 << 2) | 0;\n       if ((HEAP32[$148 >> 2] | 0) > ($i$265 | 0)) HEAP32[$148 >> 2] = $i$265;\n       HEAP32[$labelInfo + 1310736 + ($134 + -1 << 2) >> 2] = $j$076;\n       $wk_max$2 = $wk_max$160;\n       break;\n      }\n      $99 = HEAP32[$labelInfo + 1179664 + ($48 + -1 << 2) >> 2] | 0;\n      $102 = HEAP32[$labelInfo + 1179664 + (($94 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($99 | 0) > ($102 | 0)) {\n       HEAP16[$pnt2$359 >> 1] = $102;\n       if (($wk_max$160 | 0) > 0) {\n        $k$248 = 0;\n        $wk$249 = $16;\n        while (1) {\n         if ((HEAP32[$wk$249 >> 2] | 0) == ($99 | 0)) HEAP32[$wk$249 >> 2] = $102;\n         $k$248 = $k$248 + 1 | 0;\n         if (($k$248 | 0) >= ($wk_max$160 | 0)) {\n          $119 = $102;\n          break;\n         } else $wk$249 = $wk$249 + 4 | 0;\n        }\n       } else $119 = $102;\n      } else {\n       HEAP16[$pnt2$359 >> 1] = $99;\n       if (($99 | 0) < ($102 | 0) & ($wk_max$160 | 0) > 0) {\n        $k$345 = 0;\n        $wk$346 = $16;\n        while (1) {\n         if ((HEAP32[$wk$346 >> 2] | 0) == ($102 | 0)) HEAP32[$wk$346 >> 2] = $99;\n         $k$345 = $k$345 + 1 | 0;\n         if (($k$345 | 0) >= ($wk_max$160 | 0)) {\n          $119 = $99;\n          break;\n         } else $wk$346 = $wk$346 + 4 | 0;\n        }\n       } else $119 = $99;\n      }\n      $121 = ($119 << 16 >> 16) * 7 | 0;\n      $123 = $labelInfo + 1310736 + ($121 + -7 << 2) | 0;\n      HEAP32[$123 >> 2] = (HEAP32[$123 >> 2] | 0) + 1;\n      $127 = $labelInfo + 1310736 + ($121 + -6 << 2) | 0;\n      HEAP32[$127 >> 2] = (HEAP32[$127 >> 2] | 0) + $i$265;\n      $131 = $labelInfo + 1310736 + ($121 + -5 << 2) | 0;\n      HEAP32[$131 >> 2] = (HEAP32[$131 >> 2] | 0) + $j$076;\n      $wk_max$2 = $wk_max$160;\n     } while (0);\n     $i$265 = $i$265 + 1 | 0;\n     $213 = $pnt$168 + 1 | 0;\n     $214 = $pnt_thresh$167 + 1 | 0;\n     $215 = $pnt2$359 + 2 | 0;\n     if (($i$265 | 0) >= ($9 | 0)) {\n      $pnt$1$lcssa = $213;\n      $pnt2$3$lcssa = $215;\n      $pnt_thresh$1$lcssa = $214;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $pnt$168 = $213;\n      $pnt2$359 = $215;\n      $pnt_thresh$167 = $214;\n      $wk_max$160 = $wk_max$2;\n     }\n    }\n   } else {\n    $pnt$1$lcssa = $pnt$079;\n    $pnt2$3$lcssa = $pnt2$274;\n    $pnt_thresh$1$lcssa = $pnt_thresh$078;\n    $wk_max$1$lcssa = $wk_max$075;\n   }\n   $j$076 = $j$076 + 1 | 0;\n   if (($j$076 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $pnt$079 = $pnt$1$lcssa + 2 | 0;\n    $pnt2$274 = $pnt2$3$lcssa + 4 | 0;\n    $pnt_thresh$078 = $pnt_thresh$1$lcssa + 2 | 0;\n    $wk_max$075 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $222 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$341 = 1;\n   $j$142 = 1;\n   $wk$443 = $16;\n   while (1) {\n    $224 = HEAP32[$wk$443 >> 2] | 0;\n    if (($224 | 0) == ($i$341 | 0)) {\n     $230 = $j$142;\n     $j$2 = $j$142 + 1 | 0;\n    } else {\n     $230 = HEAP32[$labelInfo + 1179664 + ($224 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$142;\n    }\n    HEAP32[$wk$443 >> 2] = $230;\n    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$341 = $i$341 + 1 | 0;\n     $j$142 = $j$2;\n     $wk$443 = $wk$443 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $234 = $labelInfo + 8 | 0;\n  $235 = $j$1$lcssa + -1 | 0;\n  HEAP32[$234 >> 2] = $235;\n  if (!$235) $$0 = 0; else {\n   _memset($222 | 0, 0, $235 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $235 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$439 = 0;\n    do {\n     $242 = $i$439 << 2;\n     HEAP32[$labelInfo + 131084 + ($242 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($242 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($242 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($242 | 3) << 2) >> 2] = 0;\n     $i$439 = $i$439 + 1 | 0;\n    } while (($i$439 | 0) < (HEAP32[$234 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$537 = 0;\n    do {\n     $256 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;\n     $257 = $i$537 * 7 | 0;\n     $260 = $labelInfo + 12 + ($256 << 2) | 0;\n     HEAP32[$260 >> 2] = (HEAP32[$260 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($257 << 2) >> 2] | 0);\n     $267 = $256 << 1;\n     $268 = $labelInfo + 655376 + ($267 << 3) | 0;\n     HEAPF64[$268 >> 3] = +HEAPF64[$268 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($257 + 1 << 2) >> 2] | 0);\n     $276 = $labelInfo + 655376 + (($267 | 1) << 3) | 0;\n     HEAPF64[$276 >> 3] = +HEAPF64[$276 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($257 + 2 << 2) >> 2] | 0);\n     $279 = $256 << 2;\n     $280 = $labelInfo + 131084 + ($279 << 2) | 0;\n     $284 = HEAP32[$labelInfo + 1310736 + ($257 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$280 >> 2] | 0) > ($284 | 0)) HEAP32[$280 >> 2] = $284;\n     $287 = $labelInfo + 131084 + (($279 | 1) << 2) | 0;\n     $291 = HEAP32[$labelInfo + 1310736 + ($257 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$287 >> 2] | 0) < ($291 | 0)) HEAP32[$287 >> 2] = $291;\n     $294 = $labelInfo + 131084 + (($279 | 2) << 2) | 0;\n     $298 = HEAP32[$labelInfo + 1310736 + ($257 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$294 >> 2] | 0) > ($298 | 0)) HEAP32[$294 >> 2] = $298;\n     $301 = $labelInfo + 131084 + (($279 | 3) << 2) | 0;\n     $305 = HEAP32[$labelInfo + 1310736 + ($257 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$301 >> 2] | 0) < ($305 | 0)) HEAP32[$301 >> 2] = $305;\n     $i$537 = $i$537 + 1 | 0;\n    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$234 >> 2] | 0) > 0) {\n    $i$636 = 0;\n    do {\n     $309 = $labelInfo + 12 + ($i$636 << 2) | 0;\n     $312 = $i$636 << 1;\n     $313 = $labelInfo + 655376 + ($312 << 3) | 0;\n     HEAPF64[$313 >> 3] = +HEAPF64[$313 >> 3] / +(HEAP32[$309 >> 2] | 0);\n     $319 = $labelInfo + 655376 + (($312 | 1) << 3) | 0;\n     HEAPF64[$319 >> 3] = +HEAPF64[$319 >> 3] / +(HEAP32[$309 >> 2] | 0);\n     $i$636 = $i$636 + 1 | 0;\n    } while (($i$636 | 0) < (HEAP32[$234 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubDWI3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $103 = 0, $107 = 0, $11 = 0, $113 = 0, $118 = 0, $12 = 0, $121 = 0, $138 = 0, $140 = 0, $142 = 0, $146 = 0, $150 = 0, $153 = 0, $155 = 0, $159 = 0, $163 = 0, $167 = 0, $172 = 0, $174 = 0, $178 = 0, $182 = 0, $186 = 0, $19 = 0, $192 = 0, $195 = 0, $197 = 0, $2 = 0, $201 = 0, $205 = 0, $209 = 0, $21 = 0, $212 = 0, $217 = 0, $232 = 0, $233 = 0, $239 = 0, $241 = 0, $247 = 0, $251 = 0, $252 = 0, $259 = 0, $273 = 0, $274 = 0, $277 = 0, $28 = 0, $284 = 0, $285 = 0, $293 = 0, $296 = 0, $297 = 0, $3 = 0, $30 = 0, $301 = 0, $304 = 0, $308 = 0, $311 = 0, $315 = 0, $318 = 0, $322 = 0, $326 = 0, $329 = 0, $330 = 0, $336 = 0, $36 = 0, $47 = 0, $50 = 0, $52 = 0, $56 = 0, $60 = 0, $66 = 0, $67 = 0, $70 = 0, $71 = 0, $72 = 0, $75 = 0, $78 = 0, $95 = 0, $97 = 0, $99 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = ($xsize | 0) / 2 | 0;\n $1 = ($ysize | 0) / 2 | 0;\n $2 = HEAP32[$labelInfo >> 2] | 0;\n $3 = $1 + -1 | 0;\n if (($xsize | 0) > 1) {\n  $i$082 = 0;\n  $pnt1$084 = $2;\n  $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$083 >> 1] = 0;\n   HEAP16[$pnt1$084 >> 1] = 0;\n   $i$082 = $i$082 + 1 | 0;\n   if (($i$082 | 0) >= ($0 | 0)) break; else {\n    $pnt1$084 = $pnt1$084 + 2 | 0;\n    $pnt2$083 = $pnt2$083 + 2 | 0;\n   }\n  }\n }\n $11 = $labelingThresh * 3 | 0;\n $12 = $0 + -1 | 0;\n if (($ysize | 0) > 1) {\n  $i$176 = 0;\n  $pnt1$178 = $2;\n  $pnt2$177 = $2 + ($12 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$177 >> 1] = 0;\n   HEAP16[$pnt1$178 >> 1] = 0;\n   $i$176 = $i$176 + 1 | 0;\n   if (($i$176 | 0) >= ($1 | 0)) break; else {\n    $pnt1$178 = $pnt1$178 + ($0 << 1) | 0;\n    $pnt2$177 = $pnt2$177 + ($0 << 1) | 0;\n   }\n  }\n }\n $19 = $labelInfo + 1179664 | 0;\n $21 = 0 - $0 | 0;\n $$sum1 = 1 - $0 | 0;\n $$sum2 = ~$0;\n $$sum = ($xsize << 1) + 8 | 0;\n L11 : do if (($3 | 0) > 1) {\n  $28 = ($12 | 0) > 1;\n  $j$069 = 1;\n  $pnt$073 = $image + (($xsize << 2) + 4) | 0;\n  $pnt2$272 = $2 + ($0 + 1 << 1) | 0;\n  $wk_max$071 = 0;\n  L13 : while (1) {\n   if ($28) {\n    $i$256 = 1;\n    $pnt$164 = $pnt$073;\n    $pnt2$363 = $pnt2$272;\n    $wk_max$158 = $wk_max$071;\n    while (1) {\n     $30 = HEAPU8[$pnt$164 >> 0] | 0;\n     $36 = HEAPU8[$pnt$164 + 1 >> 0] | 0;\n     do if ((($30 & 248) + 12 + ($30 << 5 & 224) + ($36 >>> 3 & 24) + ($36 << 2 & 248) | 0) > ($11 | 0)) {\n      $47 = HEAP16[$pnt2$363 + ($21 << 1) >> 1] | 0;\n      if ($47 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$363 >> 1] = $47;\n       $50 = ($47 << 16 >> 16) * 7 | 0;\n       $52 = $labelInfo + 1310736 + ($50 + -7 << 2) | 0;\n       HEAP32[$52 >> 2] = (HEAP32[$52 >> 2] | 0) + 1;\n       $56 = $labelInfo + 1310736 + ($50 + -6 << 2) | 0;\n       HEAP32[$56 >> 2] = (HEAP32[$56 >> 2] | 0) + $i$256;\n       $60 = $labelInfo + 1310736 + ($50 + -5 << 2) | 0;\n       HEAP32[$60 >> 2] = (HEAP32[$60 >> 2] | 0) + $j$069;\n       HEAP32[$labelInfo + 1310736 + ($50 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $66 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0;\n      $67 = $66 << 16 >> 16;\n      $70 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0;\n      $71 = $70 << 16 >> 16;\n      $72 = $70 << 16 >> 16 > 0;\n      if ($66 << 16 >> 16 <= 0) {\n       if ($72) {\n        HEAP16[$pnt2$363 >> 1] = $70;\n        $172 = $71 * 7 | 0;\n        $174 = $labelInfo + 1310736 + ($172 + -7 << 2) | 0;\n        HEAP32[$174 >> 2] = (HEAP32[$174 >> 2] | 0) + 1;\n        $178 = $labelInfo + 1310736 + ($172 + -6 << 2) | 0;\n        HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + $i$256;\n        $182 = $labelInfo + 1310736 + ($172 + -5 << 2) | 0;\n        HEAP32[$182 >> 2] = (HEAP32[$182 >> 2] | 0) + $j$069;\n        $186 = $labelInfo + 1310736 + ($172 + -3 << 2) | 0;\n        if ((HEAP32[$186 >> 2] | 0) < ($i$256 | 0)) HEAP32[$186 >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($172 + -1 << 2) >> 2] = $j$069;\n        $wk_max$2 = $wk_max$158;\n        break;\n       }\n       $192 = HEAP16[$pnt2$363 + -2 >> 1] | 0;\n       if ($192 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$363 >> 1] = $192;\n        $195 = ($192 << 16 >> 16) * 7 | 0;\n        $197 = $labelInfo + 1310736 + ($195 + -7 << 2) | 0;\n        HEAP32[$197 >> 2] = (HEAP32[$197 >> 2] | 0) + 1;\n        $201 = $labelInfo + 1310736 + ($195 + -6 << 2) | 0;\n        HEAP32[$201 >> 2] = (HEAP32[$201 >> 2] | 0) + $i$256;\n        $205 = $labelInfo + 1310736 + ($195 + -5 << 2) | 0;\n        HEAP32[$205 >> 2] = (HEAP32[$205 >> 2] | 0) + $j$069;\n        $209 = $labelInfo + 1310736 + ($195 + -3 << 2) | 0;\n        if ((HEAP32[$209 >> 2] | 0) >= ($i$256 | 0)) {\n         $wk_max$2 = $wk_max$158;\n         break;\n        }\n        HEAP32[$209 >> 2] = $i$256;\n        $wk_max$2 = $wk_max$158;\n        break;\n       } else {\n        $212 = $wk_max$158 + 1 | 0;\n        if (($wk_max$158 | 0) > 32767) break L13;\n        HEAP16[$pnt2$363 >> 1] = $212;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $212 << 16 >> 16;\n        $217 = $wk_max$158 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($217 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($217 + 1 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($217 + 2 << 2) >> 2] = $j$069;\n        HEAP32[$labelInfo + 1310736 + ($217 + 3 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($217 + 4 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($217 + 5 << 2) >> 2] = $j$069;\n        HEAP32[$labelInfo + 1310736 + ($217 + 6 << 2) >> 2] = $j$069;\n        $wk_max$2 = $212;\n        break;\n       }\n      }\n      if ($72) {\n       $75 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0;\n       $78 = HEAP32[$labelInfo + 1179664 + ($71 + -1 << 2) >> 2] | 0;\n       if (($75 | 0) > ($78 | 0)) {\n        HEAP16[$pnt2$363 >> 1] = $78;\n        if (($wk_max$158 | 0) > 0) {\n         $k$052 = 0;\n         $wk$053 = $19;\n         while (1) {\n          if ((HEAP32[$wk$053 >> 2] | 0) == ($75 | 0)) HEAP32[$wk$053 >> 2] = $78;\n          $k$052 = $k$052 + 1 | 0;\n          if (($k$052 | 0) >= ($wk_max$158 | 0)) {\n           $95 = $78;\n           break;\n          } else $wk$053 = $wk$053 + 4 | 0;\n         }\n        } else $95 = $78;\n       } else {\n        HEAP16[$pnt2$363 >> 1] = $75;\n        if (($75 | 0) < ($78 | 0) & ($wk_max$158 | 0) > 0) {\n         $k$149 = 0;\n         $wk$150 = $19;\n         while (1) {\n          if ((HEAP32[$wk$150 >> 2] | 0) == ($78 | 0)) HEAP32[$wk$150 >> 2] = $75;\n          $k$149 = $k$149 + 1 | 0;\n          if (($k$149 | 0) >= ($wk_max$158 | 0)) {\n           $95 = $75;\n           break;\n          } else $wk$150 = $wk$150 + 4 | 0;\n         }\n        } else $95 = $75;\n       }\n       $97 = ($95 << 16 >> 16) * 7 | 0;\n       $99 = $labelInfo + 1310736 + ($97 + -7 << 2) | 0;\n       HEAP32[$99 >> 2] = (HEAP32[$99 >> 2] | 0) + 1;\n       $103 = $labelInfo + 1310736 + ($97 + -6 << 2) | 0;\n       HEAP32[$103 >> 2] = (HEAP32[$103 >> 2] | 0) + $i$256;\n       $107 = $labelInfo + 1310736 + ($97 + -5 << 2) | 0;\n       HEAP32[$107 >> 2] = (HEAP32[$107 >> 2] | 0) + $j$069;\n       HEAP32[$labelInfo + 1310736 + ($97 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $113 = HEAP16[$pnt2$363 + -2 >> 1] | 0;\n      if ($113 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$363 >> 1] = $66;\n       $153 = $67 * 7 | 0;\n       $155 = $labelInfo + 1310736 + ($153 + -7 << 2) | 0;\n       HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + 1;\n       $159 = $labelInfo + 1310736 + ($153 + -6 << 2) | 0;\n       HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $i$256;\n       $163 = $labelInfo + 1310736 + ($153 + -5 << 2) | 0;\n       HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + $j$069;\n       $167 = $labelInfo + 1310736 + ($153 + -4 << 2) | 0;\n       if ((HEAP32[$167 >> 2] | 0) > ($i$256 | 0)) HEAP32[$167 >> 2] = $i$256;\n       HEAP32[$labelInfo + 1310736 + ($153 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $118 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0;\n      $121 = HEAP32[$labelInfo + 1179664 + (($113 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($118 | 0) > ($121 | 0)) {\n       HEAP16[$pnt2$363 >> 1] = $121;\n       if (($wk_max$158 | 0) > 0) {\n        $k$245 = 0;\n        $wk$246 = $19;\n        while (1) {\n         if ((HEAP32[$wk$246 >> 2] | 0) == ($118 | 0)) HEAP32[$wk$246 >> 2] = $121;\n         $k$245 = $k$245 + 1 | 0;\n         if (($k$245 | 0) >= ($wk_max$158 | 0)) {\n          $138 = $121;\n          break;\n         } else $wk$246 = $wk$246 + 4 | 0;\n        }\n       } else $138 = $121;\n      } else {\n       HEAP16[$pnt2$363 >> 1] = $118;\n       if (($118 | 0) < ($121 | 0) & ($wk_max$158 | 0) > 0) {\n        $k$342 = 0;\n        $wk$343 = $19;\n        while (1) {\n         if ((HEAP32[$wk$343 >> 2] | 0) == ($121 | 0)) HEAP32[$wk$343 >> 2] = $118;\n         $k$342 = $k$342 + 1 | 0;\n         if (($k$342 | 0) >= ($wk_max$158 | 0)) {\n          $138 = $118;\n          break;\n         } else $wk$343 = $wk$343 + 4 | 0;\n        }\n       } else $138 = $118;\n      }\n      $140 = ($138 << 16 >> 16) * 7 | 0;\n      $142 = $labelInfo + 1310736 + ($140 + -7 << 2) | 0;\n      HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + 1;\n      $146 = $labelInfo + 1310736 + ($140 + -6 << 2) | 0;\n      HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $i$256;\n      $150 = $labelInfo + 1310736 + ($140 + -5 << 2) | 0;\n      HEAP32[$150 >> 2] = (HEAP32[$150 >> 2] | 0) + $j$069;\n      $wk_max$2 = $wk_max$158;\n     } else {\n      HEAP16[$pnt2$363 >> 1] = 0;\n      $wk_max$2 = $wk_max$158;\n     } while (0);\n     $i$256 = $i$256 + 1 | 0;\n     $232 = $pnt$164 + 4 | 0;\n     $233 = $pnt2$363 + 2 | 0;\n     if (($i$256 | 0) >= ($12 | 0)) {\n      $pnt$1$lcssa = $232;\n      $pnt2$3$lcssa = $233;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $pnt$164 = $232;\n      $pnt2$363 = $233;\n      $wk_max$158 = $wk_max$2;\n     }\n    }\n   } else {\n    $pnt$1$lcssa = $pnt$073;\n    $pnt2$3$lcssa = $pnt2$272;\n    $wk_max$1$lcssa = $wk_max$071;\n   }\n   $j$069 = $j$069 + 1 | 0;\n   if (($j$069 | 0) >= ($3 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $pnt$073 = $pnt$1$lcssa + $$sum | 0;\n    $pnt2$272 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$071 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $239 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$338 = 1;\n   $j$139 = 1;\n   $wk$440 = $19;\n   while (1) {\n    $241 = HEAP32[$wk$440 >> 2] | 0;\n    if (($241 | 0) == ($i$338 | 0)) {\n     $247 = $j$139;\n     $j$2 = $j$139 + 1 | 0;\n    } else {\n     $247 = HEAP32[$labelInfo + 1179664 + ($241 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$139;\n    }\n    HEAP32[$wk$440 >> 2] = $247;\n    if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$338 = $i$338 + 1 | 0;\n     $j$139 = $j$2;\n     $wk$440 = $wk$440 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $251 = $labelInfo + 8 | 0;\n  $252 = $j$1$lcssa + -1 | 0;\n  HEAP32[$251 >> 2] = $252;\n  if (!$252) $$0 = 0; else {\n   _memset($239 | 0, 0, $252 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $252 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$436 = 0;\n    do {\n     $259 = $i$436 << 2;\n     HEAP32[$labelInfo + 131084 + ($259 << 2) >> 2] = $0;\n     HEAP32[$labelInfo + 131084 + (($259 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($259 | 2) << 2) >> 2] = $1;\n     HEAP32[$labelInfo + 131084 + (($259 | 3) << 2) >> 2] = 0;\n     $i$436 = $i$436 + 1 | 0;\n    } while (($i$436 | 0) < (HEAP32[$251 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$534 = 0;\n    do {\n     $273 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0;\n     $274 = $i$534 * 7 | 0;\n     $277 = $labelInfo + 12 + ($273 << 2) | 0;\n     HEAP32[$277 >> 2] = (HEAP32[$277 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($274 << 2) >> 2] | 0);\n     $284 = $273 << 1;\n     $285 = $labelInfo + 655376 + ($284 << 3) | 0;\n     HEAPF64[$285 >> 3] = +HEAPF64[$285 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($274 + 1 << 2) >> 2] | 0);\n     $293 = $labelInfo + 655376 + (($284 | 1) << 3) | 0;\n     HEAPF64[$293 >> 3] = +HEAPF64[$293 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($274 + 2 << 2) >> 2] | 0);\n     $296 = $273 << 2;\n     $297 = $labelInfo + 131084 + ($296 << 2) | 0;\n     $301 = HEAP32[$labelInfo + 1310736 + ($274 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$297 >> 2] | 0) > ($301 | 0)) HEAP32[$297 >> 2] = $301;\n     $304 = $labelInfo + 131084 + (($296 | 1) << 2) | 0;\n     $308 = HEAP32[$labelInfo + 1310736 + ($274 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$304 >> 2] | 0) < ($308 | 0)) HEAP32[$304 >> 2] = $308;\n     $311 = $labelInfo + 131084 + (($296 | 2) << 2) | 0;\n     $315 = HEAP32[$labelInfo + 1310736 + ($274 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$311 >> 2] | 0) > ($315 | 0)) HEAP32[$311 >> 2] = $315;\n     $318 = $labelInfo + 131084 + (($296 | 3) << 2) | 0;\n     $322 = HEAP32[$labelInfo + 1310736 + ($274 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$318 >> 2] | 0) < ($322 | 0)) HEAP32[$318 >> 2] = $322;\n     $i$534 = $i$534 + 1 | 0;\n    } while (($i$534 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$251 >> 2] | 0) > 0) {\n    $i$633 = 0;\n    do {\n     $326 = $labelInfo + 12 + ($i$633 << 2) | 0;\n     $329 = $i$633 << 1;\n     $330 = $labelInfo + 655376 + ($329 << 3) | 0;\n     HEAPF64[$330 >> 3] = +HEAPF64[$330 >> 3] / +(HEAP32[$326 >> 2] | 0);\n     $336 = $labelInfo + 655376 + (($329 | 1) << 3) | 0;\n     HEAPF64[$336 >> 3] = +HEAPF64[$336 >> 3] / +(HEAP32[$326 >> 2] | 0);\n     $i$633 = $i$633 + 1 | 0;\n    } while (($i$633 | 0) < (HEAP32[$251 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubDBI3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $103 = 0, $107 = 0, $11 = 0, $113 = 0, $118 = 0, $12 = 0, $121 = 0, $138 = 0, $140 = 0, $142 = 0, $146 = 0, $150 = 0, $153 = 0, $155 = 0, $159 = 0, $163 = 0, $167 = 0, $172 = 0, $174 = 0, $178 = 0, $182 = 0, $186 = 0, $19 = 0, $192 = 0, $195 = 0, $197 = 0, $2 = 0, $201 = 0, $205 = 0, $209 = 0, $21 = 0, $212 = 0, $217 = 0, $232 = 0, $233 = 0, $239 = 0, $241 = 0, $247 = 0, $251 = 0, $252 = 0, $259 = 0, $273 = 0, $274 = 0, $277 = 0, $28 = 0, $284 = 0, $285 = 0, $293 = 0, $296 = 0, $297 = 0, $3 = 0, $30 = 0, $301 = 0, $304 = 0, $308 = 0, $311 = 0, $315 = 0, $318 = 0, $322 = 0, $326 = 0, $329 = 0, $330 = 0, $336 = 0, $36 = 0, $47 = 0, $50 = 0, $52 = 0, $56 = 0, $60 = 0, $66 = 0, $67 = 0, $70 = 0, $71 = 0, $72 = 0, $75 = 0, $78 = 0, $95 = 0, $97 = 0, $99 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = ($xsize | 0) / 2 | 0;\n $1 = ($ysize | 0) / 2 | 0;\n $2 = HEAP32[$labelInfo >> 2] | 0;\n $3 = $1 + -1 | 0;\n if (($xsize | 0) > 1) {\n  $i$082 = 0;\n  $pnt1$084 = $2;\n  $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$083 >> 1] = 0;\n   HEAP16[$pnt1$084 >> 1] = 0;\n   $i$082 = $i$082 + 1 | 0;\n   if (($i$082 | 0) >= ($0 | 0)) break; else {\n    $pnt1$084 = $pnt1$084 + 2 | 0;\n    $pnt2$083 = $pnt2$083 + 2 | 0;\n   }\n  }\n }\n $11 = $labelingThresh * 3 | 0;\n $12 = $0 + -1 | 0;\n if (($ysize | 0) > 1) {\n  $i$176 = 0;\n  $pnt1$178 = $2;\n  $pnt2$177 = $2 + ($12 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$177 >> 1] = 0;\n   HEAP16[$pnt1$178 >> 1] = 0;\n   $i$176 = $i$176 + 1 | 0;\n   if (($i$176 | 0) >= ($1 | 0)) break; else {\n    $pnt1$178 = $pnt1$178 + ($0 << 1) | 0;\n    $pnt2$177 = $pnt2$177 + ($0 << 1) | 0;\n   }\n  }\n }\n $19 = $labelInfo + 1179664 | 0;\n $21 = 0 - $0 | 0;\n $$sum1 = 1 - $0 | 0;\n $$sum2 = ~$0;\n $$sum = ($xsize << 1) + 8 | 0;\n L11 : do if (($3 | 0) > 1) {\n  $28 = ($12 | 0) > 1;\n  $j$069 = 1;\n  $pnt$073 = $image + (($xsize << 2) + 4) | 0;\n  $pnt2$272 = $2 + ($0 + 1 << 1) | 0;\n  $wk_max$071 = 0;\n  L13 : while (1) {\n   if ($28) {\n    $i$256 = 1;\n    $pnt$164 = $pnt$073;\n    $pnt2$363 = $pnt2$272;\n    $wk_max$158 = $wk_max$071;\n    while (1) {\n     $30 = HEAPU8[$pnt$164 >> 0] | 0;\n     $36 = HEAPU8[$pnt$164 + 1 >> 0] | 0;\n     do if ((($30 & 248) + 12 + ($30 << 5 & 224) + ($36 >>> 3 & 24) + ($36 << 2 & 248) | 0) > ($11 | 0)) {\n      HEAP16[$pnt2$363 >> 1] = 0;\n      $wk_max$2 = $wk_max$158;\n     } else {\n      $47 = HEAP16[$pnt2$363 + ($21 << 1) >> 1] | 0;\n      if ($47 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$363 >> 1] = $47;\n       $50 = ($47 << 16 >> 16) * 7 | 0;\n       $52 = $labelInfo + 1310736 + ($50 + -7 << 2) | 0;\n       HEAP32[$52 >> 2] = (HEAP32[$52 >> 2] | 0) + 1;\n       $56 = $labelInfo + 1310736 + ($50 + -6 << 2) | 0;\n       HEAP32[$56 >> 2] = (HEAP32[$56 >> 2] | 0) + $i$256;\n       $60 = $labelInfo + 1310736 + ($50 + -5 << 2) | 0;\n       HEAP32[$60 >> 2] = (HEAP32[$60 >> 2] | 0) + $j$069;\n       HEAP32[$labelInfo + 1310736 + ($50 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $66 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0;\n      $67 = $66 << 16 >> 16;\n      $70 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0;\n      $71 = $70 << 16 >> 16;\n      $72 = $70 << 16 >> 16 > 0;\n      if ($66 << 16 >> 16 <= 0) {\n       if ($72) {\n        HEAP16[$pnt2$363 >> 1] = $70;\n        $172 = $71 * 7 | 0;\n        $174 = $labelInfo + 1310736 + ($172 + -7 << 2) | 0;\n        HEAP32[$174 >> 2] = (HEAP32[$174 >> 2] | 0) + 1;\n        $178 = $labelInfo + 1310736 + ($172 + -6 << 2) | 0;\n        HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + $i$256;\n        $182 = $labelInfo + 1310736 + ($172 + -5 << 2) | 0;\n        HEAP32[$182 >> 2] = (HEAP32[$182 >> 2] | 0) + $j$069;\n        $186 = $labelInfo + 1310736 + ($172 + -3 << 2) | 0;\n        if ((HEAP32[$186 >> 2] | 0) < ($i$256 | 0)) HEAP32[$186 >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($172 + -1 << 2) >> 2] = $j$069;\n        $wk_max$2 = $wk_max$158;\n        break;\n       }\n       $192 = HEAP16[$pnt2$363 + -2 >> 1] | 0;\n       if ($192 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$363 >> 1] = $192;\n        $195 = ($192 << 16 >> 16) * 7 | 0;\n        $197 = $labelInfo + 1310736 + ($195 + -7 << 2) | 0;\n        HEAP32[$197 >> 2] = (HEAP32[$197 >> 2] | 0) + 1;\n        $201 = $labelInfo + 1310736 + ($195 + -6 << 2) | 0;\n        HEAP32[$201 >> 2] = (HEAP32[$201 >> 2] | 0) + $i$256;\n        $205 = $labelInfo + 1310736 + ($195 + -5 << 2) | 0;\n        HEAP32[$205 >> 2] = (HEAP32[$205 >> 2] | 0) + $j$069;\n        $209 = $labelInfo + 1310736 + ($195 + -3 << 2) | 0;\n        if ((HEAP32[$209 >> 2] | 0) >= ($i$256 | 0)) {\n         $wk_max$2 = $wk_max$158;\n         break;\n        }\n        HEAP32[$209 >> 2] = $i$256;\n        $wk_max$2 = $wk_max$158;\n        break;\n       } else {\n        $212 = $wk_max$158 + 1 | 0;\n        if (($wk_max$158 | 0) > 32767) break L13;\n        HEAP16[$pnt2$363 >> 1] = $212;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $212 << 16 >> 16;\n        $217 = $wk_max$158 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($217 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($217 + 1 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($217 + 2 << 2) >> 2] = $j$069;\n        HEAP32[$labelInfo + 1310736 + ($217 + 3 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($217 + 4 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($217 + 5 << 2) >> 2] = $j$069;\n        HEAP32[$labelInfo + 1310736 + ($217 + 6 << 2) >> 2] = $j$069;\n        $wk_max$2 = $212;\n        break;\n       }\n      }\n      if ($72) {\n       $75 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0;\n       $78 = HEAP32[$labelInfo + 1179664 + ($71 + -1 << 2) >> 2] | 0;\n       if (($75 | 0) > ($78 | 0)) {\n        HEAP16[$pnt2$363 >> 1] = $78;\n        if (($wk_max$158 | 0) > 0) {\n         $k$052 = 0;\n         $wk$053 = $19;\n         while (1) {\n          if ((HEAP32[$wk$053 >> 2] | 0) == ($75 | 0)) HEAP32[$wk$053 >> 2] = $78;\n          $k$052 = $k$052 + 1 | 0;\n          if (($k$052 | 0) >= ($wk_max$158 | 0)) {\n           $95 = $78;\n           break;\n          } else $wk$053 = $wk$053 + 4 | 0;\n         }\n        } else $95 = $78;\n       } else {\n        HEAP16[$pnt2$363 >> 1] = $75;\n        if (($75 | 0) < ($78 | 0) & ($wk_max$158 | 0) > 0) {\n         $k$149 = 0;\n         $wk$150 = $19;\n         while (1) {\n          if ((HEAP32[$wk$150 >> 2] | 0) == ($78 | 0)) HEAP32[$wk$150 >> 2] = $75;\n          $k$149 = $k$149 + 1 | 0;\n          if (($k$149 | 0) >= ($wk_max$158 | 0)) {\n           $95 = $75;\n           break;\n          } else $wk$150 = $wk$150 + 4 | 0;\n         }\n        } else $95 = $75;\n       }\n       $97 = ($95 << 16 >> 16) * 7 | 0;\n       $99 = $labelInfo + 1310736 + ($97 + -7 << 2) | 0;\n       HEAP32[$99 >> 2] = (HEAP32[$99 >> 2] | 0) + 1;\n       $103 = $labelInfo + 1310736 + ($97 + -6 << 2) | 0;\n       HEAP32[$103 >> 2] = (HEAP32[$103 >> 2] | 0) + $i$256;\n       $107 = $labelInfo + 1310736 + ($97 + -5 << 2) | 0;\n       HEAP32[$107 >> 2] = (HEAP32[$107 >> 2] | 0) + $j$069;\n       HEAP32[$labelInfo + 1310736 + ($97 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $113 = HEAP16[$pnt2$363 + -2 >> 1] | 0;\n      if ($113 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$363 >> 1] = $66;\n       $153 = $67 * 7 | 0;\n       $155 = $labelInfo + 1310736 + ($153 + -7 << 2) | 0;\n       HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + 1;\n       $159 = $labelInfo + 1310736 + ($153 + -6 << 2) | 0;\n       HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $i$256;\n       $163 = $labelInfo + 1310736 + ($153 + -5 << 2) | 0;\n       HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + $j$069;\n       $167 = $labelInfo + 1310736 + ($153 + -4 << 2) | 0;\n       if ((HEAP32[$167 >> 2] | 0) > ($i$256 | 0)) HEAP32[$167 >> 2] = $i$256;\n       HEAP32[$labelInfo + 1310736 + ($153 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $118 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0;\n      $121 = HEAP32[$labelInfo + 1179664 + (($113 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($118 | 0) > ($121 | 0)) {\n       HEAP16[$pnt2$363 >> 1] = $121;\n       if (($wk_max$158 | 0) > 0) {\n        $k$245 = 0;\n        $wk$246 = $19;\n        while (1) {\n         if ((HEAP32[$wk$246 >> 2] | 0) == ($118 | 0)) HEAP32[$wk$246 >> 2] = $121;\n         $k$245 = $k$245 + 1 | 0;\n         if (($k$245 | 0) >= ($wk_max$158 | 0)) {\n          $138 = $121;\n          break;\n         } else $wk$246 = $wk$246 + 4 | 0;\n        }\n       } else $138 = $121;\n      } else {\n       HEAP16[$pnt2$363 >> 1] = $118;\n       if (($118 | 0) < ($121 | 0) & ($wk_max$158 | 0) > 0) {\n        $k$342 = 0;\n        $wk$343 = $19;\n        while (1) {\n         if ((HEAP32[$wk$343 >> 2] | 0) == ($121 | 0)) HEAP32[$wk$343 >> 2] = $118;\n         $k$342 = $k$342 + 1 | 0;\n         if (($k$342 | 0) >= ($wk_max$158 | 0)) {\n          $138 = $118;\n          break;\n         } else $wk$343 = $wk$343 + 4 | 0;\n        }\n       } else $138 = $118;\n      }\n      $140 = ($138 << 16 >> 16) * 7 | 0;\n      $142 = $labelInfo + 1310736 + ($140 + -7 << 2) | 0;\n      HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + 1;\n      $146 = $labelInfo + 1310736 + ($140 + -6 << 2) | 0;\n      HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $i$256;\n      $150 = $labelInfo + 1310736 + ($140 + -5 << 2) | 0;\n      HEAP32[$150 >> 2] = (HEAP32[$150 >> 2] | 0) + $j$069;\n      $wk_max$2 = $wk_max$158;\n     } while (0);\n     $i$256 = $i$256 + 1 | 0;\n     $232 = $pnt$164 + 4 | 0;\n     $233 = $pnt2$363 + 2 | 0;\n     if (($i$256 | 0) >= ($12 | 0)) {\n      $pnt$1$lcssa = $232;\n      $pnt2$3$lcssa = $233;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $pnt$164 = $232;\n      $pnt2$363 = $233;\n      $wk_max$158 = $wk_max$2;\n     }\n    }\n   } else {\n    $pnt$1$lcssa = $pnt$073;\n    $pnt2$3$lcssa = $pnt2$272;\n    $wk_max$1$lcssa = $wk_max$071;\n   }\n   $j$069 = $j$069 + 1 | 0;\n   if (($j$069 | 0) >= ($3 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $pnt$073 = $pnt$1$lcssa + $$sum | 0;\n    $pnt2$272 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$071 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $239 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$338 = 1;\n   $j$139 = 1;\n   $wk$440 = $19;\n   while (1) {\n    $241 = HEAP32[$wk$440 >> 2] | 0;\n    if (($241 | 0) == ($i$338 | 0)) {\n     $247 = $j$139;\n     $j$2 = $j$139 + 1 | 0;\n    } else {\n     $247 = HEAP32[$labelInfo + 1179664 + ($241 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$139;\n    }\n    HEAP32[$wk$440 >> 2] = $247;\n    if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$338 = $i$338 + 1 | 0;\n     $j$139 = $j$2;\n     $wk$440 = $wk$440 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $251 = $labelInfo + 8 | 0;\n  $252 = $j$1$lcssa + -1 | 0;\n  HEAP32[$251 >> 2] = $252;\n  if (!$252) $$0 = 0; else {\n   _memset($239 | 0, 0, $252 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $252 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$436 = 0;\n    do {\n     $259 = $i$436 << 2;\n     HEAP32[$labelInfo + 131084 + ($259 << 2) >> 2] = $0;\n     HEAP32[$labelInfo + 131084 + (($259 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($259 | 2) << 2) >> 2] = $1;\n     HEAP32[$labelInfo + 131084 + (($259 | 3) << 2) >> 2] = 0;\n     $i$436 = $i$436 + 1 | 0;\n    } while (($i$436 | 0) < (HEAP32[$251 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$534 = 0;\n    do {\n     $273 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0;\n     $274 = $i$534 * 7 | 0;\n     $277 = $labelInfo + 12 + ($273 << 2) | 0;\n     HEAP32[$277 >> 2] = (HEAP32[$277 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($274 << 2) >> 2] | 0);\n     $284 = $273 << 1;\n     $285 = $labelInfo + 655376 + ($284 << 3) | 0;\n     HEAPF64[$285 >> 3] = +HEAPF64[$285 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($274 + 1 << 2) >> 2] | 0);\n     $293 = $labelInfo + 655376 + (($284 | 1) << 3) | 0;\n     HEAPF64[$293 >> 3] = +HEAPF64[$293 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($274 + 2 << 2) >> 2] | 0);\n     $296 = $273 << 2;\n     $297 = $labelInfo + 131084 + ($296 << 2) | 0;\n     $301 = HEAP32[$labelInfo + 1310736 + ($274 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$297 >> 2] | 0) > ($301 | 0)) HEAP32[$297 >> 2] = $301;\n     $304 = $labelInfo + 131084 + (($296 | 1) << 2) | 0;\n     $308 = HEAP32[$labelInfo + 1310736 + ($274 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$304 >> 2] | 0) < ($308 | 0)) HEAP32[$304 >> 2] = $308;\n     $311 = $labelInfo + 131084 + (($296 | 2) << 2) | 0;\n     $315 = HEAP32[$labelInfo + 1310736 + ($274 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$311 >> 2] | 0) > ($315 | 0)) HEAP32[$311 >> 2] = $315;\n     $318 = $labelInfo + 131084 + (($296 | 3) << 2) | 0;\n     $322 = HEAP32[$labelInfo + 1310736 + ($274 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$318 >> 2] | 0) < ($322 | 0)) HEAP32[$318 >> 2] = $322;\n     $i$534 = $i$534 + 1 | 0;\n    } while (($i$534 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$251 >> 2] | 0) > 0) {\n    $i$633 = 0;\n    do {\n     $326 = $labelInfo + 12 + ($i$633 << 2) | 0;\n     $329 = $i$633 << 1;\n     $330 = $labelInfo + 655376 + ($329 << 3) | 0;\n     HEAPF64[$330 >> 3] = +HEAPF64[$330 >> 3] / +(HEAP32[$326 >> 2] | 0);\n     $336 = $labelInfo + 655376 + (($329 | 1) << 3) | 0;\n     HEAPF64[$336 >> 3] = +HEAPF64[$336 >> 3] / +(HEAP32[$326 >> 2] | 0);\n     $i$633 = $i$633 + 1 | 0;\n    } while (($i$633 | 0) < (HEAP32[$251 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubDWI3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $103 = 0, $107 = 0, $11 = 0, $113 = 0, $118 = 0, $12 = 0, $121 = 0, $138 = 0, $140 = 0, $142 = 0, $146 = 0, $150 = 0, $153 = 0, $155 = 0, $159 = 0, $163 = 0, $167 = 0, $172 = 0, $174 = 0, $178 = 0, $182 = 0, $186 = 0, $19 = 0, $192 = 0, $195 = 0, $197 = 0, $2 = 0, $201 = 0, $205 = 0, $209 = 0, $21 = 0, $212 = 0, $217 = 0, $232 = 0, $233 = 0, $239 = 0, $241 = 0, $247 = 0, $251 = 0, $252 = 0, $259 = 0, $273 = 0, $274 = 0, $277 = 0, $28 = 0, $284 = 0, $285 = 0, $293 = 0, $296 = 0, $297 = 0, $3 = 0, $30 = 0, $301 = 0, $304 = 0, $308 = 0, $311 = 0, $315 = 0, $318 = 0, $322 = 0, $326 = 0, $329 = 0, $330 = 0, $336 = 0, $36 = 0, $47 = 0, $50 = 0, $52 = 0, $56 = 0, $60 = 0, $66 = 0, $67 = 0, $70 = 0, $71 = 0, $72 = 0, $75 = 0, $78 = 0, $95 = 0, $97 = 0, $99 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = ($xsize | 0) / 2 | 0;\n $1 = ($ysize | 0) / 2 | 0;\n $2 = HEAP32[$labelInfo >> 2] | 0;\n $3 = $1 + -1 | 0;\n if (($xsize | 0) > 1) {\n  $i$082 = 0;\n  $pnt1$084 = $2;\n  $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$083 >> 1] = 0;\n   HEAP16[$pnt1$084 >> 1] = 0;\n   $i$082 = $i$082 + 1 | 0;\n   if (($i$082 | 0) >= ($0 | 0)) break; else {\n    $pnt1$084 = $pnt1$084 + 2 | 0;\n    $pnt2$083 = $pnt2$083 + 2 | 0;\n   }\n  }\n }\n $11 = $labelingThresh * 3 | 0;\n $12 = $0 + -1 | 0;\n if (($ysize | 0) > 1) {\n  $i$176 = 0;\n  $pnt1$178 = $2;\n  $pnt2$177 = $2 + ($12 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$177 >> 1] = 0;\n   HEAP16[$pnt1$178 >> 1] = 0;\n   $i$176 = $i$176 + 1 | 0;\n   if (($i$176 | 0) >= ($1 | 0)) break; else {\n    $pnt1$178 = $pnt1$178 + ($0 << 1) | 0;\n    $pnt2$177 = $pnt2$177 + ($0 << 1) | 0;\n   }\n  }\n }\n $19 = $labelInfo + 1179664 | 0;\n $21 = 0 - $0 | 0;\n $$sum1 = 1 - $0 | 0;\n $$sum2 = ~$0;\n $$sum = ($xsize << 1) + 8 | 0;\n L11 : do if (($3 | 0) > 1) {\n  $28 = ($12 | 0) > 1;\n  $j$069 = 1;\n  $pnt$073 = $image + (($xsize << 2) + 4) | 0;\n  $pnt2$272 = $2 + ($0 + 1 << 1) | 0;\n  $wk_max$071 = 0;\n  L13 : while (1) {\n   if ($28) {\n    $i$256 = 1;\n    $pnt$164 = $pnt$073;\n    $pnt2$363 = $pnt2$272;\n    $wk_max$158 = $wk_max$071;\n    while (1) {\n     $30 = HEAPU8[$pnt$164 >> 0] | 0;\n     $36 = HEAPU8[$pnt$164 + 1 >> 0] | 0;\n     do if ((($30 & 248) + 10 + ($30 << 5 & 224) + ($36 >>> 3 & 28) + ($36 << 3 & 248) | 0) > ($11 | 0)) {\n      $47 = HEAP16[$pnt2$363 + ($21 << 1) >> 1] | 0;\n      if ($47 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$363 >> 1] = $47;\n       $50 = ($47 << 16 >> 16) * 7 | 0;\n       $52 = $labelInfo + 1310736 + ($50 + -7 << 2) | 0;\n       HEAP32[$52 >> 2] = (HEAP32[$52 >> 2] | 0) + 1;\n       $56 = $labelInfo + 1310736 + ($50 + -6 << 2) | 0;\n       HEAP32[$56 >> 2] = (HEAP32[$56 >> 2] | 0) + $i$256;\n       $60 = $labelInfo + 1310736 + ($50 + -5 << 2) | 0;\n       HEAP32[$60 >> 2] = (HEAP32[$60 >> 2] | 0) + $j$069;\n       HEAP32[$labelInfo + 1310736 + ($50 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $66 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0;\n      $67 = $66 << 16 >> 16;\n      $70 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0;\n      $71 = $70 << 16 >> 16;\n      $72 = $70 << 16 >> 16 > 0;\n      if ($66 << 16 >> 16 <= 0) {\n       if ($72) {\n        HEAP16[$pnt2$363 >> 1] = $70;\n        $172 = $71 * 7 | 0;\n        $174 = $labelInfo + 1310736 + ($172 + -7 << 2) | 0;\n        HEAP32[$174 >> 2] = (HEAP32[$174 >> 2] | 0) + 1;\n        $178 = $labelInfo + 1310736 + ($172 + -6 << 2) | 0;\n        HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + $i$256;\n        $182 = $labelInfo + 1310736 + ($172 + -5 << 2) | 0;\n        HEAP32[$182 >> 2] = (HEAP32[$182 >> 2] | 0) + $j$069;\n        $186 = $labelInfo + 1310736 + ($172 + -3 << 2) | 0;\n        if ((HEAP32[$186 >> 2] | 0) < ($i$256 | 0)) HEAP32[$186 >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($172 + -1 << 2) >> 2] = $j$069;\n        $wk_max$2 = $wk_max$158;\n        break;\n       }\n       $192 = HEAP16[$pnt2$363 + -2 >> 1] | 0;\n       if ($192 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$363 >> 1] = $192;\n        $195 = ($192 << 16 >> 16) * 7 | 0;\n        $197 = $labelInfo + 1310736 + ($195 + -7 << 2) | 0;\n        HEAP32[$197 >> 2] = (HEAP32[$197 >> 2] | 0) + 1;\n        $201 = $labelInfo + 1310736 + ($195 + -6 << 2) | 0;\n        HEAP32[$201 >> 2] = (HEAP32[$201 >> 2] | 0) + $i$256;\n        $205 = $labelInfo + 1310736 + ($195 + -5 << 2) | 0;\n        HEAP32[$205 >> 2] = (HEAP32[$205 >> 2] | 0) + $j$069;\n        $209 = $labelInfo + 1310736 + ($195 + -3 << 2) | 0;\n        if ((HEAP32[$209 >> 2] | 0) >= ($i$256 | 0)) {\n         $wk_max$2 = $wk_max$158;\n         break;\n        }\n        HEAP32[$209 >> 2] = $i$256;\n        $wk_max$2 = $wk_max$158;\n        break;\n       } else {\n        $212 = $wk_max$158 + 1 | 0;\n        if (($wk_max$158 | 0) > 32767) break L13;\n        HEAP16[$pnt2$363 >> 1] = $212;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $212 << 16 >> 16;\n        $217 = $wk_max$158 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($217 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($217 + 1 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($217 + 2 << 2) >> 2] = $j$069;\n        HEAP32[$labelInfo + 1310736 + ($217 + 3 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($217 + 4 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($217 + 5 << 2) >> 2] = $j$069;\n        HEAP32[$labelInfo + 1310736 + ($217 + 6 << 2) >> 2] = $j$069;\n        $wk_max$2 = $212;\n        break;\n       }\n      }\n      if ($72) {\n       $75 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0;\n       $78 = HEAP32[$labelInfo + 1179664 + ($71 + -1 << 2) >> 2] | 0;\n       if (($75 | 0) > ($78 | 0)) {\n        HEAP16[$pnt2$363 >> 1] = $78;\n        if (($wk_max$158 | 0) > 0) {\n         $k$052 = 0;\n         $wk$053 = $19;\n         while (1) {\n          if ((HEAP32[$wk$053 >> 2] | 0) == ($75 | 0)) HEAP32[$wk$053 >> 2] = $78;\n          $k$052 = $k$052 + 1 | 0;\n          if (($k$052 | 0) >= ($wk_max$158 | 0)) {\n           $95 = $78;\n           break;\n          } else $wk$053 = $wk$053 + 4 | 0;\n         }\n        } else $95 = $78;\n       } else {\n        HEAP16[$pnt2$363 >> 1] = $75;\n        if (($75 | 0) < ($78 | 0) & ($wk_max$158 | 0) > 0) {\n         $k$149 = 0;\n         $wk$150 = $19;\n         while (1) {\n          if ((HEAP32[$wk$150 >> 2] | 0) == ($78 | 0)) HEAP32[$wk$150 >> 2] = $75;\n          $k$149 = $k$149 + 1 | 0;\n          if (($k$149 | 0) >= ($wk_max$158 | 0)) {\n           $95 = $75;\n           break;\n          } else $wk$150 = $wk$150 + 4 | 0;\n         }\n        } else $95 = $75;\n       }\n       $97 = ($95 << 16 >> 16) * 7 | 0;\n       $99 = $labelInfo + 1310736 + ($97 + -7 << 2) | 0;\n       HEAP32[$99 >> 2] = (HEAP32[$99 >> 2] | 0) + 1;\n       $103 = $labelInfo + 1310736 + ($97 + -6 << 2) | 0;\n       HEAP32[$103 >> 2] = (HEAP32[$103 >> 2] | 0) + $i$256;\n       $107 = $labelInfo + 1310736 + ($97 + -5 << 2) | 0;\n       HEAP32[$107 >> 2] = (HEAP32[$107 >> 2] | 0) + $j$069;\n       HEAP32[$labelInfo + 1310736 + ($97 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $113 = HEAP16[$pnt2$363 + -2 >> 1] | 0;\n      if ($113 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$363 >> 1] = $66;\n       $153 = $67 * 7 | 0;\n       $155 = $labelInfo + 1310736 + ($153 + -7 << 2) | 0;\n       HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + 1;\n       $159 = $labelInfo + 1310736 + ($153 + -6 << 2) | 0;\n       HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $i$256;\n       $163 = $labelInfo + 1310736 + ($153 + -5 << 2) | 0;\n       HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + $j$069;\n       $167 = $labelInfo + 1310736 + ($153 + -4 << 2) | 0;\n       if ((HEAP32[$167 >> 2] | 0) > ($i$256 | 0)) HEAP32[$167 >> 2] = $i$256;\n       HEAP32[$labelInfo + 1310736 + ($153 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $118 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0;\n      $121 = HEAP32[$labelInfo + 1179664 + (($113 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($118 | 0) > ($121 | 0)) {\n       HEAP16[$pnt2$363 >> 1] = $121;\n       if (($wk_max$158 | 0) > 0) {\n        $k$245 = 0;\n        $wk$246 = $19;\n        while (1) {\n         if ((HEAP32[$wk$246 >> 2] | 0) == ($118 | 0)) HEAP32[$wk$246 >> 2] = $121;\n         $k$245 = $k$245 + 1 | 0;\n         if (($k$245 | 0) >= ($wk_max$158 | 0)) {\n          $138 = $121;\n          break;\n         } else $wk$246 = $wk$246 + 4 | 0;\n        }\n       } else $138 = $121;\n      } else {\n       HEAP16[$pnt2$363 >> 1] = $118;\n       if (($118 | 0) < ($121 | 0) & ($wk_max$158 | 0) > 0) {\n        $k$342 = 0;\n        $wk$343 = $19;\n        while (1) {\n         if ((HEAP32[$wk$343 >> 2] | 0) == ($121 | 0)) HEAP32[$wk$343 >> 2] = $118;\n         $k$342 = $k$342 + 1 | 0;\n         if (($k$342 | 0) >= ($wk_max$158 | 0)) {\n          $138 = $118;\n          break;\n         } else $wk$343 = $wk$343 + 4 | 0;\n        }\n       } else $138 = $118;\n      }\n      $140 = ($138 << 16 >> 16) * 7 | 0;\n      $142 = $labelInfo + 1310736 + ($140 + -7 << 2) | 0;\n      HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + 1;\n      $146 = $labelInfo + 1310736 + ($140 + -6 << 2) | 0;\n      HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $i$256;\n      $150 = $labelInfo + 1310736 + ($140 + -5 << 2) | 0;\n      HEAP32[$150 >> 2] = (HEAP32[$150 >> 2] | 0) + $j$069;\n      $wk_max$2 = $wk_max$158;\n     } else {\n      HEAP16[$pnt2$363 >> 1] = 0;\n      $wk_max$2 = $wk_max$158;\n     } while (0);\n     $i$256 = $i$256 + 1 | 0;\n     $232 = $pnt$164 + 4 | 0;\n     $233 = $pnt2$363 + 2 | 0;\n     if (($i$256 | 0) >= ($12 | 0)) {\n      $pnt$1$lcssa = $232;\n      $pnt2$3$lcssa = $233;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $pnt$164 = $232;\n      $pnt2$363 = $233;\n      $wk_max$158 = $wk_max$2;\n     }\n    }\n   } else {\n    $pnt$1$lcssa = $pnt$073;\n    $pnt2$3$lcssa = $pnt2$272;\n    $wk_max$1$lcssa = $wk_max$071;\n   }\n   $j$069 = $j$069 + 1 | 0;\n   if (($j$069 | 0) >= ($3 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $pnt$073 = $pnt$1$lcssa + $$sum | 0;\n    $pnt2$272 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$071 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $239 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$338 = 1;\n   $j$139 = 1;\n   $wk$440 = $19;\n   while (1) {\n    $241 = HEAP32[$wk$440 >> 2] | 0;\n    if (($241 | 0) == ($i$338 | 0)) {\n     $247 = $j$139;\n     $j$2 = $j$139 + 1 | 0;\n    } else {\n     $247 = HEAP32[$labelInfo + 1179664 + ($241 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$139;\n    }\n    HEAP32[$wk$440 >> 2] = $247;\n    if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$338 = $i$338 + 1 | 0;\n     $j$139 = $j$2;\n     $wk$440 = $wk$440 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $251 = $labelInfo + 8 | 0;\n  $252 = $j$1$lcssa + -1 | 0;\n  HEAP32[$251 >> 2] = $252;\n  if (!$252) $$0 = 0; else {\n   _memset($239 | 0, 0, $252 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $252 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$436 = 0;\n    do {\n     $259 = $i$436 << 2;\n     HEAP32[$labelInfo + 131084 + ($259 << 2) >> 2] = $0;\n     HEAP32[$labelInfo + 131084 + (($259 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($259 | 2) << 2) >> 2] = $1;\n     HEAP32[$labelInfo + 131084 + (($259 | 3) << 2) >> 2] = 0;\n     $i$436 = $i$436 + 1 | 0;\n    } while (($i$436 | 0) < (HEAP32[$251 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$534 = 0;\n    do {\n     $273 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0;\n     $274 = $i$534 * 7 | 0;\n     $277 = $labelInfo + 12 + ($273 << 2) | 0;\n     HEAP32[$277 >> 2] = (HEAP32[$277 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($274 << 2) >> 2] | 0);\n     $284 = $273 << 1;\n     $285 = $labelInfo + 655376 + ($284 << 3) | 0;\n     HEAPF64[$285 >> 3] = +HEAPF64[$285 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($274 + 1 << 2) >> 2] | 0);\n     $293 = $labelInfo + 655376 + (($284 | 1) << 3) | 0;\n     HEAPF64[$293 >> 3] = +HEAPF64[$293 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($274 + 2 << 2) >> 2] | 0);\n     $296 = $273 << 2;\n     $297 = $labelInfo + 131084 + ($296 << 2) | 0;\n     $301 = HEAP32[$labelInfo + 1310736 + ($274 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$297 >> 2] | 0) > ($301 | 0)) HEAP32[$297 >> 2] = $301;\n     $304 = $labelInfo + 131084 + (($296 | 1) << 2) | 0;\n     $308 = HEAP32[$labelInfo + 1310736 + ($274 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$304 >> 2] | 0) < ($308 | 0)) HEAP32[$304 >> 2] = $308;\n     $311 = $labelInfo + 131084 + (($296 | 2) << 2) | 0;\n     $315 = HEAP32[$labelInfo + 1310736 + ($274 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$311 >> 2] | 0) > ($315 | 0)) HEAP32[$311 >> 2] = $315;\n     $318 = $labelInfo + 131084 + (($296 | 3) << 2) | 0;\n     $322 = HEAP32[$labelInfo + 1310736 + ($274 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$318 >> 2] | 0) < ($322 | 0)) HEAP32[$318 >> 2] = $322;\n     $i$534 = $i$534 + 1 | 0;\n    } while (($i$534 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$251 >> 2] | 0) > 0) {\n    $i$633 = 0;\n    do {\n     $326 = $labelInfo + 12 + ($i$633 << 2) | 0;\n     $329 = $i$633 << 1;\n     $330 = $labelInfo + 655376 + ($329 << 3) | 0;\n     HEAPF64[$330 >> 3] = +HEAPF64[$330 >> 3] / +(HEAP32[$326 >> 2] | 0);\n     $336 = $labelInfo + 655376 + (($329 | 1) << 3) | 0;\n     HEAPF64[$336 >> 3] = +HEAPF64[$336 >> 3] / +(HEAP32[$326 >> 2] | 0);\n     $i$633 = $i$633 + 1 | 0;\n    } while (($i$633 | 0) < (HEAP32[$251 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubDBI3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $103 = 0, $107 = 0, $11 = 0, $113 = 0, $118 = 0, $12 = 0, $121 = 0, $138 = 0, $140 = 0, $142 = 0, $146 = 0, $150 = 0, $153 = 0, $155 = 0, $159 = 0, $163 = 0, $167 = 0, $172 = 0, $174 = 0, $178 = 0, $182 = 0, $186 = 0, $19 = 0, $192 = 0, $195 = 0, $197 = 0, $2 = 0, $201 = 0, $205 = 0, $209 = 0, $21 = 0, $212 = 0, $217 = 0, $232 = 0, $233 = 0, $239 = 0, $241 = 0, $247 = 0, $251 = 0, $252 = 0, $259 = 0, $273 = 0, $274 = 0, $277 = 0, $28 = 0, $284 = 0, $285 = 0, $293 = 0, $296 = 0, $297 = 0, $3 = 0, $30 = 0, $301 = 0, $304 = 0, $308 = 0, $311 = 0, $315 = 0, $318 = 0, $322 = 0, $326 = 0, $329 = 0, $330 = 0, $336 = 0, $36 = 0, $47 = 0, $50 = 0, $52 = 0, $56 = 0, $60 = 0, $66 = 0, $67 = 0, $70 = 0, $71 = 0, $72 = 0, $75 = 0, $78 = 0, $95 = 0, $97 = 0, $99 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = ($xsize | 0) / 2 | 0;\n $1 = ($ysize | 0) / 2 | 0;\n $2 = HEAP32[$labelInfo >> 2] | 0;\n $3 = $1 + -1 | 0;\n if (($xsize | 0) > 1) {\n  $i$082 = 0;\n  $pnt1$084 = $2;\n  $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$083 >> 1] = 0;\n   HEAP16[$pnt1$084 >> 1] = 0;\n   $i$082 = $i$082 + 1 | 0;\n   if (($i$082 | 0) >= ($0 | 0)) break; else {\n    $pnt1$084 = $pnt1$084 + 2 | 0;\n    $pnt2$083 = $pnt2$083 + 2 | 0;\n   }\n  }\n }\n $11 = $labelingThresh * 3 | 0;\n $12 = $0 + -1 | 0;\n if (($ysize | 0) > 1) {\n  $i$176 = 0;\n  $pnt1$178 = $2;\n  $pnt2$177 = $2 + ($12 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$177 >> 1] = 0;\n   HEAP16[$pnt1$178 >> 1] = 0;\n   $i$176 = $i$176 + 1 | 0;\n   if (($i$176 | 0) >= ($1 | 0)) break; else {\n    $pnt1$178 = $pnt1$178 + ($0 << 1) | 0;\n    $pnt2$177 = $pnt2$177 + ($0 << 1) | 0;\n   }\n  }\n }\n $19 = $labelInfo + 1179664 | 0;\n $21 = 0 - $0 | 0;\n $$sum1 = 1 - $0 | 0;\n $$sum2 = ~$0;\n $$sum = ($xsize << 1) + 8 | 0;\n L11 : do if (($3 | 0) > 1) {\n  $28 = ($12 | 0) > 1;\n  $j$069 = 1;\n  $pnt$073 = $image + (($xsize << 2) + 4) | 0;\n  $pnt2$272 = $2 + ($0 + 1 << 1) | 0;\n  $wk_max$071 = 0;\n  L13 : while (1) {\n   if ($28) {\n    $i$256 = 1;\n    $pnt$164 = $pnt$073;\n    $pnt2$363 = $pnt2$272;\n    $wk_max$158 = $wk_max$071;\n    while (1) {\n     $30 = HEAPU8[$pnt$164 >> 0] | 0;\n     $36 = HEAPU8[$pnt$164 + 1 >> 0] | 0;\n     do if ((($30 & 248) + 10 + ($30 << 5 & 224) + ($36 >>> 3 & 28) + ($36 << 3 & 248) | 0) > ($11 | 0)) {\n      HEAP16[$pnt2$363 >> 1] = 0;\n      $wk_max$2 = $wk_max$158;\n     } else {\n      $47 = HEAP16[$pnt2$363 + ($21 << 1) >> 1] | 0;\n      if ($47 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$363 >> 1] = $47;\n       $50 = ($47 << 16 >> 16) * 7 | 0;\n       $52 = $labelInfo + 1310736 + ($50 + -7 << 2) | 0;\n       HEAP32[$52 >> 2] = (HEAP32[$52 >> 2] | 0) + 1;\n       $56 = $labelInfo + 1310736 + ($50 + -6 << 2) | 0;\n       HEAP32[$56 >> 2] = (HEAP32[$56 >> 2] | 0) + $i$256;\n       $60 = $labelInfo + 1310736 + ($50 + -5 << 2) | 0;\n       HEAP32[$60 >> 2] = (HEAP32[$60 >> 2] | 0) + $j$069;\n       HEAP32[$labelInfo + 1310736 + ($50 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $66 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0;\n      $67 = $66 << 16 >> 16;\n      $70 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0;\n      $71 = $70 << 16 >> 16;\n      $72 = $70 << 16 >> 16 > 0;\n      if ($66 << 16 >> 16 <= 0) {\n       if ($72) {\n        HEAP16[$pnt2$363 >> 1] = $70;\n        $172 = $71 * 7 | 0;\n        $174 = $labelInfo + 1310736 + ($172 + -7 << 2) | 0;\n        HEAP32[$174 >> 2] = (HEAP32[$174 >> 2] | 0) + 1;\n        $178 = $labelInfo + 1310736 + ($172 + -6 << 2) | 0;\n        HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + $i$256;\n        $182 = $labelInfo + 1310736 + ($172 + -5 << 2) | 0;\n        HEAP32[$182 >> 2] = (HEAP32[$182 >> 2] | 0) + $j$069;\n        $186 = $labelInfo + 1310736 + ($172 + -3 << 2) | 0;\n        if ((HEAP32[$186 >> 2] | 0) < ($i$256 | 0)) HEAP32[$186 >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($172 + -1 << 2) >> 2] = $j$069;\n        $wk_max$2 = $wk_max$158;\n        break;\n       }\n       $192 = HEAP16[$pnt2$363 + -2 >> 1] | 0;\n       if ($192 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$363 >> 1] = $192;\n        $195 = ($192 << 16 >> 16) * 7 | 0;\n        $197 = $labelInfo + 1310736 + ($195 + -7 << 2) | 0;\n        HEAP32[$197 >> 2] = (HEAP32[$197 >> 2] | 0) + 1;\n        $201 = $labelInfo + 1310736 + ($195 + -6 << 2) | 0;\n        HEAP32[$201 >> 2] = (HEAP32[$201 >> 2] | 0) + $i$256;\n        $205 = $labelInfo + 1310736 + ($195 + -5 << 2) | 0;\n        HEAP32[$205 >> 2] = (HEAP32[$205 >> 2] | 0) + $j$069;\n        $209 = $labelInfo + 1310736 + ($195 + -3 << 2) | 0;\n        if ((HEAP32[$209 >> 2] | 0) >= ($i$256 | 0)) {\n         $wk_max$2 = $wk_max$158;\n         break;\n        }\n        HEAP32[$209 >> 2] = $i$256;\n        $wk_max$2 = $wk_max$158;\n        break;\n       } else {\n        $212 = $wk_max$158 + 1 | 0;\n        if (($wk_max$158 | 0) > 32767) break L13;\n        HEAP16[$pnt2$363 >> 1] = $212;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $212 << 16 >> 16;\n        $217 = $wk_max$158 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($217 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($217 + 1 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($217 + 2 << 2) >> 2] = $j$069;\n        HEAP32[$labelInfo + 1310736 + ($217 + 3 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($217 + 4 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($217 + 5 << 2) >> 2] = $j$069;\n        HEAP32[$labelInfo + 1310736 + ($217 + 6 << 2) >> 2] = $j$069;\n        $wk_max$2 = $212;\n        break;\n       }\n      }\n      if ($72) {\n       $75 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0;\n       $78 = HEAP32[$labelInfo + 1179664 + ($71 + -1 << 2) >> 2] | 0;\n       if (($75 | 0) > ($78 | 0)) {\n        HEAP16[$pnt2$363 >> 1] = $78;\n        if (($wk_max$158 | 0) > 0) {\n         $k$052 = 0;\n         $wk$053 = $19;\n         while (1) {\n          if ((HEAP32[$wk$053 >> 2] | 0) == ($75 | 0)) HEAP32[$wk$053 >> 2] = $78;\n          $k$052 = $k$052 + 1 | 0;\n          if (($k$052 | 0) >= ($wk_max$158 | 0)) {\n           $95 = $78;\n           break;\n          } else $wk$053 = $wk$053 + 4 | 0;\n         }\n        } else $95 = $78;\n       } else {\n        HEAP16[$pnt2$363 >> 1] = $75;\n        if (($75 | 0) < ($78 | 0) & ($wk_max$158 | 0) > 0) {\n         $k$149 = 0;\n         $wk$150 = $19;\n         while (1) {\n          if ((HEAP32[$wk$150 >> 2] | 0) == ($78 | 0)) HEAP32[$wk$150 >> 2] = $75;\n          $k$149 = $k$149 + 1 | 0;\n          if (($k$149 | 0) >= ($wk_max$158 | 0)) {\n           $95 = $75;\n           break;\n          } else $wk$150 = $wk$150 + 4 | 0;\n         }\n        } else $95 = $75;\n       }\n       $97 = ($95 << 16 >> 16) * 7 | 0;\n       $99 = $labelInfo + 1310736 + ($97 + -7 << 2) | 0;\n       HEAP32[$99 >> 2] = (HEAP32[$99 >> 2] | 0) + 1;\n       $103 = $labelInfo + 1310736 + ($97 + -6 << 2) | 0;\n       HEAP32[$103 >> 2] = (HEAP32[$103 >> 2] | 0) + $i$256;\n       $107 = $labelInfo + 1310736 + ($97 + -5 << 2) | 0;\n       HEAP32[$107 >> 2] = (HEAP32[$107 >> 2] | 0) + $j$069;\n       HEAP32[$labelInfo + 1310736 + ($97 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $113 = HEAP16[$pnt2$363 + -2 >> 1] | 0;\n      if ($113 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$363 >> 1] = $66;\n       $153 = $67 * 7 | 0;\n       $155 = $labelInfo + 1310736 + ($153 + -7 << 2) | 0;\n       HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + 1;\n       $159 = $labelInfo + 1310736 + ($153 + -6 << 2) | 0;\n       HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $i$256;\n       $163 = $labelInfo + 1310736 + ($153 + -5 << 2) | 0;\n       HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + $j$069;\n       $167 = $labelInfo + 1310736 + ($153 + -4 << 2) | 0;\n       if ((HEAP32[$167 >> 2] | 0) > ($i$256 | 0)) HEAP32[$167 >> 2] = $i$256;\n       HEAP32[$labelInfo + 1310736 + ($153 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $118 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0;\n      $121 = HEAP32[$labelInfo + 1179664 + (($113 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($118 | 0) > ($121 | 0)) {\n       HEAP16[$pnt2$363 >> 1] = $121;\n       if (($wk_max$158 | 0) > 0) {\n        $k$245 = 0;\n        $wk$246 = $19;\n        while (1) {\n         if ((HEAP32[$wk$246 >> 2] | 0) == ($118 | 0)) HEAP32[$wk$246 >> 2] = $121;\n         $k$245 = $k$245 + 1 | 0;\n         if (($k$245 | 0) >= ($wk_max$158 | 0)) {\n          $138 = $121;\n          break;\n         } else $wk$246 = $wk$246 + 4 | 0;\n        }\n       } else $138 = $121;\n      } else {\n       HEAP16[$pnt2$363 >> 1] = $118;\n       if (($118 | 0) < ($121 | 0) & ($wk_max$158 | 0) > 0) {\n        $k$342 = 0;\n        $wk$343 = $19;\n        while (1) {\n         if ((HEAP32[$wk$343 >> 2] | 0) == ($121 | 0)) HEAP32[$wk$343 >> 2] = $118;\n         $k$342 = $k$342 + 1 | 0;\n         if (($k$342 | 0) >= ($wk_max$158 | 0)) {\n          $138 = $118;\n          break;\n         } else $wk$343 = $wk$343 + 4 | 0;\n        }\n       } else $138 = $118;\n      }\n      $140 = ($138 << 16 >> 16) * 7 | 0;\n      $142 = $labelInfo + 1310736 + ($140 + -7 << 2) | 0;\n      HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + 1;\n      $146 = $labelInfo + 1310736 + ($140 + -6 << 2) | 0;\n      HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $i$256;\n      $150 = $labelInfo + 1310736 + ($140 + -5 << 2) | 0;\n      HEAP32[$150 >> 2] = (HEAP32[$150 >> 2] | 0) + $j$069;\n      $wk_max$2 = $wk_max$158;\n     } while (0);\n     $i$256 = $i$256 + 1 | 0;\n     $232 = $pnt$164 + 4 | 0;\n     $233 = $pnt2$363 + 2 | 0;\n     if (($i$256 | 0) >= ($12 | 0)) {\n      $pnt$1$lcssa = $232;\n      $pnt2$3$lcssa = $233;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $pnt$164 = $232;\n      $pnt2$363 = $233;\n      $wk_max$158 = $wk_max$2;\n     }\n    }\n   } else {\n    $pnt$1$lcssa = $pnt$073;\n    $pnt2$3$lcssa = $pnt2$272;\n    $wk_max$1$lcssa = $wk_max$071;\n   }\n   $j$069 = $j$069 + 1 | 0;\n   if (($j$069 | 0) >= ($3 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $pnt$073 = $pnt$1$lcssa + $$sum | 0;\n    $pnt2$272 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$071 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $239 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$338 = 1;\n   $j$139 = 1;\n   $wk$440 = $19;\n   while (1) {\n    $241 = HEAP32[$wk$440 >> 2] | 0;\n    if (($241 | 0) == ($i$338 | 0)) {\n     $247 = $j$139;\n     $j$2 = $j$139 + 1 | 0;\n    } else {\n     $247 = HEAP32[$labelInfo + 1179664 + ($241 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$139;\n    }\n    HEAP32[$wk$440 >> 2] = $247;\n    if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$338 = $i$338 + 1 | 0;\n     $j$139 = $j$2;\n     $wk$440 = $wk$440 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $251 = $labelInfo + 8 | 0;\n  $252 = $j$1$lcssa + -1 | 0;\n  HEAP32[$251 >> 2] = $252;\n  if (!$252) $$0 = 0; else {\n   _memset($239 | 0, 0, $252 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $252 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$436 = 0;\n    do {\n     $259 = $i$436 << 2;\n     HEAP32[$labelInfo + 131084 + ($259 << 2) >> 2] = $0;\n     HEAP32[$labelInfo + 131084 + (($259 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($259 | 2) << 2) >> 2] = $1;\n     HEAP32[$labelInfo + 131084 + (($259 | 3) << 2) >> 2] = 0;\n     $i$436 = $i$436 + 1 | 0;\n    } while (($i$436 | 0) < (HEAP32[$251 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$534 = 0;\n    do {\n     $273 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0;\n     $274 = $i$534 * 7 | 0;\n     $277 = $labelInfo + 12 + ($273 << 2) | 0;\n     HEAP32[$277 >> 2] = (HEAP32[$277 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($274 << 2) >> 2] | 0);\n     $284 = $273 << 1;\n     $285 = $labelInfo + 655376 + ($284 << 3) | 0;\n     HEAPF64[$285 >> 3] = +HEAPF64[$285 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($274 + 1 << 2) >> 2] | 0);\n     $293 = $labelInfo + 655376 + (($284 | 1) << 3) | 0;\n     HEAPF64[$293 >> 3] = +HEAPF64[$293 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($274 + 2 << 2) >> 2] | 0);\n     $296 = $273 << 2;\n     $297 = $labelInfo + 131084 + ($296 << 2) | 0;\n     $301 = HEAP32[$labelInfo + 1310736 + ($274 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$297 >> 2] | 0) > ($301 | 0)) HEAP32[$297 >> 2] = $301;\n     $304 = $labelInfo + 131084 + (($296 | 1) << 2) | 0;\n     $308 = HEAP32[$labelInfo + 1310736 + ($274 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$304 >> 2] | 0) < ($308 | 0)) HEAP32[$304 >> 2] = $308;\n     $311 = $labelInfo + 131084 + (($296 | 2) << 2) | 0;\n     $315 = HEAP32[$labelInfo + 1310736 + ($274 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$311 >> 2] | 0) > ($315 | 0)) HEAP32[$311 >> 2] = $315;\n     $318 = $labelInfo + 131084 + (($296 | 3) << 2) | 0;\n     $322 = HEAP32[$labelInfo + 1310736 + ($274 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$318 >> 2] | 0) < ($322 | 0)) HEAP32[$318 >> 2] = $322;\n     $i$534 = $i$534 + 1 | 0;\n    } while (($i$534 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$251 >> 2] | 0) > 0) {\n    $i$633 = 0;\n    do {\n     $326 = $labelInfo + 12 + ($i$633 << 2) | 0;\n     $329 = $i$633 << 1;\n     $330 = $labelInfo + 655376 + ($329 << 3) | 0;\n     HEAPF64[$330 >> 3] = +HEAPF64[$330 >> 3] / +(HEAP32[$326 >> 2] | 0);\n     $336 = $labelInfo + 655376 + (($329 | 1) << 3) | 0;\n     HEAPF64[$336 >> 3] = +HEAPF64[$336 >> 3] / +(HEAP32[$326 >> 2] | 0);\n     $i$633 = $i$633 + 1 | 0;\n    } while (($i$633 | 0) < (HEAP32[$251 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubDBI3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $103 = 0, $109 = 0, $11 = 0, $114 = 0, $117 = 0, $12 = 0, $134 = 0, $136 = 0, $138 = 0, $142 = 0, $146 = 0, $149 = 0, $151 = 0, $155 = 0, $159 = 0, $163 = 0, $168 = 0, $170 = 0, $174 = 0, $178 = 0, $182 = 0, $188 = 0, $19 = 0, $191 = 0, $193 = 0, $197 = 0, $2 = 0, $201 = 0, $205 = 0, $208 = 0, $21 = 0, $213 = 0, $228 = 0, $229 = 0, $235 = 0, $237 = 0, $243 = 0, $247 = 0, $248 = 0, $255 = 0, $269 = 0, $270 = 0, $273 = 0, $28 = 0, $280 = 0, $281 = 0, $289 = 0, $292 = 0, $293 = 0, $297 = 0, $3 = 0, $30 = 0, $300 = 0, $304 = 0, $307 = 0, $311 = 0, $314 = 0, $318 = 0, $322 = 0, $325 = 0, $326 = 0, $332 = 0, $43 = 0, $46 = 0, $48 = 0, $52 = 0, $56 = 0, $62 = 0, $63 = 0, $66 = 0, $67 = 0, $68 = 0, $71 = 0, $74 = 0, $91 = 0, $93 = 0, $95 = 0, $99 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = ($xsize | 0) / 2 | 0;\n $1 = ($ysize | 0) / 2 | 0;\n $2 = HEAP32[$labelInfo >> 2] | 0;\n $3 = $1 + -1 | 0;\n if (($xsize | 0) > 1) {\n  $i$082 = 0;\n  $pnt1$084 = $2;\n  $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$083 >> 1] = 0;\n   HEAP16[$pnt1$084 >> 1] = 0;\n   $i$082 = $i$082 + 1 | 0;\n   if (($i$082 | 0) >= ($0 | 0)) break; else {\n    $pnt1$084 = $pnt1$084 + 2 | 0;\n    $pnt2$083 = $pnt2$083 + 2 | 0;\n   }\n  }\n }\n $11 = $labelingThresh * 3 | 0;\n $12 = $0 + -1 | 0;\n if (($ysize | 0) > 1) {\n  $i$176 = 0;\n  $pnt1$178 = $2;\n  $pnt2$177 = $2 + ($12 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$177 >> 1] = 0;\n   HEAP16[$pnt1$178 >> 1] = 0;\n   $i$176 = $i$176 + 1 | 0;\n   if (($i$176 | 0) >= ($1 | 0)) break; else {\n    $pnt1$178 = $pnt1$178 + ($0 << 1) | 0;\n    $pnt2$177 = $pnt2$177 + ($0 << 1) | 0;\n   }\n  }\n }\n $19 = $labelInfo + 1179664 | 0;\n $21 = 0 - $0 | 0;\n $$sum1 = 1 - $0 | 0;\n $$sum2 = ~$0;\n $$sum = ($xsize << 1) + 8 | 0;\n L11 : do if (($3 | 0) > 1) {\n  $28 = ($12 | 0) > 1;\n  $j$069 = 1;\n  $pnt$073 = $image + (($xsize << 2) + 4) | 0;\n  $pnt2$272 = $2 + ($0 + 1 << 1) | 0;\n  $wk_max$071 = 0;\n  L13 : while (1) {\n   if ($28) {\n    $i$256 = 1;\n    $pnt$164 = $pnt$073;\n    $pnt2$363 = $pnt2$272;\n    $wk_max$158 = $wk_max$071;\n    while (1) {\n     $30 = HEAPU8[$pnt$164 >> 0] | 0;\n     do if ((($30 & 240) + 24 + ($30 << 4 & 240) + ((HEAPU8[$pnt$164 + 1 >> 0] | 0) & 240) | 0) > ($11 | 0)) {\n      HEAP16[$pnt2$363 >> 1] = 0;\n      $wk_max$2 = $wk_max$158;\n     } else {\n      $43 = HEAP16[$pnt2$363 + ($21 << 1) >> 1] | 0;\n      if ($43 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$363 >> 1] = $43;\n       $46 = ($43 << 16 >> 16) * 7 | 0;\n       $48 = $labelInfo + 1310736 + ($46 + -7 << 2) | 0;\n       HEAP32[$48 >> 2] = (HEAP32[$48 >> 2] | 0) + 1;\n       $52 = $labelInfo + 1310736 + ($46 + -6 << 2) | 0;\n       HEAP32[$52 >> 2] = (HEAP32[$52 >> 2] | 0) + $i$256;\n       $56 = $labelInfo + 1310736 + ($46 + -5 << 2) | 0;\n       HEAP32[$56 >> 2] = (HEAP32[$56 >> 2] | 0) + $j$069;\n       HEAP32[$labelInfo + 1310736 + ($46 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $62 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0;\n      $63 = $62 << 16 >> 16;\n      $66 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0;\n      $67 = $66 << 16 >> 16;\n      $68 = $66 << 16 >> 16 > 0;\n      if ($62 << 16 >> 16 <= 0) {\n       if ($68) {\n        HEAP16[$pnt2$363 >> 1] = $66;\n        $168 = $67 * 7 | 0;\n        $170 = $labelInfo + 1310736 + ($168 + -7 << 2) | 0;\n        HEAP32[$170 >> 2] = (HEAP32[$170 >> 2] | 0) + 1;\n        $174 = $labelInfo + 1310736 + ($168 + -6 << 2) | 0;\n        HEAP32[$174 >> 2] = (HEAP32[$174 >> 2] | 0) + $i$256;\n        $178 = $labelInfo + 1310736 + ($168 + -5 << 2) | 0;\n        HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + $j$069;\n        $182 = $labelInfo + 1310736 + ($168 + -3 << 2) | 0;\n        if ((HEAP32[$182 >> 2] | 0) < ($i$256 | 0)) HEAP32[$182 >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($168 + -1 << 2) >> 2] = $j$069;\n        $wk_max$2 = $wk_max$158;\n        break;\n       }\n       $188 = HEAP16[$pnt2$363 + -2 >> 1] | 0;\n       if ($188 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$363 >> 1] = $188;\n        $191 = ($188 << 16 >> 16) * 7 | 0;\n        $193 = $labelInfo + 1310736 + ($191 + -7 << 2) | 0;\n        HEAP32[$193 >> 2] = (HEAP32[$193 >> 2] | 0) + 1;\n        $197 = $labelInfo + 1310736 + ($191 + -6 << 2) | 0;\n        HEAP32[$197 >> 2] = (HEAP32[$197 >> 2] | 0) + $i$256;\n        $201 = $labelInfo + 1310736 + ($191 + -5 << 2) | 0;\n        HEAP32[$201 >> 2] = (HEAP32[$201 >> 2] | 0) + $j$069;\n        $205 = $labelInfo + 1310736 + ($191 + -3 << 2) | 0;\n        if ((HEAP32[$205 >> 2] | 0) >= ($i$256 | 0)) {\n         $wk_max$2 = $wk_max$158;\n         break;\n        }\n        HEAP32[$205 >> 2] = $i$256;\n        $wk_max$2 = $wk_max$158;\n        break;\n       } else {\n        $208 = $wk_max$158 + 1 | 0;\n        if (($wk_max$158 | 0) > 32767) break L13;\n        HEAP16[$pnt2$363 >> 1] = $208;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $208 << 16 >> 16;\n        $213 = $wk_max$158 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($213 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($213 + 1 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($213 + 2 << 2) >> 2] = $j$069;\n        HEAP32[$labelInfo + 1310736 + ($213 + 3 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($213 + 4 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($213 + 5 << 2) >> 2] = $j$069;\n        HEAP32[$labelInfo + 1310736 + ($213 + 6 << 2) >> 2] = $j$069;\n        $wk_max$2 = $208;\n        break;\n       }\n      }\n      if ($68) {\n       $71 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0;\n       $74 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0;\n       if (($71 | 0) > ($74 | 0)) {\n        HEAP16[$pnt2$363 >> 1] = $74;\n        if (($wk_max$158 | 0) > 0) {\n         $k$052 = 0;\n         $wk$053 = $19;\n         while (1) {\n          if ((HEAP32[$wk$053 >> 2] | 0) == ($71 | 0)) HEAP32[$wk$053 >> 2] = $74;\n          $k$052 = $k$052 + 1 | 0;\n          if (($k$052 | 0) >= ($wk_max$158 | 0)) {\n           $91 = $74;\n           break;\n          } else $wk$053 = $wk$053 + 4 | 0;\n         }\n        } else $91 = $74;\n       } else {\n        HEAP16[$pnt2$363 >> 1] = $71;\n        if (($71 | 0) < ($74 | 0) & ($wk_max$158 | 0) > 0) {\n         $k$149 = 0;\n         $wk$150 = $19;\n         while (1) {\n          if ((HEAP32[$wk$150 >> 2] | 0) == ($74 | 0)) HEAP32[$wk$150 >> 2] = $71;\n          $k$149 = $k$149 + 1 | 0;\n          if (($k$149 | 0) >= ($wk_max$158 | 0)) {\n           $91 = $71;\n           break;\n          } else $wk$150 = $wk$150 + 4 | 0;\n         }\n        } else $91 = $71;\n       }\n       $93 = ($91 << 16 >> 16) * 7 | 0;\n       $95 = $labelInfo + 1310736 + ($93 + -7 << 2) | 0;\n       HEAP32[$95 >> 2] = (HEAP32[$95 >> 2] | 0) + 1;\n       $99 = $labelInfo + 1310736 + ($93 + -6 << 2) | 0;\n       HEAP32[$99 >> 2] = (HEAP32[$99 >> 2] | 0) + $i$256;\n       $103 = $labelInfo + 1310736 + ($93 + -5 << 2) | 0;\n       HEAP32[$103 >> 2] = (HEAP32[$103 >> 2] | 0) + $j$069;\n       HEAP32[$labelInfo + 1310736 + ($93 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $109 = HEAP16[$pnt2$363 + -2 >> 1] | 0;\n      if ($109 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$363 >> 1] = $62;\n       $149 = $63 * 7 | 0;\n       $151 = $labelInfo + 1310736 + ($149 + -7 << 2) | 0;\n       HEAP32[$151 >> 2] = (HEAP32[$151 >> 2] | 0) + 1;\n       $155 = $labelInfo + 1310736 + ($149 + -6 << 2) | 0;\n       HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + $i$256;\n       $159 = $labelInfo + 1310736 + ($149 + -5 << 2) | 0;\n       HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $j$069;\n       $163 = $labelInfo + 1310736 + ($149 + -4 << 2) | 0;\n       if ((HEAP32[$163 >> 2] | 0) > ($i$256 | 0)) HEAP32[$163 >> 2] = $i$256;\n       HEAP32[$labelInfo + 1310736 + ($149 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $114 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0;\n      $117 = HEAP32[$labelInfo + 1179664 + (($109 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($114 | 0) > ($117 | 0)) {\n       HEAP16[$pnt2$363 >> 1] = $117;\n       if (($wk_max$158 | 0) > 0) {\n        $k$245 = 0;\n        $wk$246 = $19;\n        while (1) {\n         if ((HEAP32[$wk$246 >> 2] | 0) == ($114 | 0)) HEAP32[$wk$246 >> 2] = $117;\n         $k$245 = $k$245 + 1 | 0;\n         if (($k$245 | 0) >= ($wk_max$158 | 0)) {\n          $134 = $117;\n          break;\n         } else $wk$246 = $wk$246 + 4 | 0;\n        }\n       } else $134 = $117;\n      } else {\n       HEAP16[$pnt2$363 >> 1] = $114;\n       if (($114 | 0) < ($117 | 0) & ($wk_max$158 | 0) > 0) {\n        $k$342 = 0;\n        $wk$343 = $19;\n        while (1) {\n         if ((HEAP32[$wk$343 >> 2] | 0) == ($117 | 0)) HEAP32[$wk$343 >> 2] = $114;\n         $k$342 = $k$342 + 1 | 0;\n         if (($k$342 | 0) >= ($wk_max$158 | 0)) {\n          $134 = $114;\n          break;\n         } else $wk$343 = $wk$343 + 4 | 0;\n        }\n       } else $134 = $114;\n      }\n      $136 = ($134 << 16 >> 16) * 7 | 0;\n      $138 = $labelInfo + 1310736 + ($136 + -7 << 2) | 0;\n      HEAP32[$138 >> 2] = (HEAP32[$138 >> 2] | 0) + 1;\n      $142 = $labelInfo + 1310736 + ($136 + -6 << 2) | 0;\n      HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + $i$256;\n      $146 = $labelInfo + 1310736 + ($136 + -5 << 2) | 0;\n      HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $j$069;\n      $wk_max$2 = $wk_max$158;\n     } while (0);\n     $i$256 = $i$256 + 1 | 0;\n     $228 = $pnt$164 + 4 | 0;\n     $229 = $pnt2$363 + 2 | 0;\n     if (($i$256 | 0) >= ($12 | 0)) {\n      $pnt$1$lcssa = $228;\n      $pnt2$3$lcssa = $229;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $pnt$164 = $228;\n      $pnt2$363 = $229;\n      $wk_max$158 = $wk_max$2;\n     }\n    }\n   } else {\n    $pnt$1$lcssa = $pnt$073;\n    $pnt2$3$lcssa = $pnt2$272;\n    $wk_max$1$lcssa = $wk_max$071;\n   }\n   $j$069 = $j$069 + 1 | 0;\n   if (($j$069 | 0) >= ($3 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $pnt$073 = $pnt$1$lcssa + $$sum | 0;\n    $pnt2$272 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$071 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $235 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$338 = 1;\n   $j$139 = 1;\n   $wk$440 = $19;\n   while (1) {\n    $237 = HEAP32[$wk$440 >> 2] | 0;\n    if (($237 | 0) == ($i$338 | 0)) {\n     $243 = $j$139;\n     $j$2 = $j$139 + 1 | 0;\n    } else {\n     $243 = HEAP32[$labelInfo + 1179664 + ($237 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$139;\n    }\n    HEAP32[$wk$440 >> 2] = $243;\n    if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$338 = $i$338 + 1 | 0;\n     $j$139 = $j$2;\n     $wk$440 = $wk$440 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $247 = $labelInfo + 8 | 0;\n  $248 = $j$1$lcssa + -1 | 0;\n  HEAP32[$247 >> 2] = $248;\n  if (!$248) $$0 = 0; else {\n   _memset($235 | 0, 0, $248 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $248 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$436 = 0;\n    do {\n     $255 = $i$436 << 2;\n     HEAP32[$labelInfo + 131084 + ($255 << 2) >> 2] = $0;\n     HEAP32[$labelInfo + 131084 + (($255 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($255 | 2) << 2) >> 2] = $1;\n     HEAP32[$labelInfo + 131084 + (($255 | 3) << 2) >> 2] = 0;\n     $i$436 = $i$436 + 1 | 0;\n    } while (($i$436 | 0) < (HEAP32[$247 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$534 = 0;\n    do {\n     $269 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0;\n     $270 = $i$534 * 7 | 0;\n     $273 = $labelInfo + 12 + ($269 << 2) | 0;\n     HEAP32[$273 >> 2] = (HEAP32[$273 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($270 << 2) >> 2] | 0);\n     $280 = $269 << 1;\n     $281 = $labelInfo + 655376 + ($280 << 3) | 0;\n     HEAPF64[$281 >> 3] = +HEAPF64[$281 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 1 << 2) >> 2] | 0);\n     $289 = $labelInfo + 655376 + (($280 | 1) << 3) | 0;\n     HEAPF64[$289 >> 3] = +HEAPF64[$289 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 2 << 2) >> 2] | 0);\n     $292 = $269 << 2;\n     $293 = $labelInfo + 131084 + ($292 << 2) | 0;\n     $297 = HEAP32[$labelInfo + 1310736 + ($270 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$293 >> 2] | 0) > ($297 | 0)) HEAP32[$293 >> 2] = $297;\n     $300 = $labelInfo + 131084 + (($292 | 1) << 2) | 0;\n     $304 = HEAP32[$labelInfo + 1310736 + ($270 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$300 >> 2] | 0) < ($304 | 0)) HEAP32[$300 >> 2] = $304;\n     $307 = $labelInfo + 131084 + (($292 | 2) << 2) | 0;\n     $311 = HEAP32[$labelInfo + 1310736 + ($270 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$307 >> 2] | 0) > ($311 | 0)) HEAP32[$307 >> 2] = $311;\n     $314 = $labelInfo + 131084 + (($292 | 3) << 2) | 0;\n     $318 = HEAP32[$labelInfo + 1310736 + ($270 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$314 >> 2] | 0) < ($318 | 0)) HEAP32[$314 >> 2] = $318;\n     $i$534 = $i$534 + 1 | 0;\n    } while (($i$534 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$247 >> 2] | 0) > 0) {\n    $i$633 = 0;\n    do {\n     $322 = $labelInfo + 12 + ($i$633 << 2) | 0;\n     $325 = $i$633 << 1;\n     $326 = $labelInfo + 655376 + ($325 << 3) | 0;\n     HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$322 >> 2] | 0);\n     $332 = $labelInfo + 655376 + (($325 | 1) << 3) | 0;\n     HEAPF64[$332 >> 3] = +HEAPF64[$332 >> 3] / +(HEAP32[$322 >> 2] | 0);\n     $i$633 = $i$633 + 1 | 0;\n    } while (($i$633 | 0) < (HEAP32[$247 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\nfunction _arLabelingSubDWI3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $103 = 0, $109 = 0, $11 = 0, $114 = 0, $117 = 0, $12 = 0, $134 = 0, $136 = 0, $138 = 0, $142 = 0, $146 = 0, $149 = 0, $151 = 0, $155 = 0, $159 = 0, $163 = 0, $168 = 0, $170 = 0, $174 = 0, $178 = 0, $182 = 0, $188 = 0, $19 = 0, $191 = 0, $193 = 0, $197 = 0, $2 = 0, $201 = 0, $205 = 0, $208 = 0, $21 = 0, $213 = 0, $228 = 0, $229 = 0, $235 = 0, $237 = 0, $243 = 0, $247 = 0, $248 = 0, $255 = 0, $269 = 0, $270 = 0, $273 = 0, $28 = 0, $280 = 0, $281 = 0, $289 = 0, $292 = 0, $293 = 0, $297 = 0, $3 = 0, $30 = 0, $300 = 0, $304 = 0, $307 = 0, $311 = 0, $314 = 0, $318 = 0, $322 = 0, $325 = 0, $326 = 0, $332 = 0, $43 = 0, $46 = 0, $48 = 0, $52 = 0, $56 = 0, $62 = 0, $63 = 0, $66 = 0, $67 = 0, $68 = 0, $71 = 0, $74 = 0, $91 = 0, $93 = 0, $95 = 0, $99 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = ($xsize | 0) / 2 | 0;\n $1 = ($ysize | 0) / 2 | 0;\n $2 = HEAP32[$labelInfo >> 2] | 0;\n $3 = $1 + -1 | 0;\n if (($xsize | 0) > 1) {\n  $i$082 = 0;\n  $pnt1$084 = $2;\n  $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$083 >> 1] = 0;\n   HEAP16[$pnt1$084 >> 1] = 0;\n   $i$082 = $i$082 + 1 | 0;\n   if (($i$082 | 0) >= ($0 | 0)) break; else {\n    $pnt1$084 = $pnt1$084 + 2 | 0;\n    $pnt2$083 = $pnt2$083 + 2 | 0;\n   }\n  }\n }\n $11 = $labelingThresh * 3 | 0;\n $12 = $0 + -1 | 0;\n if (($ysize | 0) > 1) {\n  $i$176 = 0;\n  $pnt1$178 = $2;\n  $pnt2$177 = $2 + ($12 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$177 >> 1] = 0;\n   HEAP16[$pnt1$178 >> 1] = 0;\n   $i$176 = $i$176 + 1 | 0;\n   if (($i$176 | 0) >= ($1 | 0)) break; else {\n    $pnt1$178 = $pnt1$178 + ($0 << 1) | 0;\n    $pnt2$177 = $pnt2$177 + ($0 << 1) | 0;\n   }\n  }\n }\n $19 = $labelInfo + 1179664 | 0;\n $21 = 0 - $0 | 0;\n $$sum1 = 1 - $0 | 0;\n $$sum2 = ~$0;\n $$sum = ($xsize << 1) + 8 | 0;\n L11 : do if (($3 | 0) > 1) {\n  $28 = ($12 | 0) > 1;\n  $j$069 = 1;\n  $pnt$073 = $image + (($xsize << 2) + 4) | 0;\n  $pnt2$272 = $2 + ($0 + 1 << 1) | 0;\n  $wk_max$071 = 0;\n  L13 : while (1) {\n   if ($28) {\n    $i$256 = 1;\n    $pnt$164 = $pnt$073;\n    $pnt2$363 = $pnt2$272;\n    $wk_max$158 = $wk_max$071;\n    while (1) {\n     $30 = HEAPU8[$pnt$164 >> 0] | 0;\n     do if ((($30 & 240) + 24 + ($30 << 4 & 240) + ((HEAPU8[$pnt$164 + 1 >> 0] | 0) & 240) | 0) > ($11 | 0)) {\n      $43 = HEAP16[$pnt2$363 + ($21 << 1) >> 1] | 0;\n      if ($43 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$363 >> 1] = $43;\n       $46 = ($43 << 16 >> 16) * 7 | 0;\n       $48 = $labelInfo + 1310736 + ($46 + -7 << 2) | 0;\n       HEAP32[$48 >> 2] = (HEAP32[$48 >> 2] | 0) + 1;\n       $52 = $labelInfo + 1310736 + ($46 + -6 << 2) | 0;\n       HEAP32[$52 >> 2] = (HEAP32[$52 >> 2] | 0) + $i$256;\n       $56 = $labelInfo + 1310736 + ($46 + -5 << 2) | 0;\n       HEAP32[$56 >> 2] = (HEAP32[$56 >> 2] | 0) + $j$069;\n       HEAP32[$labelInfo + 1310736 + ($46 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $62 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0;\n      $63 = $62 << 16 >> 16;\n      $66 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0;\n      $67 = $66 << 16 >> 16;\n      $68 = $66 << 16 >> 16 > 0;\n      if ($62 << 16 >> 16 <= 0) {\n       if ($68) {\n        HEAP16[$pnt2$363 >> 1] = $66;\n        $168 = $67 * 7 | 0;\n        $170 = $labelInfo + 1310736 + ($168 + -7 << 2) | 0;\n        HEAP32[$170 >> 2] = (HEAP32[$170 >> 2] | 0) + 1;\n        $174 = $labelInfo + 1310736 + ($168 + -6 << 2) | 0;\n        HEAP32[$174 >> 2] = (HEAP32[$174 >> 2] | 0) + $i$256;\n        $178 = $labelInfo + 1310736 + ($168 + -5 << 2) | 0;\n        HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + $j$069;\n        $182 = $labelInfo + 1310736 + ($168 + -3 << 2) | 0;\n        if ((HEAP32[$182 >> 2] | 0) < ($i$256 | 0)) HEAP32[$182 >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($168 + -1 << 2) >> 2] = $j$069;\n        $wk_max$2 = $wk_max$158;\n        break;\n       }\n       $188 = HEAP16[$pnt2$363 + -2 >> 1] | 0;\n       if ($188 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$363 >> 1] = $188;\n        $191 = ($188 << 16 >> 16) * 7 | 0;\n        $193 = $labelInfo + 1310736 + ($191 + -7 << 2) | 0;\n        HEAP32[$193 >> 2] = (HEAP32[$193 >> 2] | 0) + 1;\n        $197 = $labelInfo + 1310736 + ($191 + -6 << 2) | 0;\n        HEAP32[$197 >> 2] = (HEAP32[$197 >> 2] | 0) + $i$256;\n        $201 = $labelInfo + 1310736 + ($191 + -5 << 2) | 0;\n        HEAP32[$201 >> 2] = (HEAP32[$201 >> 2] | 0) + $j$069;\n        $205 = $labelInfo + 1310736 + ($191 + -3 << 2) | 0;\n        if ((HEAP32[$205 >> 2] | 0) >= ($i$256 | 0)) {\n         $wk_max$2 = $wk_max$158;\n         break;\n        }\n        HEAP32[$205 >> 2] = $i$256;\n        $wk_max$2 = $wk_max$158;\n        break;\n       } else {\n        $208 = $wk_max$158 + 1 | 0;\n        if (($wk_max$158 | 0) > 32767) break L13;\n        HEAP16[$pnt2$363 >> 1] = $208;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $208 << 16 >> 16;\n        $213 = $wk_max$158 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($213 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($213 + 1 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($213 + 2 << 2) >> 2] = $j$069;\n        HEAP32[$labelInfo + 1310736 + ($213 + 3 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($213 + 4 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($213 + 5 << 2) >> 2] = $j$069;\n        HEAP32[$labelInfo + 1310736 + ($213 + 6 << 2) >> 2] = $j$069;\n        $wk_max$2 = $208;\n        break;\n       }\n      }\n      if ($68) {\n       $71 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0;\n       $74 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0;\n       if (($71 | 0) > ($74 | 0)) {\n        HEAP16[$pnt2$363 >> 1] = $74;\n        if (($wk_max$158 | 0) > 0) {\n         $k$052 = 0;\n         $wk$053 = $19;\n         while (1) {\n          if ((HEAP32[$wk$053 >> 2] | 0) == ($71 | 0)) HEAP32[$wk$053 >> 2] = $74;\n          $k$052 = $k$052 + 1 | 0;\n          if (($k$052 | 0) >= ($wk_max$158 | 0)) {\n           $91 = $74;\n           break;\n          } else $wk$053 = $wk$053 + 4 | 0;\n         }\n        } else $91 = $74;\n       } else {\n        HEAP16[$pnt2$363 >> 1] = $71;\n        if (($71 | 0) < ($74 | 0) & ($wk_max$158 | 0) > 0) {\n         $k$149 = 0;\n         $wk$150 = $19;\n         while (1) {\n          if ((HEAP32[$wk$150 >> 2] | 0) == ($74 | 0)) HEAP32[$wk$150 >> 2] = $71;\n          $k$149 = $k$149 + 1 | 0;\n          if (($k$149 | 0) >= ($wk_max$158 | 0)) {\n           $91 = $71;\n           break;\n          } else $wk$150 = $wk$150 + 4 | 0;\n         }\n        } else $91 = $71;\n       }\n       $93 = ($91 << 16 >> 16) * 7 | 0;\n       $95 = $labelInfo + 1310736 + ($93 + -7 << 2) | 0;\n       HEAP32[$95 >> 2] = (HEAP32[$95 >> 2] | 0) + 1;\n       $99 = $labelInfo + 1310736 + ($93 + -6 << 2) | 0;\n       HEAP32[$99 >> 2] = (HEAP32[$99 >> 2] | 0) + $i$256;\n       $103 = $labelInfo + 1310736 + ($93 + -5 << 2) | 0;\n       HEAP32[$103 >> 2] = (HEAP32[$103 >> 2] | 0) + $j$069;\n       HEAP32[$labelInfo + 1310736 + ($93 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $109 = HEAP16[$pnt2$363 + -2 >> 1] | 0;\n      if ($109 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$363 >> 1] = $62;\n       $149 = $63 * 7 | 0;\n       $151 = $labelInfo + 1310736 + ($149 + -7 << 2) | 0;\n       HEAP32[$151 >> 2] = (HEAP32[$151 >> 2] | 0) + 1;\n       $155 = $labelInfo + 1310736 + ($149 + -6 << 2) | 0;\n       HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + $i$256;\n       $159 = $labelInfo + 1310736 + ($149 + -5 << 2) | 0;\n       HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $j$069;\n       $163 = $labelInfo + 1310736 + ($149 + -4 << 2) | 0;\n       if ((HEAP32[$163 >> 2] | 0) > ($i$256 | 0)) HEAP32[$163 >> 2] = $i$256;\n       HEAP32[$labelInfo + 1310736 + ($149 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $114 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0;\n      $117 = HEAP32[$labelInfo + 1179664 + (($109 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($114 | 0) > ($117 | 0)) {\n       HEAP16[$pnt2$363 >> 1] = $117;\n       if (($wk_max$158 | 0) > 0) {\n        $k$245 = 0;\n        $wk$246 = $19;\n        while (1) {\n         if ((HEAP32[$wk$246 >> 2] | 0) == ($114 | 0)) HEAP32[$wk$246 >> 2] = $117;\n         $k$245 = $k$245 + 1 | 0;\n         if (($k$245 | 0) >= ($wk_max$158 | 0)) {\n          $134 = $117;\n          break;\n         } else $wk$246 = $wk$246 + 4 | 0;\n        }\n       } else $134 = $117;\n      } else {\n       HEAP16[$pnt2$363 >> 1] = $114;\n       if (($114 | 0) < ($117 | 0) & ($wk_max$158 | 0) > 0) {\n        $k$342 = 0;\n        $wk$343 = $19;\n        while (1) {\n         if ((HEAP32[$wk$343 >> 2] | 0) == ($117 | 0)) HEAP32[$wk$343 >> 2] = $114;\n         $k$342 = $k$342 + 1 | 0;\n         if (($k$342 | 0) >= ($wk_max$158 | 0)) {\n          $134 = $114;\n          break;\n         } else $wk$343 = $wk$343 + 4 | 0;\n        }\n       } else $134 = $114;\n      }\n      $136 = ($134 << 16 >> 16) * 7 | 0;\n      $138 = $labelInfo + 1310736 + ($136 + -7 << 2) | 0;\n      HEAP32[$138 >> 2] = (HEAP32[$138 >> 2] | 0) + 1;\n      $142 = $labelInfo + 1310736 + ($136 + -6 << 2) | 0;\n      HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + $i$256;\n      $146 = $labelInfo + 1310736 + ($136 + -5 << 2) | 0;\n      HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $j$069;\n      $wk_max$2 = $wk_max$158;\n     } else {\n      HEAP16[$pnt2$363 >> 1] = 0;\n      $wk_max$2 = $wk_max$158;\n     } while (0);\n     $i$256 = $i$256 + 1 | 0;\n     $228 = $pnt$164 + 4 | 0;\n     $229 = $pnt2$363 + 2 | 0;\n     if (($i$256 | 0) >= ($12 | 0)) {\n      $pnt$1$lcssa = $228;\n      $pnt2$3$lcssa = $229;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $pnt$164 = $228;\n      $pnt2$363 = $229;\n      $wk_max$158 = $wk_max$2;\n     }\n    }\n   } else {\n    $pnt$1$lcssa = $pnt$073;\n    $pnt2$3$lcssa = $pnt2$272;\n    $wk_max$1$lcssa = $wk_max$071;\n   }\n   $j$069 = $j$069 + 1 | 0;\n   if (($j$069 | 0) >= ($3 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $pnt$073 = $pnt$1$lcssa + $$sum | 0;\n    $pnt2$272 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$071 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $235 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$338 = 1;\n   $j$139 = 1;\n   $wk$440 = $19;\n   while (1) {\n    $237 = HEAP32[$wk$440 >> 2] | 0;\n    if (($237 | 0) == ($i$338 | 0)) {\n     $243 = $j$139;\n     $j$2 = $j$139 + 1 | 0;\n    } else {\n     $243 = HEAP32[$labelInfo + 1179664 + ($237 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$139;\n    }\n    HEAP32[$wk$440 >> 2] = $243;\n    if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$338 = $i$338 + 1 | 0;\n     $j$139 = $j$2;\n     $wk$440 = $wk$440 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $247 = $labelInfo + 8 | 0;\n  $248 = $j$1$lcssa + -1 | 0;\n  HEAP32[$247 >> 2] = $248;\n  if (!$248) $$0 = 0; else {\n   _memset($235 | 0, 0, $248 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $248 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$436 = 0;\n    do {\n     $255 = $i$436 << 2;\n     HEAP32[$labelInfo + 131084 + ($255 << 2) >> 2] = $0;\n     HEAP32[$labelInfo + 131084 + (($255 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($255 | 2) << 2) >> 2] = $1;\n     HEAP32[$labelInfo + 131084 + (($255 | 3) << 2) >> 2] = 0;\n     $i$436 = $i$436 + 1 | 0;\n    } while (($i$436 | 0) < (HEAP32[$247 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$534 = 0;\n    do {\n     $269 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0;\n     $270 = $i$534 * 7 | 0;\n     $273 = $labelInfo + 12 + ($269 << 2) | 0;\n     HEAP32[$273 >> 2] = (HEAP32[$273 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($270 << 2) >> 2] | 0);\n     $280 = $269 << 1;\n     $281 = $labelInfo + 655376 + ($280 << 3) | 0;\n     HEAPF64[$281 >> 3] = +HEAPF64[$281 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 1 << 2) >> 2] | 0);\n     $289 = $labelInfo + 655376 + (($280 | 1) << 3) | 0;\n     HEAPF64[$289 >> 3] = +HEAPF64[$289 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 2 << 2) >> 2] | 0);\n     $292 = $269 << 2;\n     $293 = $labelInfo + 131084 + ($292 << 2) | 0;\n     $297 = HEAP32[$labelInfo + 1310736 + ($270 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$293 >> 2] | 0) > ($297 | 0)) HEAP32[$293 >> 2] = $297;\n     $300 = $labelInfo + 131084 + (($292 | 1) << 2) | 0;\n     $304 = HEAP32[$labelInfo + 1310736 + ($270 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$300 >> 2] | 0) < ($304 | 0)) HEAP32[$300 >> 2] = $304;\n     $307 = $labelInfo + 131084 + (($292 | 2) << 2) | 0;\n     $311 = HEAP32[$labelInfo + 1310736 + ($270 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$307 >> 2] | 0) > ($311 | 0)) HEAP32[$307 >> 2] = $311;\n     $314 = $labelInfo + 131084 + (($292 | 3) << 2) | 0;\n     $318 = HEAP32[$labelInfo + 1310736 + ($270 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$314 >> 2] | 0) < ($318 | 0)) HEAP32[$314 >> 2] = $318;\n     $i$534 = $i$534 + 1 | 0;\n    } while (($i$534 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$247 >> 2] | 0) > 0) {\n    $i$633 = 0;\n    do {\n     $322 = $labelInfo + 12 + ($i$633 << 2) | 0;\n     $325 = $i$633 << 1;\n     $326 = $labelInfo + 655376 + ($325 << 3) | 0;\n     HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$322 >> 2] | 0);\n     $332 = $labelInfo + 655376 + (($325 | 1) << 3) | 0;\n     HEAPF64[$332 >> 3] = +HEAPF64[$332 >> 3] / +(HEAP32[$322 >> 2] | 0);\n     $i$633 = $i$633 + 1 | 0;\n    } while (($i$633 | 0) < (HEAP32[$247 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubDWR3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $103 = 0, $109 = 0, $114 = 0, $117 = 0, $134 = 0, $136 = 0, $138 = 0, $142 = 0, $146 = 0, $149 = 0, $151 = 0, $155 = 0, $159 = 0, $163 = 0, $168 = 0, $17 = 0, $170 = 0, $174 = 0, $178 = 0, $18 = 0, $182 = 0, $188 = 0, $19 = 0, $191 = 0, $193 = 0, $197 = 0, $201 = 0, $205 = 0, $208 = 0, $213 = 0, $228 = 0, $229 = 0, $235 = 0, $237 = 0, $24 = 0, $243 = 0, $247 = 0, $248 = 0, $255 = 0, $26 = 0, $269 = 0, $270 = 0, $273 = 0, $280 = 0, $281 = 0, $289 = 0, $292 = 0, $293 = 0, $297 = 0, $300 = 0, $304 = 0, $307 = 0, $311 = 0, $314 = 0, $318 = 0, $32 = 0, $322 = 0, $325 = 0, $326 = 0, $332 = 0, $43 = 0, $46 = 0, $48 = 0, $52 = 0, $56 = 0, $62 = 0, $63 = 0, $66 = 0, $67 = 0, $68 = 0, $71 = 0, $74 = 0, $9 = 0, $91 = 0, $93 = 0, $95 = 0, $99 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$081 = 0;\n  $pnt1$083 = $0;\n  $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$082 >> 1] = 0;\n   HEAP16[$pnt1$083 >> 1] = 0;\n   $i$081 = $i$081 + 1 | 0;\n   if (($i$081 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$083 = $pnt1$083 + 2 | 0;\n    $pnt2$082 = $pnt2$082 + 2 | 0;\n   }\n  }\n }\n $9 = $labelingThresh * 3 | 0;\n $10 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$175 = 0;\n  $pnt1$177 = $0;\n  $pnt2$176 = $0 + ($10 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$176 >> 1] = 0;\n   HEAP16[$pnt1$177 >> 1] = 0;\n   $i$175 = $i$175 + 1 | 0;\n   if (($i$175 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0;\n    $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0;\n   }\n  }\n }\n $17 = $labelInfo + 1179664 | 0;\n $18 = $xsize + 1 | 0;\n $19 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $24 = ($10 | 0) > 1;\n  $j$068 = 1;\n  $pnt$072 = $image + ($18 << 1) | 0;\n  $pnt2$271 = $0 + ($18 << 1) | 0;\n  $wk_max$070 = 0;\n  L13 : while (1) {\n   if ($24) {\n    $i$255 = 1;\n    $pnt$163 = $pnt$072;\n    $pnt2$362 = $pnt2$271;\n    $wk_max$157 = $wk_max$070;\n    while (1) {\n     $26 = HEAPU8[$pnt$163 >> 0] | 0;\n     $32 = HEAPU8[$pnt$163 + 1 >> 0] | 0;\n     do if ((($26 & 248) + 12 + ($26 << 5 & 224) + ($32 >>> 3 & 24) + ($32 << 2 & 248) | 0) > ($9 | 0)) {\n      $43 = HEAP16[$pnt2$362 + ($19 << 1) >> 1] | 0;\n      if ($43 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$362 >> 1] = $43;\n       $46 = ($43 << 16 >> 16) * 7 | 0;\n       $48 = $labelInfo + 1310736 + ($46 + -7 << 2) | 0;\n       HEAP32[$48 >> 2] = (HEAP32[$48 >> 2] | 0) + 1;\n       $52 = $labelInfo + 1310736 + ($46 + -6 << 2) | 0;\n       HEAP32[$52 >> 2] = (HEAP32[$52 >> 2] | 0) + $i$255;\n       $56 = $labelInfo + 1310736 + ($46 + -5 << 2) | 0;\n       HEAP32[$56 >> 2] = (HEAP32[$56 >> 2] | 0) + $j$068;\n       HEAP32[$labelInfo + 1310736 + ($46 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $62 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0;\n      $63 = $62 << 16 >> 16;\n      $66 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0;\n      $67 = $66 << 16 >> 16;\n      $68 = $66 << 16 >> 16 > 0;\n      if ($62 << 16 >> 16 <= 0) {\n       if ($68) {\n        HEAP16[$pnt2$362 >> 1] = $66;\n        $168 = $67 * 7 | 0;\n        $170 = $labelInfo + 1310736 + ($168 + -7 << 2) | 0;\n        HEAP32[$170 >> 2] = (HEAP32[$170 >> 2] | 0) + 1;\n        $174 = $labelInfo + 1310736 + ($168 + -6 << 2) | 0;\n        HEAP32[$174 >> 2] = (HEAP32[$174 >> 2] | 0) + $i$255;\n        $178 = $labelInfo + 1310736 + ($168 + -5 << 2) | 0;\n        HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + $j$068;\n        $182 = $labelInfo + 1310736 + ($168 + -3 << 2) | 0;\n        if ((HEAP32[$182 >> 2] | 0) < ($i$255 | 0)) HEAP32[$182 >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($168 + -1 << 2) >> 2] = $j$068;\n        $wk_max$2 = $wk_max$157;\n        break;\n       }\n       $188 = HEAP16[$pnt2$362 + -2 >> 1] | 0;\n       if ($188 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$362 >> 1] = $188;\n        $191 = ($188 << 16 >> 16) * 7 | 0;\n        $193 = $labelInfo + 1310736 + ($191 + -7 << 2) | 0;\n        HEAP32[$193 >> 2] = (HEAP32[$193 >> 2] | 0) + 1;\n        $197 = $labelInfo + 1310736 + ($191 + -6 << 2) | 0;\n        HEAP32[$197 >> 2] = (HEAP32[$197 >> 2] | 0) + $i$255;\n        $201 = $labelInfo + 1310736 + ($191 + -5 << 2) | 0;\n        HEAP32[$201 >> 2] = (HEAP32[$201 >> 2] | 0) + $j$068;\n        $205 = $labelInfo + 1310736 + ($191 + -3 << 2) | 0;\n        if ((HEAP32[$205 >> 2] | 0) >= ($i$255 | 0)) {\n         $wk_max$2 = $wk_max$157;\n         break;\n        }\n        HEAP32[$205 >> 2] = $i$255;\n        $wk_max$2 = $wk_max$157;\n        break;\n       } else {\n        $208 = $wk_max$157 + 1 | 0;\n        if (($wk_max$157 | 0) > 32767) break L13;\n        HEAP16[$pnt2$362 >> 1] = $208;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $208 << 16 >> 16;\n        $213 = $wk_max$157 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($213 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($213 + 1 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($213 + 2 << 2) >> 2] = $j$068;\n        HEAP32[$labelInfo + 1310736 + ($213 + 3 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($213 + 4 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($213 + 5 << 2) >> 2] = $j$068;\n        HEAP32[$labelInfo + 1310736 + ($213 + 6 << 2) >> 2] = $j$068;\n        $wk_max$2 = $208;\n        break;\n       }\n      }\n      if ($68) {\n       $71 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0;\n       $74 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0;\n       if (($71 | 0) > ($74 | 0)) {\n        HEAP16[$pnt2$362 >> 1] = $74;\n        if (($wk_max$157 | 0) > 0) {\n         $k$051 = 0;\n         $wk$052 = $17;\n         while (1) {\n          if ((HEAP32[$wk$052 >> 2] | 0) == ($71 | 0)) HEAP32[$wk$052 >> 2] = $74;\n          $k$051 = $k$051 + 1 | 0;\n          if (($k$051 | 0) >= ($wk_max$157 | 0)) {\n           $91 = $74;\n           break;\n          } else $wk$052 = $wk$052 + 4 | 0;\n         }\n        } else $91 = $74;\n       } else {\n        HEAP16[$pnt2$362 >> 1] = $71;\n        if (($71 | 0) < ($74 | 0) & ($wk_max$157 | 0) > 0) {\n         $k$148 = 0;\n         $wk$149 = $17;\n         while (1) {\n          if ((HEAP32[$wk$149 >> 2] | 0) == ($74 | 0)) HEAP32[$wk$149 >> 2] = $71;\n          $k$148 = $k$148 + 1 | 0;\n          if (($k$148 | 0) >= ($wk_max$157 | 0)) {\n           $91 = $71;\n           break;\n          } else $wk$149 = $wk$149 + 4 | 0;\n         }\n        } else $91 = $71;\n       }\n       $93 = ($91 << 16 >> 16) * 7 | 0;\n       $95 = $labelInfo + 1310736 + ($93 + -7 << 2) | 0;\n       HEAP32[$95 >> 2] = (HEAP32[$95 >> 2] | 0) + 1;\n       $99 = $labelInfo + 1310736 + ($93 + -6 << 2) | 0;\n       HEAP32[$99 >> 2] = (HEAP32[$99 >> 2] | 0) + $i$255;\n       $103 = $labelInfo + 1310736 + ($93 + -5 << 2) | 0;\n       HEAP32[$103 >> 2] = (HEAP32[$103 >> 2] | 0) + $j$068;\n       HEAP32[$labelInfo + 1310736 + ($93 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $109 = HEAP16[$pnt2$362 + -2 >> 1] | 0;\n      if ($109 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$362 >> 1] = $62;\n       $149 = $63 * 7 | 0;\n       $151 = $labelInfo + 1310736 + ($149 + -7 << 2) | 0;\n       HEAP32[$151 >> 2] = (HEAP32[$151 >> 2] | 0) + 1;\n       $155 = $labelInfo + 1310736 + ($149 + -6 << 2) | 0;\n       HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + $i$255;\n       $159 = $labelInfo + 1310736 + ($149 + -5 << 2) | 0;\n       HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $j$068;\n       $163 = $labelInfo + 1310736 + ($149 + -4 << 2) | 0;\n       if ((HEAP32[$163 >> 2] | 0) > ($i$255 | 0)) HEAP32[$163 >> 2] = $i$255;\n       HEAP32[$labelInfo + 1310736 + ($149 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $114 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0;\n      $117 = HEAP32[$labelInfo + 1179664 + (($109 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($114 | 0) > ($117 | 0)) {\n       HEAP16[$pnt2$362 >> 1] = $117;\n       if (($wk_max$157 | 0) > 0) {\n        $k$244 = 0;\n        $wk$245 = $17;\n        while (1) {\n         if ((HEAP32[$wk$245 >> 2] | 0) == ($114 | 0)) HEAP32[$wk$245 >> 2] = $117;\n         $k$244 = $k$244 + 1 | 0;\n         if (($k$244 | 0) >= ($wk_max$157 | 0)) {\n          $134 = $117;\n          break;\n         } else $wk$245 = $wk$245 + 4 | 0;\n        }\n       } else $134 = $117;\n      } else {\n       HEAP16[$pnt2$362 >> 1] = $114;\n       if (($114 | 0) < ($117 | 0) & ($wk_max$157 | 0) > 0) {\n        $k$341 = 0;\n        $wk$342 = $17;\n        while (1) {\n         if ((HEAP32[$wk$342 >> 2] | 0) == ($117 | 0)) HEAP32[$wk$342 >> 2] = $114;\n         $k$341 = $k$341 + 1 | 0;\n         if (($k$341 | 0) >= ($wk_max$157 | 0)) {\n          $134 = $114;\n          break;\n         } else $wk$342 = $wk$342 + 4 | 0;\n        }\n       } else $134 = $114;\n      }\n      $136 = ($134 << 16 >> 16) * 7 | 0;\n      $138 = $labelInfo + 1310736 + ($136 + -7 << 2) | 0;\n      HEAP32[$138 >> 2] = (HEAP32[$138 >> 2] | 0) + 1;\n      $142 = $labelInfo + 1310736 + ($136 + -6 << 2) | 0;\n      HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + $i$255;\n      $146 = $labelInfo + 1310736 + ($136 + -5 << 2) | 0;\n      HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $j$068;\n      $wk_max$2 = $wk_max$157;\n     } else {\n      HEAP16[$pnt2$362 >> 1] = 0;\n      $wk_max$2 = $wk_max$157;\n     } while (0);\n     $i$255 = $i$255 + 1 | 0;\n     $228 = $pnt$163 + 2 | 0;\n     $229 = $pnt2$362 + 2 | 0;\n     if (($i$255 | 0) >= ($10 | 0)) {\n      $pnt$1$lcssa = $228;\n      $pnt2$3$lcssa = $229;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $pnt$163 = $228;\n      $pnt2$362 = $229;\n      $wk_max$157 = $wk_max$2;\n     }\n    }\n   } else {\n    $pnt$1$lcssa = $pnt$072;\n    $pnt2$3$lcssa = $pnt2$271;\n    $wk_max$1$lcssa = $wk_max$070;\n   }\n   $j$068 = $j$068 + 1 | 0;\n   if (($j$068 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $pnt$072 = $pnt$1$lcssa + 4 | 0;\n    $pnt2$271 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$070 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $235 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$337 = 1;\n   $j$138 = 1;\n   $wk$439 = $17;\n   while (1) {\n    $237 = HEAP32[$wk$439 >> 2] | 0;\n    if (($237 | 0) == ($i$337 | 0)) {\n     $243 = $j$138;\n     $j$2 = $j$138 + 1 | 0;\n    } else {\n     $243 = HEAP32[$labelInfo + 1179664 + ($237 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$138;\n    }\n    HEAP32[$wk$439 >> 2] = $243;\n    if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$337 = $i$337 + 1 | 0;\n     $j$138 = $j$2;\n     $wk$439 = $wk$439 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $247 = $labelInfo + 8 | 0;\n  $248 = $j$1$lcssa + -1 | 0;\n  HEAP32[$247 >> 2] = $248;\n  if (!$248) $$0 = 0; else {\n   _memset($235 | 0, 0, $248 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $248 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$435 = 0;\n    do {\n     $255 = $i$435 << 2;\n     HEAP32[$labelInfo + 131084 + ($255 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($255 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($255 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($255 | 3) << 2) >> 2] = 0;\n     $i$435 = $i$435 + 1 | 0;\n    } while (($i$435 | 0) < (HEAP32[$247 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$533 = 0;\n    do {\n     $269 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0;\n     $270 = $i$533 * 7 | 0;\n     $273 = $labelInfo + 12 + ($269 << 2) | 0;\n     HEAP32[$273 >> 2] = (HEAP32[$273 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($270 << 2) >> 2] | 0);\n     $280 = $269 << 1;\n     $281 = $labelInfo + 655376 + ($280 << 3) | 0;\n     HEAPF64[$281 >> 3] = +HEAPF64[$281 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 1 << 2) >> 2] | 0);\n     $289 = $labelInfo + 655376 + (($280 | 1) << 3) | 0;\n     HEAPF64[$289 >> 3] = +HEAPF64[$289 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 2 << 2) >> 2] | 0);\n     $292 = $269 << 2;\n     $293 = $labelInfo + 131084 + ($292 << 2) | 0;\n     $297 = HEAP32[$labelInfo + 1310736 + ($270 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$293 >> 2] | 0) > ($297 | 0)) HEAP32[$293 >> 2] = $297;\n     $300 = $labelInfo + 131084 + (($292 | 1) << 2) | 0;\n     $304 = HEAP32[$labelInfo + 1310736 + ($270 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$300 >> 2] | 0) < ($304 | 0)) HEAP32[$300 >> 2] = $304;\n     $307 = $labelInfo + 131084 + (($292 | 2) << 2) | 0;\n     $311 = HEAP32[$labelInfo + 1310736 + ($270 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$307 >> 2] | 0) > ($311 | 0)) HEAP32[$307 >> 2] = $311;\n     $314 = $labelInfo + 131084 + (($292 | 3) << 2) | 0;\n     $318 = HEAP32[$labelInfo + 1310736 + ($270 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$314 >> 2] | 0) < ($318 | 0)) HEAP32[$314 >> 2] = $318;\n     $i$533 = $i$533 + 1 | 0;\n    } while (($i$533 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$247 >> 2] | 0) > 0) {\n    $i$632 = 0;\n    do {\n     $322 = $labelInfo + 12 + ($i$632 << 2) | 0;\n     $325 = $i$632 << 1;\n     $326 = $labelInfo + 655376 + ($325 << 3) | 0;\n     HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$322 >> 2] | 0);\n     $332 = $labelInfo + 655376 + (($325 | 1) << 3) | 0;\n     HEAPF64[$332 >> 3] = +HEAPF64[$332 >> 3] / +(HEAP32[$322 >> 2] | 0);\n     $i$632 = $i$632 + 1 | 0;\n    } while (($i$632 | 0) < (HEAP32[$247 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubDBR3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $103 = 0, $109 = 0, $114 = 0, $117 = 0, $134 = 0, $136 = 0, $138 = 0, $142 = 0, $146 = 0, $149 = 0, $151 = 0, $155 = 0, $159 = 0, $163 = 0, $168 = 0, $17 = 0, $170 = 0, $174 = 0, $178 = 0, $18 = 0, $182 = 0, $188 = 0, $19 = 0, $191 = 0, $193 = 0, $197 = 0, $201 = 0, $205 = 0, $208 = 0, $213 = 0, $228 = 0, $229 = 0, $235 = 0, $237 = 0, $24 = 0, $243 = 0, $247 = 0, $248 = 0, $255 = 0, $26 = 0, $269 = 0, $270 = 0, $273 = 0, $280 = 0, $281 = 0, $289 = 0, $292 = 0, $293 = 0, $297 = 0, $300 = 0, $304 = 0, $307 = 0, $311 = 0, $314 = 0, $318 = 0, $32 = 0, $322 = 0, $325 = 0, $326 = 0, $332 = 0, $43 = 0, $46 = 0, $48 = 0, $52 = 0, $56 = 0, $62 = 0, $63 = 0, $66 = 0, $67 = 0, $68 = 0, $71 = 0, $74 = 0, $9 = 0, $91 = 0, $93 = 0, $95 = 0, $99 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$081 = 0;\n  $pnt1$083 = $0;\n  $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$082 >> 1] = 0;\n   HEAP16[$pnt1$083 >> 1] = 0;\n   $i$081 = $i$081 + 1 | 0;\n   if (($i$081 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$083 = $pnt1$083 + 2 | 0;\n    $pnt2$082 = $pnt2$082 + 2 | 0;\n   }\n  }\n }\n $9 = $labelingThresh * 3 | 0;\n $10 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$175 = 0;\n  $pnt1$177 = $0;\n  $pnt2$176 = $0 + ($10 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$176 >> 1] = 0;\n   HEAP16[$pnt1$177 >> 1] = 0;\n   $i$175 = $i$175 + 1 | 0;\n   if (($i$175 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0;\n    $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0;\n   }\n  }\n }\n $17 = $labelInfo + 1179664 | 0;\n $18 = $xsize + 1 | 0;\n $19 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $24 = ($10 | 0) > 1;\n  $j$068 = 1;\n  $pnt$072 = $image + ($18 << 1) | 0;\n  $pnt2$271 = $0 + ($18 << 1) | 0;\n  $wk_max$070 = 0;\n  L13 : while (1) {\n   if ($24) {\n    $i$255 = 1;\n    $pnt$163 = $pnt$072;\n    $pnt2$362 = $pnt2$271;\n    $wk_max$157 = $wk_max$070;\n    while (1) {\n     $26 = HEAPU8[$pnt$163 >> 0] | 0;\n     $32 = HEAPU8[$pnt$163 + 1 >> 0] | 0;\n     do if ((($26 & 248) + 12 + ($26 << 5 & 224) + ($32 >>> 3 & 24) + ($32 << 2 & 248) | 0) > ($9 | 0)) {\n      HEAP16[$pnt2$362 >> 1] = 0;\n      $wk_max$2 = $wk_max$157;\n     } else {\n      $43 = HEAP16[$pnt2$362 + ($19 << 1) >> 1] | 0;\n      if ($43 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$362 >> 1] = $43;\n       $46 = ($43 << 16 >> 16) * 7 | 0;\n       $48 = $labelInfo + 1310736 + ($46 + -7 << 2) | 0;\n       HEAP32[$48 >> 2] = (HEAP32[$48 >> 2] | 0) + 1;\n       $52 = $labelInfo + 1310736 + ($46 + -6 << 2) | 0;\n       HEAP32[$52 >> 2] = (HEAP32[$52 >> 2] | 0) + $i$255;\n       $56 = $labelInfo + 1310736 + ($46 + -5 << 2) | 0;\n       HEAP32[$56 >> 2] = (HEAP32[$56 >> 2] | 0) + $j$068;\n       HEAP32[$labelInfo + 1310736 + ($46 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $62 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0;\n      $63 = $62 << 16 >> 16;\n      $66 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0;\n      $67 = $66 << 16 >> 16;\n      $68 = $66 << 16 >> 16 > 0;\n      if ($62 << 16 >> 16 <= 0) {\n       if ($68) {\n        HEAP16[$pnt2$362 >> 1] = $66;\n        $168 = $67 * 7 | 0;\n        $170 = $labelInfo + 1310736 + ($168 + -7 << 2) | 0;\n        HEAP32[$170 >> 2] = (HEAP32[$170 >> 2] | 0) + 1;\n        $174 = $labelInfo + 1310736 + ($168 + -6 << 2) | 0;\n        HEAP32[$174 >> 2] = (HEAP32[$174 >> 2] | 0) + $i$255;\n        $178 = $labelInfo + 1310736 + ($168 + -5 << 2) | 0;\n        HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + $j$068;\n        $182 = $labelInfo + 1310736 + ($168 + -3 << 2) | 0;\n        if ((HEAP32[$182 >> 2] | 0) < ($i$255 | 0)) HEAP32[$182 >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($168 + -1 << 2) >> 2] = $j$068;\n        $wk_max$2 = $wk_max$157;\n        break;\n       }\n       $188 = HEAP16[$pnt2$362 + -2 >> 1] | 0;\n       if ($188 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$362 >> 1] = $188;\n        $191 = ($188 << 16 >> 16) * 7 | 0;\n        $193 = $labelInfo + 1310736 + ($191 + -7 << 2) | 0;\n        HEAP32[$193 >> 2] = (HEAP32[$193 >> 2] | 0) + 1;\n        $197 = $labelInfo + 1310736 + ($191 + -6 << 2) | 0;\n        HEAP32[$197 >> 2] = (HEAP32[$197 >> 2] | 0) + $i$255;\n        $201 = $labelInfo + 1310736 + ($191 + -5 << 2) | 0;\n        HEAP32[$201 >> 2] = (HEAP32[$201 >> 2] | 0) + $j$068;\n        $205 = $labelInfo + 1310736 + ($191 + -3 << 2) | 0;\n        if ((HEAP32[$205 >> 2] | 0) >= ($i$255 | 0)) {\n         $wk_max$2 = $wk_max$157;\n         break;\n        }\n        HEAP32[$205 >> 2] = $i$255;\n        $wk_max$2 = $wk_max$157;\n        break;\n       } else {\n        $208 = $wk_max$157 + 1 | 0;\n        if (($wk_max$157 | 0) > 32767) break L13;\n        HEAP16[$pnt2$362 >> 1] = $208;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $208 << 16 >> 16;\n        $213 = $wk_max$157 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($213 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($213 + 1 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($213 + 2 << 2) >> 2] = $j$068;\n        HEAP32[$labelInfo + 1310736 + ($213 + 3 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($213 + 4 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($213 + 5 << 2) >> 2] = $j$068;\n        HEAP32[$labelInfo + 1310736 + ($213 + 6 << 2) >> 2] = $j$068;\n        $wk_max$2 = $208;\n        break;\n       }\n      }\n      if ($68) {\n       $71 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0;\n       $74 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0;\n       if (($71 | 0) > ($74 | 0)) {\n        HEAP16[$pnt2$362 >> 1] = $74;\n        if (($wk_max$157 | 0) > 0) {\n         $k$051 = 0;\n         $wk$052 = $17;\n         while (1) {\n          if ((HEAP32[$wk$052 >> 2] | 0) == ($71 | 0)) HEAP32[$wk$052 >> 2] = $74;\n          $k$051 = $k$051 + 1 | 0;\n          if (($k$051 | 0) >= ($wk_max$157 | 0)) {\n           $91 = $74;\n           break;\n          } else $wk$052 = $wk$052 + 4 | 0;\n         }\n        } else $91 = $74;\n       } else {\n        HEAP16[$pnt2$362 >> 1] = $71;\n        if (($71 | 0) < ($74 | 0) & ($wk_max$157 | 0) > 0) {\n         $k$148 = 0;\n         $wk$149 = $17;\n         while (1) {\n          if ((HEAP32[$wk$149 >> 2] | 0) == ($74 | 0)) HEAP32[$wk$149 >> 2] = $71;\n          $k$148 = $k$148 + 1 | 0;\n          if (($k$148 | 0) >= ($wk_max$157 | 0)) {\n           $91 = $71;\n           break;\n          } else $wk$149 = $wk$149 + 4 | 0;\n         }\n        } else $91 = $71;\n       }\n       $93 = ($91 << 16 >> 16) * 7 | 0;\n       $95 = $labelInfo + 1310736 + ($93 + -7 << 2) | 0;\n       HEAP32[$95 >> 2] = (HEAP32[$95 >> 2] | 0) + 1;\n       $99 = $labelInfo + 1310736 + ($93 + -6 << 2) | 0;\n       HEAP32[$99 >> 2] = (HEAP32[$99 >> 2] | 0) + $i$255;\n       $103 = $labelInfo + 1310736 + ($93 + -5 << 2) | 0;\n       HEAP32[$103 >> 2] = (HEAP32[$103 >> 2] | 0) + $j$068;\n       HEAP32[$labelInfo + 1310736 + ($93 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $109 = HEAP16[$pnt2$362 + -2 >> 1] | 0;\n      if ($109 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$362 >> 1] = $62;\n       $149 = $63 * 7 | 0;\n       $151 = $labelInfo + 1310736 + ($149 + -7 << 2) | 0;\n       HEAP32[$151 >> 2] = (HEAP32[$151 >> 2] | 0) + 1;\n       $155 = $labelInfo + 1310736 + ($149 + -6 << 2) | 0;\n       HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + $i$255;\n       $159 = $labelInfo + 1310736 + ($149 + -5 << 2) | 0;\n       HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $j$068;\n       $163 = $labelInfo + 1310736 + ($149 + -4 << 2) | 0;\n       if ((HEAP32[$163 >> 2] | 0) > ($i$255 | 0)) HEAP32[$163 >> 2] = $i$255;\n       HEAP32[$labelInfo + 1310736 + ($149 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $114 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0;\n      $117 = HEAP32[$labelInfo + 1179664 + (($109 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($114 | 0) > ($117 | 0)) {\n       HEAP16[$pnt2$362 >> 1] = $117;\n       if (($wk_max$157 | 0) > 0) {\n        $k$244 = 0;\n        $wk$245 = $17;\n        while (1) {\n         if ((HEAP32[$wk$245 >> 2] | 0) == ($114 | 0)) HEAP32[$wk$245 >> 2] = $117;\n         $k$244 = $k$244 + 1 | 0;\n         if (($k$244 | 0) >= ($wk_max$157 | 0)) {\n          $134 = $117;\n          break;\n         } else $wk$245 = $wk$245 + 4 | 0;\n        }\n       } else $134 = $117;\n      } else {\n       HEAP16[$pnt2$362 >> 1] = $114;\n       if (($114 | 0) < ($117 | 0) & ($wk_max$157 | 0) > 0) {\n        $k$341 = 0;\n        $wk$342 = $17;\n        while (1) {\n         if ((HEAP32[$wk$342 >> 2] | 0) == ($117 | 0)) HEAP32[$wk$342 >> 2] = $114;\n         $k$341 = $k$341 + 1 | 0;\n         if (($k$341 | 0) >= ($wk_max$157 | 0)) {\n          $134 = $114;\n          break;\n         } else $wk$342 = $wk$342 + 4 | 0;\n        }\n       } else $134 = $114;\n      }\n      $136 = ($134 << 16 >> 16) * 7 | 0;\n      $138 = $labelInfo + 1310736 + ($136 + -7 << 2) | 0;\n      HEAP32[$138 >> 2] = (HEAP32[$138 >> 2] | 0) + 1;\n      $142 = $labelInfo + 1310736 + ($136 + -6 << 2) | 0;\n      HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + $i$255;\n      $146 = $labelInfo + 1310736 + ($136 + -5 << 2) | 0;\n      HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $j$068;\n      $wk_max$2 = $wk_max$157;\n     } while (0);\n     $i$255 = $i$255 + 1 | 0;\n     $228 = $pnt$163 + 2 | 0;\n     $229 = $pnt2$362 + 2 | 0;\n     if (($i$255 | 0) >= ($10 | 0)) {\n      $pnt$1$lcssa = $228;\n      $pnt2$3$lcssa = $229;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $pnt$163 = $228;\n      $pnt2$362 = $229;\n      $wk_max$157 = $wk_max$2;\n     }\n    }\n   } else {\n    $pnt$1$lcssa = $pnt$072;\n    $pnt2$3$lcssa = $pnt2$271;\n    $wk_max$1$lcssa = $wk_max$070;\n   }\n   $j$068 = $j$068 + 1 | 0;\n   if (($j$068 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $pnt$072 = $pnt$1$lcssa + 4 | 0;\n    $pnt2$271 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$070 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $235 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$337 = 1;\n   $j$138 = 1;\n   $wk$439 = $17;\n   while (1) {\n    $237 = HEAP32[$wk$439 >> 2] | 0;\n    if (($237 | 0) == ($i$337 | 0)) {\n     $243 = $j$138;\n     $j$2 = $j$138 + 1 | 0;\n    } else {\n     $243 = HEAP32[$labelInfo + 1179664 + ($237 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$138;\n    }\n    HEAP32[$wk$439 >> 2] = $243;\n    if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$337 = $i$337 + 1 | 0;\n     $j$138 = $j$2;\n     $wk$439 = $wk$439 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $247 = $labelInfo + 8 | 0;\n  $248 = $j$1$lcssa + -1 | 0;\n  HEAP32[$247 >> 2] = $248;\n  if (!$248) $$0 = 0; else {\n   _memset($235 | 0, 0, $248 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $248 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$435 = 0;\n    do {\n     $255 = $i$435 << 2;\n     HEAP32[$labelInfo + 131084 + ($255 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($255 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($255 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($255 | 3) << 2) >> 2] = 0;\n     $i$435 = $i$435 + 1 | 0;\n    } while (($i$435 | 0) < (HEAP32[$247 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$533 = 0;\n    do {\n     $269 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0;\n     $270 = $i$533 * 7 | 0;\n     $273 = $labelInfo + 12 + ($269 << 2) | 0;\n     HEAP32[$273 >> 2] = (HEAP32[$273 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($270 << 2) >> 2] | 0);\n     $280 = $269 << 1;\n     $281 = $labelInfo + 655376 + ($280 << 3) | 0;\n     HEAPF64[$281 >> 3] = +HEAPF64[$281 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 1 << 2) >> 2] | 0);\n     $289 = $labelInfo + 655376 + (($280 | 1) << 3) | 0;\n     HEAPF64[$289 >> 3] = +HEAPF64[$289 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 2 << 2) >> 2] | 0);\n     $292 = $269 << 2;\n     $293 = $labelInfo + 131084 + ($292 << 2) | 0;\n     $297 = HEAP32[$labelInfo + 1310736 + ($270 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$293 >> 2] | 0) > ($297 | 0)) HEAP32[$293 >> 2] = $297;\n     $300 = $labelInfo + 131084 + (($292 | 1) << 2) | 0;\n     $304 = HEAP32[$labelInfo + 1310736 + ($270 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$300 >> 2] | 0) < ($304 | 0)) HEAP32[$300 >> 2] = $304;\n     $307 = $labelInfo + 131084 + (($292 | 2) << 2) | 0;\n     $311 = HEAP32[$labelInfo + 1310736 + ($270 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$307 >> 2] | 0) > ($311 | 0)) HEAP32[$307 >> 2] = $311;\n     $314 = $labelInfo + 131084 + (($292 | 3) << 2) | 0;\n     $318 = HEAP32[$labelInfo + 1310736 + ($270 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$314 >> 2] | 0) < ($318 | 0)) HEAP32[$314 >> 2] = $318;\n     $i$533 = $i$533 + 1 | 0;\n    } while (($i$533 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$247 >> 2] | 0) > 0) {\n    $i$632 = 0;\n    do {\n     $322 = $labelInfo + 12 + ($i$632 << 2) | 0;\n     $325 = $i$632 << 1;\n     $326 = $labelInfo + 655376 + ($325 << 3) | 0;\n     HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$322 >> 2] | 0);\n     $332 = $labelInfo + 655376 + (($325 | 1) << 3) | 0;\n     HEAPF64[$332 >> 3] = +HEAPF64[$332 >> 3] / +(HEAP32[$322 >> 2] | 0);\n     $i$632 = $i$632 + 1 | 0;\n    } while (($i$632 | 0) < (HEAP32[$247 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubDWR3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $103 = 0, $109 = 0, $114 = 0, $117 = 0, $134 = 0, $136 = 0, $138 = 0, $142 = 0, $146 = 0, $149 = 0, $151 = 0, $155 = 0, $159 = 0, $163 = 0, $168 = 0, $17 = 0, $170 = 0, $174 = 0, $178 = 0, $18 = 0, $182 = 0, $188 = 0, $19 = 0, $191 = 0, $193 = 0, $197 = 0, $201 = 0, $205 = 0, $208 = 0, $213 = 0, $228 = 0, $229 = 0, $235 = 0, $237 = 0, $24 = 0, $243 = 0, $247 = 0, $248 = 0, $255 = 0, $26 = 0, $269 = 0, $270 = 0, $273 = 0, $280 = 0, $281 = 0, $289 = 0, $292 = 0, $293 = 0, $297 = 0, $300 = 0, $304 = 0, $307 = 0, $311 = 0, $314 = 0, $318 = 0, $32 = 0, $322 = 0, $325 = 0, $326 = 0, $332 = 0, $43 = 0, $46 = 0, $48 = 0, $52 = 0, $56 = 0, $62 = 0, $63 = 0, $66 = 0, $67 = 0, $68 = 0, $71 = 0, $74 = 0, $9 = 0, $91 = 0, $93 = 0, $95 = 0, $99 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$081 = 0;\n  $pnt1$083 = $0;\n  $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$082 >> 1] = 0;\n   HEAP16[$pnt1$083 >> 1] = 0;\n   $i$081 = $i$081 + 1 | 0;\n   if (($i$081 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$083 = $pnt1$083 + 2 | 0;\n    $pnt2$082 = $pnt2$082 + 2 | 0;\n   }\n  }\n }\n $9 = $labelingThresh * 3 | 0;\n $10 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$175 = 0;\n  $pnt1$177 = $0;\n  $pnt2$176 = $0 + ($10 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$176 >> 1] = 0;\n   HEAP16[$pnt1$177 >> 1] = 0;\n   $i$175 = $i$175 + 1 | 0;\n   if (($i$175 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0;\n    $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0;\n   }\n  }\n }\n $17 = $labelInfo + 1179664 | 0;\n $18 = $xsize + 1 | 0;\n $19 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $24 = ($10 | 0) > 1;\n  $j$068 = 1;\n  $pnt$072 = $image + ($18 << 1) | 0;\n  $pnt2$271 = $0 + ($18 << 1) | 0;\n  $wk_max$070 = 0;\n  L13 : while (1) {\n   if ($24) {\n    $i$255 = 1;\n    $pnt$163 = $pnt$072;\n    $pnt2$362 = $pnt2$271;\n    $wk_max$157 = $wk_max$070;\n    while (1) {\n     $26 = HEAPU8[$pnt$163 >> 0] | 0;\n     $32 = HEAPU8[$pnt$163 + 1 >> 0] | 0;\n     do if ((($26 & 248) + 10 + ($26 << 5 & 224) + ($32 >>> 3 & 28) + ($32 << 3 & 248) | 0) > ($9 | 0)) {\n      $43 = HEAP16[$pnt2$362 + ($19 << 1) >> 1] | 0;\n      if ($43 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$362 >> 1] = $43;\n       $46 = ($43 << 16 >> 16) * 7 | 0;\n       $48 = $labelInfo + 1310736 + ($46 + -7 << 2) | 0;\n       HEAP32[$48 >> 2] = (HEAP32[$48 >> 2] | 0) + 1;\n       $52 = $labelInfo + 1310736 + ($46 + -6 << 2) | 0;\n       HEAP32[$52 >> 2] = (HEAP32[$52 >> 2] | 0) + $i$255;\n       $56 = $labelInfo + 1310736 + ($46 + -5 << 2) | 0;\n       HEAP32[$56 >> 2] = (HEAP32[$56 >> 2] | 0) + $j$068;\n       HEAP32[$labelInfo + 1310736 + ($46 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $62 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0;\n      $63 = $62 << 16 >> 16;\n      $66 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0;\n      $67 = $66 << 16 >> 16;\n      $68 = $66 << 16 >> 16 > 0;\n      if ($62 << 16 >> 16 <= 0) {\n       if ($68) {\n        HEAP16[$pnt2$362 >> 1] = $66;\n        $168 = $67 * 7 | 0;\n        $170 = $labelInfo + 1310736 + ($168 + -7 << 2) | 0;\n        HEAP32[$170 >> 2] = (HEAP32[$170 >> 2] | 0) + 1;\n        $174 = $labelInfo + 1310736 + ($168 + -6 << 2) | 0;\n        HEAP32[$174 >> 2] = (HEAP32[$174 >> 2] | 0) + $i$255;\n        $178 = $labelInfo + 1310736 + ($168 + -5 << 2) | 0;\n        HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + $j$068;\n        $182 = $labelInfo + 1310736 + ($168 + -3 << 2) | 0;\n        if ((HEAP32[$182 >> 2] | 0) < ($i$255 | 0)) HEAP32[$182 >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($168 + -1 << 2) >> 2] = $j$068;\n        $wk_max$2 = $wk_max$157;\n        break;\n       }\n       $188 = HEAP16[$pnt2$362 + -2 >> 1] | 0;\n       if ($188 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$362 >> 1] = $188;\n        $191 = ($188 << 16 >> 16) * 7 | 0;\n        $193 = $labelInfo + 1310736 + ($191 + -7 << 2) | 0;\n        HEAP32[$193 >> 2] = (HEAP32[$193 >> 2] | 0) + 1;\n        $197 = $labelInfo + 1310736 + ($191 + -6 << 2) | 0;\n        HEAP32[$197 >> 2] = (HEAP32[$197 >> 2] | 0) + $i$255;\n        $201 = $labelInfo + 1310736 + ($191 + -5 << 2) | 0;\n        HEAP32[$201 >> 2] = (HEAP32[$201 >> 2] | 0) + $j$068;\n        $205 = $labelInfo + 1310736 + ($191 + -3 << 2) | 0;\n        if ((HEAP32[$205 >> 2] | 0) >= ($i$255 | 0)) {\n         $wk_max$2 = $wk_max$157;\n         break;\n        }\n        HEAP32[$205 >> 2] = $i$255;\n        $wk_max$2 = $wk_max$157;\n        break;\n       } else {\n        $208 = $wk_max$157 + 1 | 0;\n        if (($wk_max$157 | 0) > 32767) break L13;\n        HEAP16[$pnt2$362 >> 1] = $208;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $208 << 16 >> 16;\n        $213 = $wk_max$157 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($213 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($213 + 1 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($213 + 2 << 2) >> 2] = $j$068;\n        HEAP32[$labelInfo + 1310736 + ($213 + 3 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($213 + 4 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($213 + 5 << 2) >> 2] = $j$068;\n        HEAP32[$labelInfo + 1310736 + ($213 + 6 << 2) >> 2] = $j$068;\n        $wk_max$2 = $208;\n        break;\n       }\n      }\n      if ($68) {\n       $71 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0;\n       $74 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0;\n       if (($71 | 0) > ($74 | 0)) {\n        HEAP16[$pnt2$362 >> 1] = $74;\n        if (($wk_max$157 | 0) > 0) {\n         $k$051 = 0;\n         $wk$052 = $17;\n         while (1) {\n          if ((HEAP32[$wk$052 >> 2] | 0) == ($71 | 0)) HEAP32[$wk$052 >> 2] = $74;\n          $k$051 = $k$051 + 1 | 0;\n          if (($k$051 | 0) >= ($wk_max$157 | 0)) {\n           $91 = $74;\n           break;\n          } else $wk$052 = $wk$052 + 4 | 0;\n         }\n        } else $91 = $74;\n       } else {\n        HEAP16[$pnt2$362 >> 1] = $71;\n        if (($71 | 0) < ($74 | 0) & ($wk_max$157 | 0) > 0) {\n         $k$148 = 0;\n         $wk$149 = $17;\n         while (1) {\n          if ((HEAP32[$wk$149 >> 2] | 0) == ($74 | 0)) HEAP32[$wk$149 >> 2] = $71;\n          $k$148 = $k$148 + 1 | 0;\n          if (($k$148 | 0) >= ($wk_max$157 | 0)) {\n           $91 = $71;\n           break;\n          } else $wk$149 = $wk$149 + 4 | 0;\n         }\n        } else $91 = $71;\n       }\n       $93 = ($91 << 16 >> 16) * 7 | 0;\n       $95 = $labelInfo + 1310736 + ($93 + -7 << 2) | 0;\n       HEAP32[$95 >> 2] = (HEAP32[$95 >> 2] | 0) + 1;\n       $99 = $labelInfo + 1310736 + ($93 + -6 << 2) | 0;\n       HEAP32[$99 >> 2] = (HEAP32[$99 >> 2] | 0) + $i$255;\n       $103 = $labelInfo + 1310736 + ($93 + -5 << 2) | 0;\n       HEAP32[$103 >> 2] = (HEAP32[$103 >> 2] | 0) + $j$068;\n       HEAP32[$labelInfo + 1310736 + ($93 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $109 = HEAP16[$pnt2$362 + -2 >> 1] | 0;\n      if ($109 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$362 >> 1] = $62;\n       $149 = $63 * 7 | 0;\n       $151 = $labelInfo + 1310736 + ($149 + -7 << 2) | 0;\n       HEAP32[$151 >> 2] = (HEAP32[$151 >> 2] | 0) + 1;\n       $155 = $labelInfo + 1310736 + ($149 + -6 << 2) | 0;\n       HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + $i$255;\n       $159 = $labelInfo + 1310736 + ($149 + -5 << 2) | 0;\n       HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $j$068;\n       $163 = $labelInfo + 1310736 + ($149 + -4 << 2) | 0;\n       if ((HEAP32[$163 >> 2] | 0) > ($i$255 | 0)) HEAP32[$163 >> 2] = $i$255;\n       HEAP32[$labelInfo + 1310736 + ($149 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $114 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0;\n      $117 = HEAP32[$labelInfo + 1179664 + (($109 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($114 | 0) > ($117 | 0)) {\n       HEAP16[$pnt2$362 >> 1] = $117;\n       if (($wk_max$157 | 0) > 0) {\n        $k$244 = 0;\n        $wk$245 = $17;\n        while (1) {\n         if ((HEAP32[$wk$245 >> 2] | 0) == ($114 | 0)) HEAP32[$wk$245 >> 2] = $117;\n         $k$244 = $k$244 + 1 | 0;\n         if (($k$244 | 0) >= ($wk_max$157 | 0)) {\n          $134 = $117;\n          break;\n         } else $wk$245 = $wk$245 + 4 | 0;\n        }\n       } else $134 = $117;\n      } else {\n       HEAP16[$pnt2$362 >> 1] = $114;\n       if (($114 | 0) < ($117 | 0) & ($wk_max$157 | 0) > 0) {\n        $k$341 = 0;\n        $wk$342 = $17;\n        while (1) {\n         if ((HEAP32[$wk$342 >> 2] | 0) == ($117 | 0)) HEAP32[$wk$342 >> 2] = $114;\n         $k$341 = $k$341 + 1 | 0;\n         if (($k$341 | 0) >= ($wk_max$157 | 0)) {\n          $134 = $114;\n          break;\n         } else $wk$342 = $wk$342 + 4 | 0;\n        }\n       } else $134 = $114;\n      }\n      $136 = ($134 << 16 >> 16) * 7 | 0;\n      $138 = $labelInfo + 1310736 + ($136 + -7 << 2) | 0;\n      HEAP32[$138 >> 2] = (HEAP32[$138 >> 2] | 0) + 1;\n      $142 = $labelInfo + 1310736 + ($136 + -6 << 2) | 0;\n      HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + $i$255;\n      $146 = $labelInfo + 1310736 + ($136 + -5 << 2) | 0;\n      HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $j$068;\n      $wk_max$2 = $wk_max$157;\n     } else {\n      HEAP16[$pnt2$362 >> 1] = 0;\n      $wk_max$2 = $wk_max$157;\n     } while (0);\n     $i$255 = $i$255 + 1 | 0;\n     $228 = $pnt$163 + 2 | 0;\n     $229 = $pnt2$362 + 2 | 0;\n     if (($i$255 | 0) >= ($10 | 0)) {\n      $pnt$1$lcssa = $228;\n      $pnt2$3$lcssa = $229;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $pnt$163 = $228;\n      $pnt2$362 = $229;\n      $wk_max$157 = $wk_max$2;\n     }\n    }\n   } else {\n    $pnt$1$lcssa = $pnt$072;\n    $pnt2$3$lcssa = $pnt2$271;\n    $wk_max$1$lcssa = $wk_max$070;\n   }\n   $j$068 = $j$068 + 1 | 0;\n   if (($j$068 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $pnt$072 = $pnt$1$lcssa + 4 | 0;\n    $pnt2$271 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$070 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $235 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$337 = 1;\n   $j$138 = 1;\n   $wk$439 = $17;\n   while (1) {\n    $237 = HEAP32[$wk$439 >> 2] | 0;\n    if (($237 | 0) == ($i$337 | 0)) {\n     $243 = $j$138;\n     $j$2 = $j$138 + 1 | 0;\n    } else {\n     $243 = HEAP32[$labelInfo + 1179664 + ($237 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$138;\n    }\n    HEAP32[$wk$439 >> 2] = $243;\n    if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$337 = $i$337 + 1 | 0;\n     $j$138 = $j$2;\n     $wk$439 = $wk$439 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $247 = $labelInfo + 8 | 0;\n  $248 = $j$1$lcssa + -1 | 0;\n  HEAP32[$247 >> 2] = $248;\n  if (!$248) $$0 = 0; else {\n   _memset($235 | 0, 0, $248 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $248 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$435 = 0;\n    do {\n     $255 = $i$435 << 2;\n     HEAP32[$labelInfo + 131084 + ($255 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($255 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($255 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($255 | 3) << 2) >> 2] = 0;\n     $i$435 = $i$435 + 1 | 0;\n    } while (($i$435 | 0) < (HEAP32[$247 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$533 = 0;\n    do {\n     $269 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0;\n     $270 = $i$533 * 7 | 0;\n     $273 = $labelInfo + 12 + ($269 << 2) | 0;\n     HEAP32[$273 >> 2] = (HEAP32[$273 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($270 << 2) >> 2] | 0);\n     $280 = $269 << 1;\n     $281 = $labelInfo + 655376 + ($280 << 3) | 0;\n     HEAPF64[$281 >> 3] = +HEAPF64[$281 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 1 << 2) >> 2] | 0);\n     $289 = $labelInfo + 655376 + (($280 | 1) << 3) | 0;\n     HEAPF64[$289 >> 3] = +HEAPF64[$289 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 2 << 2) >> 2] | 0);\n     $292 = $269 << 2;\n     $293 = $labelInfo + 131084 + ($292 << 2) | 0;\n     $297 = HEAP32[$labelInfo + 1310736 + ($270 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$293 >> 2] | 0) > ($297 | 0)) HEAP32[$293 >> 2] = $297;\n     $300 = $labelInfo + 131084 + (($292 | 1) << 2) | 0;\n     $304 = HEAP32[$labelInfo + 1310736 + ($270 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$300 >> 2] | 0) < ($304 | 0)) HEAP32[$300 >> 2] = $304;\n     $307 = $labelInfo + 131084 + (($292 | 2) << 2) | 0;\n     $311 = HEAP32[$labelInfo + 1310736 + ($270 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$307 >> 2] | 0) > ($311 | 0)) HEAP32[$307 >> 2] = $311;\n     $314 = $labelInfo + 131084 + (($292 | 3) << 2) | 0;\n     $318 = HEAP32[$labelInfo + 1310736 + ($270 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$314 >> 2] | 0) < ($318 | 0)) HEAP32[$314 >> 2] = $318;\n     $i$533 = $i$533 + 1 | 0;\n    } while (($i$533 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$247 >> 2] | 0) > 0) {\n    $i$632 = 0;\n    do {\n     $322 = $labelInfo + 12 + ($i$632 << 2) | 0;\n     $325 = $i$632 << 1;\n     $326 = $labelInfo + 655376 + ($325 << 3) | 0;\n     HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$322 >> 2] | 0);\n     $332 = $labelInfo + 655376 + (($325 | 1) << 3) | 0;\n     HEAPF64[$332 >> 3] = +HEAPF64[$332 >> 3] / +(HEAP32[$322 >> 2] | 0);\n     $i$632 = $i$632 + 1 | 0;\n    } while (($i$632 | 0) < (HEAP32[$247 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubDBR3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $103 = 0, $109 = 0, $114 = 0, $117 = 0, $134 = 0, $136 = 0, $138 = 0, $142 = 0, $146 = 0, $149 = 0, $151 = 0, $155 = 0, $159 = 0, $163 = 0, $168 = 0, $17 = 0, $170 = 0, $174 = 0, $178 = 0, $18 = 0, $182 = 0, $188 = 0, $19 = 0, $191 = 0, $193 = 0, $197 = 0, $201 = 0, $205 = 0, $208 = 0, $213 = 0, $228 = 0, $229 = 0, $235 = 0, $237 = 0, $24 = 0, $243 = 0, $247 = 0, $248 = 0, $255 = 0, $26 = 0, $269 = 0, $270 = 0, $273 = 0, $280 = 0, $281 = 0, $289 = 0, $292 = 0, $293 = 0, $297 = 0, $300 = 0, $304 = 0, $307 = 0, $311 = 0, $314 = 0, $318 = 0, $32 = 0, $322 = 0, $325 = 0, $326 = 0, $332 = 0, $43 = 0, $46 = 0, $48 = 0, $52 = 0, $56 = 0, $62 = 0, $63 = 0, $66 = 0, $67 = 0, $68 = 0, $71 = 0, $74 = 0, $9 = 0, $91 = 0, $93 = 0, $95 = 0, $99 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$081 = 0;\n  $pnt1$083 = $0;\n  $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$082 >> 1] = 0;\n   HEAP16[$pnt1$083 >> 1] = 0;\n   $i$081 = $i$081 + 1 | 0;\n   if (($i$081 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$083 = $pnt1$083 + 2 | 0;\n    $pnt2$082 = $pnt2$082 + 2 | 0;\n   }\n  }\n }\n $9 = $labelingThresh * 3 | 0;\n $10 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$175 = 0;\n  $pnt1$177 = $0;\n  $pnt2$176 = $0 + ($10 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$176 >> 1] = 0;\n   HEAP16[$pnt1$177 >> 1] = 0;\n   $i$175 = $i$175 + 1 | 0;\n   if (($i$175 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0;\n    $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0;\n   }\n  }\n }\n $17 = $labelInfo + 1179664 | 0;\n $18 = $xsize + 1 | 0;\n $19 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $24 = ($10 | 0) > 1;\n  $j$068 = 1;\n  $pnt$072 = $image + ($18 << 1) | 0;\n  $pnt2$271 = $0 + ($18 << 1) | 0;\n  $wk_max$070 = 0;\n  L13 : while (1) {\n   if ($24) {\n    $i$255 = 1;\n    $pnt$163 = $pnt$072;\n    $pnt2$362 = $pnt2$271;\n    $wk_max$157 = $wk_max$070;\n    while (1) {\n     $26 = HEAPU8[$pnt$163 >> 0] | 0;\n     $32 = HEAPU8[$pnt$163 + 1 >> 0] | 0;\n     do if ((($26 & 248) + 10 + ($26 << 5 & 224) + ($32 >>> 3 & 28) + ($32 << 3 & 248) | 0) > ($9 | 0)) {\n      HEAP16[$pnt2$362 >> 1] = 0;\n      $wk_max$2 = $wk_max$157;\n     } else {\n      $43 = HEAP16[$pnt2$362 + ($19 << 1) >> 1] | 0;\n      if ($43 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$362 >> 1] = $43;\n       $46 = ($43 << 16 >> 16) * 7 | 0;\n       $48 = $labelInfo + 1310736 + ($46 + -7 << 2) | 0;\n       HEAP32[$48 >> 2] = (HEAP32[$48 >> 2] | 0) + 1;\n       $52 = $labelInfo + 1310736 + ($46 + -6 << 2) | 0;\n       HEAP32[$52 >> 2] = (HEAP32[$52 >> 2] | 0) + $i$255;\n       $56 = $labelInfo + 1310736 + ($46 + -5 << 2) | 0;\n       HEAP32[$56 >> 2] = (HEAP32[$56 >> 2] | 0) + $j$068;\n       HEAP32[$labelInfo + 1310736 + ($46 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $62 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0;\n      $63 = $62 << 16 >> 16;\n      $66 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0;\n      $67 = $66 << 16 >> 16;\n      $68 = $66 << 16 >> 16 > 0;\n      if ($62 << 16 >> 16 <= 0) {\n       if ($68) {\n        HEAP16[$pnt2$362 >> 1] = $66;\n        $168 = $67 * 7 | 0;\n        $170 = $labelInfo + 1310736 + ($168 + -7 << 2) | 0;\n        HEAP32[$170 >> 2] = (HEAP32[$170 >> 2] | 0) + 1;\n        $174 = $labelInfo + 1310736 + ($168 + -6 << 2) | 0;\n        HEAP32[$174 >> 2] = (HEAP32[$174 >> 2] | 0) + $i$255;\n        $178 = $labelInfo + 1310736 + ($168 + -5 << 2) | 0;\n        HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + $j$068;\n        $182 = $labelInfo + 1310736 + ($168 + -3 << 2) | 0;\n        if ((HEAP32[$182 >> 2] | 0) < ($i$255 | 0)) HEAP32[$182 >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($168 + -1 << 2) >> 2] = $j$068;\n        $wk_max$2 = $wk_max$157;\n        break;\n       }\n       $188 = HEAP16[$pnt2$362 + -2 >> 1] | 0;\n       if ($188 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$362 >> 1] = $188;\n        $191 = ($188 << 16 >> 16) * 7 | 0;\n        $193 = $labelInfo + 1310736 + ($191 + -7 << 2) | 0;\n        HEAP32[$193 >> 2] = (HEAP32[$193 >> 2] | 0) + 1;\n        $197 = $labelInfo + 1310736 + ($191 + -6 << 2) | 0;\n        HEAP32[$197 >> 2] = (HEAP32[$197 >> 2] | 0) + $i$255;\n        $201 = $labelInfo + 1310736 + ($191 + -5 << 2) | 0;\n        HEAP32[$201 >> 2] = (HEAP32[$201 >> 2] | 0) + $j$068;\n        $205 = $labelInfo + 1310736 + ($191 + -3 << 2) | 0;\n        if ((HEAP32[$205 >> 2] | 0) >= ($i$255 | 0)) {\n         $wk_max$2 = $wk_max$157;\n         break;\n        }\n        HEAP32[$205 >> 2] = $i$255;\n        $wk_max$2 = $wk_max$157;\n        break;\n       } else {\n        $208 = $wk_max$157 + 1 | 0;\n        if (($wk_max$157 | 0) > 32767) break L13;\n        HEAP16[$pnt2$362 >> 1] = $208;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $208 << 16 >> 16;\n        $213 = $wk_max$157 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($213 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($213 + 1 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($213 + 2 << 2) >> 2] = $j$068;\n        HEAP32[$labelInfo + 1310736 + ($213 + 3 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($213 + 4 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($213 + 5 << 2) >> 2] = $j$068;\n        HEAP32[$labelInfo + 1310736 + ($213 + 6 << 2) >> 2] = $j$068;\n        $wk_max$2 = $208;\n        break;\n       }\n      }\n      if ($68) {\n       $71 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0;\n       $74 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0;\n       if (($71 | 0) > ($74 | 0)) {\n        HEAP16[$pnt2$362 >> 1] = $74;\n        if (($wk_max$157 | 0) > 0) {\n         $k$051 = 0;\n         $wk$052 = $17;\n         while (1) {\n          if ((HEAP32[$wk$052 >> 2] | 0) == ($71 | 0)) HEAP32[$wk$052 >> 2] = $74;\n          $k$051 = $k$051 + 1 | 0;\n          if (($k$051 | 0) >= ($wk_max$157 | 0)) {\n           $91 = $74;\n           break;\n          } else $wk$052 = $wk$052 + 4 | 0;\n         }\n        } else $91 = $74;\n       } else {\n        HEAP16[$pnt2$362 >> 1] = $71;\n        if (($71 | 0) < ($74 | 0) & ($wk_max$157 | 0) > 0) {\n         $k$148 = 0;\n         $wk$149 = $17;\n         while (1) {\n          if ((HEAP32[$wk$149 >> 2] | 0) == ($74 | 0)) HEAP32[$wk$149 >> 2] = $71;\n          $k$148 = $k$148 + 1 | 0;\n          if (($k$148 | 0) >= ($wk_max$157 | 0)) {\n           $91 = $71;\n           break;\n          } else $wk$149 = $wk$149 + 4 | 0;\n         }\n        } else $91 = $71;\n       }\n       $93 = ($91 << 16 >> 16) * 7 | 0;\n       $95 = $labelInfo + 1310736 + ($93 + -7 << 2) | 0;\n       HEAP32[$95 >> 2] = (HEAP32[$95 >> 2] | 0) + 1;\n       $99 = $labelInfo + 1310736 + ($93 + -6 << 2) | 0;\n       HEAP32[$99 >> 2] = (HEAP32[$99 >> 2] | 0) + $i$255;\n       $103 = $labelInfo + 1310736 + ($93 + -5 << 2) | 0;\n       HEAP32[$103 >> 2] = (HEAP32[$103 >> 2] | 0) + $j$068;\n       HEAP32[$labelInfo + 1310736 + ($93 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $109 = HEAP16[$pnt2$362 + -2 >> 1] | 0;\n      if ($109 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$362 >> 1] = $62;\n       $149 = $63 * 7 | 0;\n       $151 = $labelInfo + 1310736 + ($149 + -7 << 2) | 0;\n       HEAP32[$151 >> 2] = (HEAP32[$151 >> 2] | 0) + 1;\n       $155 = $labelInfo + 1310736 + ($149 + -6 << 2) | 0;\n       HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + $i$255;\n       $159 = $labelInfo + 1310736 + ($149 + -5 << 2) | 0;\n       HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $j$068;\n       $163 = $labelInfo + 1310736 + ($149 + -4 << 2) | 0;\n       if ((HEAP32[$163 >> 2] | 0) > ($i$255 | 0)) HEAP32[$163 >> 2] = $i$255;\n       HEAP32[$labelInfo + 1310736 + ($149 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $114 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0;\n      $117 = HEAP32[$labelInfo + 1179664 + (($109 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($114 | 0) > ($117 | 0)) {\n       HEAP16[$pnt2$362 >> 1] = $117;\n       if (($wk_max$157 | 0) > 0) {\n        $k$244 = 0;\n        $wk$245 = $17;\n        while (1) {\n         if ((HEAP32[$wk$245 >> 2] | 0) == ($114 | 0)) HEAP32[$wk$245 >> 2] = $117;\n         $k$244 = $k$244 + 1 | 0;\n         if (($k$244 | 0) >= ($wk_max$157 | 0)) {\n          $134 = $117;\n          break;\n         } else $wk$245 = $wk$245 + 4 | 0;\n        }\n       } else $134 = $117;\n      } else {\n       HEAP16[$pnt2$362 >> 1] = $114;\n       if (($114 | 0) < ($117 | 0) & ($wk_max$157 | 0) > 0) {\n        $k$341 = 0;\n        $wk$342 = $17;\n        while (1) {\n         if ((HEAP32[$wk$342 >> 2] | 0) == ($117 | 0)) HEAP32[$wk$342 >> 2] = $114;\n         $k$341 = $k$341 + 1 | 0;\n         if (($k$341 | 0) >= ($wk_max$157 | 0)) {\n          $134 = $114;\n          break;\n         } else $wk$342 = $wk$342 + 4 | 0;\n        }\n       } else $134 = $114;\n      }\n      $136 = ($134 << 16 >> 16) * 7 | 0;\n      $138 = $labelInfo + 1310736 + ($136 + -7 << 2) | 0;\n      HEAP32[$138 >> 2] = (HEAP32[$138 >> 2] | 0) + 1;\n      $142 = $labelInfo + 1310736 + ($136 + -6 << 2) | 0;\n      HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + $i$255;\n      $146 = $labelInfo + 1310736 + ($136 + -5 << 2) | 0;\n      HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $j$068;\n      $wk_max$2 = $wk_max$157;\n     } while (0);\n     $i$255 = $i$255 + 1 | 0;\n     $228 = $pnt$163 + 2 | 0;\n     $229 = $pnt2$362 + 2 | 0;\n     if (($i$255 | 0) >= ($10 | 0)) {\n      $pnt$1$lcssa = $228;\n      $pnt2$3$lcssa = $229;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $pnt$163 = $228;\n      $pnt2$362 = $229;\n      $wk_max$157 = $wk_max$2;\n     }\n    }\n   } else {\n    $pnt$1$lcssa = $pnt$072;\n    $pnt2$3$lcssa = $pnt2$271;\n    $wk_max$1$lcssa = $wk_max$070;\n   }\n   $j$068 = $j$068 + 1 | 0;\n   if (($j$068 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $pnt$072 = $pnt$1$lcssa + 4 | 0;\n    $pnt2$271 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$070 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $235 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$337 = 1;\n   $j$138 = 1;\n   $wk$439 = $17;\n   while (1) {\n    $237 = HEAP32[$wk$439 >> 2] | 0;\n    if (($237 | 0) == ($i$337 | 0)) {\n     $243 = $j$138;\n     $j$2 = $j$138 + 1 | 0;\n    } else {\n     $243 = HEAP32[$labelInfo + 1179664 + ($237 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$138;\n    }\n    HEAP32[$wk$439 >> 2] = $243;\n    if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$337 = $i$337 + 1 | 0;\n     $j$138 = $j$2;\n     $wk$439 = $wk$439 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $247 = $labelInfo + 8 | 0;\n  $248 = $j$1$lcssa + -1 | 0;\n  HEAP32[$247 >> 2] = $248;\n  if (!$248) $$0 = 0; else {\n   _memset($235 | 0, 0, $248 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $248 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$435 = 0;\n    do {\n     $255 = $i$435 << 2;\n     HEAP32[$labelInfo + 131084 + ($255 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($255 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($255 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($255 | 3) << 2) >> 2] = 0;\n     $i$435 = $i$435 + 1 | 0;\n    } while (($i$435 | 0) < (HEAP32[$247 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$533 = 0;\n    do {\n     $269 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0;\n     $270 = $i$533 * 7 | 0;\n     $273 = $labelInfo + 12 + ($269 << 2) | 0;\n     HEAP32[$273 >> 2] = (HEAP32[$273 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($270 << 2) >> 2] | 0);\n     $280 = $269 << 1;\n     $281 = $labelInfo + 655376 + ($280 << 3) | 0;\n     HEAPF64[$281 >> 3] = +HEAPF64[$281 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 1 << 2) >> 2] | 0);\n     $289 = $labelInfo + 655376 + (($280 | 1) << 3) | 0;\n     HEAPF64[$289 >> 3] = +HEAPF64[$289 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 2 << 2) >> 2] | 0);\n     $292 = $269 << 2;\n     $293 = $labelInfo + 131084 + ($292 << 2) | 0;\n     $297 = HEAP32[$labelInfo + 1310736 + ($270 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$293 >> 2] | 0) > ($297 | 0)) HEAP32[$293 >> 2] = $297;\n     $300 = $labelInfo + 131084 + (($292 | 1) << 2) | 0;\n     $304 = HEAP32[$labelInfo + 1310736 + ($270 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$300 >> 2] | 0) < ($304 | 0)) HEAP32[$300 >> 2] = $304;\n     $307 = $labelInfo + 131084 + (($292 | 2) << 2) | 0;\n     $311 = HEAP32[$labelInfo + 1310736 + ($270 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$307 >> 2] | 0) > ($311 | 0)) HEAP32[$307 >> 2] = $311;\n     $314 = $labelInfo + 131084 + (($292 | 3) << 2) | 0;\n     $318 = HEAP32[$labelInfo + 1310736 + ($270 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$314 >> 2] | 0) < ($318 | 0)) HEAP32[$314 >> 2] = $318;\n     $i$533 = $i$533 + 1 | 0;\n    } while (($i$533 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$247 >> 2] | 0) > 0) {\n    $i$632 = 0;\n    do {\n     $322 = $labelInfo + 12 + ($i$632 << 2) | 0;\n     $325 = $i$632 << 1;\n     $326 = $labelInfo + 655376 + ($325 << 3) | 0;\n     HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$322 >> 2] | 0);\n     $332 = $labelInfo + 655376 + (($325 | 1) << 3) | 0;\n     HEAPF64[$332 >> 3] = +HEAPF64[$332 >> 3] / +(HEAP32[$322 >> 2] | 0);\n     $i$632 = $i$632 + 1 | 0;\n    } while (($i$632 | 0) < (HEAP32[$247 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubDWI3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $101 = 0, $107 = 0, $11 = 0, $112 = 0, $115 = 0, $12 = 0, $132 = 0, $134 = 0, $136 = 0, $140 = 0, $144 = 0, $147 = 0, $149 = 0, $153 = 0, $157 = 0, $161 = 0, $166 = 0, $168 = 0, $172 = 0, $176 = 0, $180 = 0, $186 = 0, $189 = 0, $19 = 0, $191 = 0, $195 = 0, $199 = 0, $2 = 0, $20 = 0, $203 = 0, $206 = 0, $211 = 0, $226 = 0, $227 = 0, $233 = 0, $235 = 0, $241 = 0, $245 = 0, $246 = 0, $253 = 0, $267 = 0, $268 = 0, $271 = 0, $278 = 0, $279 = 0, $28 = 0, $287 = 0, $290 = 0, $291 = 0, $295 = 0, $298 = 0, $3 = 0, $302 = 0, $305 = 0, $309 = 0, $312 = 0, $316 = 0, $320 = 0, $323 = 0, $324 = 0, $330 = 0, $41 = 0, $44 = 0, $46 = 0, $50 = 0, $54 = 0, $60 = 0, $61 = 0, $64 = 0, $65 = 0, $66 = 0, $69 = 0, $72 = 0, $89 = 0, $91 = 0, $93 = 0, $97 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = ($xsize | 0) / 2 | 0;\n $1 = ($ysize | 0) / 2 | 0;\n $2 = HEAP32[$labelInfo >> 2] | 0;\n $3 = $1 + -1 | 0;\n if (($xsize | 0) > 1) {\n  $i$082 = 0;\n  $pnt1$084 = $2;\n  $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$083 >> 1] = 0;\n   HEAP16[$pnt1$084 >> 1] = 0;\n   $i$082 = $i$082 + 1 | 0;\n   if (($i$082 | 0) >= ($0 | 0)) break; else {\n    $pnt1$084 = $pnt1$084 + 2 | 0;\n    $pnt2$083 = $pnt2$083 + 2 | 0;\n   }\n  }\n }\n $11 = $labelingThresh * 3 | 0;\n $12 = $0 + -1 | 0;\n if (($ysize | 0) > 1) {\n  $i$176 = 0;\n  $pnt1$178 = $2;\n  $pnt2$177 = $2 + ($12 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$177 >> 1] = 0;\n   HEAP16[$pnt1$178 >> 1] = 0;\n   $i$176 = $i$176 + 1 | 0;\n   if (($i$176 | 0) >= ($1 | 0)) break; else {\n    $pnt1$178 = $pnt1$178 + ($0 << 1) | 0;\n    $pnt2$177 = $pnt2$177 + ($0 << 1) | 0;\n   }\n  }\n }\n $19 = $labelInfo + 1179664 | 0;\n $20 = 0 - $0 | 0;\n $$sum1 = 1 - $0 | 0;\n $$sum2 = ~$0;\n $$sum = ($xsize * 3 | 0) + 12 | 0;\n L11 : do if (($3 | 0) > 1) {\n  $28 = ($12 | 0) > 1;\n  $j$069 = 1;\n  $pnt$073 = $image + (($xsize * 6 | 0) + 6) | 0;\n  $pnt2$272 = $2 + ($0 + 1 << 1) | 0;\n  $wk_max$071 = 0;\n  L13 : while (1) {\n   if ($28) {\n    $i$256 = 1;\n    $pnt$164 = $pnt$073;\n    $pnt2$363 = $pnt2$272;\n    $wk_max$158 = $wk_max$071;\n    while (1) {\n     do if (((HEAPU8[$pnt$164 + 1 >> 0] | 0) + (HEAPU8[$pnt$164 >> 0] | 0) + (HEAPU8[$pnt$164 + 2 >> 0] | 0) | 0) > ($11 | 0)) {\n      $41 = HEAP16[$pnt2$363 + ($20 << 1) >> 1] | 0;\n      if ($41 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$363 >> 1] = $41;\n       $44 = ($41 << 16 >> 16) * 7 | 0;\n       $46 = $labelInfo + 1310736 + ($44 + -7 << 2) | 0;\n       HEAP32[$46 >> 2] = (HEAP32[$46 >> 2] | 0) + 1;\n       $50 = $labelInfo + 1310736 + ($44 + -6 << 2) | 0;\n       HEAP32[$50 >> 2] = (HEAP32[$50 >> 2] | 0) + $i$256;\n       $54 = $labelInfo + 1310736 + ($44 + -5 << 2) | 0;\n       HEAP32[$54 >> 2] = (HEAP32[$54 >> 2] | 0) + $j$069;\n       HEAP32[$labelInfo + 1310736 + ($44 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $60 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0;\n      $61 = $60 << 16 >> 16;\n      $64 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0;\n      $65 = $64 << 16 >> 16;\n      $66 = $64 << 16 >> 16 > 0;\n      if ($60 << 16 >> 16 <= 0) {\n       if ($66) {\n        HEAP16[$pnt2$363 >> 1] = $64;\n        $166 = $65 * 7 | 0;\n        $168 = $labelInfo + 1310736 + ($166 + -7 << 2) | 0;\n        HEAP32[$168 >> 2] = (HEAP32[$168 >> 2] | 0) + 1;\n        $172 = $labelInfo + 1310736 + ($166 + -6 << 2) | 0;\n        HEAP32[$172 >> 2] = (HEAP32[$172 >> 2] | 0) + $i$256;\n        $176 = $labelInfo + 1310736 + ($166 + -5 << 2) | 0;\n        HEAP32[$176 >> 2] = (HEAP32[$176 >> 2] | 0) + $j$069;\n        $180 = $labelInfo + 1310736 + ($166 + -3 << 2) | 0;\n        if ((HEAP32[$180 >> 2] | 0) < ($i$256 | 0)) HEAP32[$180 >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($166 + -1 << 2) >> 2] = $j$069;\n        $wk_max$2 = $wk_max$158;\n        break;\n       }\n       $186 = HEAP16[$pnt2$363 + -2 >> 1] | 0;\n       if ($186 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$363 >> 1] = $186;\n        $189 = ($186 << 16 >> 16) * 7 | 0;\n        $191 = $labelInfo + 1310736 + ($189 + -7 << 2) | 0;\n        HEAP32[$191 >> 2] = (HEAP32[$191 >> 2] | 0) + 1;\n        $195 = $labelInfo + 1310736 + ($189 + -6 << 2) | 0;\n        HEAP32[$195 >> 2] = (HEAP32[$195 >> 2] | 0) + $i$256;\n        $199 = $labelInfo + 1310736 + ($189 + -5 << 2) | 0;\n        HEAP32[$199 >> 2] = (HEAP32[$199 >> 2] | 0) + $j$069;\n        $203 = $labelInfo + 1310736 + ($189 + -3 << 2) | 0;\n        if ((HEAP32[$203 >> 2] | 0) >= ($i$256 | 0)) {\n         $wk_max$2 = $wk_max$158;\n         break;\n        }\n        HEAP32[$203 >> 2] = $i$256;\n        $wk_max$2 = $wk_max$158;\n        break;\n       } else {\n        $206 = $wk_max$158 + 1 | 0;\n        if (($wk_max$158 | 0) > 32767) break L13;\n        HEAP16[$pnt2$363 >> 1] = $206;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $206 << 16 >> 16;\n        $211 = $wk_max$158 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($211 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($211 + 1 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($211 + 2 << 2) >> 2] = $j$069;\n        HEAP32[$labelInfo + 1310736 + ($211 + 3 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($211 + 4 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($211 + 5 << 2) >> 2] = $j$069;\n        HEAP32[$labelInfo + 1310736 + ($211 + 6 << 2) >> 2] = $j$069;\n        $wk_max$2 = $206;\n        break;\n       }\n      }\n      if ($66) {\n       $69 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0;\n       $72 = HEAP32[$labelInfo + 1179664 + ($65 + -1 << 2) >> 2] | 0;\n       if (($69 | 0) > ($72 | 0)) {\n        HEAP16[$pnt2$363 >> 1] = $72;\n        if (($wk_max$158 | 0) > 0) {\n         $k$052 = 0;\n         $wk$053 = $19;\n         while (1) {\n          if ((HEAP32[$wk$053 >> 2] | 0) == ($69 | 0)) HEAP32[$wk$053 >> 2] = $72;\n          $k$052 = $k$052 + 1 | 0;\n          if (($k$052 | 0) >= ($wk_max$158 | 0)) {\n           $89 = $72;\n           break;\n          } else $wk$053 = $wk$053 + 4 | 0;\n         }\n        } else $89 = $72;\n       } else {\n        HEAP16[$pnt2$363 >> 1] = $69;\n        if (($69 | 0) < ($72 | 0) & ($wk_max$158 | 0) > 0) {\n         $k$149 = 0;\n         $wk$150 = $19;\n         while (1) {\n          if ((HEAP32[$wk$150 >> 2] | 0) == ($72 | 0)) HEAP32[$wk$150 >> 2] = $69;\n          $k$149 = $k$149 + 1 | 0;\n          if (($k$149 | 0) >= ($wk_max$158 | 0)) {\n           $89 = $69;\n           break;\n          } else $wk$150 = $wk$150 + 4 | 0;\n         }\n        } else $89 = $69;\n       }\n       $91 = ($89 << 16 >> 16) * 7 | 0;\n       $93 = $labelInfo + 1310736 + ($91 + -7 << 2) | 0;\n       HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + 1;\n       $97 = $labelInfo + 1310736 + ($91 + -6 << 2) | 0;\n       HEAP32[$97 >> 2] = (HEAP32[$97 >> 2] | 0) + $i$256;\n       $101 = $labelInfo + 1310736 + ($91 + -5 << 2) | 0;\n       HEAP32[$101 >> 2] = (HEAP32[$101 >> 2] | 0) + $j$069;\n       HEAP32[$labelInfo + 1310736 + ($91 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $107 = HEAP16[$pnt2$363 + -2 >> 1] | 0;\n      if ($107 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$363 >> 1] = $60;\n       $147 = $61 * 7 | 0;\n       $149 = $labelInfo + 1310736 + ($147 + -7 << 2) | 0;\n       HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + 1;\n       $153 = $labelInfo + 1310736 + ($147 + -6 << 2) | 0;\n       HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $i$256;\n       $157 = $labelInfo + 1310736 + ($147 + -5 << 2) | 0;\n       HEAP32[$157 >> 2] = (HEAP32[$157 >> 2] | 0) + $j$069;\n       $161 = $labelInfo + 1310736 + ($147 + -4 << 2) | 0;\n       if ((HEAP32[$161 >> 2] | 0) > ($i$256 | 0)) HEAP32[$161 >> 2] = $i$256;\n       HEAP32[$labelInfo + 1310736 + ($147 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $112 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0;\n      $115 = HEAP32[$labelInfo + 1179664 + (($107 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($112 | 0) > ($115 | 0)) {\n       HEAP16[$pnt2$363 >> 1] = $115;\n       if (($wk_max$158 | 0) > 0) {\n        $k$245 = 0;\n        $wk$246 = $19;\n        while (1) {\n         if ((HEAP32[$wk$246 >> 2] | 0) == ($112 | 0)) HEAP32[$wk$246 >> 2] = $115;\n         $k$245 = $k$245 + 1 | 0;\n         if (($k$245 | 0) >= ($wk_max$158 | 0)) {\n          $132 = $115;\n          break;\n         } else $wk$246 = $wk$246 + 4 | 0;\n        }\n       } else $132 = $115;\n      } else {\n       HEAP16[$pnt2$363 >> 1] = $112;\n       if (($112 | 0) < ($115 | 0) & ($wk_max$158 | 0) > 0) {\n        $k$342 = 0;\n        $wk$343 = $19;\n        while (1) {\n         if ((HEAP32[$wk$343 >> 2] | 0) == ($115 | 0)) HEAP32[$wk$343 >> 2] = $112;\n         $k$342 = $k$342 + 1 | 0;\n         if (($k$342 | 0) >= ($wk_max$158 | 0)) {\n          $132 = $112;\n          break;\n         } else $wk$343 = $wk$343 + 4 | 0;\n        }\n       } else $132 = $112;\n      }\n      $134 = ($132 << 16 >> 16) * 7 | 0;\n      $136 = $labelInfo + 1310736 + ($134 + -7 << 2) | 0;\n      HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + 1;\n      $140 = $labelInfo + 1310736 + ($134 + -6 << 2) | 0;\n      HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $i$256;\n      $144 = $labelInfo + 1310736 + ($134 + -5 << 2) | 0;\n      HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $j$069;\n      $wk_max$2 = $wk_max$158;\n     } else {\n      HEAP16[$pnt2$363 >> 1] = 0;\n      $wk_max$2 = $wk_max$158;\n     } while (0);\n     $i$256 = $i$256 + 1 | 0;\n     $226 = $pnt$164 + 6 | 0;\n     $227 = $pnt2$363 + 2 | 0;\n     if (($i$256 | 0) >= ($12 | 0)) {\n      $pnt$1$lcssa = $226;\n      $pnt2$3$lcssa = $227;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $pnt$164 = $226;\n      $pnt2$363 = $227;\n      $wk_max$158 = $wk_max$2;\n     }\n    }\n   } else {\n    $pnt$1$lcssa = $pnt$073;\n    $pnt2$3$lcssa = $pnt2$272;\n    $wk_max$1$lcssa = $wk_max$071;\n   }\n   $j$069 = $j$069 + 1 | 0;\n   if (($j$069 | 0) >= ($3 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $pnt$073 = $pnt$1$lcssa + $$sum | 0;\n    $pnt2$272 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$071 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $233 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$338 = 1;\n   $j$139 = 1;\n   $wk$440 = $19;\n   while (1) {\n    $235 = HEAP32[$wk$440 >> 2] | 0;\n    if (($235 | 0) == ($i$338 | 0)) {\n     $241 = $j$139;\n     $j$2 = $j$139 + 1 | 0;\n    } else {\n     $241 = HEAP32[$labelInfo + 1179664 + ($235 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$139;\n    }\n    HEAP32[$wk$440 >> 2] = $241;\n    if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$338 = $i$338 + 1 | 0;\n     $j$139 = $j$2;\n     $wk$440 = $wk$440 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $245 = $labelInfo + 8 | 0;\n  $246 = $j$1$lcssa + -1 | 0;\n  HEAP32[$245 >> 2] = $246;\n  if (!$246) $$0 = 0; else {\n   _memset($233 | 0, 0, $246 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $246 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$436 = 0;\n    do {\n     $253 = $i$436 << 2;\n     HEAP32[$labelInfo + 131084 + ($253 << 2) >> 2] = $0;\n     HEAP32[$labelInfo + 131084 + (($253 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($253 | 2) << 2) >> 2] = $1;\n     HEAP32[$labelInfo + 131084 + (($253 | 3) << 2) >> 2] = 0;\n     $i$436 = $i$436 + 1 | 0;\n    } while (($i$436 | 0) < (HEAP32[$245 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$534 = 0;\n    do {\n     $267 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0;\n     $268 = $i$534 * 7 | 0;\n     $271 = $labelInfo + 12 + ($267 << 2) | 0;\n     HEAP32[$271 >> 2] = (HEAP32[$271 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($268 << 2) >> 2] | 0);\n     $278 = $267 << 1;\n     $279 = $labelInfo + 655376 + ($278 << 3) | 0;\n     HEAPF64[$279 >> 3] = +HEAPF64[$279 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($268 + 1 << 2) >> 2] | 0);\n     $287 = $labelInfo + 655376 + (($278 | 1) << 3) | 0;\n     HEAPF64[$287 >> 3] = +HEAPF64[$287 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($268 + 2 << 2) >> 2] | 0);\n     $290 = $267 << 2;\n     $291 = $labelInfo + 131084 + ($290 << 2) | 0;\n     $295 = HEAP32[$labelInfo + 1310736 + ($268 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$291 >> 2] | 0) > ($295 | 0)) HEAP32[$291 >> 2] = $295;\n     $298 = $labelInfo + 131084 + (($290 | 1) << 2) | 0;\n     $302 = HEAP32[$labelInfo + 1310736 + ($268 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$298 >> 2] | 0) < ($302 | 0)) HEAP32[$298 >> 2] = $302;\n     $305 = $labelInfo + 131084 + (($290 | 2) << 2) | 0;\n     $309 = HEAP32[$labelInfo + 1310736 + ($268 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$305 >> 2] | 0) > ($309 | 0)) HEAP32[$305 >> 2] = $309;\n     $312 = $labelInfo + 131084 + (($290 | 3) << 2) | 0;\n     $316 = HEAP32[$labelInfo + 1310736 + ($268 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$312 >> 2] | 0) < ($316 | 0)) HEAP32[$312 >> 2] = $316;\n     $i$534 = $i$534 + 1 | 0;\n    } while (($i$534 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$245 >> 2] | 0) > 0) {\n    $i$633 = 0;\n    do {\n     $320 = $labelInfo + 12 + ($i$633 << 2) | 0;\n     $323 = $i$633 << 1;\n     $324 = $labelInfo + 655376 + ($323 << 3) | 0;\n     HEAPF64[$324 >> 3] = +HEAPF64[$324 >> 3] / +(HEAP32[$320 >> 2] | 0);\n     $330 = $labelInfo + 655376 + (($323 | 1) << 3) | 0;\n     HEAPF64[$330 >> 3] = +HEAPF64[$330 >> 3] / +(HEAP32[$320 >> 2] | 0);\n     $i$633 = $i$633 + 1 | 0;\n    } while (($i$633 | 0) < (HEAP32[$245 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubDBI3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $101 = 0, $107 = 0, $11 = 0, $112 = 0, $115 = 0, $12 = 0, $132 = 0, $134 = 0, $136 = 0, $140 = 0, $144 = 0, $147 = 0, $149 = 0, $153 = 0, $157 = 0, $161 = 0, $166 = 0, $168 = 0, $172 = 0, $176 = 0, $180 = 0, $186 = 0, $189 = 0, $19 = 0, $191 = 0, $195 = 0, $199 = 0, $2 = 0, $20 = 0, $203 = 0, $206 = 0, $211 = 0, $226 = 0, $227 = 0, $233 = 0, $235 = 0, $241 = 0, $245 = 0, $246 = 0, $253 = 0, $267 = 0, $268 = 0, $271 = 0, $278 = 0, $279 = 0, $28 = 0, $287 = 0, $290 = 0, $291 = 0, $295 = 0, $298 = 0, $3 = 0, $302 = 0, $305 = 0, $309 = 0, $312 = 0, $316 = 0, $320 = 0, $323 = 0, $324 = 0, $330 = 0, $41 = 0, $44 = 0, $46 = 0, $50 = 0, $54 = 0, $60 = 0, $61 = 0, $64 = 0, $65 = 0, $66 = 0, $69 = 0, $72 = 0, $89 = 0, $91 = 0, $93 = 0, $97 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = ($xsize | 0) / 2 | 0;\n $1 = ($ysize | 0) / 2 | 0;\n $2 = HEAP32[$labelInfo >> 2] | 0;\n $3 = $1 + -1 | 0;\n if (($xsize | 0) > 1) {\n  $i$082 = 0;\n  $pnt1$084 = $2;\n  $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$083 >> 1] = 0;\n   HEAP16[$pnt1$084 >> 1] = 0;\n   $i$082 = $i$082 + 1 | 0;\n   if (($i$082 | 0) >= ($0 | 0)) break; else {\n    $pnt1$084 = $pnt1$084 + 2 | 0;\n    $pnt2$083 = $pnt2$083 + 2 | 0;\n   }\n  }\n }\n $11 = $labelingThresh * 3 | 0;\n $12 = $0 + -1 | 0;\n if (($ysize | 0) > 1) {\n  $i$176 = 0;\n  $pnt1$178 = $2;\n  $pnt2$177 = $2 + ($12 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$177 >> 1] = 0;\n   HEAP16[$pnt1$178 >> 1] = 0;\n   $i$176 = $i$176 + 1 | 0;\n   if (($i$176 | 0) >= ($1 | 0)) break; else {\n    $pnt1$178 = $pnt1$178 + ($0 << 1) | 0;\n    $pnt2$177 = $pnt2$177 + ($0 << 1) | 0;\n   }\n  }\n }\n $19 = $labelInfo + 1179664 | 0;\n $20 = 0 - $0 | 0;\n $$sum1 = 1 - $0 | 0;\n $$sum2 = ~$0;\n $$sum = ($xsize * 3 | 0) + 12 | 0;\n L11 : do if (($3 | 0) > 1) {\n  $28 = ($12 | 0) > 1;\n  $j$069 = 1;\n  $pnt$073 = $image + (($xsize * 6 | 0) + 6) | 0;\n  $pnt2$272 = $2 + ($0 + 1 << 1) | 0;\n  $wk_max$071 = 0;\n  L13 : while (1) {\n   if ($28) {\n    $i$256 = 1;\n    $pnt$164 = $pnt$073;\n    $pnt2$363 = $pnt2$272;\n    $wk_max$158 = $wk_max$071;\n    while (1) {\n     do if (((HEAPU8[$pnt$164 + 1 >> 0] | 0) + (HEAPU8[$pnt$164 >> 0] | 0) + (HEAPU8[$pnt$164 + 2 >> 0] | 0) | 0) > ($11 | 0)) {\n      HEAP16[$pnt2$363 >> 1] = 0;\n      $wk_max$2 = $wk_max$158;\n     } else {\n      $41 = HEAP16[$pnt2$363 + ($20 << 1) >> 1] | 0;\n      if ($41 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$363 >> 1] = $41;\n       $44 = ($41 << 16 >> 16) * 7 | 0;\n       $46 = $labelInfo + 1310736 + ($44 + -7 << 2) | 0;\n       HEAP32[$46 >> 2] = (HEAP32[$46 >> 2] | 0) + 1;\n       $50 = $labelInfo + 1310736 + ($44 + -6 << 2) | 0;\n       HEAP32[$50 >> 2] = (HEAP32[$50 >> 2] | 0) + $i$256;\n       $54 = $labelInfo + 1310736 + ($44 + -5 << 2) | 0;\n       HEAP32[$54 >> 2] = (HEAP32[$54 >> 2] | 0) + $j$069;\n       HEAP32[$labelInfo + 1310736 + ($44 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $60 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0;\n      $61 = $60 << 16 >> 16;\n      $64 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0;\n      $65 = $64 << 16 >> 16;\n      $66 = $64 << 16 >> 16 > 0;\n      if ($60 << 16 >> 16 <= 0) {\n       if ($66) {\n        HEAP16[$pnt2$363 >> 1] = $64;\n        $166 = $65 * 7 | 0;\n        $168 = $labelInfo + 1310736 + ($166 + -7 << 2) | 0;\n        HEAP32[$168 >> 2] = (HEAP32[$168 >> 2] | 0) + 1;\n        $172 = $labelInfo + 1310736 + ($166 + -6 << 2) | 0;\n        HEAP32[$172 >> 2] = (HEAP32[$172 >> 2] | 0) + $i$256;\n        $176 = $labelInfo + 1310736 + ($166 + -5 << 2) | 0;\n        HEAP32[$176 >> 2] = (HEAP32[$176 >> 2] | 0) + $j$069;\n        $180 = $labelInfo + 1310736 + ($166 + -3 << 2) | 0;\n        if ((HEAP32[$180 >> 2] | 0) < ($i$256 | 0)) HEAP32[$180 >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($166 + -1 << 2) >> 2] = $j$069;\n        $wk_max$2 = $wk_max$158;\n        break;\n       }\n       $186 = HEAP16[$pnt2$363 + -2 >> 1] | 0;\n       if ($186 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$363 >> 1] = $186;\n        $189 = ($186 << 16 >> 16) * 7 | 0;\n        $191 = $labelInfo + 1310736 + ($189 + -7 << 2) | 0;\n        HEAP32[$191 >> 2] = (HEAP32[$191 >> 2] | 0) + 1;\n        $195 = $labelInfo + 1310736 + ($189 + -6 << 2) | 0;\n        HEAP32[$195 >> 2] = (HEAP32[$195 >> 2] | 0) + $i$256;\n        $199 = $labelInfo + 1310736 + ($189 + -5 << 2) | 0;\n        HEAP32[$199 >> 2] = (HEAP32[$199 >> 2] | 0) + $j$069;\n        $203 = $labelInfo + 1310736 + ($189 + -3 << 2) | 0;\n        if ((HEAP32[$203 >> 2] | 0) >= ($i$256 | 0)) {\n         $wk_max$2 = $wk_max$158;\n         break;\n        }\n        HEAP32[$203 >> 2] = $i$256;\n        $wk_max$2 = $wk_max$158;\n        break;\n       } else {\n        $206 = $wk_max$158 + 1 | 0;\n        if (($wk_max$158 | 0) > 32767) break L13;\n        HEAP16[$pnt2$363 >> 1] = $206;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $206 << 16 >> 16;\n        $211 = $wk_max$158 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($211 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($211 + 1 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($211 + 2 << 2) >> 2] = $j$069;\n        HEAP32[$labelInfo + 1310736 + ($211 + 3 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($211 + 4 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($211 + 5 << 2) >> 2] = $j$069;\n        HEAP32[$labelInfo + 1310736 + ($211 + 6 << 2) >> 2] = $j$069;\n        $wk_max$2 = $206;\n        break;\n       }\n      }\n      if ($66) {\n       $69 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0;\n       $72 = HEAP32[$labelInfo + 1179664 + ($65 + -1 << 2) >> 2] | 0;\n       if (($69 | 0) > ($72 | 0)) {\n        HEAP16[$pnt2$363 >> 1] = $72;\n        if (($wk_max$158 | 0) > 0) {\n         $k$052 = 0;\n         $wk$053 = $19;\n         while (1) {\n          if ((HEAP32[$wk$053 >> 2] | 0) == ($69 | 0)) HEAP32[$wk$053 >> 2] = $72;\n          $k$052 = $k$052 + 1 | 0;\n          if (($k$052 | 0) >= ($wk_max$158 | 0)) {\n           $89 = $72;\n           break;\n          } else $wk$053 = $wk$053 + 4 | 0;\n         }\n        } else $89 = $72;\n       } else {\n        HEAP16[$pnt2$363 >> 1] = $69;\n        if (($69 | 0) < ($72 | 0) & ($wk_max$158 | 0) > 0) {\n         $k$149 = 0;\n         $wk$150 = $19;\n         while (1) {\n          if ((HEAP32[$wk$150 >> 2] | 0) == ($72 | 0)) HEAP32[$wk$150 >> 2] = $69;\n          $k$149 = $k$149 + 1 | 0;\n          if (($k$149 | 0) >= ($wk_max$158 | 0)) {\n           $89 = $69;\n           break;\n          } else $wk$150 = $wk$150 + 4 | 0;\n         }\n        } else $89 = $69;\n       }\n       $91 = ($89 << 16 >> 16) * 7 | 0;\n       $93 = $labelInfo + 1310736 + ($91 + -7 << 2) | 0;\n       HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + 1;\n       $97 = $labelInfo + 1310736 + ($91 + -6 << 2) | 0;\n       HEAP32[$97 >> 2] = (HEAP32[$97 >> 2] | 0) + $i$256;\n       $101 = $labelInfo + 1310736 + ($91 + -5 << 2) | 0;\n       HEAP32[$101 >> 2] = (HEAP32[$101 >> 2] | 0) + $j$069;\n       HEAP32[$labelInfo + 1310736 + ($91 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $107 = HEAP16[$pnt2$363 + -2 >> 1] | 0;\n      if ($107 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$363 >> 1] = $60;\n       $147 = $61 * 7 | 0;\n       $149 = $labelInfo + 1310736 + ($147 + -7 << 2) | 0;\n       HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + 1;\n       $153 = $labelInfo + 1310736 + ($147 + -6 << 2) | 0;\n       HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $i$256;\n       $157 = $labelInfo + 1310736 + ($147 + -5 << 2) | 0;\n       HEAP32[$157 >> 2] = (HEAP32[$157 >> 2] | 0) + $j$069;\n       $161 = $labelInfo + 1310736 + ($147 + -4 << 2) | 0;\n       if ((HEAP32[$161 >> 2] | 0) > ($i$256 | 0)) HEAP32[$161 >> 2] = $i$256;\n       HEAP32[$labelInfo + 1310736 + ($147 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $112 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0;\n      $115 = HEAP32[$labelInfo + 1179664 + (($107 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($112 | 0) > ($115 | 0)) {\n       HEAP16[$pnt2$363 >> 1] = $115;\n       if (($wk_max$158 | 0) > 0) {\n        $k$245 = 0;\n        $wk$246 = $19;\n        while (1) {\n         if ((HEAP32[$wk$246 >> 2] | 0) == ($112 | 0)) HEAP32[$wk$246 >> 2] = $115;\n         $k$245 = $k$245 + 1 | 0;\n         if (($k$245 | 0) >= ($wk_max$158 | 0)) {\n          $132 = $115;\n          break;\n         } else $wk$246 = $wk$246 + 4 | 0;\n        }\n       } else $132 = $115;\n      } else {\n       HEAP16[$pnt2$363 >> 1] = $112;\n       if (($112 | 0) < ($115 | 0) & ($wk_max$158 | 0) > 0) {\n        $k$342 = 0;\n        $wk$343 = $19;\n        while (1) {\n         if ((HEAP32[$wk$343 >> 2] | 0) == ($115 | 0)) HEAP32[$wk$343 >> 2] = $112;\n         $k$342 = $k$342 + 1 | 0;\n         if (($k$342 | 0) >= ($wk_max$158 | 0)) {\n          $132 = $112;\n          break;\n         } else $wk$343 = $wk$343 + 4 | 0;\n        }\n       } else $132 = $112;\n      }\n      $134 = ($132 << 16 >> 16) * 7 | 0;\n      $136 = $labelInfo + 1310736 + ($134 + -7 << 2) | 0;\n      HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + 1;\n      $140 = $labelInfo + 1310736 + ($134 + -6 << 2) | 0;\n      HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $i$256;\n      $144 = $labelInfo + 1310736 + ($134 + -5 << 2) | 0;\n      HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $j$069;\n      $wk_max$2 = $wk_max$158;\n     } while (0);\n     $i$256 = $i$256 + 1 | 0;\n     $226 = $pnt$164 + 6 | 0;\n     $227 = $pnt2$363 + 2 | 0;\n     if (($i$256 | 0) >= ($12 | 0)) {\n      $pnt$1$lcssa = $226;\n      $pnt2$3$lcssa = $227;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $pnt$164 = $226;\n      $pnt2$363 = $227;\n      $wk_max$158 = $wk_max$2;\n     }\n    }\n   } else {\n    $pnt$1$lcssa = $pnt$073;\n    $pnt2$3$lcssa = $pnt2$272;\n    $wk_max$1$lcssa = $wk_max$071;\n   }\n   $j$069 = $j$069 + 1 | 0;\n   if (($j$069 | 0) >= ($3 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $pnt$073 = $pnt$1$lcssa + $$sum | 0;\n    $pnt2$272 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$071 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $233 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$338 = 1;\n   $j$139 = 1;\n   $wk$440 = $19;\n   while (1) {\n    $235 = HEAP32[$wk$440 >> 2] | 0;\n    if (($235 | 0) == ($i$338 | 0)) {\n     $241 = $j$139;\n     $j$2 = $j$139 + 1 | 0;\n    } else {\n     $241 = HEAP32[$labelInfo + 1179664 + ($235 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$139;\n    }\n    HEAP32[$wk$440 >> 2] = $241;\n    if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$338 = $i$338 + 1 | 0;\n     $j$139 = $j$2;\n     $wk$440 = $wk$440 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $245 = $labelInfo + 8 | 0;\n  $246 = $j$1$lcssa + -1 | 0;\n  HEAP32[$245 >> 2] = $246;\n  if (!$246) $$0 = 0; else {\n   _memset($233 | 0, 0, $246 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $246 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$436 = 0;\n    do {\n     $253 = $i$436 << 2;\n     HEAP32[$labelInfo + 131084 + ($253 << 2) >> 2] = $0;\n     HEAP32[$labelInfo + 131084 + (($253 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($253 | 2) << 2) >> 2] = $1;\n     HEAP32[$labelInfo + 131084 + (($253 | 3) << 2) >> 2] = 0;\n     $i$436 = $i$436 + 1 | 0;\n    } while (($i$436 | 0) < (HEAP32[$245 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$534 = 0;\n    do {\n     $267 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0;\n     $268 = $i$534 * 7 | 0;\n     $271 = $labelInfo + 12 + ($267 << 2) | 0;\n     HEAP32[$271 >> 2] = (HEAP32[$271 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($268 << 2) >> 2] | 0);\n     $278 = $267 << 1;\n     $279 = $labelInfo + 655376 + ($278 << 3) | 0;\n     HEAPF64[$279 >> 3] = +HEAPF64[$279 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($268 + 1 << 2) >> 2] | 0);\n     $287 = $labelInfo + 655376 + (($278 | 1) << 3) | 0;\n     HEAPF64[$287 >> 3] = +HEAPF64[$287 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($268 + 2 << 2) >> 2] | 0);\n     $290 = $267 << 2;\n     $291 = $labelInfo + 131084 + ($290 << 2) | 0;\n     $295 = HEAP32[$labelInfo + 1310736 + ($268 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$291 >> 2] | 0) > ($295 | 0)) HEAP32[$291 >> 2] = $295;\n     $298 = $labelInfo + 131084 + (($290 | 1) << 2) | 0;\n     $302 = HEAP32[$labelInfo + 1310736 + ($268 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$298 >> 2] | 0) < ($302 | 0)) HEAP32[$298 >> 2] = $302;\n     $305 = $labelInfo + 131084 + (($290 | 2) << 2) | 0;\n     $309 = HEAP32[$labelInfo + 1310736 + ($268 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$305 >> 2] | 0) > ($309 | 0)) HEAP32[$305 >> 2] = $309;\n     $312 = $labelInfo + 131084 + (($290 | 3) << 2) | 0;\n     $316 = HEAP32[$labelInfo + 1310736 + ($268 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$312 >> 2] | 0) < ($316 | 0)) HEAP32[$312 >> 2] = $316;\n     $i$534 = $i$534 + 1 | 0;\n    } while (($i$534 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$245 >> 2] | 0) > 0) {\n    $i$633 = 0;\n    do {\n     $320 = $labelInfo + 12 + ($i$633 << 2) | 0;\n     $323 = $i$633 << 1;\n     $324 = $labelInfo + 655376 + ($323 << 3) | 0;\n     HEAPF64[$324 >> 3] = +HEAPF64[$324 >> 3] / +(HEAP32[$320 >> 2] | 0);\n     $330 = $labelInfo + 655376 + (($323 | 1) << 3) | 0;\n     HEAPF64[$330 >> 3] = +HEAPF64[$330 >> 3] / +(HEAP32[$320 >> 2] | 0);\n     $i$633 = $i$633 + 1 | 0;\n    } while (($i$633 | 0) < (HEAP32[$245 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubDWIA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $102 = 0, $108 = 0, $11 = 0, $113 = 0, $116 = 0, $12 = 0, $133 = 0, $135 = 0, $137 = 0, $141 = 0, $145 = 0, $148 = 0, $150 = 0, $154 = 0, $158 = 0, $162 = 0, $167 = 0, $169 = 0, $173 = 0, $177 = 0, $181 = 0, $187 = 0, $19 = 0, $190 = 0, $192 = 0, $196 = 0, $2 = 0, $20 = 0, $200 = 0, $204 = 0, $207 = 0, $212 = 0, $227 = 0, $228 = 0, $234 = 0, $236 = 0, $242 = 0, $246 = 0, $247 = 0, $254 = 0, $268 = 0, $269 = 0, $272 = 0, $279 = 0, $28 = 0, $280 = 0, $288 = 0, $291 = 0, $292 = 0, $296 = 0, $299 = 0, $3 = 0, $303 = 0, $306 = 0, $310 = 0, $313 = 0, $317 = 0, $321 = 0, $324 = 0, $325 = 0, $331 = 0, $42 = 0, $45 = 0, $47 = 0, $51 = 0, $55 = 0, $61 = 0, $62 = 0, $65 = 0, $66 = 0, $67 = 0, $70 = 0, $73 = 0, $90 = 0, $92 = 0, $94 = 0, $98 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = ($xsize | 0) / 2 | 0;\n $1 = ($ysize | 0) / 2 | 0;\n $2 = HEAP32[$labelInfo >> 2] | 0;\n $3 = $1 + -1 | 0;\n if (($xsize | 0) > 1) {\n  $i$082 = 0;\n  $pnt1$084 = $2;\n  $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$083 >> 1] = 0;\n   HEAP16[$pnt1$084 >> 1] = 0;\n   $i$082 = $i$082 + 1 | 0;\n   if (($i$082 | 0) >= ($0 | 0)) break; else {\n    $pnt1$084 = $pnt1$084 + 2 | 0;\n    $pnt2$083 = $pnt2$083 + 2 | 0;\n   }\n  }\n }\n $11 = $labelingThresh * 3 | 0;\n $12 = $0 + -1 | 0;\n if (($ysize | 0) > 1) {\n  $i$176 = 0;\n  $pnt1$178 = $2;\n  $pnt2$177 = $2 + ($12 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$177 >> 1] = 0;\n   HEAP16[$pnt1$178 >> 1] = 0;\n   $i$176 = $i$176 + 1 | 0;\n   if (($i$176 | 0) >= ($1 | 0)) break; else {\n    $pnt1$178 = $pnt1$178 + ($0 << 1) | 0;\n    $pnt2$177 = $pnt2$177 + ($0 << 1) | 0;\n   }\n  }\n }\n $19 = $labelInfo + 1179664 | 0;\n $20 = 0 - $0 | 0;\n $$sum1 = 1 - $0 | 0;\n $$sum2 = ~$0;\n $$sum = ($xsize << 2) + 16 | 0;\n L11 : do if (($3 | 0) > 1) {\n  $28 = ($12 | 0) > 1;\n  $j$069 = 1;\n  $pnt$073 = $image + (($xsize << 3) + 8) | 0;\n  $pnt2$272 = $2 + ($0 + 1 << 1) | 0;\n  $wk_max$071 = 0;\n  L13 : while (1) {\n   if ($28) {\n    $i$256 = 1;\n    $pnt$164 = $pnt$073;\n    $pnt2$363 = $pnt2$272;\n    $wk_max$158 = $wk_max$071;\n    while (1) {\n     do if (((HEAPU8[$pnt$164 + 2 >> 0] | 0) + (HEAPU8[$pnt$164 + 1 >> 0] | 0) + (HEAPU8[$pnt$164 + 3 >> 0] | 0) | 0) > ($11 | 0)) {\n      $42 = HEAP16[$pnt2$363 + ($20 << 1) >> 1] | 0;\n      if ($42 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$363 >> 1] = $42;\n       $45 = ($42 << 16 >> 16) * 7 | 0;\n       $47 = $labelInfo + 1310736 + ($45 + -7 << 2) | 0;\n       HEAP32[$47 >> 2] = (HEAP32[$47 >> 2] | 0) + 1;\n       $51 = $labelInfo + 1310736 + ($45 + -6 << 2) | 0;\n       HEAP32[$51 >> 2] = (HEAP32[$51 >> 2] | 0) + $i$256;\n       $55 = $labelInfo + 1310736 + ($45 + -5 << 2) | 0;\n       HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + $j$069;\n       HEAP32[$labelInfo + 1310736 + ($45 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $61 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0;\n      $62 = $61 << 16 >> 16;\n      $65 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0;\n      $66 = $65 << 16 >> 16;\n      $67 = $65 << 16 >> 16 > 0;\n      if ($61 << 16 >> 16 <= 0) {\n       if ($67) {\n        HEAP16[$pnt2$363 >> 1] = $65;\n        $167 = $66 * 7 | 0;\n        $169 = $labelInfo + 1310736 + ($167 + -7 << 2) | 0;\n        HEAP32[$169 >> 2] = (HEAP32[$169 >> 2] | 0) + 1;\n        $173 = $labelInfo + 1310736 + ($167 + -6 << 2) | 0;\n        HEAP32[$173 >> 2] = (HEAP32[$173 >> 2] | 0) + $i$256;\n        $177 = $labelInfo + 1310736 + ($167 + -5 << 2) | 0;\n        HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + $j$069;\n        $181 = $labelInfo + 1310736 + ($167 + -3 << 2) | 0;\n        if ((HEAP32[$181 >> 2] | 0) < ($i$256 | 0)) HEAP32[$181 >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($167 + -1 << 2) >> 2] = $j$069;\n        $wk_max$2 = $wk_max$158;\n        break;\n       }\n       $187 = HEAP16[$pnt2$363 + -2 >> 1] | 0;\n       if ($187 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$363 >> 1] = $187;\n        $190 = ($187 << 16 >> 16) * 7 | 0;\n        $192 = $labelInfo + 1310736 + ($190 + -7 << 2) | 0;\n        HEAP32[$192 >> 2] = (HEAP32[$192 >> 2] | 0) + 1;\n        $196 = $labelInfo + 1310736 + ($190 + -6 << 2) | 0;\n        HEAP32[$196 >> 2] = (HEAP32[$196 >> 2] | 0) + $i$256;\n        $200 = $labelInfo + 1310736 + ($190 + -5 << 2) | 0;\n        HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + $j$069;\n        $204 = $labelInfo + 1310736 + ($190 + -3 << 2) | 0;\n        if ((HEAP32[$204 >> 2] | 0) >= ($i$256 | 0)) {\n         $wk_max$2 = $wk_max$158;\n         break;\n        }\n        HEAP32[$204 >> 2] = $i$256;\n        $wk_max$2 = $wk_max$158;\n        break;\n       } else {\n        $207 = $wk_max$158 + 1 | 0;\n        if (($wk_max$158 | 0) > 32767) break L13;\n        HEAP16[$pnt2$363 >> 1] = $207;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $207 << 16 >> 16;\n        $212 = $wk_max$158 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($212 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($212 + 1 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($212 + 2 << 2) >> 2] = $j$069;\n        HEAP32[$labelInfo + 1310736 + ($212 + 3 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($212 + 4 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($212 + 5 << 2) >> 2] = $j$069;\n        HEAP32[$labelInfo + 1310736 + ($212 + 6 << 2) >> 2] = $j$069;\n        $wk_max$2 = $207;\n        break;\n       }\n      }\n      if ($67) {\n       $70 = HEAP32[$labelInfo + 1179664 + ($62 + -1 << 2) >> 2] | 0;\n       $73 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0;\n       if (($70 | 0) > ($73 | 0)) {\n        HEAP16[$pnt2$363 >> 1] = $73;\n        if (($wk_max$158 | 0) > 0) {\n         $k$052 = 0;\n         $wk$053 = $19;\n         while (1) {\n          if ((HEAP32[$wk$053 >> 2] | 0) == ($70 | 0)) HEAP32[$wk$053 >> 2] = $73;\n          $k$052 = $k$052 + 1 | 0;\n          if (($k$052 | 0) >= ($wk_max$158 | 0)) {\n           $90 = $73;\n           break;\n          } else $wk$053 = $wk$053 + 4 | 0;\n         }\n        } else $90 = $73;\n       } else {\n        HEAP16[$pnt2$363 >> 1] = $70;\n        if (($70 | 0) < ($73 | 0) & ($wk_max$158 | 0) > 0) {\n         $k$149 = 0;\n         $wk$150 = $19;\n         while (1) {\n          if ((HEAP32[$wk$150 >> 2] | 0) == ($73 | 0)) HEAP32[$wk$150 >> 2] = $70;\n          $k$149 = $k$149 + 1 | 0;\n          if (($k$149 | 0) >= ($wk_max$158 | 0)) {\n           $90 = $70;\n           break;\n          } else $wk$150 = $wk$150 + 4 | 0;\n         }\n        } else $90 = $70;\n       }\n       $92 = ($90 << 16 >> 16) * 7 | 0;\n       $94 = $labelInfo + 1310736 + ($92 + -7 << 2) | 0;\n       HEAP32[$94 >> 2] = (HEAP32[$94 >> 2] | 0) + 1;\n       $98 = $labelInfo + 1310736 + ($92 + -6 << 2) | 0;\n       HEAP32[$98 >> 2] = (HEAP32[$98 >> 2] | 0) + $i$256;\n       $102 = $labelInfo + 1310736 + ($92 + -5 << 2) | 0;\n       HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + $j$069;\n       HEAP32[$labelInfo + 1310736 + ($92 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $108 = HEAP16[$pnt2$363 + -2 >> 1] | 0;\n      if ($108 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$363 >> 1] = $61;\n       $148 = $62 * 7 | 0;\n       $150 = $labelInfo + 1310736 + ($148 + -7 << 2) | 0;\n       HEAP32[$150 >> 2] = (HEAP32[$150 >> 2] | 0) + 1;\n       $154 = $labelInfo + 1310736 + ($148 + -6 << 2) | 0;\n       HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + $i$256;\n       $158 = $labelInfo + 1310736 + ($148 + -5 << 2) | 0;\n       HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + $j$069;\n       $162 = $labelInfo + 1310736 + ($148 + -4 << 2) | 0;\n       if ((HEAP32[$162 >> 2] | 0) > ($i$256 | 0)) HEAP32[$162 >> 2] = $i$256;\n       HEAP32[$labelInfo + 1310736 + ($148 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $113 = HEAP32[$labelInfo + 1179664 + ($62 + -1 << 2) >> 2] | 0;\n      $116 = HEAP32[$labelInfo + 1179664 + (($108 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($113 | 0) > ($116 | 0)) {\n       HEAP16[$pnt2$363 >> 1] = $116;\n       if (($wk_max$158 | 0) > 0) {\n        $k$245 = 0;\n        $wk$246 = $19;\n        while (1) {\n         if ((HEAP32[$wk$246 >> 2] | 0) == ($113 | 0)) HEAP32[$wk$246 >> 2] = $116;\n         $k$245 = $k$245 + 1 | 0;\n         if (($k$245 | 0) >= ($wk_max$158 | 0)) {\n          $133 = $116;\n          break;\n         } else $wk$246 = $wk$246 + 4 | 0;\n        }\n       } else $133 = $116;\n      } else {\n       HEAP16[$pnt2$363 >> 1] = $113;\n       if (($113 | 0) < ($116 | 0) & ($wk_max$158 | 0) > 0) {\n        $k$342 = 0;\n        $wk$343 = $19;\n        while (1) {\n         if ((HEAP32[$wk$343 >> 2] | 0) == ($116 | 0)) HEAP32[$wk$343 >> 2] = $113;\n         $k$342 = $k$342 + 1 | 0;\n         if (($k$342 | 0) >= ($wk_max$158 | 0)) {\n          $133 = $113;\n          break;\n         } else $wk$343 = $wk$343 + 4 | 0;\n        }\n       } else $133 = $113;\n      }\n      $135 = ($133 << 16 >> 16) * 7 | 0;\n      $137 = $labelInfo + 1310736 + ($135 + -7 << 2) | 0;\n      HEAP32[$137 >> 2] = (HEAP32[$137 >> 2] | 0) + 1;\n      $141 = $labelInfo + 1310736 + ($135 + -6 << 2) | 0;\n      HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + $i$256;\n      $145 = $labelInfo + 1310736 + ($135 + -5 << 2) | 0;\n      HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $j$069;\n      $wk_max$2 = $wk_max$158;\n     } else {\n      HEAP16[$pnt2$363 >> 1] = 0;\n      $wk_max$2 = $wk_max$158;\n     } while (0);\n     $i$256 = $i$256 + 1 | 0;\n     $227 = $pnt$164 + 8 | 0;\n     $228 = $pnt2$363 + 2 | 0;\n     if (($i$256 | 0) >= ($12 | 0)) {\n      $pnt$1$lcssa = $227;\n      $pnt2$3$lcssa = $228;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $pnt$164 = $227;\n      $pnt2$363 = $228;\n      $wk_max$158 = $wk_max$2;\n     }\n    }\n   } else {\n    $pnt$1$lcssa = $pnt$073;\n    $pnt2$3$lcssa = $pnt2$272;\n    $wk_max$1$lcssa = $wk_max$071;\n   }\n   $j$069 = $j$069 + 1 | 0;\n   if (($j$069 | 0) >= ($3 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $pnt$073 = $pnt$1$lcssa + $$sum | 0;\n    $pnt2$272 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$071 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $234 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$338 = 1;\n   $j$139 = 1;\n   $wk$440 = $19;\n   while (1) {\n    $236 = HEAP32[$wk$440 >> 2] | 0;\n    if (($236 | 0) == ($i$338 | 0)) {\n     $242 = $j$139;\n     $j$2 = $j$139 + 1 | 0;\n    } else {\n     $242 = HEAP32[$labelInfo + 1179664 + ($236 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$139;\n    }\n    HEAP32[$wk$440 >> 2] = $242;\n    if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$338 = $i$338 + 1 | 0;\n     $j$139 = $j$2;\n     $wk$440 = $wk$440 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $246 = $labelInfo + 8 | 0;\n  $247 = $j$1$lcssa + -1 | 0;\n  HEAP32[$246 >> 2] = $247;\n  if (!$247) $$0 = 0; else {\n   _memset($234 | 0, 0, $247 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $247 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$436 = 0;\n    do {\n     $254 = $i$436 << 2;\n     HEAP32[$labelInfo + 131084 + ($254 << 2) >> 2] = $0;\n     HEAP32[$labelInfo + 131084 + (($254 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($254 | 2) << 2) >> 2] = $1;\n     HEAP32[$labelInfo + 131084 + (($254 | 3) << 2) >> 2] = 0;\n     $i$436 = $i$436 + 1 | 0;\n    } while (($i$436 | 0) < (HEAP32[$246 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$534 = 0;\n    do {\n     $268 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0;\n     $269 = $i$534 * 7 | 0;\n     $272 = $labelInfo + 12 + ($268 << 2) | 0;\n     HEAP32[$272 >> 2] = (HEAP32[$272 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($269 << 2) >> 2] | 0);\n     $279 = $268 << 1;\n     $280 = $labelInfo + 655376 + ($279 << 3) | 0;\n     HEAPF64[$280 >> 3] = +HEAPF64[$280 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($269 + 1 << 2) >> 2] | 0);\n     $288 = $labelInfo + 655376 + (($279 | 1) << 3) | 0;\n     HEAPF64[$288 >> 3] = +HEAPF64[$288 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($269 + 2 << 2) >> 2] | 0);\n     $291 = $268 << 2;\n     $292 = $labelInfo + 131084 + ($291 << 2) | 0;\n     $296 = HEAP32[$labelInfo + 1310736 + ($269 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$292 >> 2] | 0) > ($296 | 0)) HEAP32[$292 >> 2] = $296;\n     $299 = $labelInfo + 131084 + (($291 | 1) << 2) | 0;\n     $303 = HEAP32[$labelInfo + 1310736 + ($269 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$299 >> 2] | 0) < ($303 | 0)) HEAP32[$299 >> 2] = $303;\n     $306 = $labelInfo + 131084 + (($291 | 2) << 2) | 0;\n     $310 = HEAP32[$labelInfo + 1310736 + ($269 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$306 >> 2] | 0) > ($310 | 0)) HEAP32[$306 >> 2] = $310;\n     $313 = $labelInfo + 131084 + (($291 | 3) << 2) | 0;\n     $317 = HEAP32[$labelInfo + 1310736 + ($269 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$313 >> 2] | 0) < ($317 | 0)) HEAP32[$313 >> 2] = $317;\n     $i$534 = $i$534 + 1 | 0;\n    } while (($i$534 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$246 >> 2] | 0) > 0) {\n    $i$633 = 0;\n    do {\n     $321 = $labelInfo + 12 + ($i$633 << 2) | 0;\n     $324 = $i$633 << 1;\n     $325 = $labelInfo + 655376 + ($324 << 3) | 0;\n     HEAPF64[$325 >> 3] = +HEAPF64[$325 >> 3] / +(HEAP32[$321 >> 2] | 0);\n     $331 = $labelInfo + 655376 + (($324 | 1) << 3) | 0;\n     HEAPF64[$331 >> 3] = +HEAPF64[$331 >> 3] / +(HEAP32[$321 >> 2] | 0);\n     $i$633 = $i$633 + 1 | 0;\n    } while (($i$633 | 0) < (HEAP32[$246 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubDBIA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $102 = 0, $108 = 0, $11 = 0, $113 = 0, $116 = 0, $12 = 0, $133 = 0, $135 = 0, $137 = 0, $141 = 0, $145 = 0, $148 = 0, $150 = 0, $154 = 0, $158 = 0, $162 = 0, $167 = 0, $169 = 0, $173 = 0, $177 = 0, $181 = 0, $187 = 0, $19 = 0, $190 = 0, $192 = 0, $196 = 0, $2 = 0, $20 = 0, $200 = 0, $204 = 0, $207 = 0, $212 = 0, $227 = 0, $228 = 0, $234 = 0, $236 = 0, $242 = 0, $246 = 0, $247 = 0, $254 = 0, $268 = 0, $269 = 0, $272 = 0, $279 = 0, $28 = 0, $280 = 0, $288 = 0, $291 = 0, $292 = 0, $296 = 0, $299 = 0, $3 = 0, $303 = 0, $306 = 0, $310 = 0, $313 = 0, $317 = 0, $321 = 0, $324 = 0, $325 = 0, $331 = 0, $42 = 0, $45 = 0, $47 = 0, $51 = 0, $55 = 0, $61 = 0, $62 = 0, $65 = 0, $66 = 0, $67 = 0, $70 = 0, $73 = 0, $90 = 0, $92 = 0, $94 = 0, $98 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = ($xsize | 0) / 2 | 0;\n $1 = ($ysize | 0) / 2 | 0;\n $2 = HEAP32[$labelInfo >> 2] | 0;\n $3 = $1 + -1 | 0;\n if (($xsize | 0) > 1) {\n  $i$082 = 0;\n  $pnt1$084 = $2;\n  $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$083 >> 1] = 0;\n   HEAP16[$pnt1$084 >> 1] = 0;\n   $i$082 = $i$082 + 1 | 0;\n   if (($i$082 | 0) >= ($0 | 0)) break; else {\n    $pnt1$084 = $pnt1$084 + 2 | 0;\n    $pnt2$083 = $pnt2$083 + 2 | 0;\n   }\n  }\n }\n $11 = $labelingThresh * 3 | 0;\n $12 = $0 + -1 | 0;\n if (($ysize | 0) > 1) {\n  $i$176 = 0;\n  $pnt1$178 = $2;\n  $pnt2$177 = $2 + ($12 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$177 >> 1] = 0;\n   HEAP16[$pnt1$178 >> 1] = 0;\n   $i$176 = $i$176 + 1 | 0;\n   if (($i$176 | 0) >= ($1 | 0)) break; else {\n    $pnt1$178 = $pnt1$178 + ($0 << 1) | 0;\n    $pnt2$177 = $pnt2$177 + ($0 << 1) | 0;\n   }\n  }\n }\n $19 = $labelInfo + 1179664 | 0;\n $20 = 0 - $0 | 0;\n $$sum1 = 1 - $0 | 0;\n $$sum2 = ~$0;\n $$sum = ($xsize << 2) + 16 | 0;\n L11 : do if (($3 | 0) > 1) {\n  $28 = ($12 | 0) > 1;\n  $j$069 = 1;\n  $pnt$073 = $image + (($xsize << 3) + 8) | 0;\n  $pnt2$272 = $2 + ($0 + 1 << 1) | 0;\n  $wk_max$071 = 0;\n  L13 : while (1) {\n   if ($28) {\n    $i$256 = 1;\n    $pnt$164 = $pnt$073;\n    $pnt2$363 = $pnt2$272;\n    $wk_max$158 = $wk_max$071;\n    while (1) {\n     do if (((HEAPU8[$pnt$164 + 2 >> 0] | 0) + (HEAPU8[$pnt$164 + 1 >> 0] | 0) + (HEAPU8[$pnt$164 + 3 >> 0] | 0) | 0) > ($11 | 0)) {\n      HEAP16[$pnt2$363 >> 1] = 0;\n      $wk_max$2 = $wk_max$158;\n     } else {\n      $42 = HEAP16[$pnt2$363 + ($20 << 1) >> 1] | 0;\n      if ($42 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$363 >> 1] = $42;\n       $45 = ($42 << 16 >> 16) * 7 | 0;\n       $47 = $labelInfo + 1310736 + ($45 + -7 << 2) | 0;\n       HEAP32[$47 >> 2] = (HEAP32[$47 >> 2] | 0) + 1;\n       $51 = $labelInfo + 1310736 + ($45 + -6 << 2) | 0;\n       HEAP32[$51 >> 2] = (HEAP32[$51 >> 2] | 0) + $i$256;\n       $55 = $labelInfo + 1310736 + ($45 + -5 << 2) | 0;\n       HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + $j$069;\n       HEAP32[$labelInfo + 1310736 + ($45 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $61 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0;\n      $62 = $61 << 16 >> 16;\n      $65 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0;\n      $66 = $65 << 16 >> 16;\n      $67 = $65 << 16 >> 16 > 0;\n      if ($61 << 16 >> 16 <= 0) {\n       if ($67) {\n        HEAP16[$pnt2$363 >> 1] = $65;\n        $167 = $66 * 7 | 0;\n        $169 = $labelInfo + 1310736 + ($167 + -7 << 2) | 0;\n        HEAP32[$169 >> 2] = (HEAP32[$169 >> 2] | 0) + 1;\n        $173 = $labelInfo + 1310736 + ($167 + -6 << 2) | 0;\n        HEAP32[$173 >> 2] = (HEAP32[$173 >> 2] | 0) + $i$256;\n        $177 = $labelInfo + 1310736 + ($167 + -5 << 2) | 0;\n        HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + $j$069;\n        $181 = $labelInfo + 1310736 + ($167 + -3 << 2) | 0;\n        if ((HEAP32[$181 >> 2] | 0) < ($i$256 | 0)) HEAP32[$181 >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($167 + -1 << 2) >> 2] = $j$069;\n        $wk_max$2 = $wk_max$158;\n        break;\n       }\n       $187 = HEAP16[$pnt2$363 + -2 >> 1] | 0;\n       if ($187 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$363 >> 1] = $187;\n        $190 = ($187 << 16 >> 16) * 7 | 0;\n        $192 = $labelInfo + 1310736 + ($190 + -7 << 2) | 0;\n        HEAP32[$192 >> 2] = (HEAP32[$192 >> 2] | 0) + 1;\n        $196 = $labelInfo + 1310736 + ($190 + -6 << 2) | 0;\n        HEAP32[$196 >> 2] = (HEAP32[$196 >> 2] | 0) + $i$256;\n        $200 = $labelInfo + 1310736 + ($190 + -5 << 2) | 0;\n        HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + $j$069;\n        $204 = $labelInfo + 1310736 + ($190 + -3 << 2) | 0;\n        if ((HEAP32[$204 >> 2] | 0) >= ($i$256 | 0)) {\n         $wk_max$2 = $wk_max$158;\n         break;\n        }\n        HEAP32[$204 >> 2] = $i$256;\n        $wk_max$2 = $wk_max$158;\n        break;\n       } else {\n        $207 = $wk_max$158 + 1 | 0;\n        if (($wk_max$158 | 0) > 32767) break L13;\n        HEAP16[$pnt2$363 >> 1] = $207;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $207 << 16 >> 16;\n        $212 = $wk_max$158 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($212 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($212 + 1 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($212 + 2 << 2) >> 2] = $j$069;\n        HEAP32[$labelInfo + 1310736 + ($212 + 3 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($212 + 4 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($212 + 5 << 2) >> 2] = $j$069;\n        HEAP32[$labelInfo + 1310736 + ($212 + 6 << 2) >> 2] = $j$069;\n        $wk_max$2 = $207;\n        break;\n       }\n      }\n      if ($67) {\n       $70 = HEAP32[$labelInfo + 1179664 + ($62 + -1 << 2) >> 2] | 0;\n       $73 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0;\n       if (($70 | 0) > ($73 | 0)) {\n        HEAP16[$pnt2$363 >> 1] = $73;\n        if (($wk_max$158 | 0) > 0) {\n         $k$052 = 0;\n         $wk$053 = $19;\n         while (1) {\n          if ((HEAP32[$wk$053 >> 2] | 0) == ($70 | 0)) HEAP32[$wk$053 >> 2] = $73;\n          $k$052 = $k$052 + 1 | 0;\n          if (($k$052 | 0) >= ($wk_max$158 | 0)) {\n           $90 = $73;\n           break;\n          } else $wk$053 = $wk$053 + 4 | 0;\n         }\n        } else $90 = $73;\n       } else {\n        HEAP16[$pnt2$363 >> 1] = $70;\n        if (($70 | 0) < ($73 | 0) & ($wk_max$158 | 0) > 0) {\n         $k$149 = 0;\n         $wk$150 = $19;\n         while (1) {\n          if ((HEAP32[$wk$150 >> 2] | 0) == ($73 | 0)) HEAP32[$wk$150 >> 2] = $70;\n          $k$149 = $k$149 + 1 | 0;\n          if (($k$149 | 0) >= ($wk_max$158 | 0)) {\n           $90 = $70;\n           break;\n          } else $wk$150 = $wk$150 + 4 | 0;\n         }\n        } else $90 = $70;\n       }\n       $92 = ($90 << 16 >> 16) * 7 | 0;\n       $94 = $labelInfo + 1310736 + ($92 + -7 << 2) | 0;\n       HEAP32[$94 >> 2] = (HEAP32[$94 >> 2] | 0) + 1;\n       $98 = $labelInfo + 1310736 + ($92 + -6 << 2) | 0;\n       HEAP32[$98 >> 2] = (HEAP32[$98 >> 2] | 0) + $i$256;\n       $102 = $labelInfo + 1310736 + ($92 + -5 << 2) | 0;\n       HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + $j$069;\n       HEAP32[$labelInfo + 1310736 + ($92 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $108 = HEAP16[$pnt2$363 + -2 >> 1] | 0;\n      if ($108 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$363 >> 1] = $61;\n       $148 = $62 * 7 | 0;\n       $150 = $labelInfo + 1310736 + ($148 + -7 << 2) | 0;\n       HEAP32[$150 >> 2] = (HEAP32[$150 >> 2] | 0) + 1;\n       $154 = $labelInfo + 1310736 + ($148 + -6 << 2) | 0;\n       HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + $i$256;\n       $158 = $labelInfo + 1310736 + ($148 + -5 << 2) | 0;\n       HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + $j$069;\n       $162 = $labelInfo + 1310736 + ($148 + -4 << 2) | 0;\n       if ((HEAP32[$162 >> 2] | 0) > ($i$256 | 0)) HEAP32[$162 >> 2] = $i$256;\n       HEAP32[$labelInfo + 1310736 + ($148 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $113 = HEAP32[$labelInfo + 1179664 + ($62 + -1 << 2) >> 2] | 0;\n      $116 = HEAP32[$labelInfo + 1179664 + (($108 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($113 | 0) > ($116 | 0)) {\n       HEAP16[$pnt2$363 >> 1] = $116;\n       if (($wk_max$158 | 0) > 0) {\n        $k$245 = 0;\n        $wk$246 = $19;\n        while (1) {\n         if ((HEAP32[$wk$246 >> 2] | 0) == ($113 | 0)) HEAP32[$wk$246 >> 2] = $116;\n         $k$245 = $k$245 + 1 | 0;\n         if (($k$245 | 0) >= ($wk_max$158 | 0)) {\n          $133 = $116;\n          break;\n         } else $wk$246 = $wk$246 + 4 | 0;\n        }\n       } else $133 = $116;\n      } else {\n       HEAP16[$pnt2$363 >> 1] = $113;\n       if (($113 | 0) < ($116 | 0) & ($wk_max$158 | 0) > 0) {\n        $k$342 = 0;\n        $wk$343 = $19;\n        while (1) {\n         if ((HEAP32[$wk$343 >> 2] | 0) == ($116 | 0)) HEAP32[$wk$343 >> 2] = $113;\n         $k$342 = $k$342 + 1 | 0;\n         if (($k$342 | 0) >= ($wk_max$158 | 0)) {\n          $133 = $113;\n          break;\n         } else $wk$343 = $wk$343 + 4 | 0;\n        }\n       } else $133 = $113;\n      }\n      $135 = ($133 << 16 >> 16) * 7 | 0;\n      $137 = $labelInfo + 1310736 + ($135 + -7 << 2) | 0;\n      HEAP32[$137 >> 2] = (HEAP32[$137 >> 2] | 0) + 1;\n      $141 = $labelInfo + 1310736 + ($135 + -6 << 2) | 0;\n      HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + $i$256;\n      $145 = $labelInfo + 1310736 + ($135 + -5 << 2) | 0;\n      HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $j$069;\n      $wk_max$2 = $wk_max$158;\n     } while (0);\n     $i$256 = $i$256 + 1 | 0;\n     $227 = $pnt$164 + 8 | 0;\n     $228 = $pnt2$363 + 2 | 0;\n     if (($i$256 | 0) >= ($12 | 0)) {\n      $pnt$1$lcssa = $227;\n      $pnt2$3$lcssa = $228;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $pnt$164 = $227;\n      $pnt2$363 = $228;\n      $wk_max$158 = $wk_max$2;\n     }\n    }\n   } else {\n    $pnt$1$lcssa = $pnt$073;\n    $pnt2$3$lcssa = $pnt2$272;\n    $wk_max$1$lcssa = $wk_max$071;\n   }\n   $j$069 = $j$069 + 1 | 0;\n   if (($j$069 | 0) >= ($3 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $pnt$073 = $pnt$1$lcssa + $$sum | 0;\n    $pnt2$272 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$071 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $234 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$338 = 1;\n   $j$139 = 1;\n   $wk$440 = $19;\n   while (1) {\n    $236 = HEAP32[$wk$440 >> 2] | 0;\n    if (($236 | 0) == ($i$338 | 0)) {\n     $242 = $j$139;\n     $j$2 = $j$139 + 1 | 0;\n    } else {\n     $242 = HEAP32[$labelInfo + 1179664 + ($236 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$139;\n    }\n    HEAP32[$wk$440 >> 2] = $242;\n    if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$338 = $i$338 + 1 | 0;\n     $j$139 = $j$2;\n     $wk$440 = $wk$440 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $246 = $labelInfo + 8 | 0;\n  $247 = $j$1$lcssa + -1 | 0;\n  HEAP32[$246 >> 2] = $247;\n  if (!$247) $$0 = 0; else {\n   _memset($234 | 0, 0, $247 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $247 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$436 = 0;\n    do {\n     $254 = $i$436 << 2;\n     HEAP32[$labelInfo + 131084 + ($254 << 2) >> 2] = $0;\n     HEAP32[$labelInfo + 131084 + (($254 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($254 | 2) << 2) >> 2] = $1;\n     HEAP32[$labelInfo + 131084 + (($254 | 3) << 2) >> 2] = 0;\n     $i$436 = $i$436 + 1 | 0;\n    } while (($i$436 | 0) < (HEAP32[$246 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$534 = 0;\n    do {\n     $268 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0;\n     $269 = $i$534 * 7 | 0;\n     $272 = $labelInfo + 12 + ($268 << 2) | 0;\n     HEAP32[$272 >> 2] = (HEAP32[$272 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($269 << 2) >> 2] | 0);\n     $279 = $268 << 1;\n     $280 = $labelInfo + 655376 + ($279 << 3) | 0;\n     HEAPF64[$280 >> 3] = +HEAPF64[$280 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($269 + 1 << 2) >> 2] | 0);\n     $288 = $labelInfo + 655376 + (($279 | 1) << 3) | 0;\n     HEAPF64[$288 >> 3] = +HEAPF64[$288 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($269 + 2 << 2) >> 2] | 0);\n     $291 = $268 << 2;\n     $292 = $labelInfo + 131084 + ($291 << 2) | 0;\n     $296 = HEAP32[$labelInfo + 1310736 + ($269 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$292 >> 2] | 0) > ($296 | 0)) HEAP32[$292 >> 2] = $296;\n     $299 = $labelInfo + 131084 + (($291 | 1) << 2) | 0;\n     $303 = HEAP32[$labelInfo + 1310736 + ($269 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$299 >> 2] | 0) < ($303 | 0)) HEAP32[$299 >> 2] = $303;\n     $306 = $labelInfo + 131084 + (($291 | 2) << 2) | 0;\n     $310 = HEAP32[$labelInfo + 1310736 + ($269 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$306 >> 2] | 0) > ($310 | 0)) HEAP32[$306 >> 2] = $310;\n     $313 = $labelInfo + 131084 + (($291 | 3) << 2) | 0;\n     $317 = HEAP32[$labelInfo + 1310736 + ($269 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$313 >> 2] | 0) < ($317 | 0)) HEAP32[$313 >> 2] = $317;\n     $i$534 = $i$534 + 1 | 0;\n    } while (($i$534 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$246 >> 2] | 0) > 0) {\n    $i$633 = 0;\n    do {\n     $321 = $labelInfo + 12 + ($i$633 << 2) | 0;\n     $324 = $i$633 << 1;\n     $325 = $labelInfo + 655376 + ($324 << 3) | 0;\n     HEAPF64[$325 >> 3] = +HEAPF64[$325 >> 3] / +(HEAP32[$321 >> 2] | 0);\n     $331 = $labelInfo + 655376 + (($324 | 1) << 3) | 0;\n     HEAPF64[$331 >> 3] = +HEAPF64[$331 >> 3] / +(HEAP32[$321 >> 2] | 0);\n     $i$633 = $i$633 + 1 | 0;\n    } while (($i$633 | 0) < (HEAP32[$246 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubDWI3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $101 = 0, $107 = 0, $11 = 0, $112 = 0, $115 = 0, $12 = 0, $132 = 0, $134 = 0, $136 = 0, $140 = 0, $144 = 0, $147 = 0, $149 = 0, $153 = 0, $157 = 0, $161 = 0, $166 = 0, $168 = 0, $172 = 0, $176 = 0, $180 = 0, $186 = 0, $189 = 0, $19 = 0, $191 = 0, $195 = 0, $199 = 0, $2 = 0, $20 = 0, $203 = 0, $206 = 0, $211 = 0, $226 = 0, $227 = 0, $233 = 0, $235 = 0, $241 = 0, $245 = 0, $246 = 0, $253 = 0, $267 = 0, $268 = 0, $271 = 0, $278 = 0, $279 = 0, $28 = 0, $287 = 0, $290 = 0, $291 = 0, $295 = 0, $298 = 0, $3 = 0, $302 = 0, $305 = 0, $309 = 0, $312 = 0, $316 = 0, $320 = 0, $323 = 0, $324 = 0, $330 = 0, $41 = 0, $44 = 0, $46 = 0, $50 = 0, $54 = 0, $60 = 0, $61 = 0, $64 = 0, $65 = 0, $66 = 0, $69 = 0, $72 = 0, $89 = 0, $91 = 0, $93 = 0, $97 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = ($xsize | 0) / 2 | 0;\n $1 = ($ysize | 0) / 2 | 0;\n $2 = HEAP32[$labelInfo >> 2] | 0;\n $3 = $1 + -1 | 0;\n if (($xsize | 0) > 1) {\n  $i$082 = 0;\n  $pnt1$084 = $2;\n  $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$083 >> 1] = 0;\n   HEAP16[$pnt1$084 >> 1] = 0;\n   $i$082 = $i$082 + 1 | 0;\n   if (($i$082 | 0) >= ($0 | 0)) break; else {\n    $pnt1$084 = $pnt1$084 + 2 | 0;\n    $pnt2$083 = $pnt2$083 + 2 | 0;\n   }\n  }\n }\n $11 = $labelingThresh * 3 | 0;\n $12 = $0 + -1 | 0;\n if (($ysize | 0) > 1) {\n  $i$176 = 0;\n  $pnt1$178 = $2;\n  $pnt2$177 = $2 + ($12 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$177 >> 1] = 0;\n   HEAP16[$pnt1$178 >> 1] = 0;\n   $i$176 = $i$176 + 1 | 0;\n   if (($i$176 | 0) >= ($1 | 0)) break; else {\n    $pnt1$178 = $pnt1$178 + ($0 << 1) | 0;\n    $pnt2$177 = $pnt2$177 + ($0 << 1) | 0;\n   }\n  }\n }\n $19 = $labelInfo + 1179664 | 0;\n $20 = 0 - $0 | 0;\n $$sum1 = 1 - $0 | 0;\n $$sum2 = ~$0;\n $$sum = ($xsize << 2) + 16 | 0;\n L11 : do if (($3 | 0) > 1) {\n  $28 = ($12 | 0) > 1;\n  $j$069 = 1;\n  $pnt$073 = $image + (($xsize << 3) + 8) | 0;\n  $pnt2$272 = $2 + ($0 + 1 << 1) | 0;\n  $wk_max$071 = 0;\n  L13 : while (1) {\n   if ($28) {\n    $i$256 = 1;\n    $pnt$164 = $pnt$073;\n    $pnt2$363 = $pnt2$272;\n    $wk_max$158 = $wk_max$071;\n    while (1) {\n     do if (((HEAPU8[$pnt$164 + 1 >> 0] | 0) + (HEAPU8[$pnt$164 >> 0] | 0) + (HEAPU8[$pnt$164 + 2 >> 0] | 0) | 0) > ($11 | 0)) {\n      $41 = HEAP16[$pnt2$363 + ($20 << 1) >> 1] | 0;\n      if ($41 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$363 >> 1] = $41;\n       $44 = ($41 << 16 >> 16) * 7 | 0;\n       $46 = $labelInfo + 1310736 + ($44 + -7 << 2) | 0;\n       HEAP32[$46 >> 2] = (HEAP32[$46 >> 2] | 0) + 1;\n       $50 = $labelInfo + 1310736 + ($44 + -6 << 2) | 0;\n       HEAP32[$50 >> 2] = (HEAP32[$50 >> 2] | 0) + $i$256;\n       $54 = $labelInfo + 1310736 + ($44 + -5 << 2) | 0;\n       HEAP32[$54 >> 2] = (HEAP32[$54 >> 2] | 0) + $j$069;\n       HEAP32[$labelInfo + 1310736 + ($44 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $60 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0;\n      $61 = $60 << 16 >> 16;\n      $64 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0;\n      $65 = $64 << 16 >> 16;\n      $66 = $64 << 16 >> 16 > 0;\n      if ($60 << 16 >> 16 <= 0) {\n       if ($66) {\n        HEAP16[$pnt2$363 >> 1] = $64;\n        $166 = $65 * 7 | 0;\n        $168 = $labelInfo + 1310736 + ($166 + -7 << 2) | 0;\n        HEAP32[$168 >> 2] = (HEAP32[$168 >> 2] | 0) + 1;\n        $172 = $labelInfo + 1310736 + ($166 + -6 << 2) | 0;\n        HEAP32[$172 >> 2] = (HEAP32[$172 >> 2] | 0) + $i$256;\n        $176 = $labelInfo + 1310736 + ($166 + -5 << 2) | 0;\n        HEAP32[$176 >> 2] = (HEAP32[$176 >> 2] | 0) + $j$069;\n        $180 = $labelInfo + 1310736 + ($166 + -3 << 2) | 0;\n        if ((HEAP32[$180 >> 2] | 0) < ($i$256 | 0)) HEAP32[$180 >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($166 + -1 << 2) >> 2] = $j$069;\n        $wk_max$2 = $wk_max$158;\n        break;\n       }\n       $186 = HEAP16[$pnt2$363 + -2 >> 1] | 0;\n       if ($186 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$363 >> 1] = $186;\n        $189 = ($186 << 16 >> 16) * 7 | 0;\n        $191 = $labelInfo + 1310736 + ($189 + -7 << 2) | 0;\n        HEAP32[$191 >> 2] = (HEAP32[$191 >> 2] | 0) + 1;\n        $195 = $labelInfo + 1310736 + ($189 + -6 << 2) | 0;\n        HEAP32[$195 >> 2] = (HEAP32[$195 >> 2] | 0) + $i$256;\n        $199 = $labelInfo + 1310736 + ($189 + -5 << 2) | 0;\n        HEAP32[$199 >> 2] = (HEAP32[$199 >> 2] | 0) + $j$069;\n        $203 = $labelInfo + 1310736 + ($189 + -3 << 2) | 0;\n        if ((HEAP32[$203 >> 2] | 0) >= ($i$256 | 0)) {\n         $wk_max$2 = $wk_max$158;\n         break;\n        }\n        HEAP32[$203 >> 2] = $i$256;\n        $wk_max$2 = $wk_max$158;\n        break;\n       } else {\n        $206 = $wk_max$158 + 1 | 0;\n        if (($wk_max$158 | 0) > 32767) break L13;\n        HEAP16[$pnt2$363 >> 1] = $206;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $206 << 16 >> 16;\n        $211 = $wk_max$158 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($211 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($211 + 1 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($211 + 2 << 2) >> 2] = $j$069;\n        HEAP32[$labelInfo + 1310736 + ($211 + 3 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($211 + 4 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($211 + 5 << 2) >> 2] = $j$069;\n        HEAP32[$labelInfo + 1310736 + ($211 + 6 << 2) >> 2] = $j$069;\n        $wk_max$2 = $206;\n        break;\n       }\n      }\n      if ($66) {\n       $69 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0;\n       $72 = HEAP32[$labelInfo + 1179664 + ($65 + -1 << 2) >> 2] | 0;\n       if (($69 | 0) > ($72 | 0)) {\n        HEAP16[$pnt2$363 >> 1] = $72;\n        if (($wk_max$158 | 0) > 0) {\n         $k$052 = 0;\n         $wk$053 = $19;\n         while (1) {\n          if ((HEAP32[$wk$053 >> 2] | 0) == ($69 | 0)) HEAP32[$wk$053 >> 2] = $72;\n          $k$052 = $k$052 + 1 | 0;\n          if (($k$052 | 0) >= ($wk_max$158 | 0)) {\n           $89 = $72;\n           break;\n          } else $wk$053 = $wk$053 + 4 | 0;\n         }\n        } else $89 = $72;\n       } else {\n        HEAP16[$pnt2$363 >> 1] = $69;\n        if (($69 | 0) < ($72 | 0) & ($wk_max$158 | 0) > 0) {\n         $k$149 = 0;\n         $wk$150 = $19;\n         while (1) {\n          if ((HEAP32[$wk$150 >> 2] | 0) == ($72 | 0)) HEAP32[$wk$150 >> 2] = $69;\n          $k$149 = $k$149 + 1 | 0;\n          if (($k$149 | 0) >= ($wk_max$158 | 0)) {\n           $89 = $69;\n           break;\n          } else $wk$150 = $wk$150 + 4 | 0;\n         }\n        } else $89 = $69;\n       }\n       $91 = ($89 << 16 >> 16) * 7 | 0;\n       $93 = $labelInfo + 1310736 + ($91 + -7 << 2) | 0;\n       HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + 1;\n       $97 = $labelInfo + 1310736 + ($91 + -6 << 2) | 0;\n       HEAP32[$97 >> 2] = (HEAP32[$97 >> 2] | 0) + $i$256;\n       $101 = $labelInfo + 1310736 + ($91 + -5 << 2) | 0;\n       HEAP32[$101 >> 2] = (HEAP32[$101 >> 2] | 0) + $j$069;\n       HEAP32[$labelInfo + 1310736 + ($91 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $107 = HEAP16[$pnt2$363 + -2 >> 1] | 0;\n      if ($107 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$363 >> 1] = $60;\n       $147 = $61 * 7 | 0;\n       $149 = $labelInfo + 1310736 + ($147 + -7 << 2) | 0;\n       HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + 1;\n       $153 = $labelInfo + 1310736 + ($147 + -6 << 2) | 0;\n       HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $i$256;\n       $157 = $labelInfo + 1310736 + ($147 + -5 << 2) | 0;\n       HEAP32[$157 >> 2] = (HEAP32[$157 >> 2] | 0) + $j$069;\n       $161 = $labelInfo + 1310736 + ($147 + -4 << 2) | 0;\n       if ((HEAP32[$161 >> 2] | 0) > ($i$256 | 0)) HEAP32[$161 >> 2] = $i$256;\n       HEAP32[$labelInfo + 1310736 + ($147 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $112 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0;\n      $115 = HEAP32[$labelInfo + 1179664 + (($107 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($112 | 0) > ($115 | 0)) {\n       HEAP16[$pnt2$363 >> 1] = $115;\n       if (($wk_max$158 | 0) > 0) {\n        $k$245 = 0;\n        $wk$246 = $19;\n        while (1) {\n         if ((HEAP32[$wk$246 >> 2] | 0) == ($112 | 0)) HEAP32[$wk$246 >> 2] = $115;\n         $k$245 = $k$245 + 1 | 0;\n         if (($k$245 | 0) >= ($wk_max$158 | 0)) {\n          $132 = $115;\n          break;\n         } else $wk$246 = $wk$246 + 4 | 0;\n        }\n       } else $132 = $115;\n      } else {\n       HEAP16[$pnt2$363 >> 1] = $112;\n       if (($112 | 0) < ($115 | 0) & ($wk_max$158 | 0) > 0) {\n        $k$342 = 0;\n        $wk$343 = $19;\n        while (1) {\n         if ((HEAP32[$wk$343 >> 2] | 0) == ($115 | 0)) HEAP32[$wk$343 >> 2] = $112;\n         $k$342 = $k$342 + 1 | 0;\n         if (($k$342 | 0) >= ($wk_max$158 | 0)) {\n          $132 = $112;\n          break;\n         } else $wk$343 = $wk$343 + 4 | 0;\n        }\n       } else $132 = $112;\n      }\n      $134 = ($132 << 16 >> 16) * 7 | 0;\n      $136 = $labelInfo + 1310736 + ($134 + -7 << 2) | 0;\n      HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + 1;\n      $140 = $labelInfo + 1310736 + ($134 + -6 << 2) | 0;\n      HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $i$256;\n      $144 = $labelInfo + 1310736 + ($134 + -5 << 2) | 0;\n      HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $j$069;\n      $wk_max$2 = $wk_max$158;\n     } else {\n      HEAP16[$pnt2$363 >> 1] = 0;\n      $wk_max$2 = $wk_max$158;\n     } while (0);\n     $i$256 = $i$256 + 1 | 0;\n     $226 = $pnt$164 + 8 | 0;\n     $227 = $pnt2$363 + 2 | 0;\n     if (($i$256 | 0) >= ($12 | 0)) {\n      $pnt$1$lcssa = $226;\n      $pnt2$3$lcssa = $227;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $pnt$164 = $226;\n      $pnt2$363 = $227;\n      $wk_max$158 = $wk_max$2;\n     }\n    }\n   } else {\n    $pnt$1$lcssa = $pnt$073;\n    $pnt2$3$lcssa = $pnt2$272;\n    $wk_max$1$lcssa = $wk_max$071;\n   }\n   $j$069 = $j$069 + 1 | 0;\n   if (($j$069 | 0) >= ($3 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $pnt$073 = $pnt$1$lcssa + $$sum | 0;\n    $pnt2$272 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$071 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $233 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$338 = 1;\n   $j$139 = 1;\n   $wk$440 = $19;\n   while (1) {\n    $235 = HEAP32[$wk$440 >> 2] | 0;\n    if (($235 | 0) == ($i$338 | 0)) {\n     $241 = $j$139;\n     $j$2 = $j$139 + 1 | 0;\n    } else {\n     $241 = HEAP32[$labelInfo + 1179664 + ($235 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$139;\n    }\n    HEAP32[$wk$440 >> 2] = $241;\n    if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$338 = $i$338 + 1 | 0;\n     $j$139 = $j$2;\n     $wk$440 = $wk$440 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $245 = $labelInfo + 8 | 0;\n  $246 = $j$1$lcssa + -1 | 0;\n  HEAP32[$245 >> 2] = $246;\n  if (!$246) $$0 = 0; else {\n   _memset($233 | 0, 0, $246 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $246 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$436 = 0;\n    do {\n     $253 = $i$436 << 2;\n     HEAP32[$labelInfo + 131084 + ($253 << 2) >> 2] = $0;\n     HEAP32[$labelInfo + 131084 + (($253 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($253 | 2) << 2) >> 2] = $1;\n     HEAP32[$labelInfo + 131084 + (($253 | 3) << 2) >> 2] = 0;\n     $i$436 = $i$436 + 1 | 0;\n    } while (($i$436 | 0) < (HEAP32[$245 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$534 = 0;\n    do {\n     $267 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0;\n     $268 = $i$534 * 7 | 0;\n     $271 = $labelInfo + 12 + ($267 << 2) | 0;\n     HEAP32[$271 >> 2] = (HEAP32[$271 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($268 << 2) >> 2] | 0);\n     $278 = $267 << 1;\n     $279 = $labelInfo + 655376 + ($278 << 3) | 0;\n     HEAPF64[$279 >> 3] = +HEAPF64[$279 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($268 + 1 << 2) >> 2] | 0);\n     $287 = $labelInfo + 655376 + (($278 | 1) << 3) | 0;\n     HEAPF64[$287 >> 3] = +HEAPF64[$287 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($268 + 2 << 2) >> 2] | 0);\n     $290 = $267 << 2;\n     $291 = $labelInfo + 131084 + ($290 << 2) | 0;\n     $295 = HEAP32[$labelInfo + 1310736 + ($268 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$291 >> 2] | 0) > ($295 | 0)) HEAP32[$291 >> 2] = $295;\n     $298 = $labelInfo + 131084 + (($290 | 1) << 2) | 0;\n     $302 = HEAP32[$labelInfo + 1310736 + ($268 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$298 >> 2] | 0) < ($302 | 0)) HEAP32[$298 >> 2] = $302;\n     $305 = $labelInfo + 131084 + (($290 | 2) << 2) | 0;\n     $309 = HEAP32[$labelInfo + 1310736 + ($268 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$305 >> 2] | 0) > ($309 | 0)) HEAP32[$305 >> 2] = $309;\n     $312 = $labelInfo + 131084 + (($290 | 3) << 2) | 0;\n     $316 = HEAP32[$labelInfo + 1310736 + ($268 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$312 >> 2] | 0) < ($316 | 0)) HEAP32[$312 >> 2] = $316;\n     $i$534 = $i$534 + 1 | 0;\n    } while (($i$534 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$245 >> 2] | 0) > 0) {\n    $i$633 = 0;\n    do {\n     $320 = $labelInfo + 12 + ($i$633 << 2) | 0;\n     $323 = $i$633 << 1;\n     $324 = $labelInfo + 655376 + ($323 << 3) | 0;\n     HEAPF64[$324 >> 3] = +HEAPF64[$324 >> 3] / +(HEAP32[$320 >> 2] | 0);\n     $330 = $labelInfo + 655376 + (($323 | 1) << 3) | 0;\n     HEAPF64[$330 >> 3] = +HEAPF64[$330 >> 3] / +(HEAP32[$320 >> 2] | 0);\n     $i$633 = $i$633 + 1 | 0;\n    } while (($i$633 | 0) < (HEAP32[$245 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubDBI3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $101 = 0, $107 = 0, $11 = 0, $112 = 0, $115 = 0, $12 = 0, $132 = 0, $134 = 0, $136 = 0, $140 = 0, $144 = 0, $147 = 0, $149 = 0, $153 = 0, $157 = 0, $161 = 0, $166 = 0, $168 = 0, $172 = 0, $176 = 0, $180 = 0, $186 = 0, $189 = 0, $19 = 0, $191 = 0, $195 = 0, $199 = 0, $2 = 0, $20 = 0, $203 = 0, $206 = 0, $211 = 0, $226 = 0, $227 = 0, $233 = 0, $235 = 0, $241 = 0, $245 = 0, $246 = 0, $253 = 0, $267 = 0, $268 = 0, $271 = 0, $278 = 0, $279 = 0, $28 = 0, $287 = 0, $290 = 0, $291 = 0, $295 = 0, $298 = 0, $3 = 0, $302 = 0, $305 = 0, $309 = 0, $312 = 0, $316 = 0, $320 = 0, $323 = 0, $324 = 0, $330 = 0, $41 = 0, $44 = 0, $46 = 0, $50 = 0, $54 = 0, $60 = 0, $61 = 0, $64 = 0, $65 = 0, $66 = 0, $69 = 0, $72 = 0, $89 = 0, $91 = 0, $93 = 0, $97 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = ($xsize | 0) / 2 | 0;\n $1 = ($ysize | 0) / 2 | 0;\n $2 = HEAP32[$labelInfo >> 2] | 0;\n $3 = $1 + -1 | 0;\n if (($xsize | 0) > 1) {\n  $i$082 = 0;\n  $pnt1$084 = $2;\n  $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$083 >> 1] = 0;\n   HEAP16[$pnt1$084 >> 1] = 0;\n   $i$082 = $i$082 + 1 | 0;\n   if (($i$082 | 0) >= ($0 | 0)) break; else {\n    $pnt1$084 = $pnt1$084 + 2 | 0;\n    $pnt2$083 = $pnt2$083 + 2 | 0;\n   }\n  }\n }\n $11 = $labelingThresh * 3 | 0;\n $12 = $0 + -1 | 0;\n if (($ysize | 0) > 1) {\n  $i$176 = 0;\n  $pnt1$178 = $2;\n  $pnt2$177 = $2 + ($12 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$177 >> 1] = 0;\n   HEAP16[$pnt1$178 >> 1] = 0;\n   $i$176 = $i$176 + 1 | 0;\n   if (($i$176 | 0) >= ($1 | 0)) break; else {\n    $pnt1$178 = $pnt1$178 + ($0 << 1) | 0;\n    $pnt2$177 = $pnt2$177 + ($0 << 1) | 0;\n   }\n  }\n }\n $19 = $labelInfo + 1179664 | 0;\n $20 = 0 - $0 | 0;\n $$sum1 = 1 - $0 | 0;\n $$sum2 = ~$0;\n $$sum = ($xsize << 2) + 16 | 0;\n L11 : do if (($3 | 0) > 1) {\n  $28 = ($12 | 0) > 1;\n  $j$069 = 1;\n  $pnt$073 = $image + (($xsize << 3) + 8) | 0;\n  $pnt2$272 = $2 + ($0 + 1 << 1) | 0;\n  $wk_max$071 = 0;\n  L13 : while (1) {\n   if ($28) {\n    $i$256 = 1;\n    $pnt$164 = $pnt$073;\n    $pnt2$363 = $pnt2$272;\n    $wk_max$158 = $wk_max$071;\n    while (1) {\n     do if (((HEAPU8[$pnt$164 + 1 >> 0] | 0) + (HEAPU8[$pnt$164 >> 0] | 0) + (HEAPU8[$pnt$164 + 2 >> 0] | 0) | 0) > ($11 | 0)) {\n      HEAP16[$pnt2$363 >> 1] = 0;\n      $wk_max$2 = $wk_max$158;\n     } else {\n      $41 = HEAP16[$pnt2$363 + ($20 << 1) >> 1] | 0;\n      if ($41 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$363 >> 1] = $41;\n       $44 = ($41 << 16 >> 16) * 7 | 0;\n       $46 = $labelInfo + 1310736 + ($44 + -7 << 2) | 0;\n       HEAP32[$46 >> 2] = (HEAP32[$46 >> 2] | 0) + 1;\n       $50 = $labelInfo + 1310736 + ($44 + -6 << 2) | 0;\n       HEAP32[$50 >> 2] = (HEAP32[$50 >> 2] | 0) + $i$256;\n       $54 = $labelInfo + 1310736 + ($44 + -5 << 2) | 0;\n       HEAP32[$54 >> 2] = (HEAP32[$54 >> 2] | 0) + $j$069;\n       HEAP32[$labelInfo + 1310736 + ($44 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $60 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0;\n      $61 = $60 << 16 >> 16;\n      $64 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0;\n      $65 = $64 << 16 >> 16;\n      $66 = $64 << 16 >> 16 > 0;\n      if ($60 << 16 >> 16 <= 0) {\n       if ($66) {\n        HEAP16[$pnt2$363 >> 1] = $64;\n        $166 = $65 * 7 | 0;\n        $168 = $labelInfo + 1310736 + ($166 + -7 << 2) | 0;\n        HEAP32[$168 >> 2] = (HEAP32[$168 >> 2] | 0) + 1;\n        $172 = $labelInfo + 1310736 + ($166 + -6 << 2) | 0;\n        HEAP32[$172 >> 2] = (HEAP32[$172 >> 2] | 0) + $i$256;\n        $176 = $labelInfo + 1310736 + ($166 + -5 << 2) | 0;\n        HEAP32[$176 >> 2] = (HEAP32[$176 >> 2] | 0) + $j$069;\n        $180 = $labelInfo + 1310736 + ($166 + -3 << 2) | 0;\n        if ((HEAP32[$180 >> 2] | 0) < ($i$256 | 0)) HEAP32[$180 >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($166 + -1 << 2) >> 2] = $j$069;\n        $wk_max$2 = $wk_max$158;\n        break;\n       }\n       $186 = HEAP16[$pnt2$363 + -2 >> 1] | 0;\n       if ($186 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$363 >> 1] = $186;\n        $189 = ($186 << 16 >> 16) * 7 | 0;\n        $191 = $labelInfo + 1310736 + ($189 + -7 << 2) | 0;\n        HEAP32[$191 >> 2] = (HEAP32[$191 >> 2] | 0) + 1;\n        $195 = $labelInfo + 1310736 + ($189 + -6 << 2) | 0;\n        HEAP32[$195 >> 2] = (HEAP32[$195 >> 2] | 0) + $i$256;\n        $199 = $labelInfo + 1310736 + ($189 + -5 << 2) | 0;\n        HEAP32[$199 >> 2] = (HEAP32[$199 >> 2] | 0) + $j$069;\n        $203 = $labelInfo + 1310736 + ($189 + -3 << 2) | 0;\n        if ((HEAP32[$203 >> 2] | 0) >= ($i$256 | 0)) {\n         $wk_max$2 = $wk_max$158;\n         break;\n        }\n        HEAP32[$203 >> 2] = $i$256;\n        $wk_max$2 = $wk_max$158;\n        break;\n       } else {\n        $206 = $wk_max$158 + 1 | 0;\n        if (($wk_max$158 | 0) > 32767) break L13;\n        HEAP16[$pnt2$363 >> 1] = $206;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $206 << 16 >> 16;\n        $211 = $wk_max$158 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($211 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($211 + 1 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($211 + 2 << 2) >> 2] = $j$069;\n        HEAP32[$labelInfo + 1310736 + ($211 + 3 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($211 + 4 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($211 + 5 << 2) >> 2] = $j$069;\n        HEAP32[$labelInfo + 1310736 + ($211 + 6 << 2) >> 2] = $j$069;\n        $wk_max$2 = $206;\n        break;\n       }\n      }\n      if ($66) {\n       $69 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0;\n       $72 = HEAP32[$labelInfo + 1179664 + ($65 + -1 << 2) >> 2] | 0;\n       if (($69 | 0) > ($72 | 0)) {\n        HEAP16[$pnt2$363 >> 1] = $72;\n        if (($wk_max$158 | 0) > 0) {\n         $k$052 = 0;\n         $wk$053 = $19;\n         while (1) {\n          if ((HEAP32[$wk$053 >> 2] | 0) == ($69 | 0)) HEAP32[$wk$053 >> 2] = $72;\n          $k$052 = $k$052 + 1 | 0;\n          if (($k$052 | 0) >= ($wk_max$158 | 0)) {\n           $89 = $72;\n           break;\n          } else $wk$053 = $wk$053 + 4 | 0;\n         }\n        } else $89 = $72;\n       } else {\n        HEAP16[$pnt2$363 >> 1] = $69;\n        if (($69 | 0) < ($72 | 0) & ($wk_max$158 | 0) > 0) {\n         $k$149 = 0;\n         $wk$150 = $19;\n         while (1) {\n          if ((HEAP32[$wk$150 >> 2] | 0) == ($72 | 0)) HEAP32[$wk$150 >> 2] = $69;\n          $k$149 = $k$149 + 1 | 0;\n          if (($k$149 | 0) >= ($wk_max$158 | 0)) {\n           $89 = $69;\n           break;\n          } else $wk$150 = $wk$150 + 4 | 0;\n         }\n        } else $89 = $69;\n       }\n       $91 = ($89 << 16 >> 16) * 7 | 0;\n       $93 = $labelInfo + 1310736 + ($91 + -7 << 2) | 0;\n       HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + 1;\n       $97 = $labelInfo + 1310736 + ($91 + -6 << 2) | 0;\n       HEAP32[$97 >> 2] = (HEAP32[$97 >> 2] | 0) + $i$256;\n       $101 = $labelInfo + 1310736 + ($91 + -5 << 2) | 0;\n       HEAP32[$101 >> 2] = (HEAP32[$101 >> 2] | 0) + $j$069;\n       HEAP32[$labelInfo + 1310736 + ($91 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $107 = HEAP16[$pnt2$363 + -2 >> 1] | 0;\n      if ($107 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$363 >> 1] = $60;\n       $147 = $61 * 7 | 0;\n       $149 = $labelInfo + 1310736 + ($147 + -7 << 2) | 0;\n       HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + 1;\n       $153 = $labelInfo + 1310736 + ($147 + -6 << 2) | 0;\n       HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $i$256;\n       $157 = $labelInfo + 1310736 + ($147 + -5 << 2) | 0;\n       HEAP32[$157 >> 2] = (HEAP32[$157 >> 2] | 0) + $j$069;\n       $161 = $labelInfo + 1310736 + ($147 + -4 << 2) | 0;\n       if ((HEAP32[$161 >> 2] | 0) > ($i$256 | 0)) HEAP32[$161 >> 2] = $i$256;\n       HEAP32[$labelInfo + 1310736 + ($147 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $112 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0;\n      $115 = HEAP32[$labelInfo + 1179664 + (($107 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($112 | 0) > ($115 | 0)) {\n       HEAP16[$pnt2$363 >> 1] = $115;\n       if (($wk_max$158 | 0) > 0) {\n        $k$245 = 0;\n        $wk$246 = $19;\n        while (1) {\n         if ((HEAP32[$wk$246 >> 2] | 0) == ($112 | 0)) HEAP32[$wk$246 >> 2] = $115;\n         $k$245 = $k$245 + 1 | 0;\n         if (($k$245 | 0) >= ($wk_max$158 | 0)) {\n          $132 = $115;\n          break;\n         } else $wk$246 = $wk$246 + 4 | 0;\n        }\n       } else $132 = $115;\n      } else {\n       HEAP16[$pnt2$363 >> 1] = $112;\n       if (($112 | 0) < ($115 | 0) & ($wk_max$158 | 0) > 0) {\n        $k$342 = 0;\n        $wk$343 = $19;\n        while (1) {\n         if ((HEAP32[$wk$343 >> 2] | 0) == ($115 | 0)) HEAP32[$wk$343 >> 2] = $112;\n         $k$342 = $k$342 + 1 | 0;\n         if (($k$342 | 0) >= ($wk_max$158 | 0)) {\n          $132 = $112;\n          break;\n         } else $wk$343 = $wk$343 + 4 | 0;\n        }\n       } else $132 = $112;\n      }\n      $134 = ($132 << 16 >> 16) * 7 | 0;\n      $136 = $labelInfo + 1310736 + ($134 + -7 << 2) | 0;\n      HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + 1;\n      $140 = $labelInfo + 1310736 + ($134 + -6 << 2) | 0;\n      HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $i$256;\n      $144 = $labelInfo + 1310736 + ($134 + -5 << 2) | 0;\n      HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $j$069;\n      $wk_max$2 = $wk_max$158;\n     } while (0);\n     $i$256 = $i$256 + 1 | 0;\n     $226 = $pnt$164 + 8 | 0;\n     $227 = $pnt2$363 + 2 | 0;\n     if (($i$256 | 0) >= ($12 | 0)) {\n      $pnt$1$lcssa = $226;\n      $pnt2$3$lcssa = $227;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $pnt$164 = $226;\n      $pnt2$363 = $227;\n      $wk_max$158 = $wk_max$2;\n     }\n    }\n   } else {\n    $pnt$1$lcssa = $pnt$073;\n    $pnt2$3$lcssa = $pnt2$272;\n    $wk_max$1$lcssa = $wk_max$071;\n   }\n   $j$069 = $j$069 + 1 | 0;\n   if (($j$069 | 0) >= ($3 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $pnt$073 = $pnt$1$lcssa + $$sum | 0;\n    $pnt2$272 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$071 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $233 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$338 = 1;\n   $j$139 = 1;\n   $wk$440 = $19;\n   while (1) {\n    $235 = HEAP32[$wk$440 >> 2] | 0;\n    if (($235 | 0) == ($i$338 | 0)) {\n     $241 = $j$139;\n     $j$2 = $j$139 + 1 | 0;\n    } else {\n     $241 = HEAP32[$labelInfo + 1179664 + ($235 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$139;\n    }\n    HEAP32[$wk$440 >> 2] = $241;\n    if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$338 = $i$338 + 1 | 0;\n     $j$139 = $j$2;\n     $wk$440 = $wk$440 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $245 = $labelInfo + 8 | 0;\n  $246 = $j$1$lcssa + -1 | 0;\n  HEAP32[$245 >> 2] = $246;\n  if (!$246) $$0 = 0; else {\n   _memset($233 | 0, 0, $246 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $246 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$436 = 0;\n    do {\n     $253 = $i$436 << 2;\n     HEAP32[$labelInfo + 131084 + ($253 << 2) >> 2] = $0;\n     HEAP32[$labelInfo + 131084 + (($253 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($253 | 2) << 2) >> 2] = $1;\n     HEAP32[$labelInfo + 131084 + (($253 | 3) << 2) >> 2] = 0;\n     $i$436 = $i$436 + 1 | 0;\n    } while (($i$436 | 0) < (HEAP32[$245 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$534 = 0;\n    do {\n     $267 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0;\n     $268 = $i$534 * 7 | 0;\n     $271 = $labelInfo + 12 + ($267 << 2) | 0;\n     HEAP32[$271 >> 2] = (HEAP32[$271 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($268 << 2) >> 2] | 0);\n     $278 = $267 << 1;\n     $279 = $labelInfo + 655376 + ($278 << 3) | 0;\n     HEAPF64[$279 >> 3] = +HEAPF64[$279 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($268 + 1 << 2) >> 2] | 0);\n     $287 = $labelInfo + 655376 + (($278 | 1) << 3) | 0;\n     HEAPF64[$287 >> 3] = +HEAPF64[$287 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($268 + 2 << 2) >> 2] | 0);\n     $290 = $267 << 2;\n     $291 = $labelInfo + 131084 + ($290 << 2) | 0;\n     $295 = HEAP32[$labelInfo + 1310736 + ($268 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$291 >> 2] | 0) > ($295 | 0)) HEAP32[$291 >> 2] = $295;\n     $298 = $labelInfo + 131084 + (($290 | 1) << 2) | 0;\n     $302 = HEAP32[$labelInfo + 1310736 + ($268 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$298 >> 2] | 0) < ($302 | 0)) HEAP32[$298 >> 2] = $302;\n     $305 = $labelInfo + 131084 + (($290 | 2) << 2) | 0;\n     $309 = HEAP32[$labelInfo + 1310736 + ($268 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$305 >> 2] | 0) > ($309 | 0)) HEAP32[$305 >> 2] = $309;\n     $312 = $labelInfo + 131084 + (($290 | 3) << 2) | 0;\n     $316 = HEAP32[$labelInfo + 1310736 + ($268 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$312 >> 2] | 0) < ($316 | 0)) HEAP32[$312 >> 2] = $316;\n     $i$534 = $i$534 + 1 | 0;\n    } while (($i$534 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$245 >> 2] | 0) > 0) {\n    $i$633 = 0;\n    do {\n     $320 = $labelInfo + 12 + ($i$633 << 2) | 0;\n     $323 = $i$633 << 1;\n     $324 = $labelInfo + 655376 + ($323 << 3) | 0;\n     HEAPF64[$324 >> 3] = +HEAPF64[$324 >> 3] / +(HEAP32[$320 >> 2] | 0);\n     $330 = $labelInfo + 655376 + (($323 | 1) << 3) | 0;\n     HEAPF64[$330 >> 3] = +HEAPF64[$330 >> 3] / +(HEAP32[$320 >> 2] | 0);\n     $i$633 = $i$633 + 1 | 0;\n    } while (($i$633 | 0) < (HEAP32[$245 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubDWR3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $105 = 0, $110 = 0, $113 = 0, $130 = 0, $132 = 0, $134 = 0, $138 = 0, $142 = 0, $145 = 0, $147 = 0, $151 = 0, $155 = 0, $159 = 0, $164 = 0, $166 = 0, $17 = 0, $170 = 0, $174 = 0, $178 = 0, $18 = 0, $184 = 0, $187 = 0, $189 = 0, $19 = 0, $193 = 0, $197 = 0, $201 = 0, $204 = 0, $209 = 0, $224 = 0, $225 = 0, $231 = 0, $233 = 0, $239 = 0, $24 = 0, $243 = 0, $244 = 0, $251 = 0, $26 = 0, $265 = 0, $266 = 0, $269 = 0, $276 = 0, $277 = 0, $285 = 0, $288 = 0, $289 = 0, $293 = 0, $296 = 0, $300 = 0, $303 = 0, $307 = 0, $310 = 0, $314 = 0, $318 = 0, $321 = 0, $322 = 0, $328 = 0, $39 = 0, $42 = 0, $44 = 0, $48 = 0, $52 = 0, $58 = 0, $59 = 0, $62 = 0, $63 = 0, $64 = 0, $67 = 0, $70 = 0, $87 = 0, $89 = 0, $9 = 0, $91 = 0, $95 = 0, $99 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$081 = 0;\n  $pnt1$083 = $0;\n  $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$082 >> 1] = 0;\n   HEAP16[$pnt1$083 >> 1] = 0;\n   $i$081 = $i$081 + 1 | 0;\n   if (($i$081 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$083 = $pnt1$083 + 2 | 0;\n    $pnt2$082 = $pnt2$082 + 2 | 0;\n   }\n  }\n }\n $9 = $labelingThresh * 3 | 0;\n $10 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$175 = 0;\n  $pnt1$177 = $0;\n  $pnt2$176 = $0 + ($10 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$176 >> 1] = 0;\n   HEAP16[$pnt1$177 >> 1] = 0;\n   $i$175 = $i$175 + 1 | 0;\n   if (($i$175 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0;\n    $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0;\n   }\n  }\n }\n $17 = $labelInfo + 1179664 | 0;\n $18 = $xsize + 1 | 0;\n $19 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $24 = ($10 | 0) > 1;\n  $j$068 = 1;\n  $pnt$072 = $image + ($18 << 1) | 0;\n  $pnt2$271 = $0 + ($18 << 1) | 0;\n  $wk_max$070 = 0;\n  L13 : while (1) {\n   if ($24) {\n    $i$255 = 1;\n    $pnt$163 = $pnt$072;\n    $pnt2$362 = $pnt2$271;\n    $wk_max$157 = $wk_max$070;\n    while (1) {\n     $26 = HEAPU8[$pnt$163 >> 0] | 0;\n     do if ((($26 & 240) + 24 + ($26 << 4 & 240) + ((HEAPU8[$pnt$163 + 1 >> 0] | 0) & 240) | 0) > ($9 | 0)) {\n      $39 = HEAP16[$pnt2$362 + ($19 << 1) >> 1] | 0;\n      if ($39 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$362 >> 1] = $39;\n       $42 = ($39 << 16 >> 16) * 7 | 0;\n       $44 = $labelInfo + 1310736 + ($42 + -7 << 2) | 0;\n       HEAP32[$44 >> 2] = (HEAP32[$44 >> 2] | 0) + 1;\n       $48 = $labelInfo + 1310736 + ($42 + -6 << 2) | 0;\n       HEAP32[$48 >> 2] = (HEAP32[$48 >> 2] | 0) + $i$255;\n       $52 = $labelInfo + 1310736 + ($42 + -5 << 2) | 0;\n       HEAP32[$52 >> 2] = (HEAP32[$52 >> 2] | 0) + $j$068;\n       HEAP32[$labelInfo + 1310736 + ($42 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $58 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0;\n      $59 = $58 << 16 >> 16;\n      $62 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0;\n      $63 = $62 << 16 >> 16;\n      $64 = $62 << 16 >> 16 > 0;\n      if ($58 << 16 >> 16 <= 0) {\n       if ($64) {\n        HEAP16[$pnt2$362 >> 1] = $62;\n        $164 = $63 * 7 | 0;\n        $166 = $labelInfo + 1310736 + ($164 + -7 << 2) | 0;\n        HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + 1;\n        $170 = $labelInfo + 1310736 + ($164 + -6 << 2) | 0;\n        HEAP32[$170 >> 2] = (HEAP32[$170 >> 2] | 0) + $i$255;\n        $174 = $labelInfo + 1310736 + ($164 + -5 << 2) | 0;\n        HEAP32[$174 >> 2] = (HEAP32[$174 >> 2] | 0) + $j$068;\n        $178 = $labelInfo + 1310736 + ($164 + -3 << 2) | 0;\n        if ((HEAP32[$178 >> 2] | 0) < ($i$255 | 0)) HEAP32[$178 >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($164 + -1 << 2) >> 2] = $j$068;\n        $wk_max$2 = $wk_max$157;\n        break;\n       }\n       $184 = HEAP16[$pnt2$362 + -2 >> 1] | 0;\n       if ($184 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$362 >> 1] = $184;\n        $187 = ($184 << 16 >> 16) * 7 | 0;\n        $189 = $labelInfo + 1310736 + ($187 + -7 << 2) | 0;\n        HEAP32[$189 >> 2] = (HEAP32[$189 >> 2] | 0) + 1;\n        $193 = $labelInfo + 1310736 + ($187 + -6 << 2) | 0;\n        HEAP32[$193 >> 2] = (HEAP32[$193 >> 2] | 0) + $i$255;\n        $197 = $labelInfo + 1310736 + ($187 + -5 << 2) | 0;\n        HEAP32[$197 >> 2] = (HEAP32[$197 >> 2] | 0) + $j$068;\n        $201 = $labelInfo + 1310736 + ($187 + -3 << 2) | 0;\n        if ((HEAP32[$201 >> 2] | 0) >= ($i$255 | 0)) {\n         $wk_max$2 = $wk_max$157;\n         break;\n        }\n        HEAP32[$201 >> 2] = $i$255;\n        $wk_max$2 = $wk_max$157;\n        break;\n       } else {\n        $204 = $wk_max$157 + 1 | 0;\n        if (($wk_max$157 | 0) > 32767) break L13;\n        HEAP16[$pnt2$362 >> 1] = $204;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $204 << 16 >> 16;\n        $209 = $wk_max$157 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($209 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($209 + 1 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($209 + 2 << 2) >> 2] = $j$068;\n        HEAP32[$labelInfo + 1310736 + ($209 + 3 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($209 + 4 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($209 + 5 << 2) >> 2] = $j$068;\n        HEAP32[$labelInfo + 1310736 + ($209 + 6 << 2) >> 2] = $j$068;\n        $wk_max$2 = $204;\n        break;\n       }\n      }\n      if ($64) {\n       $67 = HEAP32[$labelInfo + 1179664 + ($59 + -1 << 2) >> 2] | 0;\n       $70 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0;\n       if (($67 | 0) > ($70 | 0)) {\n        HEAP16[$pnt2$362 >> 1] = $70;\n        if (($wk_max$157 | 0) > 0) {\n         $k$051 = 0;\n         $wk$052 = $17;\n         while (1) {\n          if ((HEAP32[$wk$052 >> 2] | 0) == ($67 | 0)) HEAP32[$wk$052 >> 2] = $70;\n          $k$051 = $k$051 + 1 | 0;\n          if (($k$051 | 0) >= ($wk_max$157 | 0)) {\n           $87 = $70;\n           break;\n          } else $wk$052 = $wk$052 + 4 | 0;\n         }\n        } else $87 = $70;\n       } else {\n        HEAP16[$pnt2$362 >> 1] = $67;\n        if (($67 | 0) < ($70 | 0) & ($wk_max$157 | 0) > 0) {\n         $k$148 = 0;\n         $wk$149 = $17;\n         while (1) {\n          if ((HEAP32[$wk$149 >> 2] | 0) == ($70 | 0)) HEAP32[$wk$149 >> 2] = $67;\n          $k$148 = $k$148 + 1 | 0;\n          if (($k$148 | 0) >= ($wk_max$157 | 0)) {\n           $87 = $67;\n           break;\n          } else $wk$149 = $wk$149 + 4 | 0;\n         }\n        } else $87 = $67;\n       }\n       $89 = ($87 << 16 >> 16) * 7 | 0;\n       $91 = $labelInfo + 1310736 + ($89 + -7 << 2) | 0;\n       HEAP32[$91 >> 2] = (HEAP32[$91 >> 2] | 0) + 1;\n       $95 = $labelInfo + 1310736 + ($89 + -6 << 2) | 0;\n       HEAP32[$95 >> 2] = (HEAP32[$95 >> 2] | 0) + $i$255;\n       $99 = $labelInfo + 1310736 + ($89 + -5 << 2) | 0;\n       HEAP32[$99 >> 2] = (HEAP32[$99 >> 2] | 0) + $j$068;\n       HEAP32[$labelInfo + 1310736 + ($89 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $105 = HEAP16[$pnt2$362 + -2 >> 1] | 0;\n      if ($105 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$362 >> 1] = $58;\n       $145 = $59 * 7 | 0;\n       $147 = $labelInfo + 1310736 + ($145 + -7 << 2) | 0;\n       HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + 1;\n       $151 = $labelInfo + 1310736 + ($145 + -6 << 2) | 0;\n       HEAP32[$151 >> 2] = (HEAP32[$151 >> 2] | 0) + $i$255;\n       $155 = $labelInfo + 1310736 + ($145 + -5 << 2) | 0;\n       HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + $j$068;\n       $159 = $labelInfo + 1310736 + ($145 + -4 << 2) | 0;\n       if ((HEAP32[$159 >> 2] | 0) > ($i$255 | 0)) HEAP32[$159 >> 2] = $i$255;\n       HEAP32[$labelInfo + 1310736 + ($145 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $110 = HEAP32[$labelInfo + 1179664 + ($59 + -1 << 2) >> 2] | 0;\n      $113 = HEAP32[$labelInfo + 1179664 + (($105 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($110 | 0) > ($113 | 0)) {\n       HEAP16[$pnt2$362 >> 1] = $113;\n       if (($wk_max$157 | 0) > 0) {\n        $k$244 = 0;\n        $wk$245 = $17;\n        while (1) {\n         if ((HEAP32[$wk$245 >> 2] | 0) == ($110 | 0)) HEAP32[$wk$245 >> 2] = $113;\n         $k$244 = $k$244 + 1 | 0;\n         if (($k$244 | 0) >= ($wk_max$157 | 0)) {\n          $130 = $113;\n          break;\n         } else $wk$245 = $wk$245 + 4 | 0;\n        }\n       } else $130 = $113;\n      } else {\n       HEAP16[$pnt2$362 >> 1] = $110;\n       if (($110 | 0) < ($113 | 0) & ($wk_max$157 | 0) > 0) {\n        $k$341 = 0;\n        $wk$342 = $17;\n        while (1) {\n         if ((HEAP32[$wk$342 >> 2] | 0) == ($113 | 0)) HEAP32[$wk$342 >> 2] = $110;\n         $k$341 = $k$341 + 1 | 0;\n         if (($k$341 | 0) >= ($wk_max$157 | 0)) {\n          $130 = $110;\n          break;\n         } else $wk$342 = $wk$342 + 4 | 0;\n        }\n       } else $130 = $110;\n      }\n      $132 = ($130 << 16 >> 16) * 7 | 0;\n      $134 = $labelInfo + 1310736 + ($132 + -7 << 2) | 0;\n      HEAP32[$134 >> 2] = (HEAP32[$134 >> 2] | 0) + 1;\n      $138 = $labelInfo + 1310736 + ($132 + -6 << 2) | 0;\n      HEAP32[$138 >> 2] = (HEAP32[$138 >> 2] | 0) + $i$255;\n      $142 = $labelInfo + 1310736 + ($132 + -5 << 2) | 0;\n      HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + $j$068;\n      $wk_max$2 = $wk_max$157;\n     } else {\n      HEAP16[$pnt2$362 >> 1] = 0;\n      $wk_max$2 = $wk_max$157;\n     } while (0);\n     $i$255 = $i$255 + 1 | 0;\n     $224 = $pnt$163 + 2 | 0;\n     $225 = $pnt2$362 + 2 | 0;\n     if (($i$255 | 0) >= ($10 | 0)) {\n      $pnt$1$lcssa = $224;\n      $pnt2$3$lcssa = $225;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $pnt$163 = $224;\n      $pnt2$362 = $225;\n      $wk_max$157 = $wk_max$2;\n     }\n    }\n   } else {\n    $pnt$1$lcssa = $pnt$072;\n    $pnt2$3$lcssa = $pnt2$271;\n    $wk_max$1$lcssa = $wk_max$070;\n   }\n   $j$068 = $j$068 + 1 | 0;\n   if (($j$068 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $pnt$072 = $pnt$1$lcssa + 4 | 0;\n    $pnt2$271 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$070 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $231 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$337 = 1;\n   $j$138 = 1;\n   $wk$439 = $17;\n   while (1) {\n    $233 = HEAP32[$wk$439 >> 2] | 0;\n    if (($233 | 0) == ($i$337 | 0)) {\n     $239 = $j$138;\n     $j$2 = $j$138 + 1 | 0;\n    } else {\n     $239 = HEAP32[$labelInfo + 1179664 + ($233 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$138;\n    }\n    HEAP32[$wk$439 >> 2] = $239;\n    if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$337 = $i$337 + 1 | 0;\n     $j$138 = $j$2;\n     $wk$439 = $wk$439 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $243 = $labelInfo + 8 | 0;\n  $244 = $j$1$lcssa + -1 | 0;\n  HEAP32[$243 >> 2] = $244;\n  if (!$244) $$0 = 0; else {\n   _memset($231 | 0, 0, $244 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $244 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$435 = 0;\n    do {\n     $251 = $i$435 << 2;\n     HEAP32[$labelInfo + 131084 + ($251 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($251 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($251 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($251 | 3) << 2) >> 2] = 0;\n     $i$435 = $i$435 + 1 | 0;\n    } while (($i$435 | 0) < (HEAP32[$243 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$533 = 0;\n    do {\n     $265 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0;\n     $266 = $i$533 * 7 | 0;\n     $269 = $labelInfo + 12 + ($265 << 2) | 0;\n     HEAP32[$269 >> 2] = (HEAP32[$269 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($266 << 2) >> 2] | 0);\n     $276 = $265 << 1;\n     $277 = $labelInfo + 655376 + ($276 << 3) | 0;\n     HEAPF64[$277 >> 3] = +HEAPF64[$277 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($266 + 1 << 2) >> 2] | 0);\n     $285 = $labelInfo + 655376 + (($276 | 1) << 3) | 0;\n     HEAPF64[$285 >> 3] = +HEAPF64[$285 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($266 + 2 << 2) >> 2] | 0);\n     $288 = $265 << 2;\n     $289 = $labelInfo + 131084 + ($288 << 2) | 0;\n     $293 = HEAP32[$labelInfo + 1310736 + ($266 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$289 >> 2] | 0) > ($293 | 0)) HEAP32[$289 >> 2] = $293;\n     $296 = $labelInfo + 131084 + (($288 | 1) << 2) | 0;\n     $300 = HEAP32[$labelInfo + 1310736 + ($266 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$296 >> 2] | 0) < ($300 | 0)) HEAP32[$296 >> 2] = $300;\n     $303 = $labelInfo + 131084 + (($288 | 2) << 2) | 0;\n     $307 = HEAP32[$labelInfo + 1310736 + ($266 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$303 >> 2] | 0) > ($307 | 0)) HEAP32[$303 >> 2] = $307;\n     $310 = $labelInfo + 131084 + (($288 | 3) << 2) | 0;\n     $314 = HEAP32[$labelInfo + 1310736 + ($266 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$310 >> 2] | 0) < ($314 | 0)) HEAP32[$310 >> 2] = $314;\n     $i$533 = $i$533 + 1 | 0;\n    } while (($i$533 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$243 >> 2] | 0) > 0) {\n    $i$632 = 0;\n    do {\n     $318 = $labelInfo + 12 + ($i$632 << 2) | 0;\n     $321 = $i$632 << 1;\n     $322 = $labelInfo + 655376 + ($321 << 3) | 0;\n     HEAPF64[$322 >> 3] = +HEAPF64[$322 >> 3] / +(HEAP32[$318 >> 2] | 0);\n     $328 = $labelInfo + 655376 + (($321 | 1) << 3) | 0;\n     HEAPF64[$328 >> 3] = +HEAPF64[$328 >> 3] / +(HEAP32[$318 >> 2] | 0);\n     $i$632 = $i$632 + 1 | 0;\n    } while (($i$632 | 0) < (HEAP32[$243 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubDBR3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $105 = 0, $110 = 0, $113 = 0, $130 = 0, $132 = 0, $134 = 0, $138 = 0, $142 = 0, $145 = 0, $147 = 0, $151 = 0, $155 = 0, $159 = 0, $164 = 0, $166 = 0, $17 = 0, $170 = 0, $174 = 0, $178 = 0, $18 = 0, $184 = 0, $187 = 0, $189 = 0, $19 = 0, $193 = 0, $197 = 0, $201 = 0, $204 = 0, $209 = 0, $224 = 0, $225 = 0, $231 = 0, $233 = 0, $239 = 0, $24 = 0, $243 = 0, $244 = 0, $251 = 0, $26 = 0, $265 = 0, $266 = 0, $269 = 0, $276 = 0, $277 = 0, $285 = 0, $288 = 0, $289 = 0, $293 = 0, $296 = 0, $300 = 0, $303 = 0, $307 = 0, $310 = 0, $314 = 0, $318 = 0, $321 = 0, $322 = 0, $328 = 0, $39 = 0, $42 = 0, $44 = 0, $48 = 0, $52 = 0, $58 = 0, $59 = 0, $62 = 0, $63 = 0, $64 = 0, $67 = 0, $70 = 0, $87 = 0, $89 = 0, $9 = 0, $91 = 0, $95 = 0, $99 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$081 = 0;\n  $pnt1$083 = $0;\n  $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$082 >> 1] = 0;\n   HEAP16[$pnt1$083 >> 1] = 0;\n   $i$081 = $i$081 + 1 | 0;\n   if (($i$081 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$083 = $pnt1$083 + 2 | 0;\n    $pnt2$082 = $pnt2$082 + 2 | 0;\n   }\n  }\n }\n $9 = $labelingThresh * 3 | 0;\n $10 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$175 = 0;\n  $pnt1$177 = $0;\n  $pnt2$176 = $0 + ($10 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$176 >> 1] = 0;\n   HEAP16[$pnt1$177 >> 1] = 0;\n   $i$175 = $i$175 + 1 | 0;\n   if (($i$175 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0;\n    $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0;\n   }\n  }\n }\n $17 = $labelInfo + 1179664 | 0;\n $18 = $xsize + 1 | 0;\n $19 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $24 = ($10 | 0) > 1;\n  $j$068 = 1;\n  $pnt$072 = $image + ($18 << 1) | 0;\n  $pnt2$271 = $0 + ($18 << 1) | 0;\n  $wk_max$070 = 0;\n  L13 : while (1) {\n   if ($24) {\n    $i$255 = 1;\n    $pnt$163 = $pnt$072;\n    $pnt2$362 = $pnt2$271;\n    $wk_max$157 = $wk_max$070;\n    while (1) {\n     $26 = HEAPU8[$pnt$163 >> 0] | 0;\n     do if ((($26 & 240) + 24 + ($26 << 4 & 240) + ((HEAPU8[$pnt$163 + 1 >> 0] | 0) & 240) | 0) > ($9 | 0)) {\n      HEAP16[$pnt2$362 >> 1] = 0;\n      $wk_max$2 = $wk_max$157;\n     } else {\n      $39 = HEAP16[$pnt2$362 + ($19 << 1) >> 1] | 0;\n      if ($39 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$362 >> 1] = $39;\n       $42 = ($39 << 16 >> 16) * 7 | 0;\n       $44 = $labelInfo + 1310736 + ($42 + -7 << 2) | 0;\n       HEAP32[$44 >> 2] = (HEAP32[$44 >> 2] | 0) + 1;\n       $48 = $labelInfo + 1310736 + ($42 + -6 << 2) | 0;\n       HEAP32[$48 >> 2] = (HEAP32[$48 >> 2] | 0) + $i$255;\n       $52 = $labelInfo + 1310736 + ($42 + -5 << 2) | 0;\n       HEAP32[$52 >> 2] = (HEAP32[$52 >> 2] | 0) + $j$068;\n       HEAP32[$labelInfo + 1310736 + ($42 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $58 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0;\n      $59 = $58 << 16 >> 16;\n      $62 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0;\n      $63 = $62 << 16 >> 16;\n      $64 = $62 << 16 >> 16 > 0;\n      if ($58 << 16 >> 16 <= 0) {\n       if ($64) {\n        HEAP16[$pnt2$362 >> 1] = $62;\n        $164 = $63 * 7 | 0;\n        $166 = $labelInfo + 1310736 + ($164 + -7 << 2) | 0;\n        HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + 1;\n        $170 = $labelInfo + 1310736 + ($164 + -6 << 2) | 0;\n        HEAP32[$170 >> 2] = (HEAP32[$170 >> 2] | 0) + $i$255;\n        $174 = $labelInfo + 1310736 + ($164 + -5 << 2) | 0;\n        HEAP32[$174 >> 2] = (HEAP32[$174 >> 2] | 0) + $j$068;\n        $178 = $labelInfo + 1310736 + ($164 + -3 << 2) | 0;\n        if ((HEAP32[$178 >> 2] | 0) < ($i$255 | 0)) HEAP32[$178 >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($164 + -1 << 2) >> 2] = $j$068;\n        $wk_max$2 = $wk_max$157;\n        break;\n       }\n       $184 = HEAP16[$pnt2$362 + -2 >> 1] | 0;\n       if ($184 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$362 >> 1] = $184;\n        $187 = ($184 << 16 >> 16) * 7 | 0;\n        $189 = $labelInfo + 1310736 + ($187 + -7 << 2) | 0;\n        HEAP32[$189 >> 2] = (HEAP32[$189 >> 2] | 0) + 1;\n        $193 = $labelInfo + 1310736 + ($187 + -6 << 2) | 0;\n        HEAP32[$193 >> 2] = (HEAP32[$193 >> 2] | 0) + $i$255;\n        $197 = $labelInfo + 1310736 + ($187 + -5 << 2) | 0;\n        HEAP32[$197 >> 2] = (HEAP32[$197 >> 2] | 0) + $j$068;\n        $201 = $labelInfo + 1310736 + ($187 + -3 << 2) | 0;\n        if ((HEAP32[$201 >> 2] | 0) >= ($i$255 | 0)) {\n         $wk_max$2 = $wk_max$157;\n         break;\n        }\n        HEAP32[$201 >> 2] = $i$255;\n        $wk_max$2 = $wk_max$157;\n        break;\n       } else {\n        $204 = $wk_max$157 + 1 | 0;\n        if (($wk_max$157 | 0) > 32767) break L13;\n        HEAP16[$pnt2$362 >> 1] = $204;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $204 << 16 >> 16;\n        $209 = $wk_max$157 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($209 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($209 + 1 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($209 + 2 << 2) >> 2] = $j$068;\n        HEAP32[$labelInfo + 1310736 + ($209 + 3 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($209 + 4 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($209 + 5 << 2) >> 2] = $j$068;\n        HEAP32[$labelInfo + 1310736 + ($209 + 6 << 2) >> 2] = $j$068;\n        $wk_max$2 = $204;\n        break;\n       }\n      }\n      if ($64) {\n       $67 = HEAP32[$labelInfo + 1179664 + ($59 + -1 << 2) >> 2] | 0;\n       $70 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0;\n       if (($67 | 0) > ($70 | 0)) {\n        HEAP16[$pnt2$362 >> 1] = $70;\n        if (($wk_max$157 | 0) > 0) {\n         $k$051 = 0;\n         $wk$052 = $17;\n         while (1) {\n          if ((HEAP32[$wk$052 >> 2] | 0) == ($67 | 0)) HEAP32[$wk$052 >> 2] = $70;\n          $k$051 = $k$051 + 1 | 0;\n          if (($k$051 | 0) >= ($wk_max$157 | 0)) {\n           $87 = $70;\n           break;\n          } else $wk$052 = $wk$052 + 4 | 0;\n         }\n        } else $87 = $70;\n       } else {\n        HEAP16[$pnt2$362 >> 1] = $67;\n        if (($67 | 0) < ($70 | 0) & ($wk_max$157 | 0) > 0) {\n         $k$148 = 0;\n         $wk$149 = $17;\n         while (1) {\n          if ((HEAP32[$wk$149 >> 2] | 0) == ($70 | 0)) HEAP32[$wk$149 >> 2] = $67;\n          $k$148 = $k$148 + 1 | 0;\n          if (($k$148 | 0) >= ($wk_max$157 | 0)) {\n           $87 = $67;\n           break;\n          } else $wk$149 = $wk$149 + 4 | 0;\n         }\n        } else $87 = $67;\n       }\n       $89 = ($87 << 16 >> 16) * 7 | 0;\n       $91 = $labelInfo + 1310736 + ($89 + -7 << 2) | 0;\n       HEAP32[$91 >> 2] = (HEAP32[$91 >> 2] | 0) + 1;\n       $95 = $labelInfo + 1310736 + ($89 + -6 << 2) | 0;\n       HEAP32[$95 >> 2] = (HEAP32[$95 >> 2] | 0) + $i$255;\n       $99 = $labelInfo + 1310736 + ($89 + -5 << 2) | 0;\n       HEAP32[$99 >> 2] = (HEAP32[$99 >> 2] | 0) + $j$068;\n       HEAP32[$labelInfo + 1310736 + ($89 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $105 = HEAP16[$pnt2$362 + -2 >> 1] | 0;\n      if ($105 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$362 >> 1] = $58;\n       $145 = $59 * 7 | 0;\n       $147 = $labelInfo + 1310736 + ($145 + -7 << 2) | 0;\n       HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + 1;\n       $151 = $labelInfo + 1310736 + ($145 + -6 << 2) | 0;\n       HEAP32[$151 >> 2] = (HEAP32[$151 >> 2] | 0) + $i$255;\n       $155 = $labelInfo + 1310736 + ($145 + -5 << 2) | 0;\n       HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + $j$068;\n       $159 = $labelInfo + 1310736 + ($145 + -4 << 2) | 0;\n       if ((HEAP32[$159 >> 2] | 0) > ($i$255 | 0)) HEAP32[$159 >> 2] = $i$255;\n       HEAP32[$labelInfo + 1310736 + ($145 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $110 = HEAP32[$labelInfo + 1179664 + ($59 + -1 << 2) >> 2] | 0;\n      $113 = HEAP32[$labelInfo + 1179664 + (($105 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($110 | 0) > ($113 | 0)) {\n       HEAP16[$pnt2$362 >> 1] = $113;\n       if (($wk_max$157 | 0) > 0) {\n        $k$244 = 0;\n        $wk$245 = $17;\n        while (1) {\n         if ((HEAP32[$wk$245 >> 2] | 0) == ($110 | 0)) HEAP32[$wk$245 >> 2] = $113;\n         $k$244 = $k$244 + 1 | 0;\n         if (($k$244 | 0) >= ($wk_max$157 | 0)) {\n          $130 = $113;\n          break;\n         } else $wk$245 = $wk$245 + 4 | 0;\n        }\n       } else $130 = $113;\n      } else {\n       HEAP16[$pnt2$362 >> 1] = $110;\n       if (($110 | 0) < ($113 | 0) & ($wk_max$157 | 0) > 0) {\n        $k$341 = 0;\n        $wk$342 = $17;\n        while (1) {\n         if ((HEAP32[$wk$342 >> 2] | 0) == ($113 | 0)) HEAP32[$wk$342 >> 2] = $110;\n         $k$341 = $k$341 + 1 | 0;\n         if (($k$341 | 0) >= ($wk_max$157 | 0)) {\n          $130 = $110;\n          break;\n         } else $wk$342 = $wk$342 + 4 | 0;\n        }\n       } else $130 = $110;\n      }\n      $132 = ($130 << 16 >> 16) * 7 | 0;\n      $134 = $labelInfo + 1310736 + ($132 + -7 << 2) | 0;\n      HEAP32[$134 >> 2] = (HEAP32[$134 >> 2] | 0) + 1;\n      $138 = $labelInfo + 1310736 + ($132 + -6 << 2) | 0;\n      HEAP32[$138 >> 2] = (HEAP32[$138 >> 2] | 0) + $i$255;\n      $142 = $labelInfo + 1310736 + ($132 + -5 << 2) | 0;\n      HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + $j$068;\n      $wk_max$2 = $wk_max$157;\n     } while (0);\n     $i$255 = $i$255 + 1 | 0;\n     $224 = $pnt$163 + 2 | 0;\n     $225 = $pnt2$362 + 2 | 0;\n     if (($i$255 | 0) >= ($10 | 0)) {\n      $pnt$1$lcssa = $224;\n      $pnt2$3$lcssa = $225;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $pnt$163 = $224;\n      $pnt2$362 = $225;\n      $wk_max$157 = $wk_max$2;\n     }\n    }\n   } else {\n    $pnt$1$lcssa = $pnt$072;\n    $pnt2$3$lcssa = $pnt2$271;\n    $wk_max$1$lcssa = $wk_max$070;\n   }\n   $j$068 = $j$068 + 1 | 0;\n   if (($j$068 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $pnt$072 = $pnt$1$lcssa + 4 | 0;\n    $pnt2$271 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$070 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $231 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$337 = 1;\n   $j$138 = 1;\n   $wk$439 = $17;\n   while (1) {\n    $233 = HEAP32[$wk$439 >> 2] | 0;\n    if (($233 | 0) == ($i$337 | 0)) {\n     $239 = $j$138;\n     $j$2 = $j$138 + 1 | 0;\n    } else {\n     $239 = HEAP32[$labelInfo + 1179664 + ($233 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$138;\n    }\n    HEAP32[$wk$439 >> 2] = $239;\n    if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$337 = $i$337 + 1 | 0;\n     $j$138 = $j$2;\n     $wk$439 = $wk$439 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $243 = $labelInfo + 8 | 0;\n  $244 = $j$1$lcssa + -1 | 0;\n  HEAP32[$243 >> 2] = $244;\n  if (!$244) $$0 = 0; else {\n   _memset($231 | 0, 0, $244 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $244 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$435 = 0;\n    do {\n     $251 = $i$435 << 2;\n     HEAP32[$labelInfo + 131084 + ($251 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($251 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($251 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($251 | 3) << 2) >> 2] = 0;\n     $i$435 = $i$435 + 1 | 0;\n    } while (($i$435 | 0) < (HEAP32[$243 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$533 = 0;\n    do {\n     $265 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0;\n     $266 = $i$533 * 7 | 0;\n     $269 = $labelInfo + 12 + ($265 << 2) | 0;\n     HEAP32[$269 >> 2] = (HEAP32[$269 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($266 << 2) >> 2] | 0);\n     $276 = $265 << 1;\n     $277 = $labelInfo + 655376 + ($276 << 3) | 0;\n     HEAPF64[$277 >> 3] = +HEAPF64[$277 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($266 + 1 << 2) >> 2] | 0);\n     $285 = $labelInfo + 655376 + (($276 | 1) << 3) | 0;\n     HEAPF64[$285 >> 3] = +HEAPF64[$285 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($266 + 2 << 2) >> 2] | 0);\n     $288 = $265 << 2;\n     $289 = $labelInfo + 131084 + ($288 << 2) | 0;\n     $293 = HEAP32[$labelInfo + 1310736 + ($266 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$289 >> 2] | 0) > ($293 | 0)) HEAP32[$289 >> 2] = $293;\n     $296 = $labelInfo + 131084 + (($288 | 1) << 2) | 0;\n     $300 = HEAP32[$labelInfo + 1310736 + ($266 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$296 >> 2] | 0) < ($300 | 0)) HEAP32[$296 >> 2] = $300;\n     $303 = $labelInfo + 131084 + (($288 | 2) << 2) | 0;\n     $307 = HEAP32[$labelInfo + 1310736 + ($266 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$303 >> 2] | 0) > ($307 | 0)) HEAP32[$303 >> 2] = $307;\n     $310 = $labelInfo + 131084 + (($288 | 3) << 2) | 0;\n     $314 = HEAP32[$labelInfo + 1310736 + ($266 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$310 >> 2] | 0) < ($314 | 0)) HEAP32[$310 >> 2] = $314;\n     $i$533 = $i$533 + 1 | 0;\n    } while (($i$533 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$243 >> 2] | 0) > 0) {\n    $i$632 = 0;\n    do {\n     $318 = $labelInfo + 12 + ($i$632 << 2) | 0;\n     $321 = $i$632 << 1;\n     $322 = $labelInfo + 655376 + ($321 << 3) | 0;\n     HEAPF64[$322 >> 3] = +HEAPF64[$322 >> 3] / +(HEAP32[$318 >> 2] | 0);\n     $328 = $labelInfo + 655376 + (($321 | 1) << 3) | 0;\n     HEAPF64[$328 >> 3] = +HEAPF64[$328 >> 3] / +(HEAP32[$318 >> 2] | 0);\n     $i$632 = $i$632 + 1 | 0;\n    } while (($i$632 | 0) < (HEAP32[$243 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubDWRA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $104 = 0, $109 = 0, $112 = 0, $129 = 0, $131 = 0, $133 = 0, $137 = 0, $141 = 0, $144 = 0, $146 = 0, $150 = 0, $154 = 0, $158 = 0, $163 = 0, $165 = 0, $169 = 0, $17 = 0, $173 = 0, $177 = 0, $18 = 0, $183 = 0, $186 = 0, $188 = 0, $19 = 0, $192 = 0, $196 = 0, $200 = 0, $203 = 0, $208 = 0, $223 = 0, $224 = 0, $230 = 0, $232 = 0, $238 = 0, $24 = 0, $242 = 0, $243 = 0, $250 = 0, $264 = 0, $265 = 0, $268 = 0, $275 = 0, $276 = 0, $284 = 0, $287 = 0, $288 = 0, $292 = 0, $295 = 0, $299 = 0, $302 = 0, $306 = 0, $309 = 0, $313 = 0, $317 = 0, $320 = 0, $321 = 0, $327 = 0, $38 = 0, $41 = 0, $43 = 0, $47 = 0, $51 = 0, $57 = 0, $58 = 0, $61 = 0, $62 = 0, $63 = 0, $66 = 0, $69 = 0, $86 = 0, $88 = 0, $9 = 0, $90 = 0, $94 = 0, $98 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$081 = 0;\n  $pnt1$083 = $0;\n  $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$082 >> 1] = 0;\n   HEAP16[$pnt1$083 >> 1] = 0;\n   $i$081 = $i$081 + 1 | 0;\n   if (($i$081 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$083 = $pnt1$083 + 2 | 0;\n    $pnt2$082 = $pnt2$082 + 2 | 0;\n   }\n  }\n }\n $9 = $labelingThresh * 3 | 0;\n $10 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$175 = 0;\n  $pnt1$177 = $0;\n  $pnt2$176 = $0 + ($10 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$176 >> 1] = 0;\n   HEAP16[$pnt1$177 >> 1] = 0;\n   $i$175 = $i$175 + 1 | 0;\n   if (($i$175 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0;\n    $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0;\n   }\n  }\n }\n $17 = $labelInfo + 1179664 | 0;\n $18 = $xsize + 1 | 0;\n $19 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $24 = ($10 | 0) > 1;\n  $j$068 = 1;\n  $pnt$072 = $image + ($18 << 2) | 0;\n  $pnt2$271 = $0 + ($18 << 1) | 0;\n  $wk_max$070 = 0;\n  L13 : while (1) {\n   if ($24) {\n    $i$255 = 1;\n    $pnt$163 = $pnt$072;\n    $pnt2$362 = $pnt2$271;\n    $wk_max$157 = $wk_max$070;\n    while (1) {\n     do if (((HEAPU8[$pnt$163 + 2 >> 0] | 0) + (HEAPU8[$pnt$163 + 1 >> 0] | 0) + (HEAPU8[$pnt$163 + 3 >> 0] | 0) | 0) > ($9 | 0)) {\n      $38 = HEAP16[$pnt2$362 + ($19 << 1) >> 1] | 0;\n      if ($38 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$362 >> 1] = $38;\n       $41 = ($38 << 16 >> 16) * 7 | 0;\n       $43 = $labelInfo + 1310736 + ($41 + -7 << 2) | 0;\n       HEAP32[$43 >> 2] = (HEAP32[$43 >> 2] | 0) + 1;\n       $47 = $labelInfo + 1310736 + ($41 + -6 << 2) | 0;\n       HEAP32[$47 >> 2] = (HEAP32[$47 >> 2] | 0) + $i$255;\n       $51 = $labelInfo + 1310736 + ($41 + -5 << 2) | 0;\n       HEAP32[$51 >> 2] = (HEAP32[$51 >> 2] | 0) + $j$068;\n       HEAP32[$labelInfo + 1310736 + ($41 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $57 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0;\n      $58 = $57 << 16 >> 16;\n      $61 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0;\n      $62 = $61 << 16 >> 16;\n      $63 = $61 << 16 >> 16 > 0;\n      if ($57 << 16 >> 16 <= 0) {\n       if ($63) {\n        HEAP16[$pnt2$362 >> 1] = $61;\n        $163 = $62 * 7 | 0;\n        $165 = $labelInfo + 1310736 + ($163 + -7 << 2) | 0;\n        HEAP32[$165 >> 2] = (HEAP32[$165 >> 2] | 0) + 1;\n        $169 = $labelInfo + 1310736 + ($163 + -6 << 2) | 0;\n        HEAP32[$169 >> 2] = (HEAP32[$169 >> 2] | 0) + $i$255;\n        $173 = $labelInfo + 1310736 + ($163 + -5 << 2) | 0;\n        HEAP32[$173 >> 2] = (HEAP32[$173 >> 2] | 0) + $j$068;\n        $177 = $labelInfo + 1310736 + ($163 + -3 << 2) | 0;\n        if ((HEAP32[$177 >> 2] | 0) < ($i$255 | 0)) HEAP32[$177 >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($163 + -1 << 2) >> 2] = $j$068;\n        $wk_max$2 = $wk_max$157;\n        break;\n       }\n       $183 = HEAP16[$pnt2$362 + -2 >> 1] | 0;\n       if ($183 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$362 >> 1] = $183;\n        $186 = ($183 << 16 >> 16) * 7 | 0;\n        $188 = $labelInfo + 1310736 + ($186 + -7 << 2) | 0;\n        HEAP32[$188 >> 2] = (HEAP32[$188 >> 2] | 0) + 1;\n        $192 = $labelInfo + 1310736 + ($186 + -6 << 2) | 0;\n        HEAP32[$192 >> 2] = (HEAP32[$192 >> 2] | 0) + $i$255;\n        $196 = $labelInfo + 1310736 + ($186 + -5 << 2) | 0;\n        HEAP32[$196 >> 2] = (HEAP32[$196 >> 2] | 0) + $j$068;\n        $200 = $labelInfo + 1310736 + ($186 + -3 << 2) | 0;\n        if ((HEAP32[$200 >> 2] | 0) >= ($i$255 | 0)) {\n         $wk_max$2 = $wk_max$157;\n         break;\n        }\n        HEAP32[$200 >> 2] = $i$255;\n        $wk_max$2 = $wk_max$157;\n        break;\n       } else {\n        $203 = $wk_max$157 + 1 | 0;\n        if (($wk_max$157 | 0) > 32767) break L13;\n        HEAP16[$pnt2$362 >> 1] = $203;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $203 << 16 >> 16;\n        $208 = $wk_max$157 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($208 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($208 + 1 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($208 + 2 << 2) >> 2] = $j$068;\n        HEAP32[$labelInfo + 1310736 + ($208 + 3 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($208 + 4 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($208 + 5 << 2) >> 2] = $j$068;\n        HEAP32[$labelInfo + 1310736 + ($208 + 6 << 2) >> 2] = $j$068;\n        $wk_max$2 = $203;\n        break;\n       }\n      }\n      if ($63) {\n       $66 = HEAP32[$labelInfo + 1179664 + ($58 + -1 << 2) >> 2] | 0;\n       $69 = HEAP32[$labelInfo + 1179664 + ($62 + -1 << 2) >> 2] | 0;\n       if (($66 | 0) > ($69 | 0)) {\n        HEAP16[$pnt2$362 >> 1] = $69;\n        if (($wk_max$157 | 0) > 0) {\n         $k$051 = 0;\n         $wk$052 = $17;\n         while (1) {\n          if ((HEAP32[$wk$052 >> 2] | 0) == ($66 | 0)) HEAP32[$wk$052 >> 2] = $69;\n          $k$051 = $k$051 + 1 | 0;\n          if (($k$051 | 0) >= ($wk_max$157 | 0)) {\n           $86 = $69;\n           break;\n          } else $wk$052 = $wk$052 + 4 | 0;\n         }\n        } else $86 = $69;\n       } else {\n        HEAP16[$pnt2$362 >> 1] = $66;\n        if (($66 | 0) < ($69 | 0) & ($wk_max$157 | 0) > 0) {\n         $k$148 = 0;\n         $wk$149 = $17;\n         while (1) {\n          if ((HEAP32[$wk$149 >> 2] | 0) == ($69 | 0)) HEAP32[$wk$149 >> 2] = $66;\n          $k$148 = $k$148 + 1 | 0;\n          if (($k$148 | 0) >= ($wk_max$157 | 0)) {\n           $86 = $66;\n           break;\n          } else $wk$149 = $wk$149 + 4 | 0;\n         }\n        } else $86 = $66;\n       }\n       $88 = ($86 << 16 >> 16) * 7 | 0;\n       $90 = $labelInfo + 1310736 + ($88 + -7 << 2) | 0;\n       HEAP32[$90 >> 2] = (HEAP32[$90 >> 2] | 0) + 1;\n       $94 = $labelInfo + 1310736 + ($88 + -6 << 2) | 0;\n       HEAP32[$94 >> 2] = (HEAP32[$94 >> 2] | 0) + $i$255;\n       $98 = $labelInfo + 1310736 + ($88 + -5 << 2) | 0;\n       HEAP32[$98 >> 2] = (HEAP32[$98 >> 2] | 0) + $j$068;\n       HEAP32[$labelInfo + 1310736 + ($88 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $104 = HEAP16[$pnt2$362 + -2 >> 1] | 0;\n      if ($104 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$362 >> 1] = $57;\n       $144 = $58 * 7 | 0;\n       $146 = $labelInfo + 1310736 + ($144 + -7 << 2) | 0;\n       HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + 1;\n       $150 = $labelInfo + 1310736 + ($144 + -6 << 2) | 0;\n       HEAP32[$150 >> 2] = (HEAP32[$150 >> 2] | 0) + $i$255;\n       $154 = $labelInfo + 1310736 + ($144 + -5 << 2) | 0;\n       HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + $j$068;\n       $158 = $labelInfo + 1310736 + ($144 + -4 << 2) | 0;\n       if ((HEAP32[$158 >> 2] | 0) > ($i$255 | 0)) HEAP32[$158 >> 2] = $i$255;\n       HEAP32[$labelInfo + 1310736 + ($144 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $109 = HEAP32[$labelInfo + 1179664 + ($58 + -1 << 2) >> 2] | 0;\n      $112 = HEAP32[$labelInfo + 1179664 + (($104 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($109 | 0) > ($112 | 0)) {\n       HEAP16[$pnt2$362 >> 1] = $112;\n       if (($wk_max$157 | 0) > 0) {\n        $k$244 = 0;\n        $wk$245 = $17;\n        while (1) {\n         if ((HEAP32[$wk$245 >> 2] | 0) == ($109 | 0)) HEAP32[$wk$245 >> 2] = $112;\n         $k$244 = $k$244 + 1 | 0;\n         if (($k$244 | 0) >= ($wk_max$157 | 0)) {\n          $129 = $112;\n          break;\n         } else $wk$245 = $wk$245 + 4 | 0;\n        }\n       } else $129 = $112;\n      } else {\n       HEAP16[$pnt2$362 >> 1] = $109;\n       if (($109 | 0) < ($112 | 0) & ($wk_max$157 | 0) > 0) {\n        $k$341 = 0;\n        $wk$342 = $17;\n        while (1) {\n         if ((HEAP32[$wk$342 >> 2] | 0) == ($112 | 0)) HEAP32[$wk$342 >> 2] = $109;\n         $k$341 = $k$341 + 1 | 0;\n         if (($k$341 | 0) >= ($wk_max$157 | 0)) {\n          $129 = $109;\n          break;\n         } else $wk$342 = $wk$342 + 4 | 0;\n        }\n       } else $129 = $109;\n      }\n      $131 = ($129 << 16 >> 16) * 7 | 0;\n      $133 = $labelInfo + 1310736 + ($131 + -7 << 2) | 0;\n      HEAP32[$133 >> 2] = (HEAP32[$133 >> 2] | 0) + 1;\n      $137 = $labelInfo + 1310736 + ($131 + -6 << 2) | 0;\n      HEAP32[$137 >> 2] = (HEAP32[$137 >> 2] | 0) + $i$255;\n      $141 = $labelInfo + 1310736 + ($131 + -5 << 2) | 0;\n      HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + $j$068;\n      $wk_max$2 = $wk_max$157;\n     } else {\n      HEAP16[$pnt2$362 >> 1] = 0;\n      $wk_max$2 = $wk_max$157;\n     } while (0);\n     $i$255 = $i$255 + 1 | 0;\n     $223 = $pnt$163 + 4 | 0;\n     $224 = $pnt2$362 + 2 | 0;\n     if (($i$255 | 0) >= ($10 | 0)) {\n      $pnt$1$lcssa = $223;\n      $pnt2$3$lcssa = $224;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $pnt$163 = $223;\n      $pnt2$362 = $224;\n      $wk_max$157 = $wk_max$2;\n     }\n    }\n   } else {\n    $pnt$1$lcssa = $pnt$072;\n    $pnt2$3$lcssa = $pnt2$271;\n    $wk_max$1$lcssa = $wk_max$070;\n   }\n   $j$068 = $j$068 + 1 | 0;\n   if (($j$068 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $pnt$072 = $pnt$1$lcssa + 8 | 0;\n    $pnt2$271 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$070 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $230 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$337 = 1;\n   $j$138 = 1;\n   $wk$439 = $17;\n   while (1) {\n    $232 = HEAP32[$wk$439 >> 2] | 0;\n    if (($232 | 0) == ($i$337 | 0)) {\n     $238 = $j$138;\n     $j$2 = $j$138 + 1 | 0;\n    } else {\n     $238 = HEAP32[$labelInfo + 1179664 + ($232 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$138;\n    }\n    HEAP32[$wk$439 >> 2] = $238;\n    if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$337 = $i$337 + 1 | 0;\n     $j$138 = $j$2;\n     $wk$439 = $wk$439 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $242 = $labelInfo + 8 | 0;\n  $243 = $j$1$lcssa + -1 | 0;\n  HEAP32[$242 >> 2] = $243;\n  if (!$243) $$0 = 0; else {\n   _memset($230 | 0, 0, $243 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $243 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$435 = 0;\n    do {\n     $250 = $i$435 << 2;\n     HEAP32[$labelInfo + 131084 + ($250 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($250 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($250 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($250 | 3) << 2) >> 2] = 0;\n     $i$435 = $i$435 + 1 | 0;\n    } while (($i$435 | 0) < (HEAP32[$242 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$533 = 0;\n    do {\n     $264 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0;\n     $265 = $i$533 * 7 | 0;\n     $268 = $labelInfo + 12 + ($264 << 2) | 0;\n     HEAP32[$268 >> 2] = (HEAP32[$268 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($265 << 2) >> 2] | 0);\n     $275 = $264 << 1;\n     $276 = $labelInfo + 655376 + ($275 << 3) | 0;\n     HEAPF64[$276 >> 3] = +HEAPF64[$276 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($265 + 1 << 2) >> 2] | 0);\n     $284 = $labelInfo + 655376 + (($275 | 1) << 3) | 0;\n     HEAPF64[$284 >> 3] = +HEAPF64[$284 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($265 + 2 << 2) >> 2] | 0);\n     $287 = $264 << 2;\n     $288 = $labelInfo + 131084 + ($287 << 2) | 0;\n     $292 = HEAP32[$labelInfo + 1310736 + ($265 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$288 >> 2] | 0) > ($292 | 0)) HEAP32[$288 >> 2] = $292;\n     $295 = $labelInfo + 131084 + (($287 | 1) << 2) | 0;\n     $299 = HEAP32[$labelInfo + 1310736 + ($265 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$295 >> 2] | 0) < ($299 | 0)) HEAP32[$295 >> 2] = $299;\n     $302 = $labelInfo + 131084 + (($287 | 2) << 2) | 0;\n     $306 = HEAP32[$labelInfo + 1310736 + ($265 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$302 >> 2] | 0) > ($306 | 0)) HEAP32[$302 >> 2] = $306;\n     $309 = $labelInfo + 131084 + (($287 | 3) << 2) | 0;\n     $313 = HEAP32[$labelInfo + 1310736 + ($265 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$309 >> 2] | 0) < ($313 | 0)) HEAP32[$309 >> 2] = $313;\n     $i$533 = $i$533 + 1 | 0;\n    } while (($i$533 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$242 >> 2] | 0) > 0) {\n    $i$632 = 0;\n    do {\n     $317 = $labelInfo + 12 + ($i$632 << 2) | 0;\n     $320 = $i$632 << 1;\n     $321 = $labelInfo + 655376 + ($320 << 3) | 0;\n     HEAPF64[$321 >> 3] = +HEAPF64[$321 >> 3] / +(HEAP32[$317 >> 2] | 0);\n     $327 = $labelInfo + 655376 + (($320 | 1) << 3) | 0;\n     HEAPF64[$327 >> 3] = +HEAPF64[$327 >> 3] / +(HEAP32[$317 >> 2] | 0);\n     $i$632 = $i$632 + 1 | 0;\n    } while (($i$632 | 0) < (HEAP32[$242 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubDBRA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $104 = 0, $109 = 0, $112 = 0, $129 = 0, $131 = 0, $133 = 0, $137 = 0, $141 = 0, $144 = 0, $146 = 0, $150 = 0, $154 = 0, $158 = 0, $163 = 0, $165 = 0, $169 = 0, $17 = 0, $173 = 0, $177 = 0, $18 = 0, $183 = 0, $186 = 0, $188 = 0, $19 = 0, $192 = 0, $196 = 0, $200 = 0, $203 = 0, $208 = 0, $223 = 0, $224 = 0, $230 = 0, $232 = 0, $238 = 0, $24 = 0, $242 = 0, $243 = 0, $250 = 0, $264 = 0, $265 = 0, $268 = 0, $275 = 0, $276 = 0, $284 = 0, $287 = 0, $288 = 0, $292 = 0, $295 = 0, $299 = 0, $302 = 0, $306 = 0, $309 = 0, $313 = 0, $317 = 0, $320 = 0, $321 = 0, $327 = 0, $38 = 0, $41 = 0, $43 = 0, $47 = 0, $51 = 0, $57 = 0, $58 = 0, $61 = 0, $62 = 0, $63 = 0, $66 = 0, $69 = 0, $86 = 0, $88 = 0, $9 = 0, $90 = 0, $94 = 0, $98 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$081 = 0;\n  $pnt1$083 = $0;\n  $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$082 >> 1] = 0;\n   HEAP16[$pnt1$083 >> 1] = 0;\n   $i$081 = $i$081 + 1 | 0;\n   if (($i$081 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$083 = $pnt1$083 + 2 | 0;\n    $pnt2$082 = $pnt2$082 + 2 | 0;\n   }\n  }\n }\n $9 = $labelingThresh * 3 | 0;\n $10 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$175 = 0;\n  $pnt1$177 = $0;\n  $pnt2$176 = $0 + ($10 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$176 >> 1] = 0;\n   HEAP16[$pnt1$177 >> 1] = 0;\n   $i$175 = $i$175 + 1 | 0;\n   if (($i$175 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0;\n    $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0;\n   }\n  }\n }\n $17 = $labelInfo + 1179664 | 0;\n $18 = $xsize + 1 | 0;\n $19 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $24 = ($10 | 0) > 1;\n  $j$068 = 1;\n  $pnt$072 = $image + ($18 << 2) | 0;\n  $pnt2$271 = $0 + ($18 << 1) | 0;\n  $wk_max$070 = 0;\n  L13 : while (1) {\n   if ($24) {\n    $i$255 = 1;\n    $pnt$163 = $pnt$072;\n    $pnt2$362 = $pnt2$271;\n    $wk_max$157 = $wk_max$070;\n    while (1) {\n     do if (((HEAPU8[$pnt$163 + 2 >> 0] | 0) + (HEAPU8[$pnt$163 + 1 >> 0] | 0) + (HEAPU8[$pnt$163 + 3 >> 0] | 0) | 0) > ($9 | 0)) {\n      HEAP16[$pnt2$362 >> 1] = 0;\n      $wk_max$2 = $wk_max$157;\n     } else {\n      $38 = HEAP16[$pnt2$362 + ($19 << 1) >> 1] | 0;\n      if ($38 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$362 >> 1] = $38;\n       $41 = ($38 << 16 >> 16) * 7 | 0;\n       $43 = $labelInfo + 1310736 + ($41 + -7 << 2) | 0;\n       HEAP32[$43 >> 2] = (HEAP32[$43 >> 2] | 0) + 1;\n       $47 = $labelInfo + 1310736 + ($41 + -6 << 2) | 0;\n       HEAP32[$47 >> 2] = (HEAP32[$47 >> 2] | 0) + $i$255;\n       $51 = $labelInfo + 1310736 + ($41 + -5 << 2) | 0;\n       HEAP32[$51 >> 2] = (HEAP32[$51 >> 2] | 0) + $j$068;\n       HEAP32[$labelInfo + 1310736 + ($41 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $57 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0;\n      $58 = $57 << 16 >> 16;\n      $61 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0;\n      $62 = $61 << 16 >> 16;\n      $63 = $61 << 16 >> 16 > 0;\n      if ($57 << 16 >> 16 <= 0) {\n       if ($63) {\n        HEAP16[$pnt2$362 >> 1] = $61;\n        $163 = $62 * 7 | 0;\n        $165 = $labelInfo + 1310736 + ($163 + -7 << 2) | 0;\n        HEAP32[$165 >> 2] = (HEAP32[$165 >> 2] | 0) + 1;\n        $169 = $labelInfo + 1310736 + ($163 + -6 << 2) | 0;\n        HEAP32[$169 >> 2] = (HEAP32[$169 >> 2] | 0) + $i$255;\n        $173 = $labelInfo + 1310736 + ($163 + -5 << 2) | 0;\n        HEAP32[$173 >> 2] = (HEAP32[$173 >> 2] | 0) + $j$068;\n        $177 = $labelInfo + 1310736 + ($163 + -3 << 2) | 0;\n        if ((HEAP32[$177 >> 2] | 0) < ($i$255 | 0)) HEAP32[$177 >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($163 + -1 << 2) >> 2] = $j$068;\n        $wk_max$2 = $wk_max$157;\n        break;\n       }\n       $183 = HEAP16[$pnt2$362 + -2 >> 1] | 0;\n       if ($183 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$362 >> 1] = $183;\n        $186 = ($183 << 16 >> 16) * 7 | 0;\n        $188 = $labelInfo + 1310736 + ($186 + -7 << 2) | 0;\n        HEAP32[$188 >> 2] = (HEAP32[$188 >> 2] | 0) + 1;\n        $192 = $labelInfo + 1310736 + ($186 + -6 << 2) | 0;\n        HEAP32[$192 >> 2] = (HEAP32[$192 >> 2] | 0) + $i$255;\n        $196 = $labelInfo + 1310736 + ($186 + -5 << 2) | 0;\n        HEAP32[$196 >> 2] = (HEAP32[$196 >> 2] | 0) + $j$068;\n        $200 = $labelInfo + 1310736 + ($186 + -3 << 2) | 0;\n        if ((HEAP32[$200 >> 2] | 0) >= ($i$255 | 0)) {\n         $wk_max$2 = $wk_max$157;\n         break;\n        }\n        HEAP32[$200 >> 2] = $i$255;\n        $wk_max$2 = $wk_max$157;\n        break;\n       } else {\n        $203 = $wk_max$157 + 1 | 0;\n        if (($wk_max$157 | 0) > 32767) break L13;\n        HEAP16[$pnt2$362 >> 1] = $203;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $203 << 16 >> 16;\n        $208 = $wk_max$157 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($208 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($208 + 1 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($208 + 2 << 2) >> 2] = $j$068;\n        HEAP32[$labelInfo + 1310736 + ($208 + 3 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($208 + 4 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($208 + 5 << 2) >> 2] = $j$068;\n        HEAP32[$labelInfo + 1310736 + ($208 + 6 << 2) >> 2] = $j$068;\n        $wk_max$2 = $203;\n        break;\n       }\n      }\n      if ($63) {\n       $66 = HEAP32[$labelInfo + 1179664 + ($58 + -1 << 2) >> 2] | 0;\n       $69 = HEAP32[$labelInfo + 1179664 + ($62 + -1 << 2) >> 2] | 0;\n       if (($66 | 0) > ($69 | 0)) {\n        HEAP16[$pnt2$362 >> 1] = $69;\n        if (($wk_max$157 | 0) > 0) {\n         $k$051 = 0;\n         $wk$052 = $17;\n         while (1) {\n          if ((HEAP32[$wk$052 >> 2] | 0) == ($66 | 0)) HEAP32[$wk$052 >> 2] = $69;\n          $k$051 = $k$051 + 1 | 0;\n          if (($k$051 | 0) >= ($wk_max$157 | 0)) {\n           $86 = $69;\n           break;\n          } else $wk$052 = $wk$052 + 4 | 0;\n         }\n        } else $86 = $69;\n       } else {\n        HEAP16[$pnt2$362 >> 1] = $66;\n        if (($66 | 0) < ($69 | 0) & ($wk_max$157 | 0) > 0) {\n         $k$148 = 0;\n         $wk$149 = $17;\n         while (1) {\n          if ((HEAP32[$wk$149 >> 2] | 0) == ($69 | 0)) HEAP32[$wk$149 >> 2] = $66;\n          $k$148 = $k$148 + 1 | 0;\n          if (($k$148 | 0) >= ($wk_max$157 | 0)) {\n           $86 = $66;\n           break;\n          } else $wk$149 = $wk$149 + 4 | 0;\n         }\n        } else $86 = $66;\n       }\n       $88 = ($86 << 16 >> 16) * 7 | 0;\n       $90 = $labelInfo + 1310736 + ($88 + -7 << 2) | 0;\n       HEAP32[$90 >> 2] = (HEAP32[$90 >> 2] | 0) + 1;\n       $94 = $labelInfo + 1310736 + ($88 + -6 << 2) | 0;\n       HEAP32[$94 >> 2] = (HEAP32[$94 >> 2] | 0) + $i$255;\n       $98 = $labelInfo + 1310736 + ($88 + -5 << 2) | 0;\n       HEAP32[$98 >> 2] = (HEAP32[$98 >> 2] | 0) + $j$068;\n       HEAP32[$labelInfo + 1310736 + ($88 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $104 = HEAP16[$pnt2$362 + -2 >> 1] | 0;\n      if ($104 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$362 >> 1] = $57;\n       $144 = $58 * 7 | 0;\n       $146 = $labelInfo + 1310736 + ($144 + -7 << 2) | 0;\n       HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + 1;\n       $150 = $labelInfo + 1310736 + ($144 + -6 << 2) | 0;\n       HEAP32[$150 >> 2] = (HEAP32[$150 >> 2] | 0) + $i$255;\n       $154 = $labelInfo + 1310736 + ($144 + -5 << 2) | 0;\n       HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + $j$068;\n       $158 = $labelInfo + 1310736 + ($144 + -4 << 2) | 0;\n       if ((HEAP32[$158 >> 2] | 0) > ($i$255 | 0)) HEAP32[$158 >> 2] = $i$255;\n       HEAP32[$labelInfo + 1310736 + ($144 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $109 = HEAP32[$labelInfo + 1179664 + ($58 + -1 << 2) >> 2] | 0;\n      $112 = HEAP32[$labelInfo + 1179664 + (($104 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($109 | 0) > ($112 | 0)) {\n       HEAP16[$pnt2$362 >> 1] = $112;\n       if (($wk_max$157 | 0) > 0) {\n        $k$244 = 0;\n        $wk$245 = $17;\n        while (1) {\n         if ((HEAP32[$wk$245 >> 2] | 0) == ($109 | 0)) HEAP32[$wk$245 >> 2] = $112;\n         $k$244 = $k$244 + 1 | 0;\n         if (($k$244 | 0) >= ($wk_max$157 | 0)) {\n          $129 = $112;\n          break;\n         } else $wk$245 = $wk$245 + 4 | 0;\n        }\n       } else $129 = $112;\n      } else {\n       HEAP16[$pnt2$362 >> 1] = $109;\n       if (($109 | 0) < ($112 | 0) & ($wk_max$157 | 0) > 0) {\n        $k$341 = 0;\n        $wk$342 = $17;\n        while (1) {\n         if ((HEAP32[$wk$342 >> 2] | 0) == ($112 | 0)) HEAP32[$wk$342 >> 2] = $109;\n         $k$341 = $k$341 + 1 | 0;\n         if (($k$341 | 0) >= ($wk_max$157 | 0)) {\n          $129 = $109;\n          break;\n         } else $wk$342 = $wk$342 + 4 | 0;\n        }\n       } else $129 = $109;\n      }\n      $131 = ($129 << 16 >> 16) * 7 | 0;\n      $133 = $labelInfo + 1310736 + ($131 + -7 << 2) | 0;\n      HEAP32[$133 >> 2] = (HEAP32[$133 >> 2] | 0) + 1;\n      $137 = $labelInfo + 1310736 + ($131 + -6 << 2) | 0;\n      HEAP32[$137 >> 2] = (HEAP32[$137 >> 2] | 0) + $i$255;\n      $141 = $labelInfo + 1310736 + ($131 + -5 << 2) | 0;\n      HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + $j$068;\n      $wk_max$2 = $wk_max$157;\n     } while (0);\n     $i$255 = $i$255 + 1 | 0;\n     $223 = $pnt$163 + 4 | 0;\n     $224 = $pnt2$362 + 2 | 0;\n     if (($i$255 | 0) >= ($10 | 0)) {\n      $pnt$1$lcssa = $223;\n      $pnt2$3$lcssa = $224;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $pnt$163 = $223;\n      $pnt2$362 = $224;\n      $wk_max$157 = $wk_max$2;\n     }\n    }\n   } else {\n    $pnt$1$lcssa = $pnt$072;\n    $pnt2$3$lcssa = $pnt2$271;\n    $wk_max$1$lcssa = $wk_max$070;\n   }\n   $j$068 = $j$068 + 1 | 0;\n   if (($j$068 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $pnt$072 = $pnt$1$lcssa + 8 | 0;\n    $pnt2$271 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$070 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $230 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$337 = 1;\n   $j$138 = 1;\n   $wk$439 = $17;\n   while (1) {\n    $232 = HEAP32[$wk$439 >> 2] | 0;\n    if (($232 | 0) == ($i$337 | 0)) {\n     $238 = $j$138;\n     $j$2 = $j$138 + 1 | 0;\n    } else {\n     $238 = HEAP32[$labelInfo + 1179664 + ($232 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$138;\n    }\n    HEAP32[$wk$439 >> 2] = $238;\n    if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$337 = $i$337 + 1 | 0;\n     $j$138 = $j$2;\n     $wk$439 = $wk$439 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $242 = $labelInfo + 8 | 0;\n  $243 = $j$1$lcssa + -1 | 0;\n  HEAP32[$242 >> 2] = $243;\n  if (!$243) $$0 = 0; else {\n   _memset($230 | 0, 0, $243 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $243 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$435 = 0;\n    do {\n     $250 = $i$435 << 2;\n     HEAP32[$labelInfo + 131084 + ($250 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($250 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($250 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($250 | 3) << 2) >> 2] = 0;\n     $i$435 = $i$435 + 1 | 0;\n    } while (($i$435 | 0) < (HEAP32[$242 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$533 = 0;\n    do {\n     $264 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0;\n     $265 = $i$533 * 7 | 0;\n     $268 = $labelInfo + 12 + ($264 << 2) | 0;\n     HEAP32[$268 >> 2] = (HEAP32[$268 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($265 << 2) >> 2] | 0);\n     $275 = $264 << 1;\n     $276 = $labelInfo + 655376 + ($275 << 3) | 0;\n     HEAPF64[$276 >> 3] = +HEAPF64[$276 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($265 + 1 << 2) >> 2] | 0);\n     $284 = $labelInfo + 655376 + (($275 | 1) << 3) | 0;\n     HEAPF64[$284 >> 3] = +HEAPF64[$284 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($265 + 2 << 2) >> 2] | 0);\n     $287 = $264 << 2;\n     $288 = $labelInfo + 131084 + ($287 << 2) | 0;\n     $292 = HEAP32[$labelInfo + 1310736 + ($265 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$288 >> 2] | 0) > ($292 | 0)) HEAP32[$288 >> 2] = $292;\n     $295 = $labelInfo + 131084 + (($287 | 1) << 2) | 0;\n     $299 = HEAP32[$labelInfo + 1310736 + ($265 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$295 >> 2] | 0) < ($299 | 0)) HEAP32[$295 >> 2] = $299;\n     $302 = $labelInfo + 131084 + (($287 | 2) << 2) | 0;\n     $306 = HEAP32[$labelInfo + 1310736 + ($265 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$302 >> 2] | 0) > ($306 | 0)) HEAP32[$302 >> 2] = $306;\n     $309 = $labelInfo + 131084 + (($287 | 3) << 2) | 0;\n     $313 = HEAP32[$labelInfo + 1310736 + ($265 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$309 >> 2] | 0) < ($313 | 0)) HEAP32[$309 >> 2] = $313;\n     $i$533 = $i$533 + 1 | 0;\n    } while (($i$533 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$242 >> 2] | 0) > 0) {\n    $i$632 = 0;\n    do {\n     $317 = $labelInfo + 12 + ($i$632 << 2) | 0;\n     $320 = $i$632 << 1;\n     $321 = $labelInfo + 655376 + ($320 << 3) | 0;\n     HEAPF64[$321 >> 3] = +HEAPF64[$321 >> 3] / +(HEAP32[$317 >> 2] | 0);\n     $327 = $labelInfo + 655376 + (($320 | 1) << 3) | 0;\n     HEAPF64[$327 >> 3] = +HEAPF64[$327 >> 3] / +(HEAP32[$317 >> 2] | 0);\n     $i$632 = $i$632 + 1 | 0;\n    } while (($i$632 | 0) < (HEAP32[$242 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubDWR3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $103 = 0, $108 = 0, $111 = 0, $128 = 0, $130 = 0, $132 = 0, $136 = 0, $140 = 0, $143 = 0, $145 = 0, $149 = 0, $153 = 0, $157 = 0, $162 = 0, $164 = 0, $168 = 0, $17 = 0, $172 = 0, $176 = 0, $18 = 0, $182 = 0, $185 = 0, $187 = 0, $19 = 0, $191 = 0, $195 = 0, $199 = 0, $202 = 0, $207 = 0, $222 = 0, $223 = 0, $229 = 0, $231 = 0, $237 = 0, $24 = 0, $241 = 0, $242 = 0, $249 = 0, $263 = 0, $264 = 0, $267 = 0, $274 = 0, $275 = 0, $283 = 0, $286 = 0, $287 = 0, $291 = 0, $294 = 0, $298 = 0, $301 = 0, $305 = 0, $308 = 0, $312 = 0, $316 = 0, $319 = 0, $320 = 0, $326 = 0, $37 = 0, $40 = 0, $42 = 0, $46 = 0, $50 = 0, $56 = 0, $57 = 0, $60 = 0, $61 = 0, $62 = 0, $65 = 0, $68 = 0, $85 = 0, $87 = 0, $89 = 0, $9 = 0, $93 = 0, $97 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$081 = 0;\n  $pnt1$083 = $0;\n  $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$082 >> 1] = 0;\n   HEAP16[$pnt1$083 >> 1] = 0;\n   $i$081 = $i$081 + 1 | 0;\n   if (($i$081 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$083 = $pnt1$083 + 2 | 0;\n    $pnt2$082 = $pnt2$082 + 2 | 0;\n   }\n  }\n }\n $9 = $labelingThresh * 3 | 0;\n $10 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$175 = 0;\n  $pnt1$177 = $0;\n  $pnt2$176 = $0 + ($10 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$176 >> 1] = 0;\n   HEAP16[$pnt1$177 >> 1] = 0;\n   $i$175 = $i$175 + 1 | 0;\n   if (($i$175 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0;\n    $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0;\n   }\n  }\n }\n $17 = $labelInfo + 1179664 | 0;\n $18 = $xsize + 1 | 0;\n $19 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $24 = ($10 | 0) > 1;\n  $j$068 = 1;\n  $pnt$072 = $image + ($18 * 3 | 0) | 0;\n  $pnt2$271 = $0 + ($18 << 1) | 0;\n  $wk_max$070 = 0;\n  L13 : while (1) {\n   if ($24) {\n    $i$255 = 1;\n    $pnt$163 = $pnt$072;\n    $pnt2$362 = $pnt2$271;\n    $wk_max$157 = $wk_max$070;\n    while (1) {\n     do if (((HEAPU8[$pnt$163 + 1 >> 0] | 0) + (HEAPU8[$pnt$163 >> 0] | 0) + (HEAPU8[$pnt$163 + 2 >> 0] | 0) | 0) > ($9 | 0)) {\n      $37 = HEAP16[$pnt2$362 + ($19 << 1) >> 1] | 0;\n      if ($37 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$362 >> 1] = $37;\n       $40 = ($37 << 16 >> 16) * 7 | 0;\n       $42 = $labelInfo + 1310736 + ($40 + -7 << 2) | 0;\n       HEAP32[$42 >> 2] = (HEAP32[$42 >> 2] | 0) + 1;\n       $46 = $labelInfo + 1310736 + ($40 + -6 << 2) | 0;\n       HEAP32[$46 >> 2] = (HEAP32[$46 >> 2] | 0) + $i$255;\n       $50 = $labelInfo + 1310736 + ($40 + -5 << 2) | 0;\n       HEAP32[$50 >> 2] = (HEAP32[$50 >> 2] | 0) + $j$068;\n       HEAP32[$labelInfo + 1310736 + ($40 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $56 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0;\n      $57 = $56 << 16 >> 16;\n      $60 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0;\n      $61 = $60 << 16 >> 16;\n      $62 = $60 << 16 >> 16 > 0;\n      if ($56 << 16 >> 16 <= 0) {\n       if ($62) {\n        HEAP16[$pnt2$362 >> 1] = $60;\n        $162 = $61 * 7 | 0;\n        $164 = $labelInfo + 1310736 + ($162 + -7 << 2) | 0;\n        HEAP32[$164 >> 2] = (HEAP32[$164 >> 2] | 0) + 1;\n        $168 = $labelInfo + 1310736 + ($162 + -6 << 2) | 0;\n        HEAP32[$168 >> 2] = (HEAP32[$168 >> 2] | 0) + $i$255;\n        $172 = $labelInfo + 1310736 + ($162 + -5 << 2) | 0;\n        HEAP32[$172 >> 2] = (HEAP32[$172 >> 2] | 0) + $j$068;\n        $176 = $labelInfo + 1310736 + ($162 + -3 << 2) | 0;\n        if ((HEAP32[$176 >> 2] | 0) < ($i$255 | 0)) HEAP32[$176 >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($162 + -1 << 2) >> 2] = $j$068;\n        $wk_max$2 = $wk_max$157;\n        break;\n       }\n       $182 = HEAP16[$pnt2$362 + -2 >> 1] | 0;\n       if ($182 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$362 >> 1] = $182;\n        $185 = ($182 << 16 >> 16) * 7 | 0;\n        $187 = $labelInfo + 1310736 + ($185 + -7 << 2) | 0;\n        HEAP32[$187 >> 2] = (HEAP32[$187 >> 2] | 0) + 1;\n        $191 = $labelInfo + 1310736 + ($185 + -6 << 2) | 0;\n        HEAP32[$191 >> 2] = (HEAP32[$191 >> 2] | 0) + $i$255;\n        $195 = $labelInfo + 1310736 + ($185 + -5 << 2) | 0;\n        HEAP32[$195 >> 2] = (HEAP32[$195 >> 2] | 0) + $j$068;\n        $199 = $labelInfo + 1310736 + ($185 + -3 << 2) | 0;\n        if ((HEAP32[$199 >> 2] | 0) >= ($i$255 | 0)) {\n         $wk_max$2 = $wk_max$157;\n         break;\n        }\n        HEAP32[$199 >> 2] = $i$255;\n        $wk_max$2 = $wk_max$157;\n        break;\n       } else {\n        $202 = $wk_max$157 + 1 | 0;\n        if (($wk_max$157 | 0) > 32767) break L13;\n        HEAP16[$pnt2$362 >> 1] = $202;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $202 << 16 >> 16;\n        $207 = $wk_max$157 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($207 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($207 + 1 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($207 + 2 << 2) >> 2] = $j$068;\n        HEAP32[$labelInfo + 1310736 + ($207 + 3 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($207 + 4 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($207 + 5 << 2) >> 2] = $j$068;\n        HEAP32[$labelInfo + 1310736 + ($207 + 6 << 2) >> 2] = $j$068;\n        $wk_max$2 = $202;\n        break;\n       }\n      }\n      if ($62) {\n       $65 = HEAP32[$labelInfo + 1179664 + ($57 + -1 << 2) >> 2] | 0;\n       $68 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0;\n       if (($65 | 0) > ($68 | 0)) {\n        HEAP16[$pnt2$362 >> 1] = $68;\n        if (($wk_max$157 | 0) > 0) {\n         $k$051 = 0;\n         $wk$052 = $17;\n         while (1) {\n          if ((HEAP32[$wk$052 >> 2] | 0) == ($65 | 0)) HEAP32[$wk$052 >> 2] = $68;\n          $k$051 = $k$051 + 1 | 0;\n          if (($k$051 | 0) >= ($wk_max$157 | 0)) {\n           $85 = $68;\n           break;\n          } else $wk$052 = $wk$052 + 4 | 0;\n         }\n        } else $85 = $68;\n       } else {\n        HEAP16[$pnt2$362 >> 1] = $65;\n        if (($65 | 0) < ($68 | 0) & ($wk_max$157 | 0) > 0) {\n         $k$148 = 0;\n         $wk$149 = $17;\n         while (1) {\n          if ((HEAP32[$wk$149 >> 2] | 0) == ($68 | 0)) HEAP32[$wk$149 >> 2] = $65;\n          $k$148 = $k$148 + 1 | 0;\n          if (($k$148 | 0) >= ($wk_max$157 | 0)) {\n           $85 = $65;\n           break;\n          } else $wk$149 = $wk$149 + 4 | 0;\n         }\n        } else $85 = $65;\n       }\n       $87 = ($85 << 16 >> 16) * 7 | 0;\n       $89 = $labelInfo + 1310736 + ($87 + -7 << 2) | 0;\n       HEAP32[$89 >> 2] = (HEAP32[$89 >> 2] | 0) + 1;\n       $93 = $labelInfo + 1310736 + ($87 + -6 << 2) | 0;\n       HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + $i$255;\n       $97 = $labelInfo + 1310736 + ($87 + -5 << 2) | 0;\n       HEAP32[$97 >> 2] = (HEAP32[$97 >> 2] | 0) + $j$068;\n       HEAP32[$labelInfo + 1310736 + ($87 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $103 = HEAP16[$pnt2$362 + -2 >> 1] | 0;\n      if ($103 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$362 >> 1] = $56;\n       $143 = $57 * 7 | 0;\n       $145 = $labelInfo + 1310736 + ($143 + -7 << 2) | 0;\n       HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + 1;\n       $149 = $labelInfo + 1310736 + ($143 + -6 << 2) | 0;\n       HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $i$255;\n       $153 = $labelInfo + 1310736 + ($143 + -5 << 2) | 0;\n       HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $j$068;\n       $157 = $labelInfo + 1310736 + ($143 + -4 << 2) | 0;\n       if ((HEAP32[$157 >> 2] | 0) > ($i$255 | 0)) HEAP32[$157 >> 2] = $i$255;\n       HEAP32[$labelInfo + 1310736 + ($143 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $108 = HEAP32[$labelInfo + 1179664 + ($57 + -1 << 2) >> 2] | 0;\n      $111 = HEAP32[$labelInfo + 1179664 + (($103 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($108 | 0) > ($111 | 0)) {\n       HEAP16[$pnt2$362 >> 1] = $111;\n       if (($wk_max$157 | 0) > 0) {\n        $k$244 = 0;\n        $wk$245 = $17;\n        while (1) {\n         if ((HEAP32[$wk$245 >> 2] | 0) == ($108 | 0)) HEAP32[$wk$245 >> 2] = $111;\n         $k$244 = $k$244 + 1 | 0;\n         if (($k$244 | 0) >= ($wk_max$157 | 0)) {\n          $128 = $111;\n          break;\n         } else $wk$245 = $wk$245 + 4 | 0;\n        }\n       } else $128 = $111;\n      } else {\n       HEAP16[$pnt2$362 >> 1] = $108;\n       if (($108 | 0) < ($111 | 0) & ($wk_max$157 | 0) > 0) {\n        $k$341 = 0;\n        $wk$342 = $17;\n        while (1) {\n         if ((HEAP32[$wk$342 >> 2] | 0) == ($111 | 0)) HEAP32[$wk$342 >> 2] = $108;\n         $k$341 = $k$341 + 1 | 0;\n         if (($k$341 | 0) >= ($wk_max$157 | 0)) {\n          $128 = $108;\n          break;\n         } else $wk$342 = $wk$342 + 4 | 0;\n        }\n       } else $128 = $108;\n      }\n      $130 = ($128 << 16 >> 16) * 7 | 0;\n      $132 = $labelInfo + 1310736 + ($130 + -7 << 2) | 0;\n      HEAP32[$132 >> 2] = (HEAP32[$132 >> 2] | 0) + 1;\n      $136 = $labelInfo + 1310736 + ($130 + -6 << 2) | 0;\n      HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + $i$255;\n      $140 = $labelInfo + 1310736 + ($130 + -5 << 2) | 0;\n      HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $j$068;\n      $wk_max$2 = $wk_max$157;\n     } else {\n      HEAP16[$pnt2$362 >> 1] = 0;\n      $wk_max$2 = $wk_max$157;\n     } while (0);\n     $i$255 = $i$255 + 1 | 0;\n     $222 = $pnt$163 + 3 | 0;\n     $223 = $pnt2$362 + 2 | 0;\n     if (($i$255 | 0) >= ($10 | 0)) {\n      $pnt$1$lcssa = $222;\n      $pnt2$3$lcssa = $223;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $pnt$163 = $222;\n      $pnt2$362 = $223;\n      $wk_max$157 = $wk_max$2;\n     }\n    }\n   } else {\n    $pnt$1$lcssa = $pnt$072;\n    $pnt2$3$lcssa = $pnt2$271;\n    $wk_max$1$lcssa = $wk_max$070;\n   }\n   $j$068 = $j$068 + 1 | 0;\n   if (($j$068 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $pnt$072 = $pnt$1$lcssa + 6 | 0;\n    $pnt2$271 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$070 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $229 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$337 = 1;\n   $j$138 = 1;\n   $wk$439 = $17;\n   while (1) {\n    $231 = HEAP32[$wk$439 >> 2] | 0;\n    if (($231 | 0) == ($i$337 | 0)) {\n     $237 = $j$138;\n     $j$2 = $j$138 + 1 | 0;\n    } else {\n     $237 = HEAP32[$labelInfo + 1179664 + ($231 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$138;\n    }\n    HEAP32[$wk$439 >> 2] = $237;\n    if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$337 = $i$337 + 1 | 0;\n     $j$138 = $j$2;\n     $wk$439 = $wk$439 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $241 = $labelInfo + 8 | 0;\n  $242 = $j$1$lcssa + -1 | 0;\n  HEAP32[$241 >> 2] = $242;\n  if (!$242) $$0 = 0; else {\n   _memset($229 | 0, 0, $242 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $242 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$435 = 0;\n    do {\n     $249 = $i$435 << 2;\n     HEAP32[$labelInfo + 131084 + ($249 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($249 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($249 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($249 | 3) << 2) >> 2] = 0;\n     $i$435 = $i$435 + 1 | 0;\n    } while (($i$435 | 0) < (HEAP32[$241 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$533 = 0;\n    do {\n     $263 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0;\n     $264 = $i$533 * 7 | 0;\n     $267 = $labelInfo + 12 + ($263 << 2) | 0;\n     HEAP32[$267 >> 2] = (HEAP32[$267 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($264 << 2) >> 2] | 0);\n     $274 = $263 << 1;\n     $275 = $labelInfo + 655376 + ($274 << 3) | 0;\n     HEAPF64[$275 >> 3] = +HEAPF64[$275 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($264 + 1 << 2) >> 2] | 0);\n     $283 = $labelInfo + 655376 + (($274 | 1) << 3) | 0;\n     HEAPF64[$283 >> 3] = +HEAPF64[$283 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($264 + 2 << 2) >> 2] | 0);\n     $286 = $263 << 2;\n     $287 = $labelInfo + 131084 + ($286 << 2) | 0;\n     $291 = HEAP32[$labelInfo + 1310736 + ($264 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$287 >> 2] | 0) > ($291 | 0)) HEAP32[$287 >> 2] = $291;\n     $294 = $labelInfo + 131084 + (($286 | 1) << 2) | 0;\n     $298 = HEAP32[$labelInfo + 1310736 + ($264 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$294 >> 2] | 0) < ($298 | 0)) HEAP32[$294 >> 2] = $298;\n     $301 = $labelInfo + 131084 + (($286 | 2) << 2) | 0;\n     $305 = HEAP32[$labelInfo + 1310736 + ($264 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$301 >> 2] | 0) > ($305 | 0)) HEAP32[$301 >> 2] = $305;\n     $308 = $labelInfo + 131084 + (($286 | 3) << 2) | 0;\n     $312 = HEAP32[$labelInfo + 1310736 + ($264 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$308 >> 2] | 0) < ($312 | 0)) HEAP32[$308 >> 2] = $312;\n     $i$533 = $i$533 + 1 | 0;\n    } while (($i$533 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$241 >> 2] | 0) > 0) {\n    $i$632 = 0;\n    do {\n     $316 = $labelInfo + 12 + ($i$632 << 2) | 0;\n     $319 = $i$632 << 1;\n     $320 = $labelInfo + 655376 + ($319 << 3) | 0;\n     HEAPF64[$320 >> 3] = +HEAPF64[$320 >> 3] / +(HEAP32[$316 >> 2] | 0);\n     $326 = $labelInfo + 655376 + (($319 | 1) << 3) | 0;\n     HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$316 >> 2] | 0);\n     $i$632 = $i$632 + 1 | 0;\n    } while (($i$632 | 0) < (HEAP32[$241 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubDBR3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $103 = 0, $108 = 0, $111 = 0, $128 = 0, $130 = 0, $132 = 0, $136 = 0, $140 = 0, $143 = 0, $145 = 0, $149 = 0, $153 = 0, $157 = 0, $162 = 0, $164 = 0, $168 = 0, $17 = 0, $172 = 0, $176 = 0, $18 = 0, $182 = 0, $185 = 0, $187 = 0, $19 = 0, $191 = 0, $195 = 0, $199 = 0, $202 = 0, $207 = 0, $222 = 0, $223 = 0, $229 = 0, $231 = 0, $237 = 0, $24 = 0, $241 = 0, $242 = 0, $249 = 0, $263 = 0, $264 = 0, $267 = 0, $274 = 0, $275 = 0, $283 = 0, $286 = 0, $287 = 0, $291 = 0, $294 = 0, $298 = 0, $301 = 0, $305 = 0, $308 = 0, $312 = 0, $316 = 0, $319 = 0, $320 = 0, $326 = 0, $37 = 0, $40 = 0, $42 = 0, $46 = 0, $50 = 0, $56 = 0, $57 = 0, $60 = 0, $61 = 0, $62 = 0, $65 = 0, $68 = 0, $85 = 0, $87 = 0, $89 = 0, $9 = 0, $93 = 0, $97 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$081 = 0;\n  $pnt1$083 = $0;\n  $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$082 >> 1] = 0;\n   HEAP16[$pnt1$083 >> 1] = 0;\n   $i$081 = $i$081 + 1 | 0;\n   if (($i$081 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$083 = $pnt1$083 + 2 | 0;\n    $pnt2$082 = $pnt2$082 + 2 | 0;\n   }\n  }\n }\n $9 = $labelingThresh * 3 | 0;\n $10 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$175 = 0;\n  $pnt1$177 = $0;\n  $pnt2$176 = $0 + ($10 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$176 >> 1] = 0;\n   HEAP16[$pnt1$177 >> 1] = 0;\n   $i$175 = $i$175 + 1 | 0;\n   if (($i$175 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0;\n    $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0;\n   }\n  }\n }\n $17 = $labelInfo + 1179664 | 0;\n $18 = $xsize + 1 | 0;\n $19 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $24 = ($10 | 0) > 1;\n  $j$068 = 1;\n  $pnt$072 = $image + ($18 * 3 | 0) | 0;\n  $pnt2$271 = $0 + ($18 << 1) | 0;\n  $wk_max$070 = 0;\n  L13 : while (1) {\n   if ($24) {\n    $i$255 = 1;\n    $pnt$163 = $pnt$072;\n    $pnt2$362 = $pnt2$271;\n    $wk_max$157 = $wk_max$070;\n    while (1) {\n     do if (((HEAPU8[$pnt$163 + 1 >> 0] | 0) + (HEAPU8[$pnt$163 >> 0] | 0) + (HEAPU8[$pnt$163 + 2 >> 0] | 0) | 0) > ($9 | 0)) {\n      HEAP16[$pnt2$362 >> 1] = 0;\n      $wk_max$2 = $wk_max$157;\n     } else {\n      $37 = HEAP16[$pnt2$362 + ($19 << 1) >> 1] | 0;\n      if ($37 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$362 >> 1] = $37;\n       $40 = ($37 << 16 >> 16) * 7 | 0;\n       $42 = $labelInfo + 1310736 + ($40 + -7 << 2) | 0;\n       HEAP32[$42 >> 2] = (HEAP32[$42 >> 2] | 0) + 1;\n       $46 = $labelInfo + 1310736 + ($40 + -6 << 2) | 0;\n       HEAP32[$46 >> 2] = (HEAP32[$46 >> 2] | 0) + $i$255;\n       $50 = $labelInfo + 1310736 + ($40 + -5 << 2) | 0;\n       HEAP32[$50 >> 2] = (HEAP32[$50 >> 2] | 0) + $j$068;\n       HEAP32[$labelInfo + 1310736 + ($40 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $56 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0;\n      $57 = $56 << 16 >> 16;\n      $60 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0;\n      $61 = $60 << 16 >> 16;\n      $62 = $60 << 16 >> 16 > 0;\n      if ($56 << 16 >> 16 <= 0) {\n       if ($62) {\n        HEAP16[$pnt2$362 >> 1] = $60;\n        $162 = $61 * 7 | 0;\n        $164 = $labelInfo + 1310736 + ($162 + -7 << 2) | 0;\n        HEAP32[$164 >> 2] = (HEAP32[$164 >> 2] | 0) + 1;\n        $168 = $labelInfo + 1310736 + ($162 + -6 << 2) | 0;\n        HEAP32[$168 >> 2] = (HEAP32[$168 >> 2] | 0) + $i$255;\n        $172 = $labelInfo + 1310736 + ($162 + -5 << 2) | 0;\n        HEAP32[$172 >> 2] = (HEAP32[$172 >> 2] | 0) + $j$068;\n        $176 = $labelInfo + 1310736 + ($162 + -3 << 2) | 0;\n        if ((HEAP32[$176 >> 2] | 0) < ($i$255 | 0)) HEAP32[$176 >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($162 + -1 << 2) >> 2] = $j$068;\n        $wk_max$2 = $wk_max$157;\n        break;\n       }\n       $182 = HEAP16[$pnt2$362 + -2 >> 1] | 0;\n       if ($182 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$362 >> 1] = $182;\n        $185 = ($182 << 16 >> 16) * 7 | 0;\n        $187 = $labelInfo + 1310736 + ($185 + -7 << 2) | 0;\n        HEAP32[$187 >> 2] = (HEAP32[$187 >> 2] | 0) + 1;\n        $191 = $labelInfo + 1310736 + ($185 + -6 << 2) | 0;\n        HEAP32[$191 >> 2] = (HEAP32[$191 >> 2] | 0) + $i$255;\n        $195 = $labelInfo + 1310736 + ($185 + -5 << 2) | 0;\n        HEAP32[$195 >> 2] = (HEAP32[$195 >> 2] | 0) + $j$068;\n        $199 = $labelInfo + 1310736 + ($185 + -3 << 2) | 0;\n        if ((HEAP32[$199 >> 2] | 0) >= ($i$255 | 0)) {\n         $wk_max$2 = $wk_max$157;\n         break;\n        }\n        HEAP32[$199 >> 2] = $i$255;\n        $wk_max$2 = $wk_max$157;\n        break;\n       } else {\n        $202 = $wk_max$157 + 1 | 0;\n        if (($wk_max$157 | 0) > 32767) break L13;\n        HEAP16[$pnt2$362 >> 1] = $202;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $202 << 16 >> 16;\n        $207 = $wk_max$157 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($207 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($207 + 1 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($207 + 2 << 2) >> 2] = $j$068;\n        HEAP32[$labelInfo + 1310736 + ($207 + 3 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($207 + 4 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($207 + 5 << 2) >> 2] = $j$068;\n        HEAP32[$labelInfo + 1310736 + ($207 + 6 << 2) >> 2] = $j$068;\n        $wk_max$2 = $202;\n        break;\n       }\n      }\n      if ($62) {\n       $65 = HEAP32[$labelInfo + 1179664 + ($57 + -1 << 2) >> 2] | 0;\n       $68 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0;\n       if (($65 | 0) > ($68 | 0)) {\n        HEAP16[$pnt2$362 >> 1] = $68;\n        if (($wk_max$157 | 0) > 0) {\n         $k$051 = 0;\n         $wk$052 = $17;\n         while (1) {\n          if ((HEAP32[$wk$052 >> 2] | 0) == ($65 | 0)) HEAP32[$wk$052 >> 2] = $68;\n          $k$051 = $k$051 + 1 | 0;\n          if (($k$051 | 0) >= ($wk_max$157 | 0)) {\n           $85 = $68;\n           break;\n          } else $wk$052 = $wk$052 + 4 | 0;\n         }\n        } else $85 = $68;\n       } else {\n        HEAP16[$pnt2$362 >> 1] = $65;\n        if (($65 | 0) < ($68 | 0) & ($wk_max$157 | 0) > 0) {\n         $k$148 = 0;\n         $wk$149 = $17;\n         while (1) {\n          if ((HEAP32[$wk$149 >> 2] | 0) == ($68 | 0)) HEAP32[$wk$149 >> 2] = $65;\n          $k$148 = $k$148 + 1 | 0;\n          if (($k$148 | 0) >= ($wk_max$157 | 0)) {\n           $85 = $65;\n           break;\n          } else $wk$149 = $wk$149 + 4 | 0;\n         }\n        } else $85 = $65;\n       }\n       $87 = ($85 << 16 >> 16) * 7 | 0;\n       $89 = $labelInfo + 1310736 + ($87 + -7 << 2) | 0;\n       HEAP32[$89 >> 2] = (HEAP32[$89 >> 2] | 0) + 1;\n       $93 = $labelInfo + 1310736 + ($87 + -6 << 2) | 0;\n       HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + $i$255;\n       $97 = $labelInfo + 1310736 + ($87 + -5 << 2) | 0;\n       HEAP32[$97 >> 2] = (HEAP32[$97 >> 2] | 0) + $j$068;\n       HEAP32[$labelInfo + 1310736 + ($87 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $103 = HEAP16[$pnt2$362 + -2 >> 1] | 0;\n      if ($103 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$362 >> 1] = $56;\n       $143 = $57 * 7 | 0;\n       $145 = $labelInfo + 1310736 + ($143 + -7 << 2) | 0;\n       HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + 1;\n       $149 = $labelInfo + 1310736 + ($143 + -6 << 2) | 0;\n       HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $i$255;\n       $153 = $labelInfo + 1310736 + ($143 + -5 << 2) | 0;\n       HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $j$068;\n       $157 = $labelInfo + 1310736 + ($143 + -4 << 2) | 0;\n       if ((HEAP32[$157 >> 2] | 0) > ($i$255 | 0)) HEAP32[$157 >> 2] = $i$255;\n       HEAP32[$labelInfo + 1310736 + ($143 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $108 = HEAP32[$labelInfo + 1179664 + ($57 + -1 << 2) >> 2] | 0;\n      $111 = HEAP32[$labelInfo + 1179664 + (($103 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($108 | 0) > ($111 | 0)) {\n       HEAP16[$pnt2$362 >> 1] = $111;\n       if (($wk_max$157 | 0) > 0) {\n        $k$244 = 0;\n        $wk$245 = $17;\n        while (1) {\n         if ((HEAP32[$wk$245 >> 2] | 0) == ($108 | 0)) HEAP32[$wk$245 >> 2] = $111;\n         $k$244 = $k$244 + 1 | 0;\n         if (($k$244 | 0) >= ($wk_max$157 | 0)) {\n          $128 = $111;\n          break;\n         } else $wk$245 = $wk$245 + 4 | 0;\n        }\n       } else $128 = $111;\n      } else {\n       HEAP16[$pnt2$362 >> 1] = $108;\n       if (($108 | 0) < ($111 | 0) & ($wk_max$157 | 0) > 0) {\n        $k$341 = 0;\n        $wk$342 = $17;\n        while (1) {\n         if ((HEAP32[$wk$342 >> 2] | 0) == ($111 | 0)) HEAP32[$wk$342 >> 2] = $108;\n         $k$341 = $k$341 + 1 | 0;\n         if (($k$341 | 0) >= ($wk_max$157 | 0)) {\n          $128 = $108;\n          break;\n         } else $wk$342 = $wk$342 + 4 | 0;\n        }\n       } else $128 = $108;\n      }\n      $130 = ($128 << 16 >> 16) * 7 | 0;\n      $132 = $labelInfo + 1310736 + ($130 + -7 << 2) | 0;\n      HEAP32[$132 >> 2] = (HEAP32[$132 >> 2] | 0) + 1;\n      $136 = $labelInfo + 1310736 + ($130 + -6 << 2) | 0;\n      HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + $i$255;\n      $140 = $labelInfo + 1310736 + ($130 + -5 << 2) | 0;\n      HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $j$068;\n      $wk_max$2 = $wk_max$157;\n     } while (0);\n     $i$255 = $i$255 + 1 | 0;\n     $222 = $pnt$163 + 3 | 0;\n     $223 = $pnt2$362 + 2 | 0;\n     if (($i$255 | 0) >= ($10 | 0)) {\n      $pnt$1$lcssa = $222;\n      $pnt2$3$lcssa = $223;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $pnt$163 = $222;\n      $pnt2$362 = $223;\n      $wk_max$157 = $wk_max$2;\n     }\n    }\n   } else {\n    $pnt$1$lcssa = $pnt$072;\n    $pnt2$3$lcssa = $pnt2$271;\n    $wk_max$1$lcssa = $wk_max$070;\n   }\n   $j$068 = $j$068 + 1 | 0;\n   if (($j$068 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $pnt$072 = $pnt$1$lcssa + 6 | 0;\n    $pnt2$271 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$070 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $229 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$337 = 1;\n   $j$138 = 1;\n   $wk$439 = $17;\n   while (1) {\n    $231 = HEAP32[$wk$439 >> 2] | 0;\n    if (($231 | 0) == ($i$337 | 0)) {\n     $237 = $j$138;\n     $j$2 = $j$138 + 1 | 0;\n    } else {\n     $237 = HEAP32[$labelInfo + 1179664 + ($231 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$138;\n    }\n    HEAP32[$wk$439 >> 2] = $237;\n    if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$337 = $i$337 + 1 | 0;\n     $j$138 = $j$2;\n     $wk$439 = $wk$439 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $241 = $labelInfo + 8 | 0;\n  $242 = $j$1$lcssa + -1 | 0;\n  HEAP32[$241 >> 2] = $242;\n  if (!$242) $$0 = 0; else {\n   _memset($229 | 0, 0, $242 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $242 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$435 = 0;\n    do {\n     $249 = $i$435 << 2;\n     HEAP32[$labelInfo + 131084 + ($249 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($249 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($249 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($249 | 3) << 2) >> 2] = 0;\n     $i$435 = $i$435 + 1 | 0;\n    } while (($i$435 | 0) < (HEAP32[$241 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$533 = 0;\n    do {\n     $263 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0;\n     $264 = $i$533 * 7 | 0;\n     $267 = $labelInfo + 12 + ($263 << 2) | 0;\n     HEAP32[$267 >> 2] = (HEAP32[$267 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($264 << 2) >> 2] | 0);\n     $274 = $263 << 1;\n     $275 = $labelInfo + 655376 + ($274 << 3) | 0;\n     HEAPF64[$275 >> 3] = +HEAPF64[$275 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($264 + 1 << 2) >> 2] | 0);\n     $283 = $labelInfo + 655376 + (($274 | 1) << 3) | 0;\n     HEAPF64[$283 >> 3] = +HEAPF64[$283 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($264 + 2 << 2) >> 2] | 0);\n     $286 = $263 << 2;\n     $287 = $labelInfo + 131084 + ($286 << 2) | 0;\n     $291 = HEAP32[$labelInfo + 1310736 + ($264 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$287 >> 2] | 0) > ($291 | 0)) HEAP32[$287 >> 2] = $291;\n     $294 = $labelInfo + 131084 + (($286 | 1) << 2) | 0;\n     $298 = HEAP32[$labelInfo + 1310736 + ($264 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$294 >> 2] | 0) < ($298 | 0)) HEAP32[$294 >> 2] = $298;\n     $301 = $labelInfo + 131084 + (($286 | 2) << 2) | 0;\n     $305 = HEAP32[$labelInfo + 1310736 + ($264 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$301 >> 2] | 0) > ($305 | 0)) HEAP32[$301 >> 2] = $305;\n     $308 = $labelInfo + 131084 + (($286 | 3) << 2) | 0;\n     $312 = HEAP32[$labelInfo + 1310736 + ($264 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$308 >> 2] | 0) < ($312 | 0)) HEAP32[$308 >> 2] = $312;\n     $i$533 = $i$533 + 1 | 0;\n    } while (($i$533 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$241 >> 2] | 0) > 0) {\n    $i$632 = 0;\n    do {\n     $316 = $labelInfo + 12 + ($i$632 << 2) | 0;\n     $319 = $i$632 << 1;\n     $320 = $labelInfo + 655376 + ($319 << 3) | 0;\n     HEAPF64[$320 >> 3] = +HEAPF64[$320 >> 3] / +(HEAP32[$316 >> 2] | 0);\n     $326 = $labelInfo + 655376 + (($319 | 1) << 3) | 0;\n     HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$316 >> 2] | 0);\n     $i$632 = $i$632 + 1 | 0;\n    } while (($i$632 | 0) < (HEAP32[$241 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubDWR3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $103 = 0, $108 = 0, $111 = 0, $128 = 0, $130 = 0, $132 = 0, $136 = 0, $140 = 0, $143 = 0, $145 = 0, $149 = 0, $153 = 0, $157 = 0, $162 = 0, $164 = 0, $168 = 0, $17 = 0, $172 = 0, $176 = 0, $18 = 0, $182 = 0, $185 = 0, $187 = 0, $19 = 0, $191 = 0, $195 = 0, $199 = 0, $202 = 0, $207 = 0, $222 = 0, $223 = 0, $229 = 0, $231 = 0, $237 = 0, $24 = 0, $241 = 0, $242 = 0, $249 = 0, $263 = 0, $264 = 0, $267 = 0, $274 = 0, $275 = 0, $283 = 0, $286 = 0, $287 = 0, $291 = 0, $294 = 0, $298 = 0, $301 = 0, $305 = 0, $308 = 0, $312 = 0, $316 = 0, $319 = 0, $320 = 0, $326 = 0, $37 = 0, $40 = 0, $42 = 0, $46 = 0, $50 = 0, $56 = 0, $57 = 0, $60 = 0, $61 = 0, $62 = 0, $65 = 0, $68 = 0, $85 = 0, $87 = 0, $89 = 0, $9 = 0, $93 = 0, $97 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$081 = 0;\n  $pnt1$083 = $0;\n  $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$082 >> 1] = 0;\n   HEAP16[$pnt1$083 >> 1] = 0;\n   $i$081 = $i$081 + 1 | 0;\n   if (($i$081 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$083 = $pnt1$083 + 2 | 0;\n    $pnt2$082 = $pnt2$082 + 2 | 0;\n   }\n  }\n }\n $9 = $labelingThresh * 3 | 0;\n $10 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$175 = 0;\n  $pnt1$177 = $0;\n  $pnt2$176 = $0 + ($10 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$176 >> 1] = 0;\n   HEAP16[$pnt1$177 >> 1] = 0;\n   $i$175 = $i$175 + 1 | 0;\n   if (($i$175 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0;\n    $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0;\n   }\n  }\n }\n $17 = $labelInfo + 1179664 | 0;\n $18 = $xsize + 1 | 0;\n $19 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $24 = ($10 | 0) > 1;\n  $j$068 = 1;\n  $pnt$072 = $image + ($18 << 2) | 0;\n  $pnt2$271 = $0 + ($18 << 1) | 0;\n  $wk_max$070 = 0;\n  L13 : while (1) {\n   if ($24) {\n    $i$255 = 1;\n    $pnt$163 = $pnt$072;\n    $pnt2$362 = $pnt2$271;\n    $wk_max$157 = $wk_max$070;\n    while (1) {\n     do if (((HEAPU8[$pnt$163 + 1 >> 0] | 0) + (HEAPU8[$pnt$163 >> 0] | 0) + (HEAPU8[$pnt$163 + 2 >> 0] | 0) | 0) > ($9 | 0)) {\n      $37 = HEAP16[$pnt2$362 + ($19 << 1) >> 1] | 0;\n      if ($37 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$362 >> 1] = $37;\n       $40 = ($37 << 16 >> 16) * 7 | 0;\n       $42 = $labelInfo + 1310736 + ($40 + -7 << 2) | 0;\n       HEAP32[$42 >> 2] = (HEAP32[$42 >> 2] | 0) + 1;\n       $46 = $labelInfo + 1310736 + ($40 + -6 << 2) | 0;\n       HEAP32[$46 >> 2] = (HEAP32[$46 >> 2] | 0) + $i$255;\n       $50 = $labelInfo + 1310736 + ($40 + -5 << 2) | 0;\n       HEAP32[$50 >> 2] = (HEAP32[$50 >> 2] | 0) + $j$068;\n       HEAP32[$labelInfo + 1310736 + ($40 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $56 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0;\n      $57 = $56 << 16 >> 16;\n      $60 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0;\n      $61 = $60 << 16 >> 16;\n      $62 = $60 << 16 >> 16 > 0;\n      if ($56 << 16 >> 16 <= 0) {\n       if ($62) {\n        HEAP16[$pnt2$362 >> 1] = $60;\n        $162 = $61 * 7 | 0;\n        $164 = $labelInfo + 1310736 + ($162 + -7 << 2) | 0;\n        HEAP32[$164 >> 2] = (HEAP32[$164 >> 2] | 0) + 1;\n        $168 = $labelInfo + 1310736 + ($162 + -6 << 2) | 0;\n        HEAP32[$168 >> 2] = (HEAP32[$168 >> 2] | 0) + $i$255;\n        $172 = $labelInfo + 1310736 + ($162 + -5 << 2) | 0;\n        HEAP32[$172 >> 2] = (HEAP32[$172 >> 2] | 0) + $j$068;\n        $176 = $labelInfo + 1310736 + ($162 + -3 << 2) | 0;\n        if ((HEAP32[$176 >> 2] | 0) < ($i$255 | 0)) HEAP32[$176 >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($162 + -1 << 2) >> 2] = $j$068;\n        $wk_max$2 = $wk_max$157;\n        break;\n       }\n       $182 = HEAP16[$pnt2$362 + -2 >> 1] | 0;\n       if ($182 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$362 >> 1] = $182;\n        $185 = ($182 << 16 >> 16) * 7 | 0;\n        $187 = $labelInfo + 1310736 + ($185 + -7 << 2) | 0;\n        HEAP32[$187 >> 2] = (HEAP32[$187 >> 2] | 0) + 1;\n        $191 = $labelInfo + 1310736 + ($185 + -6 << 2) | 0;\n        HEAP32[$191 >> 2] = (HEAP32[$191 >> 2] | 0) + $i$255;\n        $195 = $labelInfo + 1310736 + ($185 + -5 << 2) | 0;\n        HEAP32[$195 >> 2] = (HEAP32[$195 >> 2] | 0) + $j$068;\n        $199 = $labelInfo + 1310736 + ($185 + -3 << 2) | 0;\n        if ((HEAP32[$199 >> 2] | 0) >= ($i$255 | 0)) {\n         $wk_max$2 = $wk_max$157;\n         break;\n        }\n        HEAP32[$199 >> 2] = $i$255;\n        $wk_max$2 = $wk_max$157;\n        break;\n       } else {\n        $202 = $wk_max$157 + 1 | 0;\n        if (($wk_max$157 | 0) > 32767) break L13;\n        HEAP16[$pnt2$362 >> 1] = $202;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $202 << 16 >> 16;\n        $207 = $wk_max$157 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($207 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($207 + 1 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($207 + 2 << 2) >> 2] = $j$068;\n        HEAP32[$labelInfo + 1310736 + ($207 + 3 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($207 + 4 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($207 + 5 << 2) >> 2] = $j$068;\n        HEAP32[$labelInfo + 1310736 + ($207 + 6 << 2) >> 2] = $j$068;\n        $wk_max$2 = $202;\n        break;\n       }\n      }\n      if ($62) {\n       $65 = HEAP32[$labelInfo + 1179664 + ($57 + -1 << 2) >> 2] | 0;\n       $68 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0;\n       if (($65 | 0) > ($68 | 0)) {\n        HEAP16[$pnt2$362 >> 1] = $68;\n        if (($wk_max$157 | 0) > 0) {\n         $k$051 = 0;\n         $wk$052 = $17;\n         while (1) {\n          if ((HEAP32[$wk$052 >> 2] | 0) == ($65 | 0)) HEAP32[$wk$052 >> 2] = $68;\n          $k$051 = $k$051 + 1 | 0;\n          if (($k$051 | 0) >= ($wk_max$157 | 0)) {\n           $85 = $68;\n           break;\n          } else $wk$052 = $wk$052 + 4 | 0;\n         }\n        } else $85 = $68;\n       } else {\n        HEAP16[$pnt2$362 >> 1] = $65;\n        if (($65 | 0) < ($68 | 0) & ($wk_max$157 | 0) > 0) {\n         $k$148 = 0;\n         $wk$149 = $17;\n         while (1) {\n          if ((HEAP32[$wk$149 >> 2] | 0) == ($68 | 0)) HEAP32[$wk$149 >> 2] = $65;\n          $k$148 = $k$148 + 1 | 0;\n          if (($k$148 | 0) >= ($wk_max$157 | 0)) {\n           $85 = $65;\n           break;\n          } else $wk$149 = $wk$149 + 4 | 0;\n         }\n        } else $85 = $65;\n       }\n       $87 = ($85 << 16 >> 16) * 7 | 0;\n       $89 = $labelInfo + 1310736 + ($87 + -7 << 2) | 0;\n       HEAP32[$89 >> 2] = (HEAP32[$89 >> 2] | 0) + 1;\n       $93 = $labelInfo + 1310736 + ($87 + -6 << 2) | 0;\n       HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + $i$255;\n       $97 = $labelInfo + 1310736 + ($87 + -5 << 2) | 0;\n       HEAP32[$97 >> 2] = (HEAP32[$97 >> 2] | 0) + $j$068;\n       HEAP32[$labelInfo + 1310736 + ($87 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $103 = HEAP16[$pnt2$362 + -2 >> 1] | 0;\n      if ($103 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$362 >> 1] = $56;\n       $143 = $57 * 7 | 0;\n       $145 = $labelInfo + 1310736 + ($143 + -7 << 2) | 0;\n       HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + 1;\n       $149 = $labelInfo + 1310736 + ($143 + -6 << 2) | 0;\n       HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $i$255;\n       $153 = $labelInfo + 1310736 + ($143 + -5 << 2) | 0;\n       HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $j$068;\n       $157 = $labelInfo + 1310736 + ($143 + -4 << 2) | 0;\n       if ((HEAP32[$157 >> 2] | 0) > ($i$255 | 0)) HEAP32[$157 >> 2] = $i$255;\n       HEAP32[$labelInfo + 1310736 + ($143 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $108 = HEAP32[$labelInfo + 1179664 + ($57 + -1 << 2) >> 2] | 0;\n      $111 = HEAP32[$labelInfo + 1179664 + (($103 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($108 | 0) > ($111 | 0)) {\n       HEAP16[$pnt2$362 >> 1] = $111;\n       if (($wk_max$157 | 0) > 0) {\n        $k$244 = 0;\n        $wk$245 = $17;\n        while (1) {\n         if ((HEAP32[$wk$245 >> 2] | 0) == ($108 | 0)) HEAP32[$wk$245 >> 2] = $111;\n         $k$244 = $k$244 + 1 | 0;\n         if (($k$244 | 0) >= ($wk_max$157 | 0)) {\n          $128 = $111;\n          break;\n         } else $wk$245 = $wk$245 + 4 | 0;\n        }\n       } else $128 = $111;\n      } else {\n       HEAP16[$pnt2$362 >> 1] = $108;\n       if (($108 | 0) < ($111 | 0) & ($wk_max$157 | 0) > 0) {\n        $k$341 = 0;\n        $wk$342 = $17;\n        while (1) {\n         if ((HEAP32[$wk$342 >> 2] | 0) == ($111 | 0)) HEAP32[$wk$342 >> 2] = $108;\n         $k$341 = $k$341 + 1 | 0;\n         if (($k$341 | 0) >= ($wk_max$157 | 0)) {\n          $128 = $108;\n          break;\n         } else $wk$342 = $wk$342 + 4 | 0;\n        }\n       } else $128 = $108;\n      }\n      $130 = ($128 << 16 >> 16) * 7 | 0;\n      $132 = $labelInfo + 1310736 + ($130 + -7 << 2) | 0;\n      HEAP32[$132 >> 2] = (HEAP32[$132 >> 2] | 0) + 1;\n      $136 = $labelInfo + 1310736 + ($130 + -6 << 2) | 0;\n      HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + $i$255;\n      $140 = $labelInfo + 1310736 + ($130 + -5 << 2) | 0;\n      HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $j$068;\n      $wk_max$2 = $wk_max$157;\n     } else {\n      HEAP16[$pnt2$362 >> 1] = 0;\n      $wk_max$2 = $wk_max$157;\n     } while (0);\n     $i$255 = $i$255 + 1 | 0;\n     $222 = $pnt$163 + 4 | 0;\n     $223 = $pnt2$362 + 2 | 0;\n     if (($i$255 | 0) >= ($10 | 0)) {\n      $pnt$1$lcssa = $222;\n      $pnt2$3$lcssa = $223;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $pnt$163 = $222;\n      $pnt2$362 = $223;\n      $wk_max$157 = $wk_max$2;\n     }\n    }\n   } else {\n    $pnt$1$lcssa = $pnt$072;\n    $pnt2$3$lcssa = $pnt2$271;\n    $wk_max$1$lcssa = $wk_max$070;\n   }\n   $j$068 = $j$068 + 1 | 0;\n   if (($j$068 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $pnt$072 = $pnt$1$lcssa + 8 | 0;\n    $pnt2$271 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$070 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $229 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$337 = 1;\n   $j$138 = 1;\n   $wk$439 = $17;\n   while (1) {\n    $231 = HEAP32[$wk$439 >> 2] | 0;\n    if (($231 | 0) == ($i$337 | 0)) {\n     $237 = $j$138;\n     $j$2 = $j$138 + 1 | 0;\n    } else {\n     $237 = HEAP32[$labelInfo + 1179664 + ($231 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$138;\n    }\n    HEAP32[$wk$439 >> 2] = $237;\n    if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$337 = $i$337 + 1 | 0;\n     $j$138 = $j$2;\n     $wk$439 = $wk$439 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $241 = $labelInfo + 8 | 0;\n  $242 = $j$1$lcssa + -1 | 0;\n  HEAP32[$241 >> 2] = $242;\n  if (!$242) $$0 = 0; else {\n   _memset($229 | 0, 0, $242 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $242 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$435 = 0;\n    do {\n     $249 = $i$435 << 2;\n     HEAP32[$labelInfo + 131084 + ($249 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($249 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($249 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($249 | 3) << 2) >> 2] = 0;\n     $i$435 = $i$435 + 1 | 0;\n    } while (($i$435 | 0) < (HEAP32[$241 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$533 = 0;\n    do {\n     $263 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0;\n     $264 = $i$533 * 7 | 0;\n     $267 = $labelInfo + 12 + ($263 << 2) | 0;\n     HEAP32[$267 >> 2] = (HEAP32[$267 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($264 << 2) >> 2] | 0);\n     $274 = $263 << 1;\n     $275 = $labelInfo + 655376 + ($274 << 3) | 0;\n     HEAPF64[$275 >> 3] = +HEAPF64[$275 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($264 + 1 << 2) >> 2] | 0);\n     $283 = $labelInfo + 655376 + (($274 | 1) << 3) | 0;\n     HEAPF64[$283 >> 3] = +HEAPF64[$283 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($264 + 2 << 2) >> 2] | 0);\n     $286 = $263 << 2;\n     $287 = $labelInfo + 131084 + ($286 << 2) | 0;\n     $291 = HEAP32[$labelInfo + 1310736 + ($264 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$287 >> 2] | 0) > ($291 | 0)) HEAP32[$287 >> 2] = $291;\n     $294 = $labelInfo + 131084 + (($286 | 1) << 2) | 0;\n     $298 = HEAP32[$labelInfo + 1310736 + ($264 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$294 >> 2] | 0) < ($298 | 0)) HEAP32[$294 >> 2] = $298;\n     $301 = $labelInfo + 131084 + (($286 | 2) << 2) | 0;\n     $305 = HEAP32[$labelInfo + 1310736 + ($264 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$301 >> 2] | 0) > ($305 | 0)) HEAP32[$301 >> 2] = $305;\n     $308 = $labelInfo + 131084 + (($286 | 3) << 2) | 0;\n     $312 = HEAP32[$labelInfo + 1310736 + ($264 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$308 >> 2] | 0) < ($312 | 0)) HEAP32[$308 >> 2] = $312;\n     $i$533 = $i$533 + 1 | 0;\n    } while (($i$533 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$241 >> 2] | 0) > 0) {\n    $i$632 = 0;\n    do {\n     $316 = $labelInfo + 12 + ($i$632 << 2) | 0;\n     $319 = $i$632 << 1;\n     $320 = $labelInfo + 655376 + ($319 << 3) | 0;\n     HEAPF64[$320 >> 3] = +HEAPF64[$320 >> 3] / +(HEAP32[$316 >> 2] | 0);\n     $326 = $labelInfo + 655376 + (($319 | 1) << 3) | 0;\n     HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$316 >> 2] | 0);\n     $i$632 = $i$632 + 1 | 0;\n    } while (($i$632 | 0) < (HEAP32[$241 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubDBR3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $103 = 0, $108 = 0, $111 = 0, $128 = 0, $130 = 0, $132 = 0, $136 = 0, $140 = 0, $143 = 0, $145 = 0, $149 = 0, $153 = 0, $157 = 0, $162 = 0, $164 = 0, $168 = 0, $17 = 0, $172 = 0, $176 = 0, $18 = 0, $182 = 0, $185 = 0, $187 = 0, $19 = 0, $191 = 0, $195 = 0, $199 = 0, $202 = 0, $207 = 0, $222 = 0, $223 = 0, $229 = 0, $231 = 0, $237 = 0, $24 = 0, $241 = 0, $242 = 0, $249 = 0, $263 = 0, $264 = 0, $267 = 0, $274 = 0, $275 = 0, $283 = 0, $286 = 0, $287 = 0, $291 = 0, $294 = 0, $298 = 0, $301 = 0, $305 = 0, $308 = 0, $312 = 0, $316 = 0, $319 = 0, $320 = 0, $326 = 0, $37 = 0, $40 = 0, $42 = 0, $46 = 0, $50 = 0, $56 = 0, $57 = 0, $60 = 0, $61 = 0, $62 = 0, $65 = 0, $68 = 0, $85 = 0, $87 = 0, $89 = 0, $9 = 0, $93 = 0, $97 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$081 = 0;\n  $pnt1$083 = $0;\n  $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$082 >> 1] = 0;\n   HEAP16[$pnt1$083 >> 1] = 0;\n   $i$081 = $i$081 + 1 | 0;\n   if (($i$081 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$083 = $pnt1$083 + 2 | 0;\n    $pnt2$082 = $pnt2$082 + 2 | 0;\n   }\n  }\n }\n $9 = $labelingThresh * 3 | 0;\n $10 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$175 = 0;\n  $pnt1$177 = $0;\n  $pnt2$176 = $0 + ($10 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$176 >> 1] = 0;\n   HEAP16[$pnt1$177 >> 1] = 0;\n   $i$175 = $i$175 + 1 | 0;\n   if (($i$175 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0;\n    $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0;\n   }\n  }\n }\n $17 = $labelInfo + 1179664 | 0;\n $18 = $xsize + 1 | 0;\n $19 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $24 = ($10 | 0) > 1;\n  $j$068 = 1;\n  $pnt$072 = $image + ($18 << 2) | 0;\n  $pnt2$271 = $0 + ($18 << 1) | 0;\n  $wk_max$070 = 0;\n  L13 : while (1) {\n   if ($24) {\n    $i$255 = 1;\n    $pnt$163 = $pnt$072;\n    $pnt2$362 = $pnt2$271;\n    $wk_max$157 = $wk_max$070;\n    while (1) {\n     do if (((HEAPU8[$pnt$163 + 1 >> 0] | 0) + (HEAPU8[$pnt$163 >> 0] | 0) + (HEAPU8[$pnt$163 + 2 >> 0] | 0) | 0) > ($9 | 0)) {\n      HEAP16[$pnt2$362 >> 1] = 0;\n      $wk_max$2 = $wk_max$157;\n     } else {\n      $37 = HEAP16[$pnt2$362 + ($19 << 1) >> 1] | 0;\n      if ($37 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$362 >> 1] = $37;\n       $40 = ($37 << 16 >> 16) * 7 | 0;\n       $42 = $labelInfo + 1310736 + ($40 + -7 << 2) | 0;\n       HEAP32[$42 >> 2] = (HEAP32[$42 >> 2] | 0) + 1;\n       $46 = $labelInfo + 1310736 + ($40 + -6 << 2) | 0;\n       HEAP32[$46 >> 2] = (HEAP32[$46 >> 2] | 0) + $i$255;\n       $50 = $labelInfo + 1310736 + ($40 + -5 << 2) | 0;\n       HEAP32[$50 >> 2] = (HEAP32[$50 >> 2] | 0) + $j$068;\n       HEAP32[$labelInfo + 1310736 + ($40 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $56 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0;\n      $57 = $56 << 16 >> 16;\n      $60 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0;\n      $61 = $60 << 16 >> 16;\n      $62 = $60 << 16 >> 16 > 0;\n      if ($56 << 16 >> 16 <= 0) {\n       if ($62) {\n        HEAP16[$pnt2$362 >> 1] = $60;\n        $162 = $61 * 7 | 0;\n        $164 = $labelInfo + 1310736 + ($162 + -7 << 2) | 0;\n        HEAP32[$164 >> 2] = (HEAP32[$164 >> 2] | 0) + 1;\n        $168 = $labelInfo + 1310736 + ($162 + -6 << 2) | 0;\n        HEAP32[$168 >> 2] = (HEAP32[$168 >> 2] | 0) + $i$255;\n        $172 = $labelInfo + 1310736 + ($162 + -5 << 2) | 0;\n        HEAP32[$172 >> 2] = (HEAP32[$172 >> 2] | 0) + $j$068;\n        $176 = $labelInfo + 1310736 + ($162 + -3 << 2) | 0;\n        if ((HEAP32[$176 >> 2] | 0) < ($i$255 | 0)) HEAP32[$176 >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($162 + -1 << 2) >> 2] = $j$068;\n        $wk_max$2 = $wk_max$157;\n        break;\n       }\n       $182 = HEAP16[$pnt2$362 + -2 >> 1] | 0;\n       if ($182 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$362 >> 1] = $182;\n        $185 = ($182 << 16 >> 16) * 7 | 0;\n        $187 = $labelInfo + 1310736 + ($185 + -7 << 2) | 0;\n        HEAP32[$187 >> 2] = (HEAP32[$187 >> 2] | 0) + 1;\n        $191 = $labelInfo + 1310736 + ($185 + -6 << 2) | 0;\n        HEAP32[$191 >> 2] = (HEAP32[$191 >> 2] | 0) + $i$255;\n        $195 = $labelInfo + 1310736 + ($185 + -5 << 2) | 0;\n        HEAP32[$195 >> 2] = (HEAP32[$195 >> 2] | 0) + $j$068;\n        $199 = $labelInfo + 1310736 + ($185 + -3 << 2) | 0;\n        if ((HEAP32[$199 >> 2] | 0) >= ($i$255 | 0)) {\n         $wk_max$2 = $wk_max$157;\n         break;\n        }\n        HEAP32[$199 >> 2] = $i$255;\n        $wk_max$2 = $wk_max$157;\n        break;\n       } else {\n        $202 = $wk_max$157 + 1 | 0;\n        if (($wk_max$157 | 0) > 32767) break L13;\n        HEAP16[$pnt2$362 >> 1] = $202;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $202 << 16 >> 16;\n        $207 = $wk_max$157 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($207 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($207 + 1 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($207 + 2 << 2) >> 2] = $j$068;\n        HEAP32[$labelInfo + 1310736 + ($207 + 3 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($207 + 4 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($207 + 5 << 2) >> 2] = $j$068;\n        HEAP32[$labelInfo + 1310736 + ($207 + 6 << 2) >> 2] = $j$068;\n        $wk_max$2 = $202;\n        break;\n       }\n      }\n      if ($62) {\n       $65 = HEAP32[$labelInfo + 1179664 + ($57 + -1 << 2) >> 2] | 0;\n       $68 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0;\n       if (($65 | 0) > ($68 | 0)) {\n        HEAP16[$pnt2$362 >> 1] = $68;\n        if (($wk_max$157 | 0) > 0) {\n         $k$051 = 0;\n         $wk$052 = $17;\n         while (1) {\n          if ((HEAP32[$wk$052 >> 2] | 0) == ($65 | 0)) HEAP32[$wk$052 >> 2] = $68;\n          $k$051 = $k$051 + 1 | 0;\n          if (($k$051 | 0) >= ($wk_max$157 | 0)) {\n           $85 = $68;\n           break;\n          } else $wk$052 = $wk$052 + 4 | 0;\n         }\n        } else $85 = $68;\n       } else {\n        HEAP16[$pnt2$362 >> 1] = $65;\n        if (($65 | 0) < ($68 | 0) & ($wk_max$157 | 0) > 0) {\n         $k$148 = 0;\n         $wk$149 = $17;\n         while (1) {\n          if ((HEAP32[$wk$149 >> 2] | 0) == ($68 | 0)) HEAP32[$wk$149 >> 2] = $65;\n          $k$148 = $k$148 + 1 | 0;\n          if (($k$148 | 0) >= ($wk_max$157 | 0)) {\n           $85 = $65;\n           break;\n          } else $wk$149 = $wk$149 + 4 | 0;\n         }\n        } else $85 = $65;\n       }\n       $87 = ($85 << 16 >> 16) * 7 | 0;\n       $89 = $labelInfo + 1310736 + ($87 + -7 << 2) | 0;\n       HEAP32[$89 >> 2] = (HEAP32[$89 >> 2] | 0) + 1;\n       $93 = $labelInfo + 1310736 + ($87 + -6 << 2) | 0;\n       HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + $i$255;\n       $97 = $labelInfo + 1310736 + ($87 + -5 << 2) | 0;\n       HEAP32[$97 >> 2] = (HEAP32[$97 >> 2] | 0) + $j$068;\n       HEAP32[$labelInfo + 1310736 + ($87 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $103 = HEAP16[$pnt2$362 + -2 >> 1] | 0;\n      if ($103 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$362 >> 1] = $56;\n       $143 = $57 * 7 | 0;\n       $145 = $labelInfo + 1310736 + ($143 + -7 << 2) | 0;\n       HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + 1;\n       $149 = $labelInfo + 1310736 + ($143 + -6 << 2) | 0;\n       HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $i$255;\n       $153 = $labelInfo + 1310736 + ($143 + -5 << 2) | 0;\n       HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $j$068;\n       $157 = $labelInfo + 1310736 + ($143 + -4 << 2) | 0;\n       if ((HEAP32[$157 >> 2] | 0) > ($i$255 | 0)) HEAP32[$157 >> 2] = $i$255;\n       HEAP32[$labelInfo + 1310736 + ($143 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $108 = HEAP32[$labelInfo + 1179664 + ($57 + -1 << 2) >> 2] | 0;\n      $111 = HEAP32[$labelInfo + 1179664 + (($103 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($108 | 0) > ($111 | 0)) {\n       HEAP16[$pnt2$362 >> 1] = $111;\n       if (($wk_max$157 | 0) > 0) {\n        $k$244 = 0;\n        $wk$245 = $17;\n        while (1) {\n         if ((HEAP32[$wk$245 >> 2] | 0) == ($108 | 0)) HEAP32[$wk$245 >> 2] = $111;\n         $k$244 = $k$244 + 1 | 0;\n         if (($k$244 | 0) >= ($wk_max$157 | 0)) {\n          $128 = $111;\n          break;\n         } else $wk$245 = $wk$245 + 4 | 0;\n        }\n       } else $128 = $111;\n      } else {\n       HEAP16[$pnt2$362 >> 1] = $108;\n       if (($108 | 0) < ($111 | 0) & ($wk_max$157 | 0) > 0) {\n        $k$341 = 0;\n        $wk$342 = $17;\n        while (1) {\n         if ((HEAP32[$wk$342 >> 2] | 0) == ($111 | 0)) HEAP32[$wk$342 >> 2] = $108;\n         $k$341 = $k$341 + 1 | 0;\n         if (($k$341 | 0) >= ($wk_max$157 | 0)) {\n          $128 = $108;\n          break;\n         } else $wk$342 = $wk$342 + 4 | 0;\n        }\n       } else $128 = $108;\n      }\n      $130 = ($128 << 16 >> 16) * 7 | 0;\n      $132 = $labelInfo + 1310736 + ($130 + -7 << 2) | 0;\n      HEAP32[$132 >> 2] = (HEAP32[$132 >> 2] | 0) + 1;\n      $136 = $labelInfo + 1310736 + ($130 + -6 << 2) | 0;\n      HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + $i$255;\n      $140 = $labelInfo + 1310736 + ($130 + -5 << 2) | 0;\n      HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $j$068;\n      $wk_max$2 = $wk_max$157;\n     } while (0);\n     $i$255 = $i$255 + 1 | 0;\n     $222 = $pnt$163 + 4 | 0;\n     $223 = $pnt2$362 + 2 | 0;\n     if (($i$255 | 0) >= ($10 | 0)) {\n      $pnt$1$lcssa = $222;\n      $pnt2$3$lcssa = $223;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $pnt$163 = $222;\n      $pnt2$362 = $223;\n      $wk_max$157 = $wk_max$2;\n     }\n    }\n   } else {\n    $pnt$1$lcssa = $pnt$072;\n    $pnt2$3$lcssa = $pnt2$271;\n    $wk_max$1$lcssa = $wk_max$070;\n   }\n   $j$068 = $j$068 + 1 | 0;\n   if (($j$068 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $pnt$072 = $pnt$1$lcssa + 8 | 0;\n    $pnt2$271 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$070 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $229 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$337 = 1;\n   $j$138 = 1;\n   $wk$439 = $17;\n   while (1) {\n    $231 = HEAP32[$wk$439 >> 2] | 0;\n    if (($231 | 0) == ($i$337 | 0)) {\n     $237 = $j$138;\n     $j$2 = $j$138 + 1 | 0;\n    } else {\n     $237 = HEAP32[$labelInfo + 1179664 + ($231 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$138;\n    }\n    HEAP32[$wk$439 >> 2] = $237;\n    if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$337 = $i$337 + 1 | 0;\n     $j$138 = $j$2;\n     $wk$439 = $wk$439 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $241 = $labelInfo + 8 | 0;\n  $242 = $j$1$lcssa + -1 | 0;\n  HEAP32[$241 >> 2] = $242;\n  if (!$242) $$0 = 0; else {\n   _memset($229 | 0, 0, $242 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $242 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$435 = 0;\n    do {\n     $249 = $i$435 << 2;\n     HEAP32[$labelInfo + 131084 + ($249 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($249 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($249 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($249 | 3) << 2) >> 2] = 0;\n     $i$435 = $i$435 + 1 | 0;\n    } while (($i$435 | 0) < (HEAP32[$241 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$533 = 0;\n    do {\n     $263 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0;\n     $264 = $i$533 * 7 | 0;\n     $267 = $labelInfo + 12 + ($263 << 2) | 0;\n     HEAP32[$267 >> 2] = (HEAP32[$267 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($264 << 2) >> 2] | 0);\n     $274 = $263 << 1;\n     $275 = $labelInfo + 655376 + ($274 << 3) | 0;\n     HEAPF64[$275 >> 3] = +HEAPF64[$275 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($264 + 1 << 2) >> 2] | 0);\n     $283 = $labelInfo + 655376 + (($274 | 1) << 3) | 0;\n     HEAPF64[$283 >> 3] = +HEAPF64[$283 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($264 + 2 << 2) >> 2] | 0);\n     $286 = $263 << 2;\n     $287 = $labelInfo + 131084 + ($286 << 2) | 0;\n     $291 = HEAP32[$labelInfo + 1310736 + ($264 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$287 >> 2] | 0) > ($291 | 0)) HEAP32[$287 >> 2] = $291;\n     $294 = $labelInfo + 131084 + (($286 | 1) << 2) | 0;\n     $298 = HEAP32[$labelInfo + 1310736 + ($264 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$294 >> 2] | 0) < ($298 | 0)) HEAP32[$294 >> 2] = $298;\n     $301 = $labelInfo + 131084 + (($286 | 2) << 2) | 0;\n     $305 = HEAP32[$labelInfo + 1310736 + ($264 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$301 >> 2] | 0) > ($305 | 0)) HEAP32[$301 >> 2] = $305;\n     $308 = $labelInfo + 131084 + (($286 | 3) << 2) | 0;\n     $312 = HEAP32[$labelInfo + 1310736 + ($264 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$308 >> 2] | 0) < ($312 | 0)) HEAP32[$308 >> 2] = $312;\n     $i$533 = $i$533 + 1 | 0;\n    } while (($i$533 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$241 >> 2] | 0) > 0) {\n    $i$632 = 0;\n    do {\n     $316 = $labelInfo + 12 + ($i$632 << 2) | 0;\n     $319 = $i$632 << 1;\n     $320 = $labelInfo + 655376 + ($319 << 3) | 0;\n     HEAPF64[$320 >> 3] = +HEAPF64[$320 >> 3] / +(HEAP32[$316 >> 2] | 0);\n     $326 = $labelInfo + 655376 + (($319 | 1) << 3) | 0;\n     HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$316 >> 2] | 0);\n     $i$632 = $i$632 + 1 | 0;\n    } while (($i$632 | 0) < (HEAP32[$241 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubDWICY($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $104 = 0, $107 = 0, $11 = 0, $124 = 0, $126 = 0, $128 = 0, $132 = 0, $136 = 0, $139 = 0, $141 = 0, $145 = 0, $149 = 0, $153 = 0, $158 = 0, $160 = 0, $164 = 0, $168 = 0, $172 = 0, $178 = 0, $18 = 0, $181 = 0, $183 = 0, $187 = 0, $191 = 0, $195 = 0, $198 = 0, $2 = 0, $20 = 0, $203 = 0, $218 = 0, $219 = 0, $225 = 0, $227 = 0, $233 = 0, $237 = 0, $238 = 0, $245 = 0, $259 = 0, $260 = 0, $263 = 0, $27 = 0, $270 = 0, $271 = 0, $279 = 0, $282 = 0, $283 = 0, $287 = 0, $290 = 0, $294 = 0, $297 = 0, $3 = 0, $301 = 0, $304 = 0, $308 = 0, $312 = 0, $315 = 0, $316 = 0, $322 = 0, $33 = 0, $36 = 0, $38 = 0, $42 = 0, $46 = 0, $52 = 0, $53 = 0, $56 = 0, $57 = 0, $58 = 0, $61 = 0, $64 = 0, $81 = 0, $83 = 0, $85 = 0, $89 = 0, $93 = 0, $99 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = ($xsize | 0) / 2 | 0;\n $1 = ($ysize | 0) / 2 | 0;\n $2 = HEAP32[$labelInfo >> 2] | 0;\n $3 = $1 + -1 | 0;\n if (($xsize | 0) > 1) {\n  $i$082 = 0;\n  $pnt1$084 = $2;\n  $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$083 >> 1] = 0;\n   HEAP16[$pnt1$084 >> 1] = 0;\n   $i$082 = $i$082 + 1 | 0;\n   if (($i$082 | 0) >= ($0 | 0)) break; else {\n    $pnt1$084 = $pnt1$084 + 2 | 0;\n    $pnt2$083 = $pnt2$083 + 2 | 0;\n   }\n  }\n }\n $11 = $0 + -1 | 0;\n if (($ysize | 0) > 1) {\n  $i$176 = 0;\n  $pnt1$178 = $2;\n  $pnt2$177 = $2 + ($11 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$177 >> 1] = 0;\n   HEAP16[$pnt1$178 >> 1] = 0;\n   $i$176 = $i$176 + 1 | 0;\n   if (($i$176 | 0) >= ($1 | 0)) break; else {\n    $pnt1$178 = $pnt1$178 + ($0 << 1) | 0;\n    $pnt2$177 = $pnt2$177 + ($0 << 1) | 0;\n   }\n  }\n }\n $18 = $labelInfo + 1179664 | 0;\n $20 = 0 - $0 | 0;\n $$sum1 = 1 - $0 | 0;\n $$sum2 = ~$0;\n $$sum = ($xsize << 1) + 8 | 0;\n L11 : do if (($3 | 0) > 1) {\n  $27 = ($11 | 0) > 1;\n  $j$069 = 1;\n  $pnt$073 = $image + (($xsize << 2) + 4) | 0;\n  $pnt2$272 = $2 + ($0 + 1 << 1) | 0;\n  $wk_max$071 = 0;\n  L13 : while (1) {\n   if ($27) {\n    $i$256 = 1;\n    $pnt$164 = $pnt$073;\n    $pnt2$363 = $pnt2$272;\n    $wk_max$158 = $wk_max$071;\n    while (1) {\n     do if ((HEAPU8[$pnt$164 + 1 >> 0] | 0 | 0) > ($labelingThresh | 0)) {\n      $33 = HEAP16[$pnt2$363 + ($20 << 1) >> 1] | 0;\n      if ($33 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$363 >> 1] = $33;\n       $36 = ($33 << 16 >> 16) * 7 | 0;\n       $38 = $labelInfo + 1310736 + ($36 + -7 << 2) | 0;\n       HEAP32[$38 >> 2] = (HEAP32[$38 >> 2] | 0) + 1;\n       $42 = $labelInfo + 1310736 + ($36 + -6 << 2) | 0;\n       HEAP32[$42 >> 2] = (HEAP32[$42 >> 2] | 0) + $i$256;\n       $46 = $labelInfo + 1310736 + ($36 + -5 << 2) | 0;\n       HEAP32[$46 >> 2] = (HEAP32[$46 >> 2] | 0) + $j$069;\n       HEAP32[$labelInfo + 1310736 + ($36 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $52 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0;\n      $53 = $52 << 16 >> 16;\n      $56 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0;\n      $57 = $56 << 16 >> 16;\n      $58 = $56 << 16 >> 16 > 0;\n      if ($52 << 16 >> 16 <= 0) {\n       if ($58) {\n        HEAP16[$pnt2$363 >> 1] = $56;\n        $158 = $57 * 7 | 0;\n        $160 = $labelInfo + 1310736 + ($158 + -7 << 2) | 0;\n        HEAP32[$160 >> 2] = (HEAP32[$160 >> 2] | 0) + 1;\n        $164 = $labelInfo + 1310736 + ($158 + -6 << 2) | 0;\n        HEAP32[$164 >> 2] = (HEAP32[$164 >> 2] | 0) + $i$256;\n        $168 = $labelInfo + 1310736 + ($158 + -5 << 2) | 0;\n        HEAP32[$168 >> 2] = (HEAP32[$168 >> 2] | 0) + $j$069;\n        $172 = $labelInfo + 1310736 + ($158 + -3 << 2) | 0;\n        if ((HEAP32[$172 >> 2] | 0) < ($i$256 | 0)) HEAP32[$172 >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($158 + -1 << 2) >> 2] = $j$069;\n        $wk_max$2 = $wk_max$158;\n        break;\n       }\n       $178 = HEAP16[$pnt2$363 + -2 >> 1] | 0;\n       if ($178 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$363 >> 1] = $178;\n        $181 = ($178 << 16 >> 16) * 7 | 0;\n        $183 = $labelInfo + 1310736 + ($181 + -7 << 2) | 0;\n        HEAP32[$183 >> 2] = (HEAP32[$183 >> 2] | 0) + 1;\n        $187 = $labelInfo + 1310736 + ($181 + -6 << 2) | 0;\n        HEAP32[$187 >> 2] = (HEAP32[$187 >> 2] | 0) + $i$256;\n        $191 = $labelInfo + 1310736 + ($181 + -5 << 2) | 0;\n        HEAP32[$191 >> 2] = (HEAP32[$191 >> 2] | 0) + $j$069;\n        $195 = $labelInfo + 1310736 + ($181 + -3 << 2) | 0;\n        if ((HEAP32[$195 >> 2] | 0) >= ($i$256 | 0)) {\n         $wk_max$2 = $wk_max$158;\n         break;\n        }\n        HEAP32[$195 >> 2] = $i$256;\n        $wk_max$2 = $wk_max$158;\n        break;\n       } else {\n        $198 = $wk_max$158 + 1 | 0;\n        if (($wk_max$158 | 0) > 32767) break L13;\n        HEAP16[$pnt2$363 >> 1] = $198;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $198 << 16 >> 16;\n        $203 = $wk_max$158 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($203 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($203 + 1 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($203 + 2 << 2) >> 2] = $j$069;\n        HEAP32[$labelInfo + 1310736 + ($203 + 3 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($203 + 4 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($203 + 5 << 2) >> 2] = $j$069;\n        HEAP32[$labelInfo + 1310736 + ($203 + 6 << 2) >> 2] = $j$069;\n        $wk_max$2 = $198;\n        break;\n       }\n      }\n      if ($58) {\n       $61 = HEAP32[$labelInfo + 1179664 + ($53 + -1 << 2) >> 2] | 0;\n       $64 = HEAP32[$labelInfo + 1179664 + ($57 + -1 << 2) >> 2] | 0;\n       if (($61 | 0) > ($64 | 0)) {\n        HEAP16[$pnt2$363 >> 1] = $64;\n        if (($wk_max$158 | 0) > 0) {\n         $k$052 = 0;\n         $wk$053 = $18;\n         while (1) {\n          if ((HEAP32[$wk$053 >> 2] | 0) == ($61 | 0)) HEAP32[$wk$053 >> 2] = $64;\n          $k$052 = $k$052 + 1 | 0;\n          if (($k$052 | 0) >= ($wk_max$158 | 0)) {\n           $81 = $64;\n           break;\n          } else $wk$053 = $wk$053 + 4 | 0;\n         }\n        } else $81 = $64;\n       } else {\n        HEAP16[$pnt2$363 >> 1] = $61;\n        if (($61 | 0) < ($64 | 0) & ($wk_max$158 | 0) > 0) {\n         $k$149 = 0;\n         $wk$150 = $18;\n         while (1) {\n          if ((HEAP32[$wk$150 >> 2] | 0) == ($64 | 0)) HEAP32[$wk$150 >> 2] = $61;\n          $k$149 = $k$149 + 1 | 0;\n          if (($k$149 | 0) >= ($wk_max$158 | 0)) {\n           $81 = $61;\n           break;\n          } else $wk$150 = $wk$150 + 4 | 0;\n         }\n        } else $81 = $61;\n       }\n       $83 = ($81 << 16 >> 16) * 7 | 0;\n       $85 = $labelInfo + 1310736 + ($83 + -7 << 2) | 0;\n       HEAP32[$85 >> 2] = (HEAP32[$85 >> 2] | 0) + 1;\n       $89 = $labelInfo + 1310736 + ($83 + -6 << 2) | 0;\n       HEAP32[$89 >> 2] = (HEAP32[$89 >> 2] | 0) + $i$256;\n       $93 = $labelInfo + 1310736 + ($83 + -5 << 2) | 0;\n       HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + $j$069;\n       HEAP32[$labelInfo + 1310736 + ($83 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $99 = HEAP16[$pnt2$363 + -2 >> 1] | 0;\n      if ($99 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$363 >> 1] = $52;\n       $139 = $53 * 7 | 0;\n       $141 = $labelInfo + 1310736 + ($139 + -7 << 2) | 0;\n       HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + 1;\n       $145 = $labelInfo + 1310736 + ($139 + -6 << 2) | 0;\n       HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $i$256;\n       $149 = $labelInfo + 1310736 + ($139 + -5 << 2) | 0;\n       HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $j$069;\n       $153 = $labelInfo + 1310736 + ($139 + -4 << 2) | 0;\n       if ((HEAP32[$153 >> 2] | 0) > ($i$256 | 0)) HEAP32[$153 >> 2] = $i$256;\n       HEAP32[$labelInfo + 1310736 + ($139 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $104 = HEAP32[$labelInfo + 1179664 + ($53 + -1 << 2) >> 2] | 0;\n      $107 = HEAP32[$labelInfo + 1179664 + (($99 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($104 | 0) > ($107 | 0)) {\n       HEAP16[$pnt2$363 >> 1] = $107;\n       if (($wk_max$158 | 0) > 0) {\n        $k$245 = 0;\n        $wk$246 = $18;\n        while (1) {\n         if ((HEAP32[$wk$246 >> 2] | 0) == ($104 | 0)) HEAP32[$wk$246 >> 2] = $107;\n         $k$245 = $k$245 + 1 | 0;\n         if (($k$245 | 0) >= ($wk_max$158 | 0)) {\n          $124 = $107;\n          break;\n         } else $wk$246 = $wk$246 + 4 | 0;\n        }\n       } else $124 = $107;\n      } else {\n       HEAP16[$pnt2$363 >> 1] = $104;\n       if (($104 | 0) < ($107 | 0) & ($wk_max$158 | 0) > 0) {\n        $k$342 = 0;\n        $wk$343 = $18;\n        while (1) {\n         if ((HEAP32[$wk$343 >> 2] | 0) == ($107 | 0)) HEAP32[$wk$343 >> 2] = $104;\n         $k$342 = $k$342 + 1 | 0;\n         if (($k$342 | 0) >= ($wk_max$158 | 0)) {\n          $124 = $104;\n          break;\n         } else $wk$343 = $wk$343 + 4 | 0;\n        }\n       } else $124 = $104;\n      }\n      $126 = ($124 << 16 >> 16) * 7 | 0;\n      $128 = $labelInfo + 1310736 + ($126 + -7 << 2) | 0;\n      HEAP32[$128 >> 2] = (HEAP32[$128 >> 2] | 0) + 1;\n      $132 = $labelInfo + 1310736 + ($126 + -6 << 2) | 0;\n      HEAP32[$132 >> 2] = (HEAP32[$132 >> 2] | 0) + $i$256;\n      $136 = $labelInfo + 1310736 + ($126 + -5 << 2) | 0;\n      HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + $j$069;\n      $wk_max$2 = $wk_max$158;\n     } else {\n      HEAP16[$pnt2$363 >> 1] = 0;\n      $wk_max$2 = $wk_max$158;\n     } while (0);\n     $i$256 = $i$256 + 1 | 0;\n     $218 = $pnt$164 + 4 | 0;\n     $219 = $pnt2$363 + 2 | 0;\n     if (($i$256 | 0) >= ($11 | 0)) {\n      $pnt$1$lcssa = $218;\n      $pnt2$3$lcssa = $219;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $pnt$164 = $218;\n      $pnt2$363 = $219;\n      $wk_max$158 = $wk_max$2;\n     }\n    }\n   } else {\n    $pnt$1$lcssa = $pnt$073;\n    $pnt2$3$lcssa = $pnt2$272;\n    $wk_max$1$lcssa = $wk_max$071;\n   }\n   $j$069 = $j$069 + 1 | 0;\n   if (($j$069 | 0) >= ($3 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $pnt$073 = $pnt$1$lcssa + $$sum | 0;\n    $pnt2$272 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$071 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $225 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$338 = 1;\n   $j$139 = 1;\n   $wk$440 = $18;\n   while (1) {\n    $227 = HEAP32[$wk$440 >> 2] | 0;\n    if (($227 | 0) == ($i$338 | 0)) {\n     $233 = $j$139;\n     $j$2 = $j$139 + 1 | 0;\n    } else {\n     $233 = HEAP32[$labelInfo + 1179664 + ($227 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$139;\n    }\n    HEAP32[$wk$440 >> 2] = $233;\n    if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$338 = $i$338 + 1 | 0;\n     $j$139 = $j$2;\n     $wk$440 = $wk$440 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $237 = $labelInfo + 8 | 0;\n  $238 = $j$1$lcssa + -1 | 0;\n  HEAP32[$237 >> 2] = $238;\n  if (!$238) $$0 = 0; else {\n   _memset($225 | 0, 0, $238 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $238 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$436 = 0;\n    do {\n     $245 = $i$436 << 2;\n     HEAP32[$labelInfo + 131084 + ($245 << 2) >> 2] = $0;\n     HEAP32[$labelInfo + 131084 + (($245 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($245 | 2) << 2) >> 2] = $1;\n     HEAP32[$labelInfo + 131084 + (($245 | 3) << 2) >> 2] = 0;\n     $i$436 = $i$436 + 1 | 0;\n    } while (($i$436 | 0) < (HEAP32[$237 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$534 = 0;\n    do {\n     $259 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0;\n     $260 = $i$534 * 7 | 0;\n     $263 = $labelInfo + 12 + ($259 << 2) | 0;\n     HEAP32[$263 >> 2] = (HEAP32[$263 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($260 << 2) >> 2] | 0);\n     $270 = $259 << 1;\n     $271 = $labelInfo + 655376 + ($270 << 3) | 0;\n     HEAPF64[$271 >> 3] = +HEAPF64[$271 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($260 + 1 << 2) >> 2] | 0);\n     $279 = $labelInfo + 655376 + (($270 | 1) << 3) | 0;\n     HEAPF64[$279 >> 3] = +HEAPF64[$279 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($260 + 2 << 2) >> 2] | 0);\n     $282 = $259 << 2;\n     $283 = $labelInfo + 131084 + ($282 << 2) | 0;\n     $287 = HEAP32[$labelInfo + 1310736 + ($260 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$283 >> 2] | 0) > ($287 | 0)) HEAP32[$283 >> 2] = $287;\n     $290 = $labelInfo + 131084 + (($282 | 1) << 2) | 0;\n     $294 = HEAP32[$labelInfo + 1310736 + ($260 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$290 >> 2] | 0) < ($294 | 0)) HEAP32[$290 >> 2] = $294;\n     $297 = $labelInfo + 131084 + (($282 | 2) << 2) | 0;\n     $301 = HEAP32[$labelInfo + 1310736 + ($260 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$297 >> 2] | 0) > ($301 | 0)) HEAP32[$297 >> 2] = $301;\n     $304 = $labelInfo + 131084 + (($282 | 3) << 2) | 0;\n     $308 = HEAP32[$labelInfo + 1310736 + ($260 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$304 >> 2] | 0) < ($308 | 0)) HEAP32[$304 >> 2] = $308;\n     $i$534 = $i$534 + 1 | 0;\n    } while (($i$534 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$237 >> 2] | 0) > 0) {\n    $i$633 = 0;\n    do {\n     $312 = $labelInfo + 12 + ($i$633 << 2) | 0;\n     $315 = $i$633 << 1;\n     $316 = $labelInfo + 655376 + ($315 << 3) | 0;\n     HEAPF64[$316 >> 3] = +HEAPF64[$316 >> 3] / +(HEAP32[$312 >> 2] | 0);\n     $322 = $labelInfo + 655376 + (($315 | 1) << 3) | 0;\n     HEAPF64[$322 >> 3] = +HEAPF64[$322 >> 3] / +(HEAP32[$312 >> 2] | 0);\n     $i$633 = $i$633 + 1 | 0;\n    } while (($i$633 | 0) < (HEAP32[$237 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubDBICY($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $104 = 0, $107 = 0, $11 = 0, $124 = 0, $126 = 0, $128 = 0, $132 = 0, $136 = 0, $139 = 0, $141 = 0, $145 = 0, $149 = 0, $153 = 0, $158 = 0, $160 = 0, $164 = 0, $168 = 0, $172 = 0, $178 = 0, $18 = 0, $181 = 0, $183 = 0, $187 = 0, $191 = 0, $195 = 0, $198 = 0, $2 = 0, $20 = 0, $203 = 0, $218 = 0, $219 = 0, $225 = 0, $227 = 0, $233 = 0, $237 = 0, $238 = 0, $245 = 0, $259 = 0, $260 = 0, $263 = 0, $27 = 0, $270 = 0, $271 = 0, $279 = 0, $282 = 0, $283 = 0, $287 = 0, $290 = 0, $294 = 0, $297 = 0, $3 = 0, $301 = 0, $304 = 0, $308 = 0, $312 = 0, $315 = 0, $316 = 0, $322 = 0, $33 = 0, $36 = 0, $38 = 0, $42 = 0, $46 = 0, $52 = 0, $53 = 0, $56 = 0, $57 = 0, $58 = 0, $61 = 0, $64 = 0, $81 = 0, $83 = 0, $85 = 0, $89 = 0, $93 = 0, $99 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = ($xsize | 0) / 2 | 0;\n $1 = ($ysize | 0) / 2 | 0;\n $2 = HEAP32[$labelInfo >> 2] | 0;\n $3 = $1 + -1 | 0;\n if (($xsize | 0) > 1) {\n  $i$082 = 0;\n  $pnt1$084 = $2;\n  $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$083 >> 1] = 0;\n   HEAP16[$pnt1$084 >> 1] = 0;\n   $i$082 = $i$082 + 1 | 0;\n   if (($i$082 | 0) >= ($0 | 0)) break; else {\n    $pnt1$084 = $pnt1$084 + 2 | 0;\n    $pnt2$083 = $pnt2$083 + 2 | 0;\n   }\n  }\n }\n $11 = $0 + -1 | 0;\n if (($ysize | 0) > 1) {\n  $i$176 = 0;\n  $pnt1$178 = $2;\n  $pnt2$177 = $2 + ($11 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$177 >> 1] = 0;\n   HEAP16[$pnt1$178 >> 1] = 0;\n   $i$176 = $i$176 + 1 | 0;\n   if (($i$176 | 0) >= ($1 | 0)) break; else {\n    $pnt1$178 = $pnt1$178 + ($0 << 1) | 0;\n    $pnt2$177 = $pnt2$177 + ($0 << 1) | 0;\n   }\n  }\n }\n $18 = $labelInfo + 1179664 | 0;\n $20 = 0 - $0 | 0;\n $$sum1 = 1 - $0 | 0;\n $$sum2 = ~$0;\n $$sum = ($xsize << 1) + 8 | 0;\n L11 : do if (($3 | 0) > 1) {\n  $27 = ($11 | 0) > 1;\n  $j$069 = 1;\n  $pnt$073 = $image + (($xsize << 2) + 4) | 0;\n  $pnt2$272 = $2 + ($0 + 1 << 1) | 0;\n  $wk_max$071 = 0;\n  L13 : while (1) {\n   if ($27) {\n    $i$256 = 1;\n    $pnt$164 = $pnt$073;\n    $pnt2$363 = $pnt2$272;\n    $wk_max$158 = $wk_max$071;\n    while (1) {\n     do if ((HEAPU8[$pnt$164 + 1 >> 0] | 0 | 0) > ($labelingThresh | 0)) {\n      HEAP16[$pnt2$363 >> 1] = 0;\n      $wk_max$2 = $wk_max$158;\n     } else {\n      $33 = HEAP16[$pnt2$363 + ($20 << 1) >> 1] | 0;\n      if ($33 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$363 >> 1] = $33;\n       $36 = ($33 << 16 >> 16) * 7 | 0;\n       $38 = $labelInfo + 1310736 + ($36 + -7 << 2) | 0;\n       HEAP32[$38 >> 2] = (HEAP32[$38 >> 2] | 0) + 1;\n       $42 = $labelInfo + 1310736 + ($36 + -6 << 2) | 0;\n       HEAP32[$42 >> 2] = (HEAP32[$42 >> 2] | 0) + $i$256;\n       $46 = $labelInfo + 1310736 + ($36 + -5 << 2) | 0;\n       HEAP32[$46 >> 2] = (HEAP32[$46 >> 2] | 0) + $j$069;\n       HEAP32[$labelInfo + 1310736 + ($36 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $52 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0;\n      $53 = $52 << 16 >> 16;\n      $56 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0;\n      $57 = $56 << 16 >> 16;\n      $58 = $56 << 16 >> 16 > 0;\n      if ($52 << 16 >> 16 <= 0) {\n       if ($58) {\n        HEAP16[$pnt2$363 >> 1] = $56;\n        $158 = $57 * 7 | 0;\n        $160 = $labelInfo + 1310736 + ($158 + -7 << 2) | 0;\n        HEAP32[$160 >> 2] = (HEAP32[$160 >> 2] | 0) + 1;\n        $164 = $labelInfo + 1310736 + ($158 + -6 << 2) | 0;\n        HEAP32[$164 >> 2] = (HEAP32[$164 >> 2] | 0) + $i$256;\n        $168 = $labelInfo + 1310736 + ($158 + -5 << 2) | 0;\n        HEAP32[$168 >> 2] = (HEAP32[$168 >> 2] | 0) + $j$069;\n        $172 = $labelInfo + 1310736 + ($158 + -3 << 2) | 0;\n        if ((HEAP32[$172 >> 2] | 0) < ($i$256 | 0)) HEAP32[$172 >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($158 + -1 << 2) >> 2] = $j$069;\n        $wk_max$2 = $wk_max$158;\n        break;\n       }\n       $178 = HEAP16[$pnt2$363 + -2 >> 1] | 0;\n       if ($178 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$363 >> 1] = $178;\n        $181 = ($178 << 16 >> 16) * 7 | 0;\n        $183 = $labelInfo + 1310736 + ($181 + -7 << 2) | 0;\n        HEAP32[$183 >> 2] = (HEAP32[$183 >> 2] | 0) + 1;\n        $187 = $labelInfo + 1310736 + ($181 + -6 << 2) | 0;\n        HEAP32[$187 >> 2] = (HEAP32[$187 >> 2] | 0) + $i$256;\n        $191 = $labelInfo + 1310736 + ($181 + -5 << 2) | 0;\n        HEAP32[$191 >> 2] = (HEAP32[$191 >> 2] | 0) + $j$069;\n        $195 = $labelInfo + 1310736 + ($181 + -3 << 2) | 0;\n        if ((HEAP32[$195 >> 2] | 0) >= ($i$256 | 0)) {\n         $wk_max$2 = $wk_max$158;\n         break;\n        }\n        HEAP32[$195 >> 2] = $i$256;\n        $wk_max$2 = $wk_max$158;\n        break;\n       } else {\n        $198 = $wk_max$158 + 1 | 0;\n        if (($wk_max$158 | 0) > 32767) break L13;\n        HEAP16[$pnt2$363 >> 1] = $198;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $198 << 16 >> 16;\n        $203 = $wk_max$158 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($203 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($203 + 1 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($203 + 2 << 2) >> 2] = $j$069;\n        HEAP32[$labelInfo + 1310736 + ($203 + 3 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($203 + 4 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($203 + 5 << 2) >> 2] = $j$069;\n        HEAP32[$labelInfo + 1310736 + ($203 + 6 << 2) >> 2] = $j$069;\n        $wk_max$2 = $198;\n        break;\n       }\n      }\n      if ($58) {\n       $61 = HEAP32[$labelInfo + 1179664 + ($53 + -1 << 2) >> 2] | 0;\n       $64 = HEAP32[$labelInfo + 1179664 + ($57 + -1 << 2) >> 2] | 0;\n       if (($61 | 0) > ($64 | 0)) {\n        HEAP16[$pnt2$363 >> 1] = $64;\n        if (($wk_max$158 | 0) > 0) {\n         $k$052 = 0;\n         $wk$053 = $18;\n         while (1) {\n          if ((HEAP32[$wk$053 >> 2] | 0) == ($61 | 0)) HEAP32[$wk$053 >> 2] = $64;\n          $k$052 = $k$052 + 1 | 0;\n          if (($k$052 | 0) >= ($wk_max$158 | 0)) {\n           $81 = $64;\n           break;\n          } else $wk$053 = $wk$053 + 4 | 0;\n         }\n        } else $81 = $64;\n       } else {\n        HEAP16[$pnt2$363 >> 1] = $61;\n        if (($61 | 0) < ($64 | 0) & ($wk_max$158 | 0) > 0) {\n         $k$149 = 0;\n         $wk$150 = $18;\n         while (1) {\n          if ((HEAP32[$wk$150 >> 2] | 0) == ($64 | 0)) HEAP32[$wk$150 >> 2] = $61;\n          $k$149 = $k$149 + 1 | 0;\n          if (($k$149 | 0) >= ($wk_max$158 | 0)) {\n           $81 = $61;\n           break;\n          } else $wk$150 = $wk$150 + 4 | 0;\n         }\n        } else $81 = $61;\n       }\n       $83 = ($81 << 16 >> 16) * 7 | 0;\n       $85 = $labelInfo + 1310736 + ($83 + -7 << 2) | 0;\n       HEAP32[$85 >> 2] = (HEAP32[$85 >> 2] | 0) + 1;\n       $89 = $labelInfo + 1310736 + ($83 + -6 << 2) | 0;\n       HEAP32[$89 >> 2] = (HEAP32[$89 >> 2] | 0) + $i$256;\n       $93 = $labelInfo + 1310736 + ($83 + -5 << 2) | 0;\n       HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + $j$069;\n       HEAP32[$labelInfo + 1310736 + ($83 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $99 = HEAP16[$pnt2$363 + -2 >> 1] | 0;\n      if ($99 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$363 >> 1] = $52;\n       $139 = $53 * 7 | 0;\n       $141 = $labelInfo + 1310736 + ($139 + -7 << 2) | 0;\n       HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + 1;\n       $145 = $labelInfo + 1310736 + ($139 + -6 << 2) | 0;\n       HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $i$256;\n       $149 = $labelInfo + 1310736 + ($139 + -5 << 2) | 0;\n       HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $j$069;\n       $153 = $labelInfo + 1310736 + ($139 + -4 << 2) | 0;\n       if ((HEAP32[$153 >> 2] | 0) > ($i$256 | 0)) HEAP32[$153 >> 2] = $i$256;\n       HEAP32[$labelInfo + 1310736 + ($139 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $104 = HEAP32[$labelInfo + 1179664 + ($53 + -1 << 2) >> 2] | 0;\n      $107 = HEAP32[$labelInfo + 1179664 + (($99 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($104 | 0) > ($107 | 0)) {\n       HEAP16[$pnt2$363 >> 1] = $107;\n       if (($wk_max$158 | 0) > 0) {\n        $k$245 = 0;\n        $wk$246 = $18;\n        while (1) {\n         if ((HEAP32[$wk$246 >> 2] | 0) == ($104 | 0)) HEAP32[$wk$246 >> 2] = $107;\n         $k$245 = $k$245 + 1 | 0;\n         if (($k$245 | 0) >= ($wk_max$158 | 0)) {\n          $124 = $107;\n          break;\n         } else $wk$246 = $wk$246 + 4 | 0;\n        }\n       } else $124 = $107;\n      } else {\n       HEAP16[$pnt2$363 >> 1] = $104;\n       if (($104 | 0) < ($107 | 0) & ($wk_max$158 | 0) > 0) {\n        $k$342 = 0;\n        $wk$343 = $18;\n        while (1) {\n         if ((HEAP32[$wk$343 >> 2] | 0) == ($107 | 0)) HEAP32[$wk$343 >> 2] = $104;\n         $k$342 = $k$342 + 1 | 0;\n         if (($k$342 | 0) >= ($wk_max$158 | 0)) {\n          $124 = $104;\n          break;\n         } else $wk$343 = $wk$343 + 4 | 0;\n        }\n       } else $124 = $104;\n      }\n      $126 = ($124 << 16 >> 16) * 7 | 0;\n      $128 = $labelInfo + 1310736 + ($126 + -7 << 2) | 0;\n      HEAP32[$128 >> 2] = (HEAP32[$128 >> 2] | 0) + 1;\n      $132 = $labelInfo + 1310736 + ($126 + -6 << 2) | 0;\n      HEAP32[$132 >> 2] = (HEAP32[$132 >> 2] | 0) + $i$256;\n      $136 = $labelInfo + 1310736 + ($126 + -5 << 2) | 0;\n      HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + $j$069;\n      $wk_max$2 = $wk_max$158;\n     } while (0);\n     $i$256 = $i$256 + 1 | 0;\n     $218 = $pnt$164 + 4 | 0;\n     $219 = $pnt2$363 + 2 | 0;\n     if (($i$256 | 0) >= ($11 | 0)) {\n      $pnt$1$lcssa = $218;\n      $pnt2$3$lcssa = $219;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $pnt$164 = $218;\n      $pnt2$363 = $219;\n      $wk_max$158 = $wk_max$2;\n     }\n    }\n   } else {\n    $pnt$1$lcssa = $pnt$073;\n    $pnt2$3$lcssa = $pnt2$272;\n    $wk_max$1$lcssa = $wk_max$071;\n   }\n   $j$069 = $j$069 + 1 | 0;\n   if (($j$069 | 0) >= ($3 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $pnt$073 = $pnt$1$lcssa + $$sum | 0;\n    $pnt2$272 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$071 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $225 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$338 = 1;\n   $j$139 = 1;\n   $wk$440 = $18;\n   while (1) {\n    $227 = HEAP32[$wk$440 >> 2] | 0;\n    if (($227 | 0) == ($i$338 | 0)) {\n     $233 = $j$139;\n     $j$2 = $j$139 + 1 | 0;\n    } else {\n     $233 = HEAP32[$labelInfo + 1179664 + ($227 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$139;\n    }\n    HEAP32[$wk$440 >> 2] = $233;\n    if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$338 = $i$338 + 1 | 0;\n     $j$139 = $j$2;\n     $wk$440 = $wk$440 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $237 = $labelInfo + 8 | 0;\n  $238 = $j$1$lcssa + -1 | 0;\n  HEAP32[$237 >> 2] = $238;\n  if (!$238) $$0 = 0; else {\n   _memset($225 | 0, 0, $238 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $238 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$436 = 0;\n    do {\n     $245 = $i$436 << 2;\n     HEAP32[$labelInfo + 131084 + ($245 << 2) >> 2] = $0;\n     HEAP32[$labelInfo + 131084 + (($245 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($245 | 2) << 2) >> 2] = $1;\n     HEAP32[$labelInfo + 131084 + (($245 | 3) << 2) >> 2] = 0;\n     $i$436 = $i$436 + 1 | 0;\n    } while (($i$436 | 0) < (HEAP32[$237 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$534 = 0;\n    do {\n     $259 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0;\n     $260 = $i$534 * 7 | 0;\n     $263 = $labelInfo + 12 + ($259 << 2) | 0;\n     HEAP32[$263 >> 2] = (HEAP32[$263 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($260 << 2) >> 2] | 0);\n     $270 = $259 << 1;\n     $271 = $labelInfo + 655376 + ($270 << 3) | 0;\n     HEAPF64[$271 >> 3] = +HEAPF64[$271 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($260 + 1 << 2) >> 2] | 0);\n     $279 = $labelInfo + 655376 + (($270 | 1) << 3) | 0;\n     HEAPF64[$279 >> 3] = +HEAPF64[$279 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($260 + 2 << 2) >> 2] | 0);\n     $282 = $259 << 2;\n     $283 = $labelInfo + 131084 + ($282 << 2) | 0;\n     $287 = HEAP32[$labelInfo + 1310736 + ($260 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$283 >> 2] | 0) > ($287 | 0)) HEAP32[$283 >> 2] = $287;\n     $290 = $labelInfo + 131084 + (($282 | 1) << 2) | 0;\n     $294 = HEAP32[$labelInfo + 1310736 + ($260 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$290 >> 2] | 0) < ($294 | 0)) HEAP32[$290 >> 2] = $294;\n     $297 = $labelInfo + 131084 + (($282 | 2) << 2) | 0;\n     $301 = HEAP32[$labelInfo + 1310736 + ($260 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$297 >> 2] | 0) > ($301 | 0)) HEAP32[$297 >> 2] = $301;\n     $304 = $labelInfo + 131084 + (($282 | 3) << 2) | 0;\n     $308 = HEAP32[$labelInfo + 1310736 + ($260 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$304 >> 2] | 0) < ($308 | 0)) HEAP32[$304 >> 2] = $308;\n     $i$534 = $i$534 + 1 | 0;\n    } while (($i$534 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$237 >> 2] | 0) > 0) {\n    $i$633 = 0;\n    do {\n     $312 = $labelInfo + 12 + ($i$633 << 2) | 0;\n     $315 = $i$633 << 1;\n     $316 = $labelInfo + 655376 + ($315 << 3) | 0;\n     HEAPF64[$316 >> 3] = +HEAPF64[$316 >> 3] / +(HEAP32[$312 >> 2] | 0);\n     $322 = $labelInfo + 655376 + (($315 | 1) << 3) | 0;\n     HEAPF64[$322 >> 3] = +HEAPF64[$322 >> 3] / +(HEAP32[$312 >> 2] | 0);\n     $i$633 = $i$633 + 1 | 0;\n    } while (($i$633 | 0) < (HEAP32[$237 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubDWIYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $103 = 0, $106 = 0, $11 = 0, $123 = 0, $125 = 0, $127 = 0, $131 = 0, $135 = 0, $138 = 0, $140 = 0, $144 = 0, $148 = 0, $152 = 0, $157 = 0, $159 = 0, $163 = 0, $167 = 0, $171 = 0, $177 = 0, $18 = 0, $180 = 0, $182 = 0, $186 = 0, $190 = 0, $194 = 0, $197 = 0, $2 = 0, $20 = 0, $202 = 0, $217 = 0, $218 = 0, $224 = 0, $226 = 0, $232 = 0, $236 = 0, $237 = 0, $244 = 0, $258 = 0, $259 = 0, $262 = 0, $269 = 0, $27 = 0, $270 = 0, $278 = 0, $281 = 0, $282 = 0, $286 = 0, $289 = 0, $293 = 0, $296 = 0, $3 = 0, $300 = 0, $303 = 0, $307 = 0, $311 = 0, $314 = 0, $315 = 0, $32 = 0, $321 = 0, $35 = 0, $37 = 0, $41 = 0, $45 = 0, $51 = 0, $52 = 0, $55 = 0, $56 = 0, $57 = 0, $60 = 0, $63 = 0, $80 = 0, $82 = 0, $84 = 0, $88 = 0, $92 = 0, $98 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = ($xsize | 0) / 2 | 0;\n $1 = ($ysize | 0) / 2 | 0;\n $2 = HEAP32[$labelInfo >> 2] | 0;\n $3 = $1 + -1 | 0;\n if (($xsize | 0) > 1) {\n  $i$082 = 0;\n  $pnt1$084 = $2;\n  $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$083 >> 1] = 0;\n   HEAP16[$pnt1$084 >> 1] = 0;\n   $i$082 = $i$082 + 1 | 0;\n   if (($i$082 | 0) >= ($0 | 0)) break; else {\n    $pnt1$084 = $pnt1$084 + 2 | 0;\n    $pnt2$083 = $pnt2$083 + 2 | 0;\n   }\n  }\n }\n $11 = $0 + -1 | 0;\n if (($ysize | 0) > 1) {\n  $i$176 = 0;\n  $pnt1$178 = $2;\n  $pnt2$177 = $2 + ($11 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$177 >> 1] = 0;\n   HEAP16[$pnt1$178 >> 1] = 0;\n   $i$176 = $i$176 + 1 | 0;\n   if (($i$176 | 0) >= ($1 | 0)) break; else {\n    $pnt1$178 = $pnt1$178 + ($0 << 1) | 0;\n    $pnt2$177 = $pnt2$177 + ($0 << 1) | 0;\n   }\n  }\n }\n $18 = $labelInfo + 1179664 | 0;\n $20 = 0 - $0 | 0;\n $$sum1 = 1 - $0 | 0;\n $$sum2 = ~$0;\n $$sum = ($xsize << 1) + 8 | 0;\n L11 : do if (($3 | 0) > 1) {\n  $27 = ($11 | 0) > 1;\n  $j$069 = 1;\n  $pnt$073 = $image + (($xsize << 2) + 4) | 0;\n  $pnt2$272 = $2 + ($0 + 1 << 1) | 0;\n  $wk_max$071 = 0;\n  L13 : while (1) {\n   if ($27) {\n    $i$256 = 1;\n    $pnt$164 = $pnt$073;\n    $pnt2$363 = $pnt2$272;\n    $wk_max$158 = $wk_max$071;\n    while (1) {\n     do if ((HEAPU8[$pnt$164 >> 0] | 0 | 0) > ($labelingThresh | 0)) {\n      $32 = HEAP16[$pnt2$363 + ($20 << 1) >> 1] | 0;\n      if ($32 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$363 >> 1] = $32;\n       $35 = ($32 << 16 >> 16) * 7 | 0;\n       $37 = $labelInfo + 1310736 + ($35 + -7 << 2) | 0;\n       HEAP32[$37 >> 2] = (HEAP32[$37 >> 2] | 0) + 1;\n       $41 = $labelInfo + 1310736 + ($35 + -6 << 2) | 0;\n       HEAP32[$41 >> 2] = (HEAP32[$41 >> 2] | 0) + $i$256;\n       $45 = $labelInfo + 1310736 + ($35 + -5 << 2) | 0;\n       HEAP32[$45 >> 2] = (HEAP32[$45 >> 2] | 0) + $j$069;\n       HEAP32[$labelInfo + 1310736 + ($35 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $51 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0;\n      $52 = $51 << 16 >> 16;\n      $55 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0;\n      $56 = $55 << 16 >> 16;\n      $57 = $55 << 16 >> 16 > 0;\n      if ($51 << 16 >> 16 <= 0) {\n       if ($57) {\n        HEAP16[$pnt2$363 >> 1] = $55;\n        $157 = $56 * 7 | 0;\n        $159 = $labelInfo + 1310736 + ($157 + -7 << 2) | 0;\n        HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + 1;\n        $163 = $labelInfo + 1310736 + ($157 + -6 << 2) | 0;\n        HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + $i$256;\n        $167 = $labelInfo + 1310736 + ($157 + -5 << 2) | 0;\n        HEAP32[$167 >> 2] = (HEAP32[$167 >> 2] | 0) + $j$069;\n        $171 = $labelInfo + 1310736 + ($157 + -3 << 2) | 0;\n        if ((HEAP32[$171 >> 2] | 0) < ($i$256 | 0)) HEAP32[$171 >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($157 + -1 << 2) >> 2] = $j$069;\n        $wk_max$2 = $wk_max$158;\n        break;\n       }\n       $177 = HEAP16[$pnt2$363 + -2 >> 1] | 0;\n       if ($177 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$363 >> 1] = $177;\n        $180 = ($177 << 16 >> 16) * 7 | 0;\n        $182 = $labelInfo + 1310736 + ($180 + -7 << 2) | 0;\n        HEAP32[$182 >> 2] = (HEAP32[$182 >> 2] | 0) + 1;\n        $186 = $labelInfo + 1310736 + ($180 + -6 << 2) | 0;\n        HEAP32[$186 >> 2] = (HEAP32[$186 >> 2] | 0) + $i$256;\n        $190 = $labelInfo + 1310736 + ($180 + -5 << 2) | 0;\n        HEAP32[$190 >> 2] = (HEAP32[$190 >> 2] | 0) + $j$069;\n        $194 = $labelInfo + 1310736 + ($180 + -3 << 2) | 0;\n        if ((HEAP32[$194 >> 2] | 0) >= ($i$256 | 0)) {\n         $wk_max$2 = $wk_max$158;\n         break;\n        }\n        HEAP32[$194 >> 2] = $i$256;\n        $wk_max$2 = $wk_max$158;\n        break;\n       } else {\n        $197 = $wk_max$158 + 1 | 0;\n        if (($wk_max$158 | 0) > 32767) break L13;\n        HEAP16[$pnt2$363 >> 1] = $197;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $197 << 16 >> 16;\n        $202 = $wk_max$158 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($202 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($202 + 1 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($202 + 2 << 2) >> 2] = $j$069;\n        HEAP32[$labelInfo + 1310736 + ($202 + 3 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($202 + 4 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($202 + 5 << 2) >> 2] = $j$069;\n        HEAP32[$labelInfo + 1310736 + ($202 + 6 << 2) >> 2] = $j$069;\n        $wk_max$2 = $197;\n        break;\n       }\n      }\n      if ($57) {\n       $60 = HEAP32[$labelInfo + 1179664 + ($52 + -1 << 2) >> 2] | 0;\n       $63 = HEAP32[$labelInfo + 1179664 + ($56 + -1 << 2) >> 2] | 0;\n       if (($60 | 0) > ($63 | 0)) {\n        HEAP16[$pnt2$363 >> 1] = $63;\n        if (($wk_max$158 | 0) > 0) {\n         $k$052 = 0;\n         $wk$053 = $18;\n         while (1) {\n          if ((HEAP32[$wk$053 >> 2] | 0) == ($60 | 0)) HEAP32[$wk$053 >> 2] = $63;\n          $k$052 = $k$052 + 1 | 0;\n          if (($k$052 | 0) >= ($wk_max$158 | 0)) {\n           $80 = $63;\n           break;\n          } else $wk$053 = $wk$053 + 4 | 0;\n         }\n        } else $80 = $63;\n       } else {\n        HEAP16[$pnt2$363 >> 1] = $60;\n        if (($60 | 0) < ($63 | 0) & ($wk_max$158 | 0) > 0) {\n         $k$149 = 0;\n         $wk$150 = $18;\n         while (1) {\n          if ((HEAP32[$wk$150 >> 2] | 0) == ($63 | 0)) HEAP32[$wk$150 >> 2] = $60;\n          $k$149 = $k$149 + 1 | 0;\n          if (($k$149 | 0) >= ($wk_max$158 | 0)) {\n           $80 = $60;\n           break;\n          } else $wk$150 = $wk$150 + 4 | 0;\n         }\n        } else $80 = $60;\n       }\n       $82 = ($80 << 16 >> 16) * 7 | 0;\n       $84 = $labelInfo + 1310736 + ($82 + -7 << 2) | 0;\n       HEAP32[$84 >> 2] = (HEAP32[$84 >> 2] | 0) + 1;\n       $88 = $labelInfo + 1310736 + ($82 + -6 << 2) | 0;\n       HEAP32[$88 >> 2] = (HEAP32[$88 >> 2] | 0) + $i$256;\n       $92 = $labelInfo + 1310736 + ($82 + -5 << 2) | 0;\n       HEAP32[$92 >> 2] = (HEAP32[$92 >> 2] | 0) + $j$069;\n       HEAP32[$labelInfo + 1310736 + ($82 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $98 = HEAP16[$pnt2$363 + -2 >> 1] | 0;\n      if ($98 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$363 >> 1] = $51;\n       $138 = $52 * 7 | 0;\n       $140 = $labelInfo + 1310736 + ($138 + -7 << 2) | 0;\n       HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + 1;\n       $144 = $labelInfo + 1310736 + ($138 + -6 << 2) | 0;\n       HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $i$256;\n       $148 = $labelInfo + 1310736 + ($138 + -5 << 2) | 0;\n       HEAP32[$148 >> 2] = (HEAP32[$148 >> 2] | 0) + $j$069;\n       $152 = $labelInfo + 1310736 + ($138 + -4 << 2) | 0;\n       if ((HEAP32[$152 >> 2] | 0) > ($i$256 | 0)) HEAP32[$152 >> 2] = $i$256;\n       HEAP32[$labelInfo + 1310736 + ($138 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $103 = HEAP32[$labelInfo + 1179664 + ($52 + -1 << 2) >> 2] | 0;\n      $106 = HEAP32[$labelInfo + 1179664 + (($98 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($103 | 0) > ($106 | 0)) {\n       HEAP16[$pnt2$363 >> 1] = $106;\n       if (($wk_max$158 | 0) > 0) {\n        $k$245 = 0;\n        $wk$246 = $18;\n        while (1) {\n         if ((HEAP32[$wk$246 >> 2] | 0) == ($103 | 0)) HEAP32[$wk$246 >> 2] = $106;\n         $k$245 = $k$245 + 1 | 0;\n         if (($k$245 | 0) >= ($wk_max$158 | 0)) {\n          $123 = $106;\n          break;\n         } else $wk$246 = $wk$246 + 4 | 0;\n        }\n       } else $123 = $106;\n      } else {\n       HEAP16[$pnt2$363 >> 1] = $103;\n       if (($103 | 0) < ($106 | 0) & ($wk_max$158 | 0) > 0) {\n        $k$342 = 0;\n        $wk$343 = $18;\n        while (1) {\n         if ((HEAP32[$wk$343 >> 2] | 0) == ($106 | 0)) HEAP32[$wk$343 >> 2] = $103;\n         $k$342 = $k$342 + 1 | 0;\n         if (($k$342 | 0) >= ($wk_max$158 | 0)) {\n          $123 = $103;\n          break;\n         } else $wk$343 = $wk$343 + 4 | 0;\n        }\n       } else $123 = $103;\n      }\n      $125 = ($123 << 16 >> 16) * 7 | 0;\n      $127 = $labelInfo + 1310736 + ($125 + -7 << 2) | 0;\n      HEAP32[$127 >> 2] = (HEAP32[$127 >> 2] | 0) + 1;\n      $131 = $labelInfo + 1310736 + ($125 + -6 << 2) | 0;\n      HEAP32[$131 >> 2] = (HEAP32[$131 >> 2] | 0) + $i$256;\n      $135 = $labelInfo + 1310736 + ($125 + -5 << 2) | 0;\n      HEAP32[$135 >> 2] = (HEAP32[$135 >> 2] | 0) + $j$069;\n      $wk_max$2 = $wk_max$158;\n     } else {\n      HEAP16[$pnt2$363 >> 1] = 0;\n      $wk_max$2 = $wk_max$158;\n     } while (0);\n     $i$256 = $i$256 + 1 | 0;\n     $217 = $pnt$164 + 4 | 0;\n     $218 = $pnt2$363 + 2 | 0;\n     if (($i$256 | 0) >= ($11 | 0)) {\n      $pnt$1$lcssa = $217;\n      $pnt2$3$lcssa = $218;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $pnt$164 = $217;\n      $pnt2$363 = $218;\n      $wk_max$158 = $wk_max$2;\n     }\n    }\n   } else {\n    $pnt$1$lcssa = $pnt$073;\n    $pnt2$3$lcssa = $pnt2$272;\n    $wk_max$1$lcssa = $wk_max$071;\n   }\n   $j$069 = $j$069 + 1 | 0;\n   if (($j$069 | 0) >= ($3 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $pnt$073 = $pnt$1$lcssa + $$sum | 0;\n    $pnt2$272 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$071 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $224 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$338 = 1;\n   $j$139 = 1;\n   $wk$440 = $18;\n   while (1) {\n    $226 = HEAP32[$wk$440 >> 2] | 0;\n    if (($226 | 0) == ($i$338 | 0)) {\n     $232 = $j$139;\n     $j$2 = $j$139 + 1 | 0;\n    } else {\n     $232 = HEAP32[$labelInfo + 1179664 + ($226 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$139;\n    }\n    HEAP32[$wk$440 >> 2] = $232;\n    if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$338 = $i$338 + 1 | 0;\n     $j$139 = $j$2;\n     $wk$440 = $wk$440 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $236 = $labelInfo + 8 | 0;\n  $237 = $j$1$lcssa + -1 | 0;\n  HEAP32[$236 >> 2] = $237;\n  if (!$237) $$0 = 0; else {\n   _memset($224 | 0, 0, $237 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $237 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$436 = 0;\n    do {\n     $244 = $i$436 << 2;\n     HEAP32[$labelInfo + 131084 + ($244 << 2) >> 2] = $0;\n     HEAP32[$labelInfo + 131084 + (($244 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($244 | 2) << 2) >> 2] = $1;\n     HEAP32[$labelInfo + 131084 + (($244 | 3) << 2) >> 2] = 0;\n     $i$436 = $i$436 + 1 | 0;\n    } while (($i$436 | 0) < (HEAP32[$236 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$534 = 0;\n    do {\n     $258 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0;\n     $259 = $i$534 * 7 | 0;\n     $262 = $labelInfo + 12 + ($258 << 2) | 0;\n     HEAP32[$262 >> 2] = (HEAP32[$262 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($259 << 2) >> 2] | 0);\n     $269 = $258 << 1;\n     $270 = $labelInfo + 655376 + ($269 << 3) | 0;\n     HEAPF64[$270 >> 3] = +HEAPF64[$270 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($259 + 1 << 2) >> 2] | 0);\n     $278 = $labelInfo + 655376 + (($269 | 1) << 3) | 0;\n     HEAPF64[$278 >> 3] = +HEAPF64[$278 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($259 + 2 << 2) >> 2] | 0);\n     $281 = $258 << 2;\n     $282 = $labelInfo + 131084 + ($281 << 2) | 0;\n     $286 = HEAP32[$labelInfo + 1310736 + ($259 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$282 >> 2] | 0) > ($286 | 0)) HEAP32[$282 >> 2] = $286;\n     $289 = $labelInfo + 131084 + (($281 | 1) << 2) | 0;\n     $293 = HEAP32[$labelInfo + 1310736 + ($259 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$289 >> 2] | 0) < ($293 | 0)) HEAP32[$289 >> 2] = $293;\n     $296 = $labelInfo + 131084 + (($281 | 2) << 2) | 0;\n     $300 = HEAP32[$labelInfo + 1310736 + ($259 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$296 >> 2] | 0) > ($300 | 0)) HEAP32[$296 >> 2] = $300;\n     $303 = $labelInfo + 131084 + (($281 | 3) << 2) | 0;\n     $307 = HEAP32[$labelInfo + 1310736 + ($259 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$303 >> 2] | 0) < ($307 | 0)) HEAP32[$303 >> 2] = $307;\n     $i$534 = $i$534 + 1 | 0;\n    } while (($i$534 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$236 >> 2] | 0) > 0) {\n    $i$633 = 0;\n    do {\n     $311 = $labelInfo + 12 + ($i$633 << 2) | 0;\n     $314 = $i$633 << 1;\n     $315 = $labelInfo + 655376 + ($314 << 3) | 0;\n     HEAPF64[$315 >> 3] = +HEAPF64[$315 >> 3] / +(HEAP32[$311 >> 2] | 0);\n     $321 = $labelInfo + 655376 + (($314 | 1) << 3) | 0;\n     HEAPF64[$321 >> 3] = +HEAPF64[$321 >> 3] / +(HEAP32[$311 >> 2] | 0);\n     $i$633 = $i$633 + 1 | 0;\n    } while (($i$633 | 0) < (HEAP32[$236 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubDBIYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $103 = 0, $106 = 0, $11 = 0, $123 = 0, $125 = 0, $127 = 0, $131 = 0, $135 = 0, $138 = 0, $140 = 0, $144 = 0, $148 = 0, $152 = 0, $157 = 0, $159 = 0, $163 = 0, $167 = 0, $171 = 0, $177 = 0, $18 = 0, $180 = 0, $182 = 0, $186 = 0, $190 = 0, $194 = 0, $197 = 0, $2 = 0, $20 = 0, $202 = 0, $217 = 0, $218 = 0, $224 = 0, $226 = 0, $232 = 0, $236 = 0, $237 = 0, $244 = 0, $258 = 0, $259 = 0, $262 = 0, $269 = 0, $27 = 0, $270 = 0, $278 = 0, $281 = 0, $282 = 0, $286 = 0, $289 = 0, $293 = 0, $296 = 0, $3 = 0, $300 = 0, $303 = 0, $307 = 0, $311 = 0, $314 = 0, $315 = 0, $32 = 0, $321 = 0, $35 = 0, $37 = 0, $41 = 0, $45 = 0, $51 = 0, $52 = 0, $55 = 0, $56 = 0, $57 = 0, $60 = 0, $63 = 0, $80 = 0, $82 = 0, $84 = 0, $88 = 0, $92 = 0, $98 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = ($xsize | 0) / 2 | 0;\n $1 = ($ysize | 0) / 2 | 0;\n $2 = HEAP32[$labelInfo >> 2] | 0;\n $3 = $1 + -1 | 0;\n if (($xsize | 0) > 1) {\n  $i$082 = 0;\n  $pnt1$084 = $2;\n  $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$083 >> 1] = 0;\n   HEAP16[$pnt1$084 >> 1] = 0;\n   $i$082 = $i$082 + 1 | 0;\n   if (($i$082 | 0) >= ($0 | 0)) break; else {\n    $pnt1$084 = $pnt1$084 + 2 | 0;\n    $pnt2$083 = $pnt2$083 + 2 | 0;\n   }\n  }\n }\n $11 = $0 + -1 | 0;\n if (($ysize | 0) > 1) {\n  $i$176 = 0;\n  $pnt1$178 = $2;\n  $pnt2$177 = $2 + ($11 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$177 >> 1] = 0;\n   HEAP16[$pnt1$178 >> 1] = 0;\n   $i$176 = $i$176 + 1 | 0;\n   if (($i$176 | 0) >= ($1 | 0)) break; else {\n    $pnt1$178 = $pnt1$178 + ($0 << 1) | 0;\n    $pnt2$177 = $pnt2$177 + ($0 << 1) | 0;\n   }\n  }\n }\n $18 = $labelInfo + 1179664 | 0;\n $20 = 0 - $0 | 0;\n $$sum1 = 1 - $0 | 0;\n $$sum2 = ~$0;\n $$sum = ($xsize << 1) + 8 | 0;\n L11 : do if (($3 | 0) > 1) {\n  $27 = ($11 | 0) > 1;\n  $j$069 = 1;\n  $pnt$073 = $image + (($xsize << 2) + 4) | 0;\n  $pnt2$272 = $2 + ($0 + 1 << 1) | 0;\n  $wk_max$071 = 0;\n  L13 : while (1) {\n   if ($27) {\n    $i$256 = 1;\n    $pnt$164 = $pnt$073;\n    $pnt2$363 = $pnt2$272;\n    $wk_max$158 = $wk_max$071;\n    while (1) {\n     do if ((HEAPU8[$pnt$164 >> 0] | 0 | 0) > ($labelingThresh | 0)) {\n      HEAP16[$pnt2$363 >> 1] = 0;\n      $wk_max$2 = $wk_max$158;\n     } else {\n      $32 = HEAP16[$pnt2$363 + ($20 << 1) >> 1] | 0;\n      if ($32 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$363 >> 1] = $32;\n       $35 = ($32 << 16 >> 16) * 7 | 0;\n       $37 = $labelInfo + 1310736 + ($35 + -7 << 2) | 0;\n       HEAP32[$37 >> 2] = (HEAP32[$37 >> 2] | 0) + 1;\n       $41 = $labelInfo + 1310736 + ($35 + -6 << 2) | 0;\n       HEAP32[$41 >> 2] = (HEAP32[$41 >> 2] | 0) + $i$256;\n       $45 = $labelInfo + 1310736 + ($35 + -5 << 2) | 0;\n       HEAP32[$45 >> 2] = (HEAP32[$45 >> 2] | 0) + $j$069;\n       HEAP32[$labelInfo + 1310736 + ($35 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $51 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0;\n      $52 = $51 << 16 >> 16;\n      $55 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0;\n      $56 = $55 << 16 >> 16;\n      $57 = $55 << 16 >> 16 > 0;\n      if ($51 << 16 >> 16 <= 0) {\n       if ($57) {\n        HEAP16[$pnt2$363 >> 1] = $55;\n        $157 = $56 * 7 | 0;\n        $159 = $labelInfo + 1310736 + ($157 + -7 << 2) | 0;\n        HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + 1;\n        $163 = $labelInfo + 1310736 + ($157 + -6 << 2) | 0;\n        HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + $i$256;\n        $167 = $labelInfo + 1310736 + ($157 + -5 << 2) | 0;\n        HEAP32[$167 >> 2] = (HEAP32[$167 >> 2] | 0) + $j$069;\n        $171 = $labelInfo + 1310736 + ($157 + -3 << 2) | 0;\n        if ((HEAP32[$171 >> 2] | 0) < ($i$256 | 0)) HEAP32[$171 >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($157 + -1 << 2) >> 2] = $j$069;\n        $wk_max$2 = $wk_max$158;\n        break;\n       }\n       $177 = HEAP16[$pnt2$363 + -2 >> 1] | 0;\n       if ($177 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$363 >> 1] = $177;\n        $180 = ($177 << 16 >> 16) * 7 | 0;\n        $182 = $labelInfo + 1310736 + ($180 + -7 << 2) | 0;\n        HEAP32[$182 >> 2] = (HEAP32[$182 >> 2] | 0) + 1;\n        $186 = $labelInfo + 1310736 + ($180 + -6 << 2) | 0;\n        HEAP32[$186 >> 2] = (HEAP32[$186 >> 2] | 0) + $i$256;\n        $190 = $labelInfo + 1310736 + ($180 + -5 << 2) | 0;\n        HEAP32[$190 >> 2] = (HEAP32[$190 >> 2] | 0) + $j$069;\n        $194 = $labelInfo + 1310736 + ($180 + -3 << 2) | 0;\n        if ((HEAP32[$194 >> 2] | 0) >= ($i$256 | 0)) {\n         $wk_max$2 = $wk_max$158;\n         break;\n        }\n        HEAP32[$194 >> 2] = $i$256;\n        $wk_max$2 = $wk_max$158;\n        break;\n       } else {\n        $197 = $wk_max$158 + 1 | 0;\n        if (($wk_max$158 | 0) > 32767) break L13;\n        HEAP16[$pnt2$363 >> 1] = $197;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $197 << 16 >> 16;\n        $202 = $wk_max$158 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($202 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($202 + 1 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($202 + 2 << 2) >> 2] = $j$069;\n        HEAP32[$labelInfo + 1310736 + ($202 + 3 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($202 + 4 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($202 + 5 << 2) >> 2] = $j$069;\n        HEAP32[$labelInfo + 1310736 + ($202 + 6 << 2) >> 2] = $j$069;\n        $wk_max$2 = $197;\n        break;\n       }\n      }\n      if ($57) {\n       $60 = HEAP32[$labelInfo + 1179664 + ($52 + -1 << 2) >> 2] | 0;\n       $63 = HEAP32[$labelInfo + 1179664 + ($56 + -1 << 2) >> 2] | 0;\n       if (($60 | 0) > ($63 | 0)) {\n        HEAP16[$pnt2$363 >> 1] = $63;\n        if (($wk_max$158 | 0) > 0) {\n         $k$052 = 0;\n         $wk$053 = $18;\n         while (1) {\n          if ((HEAP32[$wk$053 >> 2] | 0) == ($60 | 0)) HEAP32[$wk$053 >> 2] = $63;\n          $k$052 = $k$052 + 1 | 0;\n          if (($k$052 | 0) >= ($wk_max$158 | 0)) {\n           $80 = $63;\n           break;\n          } else $wk$053 = $wk$053 + 4 | 0;\n         }\n        } else $80 = $63;\n       } else {\n        HEAP16[$pnt2$363 >> 1] = $60;\n        if (($60 | 0) < ($63 | 0) & ($wk_max$158 | 0) > 0) {\n         $k$149 = 0;\n         $wk$150 = $18;\n         while (1) {\n          if ((HEAP32[$wk$150 >> 2] | 0) == ($63 | 0)) HEAP32[$wk$150 >> 2] = $60;\n          $k$149 = $k$149 + 1 | 0;\n          if (($k$149 | 0) >= ($wk_max$158 | 0)) {\n           $80 = $60;\n           break;\n          } else $wk$150 = $wk$150 + 4 | 0;\n         }\n        } else $80 = $60;\n       }\n       $82 = ($80 << 16 >> 16) * 7 | 0;\n       $84 = $labelInfo + 1310736 + ($82 + -7 << 2) | 0;\n       HEAP32[$84 >> 2] = (HEAP32[$84 >> 2] | 0) + 1;\n       $88 = $labelInfo + 1310736 + ($82 + -6 << 2) | 0;\n       HEAP32[$88 >> 2] = (HEAP32[$88 >> 2] | 0) + $i$256;\n       $92 = $labelInfo + 1310736 + ($82 + -5 << 2) | 0;\n       HEAP32[$92 >> 2] = (HEAP32[$92 >> 2] | 0) + $j$069;\n       HEAP32[$labelInfo + 1310736 + ($82 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $98 = HEAP16[$pnt2$363 + -2 >> 1] | 0;\n      if ($98 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$363 >> 1] = $51;\n       $138 = $52 * 7 | 0;\n       $140 = $labelInfo + 1310736 + ($138 + -7 << 2) | 0;\n       HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + 1;\n       $144 = $labelInfo + 1310736 + ($138 + -6 << 2) | 0;\n       HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $i$256;\n       $148 = $labelInfo + 1310736 + ($138 + -5 << 2) | 0;\n       HEAP32[$148 >> 2] = (HEAP32[$148 >> 2] | 0) + $j$069;\n       $152 = $labelInfo + 1310736 + ($138 + -4 << 2) | 0;\n       if ((HEAP32[$152 >> 2] | 0) > ($i$256 | 0)) HEAP32[$152 >> 2] = $i$256;\n       HEAP32[$labelInfo + 1310736 + ($138 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $103 = HEAP32[$labelInfo + 1179664 + ($52 + -1 << 2) >> 2] | 0;\n      $106 = HEAP32[$labelInfo + 1179664 + (($98 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($103 | 0) > ($106 | 0)) {\n       HEAP16[$pnt2$363 >> 1] = $106;\n       if (($wk_max$158 | 0) > 0) {\n        $k$245 = 0;\n        $wk$246 = $18;\n        while (1) {\n         if ((HEAP32[$wk$246 >> 2] | 0) == ($103 | 0)) HEAP32[$wk$246 >> 2] = $106;\n         $k$245 = $k$245 + 1 | 0;\n         if (($k$245 | 0) >= ($wk_max$158 | 0)) {\n          $123 = $106;\n          break;\n         } else $wk$246 = $wk$246 + 4 | 0;\n        }\n       } else $123 = $106;\n      } else {\n       HEAP16[$pnt2$363 >> 1] = $103;\n       if (($103 | 0) < ($106 | 0) & ($wk_max$158 | 0) > 0) {\n        $k$342 = 0;\n        $wk$343 = $18;\n        while (1) {\n         if ((HEAP32[$wk$343 >> 2] | 0) == ($106 | 0)) HEAP32[$wk$343 >> 2] = $103;\n         $k$342 = $k$342 + 1 | 0;\n         if (($k$342 | 0) >= ($wk_max$158 | 0)) {\n          $123 = $103;\n          break;\n         } else $wk$343 = $wk$343 + 4 | 0;\n        }\n       } else $123 = $103;\n      }\n      $125 = ($123 << 16 >> 16) * 7 | 0;\n      $127 = $labelInfo + 1310736 + ($125 + -7 << 2) | 0;\n      HEAP32[$127 >> 2] = (HEAP32[$127 >> 2] | 0) + 1;\n      $131 = $labelInfo + 1310736 + ($125 + -6 << 2) | 0;\n      HEAP32[$131 >> 2] = (HEAP32[$131 >> 2] | 0) + $i$256;\n      $135 = $labelInfo + 1310736 + ($125 + -5 << 2) | 0;\n      HEAP32[$135 >> 2] = (HEAP32[$135 >> 2] | 0) + $j$069;\n      $wk_max$2 = $wk_max$158;\n     } while (0);\n     $i$256 = $i$256 + 1 | 0;\n     $217 = $pnt$164 + 4 | 0;\n     $218 = $pnt2$363 + 2 | 0;\n     if (($i$256 | 0) >= ($11 | 0)) {\n      $pnt$1$lcssa = $217;\n      $pnt2$3$lcssa = $218;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $pnt$164 = $217;\n      $pnt2$363 = $218;\n      $wk_max$158 = $wk_max$2;\n     }\n    }\n   } else {\n    $pnt$1$lcssa = $pnt$073;\n    $pnt2$3$lcssa = $pnt2$272;\n    $wk_max$1$lcssa = $wk_max$071;\n   }\n   $j$069 = $j$069 + 1 | 0;\n   if (($j$069 | 0) >= ($3 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $pnt$073 = $pnt$1$lcssa + $$sum | 0;\n    $pnt2$272 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$071 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $224 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$338 = 1;\n   $j$139 = 1;\n   $wk$440 = $18;\n   while (1) {\n    $226 = HEAP32[$wk$440 >> 2] | 0;\n    if (($226 | 0) == ($i$338 | 0)) {\n     $232 = $j$139;\n     $j$2 = $j$139 + 1 | 0;\n    } else {\n     $232 = HEAP32[$labelInfo + 1179664 + ($226 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$139;\n    }\n    HEAP32[$wk$440 >> 2] = $232;\n    if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$338 = $i$338 + 1 | 0;\n     $j$139 = $j$2;\n     $wk$440 = $wk$440 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $236 = $labelInfo + 8 | 0;\n  $237 = $j$1$lcssa + -1 | 0;\n  HEAP32[$236 >> 2] = $237;\n  if (!$237) $$0 = 0; else {\n   _memset($224 | 0, 0, $237 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $237 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$436 = 0;\n    do {\n     $244 = $i$436 << 2;\n     HEAP32[$labelInfo + 131084 + ($244 << 2) >> 2] = $0;\n     HEAP32[$labelInfo + 131084 + (($244 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($244 | 2) << 2) >> 2] = $1;\n     HEAP32[$labelInfo + 131084 + (($244 | 3) << 2) >> 2] = 0;\n     $i$436 = $i$436 + 1 | 0;\n    } while (($i$436 | 0) < (HEAP32[$236 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$534 = 0;\n    do {\n     $258 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0;\n     $259 = $i$534 * 7 | 0;\n     $262 = $labelInfo + 12 + ($258 << 2) | 0;\n     HEAP32[$262 >> 2] = (HEAP32[$262 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($259 << 2) >> 2] | 0);\n     $269 = $258 << 1;\n     $270 = $labelInfo + 655376 + ($269 << 3) | 0;\n     HEAPF64[$270 >> 3] = +HEAPF64[$270 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($259 + 1 << 2) >> 2] | 0);\n     $278 = $labelInfo + 655376 + (($269 | 1) << 3) | 0;\n     HEAPF64[$278 >> 3] = +HEAPF64[$278 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($259 + 2 << 2) >> 2] | 0);\n     $281 = $258 << 2;\n     $282 = $labelInfo + 131084 + ($281 << 2) | 0;\n     $286 = HEAP32[$labelInfo + 1310736 + ($259 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$282 >> 2] | 0) > ($286 | 0)) HEAP32[$282 >> 2] = $286;\n     $289 = $labelInfo + 131084 + (($281 | 1) << 2) | 0;\n     $293 = HEAP32[$labelInfo + 1310736 + ($259 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$289 >> 2] | 0) < ($293 | 0)) HEAP32[$289 >> 2] = $293;\n     $296 = $labelInfo + 131084 + (($281 | 2) << 2) | 0;\n     $300 = HEAP32[$labelInfo + 1310736 + ($259 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$296 >> 2] | 0) > ($300 | 0)) HEAP32[$296 >> 2] = $300;\n     $303 = $labelInfo + 131084 + (($281 | 3) << 2) | 0;\n     $307 = HEAP32[$labelInfo + 1310736 + ($259 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$303 >> 2] | 0) < ($307 | 0)) HEAP32[$303 >> 2] = $307;\n     $i$534 = $i$534 + 1 | 0;\n    } while (($i$534 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$236 >> 2] | 0) > 0) {\n    $i$633 = 0;\n    do {\n     $311 = $labelInfo + 12 + ($i$633 << 2) | 0;\n     $314 = $i$633 << 1;\n     $315 = $labelInfo + 655376 + ($314 << 3) | 0;\n     HEAPF64[$315 >> 3] = +HEAPF64[$315 >> 3] / +(HEAP32[$311 >> 2] | 0);\n     $321 = $labelInfo + 655376 + (($314 | 1) << 3) | 0;\n     HEAPF64[$321 >> 3] = +HEAPF64[$321 >> 3] / +(HEAP32[$311 >> 2] | 0);\n     $i$633 = $i$633 + 1 | 0;\n    } while (($i$633 | 0) < (HEAP32[$236 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubDWIC($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $102 = 0, $105 = 0, $11 = 0, $122 = 0, $124 = 0, $126 = 0, $130 = 0, $134 = 0, $137 = 0, $139 = 0, $143 = 0, $147 = 0, $151 = 0, $156 = 0, $158 = 0, $162 = 0, $166 = 0, $170 = 0, $176 = 0, $179 = 0, $18 = 0, $181 = 0, $185 = 0, $189 = 0, $19 = 0, $193 = 0, $196 = 0, $2 = 0, $201 = 0, $216 = 0, $217 = 0, $223 = 0, $225 = 0, $231 = 0, $235 = 0, $236 = 0, $243 = 0, $257 = 0, $258 = 0, $26 = 0, $261 = 0, $268 = 0, $269 = 0, $277 = 0, $280 = 0, $281 = 0, $285 = 0, $288 = 0, $292 = 0, $295 = 0, $299 = 0, $3 = 0, $302 = 0, $306 = 0, $31 = 0, $310 = 0, $313 = 0, $314 = 0, $320 = 0, $34 = 0, $36 = 0, $40 = 0, $44 = 0, $50 = 0, $51 = 0, $54 = 0, $55 = 0, $56 = 0, $59 = 0, $62 = 0, $79 = 0, $81 = 0, $83 = 0, $87 = 0, $91 = 0, $97 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = ($xsize | 0) / 2 | 0;\n $1 = ($ysize | 0) / 2 | 0;\n $2 = HEAP32[$labelInfo >> 2] | 0;\n $3 = $1 + -1 | 0;\n if (($xsize | 0) > 1) {\n  $i$082 = 0;\n  $pnt1$084 = $2;\n  $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$083 >> 1] = 0;\n   HEAP16[$pnt1$084 >> 1] = 0;\n   $i$082 = $i$082 + 1 | 0;\n   if (($i$082 | 0) >= ($0 | 0)) break; else {\n    $pnt1$084 = $pnt1$084 + 2 | 0;\n    $pnt2$083 = $pnt2$083 + 2 | 0;\n   }\n  }\n }\n $11 = $0 + -1 | 0;\n if (($ysize | 0) > 1) {\n  $i$176 = 0;\n  $pnt1$178 = $2;\n  $pnt2$177 = $2 + ($11 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$177 >> 1] = 0;\n   HEAP16[$pnt1$178 >> 1] = 0;\n   $i$176 = $i$176 + 1 | 0;\n   if (($i$176 | 0) >= ($1 | 0)) break; else {\n    $pnt1$178 = $pnt1$178 + ($0 << 1) | 0;\n    $pnt2$177 = $pnt2$177 + ($0 << 1) | 0;\n   }\n  }\n }\n $18 = $labelInfo + 1179664 | 0;\n $19 = 0 - $0 | 0;\n $$sum1 = 1 - $0 | 0;\n $$sum2 = ~$0;\n $$sum = $xsize + 4 | 0;\n L11 : do if (($3 | 0) > 1) {\n  $26 = ($11 | 0) > 1;\n  $j$069 = 1;\n  $pnt$073 = $image + (($xsize << 1) + 2) | 0;\n  $pnt2$272 = $2 + ($0 + 1 << 1) | 0;\n  $wk_max$071 = 0;\n  L13 : while (1) {\n   if ($26) {\n    $i$256 = 1;\n    $pnt$164 = $pnt$073;\n    $pnt2$363 = $pnt2$272;\n    $wk_max$158 = $wk_max$071;\n    while (1) {\n     do if ((HEAPU8[$pnt$164 >> 0] | 0 | 0) > ($labelingThresh | 0)) {\n      $31 = HEAP16[$pnt2$363 + ($19 << 1) >> 1] | 0;\n      if ($31 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$363 >> 1] = $31;\n       $34 = ($31 << 16 >> 16) * 7 | 0;\n       $36 = $labelInfo + 1310736 + ($34 + -7 << 2) | 0;\n       HEAP32[$36 >> 2] = (HEAP32[$36 >> 2] | 0) + 1;\n       $40 = $labelInfo + 1310736 + ($34 + -6 << 2) | 0;\n       HEAP32[$40 >> 2] = (HEAP32[$40 >> 2] | 0) + $i$256;\n       $44 = $labelInfo + 1310736 + ($34 + -5 << 2) | 0;\n       HEAP32[$44 >> 2] = (HEAP32[$44 >> 2] | 0) + $j$069;\n       HEAP32[$labelInfo + 1310736 + ($34 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $50 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0;\n      $51 = $50 << 16 >> 16;\n      $54 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0;\n      $55 = $54 << 16 >> 16;\n      $56 = $54 << 16 >> 16 > 0;\n      if ($50 << 16 >> 16 <= 0) {\n       if ($56) {\n        HEAP16[$pnt2$363 >> 1] = $54;\n        $156 = $55 * 7 | 0;\n        $158 = $labelInfo + 1310736 + ($156 + -7 << 2) | 0;\n        HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + 1;\n        $162 = $labelInfo + 1310736 + ($156 + -6 << 2) | 0;\n        HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $i$256;\n        $166 = $labelInfo + 1310736 + ($156 + -5 << 2) | 0;\n        HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + $j$069;\n        $170 = $labelInfo + 1310736 + ($156 + -3 << 2) | 0;\n        if ((HEAP32[$170 >> 2] | 0) < ($i$256 | 0)) HEAP32[$170 >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($156 + -1 << 2) >> 2] = $j$069;\n        $wk_max$2 = $wk_max$158;\n        break;\n       }\n       $176 = HEAP16[$pnt2$363 + -2 >> 1] | 0;\n       if ($176 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$363 >> 1] = $176;\n        $179 = ($176 << 16 >> 16) * 7 | 0;\n        $181 = $labelInfo + 1310736 + ($179 + -7 << 2) | 0;\n        HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + 1;\n        $185 = $labelInfo + 1310736 + ($179 + -6 << 2) | 0;\n        HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + $i$256;\n        $189 = $labelInfo + 1310736 + ($179 + -5 << 2) | 0;\n        HEAP32[$189 >> 2] = (HEAP32[$189 >> 2] | 0) + $j$069;\n        $193 = $labelInfo + 1310736 + ($179 + -3 << 2) | 0;\n        if ((HEAP32[$193 >> 2] | 0) >= ($i$256 | 0)) {\n         $wk_max$2 = $wk_max$158;\n         break;\n        }\n        HEAP32[$193 >> 2] = $i$256;\n        $wk_max$2 = $wk_max$158;\n        break;\n       } else {\n        $196 = $wk_max$158 + 1 | 0;\n        if (($wk_max$158 | 0) > 32767) break L13;\n        HEAP16[$pnt2$363 >> 1] = $196;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $196 << 16 >> 16;\n        $201 = $wk_max$158 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($201 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($201 + 1 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($201 + 2 << 2) >> 2] = $j$069;\n        HEAP32[$labelInfo + 1310736 + ($201 + 3 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($201 + 4 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($201 + 5 << 2) >> 2] = $j$069;\n        HEAP32[$labelInfo + 1310736 + ($201 + 6 << 2) >> 2] = $j$069;\n        $wk_max$2 = $196;\n        break;\n       }\n      }\n      if ($56) {\n       $59 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0;\n       $62 = HEAP32[$labelInfo + 1179664 + ($55 + -1 << 2) >> 2] | 0;\n       if (($59 | 0) > ($62 | 0)) {\n        HEAP16[$pnt2$363 >> 1] = $62;\n        if (($wk_max$158 | 0) > 0) {\n         $k$052 = 0;\n         $wk$053 = $18;\n         while (1) {\n          if ((HEAP32[$wk$053 >> 2] | 0) == ($59 | 0)) HEAP32[$wk$053 >> 2] = $62;\n          $k$052 = $k$052 + 1 | 0;\n          if (($k$052 | 0) >= ($wk_max$158 | 0)) {\n           $79 = $62;\n           break;\n          } else $wk$053 = $wk$053 + 4 | 0;\n         }\n        } else $79 = $62;\n       } else {\n        HEAP16[$pnt2$363 >> 1] = $59;\n        if (($59 | 0) < ($62 | 0) & ($wk_max$158 | 0) > 0) {\n         $k$149 = 0;\n         $wk$150 = $18;\n         while (1) {\n          if ((HEAP32[$wk$150 >> 2] | 0) == ($62 | 0)) HEAP32[$wk$150 >> 2] = $59;\n          $k$149 = $k$149 + 1 | 0;\n          if (($k$149 | 0) >= ($wk_max$158 | 0)) {\n           $79 = $59;\n           break;\n          } else $wk$150 = $wk$150 + 4 | 0;\n         }\n        } else $79 = $59;\n       }\n       $81 = ($79 << 16 >> 16) * 7 | 0;\n       $83 = $labelInfo + 1310736 + ($81 + -7 << 2) | 0;\n       HEAP32[$83 >> 2] = (HEAP32[$83 >> 2] | 0) + 1;\n       $87 = $labelInfo + 1310736 + ($81 + -6 << 2) | 0;\n       HEAP32[$87 >> 2] = (HEAP32[$87 >> 2] | 0) + $i$256;\n       $91 = $labelInfo + 1310736 + ($81 + -5 << 2) | 0;\n       HEAP32[$91 >> 2] = (HEAP32[$91 >> 2] | 0) + $j$069;\n       HEAP32[$labelInfo + 1310736 + ($81 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $97 = HEAP16[$pnt2$363 + -2 >> 1] | 0;\n      if ($97 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$363 >> 1] = $50;\n       $137 = $51 * 7 | 0;\n       $139 = $labelInfo + 1310736 + ($137 + -7 << 2) | 0;\n       HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + 1;\n       $143 = $labelInfo + 1310736 + ($137 + -6 << 2) | 0;\n       HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $i$256;\n       $147 = $labelInfo + 1310736 + ($137 + -5 << 2) | 0;\n       HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + $j$069;\n       $151 = $labelInfo + 1310736 + ($137 + -4 << 2) | 0;\n       if ((HEAP32[$151 >> 2] | 0) > ($i$256 | 0)) HEAP32[$151 >> 2] = $i$256;\n       HEAP32[$labelInfo + 1310736 + ($137 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $102 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0;\n      $105 = HEAP32[$labelInfo + 1179664 + (($97 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($102 | 0) > ($105 | 0)) {\n       HEAP16[$pnt2$363 >> 1] = $105;\n       if (($wk_max$158 | 0) > 0) {\n        $k$245 = 0;\n        $wk$246 = $18;\n        while (1) {\n         if ((HEAP32[$wk$246 >> 2] | 0) == ($102 | 0)) HEAP32[$wk$246 >> 2] = $105;\n         $k$245 = $k$245 + 1 | 0;\n         if (($k$245 | 0) >= ($wk_max$158 | 0)) {\n          $122 = $105;\n          break;\n         } else $wk$246 = $wk$246 + 4 | 0;\n        }\n       } else $122 = $105;\n      } else {\n       HEAP16[$pnt2$363 >> 1] = $102;\n       if (($102 | 0) < ($105 | 0) & ($wk_max$158 | 0) > 0) {\n        $k$342 = 0;\n        $wk$343 = $18;\n        while (1) {\n         if ((HEAP32[$wk$343 >> 2] | 0) == ($105 | 0)) HEAP32[$wk$343 >> 2] = $102;\n         $k$342 = $k$342 + 1 | 0;\n         if (($k$342 | 0) >= ($wk_max$158 | 0)) {\n          $122 = $102;\n          break;\n         } else $wk$343 = $wk$343 + 4 | 0;\n        }\n       } else $122 = $102;\n      }\n      $124 = ($122 << 16 >> 16) * 7 | 0;\n      $126 = $labelInfo + 1310736 + ($124 + -7 << 2) | 0;\n      HEAP32[$126 >> 2] = (HEAP32[$126 >> 2] | 0) + 1;\n      $130 = $labelInfo + 1310736 + ($124 + -6 << 2) | 0;\n      HEAP32[$130 >> 2] = (HEAP32[$130 >> 2] | 0) + $i$256;\n      $134 = $labelInfo + 1310736 + ($124 + -5 << 2) | 0;\n      HEAP32[$134 >> 2] = (HEAP32[$134 >> 2] | 0) + $j$069;\n      $wk_max$2 = $wk_max$158;\n     } else {\n      HEAP16[$pnt2$363 >> 1] = 0;\n      $wk_max$2 = $wk_max$158;\n     } while (0);\n     $i$256 = $i$256 + 1 | 0;\n     $216 = $pnt$164 + 2 | 0;\n     $217 = $pnt2$363 + 2 | 0;\n     if (($i$256 | 0) >= ($11 | 0)) {\n      $pnt$1$lcssa = $216;\n      $pnt2$3$lcssa = $217;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $pnt$164 = $216;\n      $pnt2$363 = $217;\n      $wk_max$158 = $wk_max$2;\n     }\n    }\n   } else {\n    $pnt$1$lcssa = $pnt$073;\n    $pnt2$3$lcssa = $pnt2$272;\n    $wk_max$1$lcssa = $wk_max$071;\n   }\n   $j$069 = $j$069 + 1 | 0;\n   if (($j$069 | 0) >= ($3 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $pnt$073 = $pnt$1$lcssa + $$sum | 0;\n    $pnt2$272 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$071 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $223 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$338 = 1;\n   $j$139 = 1;\n   $wk$440 = $18;\n   while (1) {\n    $225 = HEAP32[$wk$440 >> 2] | 0;\n    if (($225 | 0) == ($i$338 | 0)) {\n     $231 = $j$139;\n     $j$2 = $j$139 + 1 | 0;\n    } else {\n     $231 = HEAP32[$labelInfo + 1179664 + ($225 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$139;\n    }\n    HEAP32[$wk$440 >> 2] = $231;\n    if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$338 = $i$338 + 1 | 0;\n     $j$139 = $j$2;\n     $wk$440 = $wk$440 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $235 = $labelInfo + 8 | 0;\n  $236 = $j$1$lcssa + -1 | 0;\n  HEAP32[$235 >> 2] = $236;\n  if (!$236) $$0 = 0; else {\n   _memset($223 | 0, 0, $236 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $236 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$436 = 0;\n    do {\n     $243 = $i$436 << 2;\n     HEAP32[$labelInfo + 131084 + ($243 << 2) >> 2] = $0;\n     HEAP32[$labelInfo + 131084 + (($243 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($243 | 2) << 2) >> 2] = $1;\n     HEAP32[$labelInfo + 131084 + (($243 | 3) << 2) >> 2] = 0;\n     $i$436 = $i$436 + 1 | 0;\n    } while (($i$436 | 0) < (HEAP32[$235 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$534 = 0;\n    do {\n     $257 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0;\n     $258 = $i$534 * 7 | 0;\n     $261 = $labelInfo + 12 + ($257 << 2) | 0;\n     HEAP32[$261 >> 2] = (HEAP32[$261 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($258 << 2) >> 2] | 0);\n     $268 = $257 << 1;\n     $269 = $labelInfo + 655376 + ($268 << 3) | 0;\n     HEAPF64[$269 >> 3] = +HEAPF64[$269 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($258 + 1 << 2) >> 2] | 0);\n     $277 = $labelInfo + 655376 + (($268 | 1) << 3) | 0;\n     HEAPF64[$277 >> 3] = +HEAPF64[$277 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($258 + 2 << 2) >> 2] | 0);\n     $280 = $257 << 2;\n     $281 = $labelInfo + 131084 + ($280 << 2) | 0;\n     $285 = HEAP32[$labelInfo + 1310736 + ($258 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$281 >> 2] | 0) > ($285 | 0)) HEAP32[$281 >> 2] = $285;\n     $288 = $labelInfo + 131084 + (($280 | 1) << 2) | 0;\n     $292 = HEAP32[$labelInfo + 1310736 + ($258 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$288 >> 2] | 0) < ($292 | 0)) HEAP32[$288 >> 2] = $292;\n     $295 = $labelInfo + 131084 + (($280 | 2) << 2) | 0;\n     $299 = HEAP32[$labelInfo + 1310736 + ($258 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$295 >> 2] | 0) > ($299 | 0)) HEAP32[$295 >> 2] = $299;\n     $302 = $labelInfo + 131084 + (($280 | 3) << 2) | 0;\n     $306 = HEAP32[$labelInfo + 1310736 + ($258 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$302 >> 2] | 0) < ($306 | 0)) HEAP32[$302 >> 2] = $306;\n     $i$534 = $i$534 + 1 | 0;\n    } while (($i$534 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$235 >> 2] | 0) > 0) {\n    $i$633 = 0;\n    do {\n     $310 = $labelInfo + 12 + ($i$633 << 2) | 0;\n     $313 = $i$633 << 1;\n     $314 = $labelInfo + 655376 + ($313 << 3) | 0;\n     HEAPF64[$314 >> 3] = +HEAPF64[$314 >> 3] / +(HEAP32[$310 >> 2] | 0);\n     $320 = $labelInfo + 655376 + (($313 | 1) << 3) | 0;\n     HEAPF64[$320 >> 3] = +HEAPF64[$320 >> 3] / +(HEAP32[$310 >> 2] | 0);\n     $i$633 = $i$633 + 1 | 0;\n    } while (($i$633 | 0) < (HEAP32[$235 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubDBIC($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $102 = 0, $105 = 0, $11 = 0, $122 = 0, $124 = 0, $126 = 0, $130 = 0, $134 = 0, $137 = 0, $139 = 0, $143 = 0, $147 = 0, $151 = 0, $156 = 0, $158 = 0, $162 = 0, $166 = 0, $170 = 0, $176 = 0, $179 = 0, $18 = 0, $181 = 0, $185 = 0, $189 = 0, $19 = 0, $193 = 0, $196 = 0, $2 = 0, $201 = 0, $216 = 0, $217 = 0, $223 = 0, $225 = 0, $231 = 0, $235 = 0, $236 = 0, $243 = 0, $257 = 0, $258 = 0, $26 = 0, $261 = 0, $268 = 0, $269 = 0, $277 = 0, $280 = 0, $281 = 0, $285 = 0, $288 = 0, $292 = 0, $295 = 0, $299 = 0, $3 = 0, $302 = 0, $306 = 0, $31 = 0, $310 = 0, $313 = 0, $314 = 0, $320 = 0, $34 = 0, $36 = 0, $40 = 0, $44 = 0, $50 = 0, $51 = 0, $54 = 0, $55 = 0, $56 = 0, $59 = 0, $62 = 0, $79 = 0, $81 = 0, $83 = 0, $87 = 0, $91 = 0, $97 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = ($xsize | 0) / 2 | 0;\n $1 = ($ysize | 0) / 2 | 0;\n $2 = HEAP32[$labelInfo >> 2] | 0;\n $3 = $1 + -1 | 0;\n if (($xsize | 0) > 1) {\n  $i$082 = 0;\n  $pnt1$084 = $2;\n  $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$083 >> 1] = 0;\n   HEAP16[$pnt1$084 >> 1] = 0;\n   $i$082 = $i$082 + 1 | 0;\n   if (($i$082 | 0) >= ($0 | 0)) break; else {\n    $pnt1$084 = $pnt1$084 + 2 | 0;\n    $pnt2$083 = $pnt2$083 + 2 | 0;\n   }\n  }\n }\n $11 = $0 + -1 | 0;\n if (($ysize | 0) > 1) {\n  $i$176 = 0;\n  $pnt1$178 = $2;\n  $pnt2$177 = $2 + ($11 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$177 >> 1] = 0;\n   HEAP16[$pnt1$178 >> 1] = 0;\n   $i$176 = $i$176 + 1 | 0;\n   if (($i$176 | 0) >= ($1 | 0)) break; else {\n    $pnt1$178 = $pnt1$178 + ($0 << 1) | 0;\n    $pnt2$177 = $pnt2$177 + ($0 << 1) | 0;\n   }\n  }\n }\n $18 = $labelInfo + 1179664 | 0;\n $19 = 0 - $0 | 0;\n $$sum1 = 1 - $0 | 0;\n $$sum2 = ~$0;\n $$sum = $xsize + 4 | 0;\n L11 : do if (($3 | 0) > 1) {\n  $26 = ($11 | 0) > 1;\n  $j$069 = 1;\n  $pnt$073 = $image + (($xsize << 1) + 2) | 0;\n  $pnt2$272 = $2 + ($0 + 1 << 1) | 0;\n  $wk_max$071 = 0;\n  L13 : while (1) {\n   if ($26) {\n    $i$256 = 1;\n    $pnt$164 = $pnt$073;\n    $pnt2$363 = $pnt2$272;\n    $wk_max$158 = $wk_max$071;\n    while (1) {\n     do if ((HEAPU8[$pnt$164 >> 0] | 0 | 0) > ($labelingThresh | 0)) {\n      HEAP16[$pnt2$363 >> 1] = 0;\n      $wk_max$2 = $wk_max$158;\n     } else {\n      $31 = HEAP16[$pnt2$363 + ($19 << 1) >> 1] | 0;\n      if ($31 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$363 >> 1] = $31;\n       $34 = ($31 << 16 >> 16) * 7 | 0;\n       $36 = $labelInfo + 1310736 + ($34 + -7 << 2) | 0;\n       HEAP32[$36 >> 2] = (HEAP32[$36 >> 2] | 0) + 1;\n       $40 = $labelInfo + 1310736 + ($34 + -6 << 2) | 0;\n       HEAP32[$40 >> 2] = (HEAP32[$40 >> 2] | 0) + $i$256;\n       $44 = $labelInfo + 1310736 + ($34 + -5 << 2) | 0;\n       HEAP32[$44 >> 2] = (HEAP32[$44 >> 2] | 0) + $j$069;\n       HEAP32[$labelInfo + 1310736 + ($34 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $50 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0;\n      $51 = $50 << 16 >> 16;\n      $54 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0;\n      $55 = $54 << 16 >> 16;\n      $56 = $54 << 16 >> 16 > 0;\n      if ($50 << 16 >> 16 <= 0) {\n       if ($56) {\n        HEAP16[$pnt2$363 >> 1] = $54;\n        $156 = $55 * 7 | 0;\n        $158 = $labelInfo + 1310736 + ($156 + -7 << 2) | 0;\n        HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + 1;\n        $162 = $labelInfo + 1310736 + ($156 + -6 << 2) | 0;\n        HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $i$256;\n        $166 = $labelInfo + 1310736 + ($156 + -5 << 2) | 0;\n        HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + $j$069;\n        $170 = $labelInfo + 1310736 + ($156 + -3 << 2) | 0;\n        if ((HEAP32[$170 >> 2] | 0) < ($i$256 | 0)) HEAP32[$170 >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($156 + -1 << 2) >> 2] = $j$069;\n        $wk_max$2 = $wk_max$158;\n        break;\n       }\n       $176 = HEAP16[$pnt2$363 + -2 >> 1] | 0;\n       if ($176 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$363 >> 1] = $176;\n        $179 = ($176 << 16 >> 16) * 7 | 0;\n        $181 = $labelInfo + 1310736 + ($179 + -7 << 2) | 0;\n        HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + 1;\n        $185 = $labelInfo + 1310736 + ($179 + -6 << 2) | 0;\n        HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + $i$256;\n        $189 = $labelInfo + 1310736 + ($179 + -5 << 2) | 0;\n        HEAP32[$189 >> 2] = (HEAP32[$189 >> 2] | 0) + $j$069;\n        $193 = $labelInfo + 1310736 + ($179 + -3 << 2) | 0;\n        if ((HEAP32[$193 >> 2] | 0) >= ($i$256 | 0)) {\n         $wk_max$2 = $wk_max$158;\n         break;\n        }\n        HEAP32[$193 >> 2] = $i$256;\n        $wk_max$2 = $wk_max$158;\n        break;\n       } else {\n        $196 = $wk_max$158 + 1 | 0;\n        if (($wk_max$158 | 0) > 32767) break L13;\n        HEAP16[$pnt2$363 >> 1] = $196;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $196 << 16 >> 16;\n        $201 = $wk_max$158 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($201 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($201 + 1 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($201 + 2 << 2) >> 2] = $j$069;\n        HEAP32[$labelInfo + 1310736 + ($201 + 3 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($201 + 4 << 2) >> 2] = $i$256;\n        HEAP32[$labelInfo + 1310736 + ($201 + 5 << 2) >> 2] = $j$069;\n        HEAP32[$labelInfo + 1310736 + ($201 + 6 << 2) >> 2] = $j$069;\n        $wk_max$2 = $196;\n        break;\n       }\n      }\n      if ($56) {\n       $59 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0;\n       $62 = HEAP32[$labelInfo + 1179664 + ($55 + -1 << 2) >> 2] | 0;\n       if (($59 | 0) > ($62 | 0)) {\n        HEAP16[$pnt2$363 >> 1] = $62;\n        if (($wk_max$158 | 0) > 0) {\n         $k$052 = 0;\n         $wk$053 = $18;\n         while (1) {\n          if ((HEAP32[$wk$053 >> 2] | 0) == ($59 | 0)) HEAP32[$wk$053 >> 2] = $62;\n          $k$052 = $k$052 + 1 | 0;\n          if (($k$052 | 0) >= ($wk_max$158 | 0)) {\n           $79 = $62;\n           break;\n          } else $wk$053 = $wk$053 + 4 | 0;\n         }\n        } else $79 = $62;\n       } else {\n        HEAP16[$pnt2$363 >> 1] = $59;\n        if (($59 | 0) < ($62 | 0) & ($wk_max$158 | 0) > 0) {\n         $k$149 = 0;\n         $wk$150 = $18;\n         while (1) {\n          if ((HEAP32[$wk$150 >> 2] | 0) == ($62 | 0)) HEAP32[$wk$150 >> 2] = $59;\n          $k$149 = $k$149 + 1 | 0;\n          if (($k$149 | 0) >= ($wk_max$158 | 0)) {\n           $79 = $59;\n           break;\n          } else $wk$150 = $wk$150 + 4 | 0;\n         }\n        } else $79 = $59;\n       }\n       $81 = ($79 << 16 >> 16) * 7 | 0;\n       $83 = $labelInfo + 1310736 + ($81 + -7 << 2) | 0;\n       HEAP32[$83 >> 2] = (HEAP32[$83 >> 2] | 0) + 1;\n       $87 = $labelInfo + 1310736 + ($81 + -6 << 2) | 0;\n       HEAP32[$87 >> 2] = (HEAP32[$87 >> 2] | 0) + $i$256;\n       $91 = $labelInfo + 1310736 + ($81 + -5 << 2) | 0;\n       HEAP32[$91 >> 2] = (HEAP32[$91 >> 2] | 0) + $j$069;\n       HEAP32[$labelInfo + 1310736 + ($81 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $97 = HEAP16[$pnt2$363 + -2 >> 1] | 0;\n      if ($97 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$363 >> 1] = $50;\n       $137 = $51 * 7 | 0;\n       $139 = $labelInfo + 1310736 + ($137 + -7 << 2) | 0;\n       HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + 1;\n       $143 = $labelInfo + 1310736 + ($137 + -6 << 2) | 0;\n       HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $i$256;\n       $147 = $labelInfo + 1310736 + ($137 + -5 << 2) | 0;\n       HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + $j$069;\n       $151 = $labelInfo + 1310736 + ($137 + -4 << 2) | 0;\n       if ((HEAP32[$151 >> 2] | 0) > ($i$256 | 0)) HEAP32[$151 >> 2] = $i$256;\n       HEAP32[$labelInfo + 1310736 + ($137 + -1 << 2) >> 2] = $j$069;\n       $wk_max$2 = $wk_max$158;\n       break;\n      }\n      $102 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0;\n      $105 = HEAP32[$labelInfo + 1179664 + (($97 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($102 | 0) > ($105 | 0)) {\n       HEAP16[$pnt2$363 >> 1] = $105;\n       if (($wk_max$158 | 0) > 0) {\n        $k$245 = 0;\n        $wk$246 = $18;\n        while (1) {\n         if ((HEAP32[$wk$246 >> 2] | 0) == ($102 | 0)) HEAP32[$wk$246 >> 2] = $105;\n         $k$245 = $k$245 + 1 | 0;\n         if (($k$245 | 0) >= ($wk_max$158 | 0)) {\n          $122 = $105;\n          break;\n         } else $wk$246 = $wk$246 + 4 | 0;\n        }\n       } else $122 = $105;\n      } else {\n       HEAP16[$pnt2$363 >> 1] = $102;\n       if (($102 | 0) < ($105 | 0) & ($wk_max$158 | 0) > 0) {\n        $k$342 = 0;\n        $wk$343 = $18;\n        while (1) {\n         if ((HEAP32[$wk$343 >> 2] | 0) == ($105 | 0)) HEAP32[$wk$343 >> 2] = $102;\n         $k$342 = $k$342 + 1 | 0;\n         if (($k$342 | 0) >= ($wk_max$158 | 0)) {\n          $122 = $102;\n          break;\n         } else $wk$343 = $wk$343 + 4 | 0;\n        }\n       } else $122 = $102;\n      }\n      $124 = ($122 << 16 >> 16) * 7 | 0;\n      $126 = $labelInfo + 1310736 + ($124 + -7 << 2) | 0;\n      HEAP32[$126 >> 2] = (HEAP32[$126 >> 2] | 0) + 1;\n      $130 = $labelInfo + 1310736 + ($124 + -6 << 2) | 0;\n      HEAP32[$130 >> 2] = (HEAP32[$130 >> 2] | 0) + $i$256;\n      $134 = $labelInfo + 1310736 + ($124 + -5 << 2) | 0;\n      HEAP32[$134 >> 2] = (HEAP32[$134 >> 2] | 0) + $j$069;\n      $wk_max$2 = $wk_max$158;\n     } while (0);\n     $i$256 = $i$256 + 1 | 0;\n     $216 = $pnt$164 + 2 | 0;\n     $217 = $pnt2$363 + 2 | 0;\n     if (($i$256 | 0) >= ($11 | 0)) {\n      $pnt$1$lcssa = $216;\n      $pnt2$3$lcssa = $217;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $pnt$164 = $216;\n      $pnt2$363 = $217;\n      $wk_max$158 = $wk_max$2;\n     }\n    }\n   } else {\n    $pnt$1$lcssa = $pnt$073;\n    $pnt2$3$lcssa = $pnt2$272;\n    $wk_max$1$lcssa = $wk_max$071;\n   }\n   $j$069 = $j$069 + 1 | 0;\n   if (($j$069 | 0) >= ($3 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $pnt$073 = $pnt$1$lcssa + $$sum | 0;\n    $pnt2$272 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$071 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $223 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$338 = 1;\n   $j$139 = 1;\n   $wk$440 = $18;\n   while (1) {\n    $225 = HEAP32[$wk$440 >> 2] | 0;\n    if (($225 | 0) == ($i$338 | 0)) {\n     $231 = $j$139;\n     $j$2 = $j$139 + 1 | 0;\n    } else {\n     $231 = HEAP32[$labelInfo + 1179664 + ($225 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$139;\n    }\n    HEAP32[$wk$440 >> 2] = $231;\n    if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$338 = $i$338 + 1 | 0;\n     $j$139 = $j$2;\n     $wk$440 = $wk$440 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $235 = $labelInfo + 8 | 0;\n  $236 = $j$1$lcssa + -1 | 0;\n  HEAP32[$235 >> 2] = $236;\n  if (!$236) $$0 = 0; else {\n   _memset($223 | 0, 0, $236 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $236 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$436 = 0;\n    do {\n     $243 = $i$436 << 2;\n     HEAP32[$labelInfo + 131084 + ($243 << 2) >> 2] = $0;\n     HEAP32[$labelInfo + 131084 + (($243 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($243 | 2) << 2) >> 2] = $1;\n     HEAP32[$labelInfo + 131084 + (($243 | 3) << 2) >> 2] = 0;\n     $i$436 = $i$436 + 1 | 0;\n    } while (($i$436 | 0) < (HEAP32[$235 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$534 = 0;\n    do {\n     $257 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0;\n     $258 = $i$534 * 7 | 0;\n     $261 = $labelInfo + 12 + ($257 << 2) | 0;\n     HEAP32[$261 >> 2] = (HEAP32[$261 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($258 << 2) >> 2] | 0);\n     $268 = $257 << 1;\n     $269 = $labelInfo + 655376 + ($268 << 3) | 0;\n     HEAPF64[$269 >> 3] = +HEAPF64[$269 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($258 + 1 << 2) >> 2] | 0);\n     $277 = $labelInfo + 655376 + (($268 | 1) << 3) | 0;\n     HEAPF64[$277 >> 3] = +HEAPF64[$277 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($258 + 2 << 2) >> 2] | 0);\n     $280 = $257 << 2;\n     $281 = $labelInfo + 131084 + ($280 << 2) | 0;\n     $285 = HEAP32[$labelInfo + 1310736 + ($258 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$281 >> 2] | 0) > ($285 | 0)) HEAP32[$281 >> 2] = $285;\n     $288 = $labelInfo + 131084 + (($280 | 1) << 2) | 0;\n     $292 = HEAP32[$labelInfo + 1310736 + ($258 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$288 >> 2] | 0) < ($292 | 0)) HEAP32[$288 >> 2] = $292;\n     $295 = $labelInfo + 131084 + (($280 | 2) << 2) | 0;\n     $299 = HEAP32[$labelInfo + 1310736 + ($258 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$295 >> 2] | 0) > ($299 | 0)) HEAP32[$295 >> 2] = $299;\n     $302 = $labelInfo + 131084 + (($280 | 3) << 2) | 0;\n     $306 = HEAP32[$labelInfo + 1310736 + ($258 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$302 >> 2] | 0) < ($306 | 0)) HEAP32[$302 >> 2] = $306;\n     $i$534 = $i$534 + 1 | 0;\n    } while (($i$534 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$235 >> 2] | 0) > 0) {\n    $i$633 = 0;\n    do {\n     $310 = $labelInfo + 12 + ($i$633 << 2) | 0;\n     $313 = $i$633 << 1;\n     $314 = $labelInfo + 655376 + ($313 << 3) | 0;\n     HEAPF64[$314 >> 3] = +HEAPF64[$314 >> 3] / +(HEAP32[$310 >> 2] | 0);\n     $320 = $labelInfo + 655376 + (($313 | 1) << 3) | 0;\n     HEAPF64[$320 >> 3] = +HEAPF64[$320 >> 3] / +(HEAP32[$310 >> 2] | 0);\n     $i$633 = $i$633 + 1 | 0;\n    } while (($i$633 | 0) < (HEAP32[$235 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubDWRCY($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $100 = 0, $103 = 0, $120 = 0, $122 = 0, $124 = 0, $128 = 0, $132 = 0, $135 = 0, $137 = 0, $141 = 0, $145 = 0, $149 = 0, $154 = 0, $156 = 0, $16 = 0, $160 = 0, $164 = 0, $168 = 0, $17 = 0, $174 = 0, $177 = 0, $179 = 0, $18 = 0, $183 = 0, $187 = 0, $191 = 0, $194 = 0, $199 = 0, $214 = 0, $215 = 0, $221 = 0, $223 = 0, $229 = 0, $23 = 0, $233 = 0, $234 = 0, $241 = 0, $255 = 0, $256 = 0, $259 = 0, $266 = 0, $267 = 0, $275 = 0, $278 = 0, $279 = 0, $283 = 0, $286 = 0, $29 = 0, $290 = 0, $293 = 0, $297 = 0, $300 = 0, $304 = 0, $308 = 0, $311 = 0, $312 = 0, $318 = 0, $32 = 0, $34 = 0, $38 = 0, $42 = 0, $48 = 0, $49 = 0, $52 = 0, $53 = 0, $54 = 0, $57 = 0, $60 = 0, $77 = 0, $79 = 0, $81 = 0, $85 = 0, $89 = 0, $9 = 0, $95 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$081 = 0;\n  $pnt1$083 = $0;\n  $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$082 >> 1] = 0;\n   HEAP16[$pnt1$083 >> 1] = 0;\n   $i$081 = $i$081 + 1 | 0;\n   if (($i$081 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$083 = $pnt1$083 + 2 | 0;\n    $pnt2$082 = $pnt2$082 + 2 | 0;\n   }\n  }\n }\n $9 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$175 = 0;\n  $pnt1$177 = $0;\n  $pnt2$176 = $0 + ($9 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$176 >> 1] = 0;\n   HEAP16[$pnt1$177 >> 1] = 0;\n   $i$175 = $i$175 + 1 | 0;\n   if (($i$175 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0;\n    $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0;\n   }\n  }\n }\n $16 = $labelInfo + 1179664 | 0;\n $17 = $xsize + 1 | 0;\n $18 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $23 = ($9 | 0) > 1;\n  $j$068 = 1;\n  $pnt$072 = $image + ($17 << 1) | 0;\n  $pnt2$271 = $0 + ($17 << 1) | 0;\n  $wk_max$070 = 0;\n  L13 : while (1) {\n   if ($23) {\n    $i$255 = 1;\n    $pnt$163 = $pnt$072;\n    $pnt2$362 = $pnt2$271;\n    $wk_max$157 = $wk_max$070;\n    while (1) {\n     do if ((HEAPU8[$pnt$163 + 1 >> 0] | 0 | 0) > ($labelingThresh | 0)) {\n      $29 = HEAP16[$pnt2$362 + ($18 << 1) >> 1] | 0;\n      if ($29 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$362 >> 1] = $29;\n       $32 = ($29 << 16 >> 16) * 7 | 0;\n       $34 = $labelInfo + 1310736 + ($32 + -7 << 2) | 0;\n       HEAP32[$34 >> 2] = (HEAP32[$34 >> 2] | 0) + 1;\n       $38 = $labelInfo + 1310736 + ($32 + -6 << 2) | 0;\n       HEAP32[$38 >> 2] = (HEAP32[$38 >> 2] | 0) + $i$255;\n       $42 = $labelInfo + 1310736 + ($32 + -5 << 2) | 0;\n       HEAP32[$42 >> 2] = (HEAP32[$42 >> 2] | 0) + $j$068;\n       HEAP32[$labelInfo + 1310736 + ($32 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $48 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0;\n      $49 = $48 << 16 >> 16;\n      $52 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0;\n      $53 = $52 << 16 >> 16;\n      $54 = $52 << 16 >> 16 > 0;\n      if ($48 << 16 >> 16 <= 0) {\n       if ($54) {\n        HEAP16[$pnt2$362 >> 1] = $52;\n        $154 = $53 * 7 | 0;\n        $156 = $labelInfo + 1310736 + ($154 + -7 << 2) | 0;\n        HEAP32[$156 >> 2] = (HEAP32[$156 >> 2] | 0) + 1;\n        $160 = $labelInfo + 1310736 + ($154 + -6 << 2) | 0;\n        HEAP32[$160 >> 2] = (HEAP32[$160 >> 2] | 0) + $i$255;\n        $164 = $labelInfo + 1310736 + ($154 + -5 << 2) | 0;\n        HEAP32[$164 >> 2] = (HEAP32[$164 >> 2] | 0) + $j$068;\n        $168 = $labelInfo + 1310736 + ($154 + -3 << 2) | 0;\n        if ((HEAP32[$168 >> 2] | 0) < ($i$255 | 0)) HEAP32[$168 >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($154 + -1 << 2) >> 2] = $j$068;\n        $wk_max$2 = $wk_max$157;\n        break;\n       }\n       $174 = HEAP16[$pnt2$362 + -2 >> 1] | 0;\n       if ($174 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$362 >> 1] = $174;\n        $177 = ($174 << 16 >> 16) * 7 | 0;\n        $179 = $labelInfo + 1310736 + ($177 + -7 << 2) | 0;\n        HEAP32[$179 >> 2] = (HEAP32[$179 >> 2] | 0) + 1;\n        $183 = $labelInfo + 1310736 + ($177 + -6 << 2) | 0;\n        HEAP32[$183 >> 2] = (HEAP32[$183 >> 2] | 0) + $i$255;\n        $187 = $labelInfo + 1310736 + ($177 + -5 << 2) | 0;\n        HEAP32[$187 >> 2] = (HEAP32[$187 >> 2] | 0) + $j$068;\n        $191 = $labelInfo + 1310736 + ($177 + -3 << 2) | 0;\n        if ((HEAP32[$191 >> 2] | 0) >= ($i$255 | 0)) {\n         $wk_max$2 = $wk_max$157;\n         break;\n        }\n        HEAP32[$191 >> 2] = $i$255;\n        $wk_max$2 = $wk_max$157;\n        break;\n       } else {\n        $194 = $wk_max$157 + 1 | 0;\n        if (($wk_max$157 | 0) > 32767) break L13;\n        HEAP16[$pnt2$362 >> 1] = $194;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $194 << 16 >> 16;\n        $199 = $wk_max$157 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($199 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($199 + 1 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($199 + 2 << 2) >> 2] = $j$068;\n        HEAP32[$labelInfo + 1310736 + ($199 + 3 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($199 + 4 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($199 + 5 << 2) >> 2] = $j$068;\n        HEAP32[$labelInfo + 1310736 + ($199 + 6 << 2) >> 2] = $j$068;\n        $wk_max$2 = $194;\n        break;\n       }\n      }\n      if ($54) {\n       $57 = HEAP32[$labelInfo + 1179664 + ($49 + -1 << 2) >> 2] | 0;\n       $60 = HEAP32[$labelInfo + 1179664 + ($53 + -1 << 2) >> 2] | 0;\n       if (($57 | 0) > ($60 | 0)) {\n        HEAP16[$pnt2$362 >> 1] = $60;\n        if (($wk_max$157 | 0) > 0) {\n         $k$051 = 0;\n         $wk$052 = $16;\n         while (1) {\n          if ((HEAP32[$wk$052 >> 2] | 0) == ($57 | 0)) HEAP32[$wk$052 >> 2] = $60;\n          $k$051 = $k$051 + 1 | 0;\n          if (($k$051 | 0) >= ($wk_max$157 | 0)) {\n           $77 = $60;\n           break;\n          } else $wk$052 = $wk$052 + 4 | 0;\n         }\n        } else $77 = $60;\n       } else {\n        HEAP16[$pnt2$362 >> 1] = $57;\n        if (($57 | 0) < ($60 | 0) & ($wk_max$157 | 0) > 0) {\n         $k$148 = 0;\n         $wk$149 = $16;\n         while (1) {\n          if ((HEAP32[$wk$149 >> 2] | 0) == ($60 | 0)) HEAP32[$wk$149 >> 2] = $57;\n          $k$148 = $k$148 + 1 | 0;\n          if (($k$148 | 0) >= ($wk_max$157 | 0)) {\n           $77 = $57;\n           break;\n          } else $wk$149 = $wk$149 + 4 | 0;\n         }\n        } else $77 = $57;\n       }\n       $79 = ($77 << 16 >> 16) * 7 | 0;\n       $81 = $labelInfo + 1310736 + ($79 + -7 << 2) | 0;\n       HEAP32[$81 >> 2] = (HEAP32[$81 >> 2] | 0) + 1;\n       $85 = $labelInfo + 1310736 + ($79 + -6 << 2) | 0;\n       HEAP32[$85 >> 2] = (HEAP32[$85 >> 2] | 0) + $i$255;\n       $89 = $labelInfo + 1310736 + ($79 + -5 << 2) | 0;\n       HEAP32[$89 >> 2] = (HEAP32[$89 >> 2] | 0) + $j$068;\n       HEAP32[$labelInfo + 1310736 + ($79 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $95 = HEAP16[$pnt2$362 + -2 >> 1] | 0;\n      if ($95 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$362 >> 1] = $48;\n       $135 = $49 * 7 | 0;\n       $137 = $labelInfo + 1310736 + ($135 + -7 << 2) | 0;\n       HEAP32[$137 >> 2] = (HEAP32[$137 >> 2] | 0) + 1;\n       $141 = $labelInfo + 1310736 + ($135 + -6 << 2) | 0;\n       HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + $i$255;\n       $145 = $labelInfo + 1310736 + ($135 + -5 << 2) | 0;\n       HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $j$068;\n       $149 = $labelInfo + 1310736 + ($135 + -4 << 2) | 0;\n       if ((HEAP32[$149 >> 2] | 0) > ($i$255 | 0)) HEAP32[$149 >> 2] = $i$255;\n       HEAP32[$labelInfo + 1310736 + ($135 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $100 = HEAP32[$labelInfo + 1179664 + ($49 + -1 << 2) >> 2] | 0;\n      $103 = HEAP32[$labelInfo + 1179664 + (($95 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($100 | 0) > ($103 | 0)) {\n       HEAP16[$pnt2$362 >> 1] = $103;\n       if (($wk_max$157 | 0) > 0) {\n        $k$244 = 0;\n        $wk$245 = $16;\n        while (1) {\n         if ((HEAP32[$wk$245 >> 2] | 0) == ($100 | 0)) HEAP32[$wk$245 >> 2] = $103;\n         $k$244 = $k$244 + 1 | 0;\n         if (($k$244 | 0) >= ($wk_max$157 | 0)) {\n          $120 = $103;\n          break;\n         } else $wk$245 = $wk$245 + 4 | 0;\n        }\n       } else $120 = $103;\n      } else {\n       HEAP16[$pnt2$362 >> 1] = $100;\n       if (($100 | 0) < ($103 | 0) & ($wk_max$157 | 0) > 0) {\n        $k$341 = 0;\n        $wk$342 = $16;\n        while (1) {\n         if ((HEAP32[$wk$342 >> 2] | 0) == ($103 | 0)) HEAP32[$wk$342 >> 2] = $100;\n         $k$341 = $k$341 + 1 | 0;\n         if (($k$341 | 0) >= ($wk_max$157 | 0)) {\n          $120 = $100;\n          break;\n         } else $wk$342 = $wk$342 + 4 | 0;\n        }\n       } else $120 = $100;\n      }\n      $122 = ($120 << 16 >> 16) * 7 | 0;\n      $124 = $labelInfo + 1310736 + ($122 + -7 << 2) | 0;\n      HEAP32[$124 >> 2] = (HEAP32[$124 >> 2] | 0) + 1;\n      $128 = $labelInfo + 1310736 + ($122 + -6 << 2) | 0;\n      HEAP32[$128 >> 2] = (HEAP32[$128 >> 2] | 0) + $i$255;\n      $132 = $labelInfo + 1310736 + ($122 + -5 << 2) | 0;\n      HEAP32[$132 >> 2] = (HEAP32[$132 >> 2] | 0) + $j$068;\n      $wk_max$2 = $wk_max$157;\n     } else {\n      HEAP16[$pnt2$362 >> 1] = 0;\n      $wk_max$2 = $wk_max$157;\n     } while (0);\n     $i$255 = $i$255 + 1 | 0;\n     $214 = $pnt$163 + 2 | 0;\n     $215 = $pnt2$362 + 2 | 0;\n     if (($i$255 | 0) >= ($9 | 0)) {\n      $pnt$1$lcssa = $214;\n      $pnt2$3$lcssa = $215;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $pnt$163 = $214;\n      $pnt2$362 = $215;\n      $wk_max$157 = $wk_max$2;\n     }\n    }\n   } else {\n    $pnt$1$lcssa = $pnt$072;\n    $pnt2$3$lcssa = $pnt2$271;\n    $wk_max$1$lcssa = $wk_max$070;\n   }\n   $j$068 = $j$068 + 1 | 0;\n   if (($j$068 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $pnt$072 = $pnt$1$lcssa + 4 | 0;\n    $pnt2$271 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$070 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $221 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$337 = 1;\n   $j$138 = 1;\n   $wk$439 = $16;\n   while (1) {\n    $223 = HEAP32[$wk$439 >> 2] | 0;\n    if (($223 | 0) == ($i$337 | 0)) {\n     $229 = $j$138;\n     $j$2 = $j$138 + 1 | 0;\n    } else {\n     $229 = HEAP32[$labelInfo + 1179664 + ($223 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$138;\n    }\n    HEAP32[$wk$439 >> 2] = $229;\n    if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$337 = $i$337 + 1 | 0;\n     $j$138 = $j$2;\n     $wk$439 = $wk$439 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $233 = $labelInfo + 8 | 0;\n  $234 = $j$1$lcssa + -1 | 0;\n  HEAP32[$233 >> 2] = $234;\n  if (!$234) $$0 = 0; else {\n   _memset($221 | 0, 0, $234 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $234 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$435 = 0;\n    do {\n     $241 = $i$435 << 2;\n     HEAP32[$labelInfo + 131084 + ($241 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($241 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($241 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($241 | 3) << 2) >> 2] = 0;\n     $i$435 = $i$435 + 1 | 0;\n    } while (($i$435 | 0) < (HEAP32[$233 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$533 = 0;\n    do {\n     $255 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0;\n     $256 = $i$533 * 7 | 0;\n     $259 = $labelInfo + 12 + ($255 << 2) | 0;\n     HEAP32[$259 >> 2] = (HEAP32[$259 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($256 << 2) >> 2] | 0);\n     $266 = $255 << 1;\n     $267 = $labelInfo + 655376 + ($266 << 3) | 0;\n     HEAPF64[$267 >> 3] = +HEAPF64[$267 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($256 + 1 << 2) >> 2] | 0);\n     $275 = $labelInfo + 655376 + (($266 | 1) << 3) | 0;\n     HEAPF64[$275 >> 3] = +HEAPF64[$275 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($256 + 2 << 2) >> 2] | 0);\n     $278 = $255 << 2;\n     $279 = $labelInfo + 131084 + ($278 << 2) | 0;\n     $283 = HEAP32[$labelInfo + 1310736 + ($256 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$279 >> 2] | 0) > ($283 | 0)) HEAP32[$279 >> 2] = $283;\n     $286 = $labelInfo + 131084 + (($278 | 1) << 2) | 0;\n     $290 = HEAP32[$labelInfo + 1310736 + ($256 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$286 >> 2] | 0) < ($290 | 0)) HEAP32[$286 >> 2] = $290;\n     $293 = $labelInfo + 131084 + (($278 | 2) << 2) | 0;\n     $297 = HEAP32[$labelInfo + 1310736 + ($256 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$293 >> 2] | 0) > ($297 | 0)) HEAP32[$293 >> 2] = $297;\n     $300 = $labelInfo + 131084 + (($278 | 3) << 2) | 0;\n     $304 = HEAP32[$labelInfo + 1310736 + ($256 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$300 >> 2] | 0) < ($304 | 0)) HEAP32[$300 >> 2] = $304;\n     $i$533 = $i$533 + 1 | 0;\n    } while (($i$533 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$233 >> 2] | 0) > 0) {\n    $i$632 = 0;\n    do {\n     $308 = $labelInfo + 12 + ($i$632 << 2) | 0;\n     $311 = $i$632 << 1;\n     $312 = $labelInfo + 655376 + ($311 << 3) | 0;\n     HEAPF64[$312 >> 3] = +HEAPF64[$312 >> 3] / +(HEAP32[$308 >> 2] | 0);\n     $318 = $labelInfo + 655376 + (($311 | 1) << 3) | 0;\n     HEAPF64[$318 >> 3] = +HEAPF64[$318 >> 3] / +(HEAP32[$308 >> 2] | 0);\n     $i$632 = $i$632 + 1 | 0;\n    } while (($i$632 | 0) < (HEAP32[$233 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubDBRCY($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $100 = 0, $103 = 0, $120 = 0, $122 = 0, $124 = 0, $128 = 0, $132 = 0, $135 = 0, $137 = 0, $141 = 0, $145 = 0, $149 = 0, $154 = 0, $156 = 0, $16 = 0, $160 = 0, $164 = 0, $168 = 0, $17 = 0, $174 = 0, $177 = 0, $179 = 0, $18 = 0, $183 = 0, $187 = 0, $191 = 0, $194 = 0, $199 = 0, $214 = 0, $215 = 0, $221 = 0, $223 = 0, $229 = 0, $23 = 0, $233 = 0, $234 = 0, $241 = 0, $255 = 0, $256 = 0, $259 = 0, $266 = 0, $267 = 0, $275 = 0, $278 = 0, $279 = 0, $283 = 0, $286 = 0, $29 = 0, $290 = 0, $293 = 0, $297 = 0, $300 = 0, $304 = 0, $308 = 0, $311 = 0, $312 = 0, $318 = 0, $32 = 0, $34 = 0, $38 = 0, $42 = 0, $48 = 0, $49 = 0, $52 = 0, $53 = 0, $54 = 0, $57 = 0, $60 = 0, $77 = 0, $79 = 0, $81 = 0, $85 = 0, $89 = 0, $9 = 0, $95 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$081 = 0;\n  $pnt1$083 = $0;\n  $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$082 >> 1] = 0;\n   HEAP16[$pnt1$083 >> 1] = 0;\n   $i$081 = $i$081 + 1 | 0;\n   if (($i$081 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$083 = $pnt1$083 + 2 | 0;\n    $pnt2$082 = $pnt2$082 + 2 | 0;\n   }\n  }\n }\n $9 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$175 = 0;\n  $pnt1$177 = $0;\n  $pnt2$176 = $0 + ($9 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$176 >> 1] = 0;\n   HEAP16[$pnt1$177 >> 1] = 0;\n   $i$175 = $i$175 + 1 | 0;\n   if (($i$175 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0;\n    $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0;\n   }\n  }\n }\n $16 = $labelInfo + 1179664 | 0;\n $17 = $xsize + 1 | 0;\n $18 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $23 = ($9 | 0) > 1;\n  $j$068 = 1;\n  $pnt$072 = $image + ($17 << 1) | 0;\n  $pnt2$271 = $0 + ($17 << 1) | 0;\n  $wk_max$070 = 0;\n  L13 : while (1) {\n   if ($23) {\n    $i$255 = 1;\n    $pnt$163 = $pnt$072;\n    $pnt2$362 = $pnt2$271;\n    $wk_max$157 = $wk_max$070;\n    while (1) {\n     do if ((HEAPU8[$pnt$163 + 1 >> 0] | 0 | 0) > ($labelingThresh | 0)) {\n      HEAP16[$pnt2$362 >> 1] = 0;\n      $wk_max$2 = $wk_max$157;\n     } else {\n      $29 = HEAP16[$pnt2$362 + ($18 << 1) >> 1] | 0;\n      if ($29 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$362 >> 1] = $29;\n       $32 = ($29 << 16 >> 16) * 7 | 0;\n       $34 = $labelInfo + 1310736 + ($32 + -7 << 2) | 0;\n       HEAP32[$34 >> 2] = (HEAP32[$34 >> 2] | 0) + 1;\n       $38 = $labelInfo + 1310736 + ($32 + -6 << 2) | 0;\n       HEAP32[$38 >> 2] = (HEAP32[$38 >> 2] | 0) + $i$255;\n       $42 = $labelInfo + 1310736 + ($32 + -5 << 2) | 0;\n       HEAP32[$42 >> 2] = (HEAP32[$42 >> 2] | 0) + $j$068;\n       HEAP32[$labelInfo + 1310736 + ($32 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $48 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0;\n      $49 = $48 << 16 >> 16;\n      $52 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0;\n      $53 = $52 << 16 >> 16;\n      $54 = $52 << 16 >> 16 > 0;\n      if ($48 << 16 >> 16 <= 0) {\n       if ($54) {\n        HEAP16[$pnt2$362 >> 1] = $52;\n        $154 = $53 * 7 | 0;\n        $156 = $labelInfo + 1310736 + ($154 + -7 << 2) | 0;\n        HEAP32[$156 >> 2] = (HEAP32[$156 >> 2] | 0) + 1;\n        $160 = $labelInfo + 1310736 + ($154 + -6 << 2) | 0;\n        HEAP32[$160 >> 2] = (HEAP32[$160 >> 2] | 0) + $i$255;\n        $164 = $labelInfo + 1310736 + ($154 + -5 << 2) | 0;\n        HEAP32[$164 >> 2] = (HEAP32[$164 >> 2] | 0) + $j$068;\n        $168 = $labelInfo + 1310736 + ($154 + -3 << 2) | 0;\n        if ((HEAP32[$168 >> 2] | 0) < ($i$255 | 0)) HEAP32[$168 >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($154 + -1 << 2) >> 2] = $j$068;\n        $wk_max$2 = $wk_max$157;\n        break;\n       }\n       $174 = HEAP16[$pnt2$362 + -2 >> 1] | 0;\n       if ($174 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$362 >> 1] = $174;\n        $177 = ($174 << 16 >> 16) * 7 | 0;\n        $179 = $labelInfo + 1310736 + ($177 + -7 << 2) | 0;\n        HEAP32[$179 >> 2] = (HEAP32[$179 >> 2] | 0) + 1;\n        $183 = $labelInfo + 1310736 + ($177 + -6 << 2) | 0;\n        HEAP32[$183 >> 2] = (HEAP32[$183 >> 2] | 0) + $i$255;\n        $187 = $labelInfo + 1310736 + ($177 + -5 << 2) | 0;\n        HEAP32[$187 >> 2] = (HEAP32[$187 >> 2] | 0) + $j$068;\n        $191 = $labelInfo + 1310736 + ($177 + -3 << 2) | 0;\n        if ((HEAP32[$191 >> 2] | 0) >= ($i$255 | 0)) {\n         $wk_max$2 = $wk_max$157;\n         break;\n        }\n        HEAP32[$191 >> 2] = $i$255;\n        $wk_max$2 = $wk_max$157;\n        break;\n       } else {\n        $194 = $wk_max$157 + 1 | 0;\n        if (($wk_max$157 | 0) > 32767) break L13;\n        HEAP16[$pnt2$362 >> 1] = $194;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $194 << 16 >> 16;\n        $199 = $wk_max$157 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($199 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($199 + 1 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($199 + 2 << 2) >> 2] = $j$068;\n        HEAP32[$labelInfo + 1310736 + ($199 + 3 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($199 + 4 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($199 + 5 << 2) >> 2] = $j$068;\n        HEAP32[$labelInfo + 1310736 + ($199 + 6 << 2) >> 2] = $j$068;\n        $wk_max$2 = $194;\n        break;\n       }\n      }\n      if ($54) {\n       $57 = HEAP32[$labelInfo + 1179664 + ($49 + -1 << 2) >> 2] | 0;\n       $60 = HEAP32[$labelInfo + 1179664 + ($53 + -1 << 2) >> 2] | 0;\n       if (($57 | 0) > ($60 | 0)) {\n        HEAP16[$pnt2$362 >> 1] = $60;\n        if (($wk_max$157 | 0) > 0) {\n         $k$051 = 0;\n         $wk$052 = $16;\n         while (1) {\n          if ((HEAP32[$wk$052 >> 2] | 0) == ($57 | 0)) HEAP32[$wk$052 >> 2] = $60;\n          $k$051 = $k$051 + 1 | 0;\n          if (($k$051 | 0) >= ($wk_max$157 | 0)) {\n           $77 = $60;\n           break;\n          } else $wk$052 = $wk$052 + 4 | 0;\n         }\n        } else $77 = $60;\n       } else {\n        HEAP16[$pnt2$362 >> 1] = $57;\n        if (($57 | 0) < ($60 | 0) & ($wk_max$157 | 0) > 0) {\n         $k$148 = 0;\n         $wk$149 = $16;\n         while (1) {\n          if ((HEAP32[$wk$149 >> 2] | 0) == ($60 | 0)) HEAP32[$wk$149 >> 2] = $57;\n          $k$148 = $k$148 + 1 | 0;\n          if (($k$148 | 0) >= ($wk_max$157 | 0)) {\n           $77 = $57;\n           break;\n          } else $wk$149 = $wk$149 + 4 | 0;\n         }\n        } else $77 = $57;\n       }\n       $79 = ($77 << 16 >> 16) * 7 | 0;\n       $81 = $labelInfo + 1310736 + ($79 + -7 << 2) | 0;\n       HEAP32[$81 >> 2] = (HEAP32[$81 >> 2] | 0) + 1;\n       $85 = $labelInfo + 1310736 + ($79 + -6 << 2) | 0;\n       HEAP32[$85 >> 2] = (HEAP32[$85 >> 2] | 0) + $i$255;\n       $89 = $labelInfo + 1310736 + ($79 + -5 << 2) | 0;\n       HEAP32[$89 >> 2] = (HEAP32[$89 >> 2] | 0) + $j$068;\n       HEAP32[$labelInfo + 1310736 + ($79 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $95 = HEAP16[$pnt2$362 + -2 >> 1] | 0;\n      if ($95 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$362 >> 1] = $48;\n       $135 = $49 * 7 | 0;\n       $137 = $labelInfo + 1310736 + ($135 + -7 << 2) | 0;\n       HEAP32[$137 >> 2] = (HEAP32[$137 >> 2] | 0) + 1;\n       $141 = $labelInfo + 1310736 + ($135 + -6 << 2) | 0;\n       HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + $i$255;\n       $145 = $labelInfo + 1310736 + ($135 + -5 << 2) | 0;\n       HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $j$068;\n       $149 = $labelInfo + 1310736 + ($135 + -4 << 2) | 0;\n       if ((HEAP32[$149 >> 2] | 0) > ($i$255 | 0)) HEAP32[$149 >> 2] = $i$255;\n       HEAP32[$labelInfo + 1310736 + ($135 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $100 = HEAP32[$labelInfo + 1179664 + ($49 + -1 << 2) >> 2] | 0;\n      $103 = HEAP32[$labelInfo + 1179664 + (($95 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($100 | 0) > ($103 | 0)) {\n       HEAP16[$pnt2$362 >> 1] = $103;\n       if (($wk_max$157 | 0) > 0) {\n        $k$244 = 0;\n        $wk$245 = $16;\n        while (1) {\n         if ((HEAP32[$wk$245 >> 2] | 0) == ($100 | 0)) HEAP32[$wk$245 >> 2] = $103;\n         $k$244 = $k$244 + 1 | 0;\n         if (($k$244 | 0) >= ($wk_max$157 | 0)) {\n          $120 = $103;\n          break;\n         } else $wk$245 = $wk$245 + 4 | 0;\n        }\n       } else $120 = $103;\n      } else {\n       HEAP16[$pnt2$362 >> 1] = $100;\n       if (($100 | 0) < ($103 | 0) & ($wk_max$157 | 0) > 0) {\n        $k$341 = 0;\n        $wk$342 = $16;\n        while (1) {\n         if ((HEAP32[$wk$342 >> 2] | 0) == ($103 | 0)) HEAP32[$wk$342 >> 2] = $100;\n         $k$341 = $k$341 + 1 | 0;\n         if (($k$341 | 0) >= ($wk_max$157 | 0)) {\n          $120 = $100;\n          break;\n         } else $wk$342 = $wk$342 + 4 | 0;\n        }\n       } else $120 = $100;\n      }\n      $122 = ($120 << 16 >> 16) * 7 | 0;\n      $124 = $labelInfo + 1310736 + ($122 + -7 << 2) | 0;\n      HEAP32[$124 >> 2] = (HEAP32[$124 >> 2] | 0) + 1;\n      $128 = $labelInfo + 1310736 + ($122 + -6 << 2) | 0;\n      HEAP32[$128 >> 2] = (HEAP32[$128 >> 2] | 0) + $i$255;\n      $132 = $labelInfo + 1310736 + ($122 + -5 << 2) | 0;\n      HEAP32[$132 >> 2] = (HEAP32[$132 >> 2] | 0) + $j$068;\n      $wk_max$2 = $wk_max$157;\n     } while (0);\n     $i$255 = $i$255 + 1 | 0;\n     $214 = $pnt$163 + 2 | 0;\n     $215 = $pnt2$362 + 2 | 0;\n     if (($i$255 | 0) >= ($9 | 0)) {\n      $pnt$1$lcssa = $214;\n      $pnt2$3$lcssa = $215;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $pnt$163 = $214;\n      $pnt2$362 = $215;\n      $wk_max$157 = $wk_max$2;\n     }\n    }\n   } else {\n    $pnt$1$lcssa = $pnt$072;\n    $pnt2$3$lcssa = $pnt2$271;\n    $wk_max$1$lcssa = $wk_max$070;\n   }\n   $j$068 = $j$068 + 1 | 0;\n   if (($j$068 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $pnt$072 = $pnt$1$lcssa + 4 | 0;\n    $pnt2$271 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$070 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $221 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$337 = 1;\n   $j$138 = 1;\n   $wk$439 = $16;\n   while (1) {\n    $223 = HEAP32[$wk$439 >> 2] | 0;\n    if (($223 | 0) == ($i$337 | 0)) {\n     $229 = $j$138;\n     $j$2 = $j$138 + 1 | 0;\n    } else {\n     $229 = HEAP32[$labelInfo + 1179664 + ($223 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$138;\n    }\n    HEAP32[$wk$439 >> 2] = $229;\n    if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$337 = $i$337 + 1 | 0;\n     $j$138 = $j$2;\n     $wk$439 = $wk$439 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $233 = $labelInfo + 8 | 0;\n  $234 = $j$1$lcssa + -1 | 0;\n  HEAP32[$233 >> 2] = $234;\n  if (!$234) $$0 = 0; else {\n   _memset($221 | 0, 0, $234 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $234 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$435 = 0;\n    do {\n     $241 = $i$435 << 2;\n     HEAP32[$labelInfo + 131084 + ($241 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($241 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($241 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($241 | 3) << 2) >> 2] = 0;\n     $i$435 = $i$435 + 1 | 0;\n    } while (($i$435 | 0) < (HEAP32[$233 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$533 = 0;\n    do {\n     $255 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0;\n     $256 = $i$533 * 7 | 0;\n     $259 = $labelInfo + 12 + ($255 << 2) | 0;\n     HEAP32[$259 >> 2] = (HEAP32[$259 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($256 << 2) >> 2] | 0);\n     $266 = $255 << 1;\n     $267 = $labelInfo + 655376 + ($266 << 3) | 0;\n     HEAPF64[$267 >> 3] = +HEAPF64[$267 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($256 + 1 << 2) >> 2] | 0);\n     $275 = $labelInfo + 655376 + (($266 | 1) << 3) | 0;\n     HEAPF64[$275 >> 3] = +HEAPF64[$275 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($256 + 2 << 2) >> 2] | 0);\n     $278 = $255 << 2;\n     $279 = $labelInfo + 131084 + ($278 << 2) | 0;\n     $283 = HEAP32[$labelInfo + 1310736 + ($256 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$279 >> 2] | 0) > ($283 | 0)) HEAP32[$279 >> 2] = $283;\n     $286 = $labelInfo + 131084 + (($278 | 1) << 2) | 0;\n     $290 = HEAP32[$labelInfo + 1310736 + ($256 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$286 >> 2] | 0) < ($290 | 0)) HEAP32[$286 >> 2] = $290;\n     $293 = $labelInfo + 131084 + (($278 | 2) << 2) | 0;\n     $297 = HEAP32[$labelInfo + 1310736 + ($256 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$293 >> 2] | 0) > ($297 | 0)) HEAP32[$293 >> 2] = $297;\n     $300 = $labelInfo + 131084 + (($278 | 3) << 2) | 0;\n     $304 = HEAP32[$labelInfo + 1310736 + ($256 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$300 >> 2] | 0) < ($304 | 0)) HEAP32[$300 >> 2] = $304;\n     $i$533 = $i$533 + 1 | 0;\n    } while (($i$533 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$233 >> 2] | 0) > 0) {\n    $i$632 = 0;\n    do {\n     $308 = $labelInfo + 12 + ($i$632 << 2) | 0;\n     $311 = $i$632 << 1;\n     $312 = $labelInfo + 655376 + ($311 << 3) | 0;\n     HEAPF64[$312 >> 3] = +HEAPF64[$312 >> 3] / +(HEAP32[$308 >> 2] | 0);\n     $318 = $labelInfo + 655376 + (($311 | 1) << 3) | 0;\n     HEAPF64[$318 >> 3] = +HEAPF64[$318 >> 3] / +(HEAP32[$308 >> 2] | 0);\n     $i$632 = $i$632 + 1 | 0;\n    } while (($i$632 | 0) < (HEAP32[$233 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubDWRYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $102 = 0, $119 = 0, $121 = 0, $123 = 0, $127 = 0, $131 = 0, $134 = 0, $136 = 0, $140 = 0, $144 = 0, $148 = 0, $153 = 0, $155 = 0, $159 = 0, $16 = 0, $163 = 0, $167 = 0, $17 = 0, $173 = 0, $176 = 0, $178 = 0, $18 = 0, $182 = 0, $186 = 0, $190 = 0, $193 = 0, $198 = 0, $213 = 0, $214 = 0, $220 = 0, $222 = 0, $228 = 0, $23 = 0, $232 = 0, $233 = 0, $240 = 0, $254 = 0, $255 = 0, $258 = 0, $265 = 0, $266 = 0, $274 = 0, $277 = 0, $278 = 0, $28 = 0, $282 = 0, $285 = 0, $289 = 0, $292 = 0, $296 = 0, $299 = 0, $303 = 0, $307 = 0, $31 = 0, $310 = 0, $311 = 0, $317 = 0, $33 = 0, $37 = 0, $41 = 0, $47 = 0, $48 = 0, $51 = 0, $52 = 0, $53 = 0, $56 = 0, $59 = 0, $76 = 0, $78 = 0, $80 = 0, $84 = 0, $88 = 0, $9 = 0, $94 = 0, $99 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$081 = 0;\n  $pnt1$083 = $0;\n  $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$082 >> 1] = 0;\n   HEAP16[$pnt1$083 >> 1] = 0;\n   $i$081 = $i$081 + 1 | 0;\n   if (($i$081 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$083 = $pnt1$083 + 2 | 0;\n    $pnt2$082 = $pnt2$082 + 2 | 0;\n   }\n  }\n }\n $9 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$175 = 0;\n  $pnt1$177 = $0;\n  $pnt2$176 = $0 + ($9 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$176 >> 1] = 0;\n   HEAP16[$pnt1$177 >> 1] = 0;\n   $i$175 = $i$175 + 1 | 0;\n   if (($i$175 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0;\n    $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0;\n   }\n  }\n }\n $16 = $labelInfo + 1179664 | 0;\n $17 = $xsize + 1 | 0;\n $18 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $23 = ($9 | 0) > 1;\n  $j$068 = 1;\n  $pnt$072 = $image + ($17 << 1) | 0;\n  $pnt2$271 = $0 + ($17 << 1) | 0;\n  $wk_max$070 = 0;\n  L13 : while (1) {\n   if ($23) {\n    $i$255 = 1;\n    $pnt$163 = $pnt$072;\n    $pnt2$362 = $pnt2$271;\n    $wk_max$157 = $wk_max$070;\n    while (1) {\n     do if ((HEAPU8[$pnt$163 >> 0] | 0 | 0) > ($labelingThresh | 0)) {\n      $28 = HEAP16[$pnt2$362 + ($18 << 1) >> 1] | 0;\n      if ($28 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$362 >> 1] = $28;\n       $31 = ($28 << 16 >> 16) * 7 | 0;\n       $33 = $labelInfo + 1310736 + ($31 + -7 << 2) | 0;\n       HEAP32[$33 >> 2] = (HEAP32[$33 >> 2] | 0) + 1;\n       $37 = $labelInfo + 1310736 + ($31 + -6 << 2) | 0;\n       HEAP32[$37 >> 2] = (HEAP32[$37 >> 2] | 0) + $i$255;\n       $41 = $labelInfo + 1310736 + ($31 + -5 << 2) | 0;\n       HEAP32[$41 >> 2] = (HEAP32[$41 >> 2] | 0) + $j$068;\n       HEAP32[$labelInfo + 1310736 + ($31 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $47 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0;\n      $48 = $47 << 16 >> 16;\n      $51 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0;\n      $52 = $51 << 16 >> 16;\n      $53 = $51 << 16 >> 16 > 0;\n      if ($47 << 16 >> 16 <= 0) {\n       if ($53) {\n        HEAP16[$pnt2$362 >> 1] = $51;\n        $153 = $52 * 7 | 0;\n        $155 = $labelInfo + 1310736 + ($153 + -7 << 2) | 0;\n        HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + 1;\n        $159 = $labelInfo + 1310736 + ($153 + -6 << 2) | 0;\n        HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $i$255;\n        $163 = $labelInfo + 1310736 + ($153 + -5 << 2) | 0;\n        HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + $j$068;\n        $167 = $labelInfo + 1310736 + ($153 + -3 << 2) | 0;\n        if ((HEAP32[$167 >> 2] | 0) < ($i$255 | 0)) HEAP32[$167 >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($153 + -1 << 2) >> 2] = $j$068;\n        $wk_max$2 = $wk_max$157;\n        break;\n       }\n       $173 = HEAP16[$pnt2$362 + -2 >> 1] | 0;\n       if ($173 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$362 >> 1] = $173;\n        $176 = ($173 << 16 >> 16) * 7 | 0;\n        $178 = $labelInfo + 1310736 + ($176 + -7 << 2) | 0;\n        HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + 1;\n        $182 = $labelInfo + 1310736 + ($176 + -6 << 2) | 0;\n        HEAP32[$182 >> 2] = (HEAP32[$182 >> 2] | 0) + $i$255;\n        $186 = $labelInfo + 1310736 + ($176 + -5 << 2) | 0;\n        HEAP32[$186 >> 2] = (HEAP32[$186 >> 2] | 0) + $j$068;\n        $190 = $labelInfo + 1310736 + ($176 + -3 << 2) | 0;\n        if ((HEAP32[$190 >> 2] | 0) >= ($i$255 | 0)) {\n         $wk_max$2 = $wk_max$157;\n         break;\n        }\n        HEAP32[$190 >> 2] = $i$255;\n        $wk_max$2 = $wk_max$157;\n        break;\n       } else {\n        $193 = $wk_max$157 + 1 | 0;\n        if (($wk_max$157 | 0) > 32767) break L13;\n        HEAP16[$pnt2$362 >> 1] = $193;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $193 << 16 >> 16;\n        $198 = $wk_max$157 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($198 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($198 + 1 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($198 + 2 << 2) >> 2] = $j$068;\n        HEAP32[$labelInfo + 1310736 + ($198 + 3 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($198 + 4 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($198 + 5 << 2) >> 2] = $j$068;\n        HEAP32[$labelInfo + 1310736 + ($198 + 6 << 2) >> 2] = $j$068;\n        $wk_max$2 = $193;\n        break;\n       }\n      }\n      if ($53) {\n       $56 = HEAP32[$labelInfo + 1179664 + ($48 + -1 << 2) >> 2] | 0;\n       $59 = HEAP32[$labelInfo + 1179664 + ($52 + -1 << 2) >> 2] | 0;\n       if (($56 | 0) > ($59 | 0)) {\n        HEAP16[$pnt2$362 >> 1] = $59;\n        if (($wk_max$157 | 0) > 0) {\n         $k$051 = 0;\n         $wk$052 = $16;\n         while (1) {\n          if ((HEAP32[$wk$052 >> 2] | 0) == ($56 | 0)) HEAP32[$wk$052 >> 2] = $59;\n          $k$051 = $k$051 + 1 | 0;\n          if (($k$051 | 0) >= ($wk_max$157 | 0)) {\n           $76 = $59;\n           break;\n          } else $wk$052 = $wk$052 + 4 | 0;\n         }\n        } else $76 = $59;\n       } else {\n        HEAP16[$pnt2$362 >> 1] = $56;\n        if (($56 | 0) < ($59 | 0) & ($wk_max$157 | 0) > 0) {\n         $k$148 = 0;\n         $wk$149 = $16;\n         while (1) {\n          if ((HEAP32[$wk$149 >> 2] | 0) == ($59 | 0)) HEAP32[$wk$149 >> 2] = $56;\n          $k$148 = $k$148 + 1 | 0;\n          if (($k$148 | 0) >= ($wk_max$157 | 0)) {\n           $76 = $56;\n           break;\n          } else $wk$149 = $wk$149 + 4 | 0;\n         }\n        } else $76 = $56;\n       }\n       $78 = ($76 << 16 >> 16) * 7 | 0;\n       $80 = $labelInfo + 1310736 + ($78 + -7 << 2) | 0;\n       HEAP32[$80 >> 2] = (HEAP32[$80 >> 2] | 0) + 1;\n       $84 = $labelInfo + 1310736 + ($78 + -6 << 2) | 0;\n       HEAP32[$84 >> 2] = (HEAP32[$84 >> 2] | 0) + $i$255;\n       $88 = $labelInfo + 1310736 + ($78 + -5 << 2) | 0;\n       HEAP32[$88 >> 2] = (HEAP32[$88 >> 2] | 0) + $j$068;\n       HEAP32[$labelInfo + 1310736 + ($78 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $94 = HEAP16[$pnt2$362 + -2 >> 1] | 0;\n      if ($94 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$362 >> 1] = $47;\n       $134 = $48 * 7 | 0;\n       $136 = $labelInfo + 1310736 + ($134 + -7 << 2) | 0;\n       HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + 1;\n       $140 = $labelInfo + 1310736 + ($134 + -6 << 2) | 0;\n       HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $i$255;\n       $144 = $labelInfo + 1310736 + ($134 + -5 << 2) | 0;\n       HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $j$068;\n       $148 = $labelInfo + 1310736 + ($134 + -4 << 2) | 0;\n       if ((HEAP32[$148 >> 2] | 0) > ($i$255 | 0)) HEAP32[$148 >> 2] = $i$255;\n       HEAP32[$labelInfo + 1310736 + ($134 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $99 = HEAP32[$labelInfo + 1179664 + ($48 + -1 << 2) >> 2] | 0;\n      $102 = HEAP32[$labelInfo + 1179664 + (($94 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($99 | 0) > ($102 | 0)) {\n       HEAP16[$pnt2$362 >> 1] = $102;\n       if (($wk_max$157 | 0) > 0) {\n        $k$244 = 0;\n        $wk$245 = $16;\n        while (1) {\n         if ((HEAP32[$wk$245 >> 2] | 0) == ($99 | 0)) HEAP32[$wk$245 >> 2] = $102;\n         $k$244 = $k$244 + 1 | 0;\n         if (($k$244 | 0) >= ($wk_max$157 | 0)) {\n          $119 = $102;\n          break;\n         } else $wk$245 = $wk$245 + 4 | 0;\n        }\n       } else $119 = $102;\n      } else {\n       HEAP16[$pnt2$362 >> 1] = $99;\n       if (($99 | 0) < ($102 | 0) & ($wk_max$157 | 0) > 0) {\n        $k$341 = 0;\n        $wk$342 = $16;\n        while (1) {\n         if ((HEAP32[$wk$342 >> 2] | 0) == ($102 | 0)) HEAP32[$wk$342 >> 2] = $99;\n         $k$341 = $k$341 + 1 | 0;\n         if (($k$341 | 0) >= ($wk_max$157 | 0)) {\n          $119 = $99;\n          break;\n         } else $wk$342 = $wk$342 + 4 | 0;\n        }\n       } else $119 = $99;\n      }\n      $121 = ($119 << 16 >> 16) * 7 | 0;\n      $123 = $labelInfo + 1310736 + ($121 + -7 << 2) | 0;\n      HEAP32[$123 >> 2] = (HEAP32[$123 >> 2] | 0) + 1;\n      $127 = $labelInfo + 1310736 + ($121 + -6 << 2) | 0;\n      HEAP32[$127 >> 2] = (HEAP32[$127 >> 2] | 0) + $i$255;\n      $131 = $labelInfo + 1310736 + ($121 + -5 << 2) | 0;\n      HEAP32[$131 >> 2] = (HEAP32[$131 >> 2] | 0) + $j$068;\n      $wk_max$2 = $wk_max$157;\n     } else {\n      HEAP16[$pnt2$362 >> 1] = 0;\n      $wk_max$2 = $wk_max$157;\n     } while (0);\n     $i$255 = $i$255 + 1 | 0;\n     $213 = $pnt$163 + 2 | 0;\n     $214 = $pnt2$362 + 2 | 0;\n     if (($i$255 | 0) >= ($9 | 0)) {\n      $pnt$1$lcssa = $213;\n      $pnt2$3$lcssa = $214;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $pnt$163 = $213;\n      $pnt2$362 = $214;\n      $wk_max$157 = $wk_max$2;\n     }\n    }\n   } else {\n    $pnt$1$lcssa = $pnt$072;\n    $pnt2$3$lcssa = $pnt2$271;\n    $wk_max$1$lcssa = $wk_max$070;\n   }\n   $j$068 = $j$068 + 1 | 0;\n   if (($j$068 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $pnt$072 = $pnt$1$lcssa + 4 | 0;\n    $pnt2$271 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$070 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $220 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$337 = 1;\n   $j$138 = 1;\n   $wk$439 = $16;\n   while (1) {\n    $222 = HEAP32[$wk$439 >> 2] | 0;\n    if (($222 | 0) == ($i$337 | 0)) {\n     $228 = $j$138;\n     $j$2 = $j$138 + 1 | 0;\n    } else {\n     $228 = HEAP32[$labelInfo + 1179664 + ($222 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$138;\n    }\n    HEAP32[$wk$439 >> 2] = $228;\n    if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$337 = $i$337 + 1 | 0;\n     $j$138 = $j$2;\n     $wk$439 = $wk$439 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $232 = $labelInfo + 8 | 0;\n  $233 = $j$1$lcssa + -1 | 0;\n  HEAP32[$232 >> 2] = $233;\n  if (!$233) $$0 = 0; else {\n   _memset($220 | 0, 0, $233 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $233 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$435 = 0;\n    do {\n     $240 = $i$435 << 2;\n     HEAP32[$labelInfo + 131084 + ($240 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($240 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($240 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($240 | 3) << 2) >> 2] = 0;\n     $i$435 = $i$435 + 1 | 0;\n    } while (($i$435 | 0) < (HEAP32[$232 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$533 = 0;\n    do {\n     $254 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0;\n     $255 = $i$533 * 7 | 0;\n     $258 = $labelInfo + 12 + ($254 << 2) | 0;\n     HEAP32[$258 >> 2] = (HEAP32[$258 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($255 << 2) >> 2] | 0);\n     $265 = $254 << 1;\n     $266 = $labelInfo + 655376 + ($265 << 3) | 0;\n     HEAPF64[$266 >> 3] = +HEAPF64[$266 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($255 + 1 << 2) >> 2] | 0);\n     $274 = $labelInfo + 655376 + (($265 | 1) << 3) | 0;\n     HEAPF64[$274 >> 3] = +HEAPF64[$274 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($255 + 2 << 2) >> 2] | 0);\n     $277 = $254 << 2;\n     $278 = $labelInfo + 131084 + ($277 << 2) | 0;\n     $282 = HEAP32[$labelInfo + 1310736 + ($255 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$278 >> 2] | 0) > ($282 | 0)) HEAP32[$278 >> 2] = $282;\n     $285 = $labelInfo + 131084 + (($277 | 1) << 2) | 0;\n     $289 = HEAP32[$labelInfo + 1310736 + ($255 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$285 >> 2] | 0) < ($289 | 0)) HEAP32[$285 >> 2] = $289;\n     $292 = $labelInfo + 131084 + (($277 | 2) << 2) | 0;\n     $296 = HEAP32[$labelInfo + 1310736 + ($255 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$292 >> 2] | 0) > ($296 | 0)) HEAP32[$292 >> 2] = $296;\n     $299 = $labelInfo + 131084 + (($277 | 3) << 2) | 0;\n     $303 = HEAP32[$labelInfo + 1310736 + ($255 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$299 >> 2] | 0) < ($303 | 0)) HEAP32[$299 >> 2] = $303;\n     $i$533 = $i$533 + 1 | 0;\n    } while (($i$533 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$232 >> 2] | 0) > 0) {\n    $i$632 = 0;\n    do {\n     $307 = $labelInfo + 12 + ($i$632 << 2) | 0;\n     $310 = $i$632 << 1;\n     $311 = $labelInfo + 655376 + ($310 << 3) | 0;\n     HEAPF64[$311 >> 3] = +HEAPF64[$311 >> 3] / +(HEAP32[$307 >> 2] | 0);\n     $317 = $labelInfo + 655376 + (($310 | 1) << 3) | 0;\n     HEAPF64[$317 >> 3] = +HEAPF64[$317 >> 3] / +(HEAP32[$307 >> 2] | 0);\n     $i$632 = $i$632 + 1 | 0;\n    } while (($i$632 | 0) < (HEAP32[$232 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubDBRYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $102 = 0, $119 = 0, $121 = 0, $123 = 0, $127 = 0, $131 = 0, $134 = 0, $136 = 0, $140 = 0, $144 = 0, $148 = 0, $153 = 0, $155 = 0, $159 = 0, $16 = 0, $163 = 0, $167 = 0, $17 = 0, $173 = 0, $176 = 0, $178 = 0, $18 = 0, $182 = 0, $186 = 0, $190 = 0, $193 = 0, $198 = 0, $213 = 0, $214 = 0, $220 = 0, $222 = 0, $228 = 0, $23 = 0, $232 = 0, $233 = 0, $240 = 0, $254 = 0, $255 = 0, $258 = 0, $265 = 0, $266 = 0, $274 = 0, $277 = 0, $278 = 0, $28 = 0, $282 = 0, $285 = 0, $289 = 0, $292 = 0, $296 = 0, $299 = 0, $303 = 0, $307 = 0, $31 = 0, $310 = 0, $311 = 0, $317 = 0, $33 = 0, $37 = 0, $41 = 0, $47 = 0, $48 = 0, $51 = 0, $52 = 0, $53 = 0, $56 = 0, $59 = 0, $76 = 0, $78 = 0, $80 = 0, $84 = 0, $88 = 0, $9 = 0, $94 = 0, $99 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$081 = 0;\n  $pnt1$083 = $0;\n  $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$082 >> 1] = 0;\n   HEAP16[$pnt1$083 >> 1] = 0;\n   $i$081 = $i$081 + 1 | 0;\n   if (($i$081 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$083 = $pnt1$083 + 2 | 0;\n    $pnt2$082 = $pnt2$082 + 2 | 0;\n   }\n  }\n }\n $9 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$175 = 0;\n  $pnt1$177 = $0;\n  $pnt2$176 = $0 + ($9 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$176 >> 1] = 0;\n   HEAP16[$pnt1$177 >> 1] = 0;\n   $i$175 = $i$175 + 1 | 0;\n   if (($i$175 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0;\n    $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0;\n   }\n  }\n }\n $16 = $labelInfo + 1179664 | 0;\n $17 = $xsize + 1 | 0;\n $18 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $23 = ($9 | 0) > 1;\n  $j$068 = 1;\n  $pnt$072 = $image + ($17 << 1) | 0;\n  $pnt2$271 = $0 + ($17 << 1) | 0;\n  $wk_max$070 = 0;\n  L13 : while (1) {\n   if ($23) {\n    $i$255 = 1;\n    $pnt$163 = $pnt$072;\n    $pnt2$362 = $pnt2$271;\n    $wk_max$157 = $wk_max$070;\n    while (1) {\n     do if ((HEAPU8[$pnt$163 >> 0] | 0 | 0) > ($labelingThresh | 0)) {\n      HEAP16[$pnt2$362 >> 1] = 0;\n      $wk_max$2 = $wk_max$157;\n     } else {\n      $28 = HEAP16[$pnt2$362 + ($18 << 1) >> 1] | 0;\n      if ($28 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$362 >> 1] = $28;\n       $31 = ($28 << 16 >> 16) * 7 | 0;\n       $33 = $labelInfo + 1310736 + ($31 + -7 << 2) | 0;\n       HEAP32[$33 >> 2] = (HEAP32[$33 >> 2] | 0) + 1;\n       $37 = $labelInfo + 1310736 + ($31 + -6 << 2) | 0;\n       HEAP32[$37 >> 2] = (HEAP32[$37 >> 2] | 0) + $i$255;\n       $41 = $labelInfo + 1310736 + ($31 + -5 << 2) | 0;\n       HEAP32[$41 >> 2] = (HEAP32[$41 >> 2] | 0) + $j$068;\n       HEAP32[$labelInfo + 1310736 + ($31 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $47 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0;\n      $48 = $47 << 16 >> 16;\n      $51 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0;\n      $52 = $51 << 16 >> 16;\n      $53 = $51 << 16 >> 16 > 0;\n      if ($47 << 16 >> 16 <= 0) {\n       if ($53) {\n        HEAP16[$pnt2$362 >> 1] = $51;\n        $153 = $52 * 7 | 0;\n        $155 = $labelInfo + 1310736 + ($153 + -7 << 2) | 0;\n        HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + 1;\n        $159 = $labelInfo + 1310736 + ($153 + -6 << 2) | 0;\n        HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $i$255;\n        $163 = $labelInfo + 1310736 + ($153 + -5 << 2) | 0;\n        HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + $j$068;\n        $167 = $labelInfo + 1310736 + ($153 + -3 << 2) | 0;\n        if ((HEAP32[$167 >> 2] | 0) < ($i$255 | 0)) HEAP32[$167 >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($153 + -1 << 2) >> 2] = $j$068;\n        $wk_max$2 = $wk_max$157;\n        break;\n       }\n       $173 = HEAP16[$pnt2$362 + -2 >> 1] | 0;\n       if ($173 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$362 >> 1] = $173;\n        $176 = ($173 << 16 >> 16) * 7 | 0;\n        $178 = $labelInfo + 1310736 + ($176 + -7 << 2) | 0;\n        HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + 1;\n        $182 = $labelInfo + 1310736 + ($176 + -6 << 2) | 0;\n        HEAP32[$182 >> 2] = (HEAP32[$182 >> 2] | 0) + $i$255;\n        $186 = $labelInfo + 1310736 + ($176 + -5 << 2) | 0;\n        HEAP32[$186 >> 2] = (HEAP32[$186 >> 2] | 0) + $j$068;\n        $190 = $labelInfo + 1310736 + ($176 + -3 << 2) | 0;\n        if ((HEAP32[$190 >> 2] | 0) >= ($i$255 | 0)) {\n         $wk_max$2 = $wk_max$157;\n         break;\n        }\n        HEAP32[$190 >> 2] = $i$255;\n        $wk_max$2 = $wk_max$157;\n        break;\n       } else {\n        $193 = $wk_max$157 + 1 | 0;\n        if (($wk_max$157 | 0) > 32767) break L13;\n        HEAP16[$pnt2$362 >> 1] = $193;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $193 << 16 >> 16;\n        $198 = $wk_max$157 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($198 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($198 + 1 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($198 + 2 << 2) >> 2] = $j$068;\n        HEAP32[$labelInfo + 1310736 + ($198 + 3 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($198 + 4 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($198 + 5 << 2) >> 2] = $j$068;\n        HEAP32[$labelInfo + 1310736 + ($198 + 6 << 2) >> 2] = $j$068;\n        $wk_max$2 = $193;\n        break;\n       }\n      }\n      if ($53) {\n       $56 = HEAP32[$labelInfo + 1179664 + ($48 + -1 << 2) >> 2] | 0;\n       $59 = HEAP32[$labelInfo + 1179664 + ($52 + -1 << 2) >> 2] | 0;\n       if (($56 | 0) > ($59 | 0)) {\n        HEAP16[$pnt2$362 >> 1] = $59;\n        if (($wk_max$157 | 0) > 0) {\n         $k$051 = 0;\n         $wk$052 = $16;\n         while (1) {\n          if ((HEAP32[$wk$052 >> 2] | 0) == ($56 | 0)) HEAP32[$wk$052 >> 2] = $59;\n          $k$051 = $k$051 + 1 | 0;\n          if (($k$051 | 0) >= ($wk_max$157 | 0)) {\n           $76 = $59;\n           break;\n          } else $wk$052 = $wk$052 + 4 | 0;\n         }\n        } else $76 = $59;\n       } else {\n        HEAP16[$pnt2$362 >> 1] = $56;\n        if (($56 | 0) < ($59 | 0) & ($wk_max$157 | 0) > 0) {\n         $k$148 = 0;\n         $wk$149 = $16;\n         while (1) {\n          if ((HEAP32[$wk$149 >> 2] | 0) == ($59 | 0)) HEAP32[$wk$149 >> 2] = $56;\n          $k$148 = $k$148 + 1 | 0;\n          if (($k$148 | 0) >= ($wk_max$157 | 0)) {\n           $76 = $56;\n           break;\n          } else $wk$149 = $wk$149 + 4 | 0;\n         }\n        } else $76 = $56;\n       }\n       $78 = ($76 << 16 >> 16) * 7 | 0;\n       $80 = $labelInfo + 1310736 + ($78 + -7 << 2) | 0;\n       HEAP32[$80 >> 2] = (HEAP32[$80 >> 2] | 0) + 1;\n       $84 = $labelInfo + 1310736 + ($78 + -6 << 2) | 0;\n       HEAP32[$84 >> 2] = (HEAP32[$84 >> 2] | 0) + $i$255;\n       $88 = $labelInfo + 1310736 + ($78 + -5 << 2) | 0;\n       HEAP32[$88 >> 2] = (HEAP32[$88 >> 2] | 0) + $j$068;\n       HEAP32[$labelInfo + 1310736 + ($78 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $94 = HEAP16[$pnt2$362 + -2 >> 1] | 0;\n      if ($94 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$362 >> 1] = $47;\n       $134 = $48 * 7 | 0;\n       $136 = $labelInfo + 1310736 + ($134 + -7 << 2) | 0;\n       HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + 1;\n       $140 = $labelInfo + 1310736 + ($134 + -6 << 2) | 0;\n       HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $i$255;\n       $144 = $labelInfo + 1310736 + ($134 + -5 << 2) | 0;\n       HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $j$068;\n       $148 = $labelInfo + 1310736 + ($134 + -4 << 2) | 0;\n       if ((HEAP32[$148 >> 2] | 0) > ($i$255 | 0)) HEAP32[$148 >> 2] = $i$255;\n       HEAP32[$labelInfo + 1310736 + ($134 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $99 = HEAP32[$labelInfo + 1179664 + ($48 + -1 << 2) >> 2] | 0;\n      $102 = HEAP32[$labelInfo + 1179664 + (($94 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($99 | 0) > ($102 | 0)) {\n       HEAP16[$pnt2$362 >> 1] = $102;\n       if (($wk_max$157 | 0) > 0) {\n        $k$244 = 0;\n        $wk$245 = $16;\n        while (1) {\n         if ((HEAP32[$wk$245 >> 2] | 0) == ($99 | 0)) HEAP32[$wk$245 >> 2] = $102;\n         $k$244 = $k$244 + 1 | 0;\n         if (($k$244 | 0) >= ($wk_max$157 | 0)) {\n          $119 = $102;\n          break;\n         } else $wk$245 = $wk$245 + 4 | 0;\n        }\n       } else $119 = $102;\n      } else {\n       HEAP16[$pnt2$362 >> 1] = $99;\n       if (($99 | 0) < ($102 | 0) & ($wk_max$157 | 0) > 0) {\n        $k$341 = 0;\n        $wk$342 = $16;\n        while (1) {\n         if ((HEAP32[$wk$342 >> 2] | 0) == ($102 | 0)) HEAP32[$wk$342 >> 2] = $99;\n         $k$341 = $k$341 + 1 | 0;\n         if (($k$341 | 0) >= ($wk_max$157 | 0)) {\n          $119 = $99;\n          break;\n         } else $wk$342 = $wk$342 + 4 | 0;\n        }\n       } else $119 = $99;\n      }\n      $121 = ($119 << 16 >> 16) * 7 | 0;\n      $123 = $labelInfo + 1310736 + ($121 + -7 << 2) | 0;\n      HEAP32[$123 >> 2] = (HEAP32[$123 >> 2] | 0) + 1;\n      $127 = $labelInfo + 1310736 + ($121 + -6 << 2) | 0;\n      HEAP32[$127 >> 2] = (HEAP32[$127 >> 2] | 0) + $i$255;\n      $131 = $labelInfo + 1310736 + ($121 + -5 << 2) | 0;\n      HEAP32[$131 >> 2] = (HEAP32[$131 >> 2] | 0) + $j$068;\n      $wk_max$2 = $wk_max$157;\n     } while (0);\n     $i$255 = $i$255 + 1 | 0;\n     $213 = $pnt$163 + 2 | 0;\n     $214 = $pnt2$362 + 2 | 0;\n     if (($i$255 | 0) >= ($9 | 0)) {\n      $pnt$1$lcssa = $213;\n      $pnt2$3$lcssa = $214;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $pnt$163 = $213;\n      $pnt2$362 = $214;\n      $wk_max$157 = $wk_max$2;\n     }\n    }\n   } else {\n    $pnt$1$lcssa = $pnt$072;\n    $pnt2$3$lcssa = $pnt2$271;\n    $wk_max$1$lcssa = $wk_max$070;\n   }\n   $j$068 = $j$068 + 1 | 0;\n   if (($j$068 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $pnt$072 = $pnt$1$lcssa + 4 | 0;\n    $pnt2$271 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$070 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $220 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$337 = 1;\n   $j$138 = 1;\n   $wk$439 = $16;\n   while (1) {\n    $222 = HEAP32[$wk$439 >> 2] | 0;\n    if (($222 | 0) == ($i$337 | 0)) {\n     $228 = $j$138;\n     $j$2 = $j$138 + 1 | 0;\n    } else {\n     $228 = HEAP32[$labelInfo + 1179664 + ($222 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$138;\n    }\n    HEAP32[$wk$439 >> 2] = $228;\n    if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$337 = $i$337 + 1 | 0;\n     $j$138 = $j$2;\n     $wk$439 = $wk$439 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $232 = $labelInfo + 8 | 0;\n  $233 = $j$1$lcssa + -1 | 0;\n  HEAP32[$232 >> 2] = $233;\n  if (!$233) $$0 = 0; else {\n   _memset($220 | 0, 0, $233 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $233 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$435 = 0;\n    do {\n     $240 = $i$435 << 2;\n     HEAP32[$labelInfo + 131084 + ($240 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($240 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($240 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($240 | 3) << 2) >> 2] = 0;\n     $i$435 = $i$435 + 1 | 0;\n    } while (($i$435 | 0) < (HEAP32[$232 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$533 = 0;\n    do {\n     $254 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0;\n     $255 = $i$533 * 7 | 0;\n     $258 = $labelInfo + 12 + ($254 << 2) | 0;\n     HEAP32[$258 >> 2] = (HEAP32[$258 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($255 << 2) >> 2] | 0);\n     $265 = $254 << 1;\n     $266 = $labelInfo + 655376 + ($265 << 3) | 0;\n     HEAPF64[$266 >> 3] = +HEAPF64[$266 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($255 + 1 << 2) >> 2] | 0);\n     $274 = $labelInfo + 655376 + (($265 | 1) << 3) | 0;\n     HEAPF64[$274 >> 3] = +HEAPF64[$274 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($255 + 2 << 2) >> 2] | 0);\n     $277 = $254 << 2;\n     $278 = $labelInfo + 131084 + ($277 << 2) | 0;\n     $282 = HEAP32[$labelInfo + 1310736 + ($255 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$278 >> 2] | 0) > ($282 | 0)) HEAP32[$278 >> 2] = $282;\n     $285 = $labelInfo + 131084 + (($277 | 1) << 2) | 0;\n     $289 = HEAP32[$labelInfo + 1310736 + ($255 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$285 >> 2] | 0) < ($289 | 0)) HEAP32[$285 >> 2] = $289;\n     $292 = $labelInfo + 131084 + (($277 | 2) << 2) | 0;\n     $296 = HEAP32[$labelInfo + 1310736 + ($255 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$292 >> 2] | 0) > ($296 | 0)) HEAP32[$292 >> 2] = $296;\n     $299 = $labelInfo + 131084 + (($277 | 3) << 2) | 0;\n     $303 = HEAP32[$labelInfo + 1310736 + ($255 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$299 >> 2] | 0) < ($303 | 0)) HEAP32[$299 >> 2] = $303;\n     $i$533 = $i$533 + 1 | 0;\n    } while (($i$533 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$232 >> 2] | 0) > 0) {\n    $i$632 = 0;\n    do {\n     $307 = $labelInfo + 12 + ($i$632 << 2) | 0;\n     $310 = $i$632 << 1;\n     $311 = $labelInfo + 655376 + ($310 << 3) | 0;\n     HEAPF64[$311 >> 3] = +HEAPF64[$311 >> 3] / +(HEAP32[$307 >> 2] | 0);\n     $317 = $labelInfo + 655376 + (($310 | 1) << 3) | 0;\n     HEAPF64[$317 >> 3] = +HEAPF64[$317 >> 3] / +(HEAP32[$307 >> 2] | 0);\n     $i$632 = $i$632 + 1 | 0;\n    } while (($i$632 | 0) < (HEAP32[$232 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubDWRC($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $101 = 0, $118 = 0, $120 = 0, $122 = 0, $126 = 0, $130 = 0, $133 = 0, $135 = 0, $139 = 0, $143 = 0, $147 = 0, $152 = 0, $154 = 0, $158 = 0, $16 = 0, $162 = 0, $166 = 0, $17 = 0, $172 = 0, $175 = 0, $177 = 0, $18 = 0, $181 = 0, $185 = 0, $189 = 0, $192 = 0, $197 = 0, $212 = 0, $213 = 0, $219 = 0, $22 = 0, $221 = 0, $227 = 0, $231 = 0, $232 = 0, $239 = 0, $253 = 0, $254 = 0, $257 = 0, $264 = 0, $265 = 0, $27 = 0, $273 = 0, $276 = 0, $277 = 0, $281 = 0, $284 = 0, $288 = 0, $291 = 0, $295 = 0, $298 = 0, $30 = 0, $302 = 0, $306 = 0, $309 = 0, $310 = 0, $316 = 0, $32 = 0, $36 = 0, $40 = 0, $46 = 0, $47 = 0, $50 = 0, $51 = 0, $52 = 0, $55 = 0, $58 = 0, $75 = 0, $77 = 0, $79 = 0, $83 = 0, $87 = 0, $9 = 0, $93 = 0, $98 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$081 = 0;\n  $pnt1$083 = $0;\n  $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$082 >> 1] = 0;\n   HEAP16[$pnt1$083 >> 1] = 0;\n   $i$081 = $i$081 + 1 | 0;\n   if (($i$081 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$083 = $pnt1$083 + 2 | 0;\n    $pnt2$082 = $pnt2$082 + 2 | 0;\n   }\n  }\n }\n $9 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$175 = 0;\n  $pnt1$177 = $0;\n  $pnt2$176 = $0 + ($9 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$176 >> 1] = 0;\n   HEAP16[$pnt1$177 >> 1] = 0;\n   $i$175 = $i$175 + 1 | 0;\n   if (($i$175 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0;\n    $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0;\n   }\n  }\n }\n $16 = $labelInfo + 1179664 | 0;\n $17 = $xsize + 1 | 0;\n $18 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $22 = ($9 | 0) > 1;\n  $j$068 = 1;\n  $pnt$072 = $image + $17 | 0;\n  $pnt2$271 = $0 + ($17 << 1) | 0;\n  $wk_max$070 = 0;\n  L13 : while (1) {\n   if ($22) {\n    $i$255 = 1;\n    $pnt$163 = $pnt$072;\n    $pnt2$362 = $pnt2$271;\n    $wk_max$157 = $wk_max$070;\n    while (1) {\n     do if ((HEAPU8[$pnt$163 >> 0] | 0 | 0) > ($labelingThresh | 0)) {\n      $27 = HEAP16[$pnt2$362 + ($18 << 1) >> 1] | 0;\n      if ($27 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$362 >> 1] = $27;\n       $30 = ($27 << 16 >> 16) * 7 | 0;\n       $32 = $labelInfo + 1310736 + ($30 + -7 << 2) | 0;\n       HEAP32[$32 >> 2] = (HEAP32[$32 >> 2] | 0) + 1;\n       $36 = $labelInfo + 1310736 + ($30 + -6 << 2) | 0;\n       HEAP32[$36 >> 2] = (HEAP32[$36 >> 2] | 0) + $i$255;\n       $40 = $labelInfo + 1310736 + ($30 + -5 << 2) | 0;\n       HEAP32[$40 >> 2] = (HEAP32[$40 >> 2] | 0) + $j$068;\n       HEAP32[$labelInfo + 1310736 + ($30 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $46 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0;\n      $47 = $46 << 16 >> 16;\n      $50 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0;\n      $51 = $50 << 16 >> 16;\n      $52 = $50 << 16 >> 16 > 0;\n      if ($46 << 16 >> 16 <= 0) {\n       if ($52) {\n        HEAP16[$pnt2$362 >> 1] = $50;\n        $152 = $51 * 7 | 0;\n        $154 = $labelInfo + 1310736 + ($152 + -7 << 2) | 0;\n        HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + 1;\n        $158 = $labelInfo + 1310736 + ($152 + -6 << 2) | 0;\n        HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + $i$255;\n        $162 = $labelInfo + 1310736 + ($152 + -5 << 2) | 0;\n        HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $j$068;\n        $166 = $labelInfo + 1310736 + ($152 + -3 << 2) | 0;\n        if ((HEAP32[$166 >> 2] | 0) < ($i$255 | 0)) HEAP32[$166 >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($152 + -1 << 2) >> 2] = $j$068;\n        $wk_max$2 = $wk_max$157;\n        break;\n       }\n       $172 = HEAP16[$pnt2$362 + -2 >> 1] | 0;\n       if ($172 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$362 >> 1] = $172;\n        $175 = ($172 << 16 >> 16) * 7 | 0;\n        $177 = $labelInfo + 1310736 + ($175 + -7 << 2) | 0;\n        HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + 1;\n        $181 = $labelInfo + 1310736 + ($175 + -6 << 2) | 0;\n        HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + $i$255;\n        $185 = $labelInfo + 1310736 + ($175 + -5 << 2) | 0;\n        HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + $j$068;\n        $189 = $labelInfo + 1310736 + ($175 + -3 << 2) | 0;\n        if ((HEAP32[$189 >> 2] | 0) >= ($i$255 | 0)) {\n         $wk_max$2 = $wk_max$157;\n         break;\n        }\n        HEAP32[$189 >> 2] = $i$255;\n        $wk_max$2 = $wk_max$157;\n        break;\n       } else {\n        $192 = $wk_max$157 + 1 | 0;\n        if (($wk_max$157 | 0) > 32767) break L13;\n        HEAP16[$pnt2$362 >> 1] = $192;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $192 << 16 >> 16;\n        $197 = $wk_max$157 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($197 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($197 + 1 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($197 + 2 << 2) >> 2] = $j$068;\n        HEAP32[$labelInfo + 1310736 + ($197 + 3 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($197 + 4 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($197 + 5 << 2) >> 2] = $j$068;\n        HEAP32[$labelInfo + 1310736 + ($197 + 6 << 2) >> 2] = $j$068;\n        $wk_max$2 = $192;\n        break;\n       }\n      }\n      if ($52) {\n       $55 = HEAP32[$labelInfo + 1179664 + ($47 + -1 << 2) >> 2] | 0;\n       $58 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0;\n       if (($55 | 0) > ($58 | 0)) {\n        HEAP16[$pnt2$362 >> 1] = $58;\n        if (($wk_max$157 | 0) > 0) {\n         $k$051 = 0;\n         $wk$052 = $16;\n         while (1) {\n          if ((HEAP32[$wk$052 >> 2] | 0) == ($55 | 0)) HEAP32[$wk$052 >> 2] = $58;\n          $k$051 = $k$051 + 1 | 0;\n          if (($k$051 | 0) >= ($wk_max$157 | 0)) {\n           $75 = $58;\n           break;\n          } else $wk$052 = $wk$052 + 4 | 0;\n         }\n        } else $75 = $58;\n       } else {\n        HEAP16[$pnt2$362 >> 1] = $55;\n        if (($55 | 0) < ($58 | 0) & ($wk_max$157 | 0) > 0) {\n         $k$148 = 0;\n         $wk$149 = $16;\n         while (1) {\n          if ((HEAP32[$wk$149 >> 2] | 0) == ($58 | 0)) HEAP32[$wk$149 >> 2] = $55;\n          $k$148 = $k$148 + 1 | 0;\n          if (($k$148 | 0) >= ($wk_max$157 | 0)) {\n           $75 = $55;\n           break;\n          } else $wk$149 = $wk$149 + 4 | 0;\n         }\n        } else $75 = $55;\n       }\n       $77 = ($75 << 16 >> 16) * 7 | 0;\n       $79 = $labelInfo + 1310736 + ($77 + -7 << 2) | 0;\n       HEAP32[$79 >> 2] = (HEAP32[$79 >> 2] | 0) + 1;\n       $83 = $labelInfo + 1310736 + ($77 + -6 << 2) | 0;\n       HEAP32[$83 >> 2] = (HEAP32[$83 >> 2] | 0) + $i$255;\n       $87 = $labelInfo + 1310736 + ($77 + -5 << 2) | 0;\n       HEAP32[$87 >> 2] = (HEAP32[$87 >> 2] | 0) + $j$068;\n       HEAP32[$labelInfo + 1310736 + ($77 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $93 = HEAP16[$pnt2$362 + -2 >> 1] | 0;\n      if ($93 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$362 >> 1] = $46;\n       $133 = $47 * 7 | 0;\n       $135 = $labelInfo + 1310736 + ($133 + -7 << 2) | 0;\n       HEAP32[$135 >> 2] = (HEAP32[$135 >> 2] | 0) + 1;\n       $139 = $labelInfo + 1310736 + ($133 + -6 << 2) | 0;\n       HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + $i$255;\n       $143 = $labelInfo + 1310736 + ($133 + -5 << 2) | 0;\n       HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $j$068;\n       $147 = $labelInfo + 1310736 + ($133 + -4 << 2) | 0;\n       if ((HEAP32[$147 >> 2] | 0) > ($i$255 | 0)) HEAP32[$147 >> 2] = $i$255;\n       HEAP32[$labelInfo + 1310736 + ($133 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $98 = HEAP32[$labelInfo + 1179664 + ($47 + -1 << 2) >> 2] | 0;\n      $101 = HEAP32[$labelInfo + 1179664 + (($93 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($98 | 0) > ($101 | 0)) {\n       HEAP16[$pnt2$362 >> 1] = $101;\n       if (($wk_max$157 | 0) > 0) {\n        $k$244 = 0;\n        $wk$245 = $16;\n        while (1) {\n         if ((HEAP32[$wk$245 >> 2] | 0) == ($98 | 0)) HEAP32[$wk$245 >> 2] = $101;\n         $k$244 = $k$244 + 1 | 0;\n         if (($k$244 | 0) >= ($wk_max$157 | 0)) {\n          $118 = $101;\n          break;\n         } else $wk$245 = $wk$245 + 4 | 0;\n        }\n       } else $118 = $101;\n      } else {\n       HEAP16[$pnt2$362 >> 1] = $98;\n       if (($98 | 0) < ($101 | 0) & ($wk_max$157 | 0) > 0) {\n        $k$341 = 0;\n        $wk$342 = $16;\n        while (1) {\n         if ((HEAP32[$wk$342 >> 2] | 0) == ($101 | 0)) HEAP32[$wk$342 >> 2] = $98;\n         $k$341 = $k$341 + 1 | 0;\n         if (($k$341 | 0) >= ($wk_max$157 | 0)) {\n          $118 = $98;\n          break;\n         } else $wk$342 = $wk$342 + 4 | 0;\n        }\n       } else $118 = $98;\n      }\n      $120 = ($118 << 16 >> 16) * 7 | 0;\n      $122 = $labelInfo + 1310736 + ($120 + -7 << 2) | 0;\n      HEAP32[$122 >> 2] = (HEAP32[$122 >> 2] | 0) + 1;\n      $126 = $labelInfo + 1310736 + ($120 + -6 << 2) | 0;\n      HEAP32[$126 >> 2] = (HEAP32[$126 >> 2] | 0) + $i$255;\n      $130 = $labelInfo + 1310736 + ($120 + -5 << 2) | 0;\n      HEAP32[$130 >> 2] = (HEAP32[$130 >> 2] | 0) + $j$068;\n      $wk_max$2 = $wk_max$157;\n     } else {\n      HEAP16[$pnt2$362 >> 1] = 0;\n      $wk_max$2 = $wk_max$157;\n     } while (0);\n     $i$255 = $i$255 + 1 | 0;\n     $212 = $pnt$163 + 1 | 0;\n     $213 = $pnt2$362 + 2 | 0;\n     if (($i$255 | 0) >= ($9 | 0)) {\n      $pnt$1$lcssa = $212;\n      $pnt2$3$lcssa = $213;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $pnt$163 = $212;\n      $pnt2$362 = $213;\n      $wk_max$157 = $wk_max$2;\n     }\n    }\n   } else {\n    $pnt$1$lcssa = $pnt$072;\n    $pnt2$3$lcssa = $pnt2$271;\n    $wk_max$1$lcssa = $wk_max$070;\n   }\n   $j$068 = $j$068 + 1 | 0;\n   if (($j$068 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $pnt$072 = $pnt$1$lcssa + 2 | 0;\n    $pnt2$271 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$070 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $219 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$337 = 1;\n   $j$138 = 1;\n   $wk$439 = $16;\n   while (1) {\n    $221 = HEAP32[$wk$439 >> 2] | 0;\n    if (($221 | 0) == ($i$337 | 0)) {\n     $227 = $j$138;\n     $j$2 = $j$138 + 1 | 0;\n    } else {\n     $227 = HEAP32[$labelInfo + 1179664 + ($221 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$138;\n    }\n    HEAP32[$wk$439 >> 2] = $227;\n    if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$337 = $i$337 + 1 | 0;\n     $j$138 = $j$2;\n     $wk$439 = $wk$439 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $231 = $labelInfo + 8 | 0;\n  $232 = $j$1$lcssa + -1 | 0;\n  HEAP32[$231 >> 2] = $232;\n  if (!$232) $$0 = 0; else {\n   _memset($219 | 0, 0, $232 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $232 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$435 = 0;\n    do {\n     $239 = $i$435 << 2;\n     HEAP32[$labelInfo + 131084 + ($239 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($239 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($239 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($239 | 3) << 2) >> 2] = 0;\n     $i$435 = $i$435 + 1 | 0;\n    } while (($i$435 | 0) < (HEAP32[$231 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$533 = 0;\n    do {\n     $253 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0;\n     $254 = $i$533 * 7 | 0;\n     $257 = $labelInfo + 12 + ($253 << 2) | 0;\n     HEAP32[$257 >> 2] = (HEAP32[$257 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($254 << 2) >> 2] | 0);\n     $264 = $253 << 1;\n     $265 = $labelInfo + 655376 + ($264 << 3) | 0;\n     HEAPF64[$265 >> 3] = +HEAPF64[$265 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($254 + 1 << 2) >> 2] | 0);\n     $273 = $labelInfo + 655376 + (($264 | 1) << 3) | 0;\n     HEAPF64[$273 >> 3] = +HEAPF64[$273 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($254 + 2 << 2) >> 2] | 0);\n     $276 = $253 << 2;\n     $277 = $labelInfo + 131084 + ($276 << 2) | 0;\n     $281 = HEAP32[$labelInfo + 1310736 + ($254 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$277 >> 2] | 0) > ($281 | 0)) HEAP32[$277 >> 2] = $281;\n     $284 = $labelInfo + 131084 + (($276 | 1) << 2) | 0;\n     $288 = HEAP32[$labelInfo + 1310736 + ($254 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$284 >> 2] | 0) < ($288 | 0)) HEAP32[$284 >> 2] = $288;\n     $291 = $labelInfo + 131084 + (($276 | 2) << 2) | 0;\n     $295 = HEAP32[$labelInfo + 1310736 + ($254 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$291 >> 2] | 0) > ($295 | 0)) HEAP32[$291 >> 2] = $295;\n     $298 = $labelInfo + 131084 + (($276 | 3) << 2) | 0;\n     $302 = HEAP32[$labelInfo + 1310736 + ($254 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$298 >> 2] | 0) < ($302 | 0)) HEAP32[$298 >> 2] = $302;\n     $i$533 = $i$533 + 1 | 0;\n    } while (($i$533 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$231 >> 2] | 0) > 0) {\n    $i$632 = 0;\n    do {\n     $306 = $labelInfo + 12 + ($i$632 << 2) | 0;\n     $309 = $i$632 << 1;\n     $310 = $labelInfo + 655376 + ($309 << 3) | 0;\n     HEAPF64[$310 >> 3] = +HEAPF64[$310 >> 3] / +(HEAP32[$306 >> 2] | 0);\n     $316 = $labelInfo + 655376 + (($309 | 1) << 3) | 0;\n     HEAPF64[$316 >> 3] = +HEAPF64[$316 >> 3] / +(HEAP32[$306 >> 2] | 0);\n     $i$632 = $i$632 + 1 | 0;\n    } while (($i$632 | 0) < (HEAP32[$231 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLabelingSubDBRC($image, $xsize, $ysize, $labelingThresh, $labelInfo) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelingThresh = $labelingThresh | 0;\n $labelInfo = $labelInfo | 0;\n var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $101 = 0, $118 = 0, $120 = 0, $122 = 0, $126 = 0, $130 = 0, $133 = 0, $135 = 0, $139 = 0, $143 = 0, $147 = 0, $152 = 0, $154 = 0, $158 = 0, $16 = 0, $162 = 0, $166 = 0, $17 = 0, $172 = 0, $175 = 0, $177 = 0, $18 = 0, $181 = 0, $185 = 0, $189 = 0, $192 = 0, $197 = 0, $212 = 0, $213 = 0, $219 = 0, $22 = 0, $221 = 0, $227 = 0, $231 = 0, $232 = 0, $239 = 0, $253 = 0, $254 = 0, $257 = 0, $264 = 0, $265 = 0, $27 = 0, $273 = 0, $276 = 0, $277 = 0, $281 = 0, $284 = 0, $288 = 0, $291 = 0, $295 = 0, $298 = 0, $30 = 0, $302 = 0, $306 = 0, $309 = 0, $310 = 0, $316 = 0, $32 = 0, $36 = 0, $40 = 0, $46 = 0, $47 = 0, $50 = 0, $51 = 0, $52 = 0, $55 = 0, $58 = 0, $75 = 0, $77 = 0, $79 = 0, $83 = 0, $87 = 0, $9 = 0, $93 = 0, $98 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = HEAP32[$labelInfo >> 2] | 0;\n $1 = $ysize + -1 | 0;\n if (($xsize | 0) > 0) {\n  $i$081 = 0;\n  $pnt1$083 = $0;\n  $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$082 >> 1] = 0;\n   HEAP16[$pnt1$083 >> 1] = 0;\n   $i$081 = $i$081 + 1 | 0;\n   if (($i$081 | 0) >= ($xsize | 0)) break; else {\n    $pnt1$083 = $pnt1$083 + 2 | 0;\n    $pnt2$082 = $pnt2$082 + 2 | 0;\n   }\n  }\n }\n $9 = $xsize + -1 | 0;\n if (($ysize | 0) > 0) {\n  $i$175 = 0;\n  $pnt1$177 = $0;\n  $pnt2$176 = $0 + ($9 << 1) | 0;\n  while (1) {\n   HEAP16[$pnt2$176 >> 1] = 0;\n   HEAP16[$pnt1$177 >> 1] = 0;\n   $i$175 = $i$175 + 1 | 0;\n   if (($i$175 | 0) >= ($ysize | 0)) break; else {\n    $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0;\n    $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0;\n   }\n  }\n }\n $16 = $labelInfo + 1179664 | 0;\n $17 = $xsize + 1 | 0;\n $18 = 0 - $xsize | 0;\n $$sum = 1 - $xsize | 0;\n $$sum1 = ~$xsize;\n L11 : do if (($1 | 0) > 1) {\n  $22 = ($9 | 0) > 1;\n  $j$068 = 1;\n  $pnt$072 = $image + $17 | 0;\n  $pnt2$271 = $0 + ($17 << 1) | 0;\n  $wk_max$070 = 0;\n  L13 : while (1) {\n   if ($22) {\n    $i$255 = 1;\n    $pnt$163 = $pnt$072;\n    $pnt2$362 = $pnt2$271;\n    $wk_max$157 = $wk_max$070;\n    while (1) {\n     do if ((HEAPU8[$pnt$163 >> 0] | 0 | 0) > ($labelingThresh | 0)) {\n      HEAP16[$pnt2$362 >> 1] = 0;\n      $wk_max$2 = $wk_max$157;\n     } else {\n      $27 = HEAP16[$pnt2$362 + ($18 << 1) >> 1] | 0;\n      if ($27 << 16 >> 16 > 0) {\n       HEAP16[$pnt2$362 >> 1] = $27;\n       $30 = ($27 << 16 >> 16) * 7 | 0;\n       $32 = $labelInfo + 1310736 + ($30 + -7 << 2) | 0;\n       HEAP32[$32 >> 2] = (HEAP32[$32 >> 2] | 0) + 1;\n       $36 = $labelInfo + 1310736 + ($30 + -6 << 2) | 0;\n       HEAP32[$36 >> 2] = (HEAP32[$36 >> 2] | 0) + $i$255;\n       $40 = $labelInfo + 1310736 + ($30 + -5 << 2) | 0;\n       HEAP32[$40 >> 2] = (HEAP32[$40 >> 2] | 0) + $j$068;\n       HEAP32[$labelInfo + 1310736 + ($30 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $46 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0;\n      $47 = $46 << 16 >> 16;\n      $50 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0;\n      $51 = $50 << 16 >> 16;\n      $52 = $50 << 16 >> 16 > 0;\n      if ($46 << 16 >> 16 <= 0) {\n       if ($52) {\n        HEAP16[$pnt2$362 >> 1] = $50;\n        $152 = $51 * 7 | 0;\n        $154 = $labelInfo + 1310736 + ($152 + -7 << 2) | 0;\n        HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + 1;\n        $158 = $labelInfo + 1310736 + ($152 + -6 << 2) | 0;\n        HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + $i$255;\n        $162 = $labelInfo + 1310736 + ($152 + -5 << 2) | 0;\n        HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $j$068;\n        $166 = $labelInfo + 1310736 + ($152 + -3 << 2) | 0;\n        if ((HEAP32[$166 >> 2] | 0) < ($i$255 | 0)) HEAP32[$166 >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($152 + -1 << 2) >> 2] = $j$068;\n        $wk_max$2 = $wk_max$157;\n        break;\n       }\n       $172 = HEAP16[$pnt2$362 + -2 >> 1] | 0;\n       if ($172 << 16 >> 16 > 0) {\n        HEAP16[$pnt2$362 >> 1] = $172;\n        $175 = ($172 << 16 >> 16) * 7 | 0;\n        $177 = $labelInfo + 1310736 + ($175 + -7 << 2) | 0;\n        HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + 1;\n        $181 = $labelInfo + 1310736 + ($175 + -6 << 2) | 0;\n        HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + $i$255;\n        $185 = $labelInfo + 1310736 + ($175 + -5 << 2) | 0;\n        HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + $j$068;\n        $189 = $labelInfo + 1310736 + ($175 + -3 << 2) | 0;\n        if ((HEAP32[$189 >> 2] | 0) >= ($i$255 | 0)) {\n         $wk_max$2 = $wk_max$157;\n         break;\n        }\n        HEAP32[$189 >> 2] = $i$255;\n        $wk_max$2 = $wk_max$157;\n        break;\n       } else {\n        $192 = $wk_max$157 + 1 | 0;\n        if (($wk_max$157 | 0) > 32767) break L13;\n        HEAP16[$pnt2$362 >> 1] = $192;\n        HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $192 << 16 >> 16;\n        $197 = $wk_max$157 * 7 | 0;\n        HEAP32[$labelInfo + 1310736 + ($197 << 2) >> 2] = 1;\n        HEAP32[$labelInfo + 1310736 + ($197 + 1 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($197 + 2 << 2) >> 2] = $j$068;\n        HEAP32[$labelInfo + 1310736 + ($197 + 3 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($197 + 4 << 2) >> 2] = $i$255;\n        HEAP32[$labelInfo + 1310736 + ($197 + 5 << 2) >> 2] = $j$068;\n        HEAP32[$labelInfo + 1310736 + ($197 + 6 << 2) >> 2] = $j$068;\n        $wk_max$2 = $192;\n        break;\n       }\n      }\n      if ($52) {\n       $55 = HEAP32[$labelInfo + 1179664 + ($47 + -1 << 2) >> 2] | 0;\n       $58 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0;\n       if (($55 | 0) > ($58 | 0)) {\n        HEAP16[$pnt2$362 >> 1] = $58;\n        if (($wk_max$157 | 0) > 0) {\n         $k$051 = 0;\n         $wk$052 = $16;\n         while (1) {\n          if ((HEAP32[$wk$052 >> 2] | 0) == ($55 | 0)) HEAP32[$wk$052 >> 2] = $58;\n          $k$051 = $k$051 + 1 | 0;\n          if (($k$051 | 0) >= ($wk_max$157 | 0)) {\n           $75 = $58;\n           break;\n          } else $wk$052 = $wk$052 + 4 | 0;\n         }\n        } else $75 = $58;\n       } else {\n        HEAP16[$pnt2$362 >> 1] = $55;\n        if (($55 | 0) < ($58 | 0) & ($wk_max$157 | 0) > 0) {\n         $k$148 = 0;\n         $wk$149 = $16;\n         while (1) {\n          if ((HEAP32[$wk$149 >> 2] | 0) == ($58 | 0)) HEAP32[$wk$149 >> 2] = $55;\n          $k$148 = $k$148 + 1 | 0;\n          if (($k$148 | 0) >= ($wk_max$157 | 0)) {\n           $75 = $55;\n           break;\n          } else $wk$149 = $wk$149 + 4 | 0;\n         }\n        } else $75 = $55;\n       }\n       $77 = ($75 << 16 >> 16) * 7 | 0;\n       $79 = $labelInfo + 1310736 + ($77 + -7 << 2) | 0;\n       HEAP32[$79 >> 2] = (HEAP32[$79 >> 2] | 0) + 1;\n       $83 = $labelInfo + 1310736 + ($77 + -6 << 2) | 0;\n       HEAP32[$83 >> 2] = (HEAP32[$83 >> 2] | 0) + $i$255;\n       $87 = $labelInfo + 1310736 + ($77 + -5 << 2) | 0;\n       HEAP32[$87 >> 2] = (HEAP32[$87 >> 2] | 0) + $j$068;\n       HEAP32[$labelInfo + 1310736 + ($77 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $93 = HEAP16[$pnt2$362 + -2 >> 1] | 0;\n      if ($93 << 16 >> 16 <= 0) {\n       HEAP16[$pnt2$362 >> 1] = $46;\n       $133 = $47 * 7 | 0;\n       $135 = $labelInfo + 1310736 + ($133 + -7 << 2) | 0;\n       HEAP32[$135 >> 2] = (HEAP32[$135 >> 2] | 0) + 1;\n       $139 = $labelInfo + 1310736 + ($133 + -6 << 2) | 0;\n       HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + $i$255;\n       $143 = $labelInfo + 1310736 + ($133 + -5 << 2) | 0;\n       HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $j$068;\n       $147 = $labelInfo + 1310736 + ($133 + -4 << 2) | 0;\n       if ((HEAP32[$147 >> 2] | 0) > ($i$255 | 0)) HEAP32[$147 >> 2] = $i$255;\n       HEAP32[$labelInfo + 1310736 + ($133 + -1 << 2) >> 2] = $j$068;\n       $wk_max$2 = $wk_max$157;\n       break;\n      }\n      $98 = HEAP32[$labelInfo + 1179664 + ($47 + -1 << 2) >> 2] | 0;\n      $101 = HEAP32[$labelInfo + 1179664 + (($93 << 16 >> 16) + -1 << 2) >> 2] | 0;\n      if (($98 | 0) > ($101 | 0)) {\n       HEAP16[$pnt2$362 >> 1] = $101;\n       if (($wk_max$157 | 0) > 0) {\n        $k$244 = 0;\n        $wk$245 = $16;\n        while (1) {\n         if ((HEAP32[$wk$245 >> 2] | 0) == ($98 | 0)) HEAP32[$wk$245 >> 2] = $101;\n         $k$244 = $k$244 + 1 | 0;\n         if (($k$244 | 0) >= ($wk_max$157 | 0)) {\n          $118 = $101;\n          break;\n         } else $wk$245 = $wk$245 + 4 | 0;\n        }\n       } else $118 = $101;\n      } else {\n       HEAP16[$pnt2$362 >> 1] = $98;\n       if (($98 | 0) < ($101 | 0) & ($wk_max$157 | 0) > 0) {\n        $k$341 = 0;\n        $wk$342 = $16;\n        while (1) {\n         if ((HEAP32[$wk$342 >> 2] | 0) == ($101 | 0)) HEAP32[$wk$342 >> 2] = $98;\n         $k$341 = $k$341 + 1 | 0;\n         if (($k$341 | 0) >= ($wk_max$157 | 0)) {\n          $118 = $98;\n          break;\n         } else $wk$342 = $wk$342 + 4 | 0;\n        }\n       } else $118 = $98;\n      }\n      $120 = ($118 << 16 >> 16) * 7 | 0;\n      $122 = $labelInfo + 1310736 + ($120 + -7 << 2) | 0;\n      HEAP32[$122 >> 2] = (HEAP32[$122 >> 2] | 0) + 1;\n      $126 = $labelInfo + 1310736 + ($120 + -6 << 2) | 0;\n      HEAP32[$126 >> 2] = (HEAP32[$126 >> 2] | 0) + $i$255;\n      $130 = $labelInfo + 1310736 + ($120 + -5 << 2) | 0;\n      HEAP32[$130 >> 2] = (HEAP32[$130 >> 2] | 0) + $j$068;\n      $wk_max$2 = $wk_max$157;\n     } while (0);\n     $i$255 = $i$255 + 1 | 0;\n     $212 = $pnt$163 + 1 | 0;\n     $213 = $pnt2$362 + 2 | 0;\n     if (($i$255 | 0) >= ($9 | 0)) {\n      $pnt$1$lcssa = $212;\n      $pnt2$3$lcssa = $213;\n      $wk_max$1$lcssa = $wk_max$2;\n      break;\n     } else {\n      $pnt$163 = $212;\n      $pnt2$362 = $213;\n      $wk_max$157 = $wk_max$2;\n     }\n    }\n   } else {\n    $pnt$1$lcssa = $pnt$072;\n    $pnt2$3$lcssa = $pnt2$271;\n    $wk_max$1$lcssa = $wk_max$070;\n   }\n   $j$068 = $j$068 + 1 | 0;\n   if (($j$068 | 0) >= ($1 | 0)) {\n    $wk_max$0$lcssa = $wk_max$1$lcssa;\n    label = 52;\n    break L11;\n   } else {\n    $pnt$072 = $pnt$1$lcssa + 2 | 0;\n    $pnt2$271 = $pnt2$3$lcssa + 4 | 0;\n    $wk_max$070 = $wk_max$1$lcssa;\n   }\n  }\n  _arLog(3, 3904, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $wk_max$0$lcssa = 0;\n  label = 52;\n } while (0);\n if ((label | 0) == 52) {\n  $219 = $labelInfo + 12 | 0;\n  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {\n   $i$337 = 1;\n   $j$138 = 1;\n   $wk$439 = $16;\n   while (1) {\n    $221 = HEAP32[$wk$439 >> 2] | 0;\n    if (($221 | 0) == ($i$337 | 0)) {\n     $227 = $j$138;\n     $j$2 = $j$138 + 1 | 0;\n    } else {\n     $227 = HEAP32[$labelInfo + 1179664 + ($221 + -1 << 2) >> 2] | 0;\n     $j$2 = $j$138;\n    }\n    HEAP32[$wk$439 >> 2] = $227;\n    if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) {\n     $i$337 = $i$337 + 1 | 0;\n     $j$138 = $j$2;\n     $wk$439 = $wk$439 + 4 | 0;\n    } else {\n     $j$1$lcssa = $j$2;\n     break;\n    }\n   }\n  }\n  $231 = $labelInfo + 8 | 0;\n  $232 = $j$1$lcssa + -1 | 0;\n  HEAP32[$231 >> 2] = $232;\n  if (!$232) $$0 = 0; else {\n   _memset($219 | 0, 0, $232 << 2 | 0) | 0;\n   _memset($labelInfo + 655376 | 0, 0, $232 << 4 | 0) | 0;\n   if (($j$1$lcssa | 0) > 1) {\n    $i$435 = 0;\n    do {\n     $239 = $i$435 << 2;\n     HEAP32[$labelInfo + 131084 + ($239 << 2) >> 2] = $xsize;\n     HEAP32[$labelInfo + 131084 + (($239 | 1) << 2) >> 2] = 0;\n     HEAP32[$labelInfo + 131084 + (($239 | 2) << 2) >> 2] = $ysize;\n     HEAP32[$labelInfo + 131084 + (($239 | 3) << 2) >> 2] = 0;\n     $i$435 = $i$435 + 1 | 0;\n    } while (($i$435 | 0) < (HEAP32[$231 >> 2] | 0));\n   }\n   if (($wk_max$0$lcssa | 0) > 0) {\n    $i$533 = 0;\n    do {\n     $253 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0;\n     $254 = $i$533 * 7 | 0;\n     $257 = $labelInfo + 12 + ($253 << 2) | 0;\n     HEAP32[$257 >> 2] = (HEAP32[$257 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($254 << 2) >> 2] | 0);\n     $264 = $253 << 1;\n     $265 = $labelInfo + 655376 + ($264 << 3) | 0;\n     HEAPF64[$265 >> 3] = +HEAPF64[$265 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($254 + 1 << 2) >> 2] | 0);\n     $273 = $labelInfo + 655376 + (($264 | 1) << 3) | 0;\n     HEAPF64[$273 >> 3] = +HEAPF64[$273 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($254 + 2 << 2) >> 2] | 0);\n     $276 = $253 << 2;\n     $277 = $labelInfo + 131084 + ($276 << 2) | 0;\n     $281 = HEAP32[$labelInfo + 1310736 + ($254 + 3 << 2) >> 2] | 0;\n     if ((HEAP32[$277 >> 2] | 0) > ($281 | 0)) HEAP32[$277 >> 2] = $281;\n     $284 = $labelInfo + 131084 + (($276 | 1) << 2) | 0;\n     $288 = HEAP32[$labelInfo + 1310736 + ($254 + 4 << 2) >> 2] | 0;\n     if ((HEAP32[$284 >> 2] | 0) < ($288 | 0)) HEAP32[$284 >> 2] = $288;\n     $291 = $labelInfo + 131084 + (($276 | 2) << 2) | 0;\n     $295 = HEAP32[$labelInfo + 1310736 + ($254 + 5 << 2) >> 2] | 0;\n     if ((HEAP32[$291 >> 2] | 0) > ($295 | 0)) HEAP32[$291 >> 2] = $295;\n     $298 = $labelInfo + 131084 + (($276 | 3) << 2) | 0;\n     $302 = HEAP32[$labelInfo + 1310736 + ($254 + 6 << 2) >> 2] | 0;\n     if ((HEAP32[$298 >> 2] | 0) < ($302 | 0)) HEAP32[$298 >> 2] = $302;\n     $i$533 = $i$533 + 1 | 0;\n    } while (($i$533 | 0) < ($wk_max$0$lcssa | 0));\n   }\n   if ((HEAP32[$231 >> 2] | 0) > 0) {\n    $i$632 = 0;\n    do {\n     $306 = $labelInfo + 12 + ($i$632 << 2) | 0;\n     $309 = $i$632 << 1;\n     $310 = $labelInfo + 655376 + ($309 << 3) | 0;\n     HEAPF64[$310 >> 3] = +HEAPF64[$310 >> 3] / +(HEAP32[$306 >> 2] | 0);\n     $316 = $labelInfo + 655376 + (($309 | 1) << 3) | 0;\n     HEAPF64[$316 >> 3] = +HEAPF64[$316 >> 3] / +(HEAP32[$306 >> 2] | 0);\n     $i$632 = $i$632 + 1 | 0;\n    } while (($i$632 | 0) < (HEAP32[$231 >> 2] | 0));\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) {\n $first = $first | 0;\n $last = $last | 0;\n $db = $db | 0;\n var $$0$i$i$i = 0, $$0$i$i$i10 = 0, $$0$i$i$i21 = 0, $$0$i$i$i7 = 0, $$1 = 0, $$lcssa = 0, $$lcssa152 = 0, $$pre = 0, $0 = 0, $1 = 0, $100 = 0, $102 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $118 = 0, $12 = 0, $121 = 0, $124 = 0, $132 = 0, $133 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0, $14 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0, $154 = 0, $157 = 0, $16 = 0, $164 = 0, $174 = 0, $176 = 0, $18 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0, $19 = 0, $192 = 0, $193 = 0, $195 = 0, $2 = 0, $209 = 0, $211 = 0, $218 = 0, $219 = 0, $22 = 0, $220 = 0, $221 = 0, $225 = 0, $227 = 0, $23 = 0, $230 = 0, $231 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $38 = 0, $43 = 0, $44 = 0, $45 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $60 = 0, $63 = 0, $66 = 0, $76 = 0, $82 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $9 = 0, $95 = 0, $96 = 0, $98 = 0, $99 = 0, $__v$i$i20 = 0, $args = 0, $k$0121 = 0, $k1$0124 = 0, $k2$0123 = 0, $t$0$lcssa = 0, $t$0126 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 96 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $__v$i$i20 = sp + 64 | 0;\n $args = sp + 52 | 0;\n $0 = sp + 40 | 0;\n $1 = sp + 16 | 0;\n $2 = sp;\n L1 : do if (($last - $first | 0) > 1) if ((HEAP8[$first >> 0] | 0) == 73) {\n  $9 = $db + 61 | 0;\n  $$pre = $db + 36 | 0;\n  if (HEAP8[$9 >> 0] | 0) {\n   $12 = HEAP32[$$pre >> 2] | 0;\n   $14 = HEAP32[$12 + -16 >> 2] | 0;\n   $15 = $12 + -12 | 0;\n   $16 = HEAP32[$15 >> 2] | 0;\n   if (($16 | 0) != ($14 | 0)) {\n    $19 = $16;\n    do {\n     $18 = $19 + -16 | 0;\n     HEAP32[$15 >> 2] = $18;\n     __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($18);\n     $19 = HEAP32[$15 >> 2] | 0;\n    } while (($19 | 0) != ($14 | 0));\n   }\n  }\n  $22 = $first + 1 | 0;\n  __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($args, 12750, 1);\n  $23 = $db + 4 | 0;\n  $24 = $db + 12 | 0;\n  $25 = $__v$i$i20 + 8 | 0;\n  $26 = $__v$i$i20 + 8 | 0;\n  $27 = $args + 4 | 0;\n  $28 = $0 + 8 | 0;\n  $29 = $0 + 1 | 0;\n  $30 = $0 + 4 | 0;\n  $31 = $db + 32 | 0;\n  $32 = $db + 40 | 0;\n  $33 = $db + 44 | 0;\n  $34 = $__v$i$i20 + 8 | 0;\n  L9 : do if ((HEAP8[$22 >> 0] | 0) == 69) $t$0$lcssa = $22; else {\n   $t$0126 = $22;\n   L10 : while (1) {\n    do if (HEAP8[$9 >> 0] | 0) {\n     $43 = HEAP32[$24 >> 2] | 0;\n     $44 = HEAP32[$$pre >> 2] | 0;\n     $45 = HEAP32[$32 >> 2] | 0;\n     if ($44 >>> 0 < $45 >>> 0) {\n      HEAP32[$44 >> 2] = 0;\n      HEAP32[$44 + 4 >> 2] = 0;\n      HEAP32[$44 + 8 >> 2] = 0;\n      HEAP32[$44 + 12 >> 2] = $43;\n      HEAP32[$$pre >> 2] = (HEAP32[$$pre >> 2] | 0) + 16;\n      break;\n     }\n     $54 = HEAP32[$31 >> 2] | 0;\n     $55 = $44 - $54 | 0;\n     $56 = $55 >> 4;\n     $57 = $56 + 1 | 0;\n     if (($55 | 0) < -16) {\n      label = 12;\n      break L10;\n     }\n     $60 = $45 - $54 | 0;\n     if ($60 >> 4 >>> 0 < 1073741823) {\n      $63 = $60 >> 3;\n      $$0$i$i$i = $63 >>> 0 < $57 >>> 0 ? $57 : $63;\n     } else $$0$i$i$i = 2147483647;\n     __ZNSt3__114__split_bufferINS_6vectorINS1_IN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEEERNS5_IS9_Lj4096EEEEC2EjjSB_($__v$i$i20, $$0$i$i$i, $56, $33);\n     $66 = HEAP32[$34 >> 2] | 0;\n     HEAP32[$66 >> 2] = 0;\n     HEAP32[$66 + 4 >> 2] = 0;\n     HEAP32[$66 + 8 >> 2] = 0;\n     HEAP32[$66 + 12 >> 2] = $43;\n     HEAP32[$34 >> 2] = $66 + 16;\n     __ZNSt3__16vectorINS0_INS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEEENS4_IS8_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS8_RS9_EE($31, $__v$i$i20);\n     __ZNSt3__114__split_bufferINS_6vectorINS1_IN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEEERNS5_IS9_Lj4096EEEED2Ev($__v$i$i20);\n    } while (0);\n    $76 = ((HEAP32[$23 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0;\n    $38 = __ZN10__cxxabiv112_GLOBAL__N_118parse_template_argINS0_2DbEEEPKcS4_S4_RT_($t$0126, $last, $db) | 0;\n    $82 = ((HEAP32[$23 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0;\n    if (HEAP8[$9 >> 0] | 0) {\n     $85 = HEAP32[$$pre >> 2] | 0;\n     $86 = $85 + -16 | 0;\n     $88 = $85;\n     do {\n      $87 = $88 + -16 | 0;\n      HEAP32[$$pre >> 2] = $87;\n      __ZNSt3__113__vector_baseINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEED2Ev($87);\n      $88 = HEAP32[$$pre >> 2] | 0;\n     } while (($88 | 0) != ($86 | 0));\n    }\n    if (($38 | 0) == ($t$0126 | 0) | ($38 | 0) == ($last | 0)) {\n     label = 56;\n     break;\n    }\n    if (HEAP8[$9 >> 0] | 0) {\n     $95 = HEAP32[$$pre >> 2] | 0;\n     $96 = $95 + -16 | 0;\n     $98 = HEAP32[$24 >> 2] | 0;\n     $99 = $95 + -12 | 0;\n     $100 = HEAP32[$99 >> 2] | 0;\n     $102 = HEAP32[$95 + -8 >> 2] | 0;\n     if ($100 >>> 0 < $102 >>> 0) {\n      HEAP32[$100 >> 2] = 0;\n      HEAP32[$100 + 4 >> 2] = 0;\n      HEAP32[$100 + 8 >> 2] = 0;\n      HEAP32[$100 + 12 >> 2] = $98;\n      HEAP32[$99 >> 2] = (HEAP32[$99 >> 2] | 0) + 16;\n     } else {\n      $112 = HEAP32[$96 >> 2] | 0;\n      $113 = $100 - $112 | 0;\n      $114 = $113 >> 4;\n      $115 = $114 + 1 | 0;\n      if (($113 | 0) < -16) {\n       $$lcssa = $96;\n       label = 25;\n       break;\n      }\n      $118 = $102 - $112 | 0;\n      if ($118 >> 4 >>> 0 < 1073741823) {\n       $121 = $118 >> 3;\n       $$0$i$i$i7 = $121 >>> 0 < $115 >>> 0 ? $115 : $121;\n      } else $$0$i$i$i7 = 2147483647;\n      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i20, $$0$i$i$i7, $114, $95 + -4 | 0);\n      $124 = HEAP32[$25 >> 2] | 0;\n      HEAP32[$124 >> 2] = 0;\n      HEAP32[$124 + 4 >> 2] = 0;\n      HEAP32[$124 + 8 >> 2] = 0;\n      HEAP32[$124 + 12 >> 2] = $98;\n      HEAP32[$25 >> 2] = $124 + 16;\n      __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($96, $__v$i$i20);\n      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i20);\n     }\n     if ($76 >>> 0 < $82 >>> 0) {\n      $k$0121 = $76;\n      do {\n       $132 = HEAP32[(HEAP32[$$pre >> 2] | 0) + -12 >> 2] | 0;\n       $133 = $132 + -16 | 0;\n       $134 = HEAP32[$db >> 2] | 0;\n       $135 = $134 + ($k$0121 * 24 | 0) | 0;\n       $136 = $132 + -12 | 0;\n       $137 = HEAP32[$136 >> 2] | 0;\n       if (($137 | 0) == (HEAP32[$132 + -8 >> 2] | 0)) {\n        $149 = $137 - (HEAP32[$133 >> 2] | 0) | 0;\n        $150 = ($149 | 0) / 24 | 0;\n        $151 = $150 + 1 | 0;\n        if (($149 | 0) < -24) {\n         $$lcssa152 = $133;\n         label = 33;\n         break L10;\n        }\n        if ($150 >>> 0 < 1073741823) {\n         $154 = $150 << 1;\n         $$0$i$i$i10 = $154 >>> 0 < $151 >>> 0 ? $151 : $154;\n        } else $$0$i$i$i10 = 2147483647;\n        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i20, $$0$i$i$i10, $150, $132 + -4 | 0);\n        $157 = HEAP32[$26 >> 2] | 0;\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($157, $135);\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($157 + 12 | 0, $134 + ($k$0121 * 24 | 0) + 12 | 0);\n        HEAP32[$26 >> 2] = $157 + 24;\n        __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($133, $__v$i$i20);\n        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i20);\n       } else {\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($137, $135);\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($137 + 12 | 0, $134 + ($k$0121 * 24 | 0) + 12 | 0);\n        HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + 24;\n       }\n       $k$0121 = $k$0121 + 1 | 0;\n      } while ($k$0121 >>> 0 < $82 >>> 0);\n     }\n    }\n    if ($76 >>> 0 < $82 >>> 0) {\n     $k2$0123 = $76;\n     do {\n      $164 = HEAP8[$args >> 0] | 0;\n      if ((($164 & 1) == 0 ? ($164 & 255) >>> 1 : HEAP32[$27 >> 2] | 0) >>> 0 > 1) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($args, 12690) | 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($0, (HEAP32[$db >> 2] | 0) + ($k2$0123 * 24 | 0) | 0);\n      $174 = HEAP8[$0 >> 0] | 0;\n      $176 = ($174 & 1) == 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($args, $176 ? $29 : HEAP32[$28 >> 2] | 0, $176 ? ($174 & 255) >>> 1 : HEAP32[$30 >> 2] | 0) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);\n      $k2$0123 = $k2$0123 + 1 | 0;\n     } while ($k2$0123 >>> 0 < $82 >>> 0);\n    }\n    if (($82 | 0) != ($76 | 0)) {\n     $k1$0124 = $82;\n     do {\n      $185 = HEAP32[$23 >> 2] | 0;\n      $186 = $185 + -24 | 0;\n      $188 = $185;\n      do {\n       $187 = $188 + -24 | 0;\n       HEAP32[$23 >> 2] = $187;\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($187);\n       $188 = HEAP32[$23 >> 2] | 0;\n      } while (($188 | 0) != ($186 | 0));\n      $k1$0124 = $k1$0124 + -1 | 0;\n     } while (($k1$0124 | 0) != ($76 | 0));\n    }\n    if ((HEAP8[$38 >> 0] | 0) == 69) {\n     $t$0$lcssa = $38;\n     break L9;\n    } else $t$0126 = $38;\n   }\n   if ((label | 0) == 12) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($31); else if ((label | 0) == 25) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($$lcssa); else if ((label | 0) == 33) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($$lcssa152); else if ((label | 0) == 56) {\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($args);\n    $$1 = $first;\n    break L1;\n   }\n  } while (0);\n  $192 = $t$0$lcssa + 1 | 0;\n  $193 = HEAP8[$args >> 0] | 0;\n  $195 = ($193 & 1) == 0;\n  if ((HEAP8[($195 ? $args + 1 | 0 : HEAP32[$args + 8 >> 2] | 0) + (($195 ? ($193 & 255) >>> 1 : HEAP32[$27 >> 2] | 0) + -1) >> 0] | 0) == 62) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($args, 13735) | 0; else __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($args, 12752) | 0;\n  HEAP32[$2 >> 2] = HEAP32[$args >> 2];\n  HEAP32[$2 + 4 >> 2] = HEAP32[$args + 4 >> 2];\n  HEAP32[$2 + 8 >> 2] = HEAP32[$args + 8 >> 2];\n  HEAP32[$args >> 2] = 0;\n  HEAP32[$args + 4 >> 2] = 0;\n  HEAP32[$args + 8 >> 2] = 0;\n  __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($1, $2);\n  $209 = HEAP32[$23 >> 2] | 0;\n  $211 = HEAP32[$db + 8 >> 2] | 0;\n  if ($209 >>> 0 < $211 >>> 0) {\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($209, $1);\n   HEAP32[$23 >> 2] = (HEAP32[$23 >> 2] | 0) + 24;\n  } else {\n   $218 = HEAP32[$db >> 2] | 0;\n   $219 = $209 - $218 | 0;\n   $220 = ($219 | 0) / 24 | 0;\n   $221 = $220 + 1 | 0;\n   if (($219 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n   $225 = ($211 - $218 | 0) / 24 | 0;\n   if ($225 >>> 0 < 1073741823) {\n    $227 = $225 << 1;\n    $$0$i$i$i21 = $227 >>> 0 < $221 >>> 0 ? $221 : $227;\n   } else $$0$i$i$i21 = 2147483647;\n   __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i20, $$0$i$i$i21, $220, $db + 12 | 0);\n   $230 = $__v$i$i20 + 8 | 0;\n   $231 = HEAP32[$230 >> 2] | 0;\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($231, $1);\n   HEAP32[$230 >> 2] = $231 + 24;\n   __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i20);\n   __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i20);\n  }\n  __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1);\n  __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);\n  __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($args);\n  $$1 = $192;\n } else $$1 = $first; else $$1 = $first; while (0);\n STACKTOP = sp;\n return $$1 | 0;\n}\nfunction _free($mem) {\n $mem = $mem | 0;\n var $$lcssa = 0, $$pre$phi59Z2D = 0, $$pre$phi61Z2D = 0, $$pre$phiZ2D = 0, $$sum2 = 0, $1 = 0, $103 = 0, $104 = 0, $111 = 0, $112 = 0, $12 = 0, $120 = 0, $128 = 0, $133 = 0, $134 = 0, $137 = 0, $139 = 0, $14 = 0, $141 = 0, $15 = 0, $156 = 0, $161 = 0, $163 = 0, $166 = 0, $169 = 0, $172 = 0, $175 = 0, $176 = 0, $178 = 0, $179 = 0, $181 = 0, $182 = 0, $184 = 0, $185 = 0, $19 = 0, $191 = 0, $192 = 0, $2 = 0, $201 = 0, $206 = 0, $210 = 0, $216 = 0, $22 = 0, $231 = 0, $233 = 0, $234 = 0, $235 = 0, $236 = 0, $24 = 0, $240 = 0, $241 = 0, $247 = 0, $252 = 0, $253 = 0, $256 = 0, $258 = 0, $26 = 0, $261 = 0, $266 = 0, $272 = 0, $276 = 0, $277 = 0, $284 = 0, $296 = 0, $301 = 0, $308 = 0, $309 = 0, $310 = 0, $318 = 0, $39 = 0, $44 = 0, $46 = 0, $49 = 0, $5 = 0, $51 = 0, $54 = 0, $57 = 0, $58 = 0, $6 = 0, $60 = 0, $61 = 0, $63 = 0, $64 = 0, $66 = 0, $67 = 0, $72 = 0, $73 = 0, $8 = 0, $82 = 0, $87 = 0, $9 = 0, $91 = 0, $97 = 0, $F16$0 = 0, $I18$0 = 0, $K19$052 = 0, $R$0 = 0, $R$0$lcssa = 0, $R$1 = 0, $R7$0 = 0, $R7$0$lcssa = 0, $R7$1 = 0, $RP$0 = 0, $RP$0$lcssa = 0, $RP9$0 = 0, $RP9$0$lcssa = 0, $T$0$lcssa = 0, $T$051 = 0, $T$051$lcssa = 0, $p$0 = 0, $psize$0 = 0, $psize$1 = 0, $sp$0$i = 0, $sp$0$in$i = 0;\n if (!$mem) return;\n $1 = $mem + -8 | 0;\n $2 = HEAP32[760] | 0;\n if ($1 >>> 0 < $2 >>> 0) _abort();\n $5 = HEAP32[$mem + -4 >> 2] | 0;\n $6 = $5 & 3;\n if (($6 | 0) == 1) _abort();\n $8 = $5 & -8;\n $9 = $mem + ($8 + -8) | 0;\n do if (!($5 & 1)) {\n  $12 = HEAP32[$1 >> 2] | 0;\n  if (!$6) return;\n  $$sum2 = -8 - $12 | 0;\n  $14 = $mem + $$sum2 | 0;\n  $15 = $12 + $8 | 0;\n  if ($14 >>> 0 < $2 >>> 0) _abort();\n  if (($14 | 0) == (HEAP32[761] | 0)) {\n   $103 = $mem + ($8 + -4) | 0;\n   $104 = HEAP32[$103 >> 2] | 0;\n   if (($104 & 3 | 0) != 3) {\n    $p$0 = $14;\n    $psize$0 = $15;\n    break;\n   }\n   HEAP32[758] = $15;\n   HEAP32[$103 >> 2] = $104 & -2;\n   HEAP32[$mem + ($$sum2 + 4) >> 2] = $15 | 1;\n   HEAP32[$9 >> 2] = $15;\n   return;\n  }\n  $19 = $12 >>> 3;\n  if ($12 >>> 0 < 256) {\n   $22 = HEAP32[$mem + ($$sum2 + 8) >> 2] | 0;\n   $24 = HEAP32[$mem + ($$sum2 + 12) >> 2] | 0;\n   $26 = 3064 + ($19 << 1 << 2) | 0;\n   if (($22 | 0) != ($26 | 0)) {\n    if ($22 >>> 0 < $2 >>> 0) _abort();\n    if ((HEAP32[$22 + 12 >> 2] | 0) != ($14 | 0)) _abort();\n   }\n   if (($24 | 0) == ($22 | 0)) {\n    HEAP32[756] = HEAP32[756] & ~(1 << $19);\n    $p$0 = $14;\n    $psize$0 = $15;\n    break;\n   }\n   if (($24 | 0) == ($26 | 0)) $$pre$phi61Z2D = $24 + 8 | 0; else {\n    if ($24 >>> 0 < $2 >>> 0) _abort();\n    $39 = $24 + 8 | 0;\n    if ((HEAP32[$39 >> 2] | 0) == ($14 | 0)) $$pre$phi61Z2D = $39; else _abort();\n   }\n   HEAP32[$22 + 12 >> 2] = $24;\n   HEAP32[$$pre$phi61Z2D >> 2] = $22;\n   $p$0 = $14;\n   $psize$0 = $15;\n   break;\n  }\n  $44 = HEAP32[$mem + ($$sum2 + 24) >> 2] | 0;\n  $46 = HEAP32[$mem + ($$sum2 + 12) >> 2] | 0;\n  do if (($46 | 0) == ($14 | 0)) {\n   $57 = $mem + ($$sum2 + 20) | 0;\n   $58 = HEAP32[$57 >> 2] | 0;\n   if (!$58) {\n    $60 = $mem + ($$sum2 + 16) | 0;\n    $61 = HEAP32[$60 >> 2] | 0;\n    if (!$61) {\n     $R$1 = 0;\n     break;\n    } else {\n     $R$0 = $61;\n     $RP$0 = $60;\n    }\n   } else {\n    $R$0 = $58;\n    $RP$0 = $57;\n   }\n   while (1) {\n    $63 = $R$0 + 20 | 0;\n    $64 = HEAP32[$63 >> 2] | 0;\n    if ($64) {\n     $R$0 = $64;\n     $RP$0 = $63;\n     continue;\n    }\n    $66 = $R$0 + 16 | 0;\n    $67 = HEAP32[$66 >> 2] | 0;\n    if (!$67) {\n     $R$0$lcssa = $R$0;\n     $RP$0$lcssa = $RP$0;\n     break;\n    } else {\n     $R$0 = $67;\n     $RP$0 = $66;\n    }\n   }\n   if ($RP$0$lcssa >>> 0 < $2 >>> 0) _abort(); else {\n    HEAP32[$RP$0$lcssa >> 2] = 0;\n    $R$1 = $R$0$lcssa;\n    break;\n   }\n  } else {\n   $49 = HEAP32[$mem + ($$sum2 + 8) >> 2] | 0;\n   if ($49 >>> 0 < $2 >>> 0) _abort();\n   $51 = $49 + 12 | 0;\n   if ((HEAP32[$51 >> 2] | 0) != ($14 | 0)) _abort();\n   $54 = $46 + 8 | 0;\n   if ((HEAP32[$54 >> 2] | 0) == ($14 | 0)) {\n    HEAP32[$51 >> 2] = $46;\n    HEAP32[$54 >> 2] = $49;\n    $R$1 = $46;\n    break;\n   } else _abort();\n  } while (0);\n  if (!$44) {\n   $p$0 = $14;\n   $psize$0 = $15;\n  } else {\n   $72 = HEAP32[$mem + ($$sum2 + 28) >> 2] | 0;\n   $73 = 3328 + ($72 << 2) | 0;\n   if (($14 | 0) == (HEAP32[$73 >> 2] | 0)) {\n    HEAP32[$73 >> 2] = $R$1;\n    if (!$R$1) {\n     HEAP32[757] = HEAP32[757] & ~(1 << $72);\n     $p$0 = $14;\n     $psize$0 = $15;\n     break;\n    }\n   } else {\n    if ($44 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort();\n    $82 = $44 + 16 | 0;\n    if ((HEAP32[$82 >> 2] | 0) == ($14 | 0)) HEAP32[$82 >> 2] = $R$1; else HEAP32[$44 + 20 >> 2] = $R$1;\n    if (!$R$1) {\n     $p$0 = $14;\n     $psize$0 = $15;\n     break;\n    }\n   }\n   $87 = HEAP32[760] | 0;\n   if ($R$1 >>> 0 < $87 >>> 0) _abort();\n   HEAP32[$R$1 + 24 >> 2] = $44;\n   $91 = HEAP32[$mem + ($$sum2 + 16) >> 2] | 0;\n   do if ($91) if ($91 >>> 0 < $87 >>> 0) _abort(); else {\n    HEAP32[$R$1 + 16 >> 2] = $91;\n    HEAP32[$91 + 24 >> 2] = $R$1;\n    break;\n   } while (0);\n   $97 = HEAP32[$mem + ($$sum2 + 20) >> 2] | 0;\n   if (!$97) {\n    $p$0 = $14;\n    $psize$0 = $15;\n   } else if ($97 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else {\n    HEAP32[$R$1 + 20 >> 2] = $97;\n    HEAP32[$97 + 24 >> 2] = $R$1;\n    $p$0 = $14;\n    $psize$0 = $15;\n    break;\n   }\n  }\n } else {\n  $p$0 = $1;\n  $psize$0 = $8;\n } while (0);\n if ($p$0 >>> 0 >= $9 >>> 0) _abort();\n $111 = $mem + ($8 + -4) | 0;\n $112 = HEAP32[$111 >> 2] | 0;\n if (!($112 & 1)) _abort();\n if (!($112 & 2)) {\n  if (($9 | 0) == (HEAP32[762] | 0)) {\n   $120 = (HEAP32[759] | 0) + $psize$0 | 0;\n   HEAP32[759] = $120;\n   HEAP32[762] = $p$0;\n   HEAP32[$p$0 + 4 >> 2] = $120 | 1;\n   if (($p$0 | 0) != (HEAP32[761] | 0)) return;\n   HEAP32[761] = 0;\n   HEAP32[758] = 0;\n   return;\n  }\n  if (($9 | 0) == (HEAP32[761] | 0)) {\n   $128 = (HEAP32[758] | 0) + $psize$0 | 0;\n   HEAP32[758] = $128;\n   HEAP32[761] = $p$0;\n   HEAP32[$p$0 + 4 >> 2] = $128 | 1;\n   HEAP32[$p$0 + $128 >> 2] = $128;\n   return;\n  }\n  $133 = ($112 & -8) + $psize$0 | 0;\n  $134 = $112 >>> 3;\n  do if ($112 >>> 0 < 256) {\n   $137 = HEAP32[$mem + $8 >> 2] | 0;\n   $139 = HEAP32[$mem + ($8 | 4) >> 2] | 0;\n   $141 = 3064 + ($134 << 1 << 2) | 0;\n   if (($137 | 0) != ($141 | 0)) {\n    if ($137 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort();\n    if ((HEAP32[$137 + 12 >> 2] | 0) != ($9 | 0)) _abort();\n   }\n   if (($139 | 0) == ($137 | 0)) {\n    HEAP32[756] = HEAP32[756] & ~(1 << $134);\n    break;\n   }\n   if (($139 | 0) == ($141 | 0)) $$pre$phi59Z2D = $139 + 8 | 0; else {\n    if ($139 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort();\n    $156 = $139 + 8 | 0;\n    if ((HEAP32[$156 >> 2] | 0) == ($9 | 0)) $$pre$phi59Z2D = $156; else _abort();\n   }\n   HEAP32[$137 + 12 >> 2] = $139;\n   HEAP32[$$pre$phi59Z2D >> 2] = $137;\n  } else {\n   $161 = HEAP32[$mem + ($8 + 16) >> 2] | 0;\n   $163 = HEAP32[$mem + ($8 | 4) >> 2] | 0;\n   do if (($163 | 0) == ($9 | 0)) {\n    $175 = $mem + ($8 + 12) | 0;\n    $176 = HEAP32[$175 >> 2] | 0;\n    if (!$176) {\n     $178 = $mem + ($8 + 8) | 0;\n     $179 = HEAP32[$178 >> 2] | 0;\n     if (!$179) {\n      $R7$1 = 0;\n      break;\n     } else {\n      $R7$0 = $179;\n      $RP9$0 = $178;\n     }\n    } else {\n     $R7$0 = $176;\n     $RP9$0 = $175;\n    }\n    while (1) {\n     $181 = $R7$0 + 20 | 0;\n     $182 = HEAP32[$181 >> 2] | 0;\n     if ($182) {\n      $R7$0 = $182;\n      $RP9$0 = $181;\n      continue;\n     }\n     $184 = $R7$0 + 16 | 0;\n     $185 = HEAP32[$184 >> 2] | 0;\n     if (!$185) {\n      $R7$0$lcssa = $R7$0;\n      $RP9$0$lcssa = $RP9$0;\n      break;\n     } else {\n      $R7$0 = $185;\n      $RP9$0 = $184;\n     }\n    }\n    if ($RP9$0$lcssa >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else {\n     HEAP32[$RP9$0$lcssa >> 2] = 0;\n     $R7$1 = $R7$0$lcssa;\n     break;\n    }\n   } else {\n    $166 = HEAP32[$mem + $8 >> 2] | 0;\n    if ($166 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort();\n    $169 = $166 + 12 | 0;\n    if ((HEAP32[$169 >> 2] | 0) != ($9 | 0)) _abort();\n    $172 = $163 + 8 | 0;\n    if ((HEAP32[$172 >> 2] | 0) == ($9 | 0)) {\n     HEAP32[$169 >> 2] = $163;\n     HEAP32[$172 >> 2] = $166;\n     $R7$1 = $163;\n     break;\n    } else _abort();\n   } while (0);\n   if ($161) {\n    $191 = HEAP32[$mem + ($8 + 20) >> 2] | 0;\n    $192 = 3328 + ($191 << 2) | 0;\n    if (($9 | 0) == (HEAP32[$192 >> 2] | 0)) {\n     HEAP32[$192 >> 2] = $R7$1;\n     if (!$R7$1) {\n      HEAP32[757] = HEAP32[757] & ~(1 << $191);\n      break;\n     }\n    } else {\n     if ($161 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort();\n     $201 = $161 + 16 | 0;\n     if ((HEAP32[$201 >> 2] | 0) == ($9 | 0)) HEAP32[$201 >> 2] = $R7$1; else HEAP32[$161 + 20 >> 2] = $R7$1;\n     if (!$R7$1) break;\n    }\n    $206 = HEAP32[760] | 0;\n    if ($R7$1 >>> 0 < $206 >>> 0) _abort();\n    HEAP32[$R7$1 + 24 >> 2] = $161;\n    $210 = HEAP32[$mem + ($8 + 8) >> 2] | 0;\n    do if ($210) if ($210 >>> 0 < $206 >>> 0) _abort(); else {\n     HEAP32[$R7$1 + 16 >> 2] = $210;\n     HEAP32[$210 + 24 >> 2] = $R7$1;\n     break;\n    } while (0);\n    $216 = HEAP32[$mem + ($8 + 12) >> 2] | 0;\n    if ($216) if ($216 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else {\n     HEAP32[$R7$1 + 20 >> 2] = $216;\n     HEAP32[$216 + 24 >> 2] = $R7$1;\n     break;\n    }\n   }\n  } while (0);\n  HEAP32[$p$0 + 4 >> 2] = $133 | 1;\n  HEAP32[$p$0 + $133 >> 2] = $133;\n  if (($p$0 | 0) == (HEAP32[761] | 0)) {\n   HEAP32[758] = $133;\n   return;\n  } else $psize$1 = $133;\n } else {\n  HEAP32[$111 >> 2] = $112 & -2;\n  HEAP32[$p$0 + 4 >> 2] = $psize$0 | 1;\n  HEAP32[$p$0 + $psize$0 >> 2] = $psize$0;\n  $psize$1 = $psize$0;\n }\n $231 = $psize$1 >>> 3;\n if ($psize$1 >>> 0 < 256) {\n  $233 = $231 << 1;\n  $234 = 3064 + ($233 << 2) | 0;\n  $235 = HEAP32[756] | 0;\n  $236 = 1 << $231;\n  if (!($235 & $236)) {\n   HEAP32[756] = $235 | $236;\n   $$pre$phiZ2D = 3064 + ($233 + 2 << 2) | 0;\n   $F16$0 = $234;\n  } else {\n   $240 = 3064 + ($233 + 2 << 2) | 0;\n   $241 = HEAP32[$240 >> 2] | 0;\n   if ($241 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else {\n    $$pre$phiZ2D = $240;\n    $F16$0 = $241;\n   }\n  }\n  HEAP32[$$pre$phiZ2D >> 2] = $p$0;\n  HEAP32[$F16$0 + 12 >> 2] = $p$0;\n  HEAP32[$p$0 + 8 >> 2] = $F16$0;\n  HEAP32[$p$0 + 12 >> 2] = $234;\n  return;\n }\n $247 = $psize$1 >>> 8;\n if (!$247) $I18$0 = 0; else if ($psize$1 >>> 0 > 16777215) $I18$0 = 31; else {\n  $252 = ($247 + 1048320 | 0) >>> 16 & 8;\n  $253 = $247 << $252;\n  $256 = ($253 + 520192 | 0) >>> 16 & 4;\n  $258 = $253 << $256;\n  $261 = ($258 + 245760 | 0) >>> 16 & 2;\n  $266 = 14 - ($256 | $252 | $261) + ($258 << $261 >>> 15) | 0;\n  $I18$0 = $psize$1 >>> ($266 + 7 | 0) & 1 | $266 << 1;\n }\n $272 = 3328 + ($I18$0 << 2) | 0;\n HEAP32[$p$0 + 28 >> 2] = $I18$0;\n HEAP32[$p$0 + 20 >> 2] = 0;\n HEAP32[$p$0 + 16 >> 2] = 0;\n $276 = HEAP32[757] | 0;\n $277 = 1 << $I18$0;\n L199 : do if (!($276 & $277)) {\n  HEAP32[757] = $276 | $277;\n  HEAP32[$272 >> 2] = $p$0;\n  HEAP32[$p$0 + 24 >> 2] = $272;\n  HEAP32[$p$0 + 12 >> 2] = $p$0;\n  HEAP32[$p$0 + 8 >> 2] = $p$0;\n } else {\n  $284 = HEAP32[$272 >> 2] | 0;\n  L202 : do if ((HEAP32[$284 + 4 >> 2] & -8 | 0) == ($psize$1 | 0)) $T$0$lcssa = $284; else {\n   $K19$052 = $psize$1 << (($I18$0 | 0) == 31 ? 0 : 25 - ($I18$0 >>> 1) | 0);\n   $T$051 = $284;\n   while (1) {\n    $301 = $T$051 + 16 + ($K19$052 >>> 31 << 2) | 0;\n    $296 = HEAP32[$301 >> 2] | 0;\n    if (!$296) {\n     $$lcssa = $301;\n     $T$051$lcssa = $T$051;\n     break;\n    }\n    if ((HEAP32[$296 + 4 >> 2] & -8 | 0) == ($psize$1 | 0)) {\n     $T$0$lcssa = $296;\n     break L202;\n    } else {\n     $K19$052 = $K19$052 << 1;\n     $T$051 = $296;\n    }\n   }\n   if ($$lcssa >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else {\n    HEAP32[$$lcssa >> 2] = $p$0;\n    HEAP32[$p$0 + 24 >> 2] = $T$051$lcssa;\n    HEAP32[$p$0 + 12 >> 2] = $p$0;\n    HEAP32[$p$0 + 8 >> 2] = $p$0;\n    break L199;\n   }\n  } while (0);\n  $308 = $T$0$lcssa + 8 | 0;\n  $309 = HEAP32[$308 >> 2] | 0;\n  $310 = HEAP32[760] | 0;\n  if ($309 >>> 0 >= $310 >>> 0 & $T$0$lcssa >>> 0 >= $310 >>> 0) {\n   HEAP32[$309 + 12 >> 2] = $p$0;\n   HEAP32[$308 >> 2] = $p$0;\n   HEAP32[$p$0 + 8 >> 2] = $309;\n   HEAP32[$p$0 + 12 >> 2] = $T$0$lcssa;\n   HEAP32[$p$0 + 24 >> 2] = 0;\n   break;\n  } else _abort();\n } while (0);\n $318 = (HEAP32[764] | 0) + -1 | 0;\n HEAP32[764] = $318;\n if (!$318) $sp$0$in$i = 3480; else return;\n while (1) {\n  $sp$0$i = HEAP32[$sp$0$in$i >> 2] | 0;\n  if (!$sp$0$i) break; else $sp$0$in$i = $sp$0$i + 8 | 0;\n }\n HEAP32[764] = -1;\n return;\n}\n\nfunction ___intscan($f, $base, $pok, $0, $1) {\n $f = $f | 0;\n $base = $base | 0;\n $pok = $pok | 0;\n $0 = $0 | 0;\n $1 = $1 | 0;\n var $$1 = 0, $$122 = 0, $$123 = 0, $$base21 = 0, $$lcssa = 0, $$lcssa130 = 0, $$lcssa131 = 0, $$lcssa132 = 0, $$lcssa133 = 0, $$lcssa134 = 0, $$lcssa135 = 0, $100 = 0, $101 = 0, $108 = 0, $120 = 0, $121 = 0, $128 = 0, $13 = 0, $130 = 0, $131 = 0, $134 = 0, $135 = 0, $136 = 0, $144 = 0, $149 = 0, $150 = 0, $152 = 0, $155 = 0, $157 = 0, $161 = 0, $162 = 0, $163 = 0, $164 = 0, $166 = 0, $167 = 0, $168 = 0, $17 = 0, $18 = 0, $185 = 0, $186 = 0, $187 = 0, $195 = 0, $201 = 0, $203 = 0, $204 = 0, $206 = 0, $208 = 0, $212 = 0, $213 = 0, $214 = 0, $215 = 0, $222 = 0, $223 = 0, $224 = 0, $239 = 0, $25 = 0, $250 = 0, $260 = 0, $262 = 0, $271 = 0, $272 = 0, $279 = 0, $281 = 0, $284 = 0, $286 = 0, $287 = 0, $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0, $292 = 0, $293 = 0, $294 = 0, $295 = 0, $3 = 0, $37 = 0, $39 = 0, $4 = 0, $46 = 0, $5 = 0, $51 = 0, $6 = 0, $65 = 0, $67 = 0, $70 = 0, $71 = 0, $72 = 0, $83 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $90 = 0, $91 = 0, $93 = 0, $99 = 0, $c$0 = 0, $c$1 = 0, $c$124 = 0, $c$2$be = 0, $c$2$be$lcssa = 0, $c$2$lcssa = 0, $c$3$be = 0, $c$3$lcssa = 0, $c$371 = 0, $c$4$be = 0, $c$4$be$lcssa = 0, $c$4$lcssa = 0, $c$5$be = 0, $c$6$be = 0, $c$6$be$lcssa = 0, $c$6$lcssa = 0, $c$7$be = 0, $c$753 = 0, $c$8 = 0, $c$9$be = 0, $neg$0 = 0, $neg$1 = 0, $x$082 = 0, $x$146 = 0, $x$266 = 0, label = 0;\n L1 : do if ($base >>> 0 > 36) {\n  $5 = ___errno_location() | 0;\n  HEAP32[$5 >> 2] = 22;\n  $286 = 0;\n  $287 = 0;\n } else {\n  $3 = $f + 4 | 0;\n  $4 = $f + 100 | 0;\n  do {\n   $6 = HEAP32[$3 >> 2] | 0;\n   if ($6 >>> 0 < (HEAP32[$4 >> 2] | 0) >>> 0) {\n    HEAP32[$3 >> 2] = $6 + 1;\n    $13 = HEAPU8[$6 >> 0] | 0;\n   } else $13 = ___shgetc($f) | 0;\n  } while ((_isspace($13) | 0) != 0);\n  $$lcssa135 = $13;\n  L11 : do switch ($$lcssa135 | 0) {\n  case 43:\n  case 45:\n   {\n    $17 = (($$lcssa135 | 0) == 45) << 31 >> 31;\n    $18 = HEAP32[$3 >> 2] | 0;\n    if ($18 >>> 0 < (HEAP32[$4 >> 2] | 0) >>> 0) {\n     HEAP32[$3 >> 2] = $18 + 1;\n     $c$0 = HEAPU8[$18 >> 0] | 0;\n     $neg$0 = $17;\n     break L11;\n    } else {\n     $c$0 = ___shgetc($f) | 0;\n     $neg$0 = $17;\n     break L11;\n    }\n    break;\n   }\n  default:\n   {\n    $c$0 = $$lcssa135;\n    $neg$0 = 0;\n   }\n  } while (0);\n  $25 = ($base | 0) == 0;\n  do if (($base & -17 | 0) == 0 & ($c$0 | 0) == 48) {\n   $29 = HEAP32[$3 >> 2] | 0;\n   if ($29 >>> 0 < (HEAP32[$4 >> 2] | 0) >>> 0) {\n    HEAP32[$3 >> 2] = $29 + 1;\n    $37 = HEAPU8[$29 >> 0] | 0;\n   } else $37 = ___shgetc($f) | 0;\n   if (($37 | 32 | 0) != 120) if ($25) {\n    $$123 = 8;\n    $c$124 = $37;\n    label = 46;\n    break;\n   } else {\n    $$1 = $base;\n    $c$1 = $37;\n    label = 32;\n    break;\n   }\n   $39 = HEAP32[$3 >> 2] | 0;\n   if ($39 >>> 0 < (HEAP32[$4 >> 2] | 0) >>> 0) {\n    HEAP32[$3 >> 2] = $39 + 1;\n    $46 = HEAPU8[$39 >> 0] | 0;\n   } else $46 = ___shgetc($f) | 0;\n   if ((HEAPU8[16467 + ($46 + 1) >> 0] | 0) > 15) {\n    $51 = (HEAP32[$4 >> 2] | 0) == 0;\n    if (!$51) HEAP32[$3 >> 2] = (HEAP32[$3 >> 2] | 0) + -1;\n    if (!$pok) {\n     ___shlim($f, 0);\n     $286 = 0;\n     $287 = 0;\n     break L1;\n    }\n    if ($51) {\n     $286 = 0;\n     $287 = 0;\n     break L1;\n    }\n    HEAP32[$3 >> 2] = (HEAP32[$3 >> 2] | 0) + -1;\n    $286 = 0;\n    $287 = 0;\n    break L1;\n   } else {\n    $$123 = 16;\n    $c$124 = $46;\n    label = 46;\n   }\n  } else {\n   $$base21 = $25 ? 10 : $base;\n   if ((HEAPU8[16467 + ($c$0 + 1) >> 0] | 0) >>> 0 < $$base21 >>> 0) {\n    $$1 = $$base21;\n    $c$1 = $c$0;\n    label = 32;\n   } else {\n    if (HEAP32[$4 >> 2] | 0) HEAP32[$3 >> 2] = (HEAP32[$3 >> 2] | 0) + -1;\n    ___shlim($f, 0);\n    $65 = ___errno_location() | 0;\n    HEAP32[$65 >> 2] = 22;\n    $286 = 0;\n    $287 = 0;\n    break L1;\n   }\n  } while (0);\n  if ((label | 0) == 32) if (($$1 | 0) == 10) {\n   $67 = $c$1 + -48 | 0;\n   if ($67 >>> 0 < 10) {\n    $71 = $67;\n    $x$082 = 0;\n    while (1) {\n     $70 = ($x$082 * 10 | 0) + $71 | 0;\n     $72 = HEAP32[$3 >> 2] | 0;\n     if ($72 >>> 0 < (HEAP32[$4 >> 2] | 0) >>> 0) {\n      HEAP32[$3 >> 2] = $72 + 1;\n      $c$2$be = HEAPU8[$72 >> 0] | 0;\n     } else $c$2$be = ___shgetc($f) | 0;\n     $71 = $c$2$be + -48 | 0;\n     if (!($71 >>> 0 < 10 & $70 >>> 0 < 429496729)) {\n      $$lcssa134 = $70;\n      $c$2$be$lcssa = $c$2$be;\n      break;\n     } else $x$082 = $70;\n    }\n    $288 = $$lcssa134;\n    $289 = 0;\n    $c$2$lcssa = $c$2$be$lcssa;\n   } else {\n    $288 = 0;\n    $289 = 0;\n    $c$2$lcssa = $c$1;\n   }\n   $83 = $c$2$lcssa + -48 | 0;\n   if ($83 >>> 0 < 10) {\n    $85 = $288;\n    $86 = $289;\n    $90 = $83;\n    $c$371 = $c$2$lcssa;\n    while (1) {\n     $87 = ___muldi3($85 | 0, $86 | 0, 10, 0) | 0;\n     $88 = tempRet0;\n     $91 = (($90 | 0) < 0) << 31 >> 31;\n     $93 = ~$91;\n     if ($88 >>> 0 > $93 >>> 0 | ($88 | 0) == ($93 | 0) & $87 >>> 0 > ~$90 >>> 0) {\n      $$lcssa = $90;\n      $290 = $85;\n      $291 = $86;\n      $c$3$lcssa = $c$371;\n      break;\n     }\n     $99 = _i64Add($87 | 0, $88 | 0, $90 | 0, $91 | 0) | 0;\n     $100 = tempRet0;\n     $101 = HEAP32[$3 >> 2] | 0;\n     if ($101 >>> 0 < (HEAP32[$4 >> 2] | 0) >>> 0) {\n      HEAP32[$3 >> 2] = $101 + 1;\n      $c$3$be = HEAPU8[$101 >> 0] | 0;\n     } else $c$3$be = ___shgetc($f) | 0;\n     $108 = $c$3$be + -48 | 0;\n     if ($108 >>> 0 < 10 & ($100 >>> 0 < 429496729 | ($100 | 0) == 429496729 & $99 >>> 0 < 2576980378)) {\n      $85 = $99;\n      $86 = $100;\n      $90 = $108;\n      $c$371 = $c$3$be;\n     } else {\n      $$lcssa = $108;\n      $290 = $99;\n      $291 = $100;\n      $c$3$lcssa = $c$3$be;\n      break;\n     }\n    }\n    if ($$lcssa >>> 0 > 9) {\n     $260 = $291;\n     $262 = $290;\n     $neg$1 = $neg$0;\n    } else {\n     $$122 = 10;\n     $292 = $290;\n     $293 = $291;\n     $c$8 = $c$3$lcssa;\n     label = 72;\n    }\n   } else {\n    $260 = $289;\n    $262 = $288;\n    $neg$1 = $neg$0;\n   }\n  } else {\n   $$123 = $$1;\n   $c$124 = $c$1;\n   label = 46;\n  }\n  L63 : do if ((label | 0) == 46) {\n   if (!($$123 + -1 & $$123)) {\n    $128 = HEAP8[16724 + (($$123 * 23 | 0) >>> 5 & 7) >> 0] | 0;\n    $130 = HEAP8[16467 + ($c$124 + 1) >> 0] | 0;\n    $131 = $130 & 255;\n    if ($131 >>> 0 < $$123 >>> 0) {\n     $135 = $131;\n     $x$146 = 0;\n     while (1) {\n      $134 = $135 | $x$146 << $128;\n      $136 = HEAP32[$3 >> 2] | 0;\n      if ($136 >>> 0 < (HEAP32[$4 >> 2] | 0) >>> 0) {\n       HEAP32[$3 >> 2] = $136 + 1;\n       $c$4$be = HEAPU8[$136 >> 0] | 0;\n      } else $c$4$be = ___shgetc($f) | 0;\n      $144 = HEAP8[16467 + ($c$4$be + 1) >> 0] | 0;\n      $135 = $144 & 255;\n      if (!($134 >>> 0 < 134217728 & $135 >>> 0 < $$123 >>> 0)) {\n       $$lcssa130 = $134;\n       $$lcssa131 = $144;\n       $c$4$be$lcssa = $c$4$be;\n       break;\n      } else $x$146 = $134;\n     }\n     $152 = $$lcssa131;\n     $155 = 0;\n     $157 = $$lcssa130;\n     $c$4$lcssa = $c$4$be$lcssa;\n    } else {\n     $152 = $130;\n     $155 = 0;\n     $157 = 0;\n     $c$4$lcssa = $c$124;\n    }\n    $149 = _bitshift64Lshr(-1, -1, $128 | 0) | 0;\n    $150 = tempRet0;\n    if (($152 & 255) >>> 0 >= $$123 >>> 0 | ($155 >>> 0 > $150 >>> 0 | ($155 | 0) == ($150 | 0) & $157 >>> 0 > $149 >>> 0)) {\n     $$122 = $$123;\n     $292 = $157;\n     $293 = $155;\n     $c$8 = $c$4$lcssa;\n     label = 72;\n     break;\n    } else {\n     $161 = $157;\n     $162 = $155;\n     $166 = $152;\n    }\n    while (1) {\n     $163 = _bitshift64Shl($161 | 0, $162 | 0, $128 | 0) | 0;\n     $164 = tempRet0;\n     $167 = $166 & 255 | $163;\n     $168 = HEAP32[$3 >> 2] | 0;\n     if ($168 >>> 0 < (HEAP32[$4 >> 2] | 0) >>> 0) {\n      HEAP32[$3 >> 2] = $168 + 1;\n      $c$5$be = HEAPU8[$168 >> 0] | 0;\n     } else $c$5$be = ___shgetc($f) | 0;\n     $166 = HEAP8[16467 + ($c$5$be + 1) >> 0] | 0;\n     if (($166 & 255) >>> 0 >= $$123 >>> 0 | ($164 >>> 0 > $150 >>> 0 | ($164 | 0) == ($150 | 0) & $167 >>> 0 > $149 >>> 0)) {\n      $$122 = $$123;\n      $292 = $167;\n      $293 = $164;\n      $c$8 = $c$5$be;\n      label = 72;\n      break L63;\n     } else {\n      $161 = $167;\n      $162 = $164;\n     }\n    }\n   }\n   $120 = HEAP8[16467 + ($c$124 + 1) >> 0] | 0;\n   $121 = $120 & 255;\n   if ($121 >>> 0 < $$123 >>> 0) {\n    $186 = $121;\n    $x$266 = 0;\n    while (1) {\n     $185 = $186 + (Math_imul($x$266, $$123) | 0) | 0;\n     $187 = HEAP32[$3 >> 2] | 0;\n     if ($187 >>> 0 < (HEAP32[$4 >> 2] | 0) >>> 0) {\n      HEAP32[$3 >> 2] = $187 + 1;\n      $c$6$be = HEAPU8[$187 >> 0] | 0;\n     } else $c$6$be = ___shgetc($f) | 0;\n     $195 = HEAP8[16467 + ($c$6$be + 1) >> 0] | 0;\n     $186 = $195 & 255;\n     if (!($185 >>> 0 < 119304647 & $186 >>> 0 < $$123 >>> 0)) {\n      $$lcssa132 = $185;\n      $$lcssa133 = $195;\n      $c$6$be$lcssa = $c$6$be;\n      break;\n     } else $x$266 = $185;\n    }\n    $201 = $$lcssa133;\n    $294 = $$lcssa132;\n    $295 = 0;\n    $c$6$lcssa = $c$6$be$lcssa;\n   } else {\n    $201 = $120;\n    $294 = 0;\n    $295 = 0;\n    $c$6$lcssa = $c$124;\n   }\n   if (($201 & 255) >>> 0 < $$123 >>> 0) {\n    $203 = ___udivdi3(-1, -1, $$123 | 0, 0) | 0;\n    $204 = tempRet0;\n    $206 = $295;\n    $208 = $294;\n    $215 = $201;\n    $c$753 = $c$6$lcssa;\n    while (1) {\n     if ($206 >>> 0 > $204 >>> 0 | ($206 | 0) == ($204 | 0) & $208 >>> 0 > $203 >>> 0) {\n      $$122 = $$123;\n      $292 = $208;\n      $293 = $206;\n      $c$8 = $c$753;\n      label = 72;\n      break L63;\n     }\n     $212 = ___muldi3($208 | 0, $206 | 0, $$123 | 0, 0) | 0;\n     $213 = tempRet0;\n     $214 = $215 & 255;\n     if ($213 >>> 0 > 4294967295 | ($213 | 0) == -1 & $212 >>> 0 > ~$214 >>> 0) {\n      $$122 = $$123;\n      $292 = $208;\n      $293 = $206;\n      $c$8 = $c$753;\n      label = 72;\n      break L63;\n     }\n     $222 = _i64Add($214 | 0, 0, $212 | 0, $213 | 0) | 0;\n     $223 = tempRet0;\n     $224 = HEAP32[$3 >> 2] | 0;\n     if ($224 >>> 0 < (HEAP32[$4 >> 2] | 0) >>> 0) {\n      HEAP32[$3 >> 2] = $224 + 1;\n      $c$7$be = HEAPU8[$224 >> 0] | 0;\n     } else $c$7$be = ___shgetc($f) | 0;\n     $215 = HEAP8[16467 + ($c$7$be + 1) >> 0] | 0;\n     if (($215 & 255) >>> 0 >= $$123 >>> 0) {\n      $$122 = $$123;\n      $292 = $222;\n      $293 = $223;\n      $c$8 = $c$7$be;\n      label = 72;\n      break;\n     } else {\n      $206 = $223;\n      $208 = $222;\n      $c$753 = $c$7$be;\n     }\n    }\n   } else {\n    $$122 = $$123;\n    $292 = $294;\n    $293 = $295;\n    $c$8 = $c$6$lcssa;\n    label = 72;\n   }\n  } while (0);\n  if ((label | 0) == 72) if ((HEAPU8[16467 + ($c$8 + 1) >> 0] | 0) >>> 0 < $$122 >>> 0) {\n   do {\n    $239 = HEAP32[$3 >> 2] | 0;\n    if ($239 >>> 0 < (HEAP32[$4 >> 2] | 0) >>> 0) {\n     HEAP32[$3 >> 2] = $239 + 1;\n     $c$9$be = HEAPU8[$239 >> 0] | 0;\n    } else $c$9$be = ___shgetc($f) | 0;\n   } while ((HEAPU8[16467 + ($c$9$be + 1) >> 0] | 0) >>> 0 < $$122 >>> 0);\n   $250 = ___errno_location() | 0;\n   HEAP32[$250 >> 2] = 34;\n   $260 = $1;\n   $262 = $0;\n   $neg$1 = ($0 & 1 | 0) == 0 & 0 == 0 ? $neg$0 : 0;\n  } else {\n   $260 = $293;\n   $262 = $292;\n   $neg$1 = $neg$0;\n  }\n  if (HEAP32[$4 >> 2] | 0) HEAP32[$3 >> 2] = (HEAP32[$3 >> 2] | 0) + -1;\n  if (!($260 >>> 0 < $1 >>> 0 | ($260 | 0) == ($1 | 0) & $262 >>> 0 < $0 >>> 0)) {\n   if (!(($0 & 1 | 0) != 0 | 0 != 0 | ($neg$1 | 0) != 0)) {\n    $271 = ___errno_location() | 0;\n    HEAP32[$271 >> 2] = 34;\n    $272 = _i64Add($0 | 0, $1 | 0, -1, -1) | 0;\n    $286 = tempRet0;\n    $287 = $272;\n    break;\n   }\n   if ($260 >>> 0 > $1 >>> 0 | ($260 | 0) == ($1 | 0) & $262 >>> 0 > $0 >>> 0) {\n    $279 = ___errno_location() | 0;\n    HEAP32[$279 >> 2] = 34;\n    $286 = $1;\n    $287 = $0;\n    break;\n   }\n  }\n  $281 = (($neg$1 | 0) < 0) << 31 >> 31;\n  $284 = _i64Subtract($262 ^ $neg$1 | 0, $260 ^ $281 | 0, $neg$1 | 0, $281 | 0) | 0;\n  $286 = tempRet0;\n  $287 = $284;\n } while (0);\n tempRet0 = $286;\n return $287 | 0;\n}\n\nfunction _dispose_chunk($p, $psize) {\n $p = $p | 0;\n $psize = $psize | 0;\n var $$0 = 0, $$02 = 0, $$1 = 0, $$lcssa = 0, $$pre$phi50Z2D = 0, $$pre$phi52Z2D = 0, $$pre$phiZ2D = 0, $$sum18 = 0, $$sum21 = 0, $0 = 0, $10 = 0, $100 = 0, $106 = 0, $108 = 0, $109 = 0, $11 = 0, $115 = 0, $123 = 0, $128 = 0, $129 = 0, $132 = 0, $134 = 0, $136 = 0, $149 = 0, $15 = 0, $154 = 0, $156 = 0, $159 = 0, $161 = 0, $164 = 0, $167 = 0, $168 = 0, $170 = 0, $171 = 0, $173 = 0, $174 = 0, $176 = 0, $177 = 0, $18 = 0, $182 = 0, $183 = 0, $192 = 0, $197 = 0, $2 = 0, $20 = 0, $201 = 0, $207 = 0, $22 = 0, $222 = 0, $224 = 0, $225 = 0, $226 = 0, $227 = 0, $231 = 0, $232 = 0, $238 = 0, $243 = 0, $244 = 0, $247 = 0, $249 = 0, $252 = 0, $257 = 0, $263 = 0, $267 = 0, $268 = 0, $275 = 0, $287 = 0, $292 = 0, $299 = 0, $300 = 0, $301 = 0, $35 = 0, $40 = 0, $42 = 0, $45 = 0, $47 = 0, $5 = 0, $50 = 0, $53 = 0, $54 = 0, $56 = 0, $57 = 0, $59 = 0, $60 = 0, $62 = 0, $63 = 0, $68 = 0, $69 = 0, $78 = 0, $83 = 0, $87 = 0, $9 = 0, $93 = 0, $99 = 0, $F16$0 = 0, $I19$0 = 0, $K20$043 = 0, $R$0 = 0, $R$0$lcssa = 0, $R$1 = 0, $R7$0 = 0, $R7$0$lcssa = 0, $R7$1 = 0, $RP$0 = 0, $RP$0$lcssa = 0, $RP9$0 = 0, $RP9$0$lcssa = 0, $T$0$lcssa = 0, $T$042 = 0, $T$042$lcssa = 0;\n $0 = $p + $psize | 0;\n $2 = HEAP32[$p + 4 >> 2] | 0;\n do if (!($2 & 1)) {\n  $5 = HEAP32[$p >> 2] | 0;\n  if (!($2 & 3)) return;\n  $9 = $p + (0 - $5) | 0;\n  $10 = $5 + $psize | 0;\n  $11 = HEAP32[760] | 0;\n  if ($9 >>> 0 < $11 >>> 0) _abort();\n  if (($9 | 0) == (HEAP32[761] | 0)) {\n   $99 = $p + ($psize + 4) | 0;\n   $100 = HEAP32[$99 >> 2] | 0;\n   if (($100 & 3 | 0) != 3) {\n    $$0 = $9;\n    $$02 = $10;\n    break;\n   }\n   HEAP32[758] = $10;\n   HEAP32[$99 >> 2] = $100 & -2;\n   HEAP32[$p + (4 - $5) >> 2] = $10 | 1;\n   HEAP32[$0 >> 2] = $10;\n   return;\n  }\n  $15 = $5 >>> 3;\n  if ($5 >>> 0 < 256) {\n   $18 = HEAP32[$p + (8 - $5) >> 2] | 0;\n   $20 = HEAP32[$p + (12 - $5) >> 2] | 0;\n   $22 = 3064 + ($15 << 1 << 2) | 0;\n   if (($18 | 0) != ($22 | 0)) {\n    if ($18 >>> 0 < $11 >>> 0) _abort();\n    if ((HEAP32[$18 + 12 >> 2] | 0) != ($9 | 0)) _abort();\n   }\n   if (($20 | 0) == ($18 | 0)) {\n    HEAP32[756] = HEAP32[756] & ~(1 << $15);\n    $$0 = $9;\n    $$02 = $10;\n    break;\n   }\n   if (($20 | 0) == ($22 | 0)) $$pre$phi52Z2D = $20 + 8 | 0; else {\n    if ($20 >>> 0 < $11 >>> 0) _abort();\n    $35 = $20 + 8 | 0;\n    if ((HEAP32[$35 >> 2] | 0) == ($9 | 0)) $$pre$phi52Z2D = $35; else _abort();\n   }\n   HEAP32[$18 + 12 >> 2] = $20;\n   HEAP32[$$pre$phi52Z2D >> 2] = $18;\n   $$0 = $9;\n   $$02 = $10;\n   break;\n  }\n  $40 = HEAP32[$p + (24 - $5) >> 2] | 0;\n  $42 = HEAP32[$p + (12 - $5) >> 2] | 0;\n  do if (($42 | 0) == ($9 | 0)) {\n   $$sum18 = 16 - $5 | 0;\n   $53 = $p + ($$sum18 + 4) | 0;\n   $54 = HEAP32[$53 >> 2] | 0;\n   if (!$54) {\n    $56 = $p + $$sum18 | 0;\n    $57 = HEAP32[$56 >> 2] | 0;\n    if (!$57) {\n     $R$1 = 0;\n     break;\n    } else {\n     $R$0 = $57;\n     $RP$0 = $56;\n    }\n   } else {\n    $R$0 = $54;\n    $RP$0 = $53;\n   }\n   while (1) {\n    $59 = $R$0 + 20 | 0;\n    $60 = HEAP32[$59 >> 2] | 0;\n    if ($60) {\n     $R$0 = $60;\n     $RP$0 = $59;\n     continue;\n    }\n    $62 = $R$0 + 16 | 0;\n    $63 = HEAP32[$62 >> 2] | 0;\n    if (!$63) {\n     $R$0$lcssa = $R$0;\n     $RP$0$lcssa = $RP$0;\n     break;\n    } else {\n     $R$0 = $63;\n     $RP$0 = $62;\n    }\n   }\n   if ($RP$0$lcssa >>> 0 < $11 >>> 0) _abort(); else {\n    HEAP32[$RP$0$lcssa >> 2] = 0;\n    $R$1 = $R$0$lcssa;\n    break;\n   }\n  } else {\n   $45 = HEAP32[$p + (8 - $5) >> 2] | 0;\n   if ($45 >>> 0 < $11 >>> 0) _abort();\n   $47 = $45 + 12 | 0;\n   if ((HEAP32[$47 >> 2] | 0) != ($9 | 0)) _abort();\n   $50 = $42 + 8 | 0;\n   if ((HEAP32[$50 >> 2] | 0) == ($9 | 0)) {\n    HEAP32[$47 >> 2] = $42;\n    HEAP32[$50 >> 2] = $45;\n    $R$1 = $42;\n    break;\n   } else _abort();\n  } while (0);\n  if (!$40) {\n   $$0 = $9;\n   $$02 = $10;\n  } else {\n   $68 = HEAP32[$p + (28 - $5) >> 2] | 0;\n   $69 = 3328 + ($68 << 2) | 0;\n   if (($9 | 0) == (HEAP32[$69 >> 2] | 0)) {\n    HEAP32[$69 >> 2] = $R$1;\n    if (!$R$1) {\n     HEAP32[757] = HEAP32[757] & ~(1 << $68);\n     $$0 = $9;\n     $$02 = $10;\n     break;\n    }\n   } else {\n    if ($40 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort();\n    $78 = $40 + 16 | 0;\n    if ((HEAP32[$78 >> 2] | 0) == ($9 | 0)) HEAP32[$78 >> 2] = $R$1; else HEAP32[$40 + 20 >> 2] = $R$1;\n    if (!$R$1) {\n     $$0 = $9;\n     $$02 = $10;\n     break;\n    }\n   }\n   $83 = HEAP32[760] | 0;\n   if ($R$1 >>> 0 < $83 >>> 0) _abort();\n   HEAP32[$R$1 + 24 >> 2] = $40;\n   $$sum21 = 16 - $5 | 0;\n   $87 = HEAP32[$p + $$sum21 >> 2] | 0;\n   do if ($87) if ($87 >>> 0 < $83 >>> 0) _abort(); else {\n    HEAP32[$R$1 + 16 >> 2] = $87;\n    HEAP32[$87 + 24 >> 2] = $R$1;\n    break;\n   } while (0);\n   $93 = HEAP32[$p + ($$sum21 + 4) >> 2] | 0;\n   if (!$93) {\n    $$0 = $9;\n    $$02 = $10;\n   } else if ($93 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else {\n    HEAP32[$R$1 + 20 >> 2] = $93;\n    HEAP32[$93 + 24 >> 2] = $R$1;\n    $$0 = $9;\n    $$02 = $10;\n    break;\n   }\n  }\n } else {\n  $$0 = $p;\n  $$02 = $psize;\n } while (0);\n $106 = HEAP32[760] | 0;\n if ($0 >>> 0 < $106 >>> 0) _abort();\n $108 = $p + ($psize + 4) | 0;\n $109 = HEAP32[$108 >> 2] | 0;\n if (!($109 & 2)) {\n  if (($0 | 0) == (HEAP32[762] | 0)) {\n   $115 = (HEAP32[759] | 0) + $$02 | 0;\n   HEAP32[759] = $115;\n   HEAP32[762] = $$0;\n   HEAP32[$$0 + 4 >> 2] = $115 | 1;\n   if (($$0 | 0) != (HEAP32[761] | 0)) return;\n   HEAP32[761] = 0;\n   HEAP32[758] = 0;\n   return;\n  }\n  if (($0 | 0) == (HEAP32[761] | 0)) {\n   $123 = (HEAP32[758] | 0) + $$02 | 0;\n   HEAP32[758] = $123;\n   HEAP32[761] = $$0;\n   HEAP32[$$0 + 4 >> 2] = $123 | 1;\n   HEAP32[$$0 + $123 >> 2] = $123;\n   return;\n  }\n  $128 = ($109 & -8) + $$02 | 0;\n  $129 = $109 >>> 3;\n  do if ($109 >>> 0 < 256) {\n   $132 = HEAP32[$p + ($psize + 8) >> 2] | 0;\n   $134 = HEAP32[$p + ($psize + 12) >> 2] | 0;\n   $136 = 3064 + ($129 << 1 << 2) | 0;\n   if (($132 | 0) != ($136 | 0)) {\n    if ($132 >>> 0 < $106 >>> 0) _abort();\n    if ((HEAP32[$132 + 12 >> 2] | 0) != ($0 | 0)) _abort();\n   }\n   if (($134 | 0) == ($132 | 0)) {\n    HEAP32[756] = HEAP32[756] & ~(1 << $129);\n    break;\n   }\n   if (($134 | 0) == ($136 | 0)) $$pre$phi50Z2D = $134 + 8 | 0; else {\n    if ($134 >>> 0 < $106 >>> 0) _abort();\n    $149 = $134 + 8 | 0;\n    if ((HEAP32[$149 >> 2] | 0) == ($0 | 0)) $$pre$phi50Z2D = $149; else _abort();\n   }\n   HEAP32[$132 + 12 >> 2] = $134;\n   HEAP32[$$pre$phi50Z2D >> 2] = $132;\n  } else {\n   $154 = HEAP32[$p + ($psize + 24) >> 2] | 0;\n   $156 = HEAP32[$p + ($psize + 12) >> 2] | 0;\n   do if (($156 | 0) == ($0 | 0)) {\n    $167 = $p + ($psize + 20) | 0;\n    $168 = HEAP32[$167 >> 2] | 0;\n    if (!$168) {\n     $170 = $p + ($psize + 16) | 0;\n     $171 = HEAP32[$170 >> 2] | 0;\n     if (!$171) {\n      $R7$1 = 0;\n      break;\n     } else {\n      $R7$0 = $171;\n      $RP9$0 = $170;\n     }\n    } else {\n     $R7$0 = $168;\n     $RP9$0 = $167;\n    }\n    while (1) {\n     $173 = $R7$0 + 20 | 0;\n     $174 = HEAP32[$173 >> 2] | 0;\n     if ($174) {\n      $R7$0 = $174;\n      $RP9$0 = $173;\n      continue;\n     }\n     $176 = $R7$0 + 16 | 0;\n     $177 = HEAP32[$176 >> 2] | 0;\n     if (!$177) {\n      $R7$0$lcssa = $R7$0;\n      $RP9$0$lcssa = $RP9$0;\n      break;\n     } else {\n      $R7$0 = $177;\n      $RP9$0 = $176;\n     }\n    }\n    if ($RP9$0$lcssa >>> 0 < $106 >>> 0) _abort(); else {\n     HEAP32[$RP9$0$lcssa >> 2] = 0;\n     $R7$1 = $R7$0$lcssa;\n     break;\n    }\n   } else {\n    $159 = HEAP32[$p + ($psize + 8) >> 2] | 0;\n    if ($159 >>> 0 < $106 >>> 0) _abort();\n    $161 = $159 + 12 | 0;\n    if ((HEAP32[$161 >> 2] | 0) != ($0 | 0)) _abort();\n    $164 = $156 + 8 | 0;\n    if ((HEAP32[$164 >> 2] | 0) == ($0 | 0)) {\n     HEAP32[$161 >> 2] = $156;\n     HEAP32[$164 >> 2] = $159;\n     $R7$1 = $156;\n     break;\n    } else _abort();\n   } while (0);\n   if ($154) {\n    $182 = HEAP32[$p + ($psize + 28) >> 2] | 0;\n    $183 = 3328 + ($182 << 2) | 0;\n    if (($0 | 0) == (HEAP32[$183 >> 2] | 0)) {\n     HEAP32[$183 >> 2] = $R7$1;\n     if (!$R7$1) {\n      HEAP32[757] = HEAP32[757] & ~(1 << $182);\n      break;\n     }\n    } else {\n     if ($154 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort();\n     $192 = $154 + 16 | 0;\n     if ((HEAP32[$192 >> 2] | 0) == ($0 | 0)) HEAP32[$192 >> 2] = $R7$1; else HEAP32[$154 + 20 >> 2] = $R7$1;\n     if (!$R7$1) break;\n    }\n    $197 = HEAP32[760] | 0;\n    if ($R7$1 >>> 0 < $197 >>> 0) _abort();\n    HEAP32[$R7$1 + 24 >> 2] = $154;\n    $201 = HEAP32[$p + ($psize + 16) >> 2] | 0;\n    do if ($201) if ($201 >>> 0 < $197 >>> 0) _abort(); else {\n     HEAP32[$R7$1 + 16 >> 2] = $201;\n     HEAP32[$201 + 24 >> 2] = $R7$1;\n     break;\n    } while (0);\n    $207 = HEAP32[$p + ($psize + 20) >> 2] | 0;\n    if ($207) if ($207 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else {\n     HEAP32[$R7$1 + 20 >> 2] = $207;\n     HEAP32[$207 + 24 >> 2] = $R7$1;\n     break;\n    }\n   }\n  } while (0);\n  HEAP32[$$0 + 4 >> 2] = $128 | 1;\n  HEAP32[$$0 + $128 >> 2] = $128;\n  if (($$0 | 0) == (HEAP32[761] | 0)) {\n   HEAP32[758] = $128;\n   return;\n  } else $$1 = $128;\n } else {\n  HEAP32[$108 >> 2] = $109 & -2;\n  HEAP32[$$0 + 4 >> 2] = $$02 | 1;\n  HEAP32[$$0 + $$02 >> 2] = $$02;\n  $$1 = $$02;\n }\n $222 = $$1 >>> 3;\n if ($$1 >>> 0 < 256) {\n  $224 = $222 << 1;\n  $225 = 3064 + ($224 << 2) | 0;\n  $226 = HEAP32[756] | 0;\n  $227 = 1 << $222;\n  if (!($226 & $227)) {\n   HEAP32[756] = $226 | $227;\n   $$pre$phiZ2D = 3064 + ($224 + 2 << 2) | 0;\n   $F16$0 = $225;\n  } else {\n   $231 = 3064 + ($224 + 2 << 2) | 0;\n   $232 = HEAP32[$231 >> 2] | 0;\n   if ($232 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else {\n    $$pre$phiZ2D = $231;\n    $F16$0 = $232;\n   }\n  }\n  HEAP32[$$pre$phiZ2D >> 2] = $$0;\n  HEAP32[$F16$0 + 12 >> 2] = $$0;\n  HEAP32[$$0 + 8 >> 2] = $F16$0;\n  HEAP32[$$0 + 12 >> 2] = $225;\n  return;\n }\n $238 = $$1 >>> 8;\n if (!$238) $I19$0 = 0; else if ($$1 >>> 0 > 16777215) $I19$0 = 31; else {\n  $243 = ($238 + 1048320 | 0) >>> 16 & 8;\n  $244 = $238 << $243;\n  $247 = ($244 + 520192 | 0) >>> 16 & 4;\n  $249 = $244 << $247;\n  $252 = ($249 + 245760 | 0) >>> 16 & 2;\n  $257 = 14 - ($247 | $243 | $252) + ($249 << $252 >>> 15) | 0;\n  $I19$0 = $$1 >>> ($257 + 7 | 0) & 1 | $257 << 1;\n }\n $263 = 3328 + ($I19$0 << 2) | 0;\n HEAP32[$$0 + 28 >> 2] = $I19$0;\n HEAP32[$$0 + 20 >> 2] = 0;\n HEAP32[$$0 + 16 >> 2] = 0;\n $267 = HEAP32[757] | 0;\n $268 = 1 << $I19$0;\n if (!($267 & $268)) {\n  HEAP32[757] = $267 | $268;\n  HEAP32[$263 >> 2] = $$0;\n  HEAP32[$$0 + 24 >> 2] = $263;\n  HEAP32[$$0 + 12 >> 2] = $$0;\n  HEAP32[$$0 + 8 >> 2] = $$0;\n  return;\n }\n $275 = HEAP32[$263 >> 2] | 0;\n L191 : do if ((HEAP32[$275 + 4 >> 2] & -8 | 0) == ($$1 | 0)) $T$0$lcssa = $275; else {\n  $K20$043 = $$1 << (($I19$0 | 0) == 31 ? 0 : 25 - ($I19$0 >>> 1) | 0);\n  $T$042 = $275;\n  while (1) {\n   $292 = $T$042 + 16 + ($K20$043 >>> 31 << 2) | 0;\n   $287 = HEAP32[$292 >> 2] | 0;\n   if (!$287) {\n    $$lcssa = $292;\n    $T$042$lcssa = $T$042;\n    break;\n   }\n   if ((HEAP32[$287 + 4 >> 2] & -8 | 0) == ($$1 | 0)) {\n    $T$0$lcssa = $287;\n    break L191;\n   } else {\n    $K20$043 = $K20$043 << 1;\n    $T$042 = $287;\n   }\n  }\n  if ($$lcssa >>> 0 < (HEAP32[760] | 0) >>> 0) _abort();\n  HEAP32[$$lcssa >> 2] = $$0;\n  HEAP32[$$0 + 24 >> 2] = $T$042$lcssa;\n  HEAP32[$$0 + 12 >> 2] = $$0;\n  HEAP32[$$0 + 8 >> 2] = $$0;\n  return;\n } while (0);\n $299 = $T$0$lcssa + 8 | 0;\n $300 = HEAP32[$299 >> 2] | 0;\n $301 = HEAP32[760] | 0;\n if (!($300 >>> 0 >= $301 >>> 0 & $T$0$lcssa >>> 0 >= $301 >>> 0)) _abort();\n HEAP32[$300 + 12 >> 2] = $$0;\n HEAP32[$299 >> 2] = $$0;\n HEAP32[$$0 + 8 >> 2] = $300;\n HEAP32[$$0 + 12 >> 2] = $T$0$lcssa;\n HEAP32[$$0 + 24 >> 2] = 0;\n return;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_120parse_template_paramINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) {\n $first = $first | 0;\n $last = $last | 0;\n $db = $db | 0;\n var $$0 = 0, $$0$i$i$i = 0, $$0$i$i$i15 = 0, $$0$i$i$i7 = 0, $$0$i$i$i9 = 0, $$0$i$i58 = 0, $$lcssa81 = 0, $0 = 0, $1 = 0, $10 = 0, $101 = 0, $103 = 0, $107 = 0, $114 = 0, $116 = 0, $117 = 0, $118 = 0, $119 = 0, $120 = 0, $122 = 0, $125 = 0, $133 = 0, $134 = 0, $135 = 0, $138 = 0, $141 = 0, $148 = 0, $15 = 0, $150 = 0, $157 = 0, $158 = 0, $167 = 0, $168 = 0, $170 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $184 = 0, $186 = 0, $189 = 0, $190 = 0, $2 = 0, $22 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $30 = 0, $33 = 0, $4 = 0, $41 = 0, $42 = 0, $43 = 0, $46 = 0, $49 = 0, $56 = 0, $58 = 0, $61 = 0, $62 = 0, $64 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $78 = 0, $80 = 0, $83 = 0, $84 = 0, $89 = 0, $91 = 0, $__p$0$i$i57 = 0, $__p$0$ph$i$i = 0, $__v$i$i13 = 0, $isdigittmp = 0, $isdigittmp4 = 0, $sub$061 = 0, $sub$061$lcssa = 0, $t1$060 = 0, $t1$060$lcssa = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 96 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $__v$i$i13 = sp + 64 | 0;\n $0 = sp + 40 | 0;\n $1 = sp + 16 | 0;\n $2 = sp;\n $4 = $first;\n L1 : do if (($last - $4 | 0) > 1) if ((HEAP8[$first >> 0] | 0) == 84) {\n  $10 = HEAP8[$first + 1 >> 0] | 0;\n  if ($10 << 24 >> 24 == 95) {\n   $15 = HEAP32[$db + 36 >> 2] | 0;\n   if ((HEAP32[$db + 32 >> 2] | 0) == ($15 | 0)) {\n    $$0 = $first;\n    break;\n   }\n   $18 = HEAP32[$15 + -16 >> 2] | 0;\n   if (($18 | 0) == (HEAP32[$15 + -12 >> 2] | 0)) {\n    HEAP8[$0 >> 0] = 4;\n    $56 = $0 + 1 | 0;\n    HEAP8[$56 >> 0] = 84;\n    HEAP8[$56 + 1 >> 0] = 95;\n    HEAP8[$0 + 3 >> 0] = 0;\n    $58 = $0 + 12 | 0;\n    HEAP32[$58 >> 2] = 0;\n    HEAP32[$58 + 4 >> 2] = 0;\n    HEAP32[$58 + 8 >> 2] = 0;\n    $61 = $db + 4 | 0;\n    $62 = HEAP32[$61 >> 2] | 0;\n    $64 = HEAP32[$db + 8 >> 2] | 0;\n    if ($62 >>> 0 < $64 >>> 0) {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($62, $0);\n     HEAP32[$61 >> 2] = (HEAP32[$61 >> 2] | 0) + 24;\n    } else {\n     $71 = HEAP32[$db >> 2] | 0;\n     $72 = $62 - $71 | 0;\n     $73 = ($72 | 0) / 24 | 0;\n     $74 = $73 + 1 | 0;\n     if (($72 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n     $78 = ($64 - $71 | 0) / 24 | 0;\n     if ($78 >>> 0 < 1073741823) {\n      $80 = $78 << 1;\n      $$0$i$i$i9 = $80 >>> 0 < $74 >>> 0 ? $74 : $80;\n     } else $$0$i$i$i9 = 2147483647;\n     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i13, $$0$i$i$i9, $73, $db + 12 | 0);\n     $83 = $__v$i$i13 + 8 | 0;\n     $84 = HEAP32[$83 >> 2] | 0;\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($84, $0);\n     HEAP32[$83 >> 2] = $84 + 24;\n     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i13);\n     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i13);\n    }\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0);\n    HEAP8[$db + 62 >> 0] = 1;\n    $$0 = $first + 2 | 0;\n    break;\n   }\n   $22 = HEAP32[$18 >> 2] | 0;\n   $24 = HEAP32[$18 + 4 >> 2] | 0;\n   $25 = $db + 4 | 0;\n   $26 = $db + 8 | 0;\n   $27 = $db + 12 | 0;\n   $28 = $__v$i$i13 + 8 | 0;\n   L20 : do if (($22 | 0) != ($24 | 0)) {\n    $33 = $22;\n    while (1) {\n     $30 = HEAP32[$25 >> 2] | 0;\n     if (($30 | 0) == (HEAP32[$26 >> 2] | 0)) {\n      $41 = $30 - (HEAP32[$db >> 2] | 0) | 0;\n      $42 = ($41 | 0) / 24 | 0;\n      $43 = $42 + 1 | 0;\n      if (($41 | 0) < -24) break;\n      if ($42 >>> 0 < 1073741823) {\n       $46 = $42 << 1;\n       $$0$i$i$i7 = $46 >>> 0 < $43 >>> 0 ? $43 : $46;\n      } else $$0$i$i$i7 = 2147483647;\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i13, $$0$i$i$i7, $42, $27);\n      $49 = HEAP32[$28 >> 2] | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($49, $33);\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($49 + 12 | 0, $33 + 12 | 0);\n      HEAP32[$28 >> 2] = $49 + 24;\n      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i13);\n      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i13);\n     } else {\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($30, $33);\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($30 + 12 | 0, $33 + 12 | 0);\n      HEAP32[$25 >> 2] = (HEAP32[$25 >> 2] | 0) + 24;\n     }\n     $33 = $33 + 24 | 0;\n     if (($33 | 0) == ($24 | 0)) break L20;\n    }\n    __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n   } while (0);\n   $$0 = $first + 2 | 0;\n   break;\n  }\n  $isdigittmp = ($10 << 24 >> 24) + -48 | 0;\n  if ($isdigittmp >>> 0 < 10) {\n   $89 = $first + 2 | 0;\n   if (($89 | 0) == ($last | 0)) $$0 = $first; else {\n    $sub$061 = $isdigittmp;\n    $t1$060 = $89;\n    while (1) {\n     $91 = HEAP8[$t1$060 >> 0] | 0;\n     $isdigittmp4 = ($91 << 24 >> 24) + -48 | 0;\n     if ($isdigittmp4 >>> 0 >= 10) {\n      $$lcssa81 = $91;\n      $sub$061$lcssa = $sub$061;\n      $t1$060$lcssa = $t1$060;\n      break;\n     }\n     $t1$060 = $t1$060 + 1 | 0;\n     if (($t1$060 | 0) == ($last | 0)) {\n      $$0 = $first;\n      break L1;\n     } else $sub$061 = $isdigittmp4 + ($sub$061 * 10 | 0) | 0;\n    }\n    if ($$lcssa81 << 24 >> 24 == 95) {\n     $101 = HEAP32[$db + 36 >> 2] | 0;\n     if ((HEAP32[$db + 32 >> 2] | 0) == ($101 | 0)) $$0 = $first; else {\n      $103 = $sub$061$lcssa + 1 | 0;\n      $107 = HEAP32[$101 + -16 >> 2] | 0;\n      if ($103 >>> 0 < (HEAP32[$101 + -12 >> 2] | 0) - $107 >> 4 >>> 0) {\n       $114 = HEAP32[$107 + ($103 << 4) >> 2] | 0;\n       $116 = HEAP32[$107 + ($103 << 4) + 4 >> 2] | 0;\n       $117 = $db + 4 | 0;\n       $118 = $db + 8 | 0;\n       $119 = $db + 12 | 0;\n       $120 = $__v$i$i13 + 8 | 0;\n       L43 : do if (($114 | 0) != ($116 | 0)) {\n        $125 = $114;\n        while (1) {\n         $122 = HEAP32[$117 >> 2] | 0;\n         if (($122 | 0) == (HEAP32[$118 >> 2] | 0)) {\n          $133 = $122 - (HEAP32[$db >> 2] | 0) | 0;\n          $134 = ($133 | 0) / 24 | 0;\n          $135 = $134 + 1 | 0;\n          if (($133 | 0) < -24) break;\n          if ($134 >>> 0 < 1073741823) {\n           $138 = $134 << 1;\n           $$0$i$i$i15 = $138 >>> 0 < $135 >>> 0 ? $135 : $138;\n          } else $$0$i$i$i15 = 2147483647;\n          __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i13, $$0$i$i$i15, $134, $119);\n          $141 = HEAP32[$120 >> 2] | 0;\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($141, $125);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($141 + 12 | 0, $125 + 12 | 0);\n          HEAP32[$120 >> 2] = $141 + 24;\n          __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i13);\n          __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i13);\n         } else {\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($122, $125);\n          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($122 + 12 | 0, $125 + 12 | 0);\n          HEAP32[$117 >> 2] = (HEAP32[$117 >> 2] | 0) + 24;\n         }\n         $125 = $125 + 24 | 0;\n         if (($125 | 0) == ($116 | 0)) break L43;\n        }\n        __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n       } while (0);\n       $$0 = $t1$060$lcssa + 1 | 0;\n       break;\n      }\n      $148 = $t1$060$lcssa + 1 | 0;\n      $150 = $148 - $4 | 0;\n      if ($150 >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv($2);\n      if ($150 >>> 0 < 11) {\n       HEAP8[$2 >> 0] = $150 << 1;\n       $__p$0$ph$i$i = $2 + 1 | 0;\n      } else {\n       $157 = $150 + 16 & -16;\n       $158 = _malloc($157) | 0;\n       HEAP32[$2 + 8 >> 2] = $158;\n       HEAP32[$2 >> 2] = $157 | 1;\n       HEAP32[$2 + 4 >> 2] = $150;\n       $__p$0$ph$i$i = $158;\n      }\n      if (($148 | 0) != ($first | 0)) {\n       $$0$i$i58 = $first;\n       $__p$0$i$i57 = $__p$0$ph$i$i;\n       while (1) {\n        HEAP8[$__p$0$i$i57 >> 0] = HEAP8[$$0$i$i58 >> 0] | 0;\n        if (($$0$i$i58 | 0) == ($t1$060$lcssa | 0)) break; else {\n         $$0$i$i58 = $$0$i$i58 + 1 | 0;\n         $__p$0$i$i57 = $__p$0$i$i57 + 1 | 0;\n        }\n       }\n      }\n      HEAP8[$__p$0$ph$i$i + $150 >> 0] = 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($1, $2);\n      $167 = $db + 4 | 0;\n      $168 = HEAP32[$167 >> 2] | 0;\n      $170 = HEAP32[$db + 8 >> 2] | 0;\n      if ($168 >>> 0 < $170 >>> 0) {\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($168, $1);\n       HEAP32[$167 >> 2] = (HEAP32[$167 >> 2] | 0) + 24;\n      } else {\n       $177 = HEAP32[$db >> 2] | 0;\n       $178 = $168 - $177 | 0;\n       $179 = ($178 | 0) / 24 | 0;\n       $180 = $179 + 1 | 0;\n       if (($178 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n       $184 = ($170 - $177 | 0) / 24 | 0;\n       if ($184 >>> 0 < 1073741823) {\n        $186 = $184 << 1;\n        $$0$i$i$i = $186 >>> 0 < $180 >>> 0 ? $180 : $186;\n       } else $$0$i$i$i = 2147483647;\n       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i13, $$0$i$i$i, $179, $db + 12 | 0);\n       $189 = $__v$i$i13 + 8 | 0;\n       $190 = HEAP32[$189 >> 2] | 0;\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($190, $1);\n       HEAP32[$189 >> 2] = $190 + 24;\n       __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i13);\n       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i13);\n      }\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1);\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);\n      HEAP8[$db + 62 >> 0] = 1;\n      $$0 = $148;\n     }\n    } else $$0 = $first;\n   }\n  } else $$0 = $first;\n } else $$0 = $first; else $$0 = $first; while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _get_matrix_code($data, $size, $code_out_p, $dir, $cf, $matrixCodeType, $errorCorrected) {\n $data = $data | 0;\n $size = $size | 0;\n $code_out_p = $code_out_p | 0;\n $dir = $dir | 0;\n $cf = $cf | 0;\n $matrixCodeType = $matrixCodeType | 0;\n $errorCorrected = $errorCorrected | 0;\n var $$ = 0, $$0 = 0, $$lcssa115 = 0, $$max$0 = 0, $$max$0$1 = 0, $$max$0$2 = 0, $1 = 0, $10 = 0, $100 = 0, $102 = 0, $103 = 0, $108 = 0, $109 = 0, $110 = 0, $120 = 0, $121 = 0, $122 = 0, $124 = 0, $125 = 0, $126 = 0, $130 = 0, $140 = 0, $144 = 0, $145 = 0, $146 = 0, $157 = 0, $158 = 0, $16 = 0, $163 = 0, $164 = 0, $165 = 0, $169 = 0, $182 = 0, $183 = 0, $184 = 0, $187 = 0, $193 = 0, $194 = 0, $197 = 0, $2 = 0, $206 = 0, $207 = 0, $211 = 0, $22 = 0, $221 = 0, $222 = 0, $223 = 0, $224 = 0, $225 = 0, $226 = 0, $227 = 0, $228 = 0, $229 = 0, $230 = 0, $231 = 0, $232 = 0, $233 = 0, $234 = 0, $235 = 0, $236 = 0, $237 = 0, $238 = 0, $239 = 0, $240 = 0, $241 = 0, $242 = 0, $243 = 0, $244 = 0, $28 = 0, $31 = 0, $32 = 0, $36 = 0, $4 = 0, $70 = 0, $83 = 0, $85 = 0, $86 = 0, $96 = 0, $98 = 0, $code = 0, $contrastMin$0$lcssa = 0, $contrastMin$098 = 0, $contrastMin$1 = 0, $corner = 0, $dirCode = 0, $exitcond64 = 0, $i$2102 = 0, $i$2102$lcssa = 0, $i$399 = 0, $i$465 = 0, $i$576 = 0, $i$680 = 0, $i$794 = 0, $j$067 = 0, $j$171 = 0, $j$285 = 0, $j$389 = 0, $min$1 = 0, $min$1$1 = 0, $min$1$2 = 0, $or$cond734 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 32 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $dirCode = sp + 24 | 0;\n $corner = sp + 8 | 0;\n $code = sp;\n L1 : do if (($size + -3 | 0) >>> 0 > 5) {\n  HEAP32[$code_out_p >> 2] = -1;\n  HEAP32[$dir >> 2] = 0;\n  HEAPF64[$cf >> 3] = -1.0;\n  $$0 = -1;\n } else {\n  HEAP32[$corner >> 2] = 0;\n  $1 = $size + -1 | 0;\n  $2 = Math_imul($1, $size) | 0;\n  HEAP32[$corner + 4 >> 2] = $2;\n  $4 = Math_imul($size, $size) | 0;\n  HEAP32[$corner + 8 >> 2] = $4 + -1;\n  HEAP32[$corner + 12 >> 2] = $1;\n  $10 = HEAP8[$data + (HEAP32[$corner >> 2] | 0) >> 0] | 0;\n  $$max$0 = ($10 & 255) > 0 ? $10 : 0;\n  $min$1 = ($10 & 255) < 255 ? $10 : -1;\n  $16 = HEAP8[$data + (HEAP32[$corner + 4 >> 2] | 0) >> 0] | 0;\n  $$max$0$1 = ($16 & 255) > ($$max$0 & 255) ? $16 : $$max$0;\n  $min$1$1 = ($16 & 255) < ($min$1 & 255) ? $16 : $min$1;\n  $22 = HEAP8[$data + (HEAP32[$corner + 8 >> 2] | 0) >> 0] | 0;\n  $$max$0$2 = ($22 & 255) > ($$max$0$1 & 255) ? $22 : $$max$0$1;\n  $min$1$2 = ($22 & 255) < ($min$1$1 & 255) ? $22 : $min$1$1;\n  $28 = HEAP8[$data + (HEAP32[$corner + 12 >> 2] | 0) >> 0] | 0;\n  $31 = (($28 & 255) > ($$max$0$2 & 255) ? $28 : $$max$0$2) & 255;\n  $32 = (($28 & 255) < ($min$1$2 & 255) ? $28 : $min$1$2) & 255;\n  if (($31 - $32 | 0) < 30) {\n   HEAP32[$code_out_p >> 2] = -1;\n   HEAP32[$dir >> 2] = 0;\n   HEAPF64[$cf >> 3] = -1.0;\n   $$0 = -2;\n   break;\n  }\n  $36 = ($31 + $32 | 0) >>> 1;\n  HEAP8[$dirCode >> 0] = (HEAPU8[$data + (HEAP32[$corner >> 2] | 0) >> 0] | 0) >>> 0 < $36 >>> 0 & 1;\n  HEAP8[$dirCode + 1 >> 0] = (HEAPU8[$data + (HEAP32[$corner + 4 >> 2] | 0) >> 0] | 0) >>> 0 < $36 >>> 0 & 1;\n  HEAP8[$dirCode + 2 >> 0] = (HEAPU8[$data + (HEAP32[$corner + 8 >> 2] | 0) >> 0] | 0) >>> 0 < $36 >>> 0 & 1;\n  HEAP8[$dirCode + 3 >> 0] = (HEAPU8[$data + (HEAP32[$corner + 12 >> 2] | 0) >> 0] | 0) >>> 0 < $36 >>> 0 & 1;\n  $i$2102 = 0;\n  while (1) {\n   $70 = $i$2102 + 1 | 0;\n   if ((HEAP8[$dirCode + $i$2102 >> 0] | 0) == 1) if ((HEAP8[$dirCode + (($70 | 0) % 4 | 0) >> 0] | 0) == 1) if (!(HEAP8[$dirCode + (($i$2102 + 2 | 0) % 4 | 0) >> 0] | 0)) {\n    $i$2102$lcssa = $i$2102;\n    label = 10;\n    break;\n   }\n   if (($70 | 0) < 4) $i$2102 = $70; else {\n    $$lcssa115 = $70;\n    label = 12;\n    break;\n   }\n  }\n  if ((label | 0) == 10) HEAP32[$dir >> 2] = $i$2102$lcssa; else if ((label | 0) == 12) if (($$lcssa115 | 0) == 4) {\n   HEAP32[$code_out_p >> 2] = -1;\n   HEAP32[$dir >> 2] = 0;\n   HEAPF64[$cf >> 3] = -1.0;\n   $$0 = -3;\n   break;\n  }\n  if (!$4) $contrastMin$0$lcssa = 255; else {\n   $contrastMin$098 = 255;\n   $i$399 = 0;\n   while (1) {\n    $83 = $data + $i$399 | 0;\n    $85 = HEAPU8[$83 >> 0] | 0;\n    $86 = $85 - $36 | 0;\n    $$ = ($86 | 0) < 0 ? 0 - $86 | 0 : $86;\n    $contrastMin$1 = ($$ | 0) < ($contrastMin$098 | 0) ? $$ : $contrastMin$098;\n    HEAP8[$83 >> 0] = $85 >>> 0 < $36 >>> 0 & 1;\n    $i$399 = $i$399 + 1 | 0;\n    if (($i$399 | 0) >= ($4 | 0)) {\n     $contrastMin$0$lcssa = $contrastMin$1;\n     break;\n    } else $contrastMin$098 = $contrastMin$1;\n   }\n  }\n  switch (HEAP32[$dir >> 2] | 0) {\n  case 0:\n   {\n    if (($size | 0) > 0) {\n     $exitcond64 = ($size | 0) == 0;\n     $227 = 0;\n     $228 = 0;\n     $j$067 = 0;\n     while (1) {\n      $102 = ($j$067 | 0) == ($1 | 0);\n      $103 = Math_imul($j$067, $size) | 0;\n      if ($exitcond64) {\n       $229 = $227;\n       $230 = $228;\n      } else {\n       $108 = $227;\n       $109 = $228;\n       $i$465 = 0;\n       while (1) {\n        if (!($i$465 | $j$067)) {\n         $231 = $108;\n         $232 = $109;\n        } else if ($102 & (($i$465 | 0) == 0 | ($i$465 | 0) == ($1 | 0))) {\n         $231 = $108;\n         $232 = $109;\n        } else {\n         $110 = _bitshift64Shl($108 | 0, $109 | 0, 1) | 0;\n         $231 = (HEAP8[$data + ($i$465 + $103) >> 0] | 0) != 0 | $110;\n         $232 = tempRet0;\n        }\n        $i$465 = $i$465 + 1 | 0;\n        if (($i$465 | 0) == ($size | 0)) {\n         $229 = $231;\n         $230 = $232;\n         break;\n        } else {\n         $108 = $231;\n         $109 = $232;\n        }\n       }\n      }\n      $j$067 = $j$067 + 1 | 0;\n      if (($j$067 | 0) >= ($size | 0)) {\n       $182 = $229;\n       $206 = $230;\n       break;\n      } else {\n       $227 = $229;\n       $228 = $230;\n      }\n     }\n    } else {\n     $182 = 0;\n     $206 = 0;\n    }\n    break;\n   }\n  case 1:\n   {\n    if (($size | 0) > 0) {\n     $100 = ($size | 0) > 0;\n     $225 = 0;\n     $226 = 0;\n     $i$576 = 0;\n     while (1) {\n      $120 = ($i$576 | 0) == 0;\n      $121 = ($i$576 | 0) == ($1 | 0);\n      if ($100) {\n       $124 = $225;\n       $125 = $226;\n       $j$171 = $1;\n       while (1) {\n        $122 = ($j$171 | 0) == ($1 | 0);\n        if ($120 & $122) {\n         $235 = $124;\n         $236 = $125;\n        } else if ($121 & ($122 | ($j$171 | 0) == 0)) {\n         $235 = $124;\n         $236 = $125;\n        } else {\n         $126 = _bitshift64Shl($124 | 0, $125 | 0, 1) | 0;\n         $130 = $data + ((Math_imul($j$171, $size) | 0) + $i$576) | 0;\n         $235 = (HEAP8[$130 >> 0] | 0) != 0 | $126;\n         $236 = tempRet0;\n        }\n        if (($j$171 | 0) > 0) {\n         $124 = $235;\n         $125 = $236;\n         $j$171 = $j$171 + -1 | 0;\n        } else {\n         $233 = $235;\n         $234 = $236;\n         break;\n        }\n       }\n      } else {\n       $233 = $225;\n       $234 = $226;\n      }\n      $i$576 = $i$576 + 1 | 0;\n      if (($i$576 | 0) >= ($size | 0)) {\n       $182 = $233;\n       $206 = $234;\n       break;\n      } else {\n       $225 = $233;\n       $226 = $234;\n      }\n     }\n    } else {\n     $182 = 0;\n     $206 = 0;\n    }\n    break;\n   }\n  case 2:\n   {\n    if (($size | 0) > 0) {\n     $98 = ($size | 0) > 0;\n     $223 = 0;\n     $224 = 0;\n     $j$285 = $1;\n     while (1) {\n      $or$cond734 = ($j$285 | 0) == ($1 | 0) | ($j$285 | 0) == 0;\n      $140 = Math_imul($j$285, $size) | 0;\n      if ($98) {\n       $144 = $223;\n       $145 = $224;\n       $i$680 = $1;\n       while (1) {\n        if ($or$cond734 & ($i$680 | 0) == ($1 | 0) | ($i$680 | $j$285 | 0) == 0) {\n         $239 = $144;\n         $240 = $145;\n        } else {\n         $146 = _bitshift64Shl($144 | 0, $145 | 0, 1) | 0;\n         $239 = (HEAP8[$data + ($i$680 + $140) >> 0] | 0) != 0 | $146;\n         $240 = tempRet0;\n        }\n        if (($i$680 | 0) > 0) {\n         $144 = $239;\n         $145 = $240;\n         $i$680 = $i$680 + -1 | 0;\n        } else {\n         $237 = $239;\n         $238 = $240;\n         break;\n        }\n       }\n      } else {\n       $237 = $223;\n       $238 = $224;\n      }\n      if (($j$285 | 0) > 0) {\n       $223 = $237;\n       $224 = $238;\n       $j$285 = $j$285 + -1 | 0;\n      } else {\n       $182 = $237;\n       $206 = $238;\n       break;\n      }\n     }\n    } else {\n     $182 = 0;\n     $206 = 0;\n    }\n    break;\n   }\n  case 3:\n   {\n    if (($size | 0) > 0) {\n     $96 = ($size | 0) > 0;\n     $221 = 0;\n     $222 = 0;\n     $i$794 = $1;\n     while (1) {\n      $157 = ($i$794 | 0) == ($1 | 0);\n      $158 = ($i$794 | 0) == 0;\n      if ($96) {\n       $163 = $221;\n       $164 = $222;\n       $j$389 = 0;\n       while (1) {\n        if ($157 & ($j$389 | 0) == 0 | ($j$389 | $i$794 | 0) == 0 | $158 & ($j$389 | 0) == ($1 | 0)) {\n         $243 = $163;\n         $244 = $164;\n        } else {\n         $165 = _bitshift64Shl($163 | 0, $164 | 0, 1) | 0;\n         $169 = $data + ((Math_imul($j$389, $size) | 0) + $i$794) | 0;\n         $243 = (HEAP8[$169 >> 0] | 0) != 0 | $165;\n         $244 = tempRet0;\n        }\n        $j$389 = $j$389 + 1 | 0;\n        if (($j$389 | 0) >= ($size | 0)) {\n         $241 = $243;\n         $242 = $244;\n         break;\n        } else {\n         $163 = $243;\n         $164 = $244;\n        }\n       }\n      } else {\n       $241 = $221;\n       $242 = $222;\n      }\n      if (($i$794 | 0) > 0) {\n       $221 = $241;\n       $222 = $242;\n       $i$794 = $i$794 + -1 | 0;\n      } else {\n       $182 = $241;\n       $206 = $242;\n       break;\n      }\n     }\n    } else {\n     $182 = 0;\n     $206 = 0;\n    }\n    break;\n   }\n  default:\n   {\n    $182 = 0;\n    $206 = 0;\n   }\n  }\n  HEAPF64[$cf >> 3] = ($contrastMin$0$lcssa | 0) > 30 ? 1.0 : +($contrastMin$0$lcssa | 0) / 30.0;\n  switch ($matrixCodeType | 0) {\n  case 259:\n   {\n    $183 = HEAP8[4551 + $182 >> 0] | 0;\n    $184 = $183 << 24 >> 24;\n    $187 = $code;\n    HEAP32[$187 >> 2] = $184;\n    HEAP32[$187 + 4 >> 2] = (($184 | 0) < 0) << 31 >> 31;\n    if ($183 << 24 >> 24 < 0) {\n     HEAP32[$code_out_p >> 2] = -1;\n     HEAPF64[$cf >> 3] = -1.0;\n     $$0 = -4;\n     break L1;\n    }\n    break;\n   }\n  case 515:\n   {\n    $193 = HEAP8[4423 + $182 >> 0] | 0;\n    $194 = $193 << 24 >> 24;\n    $197 = $code;\n    HEAP32[$197 >> 2] = $194;\n    HEAP32[$197 + 4 >> 2] = (($194 | 0) < 0) << 31 >> 31;\n    if ($errorCorrected) HEAP32[$errorCorrected >> 2] = HEAPU8[4487 + $182 >> 0];\n    if ($193 << 24 >> 24 < 0) {\n     HEAP32[$code_out_p >> 2] = -1;\n     HEAPF64[$cf >> 3] = -1.0;\n     $$0 = -4;\n     break L1;\n    }\n    break;\n   }\n  case 772:\n  case 1028:\n   {\n    $207 = _decode_bch($matrixCodeType, $182, $206, 0, $code) | 0;\n    if (($207 | 0) < 0) {\n     HEAP32[$code_out_p >> 2] = -1;\n     HEAPF64[$cf >> 3] = -1.0;\n     $$0 = -4;\n     break L1;\n    }\n    if (($errorCorrected | 0) != 0 & ($207 | 0) > 0) HEAP32[$errorCorrected >> 2] = $207;\n    break;\n   }\n  default:\n   {\n    $211 = $code;\n    HEAP32[$211 >> 2] = $182;\n    HEAP32[$211 + 4 >> 2] = $206;\n   }\n  }\n  HEAP32[$code_out_p >> 2] = HEAP32[$code >> 2];\n  $$0 = 0;\n } while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _decode_bch($matrixCodeType, $0, $1, $recd127, $out_p) {\n $matrixCodeType = $matrixCodeType | 0;\n $0 = $0 | 0;\n $1 = $1 | 0;\n $recd127 = $recd127 | 0;\n $out_p = $out_p | 0;\n var $$ = 0, $$0 = 0, $$lcssa24 = 0, $$lcssa76 = 0, $$lcssa77 = 0, $$pre$phi$lcssaZ2D = 0, $$pre$phiZ2D = 0, $$sink = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $11 = 0, $110 = 0, $114 = 0, $118 = 0, $122 = 0, $125 = 0, $133 = 0, $134 = 0, $143 = 0, $154 = 0, $155 = 0, $156 = 0, $159 = 0, $17 = 0, $175 = 0, $182 = 0, $19 = 0, $190 = 0, $191 = 0, $192 = 0, $194 = 0, $195 = 0, $198 = 0, $20 = 0, $208 = 0, $209 = 0, $28 = 0, $3 = 0, $30 = 0, $41 = 0, $43 = 0, $44 = 0, $46 = 0, $48 = 0, $49 = 0, $58 = 0, $6 = 0, $71 = 0, $73 = 0, $74 = 0, $76 = 0, $78 = 0, $79 = 0, $86 = 0, $alpha_to$0 = 0, $count$036 = 0, $count$1 = 0, $count$1$lcssa = 0, $d = 0, $elp = 0, $i$066 = 0, $i$1035 = 0, $i$1130 = 0, $i$1228 = 0, $i$159 = 0, $i$254 = 0, $i$347 = 0, $i$441 = 0, $i$543 = 0, $i$645 = 0, $i$750 = 0, $i$839 = 0, $i$937 = 0, $index_of$0 = 0, $j$058 = 0, $j$1 = 0, $j$232 = 0, $k$0 = 0, $k$1 = 0, $l = 0, $length$0 = 0, $loc = 0, $n$0 = 0, $q$0 = 0, $q$1 = 0, $q$2 = 0, $q$3 = 0, $q$4$lcssa = 0, $q$433 = 0, $q$5 = 0, $recd$0 = 0, $recd15 = 0, $reg = 0, $s = 0, $syn_error$0$ = 0, $syn_error$0$$lcssa = 0, $syn_error$060 = 0, $t$0 = 0, $t$1 = 0, $u$0 = 0, $u$1 = 0, $u_lu = 0, label = 0, sp = 0, $j$1$looptemp = 0, $u$0$looptemp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 2320 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $recd15 = sp + 2304 | 0;\n $elp = sp + 864 | 0;\n $d = sp + 784 | 0;\n $l = sp + 704 | 0;\n $u_lu = sp + 624 | 0;\n $s = sp + 548 | 0;\n $loc = sp + 40 | 0;\n $reg = sp;\n switch ($matrixCodeType | 0) {\n case 772:\n  {\n   $k$0 = 9;\n   $t$0 = 1;\n   label = 3;\n   break;\n  }\n case 1028:\n  {\n   $k$0 = 5;\n   $t$0 = 2;\n   label = 3;\n   break;\n  }\n case 2830:\n  {\n   $alpha_to$0 = 900;\n   $index_of$0 = 1472;\n   $k$1 = 64;\n   $length$0 = 120;\n   $n$0 = 127;\n   $recd$0 = $recd127;\n   $t$1 = 9;\n   label = 6;\n   break;\n  }\n default:\n  $$0 = -1;\n }\n if ((label | 0) == 3) {\n  $3 = $0;\n  $6 = $1;\n  $i$066 = 0;\n  while (1) {\n   HEAP8[$recd15 + $i$066 >> 0] = $3 & 1;\n   $3 = _bitshift64Lshr($3 | 0, $6 | 0, 1) | 0;\n   $i$066 = $i$066 + 1 | 0;\n   if (($i$066 | 0) == 13) break; else $6 = tempRet0;\n  }\n  $alpha_to$0 = 840;\n  $index_of$0 = 1408;\n  $k$1 = $k$0;\n  $length$0 = 13;\n  $n$0 = 15;\n  $recd$0 = $recd15;\n  $t$1 = $t$0;\n  label = 6;\n }\n do if ((label | 0) == 6) {\n  $10 = $t$1 << 1;\n  $i$159 = 1;\n  $syn_error$060 = 0;\n  while (1) {\n   $11 = $s + ($i$159 << 2) | 0;\n   HEAP32[$11 >> 2] = 0;\n   $20 = 0;\n   $j$058 = 0;\n   while (1) {\n    if (!(HEAP8[$recd$0 + $j$058 >> 0] | 0)) $208 = $20; else {\n     $17 = $alpha_to$0 + (((Math_imul($j$058, $i$159) | 0) % ($n$0 | 0) | 0) << 2) | 0;\n     $19 = $20 ^ HEAP32[$17 >> 2];\n     HEAP32[$11 >> 2] = $19;\n     $208 = $19;\n    }\n    $j$058 = $j$058 + 1 | 0;\n    if (($j$058 | 0) >= ($length$0 | 0)) {\n     $$lcssa77 = $208;\n     break;\n    } else $20 = $208;\n   }\n   $syn_error$0$ = ($$lcssa77 | 0) == 0 ? $syn_error$060 : 1;\n   HEAP32[$11 >> 2] = HEAP32[$index_of$0 + ($$lcssa77 << 2) >> 2];\n   if (($i$159 | 0) < ($10 | 0)) {\n    $i$159 = $i$159 + 1 | 0;\n    $syn_error$060 = $syn_error$0$;\n   } else {\n    $syn_error$0$$lcssa = $syn_error$0$;\n    break;\n   }\n  }\n  $28 = ($syn_error$0$$lcssa | 0) != 0;\n  if ($28) {\n   HEAP32[$d >> 2] = 0;\n   $30 = HEAP32[$s + 4 >> 2] | 0;\n   HEAP32[$d + 4 >> 2] = $30;\n   HEAP32[$elp >> 2] = 0;\n   HEAP32[$elp + 72 >> 2] = 1;\n   if (($10 | 0) > 1) {\n    $i$254 = 1;\n    do {\n     HEAP32[$elp + ($i$254 << 2) >> 2] = -1;\n     HEAP32[$elp + 72 + ($i$254 << 2) >> 2] = 0;\n     $i$254 = $i$254 + 1 | 0;\n    } while (($i$254 | 0) < ($10 | 0));\n   }\n   HEAP32[$l >> 2] = 0;\n   HEAP32[$l + 4 >> 2] = 0;\n   HEAP32[$u_lu >> 2] = -1;\n   HEAP32[$u_lu + 4 >> 2] = 0;\n   $43 = $30;\n   $46 = 0;\n   $u$0 = 0;\n   while (1) {\n    $u$0$looptemp = $u$0;\n    $u$0 = $u$0 + 1 | 0;\n    $41 = $d + ($u$0 << 2) | 0;\n    if (($43 | 0) == -1) {\n     $44 = $u$0$looptemp + 2 | 0;\n     HEAP32[$l + ($44 << 2) >> 2] = $46;\n     if (($46 | 0) < 0) {\n      $$pre$phiZ2D = $44;\n      $110 = $46;\n     } else {\n      $i$347 = 0;\n      while (1) {\n       $48 = $elp + ($u$0 * 72 | 0) + ($i$347 << 2) | 0;\n       $49 = HEAP32[$48 >> 2] | 0;\n       HEAP32[$elp + ($44 * 72 | 0) + ($i$347 << 2) >> 2] = $49;\n       HEAP32[$48 >> 2] = HEAP32[$index_of$0 + ($49 << 2) >> 2];\n       if (($i$347 | 0) < ($46 | 0)) $i$347 = $i$347 + 1 | 0; else {\n        $$pre$phiZ2D = $44;\n        $110 = $46;\n        break;\n       }\n      }\n     }\n    } else {\n     $q$0 = $u$0$looptemp;\n     while (1) {\n      $58 = ($q$0 | 0) > 0;\n      if ($58 & (HEAP32[$d + ($q$0 << 2) >> 2] | 0) == -1) $q$0 = $q$0 + -1 | 0; else break;\n     }\n     if ($58) {\n      $j$1 = $q$0;\n      $q$1 = $q$0;\n      while (1) {\n       $j$1$looptemp = $j$1;\n       $j$1 = $j$1 + -1 | 0;\n       if ((HEAP32[$d + ($j$1 << 2) >> 2] | 0) == -1) $q$2 = $q$1; else $q$2 = (HEAP32[$u_lu + ($q$1 << 2) >> 2] | 0) < (HEAP32[$u_lu + ($j$1 << 2) >> 2] | 0) ? $j$1 : $q$1;\n       if (($j$1$looptemp | 0) <= 1) {\n        $q$3 = $q$2;\n        break;\n       } else $q$1 = $q$2;\n      }\n     } else $q$3 = $q$0;\n     $71 = $l + ($q$3 << 2) | 0;\n     $73 = $u$0 - $q$3 | 0;\n     $74 = $73 + (HEAP32[$71 >> 2] | 0) | 0;\n     $76 = $u$0$looptemp + 2 | 0;\n     $$ = ($46 | 0) > ($74 | 0) ? $46 : $74;\n     HEAP32[$l + ($76 << 2) >> 2] = $$;\n     $i$441 = 0;\n     do {\n      HEAP32[$elp + ($76 * 72 | 0) + ($i$441 << 2) >> 2] = 0;\n      $i$441 = $i$441 + 1 | 0;\n     } while (($i$441 | 0) < ($10 | 0));\n     $78 = HEAP32[$71 >> 2] | 0;\n     $79 = $d + ($q$3 << 2) | 0;\n     if (($78 | 0) >= 0) {\n      $i$543 = 0;\n      while (1) {\n       $86 = HEAP32[$elp + ($q$3 * 72 | 0) + ($i$543 << 2) >> 2] | 0;\n       if (($86 | 0) != -1) HEAP32[$elp + ($76 * 72 | 0) + ($73 + $i$543 << 2) >> 2] = HEAP32[$alpha_to$0 + ((($86 + $n$0 + (HEAP32[$41 >> 2] | 0) - (HEAP32[$79 >> 2] | 0) | 0) % ($n$0 | 0) | 0) << 2) >> 2];\n       if (($i$543 | 0) < ($78 | 0)) $i$543 = $i$543 + 1 | 0; else break;\n      }\n     }\n     if (($46 | 0) < 0) {\n      $$pre$phiZ2D = $76;\n      $110 = $$;\n     } else {\n      $i$645 = 0;\n      while (1) {\n       $100 = $elp + ($u$0 * 72 | 0) + ($i$645 << 2) | 0;\n       $101 = HEAP32[$100 >> 2] | 0;\n       $102 = $elp + ($76 * 72 | 0) + ($i$645 << 2) | 0;\n       HEAP32[$102 >> 2] = HEAP32[$102 >> 2] ^ $101;\n       HEAP32[$100 >> 2] = HEAP32[$index_of$0 + ($101 << 2) >> 2];\n       if (($i$645 | 0) < ($46 | 0)) $i$645 = $i$645 + 1 | 0; else {\n        $$pre$phiZ2D = $76;\n        $110 = $$;\n        break;\n       }\n      }\n     }\n    }\n    HEAP32[$u_lu + ($$pre$phiZ2D << 2) >> 2] = $u$0 - $110;\n    if (($u$0 | 0) >= ($10 | 0)) {\n     $$lcssa76 = $110;\n     $$pre$phi$lcssaZ2D = $$pre$phiZ2D;\n     break;\n    }\n    $114 = HEAP32[$s + ($$pre$phiZ2D << 2) >> 2] | 0;\n    if (($114 | 0) == -1) $$sink = 0; else $$sink = HEAP32[$alpha_to$0 + ($114 << 2) >> 2] | 0;\n    $118 = $d + ($$pre$phiZ2D << 2) | 0;\n    HEAP32[$118 >> 2] = $$sink;\n    if (($110 | 0) < 1) $$lcssa24 = $$sink; else {\n     $134 = $$sink;\n     $i$750 = 1;\n     while (1) {\n      $122 = HEAP32[$s + ($$pre$phiZ2D - $i$750 << 2) >> 2] | 0;\n      if (($122 | 0) == -1) $209 = $134; else {\n       $125 = HEAP32[$elp + ($$pre$phiZ2D * 72 | 0) + ($i$750 << 2) >> 2] | 0;\n       if (!$125) $209 = $134; else {\n        $133 = $134 ^ HEAP32[$alpha_to$0 + ((((HEAP32[$index_of$0 + ($125 << 2) >> 2] | 0) + $122 | 0) % ($n$0 | 0) | 0) << 2) >> 2];\n        HEAP32[$118 >> 2] = $133;\n        $209 = $133;\n       }\n      }\n      if (($i$750 | 0) < ($110 | 0)) {\n       $134 = $209;\n       $i$750 = $i$750 + 1 | 0;\n      } else {\n       $$lcssa24 = $209;\n       break;\n      }\n     }\n    }\n    $43 = HEAP32[$index_of$0 + ($$lcssa24 << 2) >> 2] | 0;\n    HEAP32[$118 >> 2] = $43;\n    if (($110 | 0) > ($t$1 | 0)) {\n     $$lcssa76 = $110;\n     $$pre$phi$lcssaZ2D = $$pre$phiZ2D;\n     break;\n    } else $46 = $110;\n   }\n   if (($$lcssa76 | 0) > ($t$1 | 0)) {\n    $$0 = -1;\n    break;\n   }\n   if (($$lcssa76 | 0) >= 0) {\n    $i$839 = 0;\n    while (1) {\n     $143 = $elp + ($$pre$phi$lcssaZ2D * 72 | 0) + ($i$839 << 2) | 0;\n     HEAP32[$143 >> 2] = HEAP32[$index_of$0 + (HEAP32[$143 >> 2] << 2) >> 2];\n     if (($i$839 | 0) < ($$lcssa76 | 0)) $i$839 = $i$839 + 1 | 0; else break;\n    }\n   }\n   if (($$lcssa76 | 0) >= 1) {\n    $i$937 = 1;\n    while (1) {\n     HEAP32[$reg + ($i$937 << 2) >> 2] = HEAP32[$elp + ($$pre$phi$lcssaZ2D * 72 | 0) + ($i$937 << 2) >> 2];\n     if (($i$937 | 0) < ($$lcssa76 | 0)) $i$937 = $i$937 + 1 | 0; else break;\n    }\n   }\n   $154 = ($$lcssa76 | 0) < 1;\n   $count$036 = 0;\n   $i$1035 = 1;\n   while (1) {\n    if ($154) $q$4$lcssa = 1; else {\n     $j$232 = 1;\n     $q$433 = 1;\n     while (1) {\n      $155 = $reg + ($j$232 << 2) | 0;\n      $156 = HEAP32[$155 >> 2] | 0;\n      if (($156 | 0) == -1) $q$5 = $q$433; else {\n       $159 = ($156 + $j$232 | 0) % ($n$0 | 0) | 0;\n       HEAP32[$155 >> 2] = $159;\n       $q$5 = HEAP32[$alpha_to$0 + ($159 << 2) >> 2] ^ $q$433;\n      }\n      if (($j$232 | 0) < ($$lcssa76 | 0)) {\n       $j$232 = $j$232 + 1 | 0;\n       $q$433 = $q$5;\n      } else {\n       $q$4$lcssa = $q$5;\n       break;\n      }\n     }\n    }\n    if (!$q$4$lcssa) {\n     HEAP32[$loc + ($count$036 << 2) >> 2] = $n$0 - $i$1035;\n     $count$1 = $count$036 + 1 | 0;\n    } else $count$1 = $count$036;\n    $i$1035 = $i$1035 + 1 | 0;\n    if (($n$0 | 0) < ($i$1035 | 0)) {\n     $count$1$lcssa = $count$1;\n     break;\n    } else $count$036 = $count$1;\n   }\n   if (($count$1$lcssa | 0) != ($$lcssa76 | 0)) {\n    $$0 = -1;\n    break;\n   }\n   if (($$lcssa76 | 0) > 0) {\n    $i$1130 = 0;\n    do {\n     $175 = $recd$0 + (HEAP32[$loc + ($i$1130 << 2) >> 2] | 0) | 0;\n     HEAP8[$175 >> 0] = HEAPU8[$175 >> 0] ^ 1;\n     $i$1130 = $i$1130 + 1 | 0;\n    } while (($i$1130 | 0) < ($$lcssa76 | 0));\n    $u$1 = $$pre$phi$lcssaZ2D;\n   } else $u$1 = $$pre$phi$lcssaZ2D;\n  } else $u$1 = 0;\n  $182 = $out_p;\n  HEAP32[$182 >> 2] = 0;\n  HEAP32[$182 + 4 >> 2] = 0;\n  $190 = 1;\n  $191 = 0;\n  $194 = 0;\n  $195 = 0;\n  $i$1228 = $length$0 - $k$1 | 0;\n  while (1) {\n   $192 = ___muldi3(HEAPU8[$recd$0 + $i$1228 >> 0] | 0, 0, $190 | 0, $191 | 0) | 0;\n   $194 = _i64Add($192 | 0, tempRet0 | 0, $194 | 0, $195 | 0) | 0;\n   $195 = tempRet0;\n   $198 = $out_p;\n   HEAP32[$198 >> 2] = $194;\n   HEAP32[$198 + 4 >> 2] = $195;\n   $190 = _bitshift64Shl($190 | 0, $191 | 0, 1) | 0;\n   $i$1228 = $i$1228 + 1 | 0;\n   if (($i$1228 | 0) >= ($length$0 | 0)) break; else $191 = tempRet0;\n  }\n  if ($28) $$0 = HEAP32[$l + ($u$1 << 2) >> 2] | 0; else $$0 = 0;\n } while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_typeINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) {\n $first = $first | 0;\n $last = $last | 0;\n $db = $db | 0;\n var $$0$i$i$i = 0, $$0$i$i$i11 = 0, $$0$i$i$i6 = 0, $$02 = 0, $0 = 0, $1 = 0, $103 = 0, $105 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0, $119 = 0, $122 = 0, $125 = 0, $126 = 0, $132 = 0, $134 = 0, $138 = 0, $147 = 0, $148 = 0, $15 = 0, $151 = 0, $152 = 0, $155 = 0, $157 = 0, $16 = 0, $160 = 0, $161 = 0, $163 = 0, $17 = 0, $170 = 0, $172 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0, $186 = 0, $189 = 0, $192 = 0, $193 = 0, $199 = 0, $2 = 0, $201 = 0, $22 = 0, $27 = 0, $3 = 0, $31 = 0, $32 = 0, $34 = 0, $4 = 0, $41 = 0, $43 = 0, $5 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $57 = 0, $60 = 0, $63 = 0, $64 = 0, $70 = 0, $72 = 0, $77 = 0, $78 = 0, $79 = 0, $83 = 0, $87 = 0, $89 = 0, $9 = 0, $93 = 0, $94 = 0, $96 = 0, $__v$i$i10 = 0, $k1$015 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 96 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $__v$i$i10 = sp + 72 | 0;\n $0 = sp + 56 | 0;\n $1 = sp + 48 | 0;\n $2 = sp + 32 | 0;\n $3 = sp + 24 | 0;\n $4 = sp + 8 | 0;\n $5 = sp;\n L1 : do if (($first | 0) == ($last | 0)) $$02 = $first; else switch (HEAP8[$first >> 0] | 0) {\n case 84:\n  {\n   $9 = $db + 4 | 0;\n   $15 = ((HEAP32[$9 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0;\n   $16 = __ZN10__cxxabiv112_GLOBAL__N_120parse_template_paramINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;\n   $17 = HEAP32[$9 >> 2] | 0;\n   $22 = ($17 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0;\n   if (!(($16 | 0) != ($first | 0) & ($22 | 0) == ($15 + 1 | 0))) {\n    if (($22 | 0) == ($15 | 0)) {\n     $$02 = $first;\n     break L1;\n    } else {\n     $77 = $17;\n     $k1$015 = $22;\n    }\n    while (1) {\n     $79 = $77;\n     $77 = $77 + -24 | 0;\n     do {\n      $78 = $79 + -24 | 0;\n      HEAP32[$9 >> 2] = $78;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($78);\n      $79 = HEAP32[$9 >> 2] | 0;\n     } while (($79 | 0) != ($77 | 0));\n     $k1$015 = $k1$015 + -1 | 0;\n     if (($k1$015 | 0) == ($15 | 0)) {\n      $$02 = $first;\n      break L1;\n     }\n    }\n   }\n   $27 = $db + 16 | 0;\n   HEAP32[$1 >> 2] = HEAP32[$db + 12 >> 2];\n   __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($0, $17 + -24 | 0, $1);\n   $31 = $db + 20 | 0;\n   $32 = HEAP32[$31 >> 2] | 0;\n   $34 = HEAP32[$db + 24 >> 2] | 0;\n   if ($32 >>> 0 < $34 >>> 0) {\n    HEAP32[$32 + 12 >> 2] = HEAP32[$0 + 12 >> 2];\n    HEAP32[$32 >> 2] = HEAP32[$0 >> 2];\n    $41 = $0 + 4 | 0;\n    HEAP32[$32 + 4 >> 2] = HEAP32[$41 >> 2];\n    $43 = $0 + 8 | 0;\n    HEAP32[$32 + 8 >> 2] = HEAP32[$43 >> 2];\n    HEAP32[$43 >> 2] = 0;\n    HEAP32[$41 >> 2] = 0;\n    HEAP32[$0 >> 2] = 0;\n    HEAP32[$31 >> 2] = (HEAP32[$31 >> 2] | 0) + 16;\n   } else {\n    $51 = HEAP32[$27 >> 2] | 0;\n    $52 = $32 - $51 | 0;\n    $53 = $52 >> 4;\n    $54 = $53 + 1 | 0;\n    if (($52 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($27);\n    $57 = $34 - $51 | 0;\n    if ($57 >> 4 >>> 0 < 1073741823) {\n     $60 = $57 >> 3;\n     $$0$i$i$i = $60 >>> 0 < $54 >>> 0 ? $54 : $60;\n    } else $$0$i$i$i = 2147483647;\n    __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i10, $$0$i$i$i, $53, $db + 28 | 0);\n    $63 = $__v$i$i10 + 8 | 0;\n    $64 = HEAP32[$63 >> 2] | 0;\n    HEAP32[$64 + 12 >> 2] = HEAP32[$0 + 12 >> 2];\n    HEAP32[$64 >> 2] = HEAP32[$0 >> 2];\n    $70 = $0 + 4 | 0;\n    HEAP32[$64 + 4 >> 2] = HEAP32[$70 >> 2];\n    $72 = $0 + 8 | 0;\n    HEAP32[$64 + 8 >> 2] = HEAP32[$72 >> 2];\n    HEAP32[$72 >> 2] = 0;\n    HEAP32[$70 >> 2] = 0;\n    HEAP32[$0 >> 2] = 0;\n    HEAP32[$63 >> 2] = $64 + 16;\n    __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($27, $__v$i$i10);\n    __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i10);\n   }\n   __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($0);\n   $$02 = $16;\n   break L1;\n   break;\n  }\n case 68:\n  {\n   $83 = __ZN10__cxxabiv112_GLOBAL__N_114parse_decltypeINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;\n   if (($83 | 0) == ($first | 0)) {\n    $$02 = $first;\n    break L1;\n   }\n   $87 = HEAP32[$db + 4 >> 2] | 0;\n   if ((HEAP32[$db >> 2] | 0) == ($87 | 0)) {\n    $$02 = $first;\n    break L1;\n   }\n   $89 = $db + 16 | 0;\n   HEAP32[$3 >> 2] = HEAP32[$db + 12 >> 2];\n   __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($2, $87 + -24 | 0, $3);\n   $93 = $db + 20 | 0;\n   $94 = HEAP32[$93 >> 2] | 0;\n   $96 = HEAP32[$db + 24 >> 2] | 0;\n   if ($94 >>> 0 < $96 >>> 0) {\n    HEAP32[$94 + 12 >> 2] = HEAP32[$2 + 12 >> 2];\n    HEAP32[$94 >> 2] = HEAP32[$2 >> 2];\n    $103 = $2 + 4 | 0;\n    HEAP32[$94 + 4 >> 2] = HEAP32[$103 >> 2];\n    $105 = $2 + 8 | 0;\n    HEAP32[$94 + 8 >> 2] = HEAP32[$105 >> 2];\n    HEAP32[$105 >> 2] = 0;\n    HEAP32[$103 >> 2] = 0;\n    HEAP32[$2 >> 2] = 0;\n    HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + 16;\n   } else {\n    $113 = HEAP32[$89 >> 2] | 0;\n    $114 = $94 - $113 | 0;\n    $115 = $114 >> 4;\n    $116 = $115 + 1 | 0;\n    if (($114 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($89);\n    $119 = $96 - $113 | 0;\n    if ($119 >> 4 >>> 0 < 1073741823) {\n     $122 = $119 >> 3;\n     $$0$i$i$i6 = $122 >>> 0 < $116 >>> 0 ? $116 : $122;\n    } else $$0$i$i$i6 = 2147483647;\n    __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i10, $$0$i$i$i6, $115, $db + 28 | 0);\n    $125 = $__v$i$i10 + 8 | 0;\n    $126 = HEAP32[$125 >> 2] | 0;\n    HEAP32[$126 + 12 >> 2] = HEAP32[$2 + 12 >> 2];\n    HEAP32[$126 >> 2] = HEAP32[$2 >> 2];\n    $132 = $2 + 4 | 0;\n    HEAP32[$126 + 4 >> 2] = HEAP32[$132 >> 2];\n    $134 = $2 + 8 | 0;\n    HEAP32[$126 + 8 >> 2] = HEAP32[$134 >> 2];\n    HEAP32[$134 >> 2] = 0;\n    HEAP32[$132 >> 2] = 0;\n    HEAP32[$2 >> 2] = 0;\n    HEAP32[$125 >> 2] = $126 + 16;\n    __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($89, $__v$i$i10);\n    __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i10);\n   }\n   __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($2);\n   $$02 = $83;\n   break L1;\n   break;\n  }\n case 83:\n  {\n   $138 = __ZN10__cxxabiv112_GLOBAL__N_118parse_substitutionINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;\n   if (($138 | 0) != ($first | 0)) {\n    $$02 = $138;\n    break L1;\n   }\n   if (($last - $first | 0) <= 2) {\n    $$02 = $first;\n    break L1;\n   }\n   if ((HEAP8[$first + 1 >> 0] | 0) != 116) {\n    $$02 = $first;\n    break L1;\n   }\n   $147 = $first + 2 | 0;\n   $148 = __ZN10__cxxabiv112_GLOBAL__N_122parse_unqualified_nameINS0_2DbEEEPKcS4_S4_RT_($147, $last, $db) | 0;\n   if (($148 | 0) == ($147 | 0)) {\n    $$02 = $first;\n    break L1;\n   }\n   $151 = $db + 4 | 0;\n   $152 = HEAP32[$151 >> 2] | 0;\n   if ((HEAP32[$db >> 2] | 0) == ($152 | 0)) {\n    $$02 = $first;\n    break L1;\n   }\n   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($152 + -24 | 0, 0, 12896) | 0;\n   $155 = $db + 16 | 0;\n   $157 = (HEAP32[$151 >> 2] | 0) + -24 | 0;\n   HEAP32[$5 >> 2] = HEAP32[$db + 12 >> 2];\n   __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($4, $157, $5);\n   $160 = $db + 20 | 0;\n   $161 = HEAP32[$160 >> 2] | 0;\n   $163 = HEAP32[$db + 24 >> 2] | 0;\n   if ($161 >>> 0 < $163 >>> 0) {\n    HEAP32[$161 + 12 >> 2] = HEAP32[$4 + 12 >> 2];\n    HEAP32[$161 >> 2] = HEAP32[$4 >> 2];\n    $170 = $4 + 4 | 0;\n    HEAP32[$161 + 4 >> 2] = HEAP32[$170 >> 2];\n    $172 = $4 + 8 | 0;\n    HEAP32[$161 + 8 >> 2] = HEAP32[$172 >> 2];\n    HEAP32[$172 >> 2] = 0;\n    HEAP32[$170 >> 2] = 0;\n    HEAP32[$4 >> 2] = 0;\n    HEAP32[$160 >> 2] = (HEAP32[$160 >> 2] | 0) + 16;\n   } else {\n    $180 = HEAP32[$155 >> 2] | 0;\n    $181 = $161 - $180 | 0;\n    $182 = $181 >> 4;\n    $183 = $182 + 1 | 0;\n    if (($181 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($155);\n    $186 = $163 - $180 | 0;\n    if ($186 >> 4 >>> 0 < 1073741823) {\n     $189 = $186 >> 3;\n     $$0$i$i$i11 = $189 >>> 0 < $183 >>> 0 ? $183 : $189;\n    } else $$0$i$i$i11 = 2147483647;\n    __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i10, $$0$i$i$i11, $182, $db + 28 | 0);\n    $192 = $__v$i$i10 + 8 | 0;\n    $193 = HEAP32[$192 >> 2] | 0;\n    HEAP32[$193 + 12 >> 2] = HEAP32[$4 + 12 >> 2];\n    HEAP32[$193 >> 2] = HEAP32[$4 >> 2];\n    $199 = $4 + 4 | 0;\n    HEAP32[$193 + 4 >> 2] = HEAP32[$199 >> 2];\n    $201 = $4 + 8 | 0;\n    HEAP32[$193 + 8 >> 2] = HEAP32[$201 >> 2];\n    HEAP32[$201 >> 2] = 0;\n    HEAP32[$199 >> 2] = 0;\n    HEAP32[$4 >> 2] = 0;\n    HEAP32[$192 >> 2] = $193 + 16;\n    __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($155, $__v$i$i10);\n    __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i10);\n   }\n   __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($4);\n   $$02 = $148;\n   break L1;\n   break;\n  }\n default:\n  {\n   $$02 = $first;\n   break L1;\n  }\n } while (0);\n STACKTOP = sp;\n return $$02 | 0;\n}\n\nfunction _arDetectMarker2($xsize, $ysize, $labelInfo, $imageProcMode, $areaMax, $areaMin, $squareFitThresh, $markerInfo2, $marker2_num) {\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $labelInfo = $labelInfo | 0;\n $imageProcMode = $imageProcMode | 0;\n $areaMax = $areaMax | 0;\n $areaMin = $areaMin | 0;\n $squareFitThresh = +$squareFitThresh;\n $markerInfo2 = $markerInfo2 | 0;\n $marker2_num = $marker2_num | 0;\n var $$0 = 0, $$01 = 0, $$02 = 0, $$03 = 0, $$lcssa = 0, $$lcssa15 = 0, $$lcssa16 = 0, $$lcssa17 = 0, $$ph = 0, $$pre10 = 0, $$pre9 = 0, $0 = 0, $115 = 0, $12 = 0, $120 = 0, $129 = 0, $13 = 0, $130 = 0, $132 = 0, $133 = 0.0, $136 = 0.0, $141 = 0.0, $143 = 0.0, $144 = 0, $145 = 0, $146 = 0, $16 = 0, $160 = 0, $164 = 0, $167 = 0, $171 = 0, $174 = 0, $177 = 0, $180 = 0, $183 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $40 = 0, $42 = 0, $46 = 0, $47 = 0, $5 = 0, $50 = 0, $52 = 0, $53 = 0, $59 = 0.0, $6 = 0, $66 = 0, $68 = 0, $7 = 0, $74 = 0, $8 = 0, $90 = 0, $dmax$0$i38 = 0, $i$0$i39 = 0, $i$0$v1$0$i = 0, $i$044 = 0, $i$134 = 0, $i$227 = 0, $i$321 = 0, $j$030 = 0, $j$1 = 0, $j$1$in24 = 0, $j$1$in24$phi = 0, $j$123 = 0, $j$125 = 0, $j$218 = 0, $pm$019 = 0, $v1$0$i$lcssa = 0, $v1$0$i37 = 0, $vertex$sroa$12$0$i = 0, $vertex$sroa$4$0$i = 0, $vertex$sroa$8$0$i = 0, $wv1$i = 0, $wv2$i = 0, $wvnum1$i = 0, $wvnum2$i = 0, label = 0, sp = 0, $i$134$looptemp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 96 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $wv1$i = sp + 56 | 0;\n $wvnum1$i = sp + 48 | 0;\n $wv2$i = sp + 8 | 0;\n $wvnum2$i = sp;\n $0 = ($imageProcMode | 0) == 1;\n if ($0) {\n  $$0 = ($xsize | 0) / 2 | 0;\n  $$01 = ($ysize | 0) / 2 | 0;\n  $$02 = ($areaMax | 0) / 4 | 0;\n  $$03 = ($areaMin | 0) / 4 | 0;\n } else {\n  $$0 = $xsize;\n  $$01 = $ysize;\n  $$02 = $areaMax;\n  $$03 = $areaMin;\n }\n HEAP32[$marker2_num >> 2] = 0;\n $5 = $labelInfo + 8 | 0;\n $6 = $$0 + -2 | 0;\n $7 = $$01 + -2 | 0;\n $8 = $labelInfo + 1179664 | 0;\n L4 : do if ((HEAP32[$5 >> 2] | 0) > 0) {\n  $i$044 = 0;\n  while (1) {\n   $12 = $labelInfo + 12 + ($i$044 << 2) | 0;\n   $13 = HEAP32[$12 >> 2] | 0;\n   L7 : do if (!(($13 | 0) < ($$03 | 0) | ($13 | 0) > ($$02 | 0))) {\n    $16 = $labelInfo + 131084 + ($i$044 << 4) | 0;\n    if ((HEAP32[$16 >> 2] | 0) != 1) if ((HEAP32[$labelInfo + 131084 + ($i$044 << 4) + 4 >> 2] | 0) != ($6 | 0)) if ((HEAP32[$labelInfo + 131084 + ($i$044 << 4) + 8 >> 2] | 0) != 1) if ((HEAP32[$labelInfo + 131084 + ($i$044 << 4) + 12 >> 2] | 0) != ($7 | 0)) if ((_arGetContour(HEAP32[$labelInfo >> 2] | 0, $$0, 0, $8, $i$044 + 1 | 0, $16, $markerInfo2 + ((HEAP32[$marker2_num >> 2] | 0) * 80048 | 0) | 0) | 0) >= 0) {\n     $34 = HEAP32[$12 >> 2] | 0;\n     $35 = HEAP32[$marker2_num >> 2] | 0;\n     $36 = $markerInfo2 + ($35 * 80048 | 0) + 28 | 0;\n     $37 = HEAP32[$36 >> 2] | 0;\n     $38 = $markerInfo2 + ($35 * 80048 | 0) + 40028 | 0;\n     $39 = HEAP32[$38 >> 2] | 0;\n     $40 = $markerInfo2 + ($35 * 80048 | 0) + 24 | 0;\n     $42 = (HEAP32[$40 >> 2] | 0) + -1 | 0;\n     if (($42 | 0) > 1) {\n      $dmax$0$i38 = 0;\n      $i$0$i39 = 1;\n      $v1$0$i37 = 0;\n      while (1) {\n       $46 = (HEAP32[$markerInfo2 + ($35 * 80048 | 0) + 28 + ($i$0$i39 << 2) >> 2] | 0) - $37 | 0;\n       $47 = Math_imul($46, $46) | 0;\n       $50 = (HEAP32[$markerInfo2 + ($35 * 80048 | 0) + 40028 + ($i$0$i39 << 2) >> 2] | 0) - $39 | 0;\n       $52 = (Math_imul($50, $50) | 0) + $47 | 0;\n       $53 = ($52 | 0) > ($dmax$0$i38 | 0);\n       $i$0$v1$0$i = $53 ? $i$0$i39 : $v1$0$i37;\n       $i$0$i39 = $i$0$i39 + 1 | 0;\n       if (($i$0$i39 | 0) >= ($42 | 0)) {\n        $v1$0$i$lcssa = $i$0$v1$0$i;\n        break;\n       } else {\n        $dmax$0$i38 = $53 ? $52 : $dmax$0$i38;\n        $v1$0$i37 = $i$0$v1$0$i;\n       }\n      }\n     } else $v1$0$i$lcssa = 0;\n     $59 = +($34 | 0) / .75 * .01 * $squareFitThresh;\n     HEAP32[$wvnum1$i >> 2] = 0;\n     HEAP32[$wvnum2$i >> 2] = 0;\n     L18 : do if ((_get_vertex($36, $38, 0, $v1$0$i$lcssa, $59, $wv1$i, $wvnum1$i) | 0) >= 0) if ((_get_vertex($36, $38, $v1$0$i$lcssa, (HEAP32[$40 >> 2] | 0) + -1 | 0, $59, $wv2$i, $wvnum2$i) | 0) >= 0) {\n      $66 = HEAP32[$wvnum1$i >> 2] | 0;\n      $68 = HEAP32[$wvnum2$i >> 2] | 0;\n      do if (($66 | 0) == 1 & ($68 | 0) == 1) {\n       $vertex$sroa$12$0$i = HEAP32[$wv2$i >> 2] | 0;\n       $vertex$sroa$4$0$i = HEAP32[$wv1$i >> 2] | 0;\n       $vertex$sroa$8$0$i = $v1$0$i$lcssa;\n      } else {\n       if (($66 | 0) > 1 & ($68 | 0) == 0) {\n        $74 = ($v1$0$i$lcssa | 0) / 2 | 0;\n        HEAP32[$wvnum2$i >> 2] = 0;\n        HEAP32[$wvnum1$i >> 2] = 0;\n        if ((_get_vertex($36, $38, 0, $74, $59, $wv1$i, $wvnum1$i) | 0) < 0) break L18;\n        if ((_get_vertex($36, $38, $74, $v1$0$i$lcssa, $59, $wv2$i, $wvnum2$i) | 0) < 0) break L18;\n        if (!((HEAP32[$wvnum1$i >> 2] | 0) == 1 & (HEAP32[$wvnum2$i >> 2] | 0) == 1)) break L18;\n        $vertex$sroa$12$0$i = $v1$0$i$lcssa;\n        $vertex$sroa$4$0$i = HEAP32[$wv1$i >> 2] | 0;\n        $vertex$sroa$8$0$i = HEAP32[$wv2$i >> 2] | 0;\n        break;\n       }\n       if (!(($66 | 0) == 0 & ($68 | 0) > 1)) break L18;\n       $90 = ($v1$0$i$lcssa + -1 + (HEAP32[$40 >> 2] | 0) | 0) / 2 | 0;\n       HEAP32[$wvnum2$i >> 2] = 0;\n       HEAP32[$wvnum1$i >> 2] = 0;\n       if ((_get_vertex($36, $38, $v1$0$i$lcssa, $90, $59, $wv1$i, $wvnum1$i) | 0) < 0) break L18;\n       if ((_get_vertex($36, $38, $90, (HEAP32[$40 >> 2] | 0) + -1 | 0, $59, $wv2$i, $wvnum2$i) | 0) < 0) break L18;\n       if (!((HEAP32[$wvnum1$i >> 2] | 0) == 1 & (HEAP32[$wvnum2$i >> 2] | 0) == 1)) break L18;\n       $vertex$sroa$12$0$i = HEAP32[$wv2$i >> 2] | 0;\n       $vertex$sroa$4$0$i = $v1$0$i$lcssa;\n       $vertex$sroa$8$0$i = HEAP32[$wv1$i >> 2] | 0;\n      } while (0);\n      HEAP32[$markerInfo2 + ($35 * 80048 | 0) + 80028 >> 2] = 0;\n      HEAP32[$markerInfo2 + ($35 * 80048 | 0) + 80032 >> 2] = $vertex$sroa$4$0$i;\n      HEAP32[$markerInfo2 + ($35 * 80048 | 0) + 80036 >> 2] = $vertex$sroa$8$0$i;\n      HEAP32[$markerInfo2 + ($35 * 80048 | 0) + 80040 >> 2] = $vertex$sroa$12$0$i;\n      HEAP32[$markerInfo2 + ($35 * 80048 | 0) + 80044 >> 2] = (HEAP32[$40 >> 2] | 0) + -1;\n      HEAP32[$markerInfo2 + ((HEAP32[$marker2_num >> 2] | 0) * 80048 | 0) >> 2] = HEAP32[$12 >> 2];\n      $115 = HEAP32[$marker2_num >> 2] | 0;\n      HEAPF64[$markerInfo2 + ($115 * 80048 | 0) + 8 >> 3] = +HEAPF64[$labelInfo + 655376 + ($i$044 << 4) >> 3];\n      HEAPF64[$markerInfo2 + ($115 * 80048 | 0) + 16 >> 3] = +HEAPF64[$labelInfo + 655376 + ($i$044 << 4) + 8 >> 3];\n      $120 = $115 + 1 | 0;\n      HEAP32[$marker2_num >> 2] = $120;\n      if (($120 | 0) == 60) {\n       $$ph = 60;\n       break L4;\n      } else break L7;\n     } while (0);\n    }\n   } while (0);\n   $i$044 = $i$044 + 1 | 0;\n   if (($i$044 | 0) >= (HEAP32[$5 >> 2] | 0)) {\n    label = 4;\n    break;\n   }\n  }\n } else label = 4; while (0);\n if ((label | 0) == 4) $$ph = HEAP32[$marker2_num >> 2] | 0;\n if (($$ph | 0) > 0) {\n  $132 = $$ph;\n  $i$134 = 0;\n  while (1) {\n   $i$134$looptemp = $i$134;\n   $i$134 = $i$134 + 1 | 0;\n   $129 = $markerInfo2 + ($i$134$looptemp * 80048 | 0) + 16 | 0;\n   $130 = $markerInfo2 + ($i$134$looptemp * 80048 | 0) | 0;\n   if (($i$134 | 0) < ($132 | 0)) {\n    $133 = +HEAPF64[$markerInfo2 + ($i$134$looptemp * 80048 | 0) + 8 >> 3];\n    $j$030 = $i$134;\n    do {\n     $136 = $133 - +HEAPF64[$markerInfo2 + ($j$030 * 80048 | 0) + 8 >> 3];\n     $141 = +HEAPF64[$129 >> 3] - +HEAPF64[$markerInfo2 + ($j$030 * 80048 | 0) + 16 >> 3];\n     $143 = $136 * $136 + $141 * $141;\n     $144 = HEAP32[$130 >> 2] | 0;\n     $145 = $markerInfo2 + ($j$030 * 80048 | 0) | 0;\n     $146 = HEAP32[$145 >> 2] | 0;\n     if (($144 | 0) > ($146 | 0)) {\n      if ($143 < +(($144 | 0) / 4 | 0 | 0)) HEAP32[$145 >> 2] = 0;\n     } else if ($143 < +(($146 | 0) / 4 | 0 | 0)) HEAP32[$130 >> 2] = 0;\n     $j$030 = $j$030 + 1 | 0;\n     $$pre10 = HEAP32[$marker2_num >> 2] | 0;\n    } while (($j$030 | 0) < ($$pre10 | 0));\n    $$lcssa16 = $$pre10;\n   } else $$lcssa16 = $132;\n   if (($i$134 | 0) >= ($$lcssa16 | 0)) {\n    $$lcssa17 = $$lcssa16;\n    break;\n   } else $132 = $$lcssa16;\n  }\n } else $$lcssa17 = $$ph;\n if (($$lcssa17 | 0) > 0) {\n  $160 = $$lcssa17;\n  $i$227 = 0;\n  while (1) {\n   if (!(HEAP32[$markerInfo2 + ($i$227 * 80048 | 0) >> 2] | 0)) {\n    $j$123 = $i$227 + 1 | 0;\n    if (($j$123 | 0) < ($160 | 0)) {\n     $j$1$in24 = $i$227;\n     $j$125 = $j$123;\n     while (1) {\n      _memcpy($markerInfo2 + ($j$1$in24 * 80048 | 0) | 0, $markerInfo2 + ($j$125 * 80048 | 0) | 0, 80048) | 0;\n      $$pre9 = HEAP32[$marker2_num >> 2] | 0;\n      $j$1 = $j$125 + 1 | 0;\n      if (($j$1 | 0) < ($$pre9 | 0)) {\n       $j$1$in24$phi = $j$125;\n       $j$125 = $j$1;\n       $j$1$in24 = $j$1$in24$phi;\n      } else {\n       $$lcssa = $$pre9;\n       break;\n      }\n     }\n    } else $$lcssa = $160;\n    $164 = $$lcssa + -1 | 0;\n    HEAP32[$marker2_num >> 2] = $164;\n    $167 = $164;\n   } else $167 = $160;\n   $i$227 = $i$227 + 1 | 0;\n   if (($i$227 | 0) >= ($167 | 0)) {\n    $$lcssa15 = $167;\n    break;\n   } else $160 = $167;\n  }\n } else $$lcssa15 = $$lcssa17;\n if ($0 & ($$lcssa15 | 0) > 0) {\n  $i$321 = 0;\n  $pm$019 = $markerInfo2;\n  while (1) {\n   HEAP32[$pm$019 >> 2] = HEAP32[$pm$019 >> 2] << 2;\n   $171 = $pm$019 + 8 | 0;\n   HEAPF64[$171 >> 3] = +HEAPF64[$171 >> 3] * 2.0;\n   $174 = $pm$019 + 16 | 0;\n   HEAPF64[$174 >> 3] = +HEAPF64[$174 >> 3] * 2.0;\n   $177 = $pm$019 + 24 | 0;\n   if ((HEAP32[$177 >> 2] | 0) > 0) {\n    $j$218 = 0;\n    do {\n     $180 = $pm$019 + 28 + ($j$218 << 2) | 0;\n     HEAP32[$180 >> 2] = HEAP32[$180 >> 2] << 1;\n     $183 = $pm$019 + 40028 + ($j$218 << 2) | 0;\n     HEAP32[$183 >> 2] = HEAP32[$183 >> 2] << 1;\n     $j$218 = $j$218 + 1 | 0;\n    } while (($j$218 | 0) < (HEAP32[$177 >> 2] | 0));\n   }\n   $i$321 = $i$321 + 1 | 0;\n   if (($i$321 | 0) >= (HEAP32[$marker2_num >> 2] | 0)) break; else $pm$019 = $pm$019 + 80048 | 0;\n  }\n }\n STACKTOP = sp;\n return 0;\n}\n\nfunction _pattern_match($pattHandle, $mode, $data, $size, $code, $dir, $cf) {\n $pattHandle = $pattHandle | 0;\n $mode = $mode | 0;\n $data = $data | 0;\n $size = $size | 0;\n $code = $code | 0;\n $dir = $dir | 0;\n $cf = $cf | 0;\n var $$0 = 0, $$lcssa103 = 0, $$lcssa108 = 0, $1 = 0, $100 = 0, $101 = 0, $102 = 0, $105 = 0, $11 = 0, $111 = 0, $118 = 0.0, $119 = 0, $14 = 0, $2 = 0, $20 = 0, $23 = 0, $26 = 0.0, $31 = 0, $33 = 0, $34 = 0, $36 = 0, $37 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $45 = 0, $51 = 0, $58 = 0.0, $59 = 0, $63 = 0, $65 = 0, $72 = 0, $75 = 0, $81 = 0, $84 = 0, $87 = 0.0, $91 = 0, $93 = 0, $94 = 0, $96 = 0, $97 = 0, $ave$0$lcssa = 0, $ave$055 = 0, $ave$1$lcssa = 0, $ave$183 = 0, $i$056 = 0, $i$150 = 0, $i$235 = 0, $i$384 = 0, $i$478 = 0, $i$560 = 0, $j$038 = 0, $j$166 = 0, $k$042 = 0, $k$1 = 0, $k$1$in = 0, $k$1$lcssa = 0, $k$1102 = 0, $k$270 = 0, $k$3 = 0, $k$3$in = 0, $k$3$lcssa = 0, $k$3106 = 0, $l$043 = 0, $l$171 = 0, $max$0$lcssa = 0.0, $max$044 = 0.0, $max$139 = 0.0, $max$2 = 0.0, $max$3 = 0.0, $max$4$lcssa = 0.0, $max$472 = 0.0, $max$567 = 0.0, $max$6 = 0.0, $max$7 = 0.0, $res1$0$lcssa = 0, $res1$040 = 0, $res1$136 = 0, $res1$2 = 0, $res1$3 = 0, $res1$4$lcssa = 0, $res1$468 = 0, $res1$564 = 0, $res1$6 = 0, $res1$7 = 0, $res2$0$lcssa = 0, $res2$041 = 0, $res2$137 = 0, $res2$2 = 0, $res2$3 = 0, $res2$4$lcssa = 0, $res2$469 = 0, $res2$565 = 0, $res2$6 = 0, $res2$7 = 0, $sum$0$lcssa = 0.0, $sum$049 = 0, $sum$1$lcssa = 0, $sum$134 = 0, $sum$2$lcssa = 0.0, $sum$277 = 0, $sum$3$lcssa = 0, $sum$359 = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer1 = sp + 8 | 0;\n $vararg_buffer = sp;\n L1 : do if (!$pattHandle) {\n  HEAP32[$code >> 2] = 0;\n  HEAP32[$dir >> 2] = 0;\n  HEAPF64[$cf >> 3] = -1.0;\n  $$0 = -1;\n } else switch ($mode | 0) {\n case 0:\n  {\n   $1 = Math_imul($size, $size) | 0;\n   $2 = $1 * 3 | 0;\n   $4 = _malloc($1 * 12 | 0) | 0;\n   if (!$4) {\n    _arLog(3, 5471, $vararg_buffer);\n    _exit(1);\n   }\n   if (!$1) $ave$0$lcssa = 0; else {\n    $ave$055 = 0;\n    $i$056 = 0;\n    while (1) {\n     $11 = ((HEAPU8[$data + $i$056 >> 0] | 0) ^ 255) + $ave$055 | 0;\n     $i$056 = $i$056 + 1 | 0;\n     if (($i$056 | 0) >= ($2 | 0)) {\n      $ave$0$lcssa = $11;\n      break;\n     } else $ave$055 = $11;\n    }\n   }\n   $14 = ($ave$0$lcssa | 0) / ($2 | 0) | 0;\n   if (!$1) $sum$0$lcssa = 0.0; else {\n    $i$150 = 0;\n    $sum$049 = 0;\n    while (1) {\n     $20 = ((HEAPU8[$data + $i$150 >> 0] | 0) ^ 255) - $14 | 0;\n     HEAP32[$4 + ($i$150 << 2) >> 2] = $20;\n     $23 = (Math_imul($20, $20) | 0) + $sum$049 | 0;\n     $i$150 = $i$150 + 1 | 0;\n     if (($i$150 | 0) >= ($2 | 0)) {\n      $$lcssa103 = $23;\n      break;\n     } else $sum$049 = $23;\n    }\n    $sum$0$lcssa = +($$lcssa103 | 0);\n   }\n   $26 = +Math_sqrt(+$sum$0$lcssa);\n   if ($26 / (+($size | 0) * 1.7320508) < 15.0) {\n    HEAP32[$code >> 2] = 0;\n    HEAP32[$dir >> 2] = 0;\n    HEAPF64[$cf >> 3] = -1.0;\n    _free($4);\n    $$0 = -2;\n    break L1;\n   }\n   $31 = HEAP32[$pattHandle >> 2] | 0;\n   $33 = $pattHandle + 12 | 0;\n   $34 = $pattHandle + 16 | 0;\n   if (($31 | 0) > 0) {\n    $36 = HEAP32[$pattHandle + 8 >> 2] | 0;\n    $37 = ($1 | 0) == 0;\n    $k$042 = -1;\n    $l$043 = 0;\n    $max$044 = 0.0;\n    $res1$040 = -1;\n    $res2$041 = -1;\n    while (1) {\n     $k$1$in = $k$042;\n     L25 : while (1) {\n      $k$1 = $k$1$in + 1 | 0;\n      switch (HEAP32[$36 + ($k$1 << 2) >> 2] | 0) {\n      case 0:\n       {\n        $k$1$in = $k$1;\n        break;\n       }\n      case 2:\n       {\n        $k$1102 = $k$1;\n        $max$3 = $max$044;\n        $res1$3 = $res1$040;\n        $res2$3 = $res2$041;\n        break L25;\n        break;\n       }\n      default:\n       {\n        $k$1$lcssa = $k$1;\n        label = 17;\n        break L25;\n       }\n      }\n     }\n     if ((label | 0) == 17) {\n      label = 0;\n      $40 = $k$1$lcssa << 2;\n      $41 = HEAP32[$34 >> 2] | 0;\n      $j$038 = 0;\n      $max$139 = $max$044;\n      $res1$136 = $res1$040;\n      $res2$137 = $res2$041;\n      while (1) {\n       $42 = $j$038 + $40 | 0;\n       if ($37) $sum$1$lcssa = 0; else {\n        $45 = HEAP32[(HEAP32[$33 >> 2] | 0) + ($42 << 2) >> 2] | 0;\n        $i$235 = 0;\n        $sum$134 = 0;\n        while (1) {\n         $51 = (Math_imul(HEAP32[$45 + ($i$235 << 2) >> 2] | 0, HEAP32[$4 + ($i$235 << 2) >> 2] | 0) | 0) + $sum$134 | 0;\n         $i$235 = $i$235 + 1 | 0;\n         if (($i$235 | 0) >= ($2 | 0)) {\n          $sum$1$lcssa = $51;\n          break;\n         } else $sum$134 = $51;\n        }\n       }\n       $58 = +($sum$1$lcssa | 0) / +HEAPF64[$41 + ($42 << 3) >> 3] / $26;\n       $59 = $58 > $max$139;\n       $res1$2 = $59 ? $j$038 : $res1$136;\n       $res2$2 = $59 ? $k$1$lcssa : $res2$137;\n       $max$2 = $59 ? $58 : $max$139;\n       $j$038 = $j$038 + 1 | 0;\n       if (($j$038 | 0) == 4) {\n        $k$1102 = $k$1$lcssa;\n        $max$3 = $max$2;\n        $res1$3 = $res1$2;\n        $res2$3 = $res2$2;\n        break;\n       } else {\n        $max$139 = $max$2;\n        $res1$136 = $res1$2;\n        $res2$137 = $res2$2;\n       }\n      }\n     }\n     $l$043 = $l$043 + 1 | 0;\n     if (($l$043 | 0) >= ($31 | 0)) {\n      $max$0$lcssa = $max$3;\n      $res1$0$lcssa = $res1$3;\n      $res2$0$lcssa = $res2$3;\n      break;\n     } else {\n      $k$042 = $k$1102;\n      $max$044 = $max$3;\n      $res1$040 = $res1$3;\n      $res2$041 = $res2$3;\n     }\n    }\n   } else {\n    $max$0$lcssa = 0.0;\n    $res1$0$lcssa = -1;\n    $res2$0$lcssa = -1;\n   }\n   HEAP32[$dir >> 2] = $res1$0$lcssa;\n   HEAP32[$code >> 2] = $res2$0$lcssa;\n   HEAPF64[$cf >> 3] = $max$0$lcssa;\n   _free($4);\n   $$0 = 0;\n   break L1;\n   break;\n  }\n case 1:\n  {\n   $63 = Math_imul($size, $size) | 0;\n   $65 = _malloc($63 << 2) | 0;\n   if (!$65) {\n    _arLog(3, 5471, $vararg_buffer1);\n    _exit(1);\n   }\n   if (!$63) $ave$1$lcssa = 0; else {\n    $ave$183 = 0;\n    $i$384 = 0;\n    while (1) {\n     $72 = ((HEAPU8[$data + $i$384 >> 0] | 0) ^ 255) + $ave$183 | 0;\n     $i$384 = $i$384 + 1 | 0;\n     if (($i$384 | 0) >= ($63 | 0)) {\n      $ave$1$lcssa = $72;\n      break;\n     } else $ave$183 = $72;\n    }\n   }\n   $75 = ($ave$1$lcssa | 0) / ($63 | 0) | 0;\n   if (!$63) $sum$2$lcssa = 0.0; else {\n    $i$478 = 0;\n    $sum$277 = 0;\n    while (1) {\n     $81 = ((HEAPU8[$data + $i$478 >> 0] | 0) ^ 255) - $75 | 0;\n     HEAP32[$65 + ($i$478 << 2) >> 2] = $81;\n     $84 = (Math_imul($81, $81) | 0) + $sum$277 | 0;\n     $i$478 = $i$478 + 1 | 0;\n     if (($i$478 | 0) >= ($63 | 0)) {\n      $$lcssa108 = $84;\n      break;\n     } else $sum$277 = $84;\n    }\n    $sum$2$lcssa = +($$lcssa108 | 0);\n   }\n   $87 = +Math_sqrt(+$sum$2$lcssa);\n   if ($87 / +($size | 0) < 15.0) {\n    HEAP32[$code >> 2] = 0;\n    HEAP32[$dir >> 2] = 0;\n    HEAPF64[$cf >> 3] = -1.0;\n    _free($65);\n    $$0 = -2;\n    break L1;\n   }\n   $91 = HEAP32[$pattHandle >> 2] | 0;\n   $93 = $pattHandle + 20 | 0;\n   $94 = $pattHandle + 24 | 0;\n   if (($91 | 0) > 0) {\n    $96 = HEAP32[$pattHandle + 8 >> 2] | 0;\n    $97 = ($63 | 0) == 0;\n    $k$270 = -1;\n    $l$171 = 0;\n    $max$472 = 0.0;\n    $res1$468 = -1;\n    $res2$469 = -1;\n    while (1) {\n     $k$3$in = $k$270;\n     L58 : while (1) {\n      $k$3 = $k$3$in + 1 | 0;\n      switch (HEAP32[$96 + ($k$3 << 2) >> 2] | 0) {\n      case 0:\n       {\n        $k$3$in = $k$3;\n        break;\n       }\n      case 2:\n       {\n        $k$3106 = $k$3;\n        $max$7 = $max$472;\n        $res1$7 = $res1$468;\n        $res2$7 = $res2$469;\n        break L58;\n        break;\n       }\n      default:\n       {\n        $k$3$lcssa = $k$3;\n        label = 37;\n        break L58;\n       }\n      }\n     }\n     if ((label | 0) == 37) {\n      label = 0;\n      $100 = $k$3$lcssa << 2;\n      $101 = HEAP32[$94 >> 2] | 0;\n      $j$166 = 0;\n      $max$567 = $max$472;\n      $res1$564 = $res1$468;\n      $res2$565 = $res2$469;\n      while (1) {\n       $102 = $j$166 + $100 | 0;\n       if ($97) $sum$3$lcssa = 0; else {\n        $105 = HEAP32[(HEAP32[$93 >> 2] | 0) + ($102 << 2) >> 2] | 0;\n        $i$560 = 0;\n        $sum$359 = 0;\n        while (1) {\n         $111 = (Math_imul(HEAP32[$105 + ($i$560 << 2) >> 2] | 0, HEAP32[$65 + ($i$560 << 2) >> 2] | 0) | 0) + $sum$359 | 0;\n         $i$560 = $i$560 + 1 | 0;\n         if (($i$560 | 0) >= ($63 | 0)) {\n          $sum$3$lcssa = $111;\n          break;\n         } else $sum$359 = $111;\n        }\n       }\n       $118 = +($sum$3$lcssa | 0) / +HEAPF64[$101 + ($102 << 3) >> 3] / $87;\n       $119 = $118 > $max$567;\n       $res1$6 = $119 ? $j$166 : $res1$564;\n       $res2$6 = $119 ? $k$3$lcssa : $res2$565;\n       $max$6 = $119 ? $118 : $max$567;\n       $j$166 = $j$166 + 1 | 0;\n       if (($j$166 | 0) == 4) {\n        $k$3106 = $k$3$lcssa;\n        $max$7 = $max$6;\n        $res1$7 = $res1$6;\n        $res2$7 = $res2$6;\n        break;\n       } else {\n        $max$567 = $max$6;\n        $res1$564 = $res1$6;\n        $res2$565 = $res2$6;\n       }\n      }\n     }\n     $l$171 = $l$171 + 1 | 0;\n     if (($l$171 | 0) >= ($91 | 0)) {\n      $max$4$lcssa = $max$7;\n      $res1$4$lcssa = $res1$7;\n      $res2$4$lcssa = $res2$7;\n      break;\n     } else {\n      $k$270 = $k$3106;\n      $max$472 = $max$7;\n      $res1$468 = $res1$7;\n      $res2$469 = $res2$7;\n     }\n    }\n   } else {\n    $max$4$lcssa = 0.0;\n    $res1$4$lcssa = -1;\n    $res2$4$lcssa = -1;\n   }\n   HEAP32[$dir >> 2] = $res1$4$lcssa;\n   HEAP32[$code >> 2] = $res2$4$lcssa;\n   HEAPF64[$cf >> 3] = $max$4$lcssa;\n   _free($65);\n   $$0 = 0;\n   break L1;\n   break;\n  }\n default:\n  {\n   $$0 = -1;\n   break L1;\n  }\n } while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arMultiReadConfigFile($filename, $pattHandle) {\n $filename = $filename | 0;\n $pattHandle = $pattHandle | 0;\n var $$0 = 0, $0 = 0, $108 = 0, $11 = 0, $118 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $2 = 0, $20 = 0, $21 = 0, $28 = 0, $34 = 0, $4 = 0, $45 = 0, $49 = 0, $50 = 0, $52 = 0, $68 = 0.0, $69 = 0.0, $7 = 0, $70 = 0.0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $79 = 0.0, $83 = 0.0, $9 = 0, $buf = 0, $dummy = 0, $i$052 = 0, $i$052$lcssa64 = 0, $i$052$lcssa65 = 0, $i$052$lcssa66 = 0, $j$0 = 0, $j$150 = 0, $num = 0, $pattPath = 0, $patt_type$0$lcssa = 0, $patt_type$051 = 0, $patt_type$1 = 0, $t1 = 0, $t2 = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, $vararg_buffer11 = 0, $vararg_buffer13 = 0, $vararg_buffer17 = 0, $vararg_buffer21 = 0, $vararg_buffer24 = 0, $vararg_buffer28 = 0, $vararg_buffer31 = 0, $vararg_buffer35 = 0, $vararg_buffer41 = 0, $vararg_buffer45 = 0, $vararg_buffer49 = 0, $vararg_buffer5 = 0, $vararg_buffer55 = 0, $vararg_buffer59 = 0, $vararg_buffer8 = 0, $wpos3d = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 2544 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer59 = sp + 208 | 0;\n $vararg_buffer55 = sp + 200 | 0;\n $vararg_buffer49 = sp + 184 | 0;\n $vararg_buffer45 = sp + 176 | 0;\n $vararg_buffer41 = sp + 168 | 0;\n $vararg_buffer35 = sp + 152 | 0;\n $vararg_buffer31 = sp + 144 | 0;\n $vararg_buffer28 = sp + 136 | 0;\n $vararg_buffer24 = sp + 128 | 0;\n $vararg_buffer21 = sp + 120 | 0;\n $vararg_buffer17 = sp + 112 | 0;\n $vararg_buffer13 = sp + 104 | 0;\n $vararg_buffer11 = sp + 96 | 0;\n $vararg_buffer8 = sp + 88 | 0;\n $vararg_buffer5 = sp + 80 | 0;\n $vararg_buffer1 = sp + 72 | 0;\n $vararg_buffer = sp + 64 | 0;\n $wpos3d = sp;\n $buf = sp + 2280 | 0;\n $pattPath = sp + 232 | 0;\n $dummy = sp + 224 | 0;\n $num = sp + 220 | 0;\n $t1 = sp + 216 | 0;\n $t2 = sp + 212 | 0;\n $0 = _fopen($filename, 5306) | 0;\n L1 : do if (!$0) {\n  HEAP32[$vararg_buffer >> 2] = $filename;\n  _arLog(3, 5308, $vararg_buffer);\n  $2 = ___errno_location() | 0;\n  $4 = _strerror(HEAP32[$2 >> 2] | 0) | 0;\n  HEAP32[$vararg_buffer1 >> 2] = 13809;\n  HEAP32[$vararg_buffer1 + 4 >> 2] = $4;\n  _arLog(3, 5361, $vararg_buffer1);\n  $$0 = 0;\n } else {\n  _get_buff($buf, $0);\n  HEAP32[$vararg_buffer5 >> 2] = $num;\n  if ((_sscanf($buf, 5367, $vararg_buffer5) | 0) != 1) {\n   HEAP32[$vararg_buffer8 >> 2] = $filename;\n   _arLog(3, 5370, $vararg_buffer8);\n   _fclose($0) | 0;\n   $$0 = 0;\n   break;\n  }\n  $7 = HEAP32[$num >> 2] | 0;\n  $9 = _malloc($7 * 320 | 0) | 0;\n  if (!$9) {\n   _arLog(3, 5471, $vararg_buffer11);\n   _exit(1);\n  }\n  $11 = $wpos3d + 8 | 0;\n  $12 = $wpos3d + 16 | 0;\n  $13 = $wpos3d + 24 | 0;\n  $14 = $wpos3d + 32 | 0;\n  $15 = $wpos3d + 40 | 0;\n  $16 = $wpos3d + 48 | 0;\n  $17 = $wpos3d + 56 | 0;\n  $18 = ($pattHandle | 0) == 0;\n  L10 : do if (($7 | 0) > 0) {\n   $i$052 = 0;\n   $patt_type$051 = 0;\n   L11 : while (1) {\n    _get_buff($buf, $0);\n    $20 = $9 + ($i$052 * 320 | 0) | 0;\n    $21 = $9 + ($i$052 * 320 | 0) + 312 | 0;\n    HEAP32[$vararg_buffer13 >> 2] = $21;\n    HEAP32[$vararg_buffer13 + 4 >> 2] = $dummy;\n    if ((_sscanf($buf, 5488, $vararg_buffer13) | 0) == 1) {\n     $34 = HEAP32[$21 >> 2] | 0;\n     HEAP32[$20 >> 2] = ($34 & -32768 | 0) == 0 & 0 == 0 ? $34 & 32767 : 0;\n     HEAP32[$9 + ($i$052 * 320 | 0) + 4 >> 2] = 1;\n     $patt_type$1 = $patt_type$051 | 2;\n    } else {\n     if ($18) {\n      label = 10;\n      break;\n     }\n     if (!(_arUtilGetDirectoryNameFromPath($pattPath, $filename, 2048, 1) | 0)) {\n      label = 12;\n      break;\n     }\n     _strncat($pattPath, $buf, 2047 - (_strlen($pattPath) | 0) | 0) | 0;\n     $28 = _arPattLoad($pattHandle, $pattPath) | 0;\n     HEAP32[$20 >> 2] = $28;\n     if (($28 | 0) < 0) {\n      label = 14;\n      break;\n     }\n     HEAP32[$9 + ($i$052 * 320 | 0) + 4 >> 2] = 0;\n     $patt_type$1 = $patt_type$051 | 1;\n    }\n    _get_buff($buf, $0);\n    $45 = $9 + ($i$052 * 320 | 0) + 8 | 0;\n    HEAP32[$vararg_buffer28 >> 2] = $45;\n    if ((_sscanf($buf, 5784, $vararg_buffer28) | 0) != 1) {\n     $i$052$lcssa64 = $i$052;\n     label = 18;\n     break;\n    }\n    _get_buff($buf, $0);\n    $49 = $9 + ($i$052 * 320 | 0) + 16 | 0;\n    $50 = $9 + ($i$052 * 320 | 0) + 24 | 0;\n    $52 = $9 + ($i$052 * 320 | 0) + 40 | 0;\n    HEAP32[$vararg_buffer35 >> 2] = $49;\n    HEAP32[$vararg_buffer35 + 4 >> 2] = $50;\n    HEAP32[$vararg_buffer35 + 8 >> 2] = $9 + ($i$052 * 320 | 0) + 32;\n    HEAP32[$vararg_buffer35 + 12 >> 2] = $52;\n    if ((_sscanf($buf, 5893, $vararg_buffer35) | 0) == 4) $j$0 = 1; else {\n     HEAP32[$vararg_buffer41 >> 2] = $t1;\n     HEAP32[$vararg_buffer41 + 4 >> 2] = $t2;\n     if ((_sscanf($buf, 5909, $vararg_buffer41) | 0) == 2) $j$0 = 0; else {\n      $i$052$lcssa65 = $i$052;\n      label = 21;\n      break;\n     }\n    }\n    do {\n     _get_buff($buf, $0);\n     HEAP32[$vararg_buffer49 >> 2] = $9 + ($i$052 * 320 | 0) + 16 + ($j$0 << 5);\n     HEAP32[$vararg_buffer49 + 4 >> 2] = $9 + ($i$052 * 320 | 0) + 16 + ($j$0 << 5) + 8;\n     HEAP32[$vararg_buffer49 + 8 >> 2] = $9 + ($i$052 * 320 | 0) + 16 + ($j$0 << 5) + 16;\n     HEAP32[$vararg_buffer49 + 12 >> 2] = $9 + ($i$052 * 320 | 0) + 16 + ($j$0 << 5) + 24;\n     if ((_sscanf($buf, 5893, $vararg_buffer49) | 0) != 4) {\n      $i$052$lcssa66 = $i$052;\n      label = 23;\n      break L11;\n     }\n     $j$0 = $j$0 + 1 | 0;\n    } while (($j$0 | 0) < 3);\n    _arUtilMatInv($49, $9 + ($i$052 * 320 | 0) + 112 | 0) | 0;\n    $68 = +HEAPF64[$45 >> 3];\n    $69 = $68 * -.5;\n    HEAPF64[$wpos3d >> 3] = $69;\n    $70 = $68 * .5;\n    HEAPF64[$11 >> 3] = $70;\n    HEAPF64[$12 >> 3] = $70;\n    HEAPF64[$13 >> 3] = $70;\n    HEAPF64[$14 >> 3] = $70;\n    HEAPF64[$15 >> 3] = $69;\n    HEAPF64[$16 >> 3] = $69;\n    HEAPF64[$17 >> 3] = $69;\n    $71 = $9 + ($i$052 * 320 | 0) + 48 | 0;\n    $72 = $9 + ($i$052 * 320 | 0) + 56 | 0;\n    $73 = $9 + ($i$052 * 320 | 0) + 72 | 0;\n    $74 = $9 + ($i$052 * 320 | 0) + 80 | 0;\n    $75 = $9 + ($i$052 * 320 | 0) + 88 | 0;\n    $76 = $9 + ($i$052 * 320 | 0) + 104 | 0;\n    $j$150 = 0;\n    do {\n     $79 = +HEAPF64[$wpos3d + ($j$150 << 4) >> 3];\n     $83 = +HEAPF64[$wpos3d + ($j$150 << 4) + 8 >> 3];\n     HEAPF64[$9 + ($i$052 * 320 | 0) + 208 + ($j$150 * 24 | 0) >> 3] = +HEAPF64[$52 >> 3] + (+HEAPF64[$49 >> 3] * $79 + +HEAPF64[$50 >> 3] * $83);\n     HEAPF64[$9 + ($i$052 * 320 | 0) + 208 + ($j$150 * 24 | 0) + 8 >> 3] = +HEAPF64[$73 >> 3] + (+HEAPF64[$71 >> 3] * $79 + +HEAPF64[$72 >> 3] * $83);\n     HEAPF64[$9 + ($i$052 * 320 | 0) + 208 + ($j$150 * 24 | 0) + 16 >> 3] = +HEAPF64[$76 >> 3] + (+HEAPF64[$74 >> 3] * $79 + +HEAPF64[$75 >> 3] * $83);\n     $j$150 = $j$150 + 1 | 0;\n    } while (($j$150 | 0) != 4);\n    $i$052 = $i$052 + 1 | 0;\n    if (($i$052 | 0) >= (HEAP32[$num >> 2] | 0)) {\n     $patt_type$0$lcssa = $patt_type$1;\n     break L10;\n    } else $patt_type$051 = $patt_type$1;\n   }\n   if ((label | 0) == 10) {\n    HEAP32[$vararg_buffer17 >> 2] = $filename;\n    HEAP32[$vararg_buffer17 + 4 >> 2] = $buf;\n    _arLog(3, 5495, $vararg_buffer17);\n   } else if ((label | 0) == 12) {\n    HEAP32[$vararg_buffer21 >> 2] = $filename;\n    _arLog(3, 5623, $vararg_buffer21);\n   } else if ((label | 0) == 14) {\n    HEAP32[$vararg_buffer24 >> 2] = $filename;\n    HEAP32[$vararg_buffer24 + 4 >> 2] = $pattPath;\n    _arLog(3, 5707, $vararg_buffer24);\n   } else if ((label | 0) == 18) {\n    HEAP32[$vararg_buffer31 >> 2] = $filename;\n    HEAP32[$vararg_buffer31 + 4 >> 2] = $i$052$lcssa64 + 1;\n    _arLog(3, 5788, $vararg_buffer31);\n   } else if ((label | 0) == 21) {\n    HEAP32[$vararg_buffer45 >> 2] = $filename;\n    HEAP32[$vararg_buffer45 + 4 >> 2] = $i$052$lcssa65 + 1;\n    _arLog(3, 5915, $vararg_buffer45);\n   } else if ((label | 0) == 23) {\n    HEAP32[$vararg_buffer55 >> 2] = $filename;\n    HEAP32[$vararg_buffer55 + 4 >> 2] = $i$052$lcssa66 + 1;\n    _arLog(3, 5915, $vararg_buffer55);\n   }\n   _fclose($0) | 0;\n   _free($9);\n   $$0 = 0;\n   break L1;\n  } else $patt_type$0$lcssa = 0; while (0);\n  _fclose($0) | 0;\n  $108 = _malloc(136) | 0;\n  if (!$108) {\n   _arLog(3, 5471, $vararg_buffer59);\n   _exit(1);\n  }\n  HEAP32[$108 >> 2] = $9;\n  HEAP32[$108 + 4 >> 2] = HEAP32[$num >> 2];\n  HEAP32[$108 + 104 >> 2] = 0;\n  do if (($patt_type$0$lcssa & 3 | 0) == 3) HEAP32[$108 + 108 >> 2] = 2; else {\n   $118 = $108 + 108 | 0;\n   if (!($patt_type$0$lcssa & 1)) {\n    HEAP32[$118 >> 2] = 1;\n    break;\n   } else {\n    HEAP32[$118 >> 2] = 0;\n    break;\n   }\n  } while (0);\n  HEAPF64[$108 + 112 >> 3] = .5;\n  HEAPF64[$108 + 120 >> 3] = .5;\n  $$0 = $108;\n } while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction ___udivmoddi4($a$0, $a$1, $b$0, $b$1, $rem) {\n $a$0 = $a$0 | 0;\n $a$1 = $a$1 | 0;\n $b$0 = $b$0 | 0;\n $b$1 = $b$1 | 0;\n $rem = $rem | 0;\n var $n_sroa_0_0_extract_trunc = 0, $n_sroa_1_4_extract_shift$0 = 0, $n_sroa_1_4_extract_trunc = 0, $d_sroa_0_0_extract_trunc = 0, $d_sroa_1_4_extract_shift$0 = 0, $d_sroa_1_4_extract_trunc = 0, $4 = 0, $17 = 0, $37 = 0, $51 = 0, $57 = 0, $58 = 0, $66 = 0, $78 = 0, $88 = 0, $89 = 0, $91 = 0, $92 = 0, $95 = 0, $105 = 0, $119 = 0, $125 = 0, $126 = 0, $130 = 0, $q_sroa_1_1_ph = 0, $q_sroa_0_1_ph = 0, $r_sroa_1_1_ph = 0, $r_sroa_0_1_ph = 0, $sr_1_ph = 0, $d_sroa_0_0_insert_insert99$0 = 0, $d_sroa_0_0_insert_insert99$1 = 0, $137$0 = 0, $137$1 = 0, $carry_0203 = 0, $sr_1202 = 0, $r_sroa_0_1201 = 0, $r_sroa_1_1200 = 0, $q_sroa_0_1199 = 0, $q_sroa_1_1198 = 0, $r_sroa_0_0_insert_insert42$0 = 0, $r_sroa_0_0_insert_insert42$1 = 0, $150$1 = 0, $151$0 = 0, $carry_0_lcssa$0 = 0, $carry_0_lcssa$1 = 0, $r_sroa_0_1_lcssa = 0, $r_sroa_1_1_lcssa = 0, $q_sroa_0_1_lcssa = 0, $q_sroa_1_1_lcssa = 0, $q_sroa_0_0_insert_ext75$0 = 0, $q_sroa_0_0_insert_ext75$1 = 0, $_0$0 = 0, $_0$1 = 0, $q_sroa_1_1198$looptemp = 0;\n $n_sroa_0_0_extract_trunc = $a$0;\n $n_sroa_1_4_extract_shift$0 = $a$1;\n $n_sroa_1_4_extract_trunc = $n_sroa_1_4_extract_shift$0;\n $d_sroa_0_0_extract_trunc = $b$0;\n $d_sroa_1_4_extract_shift$0 = $b$1;\n $d_sroa_1_4_extract_trunc = $d_sroa_1_4_extract_shift$0;\n if (!$n_sroa_1_4_extract_trunc) {\n  $4 = ($rem | 0) != 0;\n  if (!$d_sroa_1_4_extract_trunc) {\n   if ($4) {\n    HEAP32[$rem >> 2] = ($n_sroa_0_0_extract_trunc >>> 0) % ($d_sroa_0_0_extract_trunc >>> 0);\n    HEAP32[$rem + 4 >> 2] = 0;\n   }\n   $_0$1 = 0;\n   $_0$0 = ($n_sroa_0_0_extract_trunc >>> 0) / ($d_sroa_0_0_extract_trunc >>> 0) >>> 0;\n   return (tempRet0 = $_0$1, $_0$0) | 0;\n  } else {\n   if (!$4) {\n    $_0$1 = 0;\n    $_0$0 = 0;\n    return (tempRet0 = $_0$1, $_0$0) | 0;\n   }\n   HEAP32[$rem >> 2] = $a$0 | 0;\n   HEAP32[$rem + 4 >> 2] = $a$1 & 0;\n   $_0$1 = 0;\n   $_0$0 = 0;\n   return (tempRet0 = $_0$1, $_0$0) | 0;\n  }\n }\n $17 = ($d_sroa_1_4_extract_trunc | 0) == 0;\n do if (!$d_sroa_0_0_extract_trunc) {\n  if ($17) {\n   if ($rem) {\n    HEAP32[$rem >> 2] = ($n_sroa_1_4_extract_trunc >>> 0) % ($d_sroa_0_0_extract_trunc >>> 0);\n    HEAP32[$rem + 4 >> 2] = 0;\n   }\n   $_0$1 = 0;\n   $_0$0 = ($n_sroa_1_4_extract_trunc >>> 0) / ($d_sroa_0_0_extract_trunc >>> 0) >>> 0;\n   return (tempRet0 = $_0$1, $_0$0) | 0;\n  }\n  if (!$n_sroa_0_0_extract_trunc) {\n   if ($rem) {\n    HEAP32[$rem >> 2] = 0;\n    HEAP32[$rem + 4 >> 2] = ($n_sroa_1_4_extract_trunc >>> 0) % ($d_sroa_1_4_extract_trunc >>> 0);\n   }\n   $_0$1 = 0;\n   $_0$0 = ($n_sroa_1_4_extract_trunc >>> 0) / ($d_sroa_1_4_extract_trunc >>> 0) >>> 0;\n   return (tempRet0 = $_0$1, $_0$0) | 0;\n  }\n  $37 = $d_sroa_1_4_extract_trunc - 1 | 0;\n  if (!($37 & $d_sroa_1_4_extract_trunc)) {\n   if ($rem) {\n    HEAP32[$rem >> 2] = $a$0 | 0;\n    HEAP32[$rem + 4 >> 2] = $37 & $n_sroa_1_4_extract_trunc | $a$1 & 0;\n   }\n   $_0$1 = 0;\n   $_0$0 = $n_sroa_1_4_extract_trunc >>> ((_llvm_cttz_i32($d_sroa_1_4_extract_trunc | 0) | 0) >>> 0);\n   return (tempRet0 = $_0$1, $_0$0) | 0;\n  }\n  $51 = (Math_clz32($d_sroa_1_4_extract_trunc | 0) | 0) - (Math_clz32($n_sroa_1_4_extract_trunc | 0) | 0) | 0;\n  if ($51 >>> 0 <= 30) {\n   $57 = $51 + 1 | 0;\n   $58 = 31 - $51 | 0;\n   $sr_1_ph = $57;\n   $r_sroa_0_1_ph = $n_sroa_1_4_extract_trunc << $58 | $n_sroa_0_0_extract_trunc >>> ($57 >>> 0);\n   $r_sroa_1_1_ph = $n_sroa_1_4_extract_trunc >>> ($57 >>> 0);\n   $q_sroa_0_1_ph = 0;\n   $q_sroa_1_1_ph = $n_sroa_0_0_extract_trunc << $58;\n   break;\n  }\n  if (!$rem) {\n   $_0$1 = 0;\n   $_0$0 = 0;\n   return (tempRet0 = $_0$1, $_0$0) | 0;\n  }\n  HEAP32[$rem >> 2] = $a$0 | 0;\n  HEAP32[$rem + 4 >> 2] = $n_sroa_1_4_extract_shift$0 | $a$1 & 0;\n  $_0$1 = 0;\n  $_0$0 = 0;\n  return (tempRet0 = $_0$1, $_0$0) | 0;\n } else {\n  if (!$17) {\n   $119 = (Math_clz32($d_sroa_1_4_extract_trunc | 0) | 0) - (Math_clz32($n_sroa_1_4_extract_trunc | 0) | 0) | 0;\n   if ($119 >>> 0 <= 31) {\n    $125 = $119 + 1 | 0;\n    $126 = 31 - $119 | 0;\n    $130 = $119 - 31 >> 31;\n    $sr_1_ph = $125;\n    $r_sroa_0_1_ph = $n_sroa_0_0_extract_trunc >>> ($125 >>> 0) & $130 | $n_sroa_1_4_extract_trunc << $126;\n    $r_sroa_1_1_ph = $n_sroa_1_4_extract_trunc >>> ($125 >>> 0) & $130;\n    $q_sroa_0_1_ph = 0;\n    $q_sroa_1_1_ph = $n_sroa_0_0_extract_trunc << $126;\n    break;\n   }\n   if (!$rem) {\n    $_0$1 = 0;\n    $_0$0 = 0;\n    return (tempRet0 = $_0$1, $_0$0) | 0;\n   }\n   HEAP32[$rem >> 2] = $a$0 | 0;\n   HEAP32[$rem + 4 >> 2] = $n_sroa_1_4_extract_shift$0 | $a$1 & 0;\n   $_0$1 = 0;\n   $_0$0 = 0;\n   return (tempRet0 = $_0$1, $_0$0) | 0;\n  }\n  $66 = $d_sroa_0_0_extract_trunc - 1 | 0;\n  if ($66 & $d_sroa_0_0_extract_trunc) {\n   $88 = (Math_clz32($d_sroa_0_0_extract_trunc | 0) | 0) + 33 - (Math_clz32($n_sroa_1_4_extract_trunc | 0) | 0) | 0;\n   $89 = 64 - $88 | 0;\n   $91 = 32 - $88 | 0;\n   $92 = $91 >> 31;\n   $95 = $88 - 32 | 0;\n   $105 = $95 >> 31;\n   $sr_1_ph = $88;\n   $r_sroa_0_1_ph = $91 - 1 >> 31 & $n_sroa_1_4_extract_trunc >>> ($95 >>> 0) | ($n_sroa_1_4_extract_trunc << $91 | $n_sroa_0_0_extract_trunc >>> ($88 >>> 0)) & $105;\n   $r_sroa_1_1_ph = $105 & $n_sroa_1_4_extract_trunc >>> ($88 >>> 0);\n   $q_sroa_0_1_ph = $n_sroa_0_0_extract_trunc << $89 & $92;\n   $q_sroa_1_1_ph = ($n_sroa_1_4_extract_trunc << $89 | $n_sroa_0_0_extract_trunc >>> ($95 >>> 0)) & $92 | $n_sroa_0_0_extract_trunc << $91 & $88 - 33 >> 31;\n   break;\n  }\n  if ($rem) {\n   HEAP32[$rem >> 2] = $66 & $n_sroa_0_0_extract_trunc;\n   HEAP32[$rem + 4 >> 2] = 0;\n  }\n  if (($d_sroa_0_0_extract_trunc | 0) == 1) {\n   $_0$1 = $n_sroa_1_4_extract_shift$0 | $a$1 & 0;\n   $_0$0 = $a$0 | 0 | 0;\n   return (tempRet0 = $_0$1, $_0$0) | 0;\n  } else {\n   $78 = _llvm_cttz_i32($d_sroa_0_0_extract_trunc | 0) | 0;\n   $_0$1 = $n_sroa_1_4_extract_trunc >>> ($78 >>> 0) | 0;\n   $_0$0 = $n_sroa_1_4_extract_trunc << 32 - $78 | $n_sroa_0_0_extract_trunc >>> ($78 >>> 0) | 0;\n   return (tempRet0 = $_0$1, $_0$0) | 0;\n  }\n } while (0);\n if (!$sr_1_ph) {\n  $q_sroa_1_1_lcssa = $q_sroa_1_1_ph;\n  $q_sroa_0_1_lcssa = $q_sroa_0_1_ph;\n  $r_sroa_1_1_lcssa = $r_sroa_1_1_ph;\n  $r_sroa_0_1_lcssa = $r_sroa_0_1_ph;\n  $carry_0_lcssa$1 = 0;\n  $carry_0_lcssa$0 = 0;\n } else {\n  $d_sroa_0_0_insert_insert99$0 = $b$0 | 0 | 0;\n  $d_sroa_0_0_insert_insert99$1 = $d_sroa_1_4_extract_shift$0 | $b$1 & 0;\n  $137$0 = _i64Add($d_sroa_0_0_insert_insert99$0 | 0, $d_sroa_0_0_insert_insert99$1 | 0, -1, -1) | 0;\n  $137$1 = tempRet0;\n  $q_sroa_1_1198 = $q_sroa_1_1_ph;\n  $q_sroa_0_1199 = $q_sroa_0_1_ph;\n  $r_sroa_1_1200 = $r_sroa_1_1_ph;\n  $r_sroa_0_1201 = $r_sroa_0_1_ph;\n  $sr_1202 = $sr_1_ph;\n  $carry_0203 = 0;\n  do {\n   $q_sroa_1_1198$looptemp = $q_sroa_1_1198;\n   $q_sroa_1_1198 = $q_sroa_0_1199 >>> 31 | $q_sroa_1_1198 << 1;\n   $q_sroa_0_1199 = $carry_0203 | $q_sroa_0_1199 << 1;\n   $r_sroa_0_0_insert_insert42$0 = $r_sroa_0_1201 << 1 | $q_sroa_1_1198$looptemp >>> 31 | 0;\n   $r_sroa_0_0_insert_insert42$1 = $r_sroa_0_1201 >>> 31 | $r_sroa_1_1200 << 1 | 0;\n   _i64Subtract($137$0, $137$1, $r_sroa_0_0_insert_insert42$0, $r_sroa_0_0_insert_insert42$1) | 0;\n   $150$1 = tempRet0;\n   $151$0 = $150$1 >> 31 | (($150$1 | 0) < 0 ? -1 : 0) << 1;\n   $carry_0203 = $151$0 & 1;\n   $r_sroa_0_1201 = _i64Subtract($r_sroa_0_0_insert_insert42$0, $r_sroa_0_0_insert_insert42$1, $151$0 & $d_sroa_0_0_insert_insert99$0, ((($150$1 | 0) < 0 ? -1 : 0) >> 31 | (($150$1 | 0) < 0 ? -1 : 0) << 1) & $d_sroa_0_0_insert_insert99$1) | 0;\n   $r_sroa_1_1200 = tempRet0;\n   $sr_1202 = $sr_1202 - 1 | 0;\n  } while (($sr_1202 | 0) != 0);\n  $q_sroa_1_1_lcssa = $q_sroa_1_1198;\n  $q_sroa_0_1_lcssa = $q_sroa_0_1199;\n  $r_sroa_1_1_lcssa = $r_sroa_1_1200;\n  $r_sroa_0_1_lcssa = $r_sroa_0_1201;\n  $carry_0_lcssa$1 = 0;\n  $carry_0_lcssa$0 = $carry_0203;\n }\n $q_sroa_0_0_insert_ext75$0 = $q_sroa_0_1_lcssa;\n $q_sroa_0_0_insert_ext75$1 = 0;\n if ($rem) {\n  HEAP32[$rem >> 2] = $r_sroa_0_1_lcssa;\n  HEAP32[$rem + 4 >> 2] = $r_sroa_1_1_lcssa;\n }\n $_0$1 = ($q_sroa_0_0_insert_ext75$0 | 0) >>> 31 | ($q_sroa_1_1_lcssa | $q_sroa_0_0_insert_ext75$1) << 1 | ($q_sroa_0_0_insert_ext75$1 << 1 | $q_sroa_0_0_insert_ext75$0 >>> 31) & 0 | $carry_0_lcssa$1;\n $_0$0 = ($q_sroa_0_0_insert_ext75$0 << 1 | 0 >>> 31) & -2 | $carry_0_lcssa$0;\n return (tempRet0 = $_0$1, $_0$0) | 0;\n}\n\nfunction _icpGetJ_U_S($J_U_S, $matXc2U, $matXw2Xc, $worldCoord) {\n $J_U_S = $J_U_S | 0;\n $matXc2U = $matXc2U | 0;\n $matXw2Xc = $matXw2Xc | 0;\n $worldCoord = $worldCoord | 0;\n var $$0 = 0, $$lcssa = 0.0, $0 = 0.0, $1 = 0.0, $100 = 0, $101 = 0, $104 = 0, $106 = 0, $108 = 0, $109 = 0, $11 = 0.0, $115 = 0.0, $116 = 0.0, $12 = 0.0, $122 = 0.0, $125 = 0.0, $128 = 0.0, $129 = 0.0, $132 = 0.0, $136 = 0.0, $14 = 0.0, $141 = 0.0, $143 = 0.0, $146 = 0.0, $150 = 0.0, $155 = 0.0, $157 = 0.0, $16 = 0.0, $160 = 0.0, $164 = 0.0, $169 = 0.0, $171 = 0.0, $18 = 0.0, $19 = 0.0, $2 = 0.0, $202 = 0.0, $204 = 0.0, $206 = 0.0, $207 = 0, $21 = 0.0, $211 = 0.0, $215 = 0.0, $22 = 0.0, $24 = 0.0, $26 = 0.0, $28 = 0.0, $29 = 0.0, $31 = 0.0, $32 = 0.0, $34 = 0.0, $4 = 0.0, $5 = 0, $52 = 0.0, $6 = 0.0, $7 = 0.0, $71 = 0.0, $79 = 0.0, $9 = 0.0, $92 = 0, $93 = 0, $96 = 0, $98 = 0, $J_T_S$i = 0, $J_U_Xc = 0, $J_Xc_S = 0, $J_Xc_T$i = 0, $i$0$i7 = 0, $i$04 = 0, $j$0$i8 = 0, $j$05 = 0, $k$0$i6 = 0, $vararg_buffer = 0, dest = 0, sp = 0, stop = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 1072 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp + 1056 | 0;\n $J_Xc_T$i = sp + 768 | 0;\n $J_T_S$i = sp + 192 | 0;\n $J_Xc_S = sp + 48 | 0;\n $J_U_Xc = sp;\n $0 = +HEAPF64[$matXw2Xc >> 3];\n $1 = +HEAPF64[$worldCoord >> 3];\n $2 = $0 * $1;\n $4 = +HEAPF64[$matXw2Xc + 8 >> 3];\n $5 = $worldCoord + 8 | 0;\n $6 = +HEAPF64[$5 >> 3];\n $7 = $4 * $6;\n $9 = +HEAPF64[$matXw2Xc + 16 >> 3];\n $11 = +HEAPF64[$worldCoord + 16 >> 3];\n $12 = $9 * $11;\n $14 = +HEAPF64[$matXw2Xc + 24 >> 3];\n $16 = +HEAPF64[$matXw2Xc + 32 >> 3];\n $18 = +HEAPF64[$matXw2Xc + 40 >> 3];\n $19 = $6 * $18;\n $21 = +HEAPF64[$matXw2Xc + 48 >> 3];\n $22 = $11 * $21;\n $24 = +HEAPF64[$matXw2Xc + 56 >> 3];\n $26 = +HEAPF64[$matXw2Xc + 64 >> 3];\n $28 = +HEAPF64[$matXw2Xc + 72 >> 3];\n $29 = $6 * $28;\n $31 = +HEAPF64[$matXw2Xc + 80 >> 3];\n $32 = $11 * $31;\n $34 = +HEAPF64[$matXw2Xc + 88 >> 3];\n HEAPF64[$J_Xc_T$i >> 3] = $2;\n HEAPF64[$J_Xc_T$i + 8 >> 3] = $0 * $6;\n HEAPF64[$J_Xc_T$i + 16 >> 3] = $0 * $11;\n HEAPF64[$J_Xc_T$i + 24 >> 3] = $1 * $4;\n HEAPF64[$J_Xc_T$i + 32 >> 3] = $7;\n HEAPF64[$J_Xc_T$i + 40 >> 3] = $11 * $4;\n HEAPF64[$J_Xc_T$i + 48 >> 3] = $1 * $9;\n HEAPF64[$J_Xc_T$i + 56 >> 3] = $6 * $9;\n HEAPF64[$J_Xc_T$i + 64 >> 3] = $12;\n HEAPF64[$J_Xc_T$i + 72 >> 3] = $0;\n HEAPF64[$J_Xc_T$i + 80 >> 3] = $4;\n HEAPF64[$J_Xc_T$i + 88 >> 3] = $9;\n $52 = $1 * $16;\n HEAPF64[$J_Xc_T$i + 96 >> 3] = $52;\n HEAPF64[$J_Xc_T$i + 104 >> 3] = $6 * $16;\n HEAPF64[$J_Xc_T$i + 112 >> 3] = $11 * $16;\n HEAPF64[$J_Xc_T$i + 120 >> 3] = $1 * $18;\n HEAPF64[$J_Xc_T$i + 128 >> 3] = $19;\n HEAPF64[$J_Xc_T$i + 136 >> 3] = $11 * $18;\n HEAPF64[$J_Xc_T$i + 144 >> 3] = $1 * $21;\n HEAPF64[$J_Xc_T$i + 152 >> 3] = $6 * $21;\n HEAPF64[$J_Xc_T$i + 160 >> 3] = $22;\n HEAPF64[$J_Xc_T$i + 168 >> 3] = $16;\n HEAPF64[$J_Xc_T$i + 176 >> 3] = $18;\n HEAPF64[$J_Xc_T$i + 184 >> 3] = $21;\n $71 = $26 * $1;\n HEAPF64[$J_Xc_T$i + 192 >> 3] = $71;\n HEAPF64[$J_Xc_T$i + 200 >> 3] = $6 * $26;\n HEAPF64[$J_Xc_T$i + 208 >> 3] = $11 * $26;\n HEAPF64[$J_Xc_T$i + 216 >> 3] = $1 * $28;\n $79 = +HEAPF64[$5 >> 3];\n HEAPF64[$J_Xc_T$i + 224 >> 3] = $28 * $79;\n HEAPF64[$J_Xc_T$i + 232 >> 3] = $11 * $28;\n HEAPF64[$J_Xc_T$i + 240 >> 3] = $1 * $31;\n HEAPF64[$J_Xc_T$i + 248 >> 3] = $79 * $31;\n HEAPF64[$J_Xc_T$i + 256 >> 3] = $32;\n HEAPF64[$J_Xc_T$i + 264 >> 3] = $26;\n HEAPF64[$J_Xc_T$i + 272 >> 3] = $28;\n HEAPF64[$J_Xc_T$i + 280 >> 3] = $31;\n $92 = $J_T_S$i + 64 | 0;\n dest = $J_T_S$i;\n stop = dest + 64 | 0;\n do {\n  HEAP32[dest >> 2] = 0;\n  dest = dest + 4 | 0;\n } while ((dest | 0) < (stop | 0));\n HEAPF64[$92 >> 3] = -1.0;\n $93 = $J_T_S$i + 72 | 0;\n HEAP32[$93 >> 2] = 0;\n HEAP32[$93 + 4 >> 2] = 0;\n HEAP32[$93 + 8 >> 2] = 0;\n HEAP32[$93 + 12 >> 2] = 0;\n HEAP32[$93 + 16 >> 2] = 0;\n HEAP32[$93 + 20 >> 2] = 0;\n HEAP32[$93 + 24 >> 2] = 0;\n HEAP32[$93 + 28 >> 2] = 0;\n HEAPF64[$J_T_S$i + 104 >> 3] = 1.0;\n $96 = $J_T_S$i + 160 | 0;\n dest = $J_T_S$i + 112 | 0;\n stop = dest + 48 | 0;\n do {\n  HEAP32[dest >> 2] = 0;\n  dest = dest + 4 | 0;\n } while ((dest | 0) < (stop | 0));\n HEAPF64[$96 >> 3] = 1.0;\n $98 = $J_T_S$i + 240 | 0;\n dest = $J_T_S$i + 168 | 0;\n stop = dest + 72 | 0;\n do {\n  HEAP32[dest >> 2] = 0;\n  dest = dest + 4 | 0;\n } while ((dest | 0) < (stop | 0));\n HEAPF64[$98 >> 3] = -1.0;\n $100 = $J_T_S$i + 296 | 0;\n dest = $J_T_S$i + 248 | 0;\n stop = dest + 48 | 0;\n do {\n  HEAP32[dest >> 2] = 0;\n  dest = dest + 4 | 0;\n } while ((dest | 0) < (stop | 0));\n HEAPF64[$100 >> 3] = -1.0;\n $101 = $J_T_S$i + 304 | 0;\n HEAP32[$101 >> 2] = 0;\n HEAP32[$101 + 4 >> 2] = 0;\n HEAP32[$101 + 8 >> 2] = 0;\n HEAP32[$101 + 12 >> 2] = 0;\n HEAP32[$101 + 16 >> 2] = 0;\n HEAP32[$101 + 20 >> 2] = 0;\n HEAP32[$101 + 24 >> 2] = 0;\n HEAP32[$101 + 28 >> 2] = 0;\n HEAPF64[$J_T_S$i + 336 >> 3] = 1.0;\n $104 = $J_T_S$i + 456 | 0;\n dest = $J_T_S$i + 344 | 0;\n stop = dest + 112 | 0;\n do {\n  HEAP32[dest >> 2] = 0;\n  dest = dest + 4 | 0;\n } while ((dest | 0) < (stop | 0));\n HEAPF64[$104 >> 3] = 1.0;\n $106 = $J_T_S$i + 512 | 0;\n dest = $J_T_S$i + 464 | 0;\n stop = dest + 48 | 0;\n do {\n  HEAP32[dest >> 2] = 0;\n  dest = dest + 4 | 0;\n } while ((dest | 0) < (stop | 0));\n HEAPF64[$106 >> 3] = 1.0;\n $108 = $J_T_S$i + 568 | 0;\n dest = $J_T_S$i + 520 | 0;\n stop = dest + 48 | 0;\n do {\n  HEAP32[dest >> 2] = 0;\n  dest = dest + 4 | 0;\n } while ((dest | 0) < (stop | 0));\n HEAPF64[$108 >> 3] = 1.0;\n $j$0$i8 = 0;\n do {\n  $i$0$i7 = 0;\n  do {\n   $109 = $J_Xc_S + ($j$0$i8 * 48 | 0) + ($i$0$i7 << 3) | 0;\n   HEAPF64[$109 >> 3] = 0.0;\n   $116 = 0.0;\n   $k$0$i6 = 0;\n   while (1) {\n    $115 = $116 + +HEAPF64[$J_Xc_T$i + ($j$0$i8 * 96 | 0) + ($k$0$i6 << 3) >> 3] * +HEAPF64[$J_T_S$i + ($k$0$i6 * 48 | 0) + ($i$0$i7 << 3) >> 3];\n    $k$0$i6 = $k$0$i6 + 1 | 0;\n    if (($k$0$i6 | 0) == 12) {\n     $$lcssa = $115;\n     break;\n    } else $116 = $115;\n   }\n   HEAPF64[$109 >> 3] = $$lcssa;\n   $i$0$i7 = $i$0$i7 + 1 | 0;\n  } while (($i$0$i7 | 0) != 6);\n  $j$0$i8 = $j$0$i8 + 1 | 0;\n } while (($j$0$i8 | 0) != 3);\n $122 = $14 + ($2 + $7 + $12);\n $125 = $24 + ($52 + $19 + $22);\n $128 = $34 + ($71 + $29 + $32);\n $129 = +HEAPF64[$matXc2U >> 3];\n $132 = +HEAPF64[$matXc2U + 8 >> 3];\n $136 = +HEAPF64[$matXc2U + 16 >> 3];\n $141 = +HEAPF64[$matXc2U + 24 >> 3] + ($122 * $129 + $125 * $132 + $128 * $136);\n $143 = +HEAPF64[$matXc2U + 32 >> 3];\n $146 = +HEAPF64[$matXc2U + 40 >> 3];\n $150 = +HEAPF64[$matXc2U + 48 >> 3];\n $155 = +HEAPF64[$matXc2U + 56 >> 3] + ($122 * $143 + $125 * $146 + $128 * $150);\n $157 = +HEAPF64[$matXc2U + 64 >> 3];\n $160 = +HEAPF64[$matXc2U + 72 >> 3];\n $164 = +HEAPF64[$matXc2U + 80 >> 3];\n $169 = +HEAPF64[$matXc2U + 88 >> 3] + ($122 * $157 + $125 * $160 + $128 * $164);\n if ($169 == 0.0) {\n  _arLog(3, 5089, $vararg_buffer);\n  $$0 = -1;\n } else {\n  $171 = $169 * $169;\n  HEAPF64[$J_U_Xc >> 3] = ($129 * $169 - $141 * $157) / $171;\n  HEAPF64[$J_U_Xc + 8 >> 3] = ($169 * $132 - $141 * $160) / $171;\n  HEAPF64[$J_U_Xc + 16 >> 3] = ($169 * $136 - $141 * $164) / $171;\n  HEAPF64[$J_U_Xc + 24 >> 3] = ($169 * $143 - $155 * $157) / $171;\n  HEAPF64[$J_U_Xc + 32 >> 3] = ($169 * $146 - $155 * $160) / $171;\n  HEAPF64[$J_U_Xc + 40 >> 3] = ($169 * $150 - $155 * $164) / $171;\n  $j$05 = 0;\n  do {\n   $202 = +HEAPF64[$J_U_Xc + ($j$05 * 24 | 0) >> 3];\n   $204 = +HEAPF64[$J_U_Xc + ($j$05 * 24 | 0) + 8 >> 3];\n   $206 = +HEAPF64[$J_U_Xc + ($j$05 * 24 | 0) + 16 >> 3];\n   $i$04 = 0;\n   do {\n    $207 = $J_U_S + ($j$05 * 48 | 0) + ($i$04 << 3) | 0;\n    HEAPF64[$207 >> 3] = 0.0;\n    $211 = $202 * +HEAPF64[$J_Xc_S + ($i$04 << 3) >> 3] + 0.0;\n    HEAPF64[$207 >> 3] = $211;\n    $215 = $211 + $204 * +HEAPF64[$J_Xc_S + 48 + ($i$04 << 3) >> 3];\n    HEAPF64[$207 >> 3] = $215;\n    HEAPF64[$207 >> 3] = $215 + $206 * +HEAPF64[$J_Xc_S + 96 + ($i$04 << 3) >> 3];\n    $i$04 = $i$04 + 1 | 0;\n   } while (($i$04 | 0) != 6);\n   $j$05 = $j$05 + 1 | 0;\n  } while (($j$05 | 0) != 2);\n  $$0 = 0;\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_120parse_function_paramINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) {\n $first = $first | 0;\n $last = $last | 0;\n $db = $db | 0;\n var $$0 = 0, $$0$i$i$i = 0, $$0$i$i$i18 = 0, $$0$i$i1027 = 0, $$0$i$i24 = 0, $0 = 0, $1 = 0, $101 = 0, $102 = 0, $104 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $118 = 0, $120 = 0, $123 = 0, $124 = 0, $15 = 0, $16 = 0, $2 = 0, $22 = 0, $29 = 0, $3 = 0, $30 = 0, $39 = 0, $4 = 0, $42 = 0, $43 = 0, $45 = 0, $5 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $59 = 0, $61 = 0, $64 = 0, $65 = 0, $69 = 0, $74 = 0, $75 = 0, $81 = 0, $88 = 0, $89 = 0, $98 = 0, $__p$0$i$i23 = 0, $__p$0$i$i926 = 0, $__p$0$ph$i$i = 0, $__p$0$ph$i$i7 = 0, $__v$i$i17 = 0, $cv = 0, $cv1 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 128 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $__v$i$i17 = sp + 108 | 0;\n $cv = sp + 104 | 0;\n $0 = sp + 80 | 0;\n $1 = sp + 64 | 0;\n $2 = sp + 52 | 0;\n $cv1 = sp + 48 | 0;\n $3 = sp + 24 | 0;\n $4 = sp + 12 | 0;\n $5 = sp;\n L1 : do if (($last - $first | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 102) {\n  switch (HEAP8[$first + 1 >> 0] | 0) {\n  case 112:\n   {\n    $15 = __ZN10__cxxabiv112_GLOBAL__N_119parse_cv_qualifiersEPKcS2_Rj($first + 2 | 0, $last, $cv) | 0;\n    $16 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_($15, $last) | 0;\n    if (($16 | 0) == ($last | 0)) {\n     $$0 = $first;\n     break L1;\n    }\n    if ((HEAP8[$16 >> 0] | 0) != 95) {\n     $$0 = $first;\n     break L1;\n    }\n    $22 = $16 - $15 | 0;\n    if ($22 >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv($2);\n    if ($22 >>> 0 < 11) {\n     HEAP8[$2 >> 0] = $22 << 1;\n     $__p$0$ph$i$i = $2 + 1 | 0;\n    } else {\n     $29 = $22 + 16 & -16;\n     $30 = _malloc($29) | 0;\n     HEAP32[$2 + 8 >> 2] = $30;\n     HEAP32[$2 >> 2] = $29 | 1;\n     HEAP32[$2 + 4 >> 2] = $22;\n     $__p$0$ph$i$i = $30;\n    }\n    if (($15 | 0) != ($16 | 0)) {\n     $$0$i$i24 = $15;\n     $__p$0$i$i23 = $__p$0$ph$i$i;\n     while (1) {\n      HEAP8[$__p$0$i$i23 >> 0] = HEAP8[$$0$i$i24 >> 0] | 0;\n      $$0$i$i24 = $$0$i$i24 + 1 | 0;\n      if (($$0$i$i24 | 0) == ($16 | 0)) break; else $__p$0$i$i23 = $__p$0$i$i23 + 1 | 0;\n     }\n    }\n    HEAP8[$__p$0$ph$i$i + $22 >> 0] = 0;\n    $39 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($2, 0, 14123) | 0;\n    HEAP32[$1 >> 2] = HEAP32[$39 >> 2];\n    HEAP32[$1 + 4 >> 2] = HEAP32[$39 + 4 >> 2];\n    HEAP32[$1 + 8 >> 2] = HEAP32[$39 + 8 >> 2];\n    HEAP32[$39 >> 2] = 0;\n    HEAP32[$39 + 4 >> 2] = 0;\n    HEAP32[$39 + 8 >> 2] = 0;\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($0, $1);\n    $42 = $db + 4 | 0;\n    $43 = HEAP32[$42 >> 2] | 0;\n    $45 = HEAP32[$db + 8 >> 2] | 0;\n    if ($43 >>> 0 < $45 >>> 0) {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($43, $0);\n     HEAP32[$42 >> 2] = (HEAP32[$42 >> 2] | 0) + 24;\n    } else {\n     $52 = HEAP32[$db >> 2] | 0;\n     $53 = $43 - $52 | 0;\n     $54 = ($53 | 0) / 24 | 0;\n     $55 = $54 + 1 | 0;\n     if (($53 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n     $59 = ($45 - $52 | 0) / 24 | 0;\n     if ($59 >>> 0 < 1073741823) {\n      $61 = $59 << 1;\n      $$0$i$i$i = $61 >>> 0 < $55 >>> 0 ? $55 : $61;\n     } else $$0$i$i$i = 2147483647;\n     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i17, $$0$i$i$i, $54, $db + 12 | 0);\n     $64 = $__v$i$i17 + 8 | 0;\n     $65 = HEAP32[$64 >> 2] | 0;\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($65, $0);\n     HEAP32[$64 >> 2] = $65 + 24;\n     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i17);\n     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i17);\n    }\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0);\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);\n    $$0 = $16 + 1 | 0;\n    break L1;\n    break;\n   }\n  case 76:\n   break;\n  default:\n   {\n    $$0 = $first;\n    break L1;\n   }\n  }\n  $69 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_($first + 2 | 0, $last) | 0;\n  if (($69 | 0) == ($last | 0)) $$0 = $first; else if ((HEAP8[$69 >> 0] | 0) == 112) {\n   $74 = __ZN10__cxxabiv112_GLOBAL__N_119parse_cv_qualifiersEPKcS2_Rj($69 + 1 | 0, $last, $cv1) | 0;\n   $75 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_($74, $last) | 0;\n   if (($75 | 0) == ($last | 0)) $$0 = $first; else if ((HEAP8[$75 >> 0] | 0) == 95) {\n    $81 = $75 - $74 | 0;\n    if ($81 >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv($5);\n    if ($81 >>> 0 < 11) {\n     HEAP8[$5 >> 0] = $81 << 1;\n     $__p$0$ph$i$i7 = $5 + 1 | 0;\n    } else {\n     $88 = $81 + 16 & -16;\n     $89 = _malloc($88) | 0;\n     HEAP32[$5 + 8 >> 2] = $89;\n     HEAP32[$5 >> 2] = $88 | 1;\n     HEAP32[$5 + 4 >> 2] = $81;\n     $__p$0$ph$i$i7 = $89;\n    }\n    if (($74 | 0) != ($75 | 0)) {\n     $$0$i$i1027 = $74;\n     $__p$0$i$i926 = $__p$0$ph$i$i7;\n     while (1) {\n      HEAP8[$__p$0$i$i926 >> 0] = HEAP8[$$0$i$i1027 >> 0] | 0;\n      $$0$i$i1027 = $$0$i$i1027 + 1 | 0;\n      if (($$0$i$i1027 | 0) == ($75 | 0)) break; else $__p$0$i$i926 = $__p$0$i$i926 + 1 | 0;\n     }\n    }\n    HEAP8[$__p$0$ph$i$i7 + $81 >> 0] = 0;\n    $98 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($5, 0, 14123) | 0;\n    HEAP32[$4 >> 2] = HEAP32[$98 >> 2];\n    HEAP32[$4 + 4 >> 2] = HEAP32[$98 + 4 >> 2];\n    HEAP32[$4 + 8 >> 2] = HEAP32[$98 + 8 >> 2];\n    HEAP32[$98 >> 2] = 0;\n    HEAP32[$98 + 4 >> 2] = 0;\n    HEAP32[$98 + 8 >> 2] = 0;\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($3, $4);\n    $101 = $db + 4 | 0;\n    $102 = HEAP32[$101 >> 2] | 0;\n    $104 = HEAP32[$db + 8 >> 2] | 0;\n    if ($102 >>> 0 < $104 >>> 0) {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($102, $3);\n     HEAP32[$101 >> 2] = (HEAP32[$101 >> 2] | 0) + 24;\n    } else {\n     $111 = HEAP32[$db >> 2] | 0;\n     $112 = $102 - $111 | 0;\n     $113 = ($112 | 0) / 24 | 0;\n     $114 = $113 + 1 | 0;\n     if (($112 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n     $118 = ($104 - $111 | 0) / 24 | 0;\n     if ($118 >>> 0 < 1073741823) {\n      $120 = $118 << 1;\n      $$0$i$i$i18 = $120 >>> 0 < $114 >>> 0 ? $114 : $120;\n     } else $$0$i$i$i18 = 2147483647;\n     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i17, $$0$i$i$i18, $113, $db + 12 | 0);\n     $123 = $__v$i$i17 + 8 | 0;\n     $124 = HEAP32[$123 >> 2] | 0;\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($124, $3);\n     HEAP32[$123 >> 2] = $124 + 24;\n     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i17);\n     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i17);\n    }\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($3);\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4);\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($5);\n    $$0 = $75 + 1 | 0;\n   } else $$0 = $first;\n  } else $$0 = $first;\n } else $$0 = $first; else $$0 = $first; while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _icpPointRobust($handle, $data, $initMatXw2Xc, $matXw2Xc, $err) {\n $handle = $handle | 0;\n $data = $data | 0;\n $initMatXw2Xc = $initMatXw2Xc | 0;\n $matXw2Xc = $matXw2Xc | 0;\n $err = $err | 0;\n var $$ = 0, $$0 = 0, $$lcssa = 0, $$lcssa50 = 0.0, $$pn = 0.0, $$pre = 0, $0 = 0, $1 = 0, $101 = 0, $102 = 0, $108 = 0.0, $109 = 0.0, $11 = 0, $113 = 0, $117 = 0, $121 = 0, $125 = 0, $129 = 0, $133 = 0, $137 = 0, $14 = 0, $141 = 0, $145 = 0, $149 = 0, $153 = 0, $156 = 0, $16 = 0, $17 = 0, $174 = 0, $19 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $41 = 0, $47 = 0, $51 = 0.0, $55 = 0.0, $56 = 0, $62 = 0.0, $66 = 0, $69 = 0.0, $71 = 0, $72 = 0.0, $75 = 0.0, $78 = 0.0, $8 = 0, $86 = 0.0, $99 = 0.0, $K2$0 = 0.0, $U = 0, $dS = 0, $err0$0 = 0.0, $err1$0$lcssa = 0.0, $err1$032 = 0.0, $err1$1 = 0.0, $i$1 = 0, $j$043 = 0, $j$131 = 0, $j$233 = 0, $j$338 = 0, $k$0$lcssa = 0, $k$039 = 0, $k$1 = 0, $matXw2U = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, $vararg_buffer3 = 0, $vararg_buffer5 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 192 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer5 = sp + 184 | 0;\n $vararg_buffer3 = sp + 176 | 0;\n $vararg_buffer1 = sp + 168 | 0;\n $vararg_buffer = sp + 160 | 0;\n $U = sp + 48 | 0;\n $matXw2U = sp + 64 | 0;\n $dS = sp;\n $0 = $data + 8 | 0;\n $1 = HEAP32[$0 >> 2] | 0;\n do if (($1 | 0) < 4) $$0 = -1; else {\n  $8 = ~~(+($1 | 0) * +HEAPF64[$handle + 128 >> 3]) + -1 | 0;\n  $$ = ($8 | 0) < 3 ? 3 : $8;\n  $11 = _malloc($1 * 96 | 0) | 0;\n  if (!$11) {\n   _arLog(3, 5109, $vararg_buffer);\n   $$0 = -1;\n   break;\n  }\n  $14 = _malloc($1 << 4) | 0;\n  if (!$14) {\n   _arLog(3, 5109, $vararg_buffer1);\n   _free($11);\n   $$0 = -1;\n   break;\n  }\n  $16 = $1 << 3;\n  $17 = _malloc($16) | 0;\n  if (!$17) {\n   _arLog(3, 5109, $vararg_buffer3);\n   _free($11);\n   _free($14);\n   $$0 = -1;\n   break;\n  }\n  $19 = _malloc($16) | 0;\n  if (!$19) {\n   _arLog(3, 5109, $vararg_buffer5);\n   _free($11);\n   _free($14);\n   _free($17);\n   $$0 = -1;\n   break;\n  } else $j$043 = 0;\n  do {\n   HEAPF64[$matXw2Xc + ($j$043 << 5) >> 3] = +HEAPF64[$initMatXw2Xc + ($j$043 << 5) >> 3];\n   HEAPF64[$matXw2Xc + ($j$043 << 5) + 8 >> 3] = +HEAPF64[$initMatXw2Xc + ($j$043 << 5) + 8 >> 3];\n   HEAPF64[$matXw2Xc + ($j$043 << 5) + 16 >> 3] = +HEAPF64[$initMatXw2Xc + ($j$043 << 5) + 16 >> 3];\n   HEAPF64[$matXw2Xc + ($j$043 << 5) + 24 >> 3] = +HEAPF64[$initMatXw2Xc + ($j$043 << 5) + 24 >> 3];\n   $j$043 = $j$043 + 1 | 0;\n  } while (($j$043 | 0) != 3);\n  $21 = $data + 4 | 0;\n  $22 = $U + 8 | 0;\n  $23 = $19 + ($$ << 3) | 0;\n  $24 = $handle + 104 | 0;\n  $25 = $handle + 120 | 0;\n  $26 = $handle + 112 | 0;\n  $27 = $handle + 96 | 0;\n  $err0$0 = 0.0;\n  $i$1 = 0;\n  L17 : while (1) {\n   _arUtilMatMul($handle, $matXw2Xc, $matXw2U) | 0;\n   $41 = HEAP32[$0 >> 2] | 0;\n   if (($41 | 0) > 0) {\n    $j$131 = 0;\n    while (1) {\n     if ((_icpGetU_from_X_by_MatX2U($U, $matXw2U, (HEAP32[$21 >> 2] | 0) + ($j$131 * 24 | 0) | 0) | 0) < 0) {\n      label = 14;\n      break L17;\n     }\n     $47 = HEAP32[$data >> 2] | 0;\n     $51 = +HEAPF64[$47 + ($j$131 << 4) >> 3] - +HEAPF64[$U >> 3];\n     $55 = +HEAPF64[$47 + ($j$131 << 4) + 8 >> 3] - +HEAPF64[$22 >> 3];\n     $56 = $j$131 << 1;\n     HEAPF64[$14 + ($56 << 3) >> 3] = $51;\n     HEAPF64[$14 + (($56 | 1) << 3) >> 3] = $55;\n     $62 = $51 * $51 + $55 * $55;\n     HEAPF64[$19 + ($j$131 << 3) >> 3] = $62;\n     HEAPF64[$17 + ($j$131 << 3) >> 3] = $62;\n     $j$131 = $j$131 + 1 | 0;\n     $66 = HEAP32[$0 >> 2] | 0;\n     if (($j$131 | 0) >= ($66 | 0)) {\n      $$lcssa = $66;\n      break;\n     }\n    }\n   } else $$lcssa = $41;\n   _qsort($19, $$lcssa, 8, 1);\n   $69 = +HEAPF64[$23 >> 3] * 4.0;\n   $K2$0 = $69 < 16.0 ? 16.0 : $69;\n   $71 = HEAP32[$0 >> 2] | 0;\n   $72 = $K2$0 / 6.0;\n   if (($71 | 0) > 0) {\n    $err1$032 = 0.0;\n    $j$233 = 0;\n    while (1) {\n     $75 = +HEAPF64[$19 + ($j$233 << 3) >> 3];\n     if ($75 > $K2$0) $$pn = $72; else {\n      $78 = 1.0 - $75 / $K2$0;\n      $$pn = $72 * (1.0 - $78 * ($78 * $78));\n     }\n     $err1$1 = $err1$032 + $$pn;\n     $j$233 = $j$233 + 1 | 0;\n     if (($j$233 | 0) >= ($71 | 0)) {\n      $err1$0$lcssa = $err1$1;\n      break;\n     } else $err1$032 = $err1$1;\n    }\n   } else $err1$0$lcssa = 0.0;\n   $86 = $err1$0$lcssa / +($71 | 0);\n   if ($86 < +HEAPF64[$24 >> 3]) {\n    $$lcssa50 = $86;\n    label = 36;\n    break;\n   }\n   if (($i$1 | 0) > 0) if ($86 < +HEAPF64[$25 >> 3]) if ($86 / $err0$0 > +HEAPF64[$26 >> 3]) {\n    $$lcssa50 = $86;\n    label = 36;\n    break;\n   }\n   if (($i$1 | 0) == (HEAP32[$27 >> 2] | 0)) {\n    $$lcssa50 = $86;\n    label = 36;\n    break;\n   }\n   if (($71 | 0) > 0) {\n    $174 = $71;\n    $j$338 = 0;\n    $k$039 = 0;\n    while (1) {\n     $99 = +HEAPF64[$17 + ($j$338 << 3) >> 3];\n     if (!($99 <= $K2$0)) {\n      $$pre = $174;\n      $k$1 = $k$039;\n     } else {\n      $101 = $k$039 * 6 | 0;\n      $102 = $11 + ($101 << 3) | 0;\n      if ((_icpGetJ_U_S($102, $handle, $matXw2Xc, (HEAP32[$21 >> 2] | 0) + ($j$338 * 24 | 0) | 0) | 0) < 0) {\n       label = 28;\n       break L17;\n      }\n      $108 = 1.0 - $99 / $K2$0;\n      $109 = $108 * $108;\n      HEAPF64[$102 >> 3] = +HEAPF64[$102 >> 3] * $109;\n      $113 = $11 + (($101 | 1) << 3) | 0;\n      HEAPF64[$113 >> 3] = +HEAPF64[$113 >> 3] * $109;\n      $117 = $11 + ($101 + 2 << 3) | 0;\n      HEAPF64[$117 >> 3] = $109 * +HEAPF64[$117 >> 3];\n      $121 = $11 + ($101 + 3 << 3) | 0;\n      HEAPF64[$121 >> 3] = $109 * +HEAPF64[$121 >> 3];\n      $125 = $11 + ($101 + 4 << 3) | 0;\n      HEAPF64[$125 >> 3] = $109 * +HEAPF64[$125 >> 3];\n      $129 = $11 + ($101 + 5 << 3) | 0;\n      HEAPF64[$129 >> 3] = $109 * +HEAPF64[$129 >> 3];\n      $133 = $11 + ($101 + 6 << 3) | 0;\n      HEAPF64[$133 >> 3] = $109 * +HEAPF64[$133 >> 3];\n      $137 = $11 + ($101 + 7 << 3) | 0;\n      HEAPF64[$137 >> 3] = $109 * +HEAPF64[$137 >> 3];\n      $141 = $11 + ($101 + 8 << 3) | 0;\n      HEAPF64[$141 >> 3] = $109 * +HEAPF64[$141 >> 3];\n      $145 = $11 + ($101 + 9 << 3) | 0;\n      HEAPF64[$145 >> 3] = $109 * +HEAPF64[$145 >> 3];\n      $149 = $11 + ($101 + 10 << 3) | 0;\n      HEAPF64[$149 >> 3] = $109 * +HEAPF64[$149 >> 3];\n      $153 = $11 + ($101 + 11 << 3) | 0;\n      HEAPF64[$153 >> 3] = $109 * +HEAPF64[$153 >> 3];\n      $156 = $j$338 << 1;\n      HEAPF64[$14 + ($k$039 << 3) >> 3] = $109 * +HEAPF64[$14 + ($156 << 3) >> 3];\n      HEAPF64[$14 + ($k$039 + 1 << 3) >> 3] = $109 * +HEAPF64[$14 + (($156 | 1) << 3) >> 3];\n      $$pre = HEAP32[$0 >> 2] | 0;\n      $k$1 = $k$039 + 2 | 0;\n     }\n     $j$338 = $j$338 + 1 | 0;\n     if (($j$338 | 0) >= ($$pre | 0)) {\n      $k$0$lcssa = $k$1;\n      break;\n     } else {\n      $174 = $$pre;\n      $k$039 = $k$1;\n     }\n    }\n   } else $k$0$lcssa = 0;\n   if (($k$0$lcssa | 0) < 6) {\n    label = 32;\n    break;\n   }\n   if ((_icpGetDeltaS($dS, $14, $11, $k$0$lcssa) | 0) < 0) {\n    label = 34;\n    break;\n   }\n   _icpUpdateMat($matXw2Xc, $dS) | 0;\n   $err0$0 = $86;\n   $i$1 = $i$1 + 1 | 0;\n  }\n  if ((label | 0) == 14) {\n   _icpGetXw2XcCleanup295($11, $14, $17, $19);\n   $$0 = -1;\n   break;\n  } else if ((label | 0) == 28) {\n   _icpGetXw2XcCleanup295($11, $14, $17, $19);\n   $$0 = -1;\n   break;\n  } else if ((label | 0) == 32) {\n   _icpGetXw2XcCleanup295($11, $14, $17, $19);\n   $$0 = -1;\n   break;\n  } else if ((label | 0) == 34) {\n   _icpGetXw2XcCleanup295($11, $14, $17, $19);\n   $$0 = -1;\n   break;\n  } else if ((label | 0) == 36) {\n   HEAPF64[$err >> 3] = $$lcssa50;\n   _free($11);\n   _free($14);\n   _free($17);\n   _free($19);\n   $$0 = 0;\n   break;\n  }\n } while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arParamObserv2Ideal($dist_factor, $ox, $oy, $ix, $iy, $dist_function_version) {\n $dist_factor = $dist_factor | 0;\n $ox = +$ox;\n $oy = +$oy;\n $ix = $ix | 0;\n $iy = $iy | 0;\n $dist_function_version = $dist_function_version | 0;\n var $$0 = 0, $0 = 0.0, $10 = 0.0, $101 = 0.0, $103 = 0.0, $104 = 0, $106 = 0.0, $109 = 0.0, $113 = 0.0, $116 = 0.0, $117 = 0.0, $118 = 0.0, $119 = 0.0, $12 = 0.0, $134 = 0.0, $14 = 0.0, $146 = 0, $154 = 0.0, $155 = 0.0, $156 = 0, $158 = 0.0, $16 = 0.0, $161 = 0.0, $165 = 0.0, $168 = 0.0, $169 = 0.0, $170 = 0.0, $171 = 0.0, $18 = 0.0, $186 = 0.0, $198 = 0, $2 = 0.0, $20 = 0.0, $206 = 0.0, $207 = 0.0, $208 = 0, $21 = 0.0, $210 = 0.0, $213 = 0.0, $216 = 0.0, $217 = 0.0, $218 = 0.0, $22 = 0.0, $227 = 0.0, $23 = 0.0, $239 = 0, $24 = 0.0, $25 = 0.0, $26 = 0.0, $29 = 0.0, $34 = 0.0, $4 = 0.0, $44 = 0.0, $50 = 0.0, $6 = 0.0, $67 = 0.0, $8 = 0.0, $i$03 = 0, $i14$029 = 0, $i21$042 = 0, $i5$015 = 0, $px$07 = 0.0, $px$1 = 0.0, $px12$027 = 0.0, $px12$1 = 0.0, $px19$040 = 0.0, $px19$1 = 0.0, $px3$012 = 0.0, $px3$1 = 0.0, $py$06 = 0.0, $py$1 = 0.0, $py13$028 = 0.0, $py13$1 = 0.0, $py20$041 = 0.0, $py20$1 = 0.0, $py4$013 = 0.0, $py4$1 = 0.0, $x02$05 = 0.0, $y02$04 = 0.0, $z0$014 = 0.0, $z016$039 = 0.0, $z02$016 = 0.0, $z0215$038 = 0.0, $z026$025 = 0.0, $z07$026 = 0.0;\n switch ($dist_function_version | 0) {\n case 4:\n  {\n   $0 = +HEAPF64[$dist_factor >> 3];\n   $2 = +HEAPF64[$dist_factor + 8 >> 3];\n   $4 = +HEAPF64[$dist_factor + 16 >> 3];\n   $6 = +HEAPF64[$dist_factor + 24 >> 3];\n   $8 = +HEAPF64[$dist_factor + 32 >> 3];\n   $10 = +HEAPF64[$dist_factor + 40 >> 3];\n   $12 = +HEAPF64[$dist_factor + 48 >> 3];\n   $14 = +HEAPF64[$dist_factor + 56 >> 3];\n   $16 = +HEAPF64[$dist_factor + 64 >> 3];\n   $18 = ($ox - $12) / $8;\n   $20 = ($oy - $14) / $10;\n   $21 = $18 * $18;\n   $22 = $20 * $20;\n   $23 = $4 * 2.0;\n   $24 = $6 * 6.0;\n   $25 = $6 * 2.0;\n   $26 = $4 * 6.0;\n   L3 : do if ($22 != 0.0 | $21 != 0.0) {\n    $i$03 = 1;\n    $px$07 = $18;\n    $py$06 = $20;\n    $x02$05 = $21;\n    $y02$04 = $22;\n    while (1) {\n     $29 = $y02$04 + $x02$05;\n     $34 = $0 * $29 + 1.0 + $29 * ($2 * $29);\n     $44 = $x02$05 * 3.0;\n     $50 = $y02$04 * $44;\n     $px$07 = $px$07 - ($6 * ($29 + $x02$05 * 2.0) + ($py$06 * ($23 * $px$07) + $px$07 * $34) - $18) / ($24 * $px$07 + ($23 * $py$06 + ($0 * ($y02$04 + $44) + 1.0 + $2 * ($y02$04 * $y02$04 + ($x02$05 * ($x02$05 * 5.0) + $50)))));\n     $67 = $25 * $px$07;\n     $py$06 = $py$06 - ($4 * ($y02$04 * 2.0 + $29) + $py$06 * $34 + $py$06 * $67 - $20) / ($26 * $py$06 + ($0 * ($x02$05 + $y02$04 * 3.0) + 1.0 + $2 * ($y02$04 * ($y02$04 * 5.0) + ($x02$05 * $x02$05 + $50))) + $67);\n     if (($i$03 | 0) == 4) {\n      $px$1 = $px$07;\n      $py$1 = $py$06;\n      break L3;\n     }\n     $x02$05 = $px$07 * $px$07;\n     $y02$04 = $py$06 * $py$06;\n     if (!($y02$04 != 0.0 | $x02$05 != 0.0)) {\n      $px$1 = 0.0;\n      $py$1 = 0.0;\n      break;\n     } else $i$03 = $i$03 + 1 | 0;\n    }\n   } else {\n    $px$1 = 0.0;\n    $py$1 = 0.0;\n   } while (0);\n   HEAPF64[$ix >> 3] = $12 + $8 * $px$1 / $16;\n   HEAPF64[$iy >> 3] = $14 + $10 * $py$1 / $16;\n   $$0 = 0;\n   break;\n  }\n case 3:\n  {\n   $101 = +HEAPF64[$dist_factor >> 3];\n   $103 = ($ox - $101) / +HEAPF64[$dist_factor + 24 >> 3];\n   $104 = $dist_factor + 8 | 0;\n   $106 = $oy - +HEAPF64[$104 >> 3];\n   $109 = +HEAPF64[$dist_factor + 32 >> 3] / 1.0e8;\n   $113 = +HEAPF64[$dist_factor + 40 >> 3] / 1.0e8 / 1.0e5;\n   $116 = $103 * $103 + $106 * $106;\n   $117 = +Math_sqrt(+$116);\n   $118 = $109 * 3.0;\n   $119 = $113 * 5.0;\n   L9 : do if ($117 != 0.0) {\n    $i5$015 = 1;\n    $px3$012 = $103;\n    $py4$013 = $106;\n    $z0$014 = $117;\n    $z02$016 = $116;\n    while (1) {\n     $134 = $z0$014 - ($z0$014 * (1.0 - $109 * $z02$016 - $z02$016 * ($113 * $z02$016)) - $117) / (1.0 - $118 * $z02$016 - $z02$016 * ($119 * $z02$016));\n     $px3$012 = $px3$012 * $134 / $z0$014;\n     $py4$013 = $py4$013 * $134 / $z0$014;\n     if (($i5$015 | 0) == 3) {\n      $px3$1 = $px3$012;\n      $py4$1 = $py4$013;\n      break L9;\n     }\n     $z02$016 = $px3$012 * $px3$012 + $py4$013 * $py4$013;\n     $z0$014 = +Math_sqrt(+$z02$016);\n     if (!($z0$014 != 0.0)) {\n      $px3$1 = 0.0;\n      $py4$1 = 0.0;\n      break;\n     } else $i5$015 = $i5$015 + 1 | 0;\n    }\n   } else {\n    $px3$1 = 0.0;\n    $py4$1 = 0.0;\n   } while (0);\n   $146 = $dist_factor + 16 | 0;\n   HEAPF64[$ix >> 3] = $px3$1 / +HEAPF64[$146 >> 3] + $101;\n   HEAPF64[$iy >> 3] = $py4$1 / +HEAPF64[$146 >> 3] + +HEAPF64[$104 >> 3];\n   $$0 = 0;\n   break;\n  }\n case 2:\n  {\n   $154 = +HEAPF64[$dist_factor >> 3];\n   $155 = $ox - $154;\n   $156 = $dist_factor + 8 | 0;\n   $158 = $oy - +HEAPF64[$156 >> 3];\n   $161 = +HEAPF64[$dist_factor + 24 >> 3] / 1.0e8;\n   $165 = +HEAPF64[$dist_factor + 32 >> 3] / 1.0e8 / 1.0e5;\n   $168 = $155 * $155 + $158 * $158;\n   $169 = +Math_sqrt(+$168);\n   $170 = $161 * 3.0;\n   $171 = $165 * 5.0;\n   L15 : do if ($169 != 0.0) {\n    $i14$029 = 1;\n    $px12$027 = $155;\n    $py13$028 = $158;\n    $z026$025 = $168;\n    $z07$026 = $169;\n    while (1) {\n     $186 = $z07$026 - ($z07$026 * (1.0 - $161 * $z026$025 - $z026$025 * ($165 * $z026$025)) - $169) / (1.0 - $170 * $z026$025 - $z026$025 * ($171 * $z026$025));\n     $px12$027 = $px12$027 * $186 / $z07$026;\n     $py13$028 = $py13$028 * $186 / $z07$026;\n     if (($i14$029 | 0) == 3) {\n      $px12$1 = $px12$027;\n      $py13$1 = $py13$028;\n      break L15;\n     }\n     $z026$025 = $px12$027 * $px12$027 + $py13$028 * $py13$028;\n     $z07$026 = +Math_sqrt(+$z026$025);\n     if (!($z07$026 != 0.0)) {\n      $px12$1 = 0.0;\n      $py13$1 = 0.0;\n      break;\n     } else $i14$029 = $i14$029 + 1 | 0;\n    }\n   } else {\n    $px12$1 = 0.0;\n    $py13$1 = 0.0;\n   } while (0);\n   $198 = $dist_factor + 16 | 0;\n   HEAPF64[$ix >> 3] = $px12$1 / +HEAPF64[$198 >> 3] + $154;\n   HEAPF64[$iy >> 3] = $py13$1 / +HEAPF64[$198 >> 3] + +HEAPF64[$156 >> 3];\n   $$0 = 0;\n   break;\n  }\n case 1:\n  {\n   $206 = +HEAPF64[$dist_factor >> 3];\n   $207 = $ox - $206;\n   $208 = $dist_factor + 8 | 0;\n   $210 = $oy - +HEAPF64[$208 >> 3];\n   $213 = +HEAPF64[$dist_factor + 24 >> 3] / 1.0e8;\n   $216 = $207 * $207 + $210 * $210;\n   $217 = +Math_sqrt(+$216);\n   $218 = $213 * 3.0;\n   L21 : do if ($217 != 0.0) {\n    $i21$042 = 1;\n    $px19$040 = $207;\n    $py20$041 = $210;\n    $z016$039 = $217;\n    $z0215$038 = $216;\n    while (1) {\n     $227 = $z016$039 - ($z016$039 * (1.0 - $213 * $z0215$038) - $217) / (1.0 - $218 * $z0215$038);\n     $px19$040 = $px19$040 * $227 / $z016$039;\n     $py20$041 = $py20$041 * $227 / $z016$039;\n     if (($i21$042 | 0) == 3) {\n      $px19$1 = $px19$040;\n      $py20$1 = $py20$041;\n      break L21;\n     }\n     $z0215$038 = $px19$040 * $px19$040 + $py20$041 * $py20$041;\n     $z016$039 = +Math_sqrt(+$z0215$038);\n     if (!($z016$039 != 0.0)) {\n      $px19$1 = 0.0;\n      $py20$1 = 0.0;\n      break;\n     } else $i21$042 = $i21$042 + 1 | 0;\n    }\n   } else {\n    $px19$1 = 0.0;\n    $py20$1 = 0.0;\n   } while (0);\n   $239 = $dist_factor + 16 | 0;\n   HEAPF64[$ix >> 3] = $px19$1 / +HEAPF64[$239 >> 3] + $206;\n   HEAPF64[$iy >> 3] = $py20$1 / +HEAPF64[$239 >> 3] + +HEAPF64[$208 >> 3];\n   $$0 = 0;\n   break;\n  }\n default:\n  $$0 = -1;\n }\n return $$0 | 0;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_117parse_source_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) {\n $first = $first | 0;\n $last = $last | 0;\n $db = $db | 0;\n var $$0$i$i$i = 0, $$0$i$i$i8 = 0, $$02 = 0, $$lcssa = 0, $0 = 0, $1 = 0, $10 = 0, $103 = 0, $105 = 0, $108 = 0, $109 = 0, $13 = 0, $19 = 0, $2 = 0, $21 = 0, $26 = 0, $3 = 0, $33 = 0, $35 = 0, $40 = 0, $45 = 0, $47 = 0, $52 = 0, $56 = 0, $59 = 0, $60 = 0, $62 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $76 = 0, $78 = 0, $81 = 0, $82 = 0, $86 = 0, $87 = 0, $89 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $__v$i$i7 = 0, $c$0$in$lcssa = 0, $c$0$in29 = 0, $isdigittmp = 0, $isdigittmp427 = 0, $isdigittmp431 = 0, $n$0$lcssa = 0, $n$030 = 0, $r = 0, dest = 0, sp = 0, src = 0, stop = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 112 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $__v$i$i7 = sp + 88 | 0;\n $r = sp + 76 | 0;\n $0 = sp + 64 | 0;\n $1 = sp + 40 | 0;\n $2 = sp + 16 | 0;\n $3 = sp;\n L1 : do if (($first | 0) == ($last | 0)) $$02 = $first; else {\n  $isdigittmp = (HEAP8[$first >> 0] | 0) + -48 | 0;\n  if ($isdigittmp >>> 0 < 10) {\n   $7 = $first + 1 | 0;\n   if (($7 | 0) == ($last | 0)) $$02 = $first; else {\n    $isdigittmp427 = (HEAP8[$7 >> 0] | 0) + -48 | 0;\n    if ($isdigittmp427 >>> 0 < 10) {\n     $c$0$in29 = $7;\n     $isdigittmp431 = $isdigittmp427;\n     $n$030 = $isdigittmp;\n     while (1) {\n      $10 = $c$0$in29 + 1 | 0;\n      if (($10 | 0) == ($last | 0)) {\n       $$02 = $first;\n       break L1;\n      }\n      $13 = $isdigittmp431 + ($n$030 * 10 | 0) | 0;\n      $isdigittmp431 = (HEAP8[$10 >> 0] | 0) + -48 | 0;\n      if ($isdigittmp431 >>> 0 >= 10) {\n       $$lcssa = $c$0$in29;\n       $c$0$in$lcssa = $10;\n       $n$0$lcssa = $13;\n       break;\n      } else {\n       $c$0$in29 = $10;\n       $n$030 = $13;\n      }\n     }\n    } else {\n     $$lcssa = $first;\n     $c$0$in$lcssa = $7;\n     $n$0$lcssa = $isdigittmp;\n    }\n    if (($last - $c$0$in$lcssa | 0) >>> 0 < $n$0$lcssa >>> 0) $$02 = $first; else {\n     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($r, $c$0$in$lcssa, $n$0$lcssa);\n     $19 = HEAP8[$r >> 0] | 0;\n     $21 = ($19 & 1) == 0;\n     $26 = $21 ? ($19 & 255) >>> 1 : HEAP32[$r + 4 >> 2] | 0;\n     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($0, $21 ? $r + 1 | 0 : HEAP32[$r + 8 >> 2] | 0, $26 >>> 0 < 10 ? $26 : 10);\n     $33 = HEAP8[$0 >> 0] | 0;\n     $35 = ($33 & 1) == 0;\n     $40 = $35 ? ($33 & 255) >>> 1 : HEAP32[$0 + 4 >> 2] | 0;\n     $45 = $40 >>> 0 > 10;\n     $47 = _memcmp($35 ? $0 + 1 | 0 : HEAP32[$0 + 8 >> 2] | 0, 13702, $45 ? 10 : $40) | 0;\n     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);\n     if (!((($47 | 0) == 0 ? ($40 >>> 0 < 10 ? -1 : $45 & 1) : $47) | 0)) {\n      $52 = _malloc(32) | 0;\n      HEAP32[$1 + 8 >> 2] = $52;\n      HEAP32[$1 >> 2] = 33;\n      HEAP32[$1 + 4 >> 2] = 21;\n      dest = $52;\n      src = 13713;\n      stop = dest + 21 | 0;\n      do {\n       HEAP8[dest >> 0] = HEAP8[src >> 0] | 0;\n       dest = dest + 1 | 0;\n       src = src + 1 | 0;\n      } while ((dest | 0) < (stop | 0));\n      HEAP8[$52 + 21 >> 0] = 0;\n      $56 = $1 + 12 | 0;\n      HEAP32[$56 >> 2] = 0;\n      HEAP32[$56 + 4 >> 2] = 0;\n      HEAP32[$56 + 8 >> 2] = 0;\n      $59 = $db + 4 | 0;\n      $60 = HEAP32[$59 >> 2] | 0;\n      $62 = HEAP32[$db + 8 >> 2] | 0;\n      if ($60 >>> 0 < $62 >>> 0) {\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($60, $1);\n       HEAP32[$59 >> 2] = (HEAP32[$59 >> 2] | 0) + 24;\n      } else {\n       $69 = HEAP32[$db >> 2] | 0;\n       $70 = $60 - $69 | 0;\n       $71 = ($70 | 0) / 24 | 0;\n       $72 = $71 + 1 | 0;\n       if (($70 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n       $76 = ($62 - $69 | 0) / 24 | 0;\n       if ($76 >>> 0 < 1073741823) {\n        $78 = $76 << 1;\n        $$0$i$i$i = $78 >>> 0 < $72 >>> 0 ? $72 : $78;\n       } else $$0$i$i$i = 2147483647;\n       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i7, $$0$i$i$i, $71, $db + 12 | 0);\n       $81 = $__v$i$i7 + 8 | 0;\n       $82 = HEAP32[$81 >> 2] | 0;\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($82, $1);\n       HEAP32[$81 >> 2] = $82 + 24;\n       __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i7);\n       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i7);\n      }\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1);\n     } else {\n      HEAP32[$3 >> 2] = HEAP32[$r >> 2];\n      HEAP32[$3 + 4 >> 2] = HEAP32[$r + 4 >> 2];\n      HEAP32[$3 + 8 >> 2] = HEAP32[$r + 8 >> 2];\n      HEAP32[$r >> 2] = 0;\n      HEAP32[$r + 4 >> 2] = 0;\n      HEAP32[$r + 8 >> 2] = 0;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($2, $3);\n      $86 = $db + 4 | 0;\n      $87 = HEAP32[$86 >> 2] | 0;\n      $89 = HEAP32[$db + 8 >> 2] | 0;\n      if ($87 >>> 0 < $89 >>> 0) {\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($87, $2);\n       HEAP32[$86 >> 2] = (HEAP32[$86 >> 2] | 0) + 24;\n      } else {\n       $96 = HEAP32[$db >> 2] | 0;\n       $97 = $87 - $96 | 0;\n       $98 = ($97 | 0) / 24 | 0;\n       $99 = $98 + 1 | 0;\n       if (($97 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n       $103 = ($89 - $96 | 0) / 24 | 0;\n       if ($103 >>> 0 < 1073741823) {\n        $105 = $103 << 1;\n        $$0$i$i$i8 = $105 >>> 0 < $99 >>> 0 ? $99 : $105;\n       } else $$0$i$i$i8 = 2147483647;\n       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i7, $$0$i$i$i8, $98, $db + 12 | 0);\n       $108 = $__v$i$i7 + 8 | 0;\n       $109 = HEAP32[$108 >> 2] | 0;\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($109, $2);\n       HEAP32[$108 >> 2] = $109 + 24;\n       __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i7);\n       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i7);\n      }\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($2);\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);\n     }\n     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($r);\n     $$02 = $$lcssa + ($n$0$lcssa + 1) | 0;\n    }\n   }\n  } else $$02 = $first;\n } while (0);\n STACKTOP = sp;\n return $$02 | 0;\n}\n\nfunction _arPattLoadFromBuffer($pattHandle, $buffer) {\n $pattHandle = $pattHandle | 0;\n $buffer = $buffer | 0;\n var $$0 = 0, $$lcssa = 0, $$lcssa36 = 0, $$pre = 0, $$pre17 = 0, $$pre18 = 0, $$pre19 = 0, $10 = 0, $101 = 0.0, $105 = 0, $13 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $27 = 0, $29 = 0, $30 = 0, $31 = 0, $36 = 0, $4 = 0, $43 = 0, $46 = 0, $47 = 0, $53 = 0, $56 = 0, $6 = 0, $63 = 0, $66 = 0, $72 = 0, $73 = 0, $75 = 0, $77 = 0, $83 = 0.0, $91 = 0, $92 = 0, $94 = 0, $96 = 0, $buffPtr$064 = 0, $buffPtr$151 = 0, $buffPtr$2$lcssa = 0, $buffPtr$2$lcssa$lcssa = 0, $buffPtr$245 = 0, $buffPtr$3$lcssa = 0, $buffPtr$339 = 0, $h$063 = 0, $i$0$lcssa = 0, $i$065 = 0, $i$152 = 0, $i$258 = 0, $i1$037 = 0, $i2$042 = 0, $i3$048 = 0, $l$050 = 0, $l$1$lcssa = 0, $l$1$lcssa$lcssa = 0, $l$144 = 0, $l$2$lcssa = 0, $l$238 = 0, $m$0$lcssa = 0, $m$053 = 0, $m$1$lcssa = 0, $m$159 = 0, $vararg_buffer1 = 0, $vararg_buffer3 = 0, $vararg_buffer5 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 32 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer5 = sp + 24 | 0;\n $vararg_buffer3 = sp + 16 | 0;\n $vararg_buffer1 = sp + 8 | 0;\n do if (!$pattHandle) {\n  _arLog(3, 4649, sp);\n  $$0 = -1;\n } else {\n  if (!$buffer) {\n   _arLog(3, 4674, $vararg_buffer1);\n   $$0 = -1;\n   break;\n  }\n  $2 = $pattHandle + 8 | 0;\n  $4 = HEAP32[$pattHandle + 4 >> 2] | 0;\n  L7 : do if (($4 | 0) > 0) {\n   $6 = HEAP32[$2 >> 2] | 0;\n   $i$065 = 0;\n   while (1) {\n    if (!(HEAP32[$6 + ($i$065 << 2) >> 2] | 0)) {\n     $i$0$lcssa = $i$065;\n     break L7;\n    }\n    $10 = $i$065 + 1 | 0;\n    if (($10 | 0) < ($4 | 0)) $i$065 = $10; else {\n     $i$0$lcssa = $10;\n     break;\n    }\n   }\n  } else $i$0$lcssa = 0; while (0);\n  if (($i$0$lcssa | 0) == ($4 | 0)) $$0 = -1; else {\n   $13 = ___strdup($buffer) | 0;\n   if (!$13) {\n    _arLog(3, 4719, $vararg_buffer3);\n    $$0 = -1;\n    break;\n   }\n   $16 = $pattHandle + 28 | 0;\n   $17 = $i$0$lcssa << 2;\n   $18 = $pattHandle + 12 | 0;\n   $19 = $pattHandle + 20 | 0;\n   $20 = $pattHandle + 16 | 0;\n   $21 = $pattHandle + 24 | 0;\n   $buffPtr$064 = _strtok($13, 4742) | 0;\n   $h$063 = 0;\n   L17 : while (1) {\n    $22 = $h$063 + $17 | 0;\n    $buffPtr$151 = $buffPtr$064;\n    $i3$048 = 0;\n    $l$050 = 0;\n    while (1) {\n     $23 = ($i3$048 | 0) == 0;\n     $24 = ($i3$048 | 0) == 2;\n     $$pre18 = HEAP32[$16 >> 2] | 0;\n     if (($$pre18 | 0) > 0) {\n      $27 = $$pre18;\n      $buffPtr$245 = $buffPtr$151;\n      $i2$042 = 0;\n      $l$144 = $l$050;\n      while (1) {\n       if (($27 | 0) > 0) {\n        $buffPtr$339 = $buffPtr$245;\n        $i1$037 = 0;\n        $l$238 = $l$144;\n        while (1) {\n         if (!$buffPtr$339) {\n          label = 17;\n          break L17;\n         }\n         $29 = _atoi($buffPtr$339) | 0;\n         $30 = _strtok(0, 4742) | 0;\n         $31 = 255 - $29 | 0;\n         $36 = (((Math_imul(HEAP32[$16 >> 2] | 0, $i2$042) | 0) + $i1$037 | 0) * 3 | 0) + $i3$048 | 0;\n         HEAP32[(HEAP32[(HEAP32[$18 >> 2] | 0) + ($22 << 2) >> 2] | 0) + ($36 << 2) >> 2] = $31;\n         $43 = (Math_imul(HEAP32[$16 >> 2] | 0, $i2$042) | 0) + $i1$037 | 0;\n         $46 = HEAP32[(HEAP32[$19 >> 2] | 0) + ($22 << 2) >> 2] | 0;\n         $47 = $46 + ($43 << 2) | 0;\n         if ($23) HEAP32[$47 >> 2] = $31; else {\n          HEAP32[$47 >> 2] = (HEAP32[$47 >> 2] | 0) + $31;\n          if ($24) {\n           $53 = $46 + ((Math_imul(HEAP32[$16 >> 2] | 0, $i2$042) | 0) + $i1$037 << 2) | 0;\n           HEAP32[$53 >> 2] = (HEAP32[$53 >> 2] | 0) / 3 | 0;\n          }\n         }\n         $56 = $31 + $l$238 | 0;\n         $i1$037 = $i1$037 + 1 | 0;\n         $$pre19 = HEAP32[$16 >> 2] | 0;\n         if (($i1$037 | 0) >= ($$pre19 | 0)) {\n          $$lcssa = $$pre19;\n          $buffPtr$3$lcssa = $30;\n          $l$2$lcssa = $56;\n          break;\n         } else {\n          $buffPtr$339 = $30;\n          $l$238 = $56;\n         }\n        }\n       } else {\n        $$lcssa = $27;\n        $buffPtr$3$lcssa = $buffPtr$245;\n        $l$2$lcssa = $l$144;\n       }\n       $i2$042 = $i2$042 + 1 | 0;\n       if (($i2$042 | 0) >= ($$lcssa | 0)) {\n        $buffPtr$2$lcssa = $buffPtr$3$lcssa;\n        $l$1$lcssa = $l$2$lcssa;\n        break;\n       } else {\n        $27 = $$lcssa;\n        $buffPtr$245 = $buffPtr$3$lcssa;\n        $l$144 = $l$2$lcssa;\n       }\n      }\n     } else {\n      $buffPtr$2$lcssa = $buffPtr$151;\n      $l$1$lcssa = $l$050;\n     }\n     $i3$048 = $i3$048 + 1 | 0;\n     if (($i3$048 | 0) >= 3) {\n      $buffPtr$2$lcssa$lcssa = $buffPtr$2$lcssa;\n      $l$1$lcssa$lcssa = $l$1$lcssa;\n      break;\n     } else {\n      $buffPtr$151 = $buffPtr$2$lcssa;\n      $l$050 = $l$1$lcssa;\n     }\n    }\n    $63 = HEAP32[$16 >> 2] | 0;\n    $66 = ($l$1$lcssa$lcssa | 0) / (Math_imul($63 * 3 | 0, $63) | 0) | 0;\n    if ((Math_imul($63 * 3 | 0, $63) | 0) > 0) {\n     $72 = HEAP32[(HEAP32[$18 >> 2] | 0) + ($22 << 2) >> 2] | 0;\n     $i$152 = 0;\n     $m$053 = 0;\n     while (1) {\n      $73 = $72 + ($i$152 << 2) | 0;\n      $75 = (HEAP32[$73 >> 2] | 0) - $66 | 0;\n      HEAP32[$73 >> 2] = $75;\n      $77 = (Math_imul($75, $75) | 0) + $m$053 | 0;\n      $i$152 = $i$152 + 1 | 0;\n      $$pre = HEAP32[$16 >> 2] | 0;\n      if (($i$152 | 0) >= (Math_imul($$pre * 3 | 0, $$pre) | 0)) {\n       $$lcssa36 = $$pre;\n       $m$0$lcssa = $77;\n       break;\n      } else $m$053 = $77;\n     }\n    } else {\n     $$lcssa36 = $63;\n     $m$0$lcssa = 0;\n    }\n    $83 = +Math_sqrt(+(+($m$0$lcssa | 0)));\n    HEAPF64[(HEAP32[$20 >> 2] | 0) + ($22 << 3) >> 3] = $83 == 0.0 ? 1.0e-07 : $83;\n    if (!(Math_imul($$lcssa36, $$lcssa36) | 0)) $m$1$lcssa = 0; else {\n     $91 = HEAP32[(HEAP32[$19 >> 2] | 0) + ($22 << 2) >> 2] | 0;\n     $i$258 = 0;\n     $m$159 = 0;\n     while (1) {\n      $92 = $91 + ($i$258 << 2) | 0;\n      $94 = (HEAP32[$92 >> 2] | 0) - $66 | 0;\n      HEAP32[$92 >> 2] = $94;\n      $96 = (Math_imul($94, $94) | 0) + $m$159 | 0;\n      $i$258 = $i$258 + 1 | 0;\n      $$pre17 = HEAP32[$16 >> 2] | 0;\n      if (($i$258 | 0) >= (Math_imul($$pre17, $$pre17) | 0)) {\n       $m$1$lcssa = $96;\n       break;\n      } else $m$159 = $96;\n     }\n    }\n    $101 = +Math_sqrt(+(+($m$1$lcssa | 0)));\n    HEAPF64[(HEAP32[$21 >> 2] | 0) + ($22 << 3) >> 3] = $101 == 0.0 ? 1.0e-07 : $101;\n    $105 = $h$063 + 1 | 0;\n    if (($105 | 0) < 4) {\n     $buffPtr$064 = $buffPtr$2$lcssa$lcssa;\n     $h$063 = $105;\n    } else {\n     label = 32;\n     break;\n    }\n   }\n   if ((label | 0) == 17) {\n    _arLog(3, 4747, $vararg_buffer5);\n    _free($13);\n    $$0 = -1;\n    break;\n   } else if ((label | 0) == 32) {\n    _free($13);\n    HEAP32[(HEAP32[$2 >> 2] | 0) + ($i$0$lcssa << 2) >> 2] = 1;\n    HEAP32[$pattHandle >> 2] = (HEAP32[$pattHandle >> 2] | 0) + 1;\n    $$0 = $i$0$lcssa;\n    break;\n   }\n  }\n } while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _qsort($base, $nel, $width, $cmp) {\n $base = $base | 0;\n $nel = $nel | 0;\n $width = $width | 0;\n $cmp = $cmp | 0;\n var $$0$i = 0, $$0$i30 = 0, $$02$i$i = 0, $$02$i3$i = 0, $$lcssa = 0, $$lcssa57 = 0, $$phi$trans$insert$i = 0, $$pre1$i = 0, $$pre1$i6 = 0, $$pre1$i9 = 0, $$sum = 0, $0 = 0, $1 = 0, $10 = 0, $111 = 0, $14 = 0, $15 = 0, $17 = 0, $19 = 0, $23 = 0, $26 = 0, $36 = 0, $39 = 0, $41 = 0, $44 = 0, $46 = 0, $48 = 0, $49 = 0, $51 = 0, $53 = 0, $58 = 0, $59 = 0, $63 = 0, $68 = 0, $72 = 0, $79 = 0, $8 = 0, $8$phi = 0, $81 = 0, $82 = 0, $84 = 0, $87 = 0, $9 = 0, $91 = 0, $93 = 0, $94 = 0, $95 = 0, $head$0$lcssa = 0, $head$036 = 0, $head$1$be = 0, $head$153 = 0, $i$0 = 0, $lp = 0, $nTrailingZeros$03$i$i = 0, $nTrailingZeros$03$i2$i = 0, $nTrailingZeros$03$i2$i$lcssa = 0, $p = 0, $pshift$0$lcssa = 0, $pshift$037 = 0, $pshift$1 = 0, $pshift$2$be = 0, $pshift$254 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 208 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $lp = sp + 8 | 0;\n $p = sp;\n $0 = Math_imul($width, $nel) | 0;\n $1 = $p;\n HEAP32[$1 >> 2] = 1;\n HEAP32[$1 + 4 >> 2] = 0;\n if ($0) {\n  $$sum = $0 - $width | 0;\n  HEAP32[$lp + 4 >> 2] = $width;\n  HEAP32[$lp >> 2] = $width;\n  $10 = $width;\n  $8 = $width;\n  $i$0 = 2;\n  while (1) {\n   $9 = $8 + $width + $10 | 0;\n   HEAP32[$lp + ($i$0 << 2) >> 2] = $9;\n   if ($9 >>> 0 < $0 >>> 0) {\n    $8$phi = $10;\n    $10 = $9;\n    $i$0 = $i$0 + 1 | 0;\n    $8 = $8$phi;\n   } else break;\n  }\n  $14 = 0 - $width | 0;\n  $15 = $base + $$sum | 0;\n  $$phi$trans$insert$i = $p + 4 | 0;\n  if (($$sum | 0) > 0) {\n   $17 = $15;\n   $19 = 1;\n   $head$036 = $base;\n   $pshift$037 = 1;\n   while (1) {\n    do if (($19 & 3 | 0) == 3) {\n     _sift($head$036, $width, $cmp, $pshift$037, $lp);\n     $$pre1$i = HEAP32[$$phi$trans$insert$i >> 2] | 0;\n     $23 = $$pre1$i << 30 | (HEAP32[$p >> 2] | 0) >>> 2;\n     HEAP32[$p >> 2] = $23;\n     HEAP32[$$phi$trans$insert$i >> 2] = $$pre1$i >>> 2;\n     $48 = $23;\n     $pshift$1 = $pshift$037 + 2 | 0;\n    } else {\n     $26 = $pshift$037 + -1 | 0;\n     if ((HEAP32[$lp + ($26 << 2) >> 2] | 0) >>> 0 < ($17 - $head$036 | 0) >>> 0) _sift($head$036, $width, $cmp, $pshift$037, $lp); else _trinkle($head$036, $width, $cmp, $p, $pshift$037, 0, $lp);\n     if (($pshift$037 | 0) == 1) {\n      $$pre1$i6 = HEAP32[$p >> 2] | 0;\n      HEAP32[$$phi$trans$insert$i >> 2] = $$pre1$i6 >>> 31 | HEAP32[$$phi$trans$insert$i >> 2] << 1;\n      $36 = $$pre1$i6 << 1;\n      HEAP32[$p >> 2] = $36;\n      $48 = $36;\n      $pshift$1 = 0;\n      break;\n     }\n     if ($26 >>> 0 > 31) {\n      $39 = HEAP32[$p >> 2] | 0;\n      HEAP32[$$phi$trans$insert$i >> 2] = $39;\n      HEAP32[$p >> 2] = 0;\n      $$0$i = $pshift$037 + -33 | 0;\n      $41 = $39;\n      $44 = 0;\n     } else {\n      $$0$i = $26;\n      $41 = HEAP32[$$phi$trans$insert$i >> 2] | 0;\n      $44 = HEAP32[$p >> 2] | 0;\n     }\n     HEAP32[$$phi$trans$insert$i >> 2] = $44 >>> (32 - $$0$i | 0) | $41 << $$0$i;\n     $46 = $44 << $$0$i;\n     HEAP32[$p >> 2] = $46;\n     $48 = $46;\n     $pshift$1 = 1;\n    } while (0);\n    $19 = $48 | 1;\n    HEAP32[$p >> 2] = $19;\n    $49 = $head$036 + $width | 0;\n    if ($49 >>> 0 >= $15 >>> 0) {\n     $head$0$lcssa = $49;\n     $pshift$0$lcssa = $pshift$1;\n     break;\n    } else {\n     $head$036 = $49;\n     $pshift$037 = $pshift$1;\n    }\n   }\n  } else {\n   $head$0$lcssa = $base;\n   $pshift$0$lcssa = 1;\n  }\n  _trinkle($head$0$lcssa, $width, $cmp, $p, $pshift$0$lcssa, 0, $lp);\n  $51 = $p + 4 | 0;\n  $53 = HEAP32[$p >> 2] | 0;\n  if (!(($pshift$0$lcssa | 0) == 1 & ($53 | 0) == 1 & (HEAP32[$51 >> 2] | 0) == 0)) {\n   $59 = $53;\n   $head$153 = $head$0$lcssa;\n   $pshift$254 = $pshift$0$lcssa;\n   while (1) {\n    if (($pshift$254 | 0) < 2) {\n     $58 = $59 + -1 | 0;\n     do if (!$58) {\n      $81 = 32;\n      label = 30;\n     } else {\n      if (!($58 & 1)) {\n       $$02$i$i = $58;\n       $nTrailingZeros$03$i$i = 0;\n       while (1) {\n        $63 = $nTrailingZeros$03$i$i + 1 | 0;\n        $$02$i$i = $$02$i$i >>> 1;\n        if ($$02$i$i & 1) {\n         $$lcssa = $63;\n         break;\n        } else $nTrailingZeros$03$i$i = $63;\n       }\n       if (!$$lcssa) label = 24; else $79 = $$lcssa;\n      } else label = 24;\n      if ((label | 0) == 24) {\n       label = 0;\n       $68 = HEAP32[$$phi$trans$insert$i >> 2] | 0;\n       if (!$68) {\n        $81 = 64;\n        label = 30;\n        break;\n       }\n       if (!($68 & 1)) {\n        $$02$i3$i = $68;\n        $nTrailingZeros$03$i2$i = 0;\n       } else {\n        $$0$i30 = 0;\n        $84 = $59;\n        $87 = $68;\n        $91 = 0;\n        break;\n       }\n       while (1) {\n        $72 = $nTrailingZeros$03$i2$i + 1 | 0;\n        $$02$i3$i = $$02$i3$i >>> 1;\n        if ($$02$i3$i & 1) {\n         $$lcssa57 = $72;\n         $nTrailingZeros$03$i2$i$lcssa = $nTrailingZeros$03$i2$i;\n         break;\n        } else $nTrailingZeros$03$i2$i = $72;\n       }\n       if (!$$lcssa57) {\n        $$0$i30 = 0;\n        $84 = $59;\n        $87 = $68;\n        $91 = 0;\n        break;\n       } else $79 = $nTrailingZeros$03$i2$i$lcssa + 33 | 0;\n      }\n      if ($79 >>> 0 > 31) {\n       $81 = $79;\n       label = 30;\n      } else {\n       $$0$i30 = $79;\n       $84 = $59;\n       $87 = HEAP32[$$phi$trans$insert$i >> 2] | 0;\n       $91 = $79;\n      }\n     } while (0);\n     if ((label | 0) == 30) {\n      label = 0;\n      $82 = HEAP32[$$phi$trans$insert$i >> 2] | 0;\n      HEAP32[$p >> 2] = $82;\n      HEAP32[$$phi$trans$insert$i >> 2] = 0;\n      $$0$i30 = $81 + -32 | 0;\n      $84 = $82;\n      $87 = 0;\n      $91 = $81;\n     }\n     HEAP32[$p >> 2] = $87 << 32 - $$0$i30 | $84 >>> $$0$i30;\n     HEAP32[$$phi$trans$insert$i >> 2] = $87 >>> $$0$i30;\n     $head$1$be = $head$153 + $14 | 0;\n     $pshift$2$be = $91 + $pshift$254 | 0;\n    } else {\n     $93 = $59 >>> 30;\n     $94 = $93 | HEAP32[$$phi$trans$insert$i >> 2] << 2;\n     $95 = $pshift$254 + -2 | 0;\n     HEAP32[$p >> 2] = ($59 << 1 & 2147483646 | $93 << 31) ^ 3;\n     HEAP32[$$phi$trans$insert$i >> 2] = $94 >>> 1;\n     _trinkle($head$153 + (0 - ((HEAP32[$lp + ($95 << 2) >> 2] | 0) + $width)) | 0, $width, $cmp, $p, $pshift$254 + -1 | 0, 1, $lp);\n     $$pre1$i9 = HEAP32[$p >> 2] | 0;\n     HEAP32[$$phi$trans$insert$i >> 2] = $$pre1$i9 >>> 31 | HEAP32[$$phi$trans$insert$i >> 2] << 1;\n     HEAP32[$p >> 2] = $$pre1$i9 << 1 | 1;\n     $111 = $head$153 + $14 | 0;\n     _trinkle($111, $width, $cmp, $p, $95, 1, $lp);\n     $head$1$be = $111;\n     $pshift$2$be = $95;\n    }\n    $59 = HEAP32[$p >> 2] | 0;\n    if (($pshift$2$be | 0) == 1 & ($59 | 0) == 1 & (HEAP32[$51 >> 2] | 0) == 0) break; else {\n     $head$153 = $head$1$be;\n     $pshift$254 = $pshift$2$be;\n    }\n   }\n  }\n }\n STACKTOP = sp;\n return;\n}\n\nfunction _arImageProcLuma($ipi, $dataPtr) {\n $ipi = $ipi | 0;\n $dataPtr = $dataPtr | 0;\n var $$0 = 0, $1 = 0, $104 = 0, $105 = 0, $110 = 0, $111 = 0, $116 = 0, $117 = 0, $122 = 0, $123 = 0, $128 = 0, $129 = 0, $13 = 0, $14 = 0, $157 = 0, $164 = 0, $185 = 0, $192 = 0, $213 = 0, $44 = 0, $45 = 0, $75 = 0, $76 = 0, $p$040 = 0, $p$142 = 0, $p$245 = 0, $p$348 = 0, $p$451 = 0, $p$554 = 0, $p$657 = 0, $p$760 = 0, $q$041 = 0, $q$143 = 0, $q$246 = 0, $q$349 = 0, $q$452 = 0, $q$555 = 0, $q$658 = 0, $q$761 = 0, $vararg_buffer = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $1 = HEAP32[$ipi + 2068 >> 2] | 0;\n L1 : do switch ($1 | 0) {\n case 5:\n case 12:\n case 13:\n case 14:\n  {\n   if (!(HEAP32[$ipi + 2072 >> 2] | 0)) {\n    HEAP32[$ipi >> 2] = $dataPtr;\n    $$0 = 0;\n    break L1;\n   } else {\n    _memcpy(HEAP32[$ipi >> 2] | 0, $dataPtr | 0, Math_imul(HEAP32[$ipi + 12 >> 2] | 0, HEAP32[$ipi + 8 >> 2] | 0) | 0) | 0;\n    $$0 = 0;\n    break L1;\n   }\n   break;\n  }\n default:\n  {\n   if (($1 & -2 | 0) == 2) {\n    $13 = $ipi + 8 | 0;\n    $14 = $ipi + 12 | 0;\n    if (!(Math_imul(HEAP32[$14 >> 2] | 0, HEAP32[$13 >> 2] | 0) | 0)) {\n     $$0 = 0;\n     break L1;\n    } else {\n     $p$040 = 0;\n     $q$041 = 0;\n    }\n    while (1) {\n     HEAP8[(HEAP32[$ipi >> 2] | 0) + $p$040 >> 0] = (((HEAPU8[$dataPtr + ($q$041 | 1) >> 0] | 0) + (HEAPU8[$dataPtr + $q$041 >> 0] | 0) + (HEAPU8[$dataPtr + ($q$041 | 2) >> 0] | 0) | 0) >>> 0) / 3 | 0;\n     $p$040 = $p$040 + 1 | 0;\n     if ($p$040 >>> 0 >= (Math_imul(HEAP32[$14 >> 2] | 0, HEAP32[$13 >> 2] | 0) | 0) >>> 0) {\n      $$0 = 0;\n      break L1;\n     } else $q$041 = $q$041 + 4 | 0;\n    }\n   }\n   if (($1 & -3 | 0) == 4) {\n    $44 = $ipi + 8 | 0;\n    $45 = $ipi + 12 | 0;\n    if (!(Math_imul(HEAP32[$45 >> 2] | 0, HEAP32[$44 >> 2] | 0) | 0)) {\n     $$0 = 0;\n     break L1;\n    } else {\n     $p$142 = 0;\n     $q$143 = 0;\n    }\n    while (1) {\n     HEAP8[(HEAP32[$ipi >> 2] | 0) + $p$142 >> 0] = (((HEAPU8[$dataPtr + ($q$143 | 2) >> 0] | 0) + (HEAPU8[$dataPtr + ($q$143 | 1) >> 0] | 0) + (HEAPU8[$dataPtr + ($q$143 | 3) >> 0] | 0) | 0) >>> 0) / 3 | 0;\n     $p$142 = $p$142 + 1 | 0;\n     if ($p$142 >>> 0 >= (Math_imul(HEAP32[$45 >> 2] | 0, HEAP32[$44 >> 2] | 0) | 0) >>> 0) {\n      $$0 = 0;\n      break L1;\n     } else $q$143 = $q$143 + 4 | 0;\n    }\n   }\n   if ($1 >>> 0 < 2) {\n    $75 = $ipi + 8 | 0;\n    $76 = $ipi + 12 | 0;\n    if (!(Math_imul(HEAP32[$76 >> 2] | 0, HEAP32[$75 >> 2] | 0) | 0)) {\n     $$0 = 0;\n     break L1;\n    } else {\n     $p$245 = 0;\n     $q$246 = 0;\n    }\n    while (1) {\n     HEAP8[(HEAP32[$ipi >> 2] | 0) + $p$245 >> 0] = (((HEAPU8[$dataPtr + ($q$246 + 1) >> 0] | 0) + (HEAPU8[$dataPtr + $q$246 >> 0] | 0) + (HEAPU8[$dataPtr + ($q$246 + 2) >> 0] | 0) | 0) >>> 0) / 3 | 0;\n     $p$245 = $p$245 + 1 | 0;\n     if ($p$245 >>> 0 >= (Math_imul(HEAP32[$76 >> 2] | 0, HEAP32[$75 >> 2] | 0) | 0) >>> 0) {\n      $$0 = 0;\n      break L1;\n     } else $q$246 = $q$246 + 3 | 0;\n    }\n   }\n   switch ($1 | 0) {\n   case 8:\n    {\n     $128 = $ipi + 8 | 0;\n     $129 = $ipi + 12 | 0;\n     if (!(Math_imul(HEAP32[$129 >> 2] | 0, HEAP32[$128 >> 2] | 0) | 0)) {\n      $$0 = 0;\n      break L1;\n     } else {\n      $p$348 = 0;\n      $q$349 = 0;\n     }\n     while (1) {\n      HEAP8[(HEAP32[$ipi >> 2] | 0) + $p$348 >> 0] = HEAP8[$dataPtr + $q$349 >> 0] | 0;\n      $p$348 = $p$348 + 1 | 0;\n      if ($p$348 >>> 0 >= (Math_imul(HEAP32[$129 >> 2] | 0, HEAP32[$128 >> 2] | 0) | 0) >>> 0) {\n       $$0 = 0;\n       break;\n      } else $q$349 = $q$349 + 2 | 0;\n     }\n     break;\n    }\n   case 7:\n    {\n     $122 = $ipi + 8 | 0;\n     $123 = $ipi + 12 | 0;\n     if (!(Math_imul(HEAP32[$123 >> 2] | 0, HEAP32[$122 >> 2] | 0) | 0)) {\n      $$0 = 0;\n      break L1;\n     } else {\n      $p$451 = 0;\n      $q$452 = 0;\n     }\n     while (1) {\n      HEAP8[(HEAP32[$ipi >> 2] | 0) + $p$451 >> 0] = HEAP8[$dataPtr + ($q$452 | 1) >> 0] | 0;\n      $p$451 = $p$451 + 1 | 0;\n      if ($p$451 >>> 0 >= (Math_imul(HEAP32[$123 >> 2] | 0, HEAP32[$122 >> 2] | 0) | 0) >>> 0) {\n       $$0 = 0;\n       break;\n      } else $q$452 = $q$452 + 2 | 0;\n     }\n     break;\n    }\n   case 9:\n    {\n     $116 = $ipi + 8 | 0;\n     $117 = $ipi + 12 | 0;\n     if (!(Math_imul(HEAP32[$117 >> 2] | 0, HEAP32[$116 >> 2] | 0) | 0)) {\n      $$0 = 0;\n      break L1;\n     } else {\n      $p$554 = 0;\n      $q$555 = 0;\n     }\n     while (1) {\n      $157 = HEAPU8[$dataPtr + $q$555 >> 0] | 0;\n      $164 = HEAPU8[$dataPtr + ($q$555 | 1) >> 0] | 0;\n      HEAP8[(HEAP32[$ipi >> 2] | 0) + $p$554 >> 0] = ((($157 & 248) + 10 + ($157 << 5 & 224) + ($164 >>> 3 & 28) + ($164 << 3 & 248) | 0) >>> 0) / 3 | 0;\n      $p$554 = $p$554 + 1 | 0;\n      if ($p$554 >>> 0 >= (Math_imul(HEAP32[$117 >> 2] | 0, HEAP32[$116 >> 2] | 0) | 0) >>> 0) {\n       $$0 = 0;\n       break;\n      } else $q$555 = $q$555 + 2 | 0;\n     }\n     break;\n    }\n   case 10:\n    {\n     $110 = $ipi + 8 | 0;\n     $111 = $ipi + 12 | 0;\n     if (!(Math_imul(HEAP32[$111 >> 2] | 0, HEAP32[$110 >> 2] | 0) | 0)) {\n      $$0 = 0;\n      break L1;\n     } else {\n      $p$657 = 0;\n      $q$658 = 0;\n     }\n     while (1) {\n      $185 = HEAPU8[$dataPtr + $q$658 >> 0] | 0;\n      $192 = HEAPU8[$dataPtr + ($q$658 | 1) >> 0] | 0;\n      HEAP8[(HEAP32[$ipi >> 2] | 0) + $p$657 >> 0] = ((($185 & 248) + 12 + ($185 << 5 & 224) + ($192 >>> 3 & 24) + ($192 << 2 & 248) | 0) >>> 0) / 3 | 0;\n      $p$657 = $p$657 + 1 | 0;\n      if ($p$657 >>> 0 >= (Math_imul(HEAP32[$111 >> 2] | 0, HEAP32[$110 >> 2] | 0) | 0) >>> 0) {\n       $$0 = 0;\n       break;\n      } else $q$658 = $q$658 + 2 | 0;\n     }\n     break;\n    }\n   case 11:\n    {\n     $104 = $ipi + 8 | 0;\n     $105 = $ipi + 12 | 0;\n     if (!(Math_imul(HEAP32[$105 >> 2] | 0, HEAP32[$104 >> 2] | 0) | 0)) {\n      $$0 = 0;\n      break L1;\n     } else {\n      $p$760 = 0;\n      $q$761 = 0;\n     }\n     while (1) {\n      $213 = HEAPU8[$dataPtr + $q$761 >> 0] | 0;\n      HEAP8[(HEAP32[$ipi >> 2] | 0) + $p$760 >> 0] = ((($213 & 240) + 24 + ($213 << 4 & 240) + ((HEAPU8[$dataPtr + ($q$761 | 1) >> 0] | 0) & 240) | 0) >>> 0) / 3 | 0;\n      $p$760 = $p$760 + 1 | 0;\n      if ($p$760 >>> 0 >= (Math_imul(HEAP32[$105 >> 2] | 0, HEAP32[$104 >> 2] | 0) | 0) >>> 0) {\n       $$0 = 0;\n       break;\n      } else $q$761 = $q$761 + 2 | 0;\n     }\n     break;\n    }\n   default:\n    {\n     _arLog(3, 4361, $vararg_buffer);\n     $$0 = -1;\n     break L1;\n    }\n   }\n  }\n } while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($first, $last, $op, $db) {\n $first = $first | 0;\n $last = $last | 0;\n $op = $op | 0;\n $db = $db | 0;\n var $$0 = 0, $0 = 0, $1 = 0, $10 = 0, $101 = 0, $103 = 0, $107 = 0, $11 = 0, $110 = 0, $112 = 0, $117 = 0, $118 = 0, $119 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $25 = 0, $26 = 0, $3 = 0, $34 = 0, $36 = 0, $37 = 0, $4 = 0, $41 = 0, $42 = 0, $44 = 0, $46 = 0, $48 = 0, $5 = 0, $53 = 0, $56 = 0, $58 = 0, $6 = 0, $65 = 0, $68 = 0, $71 = 0, $73 = 0, $8 = 0, $83 = 0, $86 = 0, $89 = 0, $91 = 0, $op1 = 0, $op2 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 96 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $op2 = sp + 84 | 0;\n $op1 = sp + 72 | 0;\n $0 = sp + 60 | 0;\n $1 = sp + 48 | 0;\n $2 = sp + 36 | 0;\n $3 = sp + 24 | 0;\n $4 = sp + 12 | 0;\n $5 = sp;\n $6 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;\n L1 : do if (($6 | 0) == ($first | 0)) $$0 = $first; else {\n  $8 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($6, $last, $db) | 0;\n  $10 = $db + 4 | 0;\n  $11 = HEAP32[$10 >> 2] | 0;\n  if (($8 | 0) == ($6 | 0)) {\n   $117 = $11 + -24 | 0;\n   $119 = $11;\n   while (1) {\n    $118 = $119 + -24 | 0;\n    HEAP32[$10 >> 2] = $118;\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($118);\n    $119 = HEAP32[$10 >> 2] | 0;\n    if (($119 | 0) == ($117 | 0)) {\n     $$0 = $first;\n     break L1;\n    }\n   }\n  }\n  if ((($11 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$0 = $first; else {\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($op2, $11 + -24 | 0);\n   $19 = HEAP32[$10 >> 2] | 0;\n   $20 = $19 + -24 | 0;\n   $22 = $19;\n   do {\n    $21 = $22 + -24 | 0;\n    HEAP32[$10 >> 2] = $21;\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($21);\n    $22 = HEAP32[$10 >> 2] | 0;\n   } while (($22 | 0) != ($20 | 0));\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($op1, $19 + -48 | 0);\n   $25 = HEAP32[$10 >> 2] | 0;\n   $26 = $25 + -24 | 0;\n   if (!(HEAP8[$26 >> 0] & 1)) {\n    HEAP8[$26 + 1 >> 0] = 0;\n    HEAP8[$26 >> 0] = 0;\n   } else {\n    HEAP8[HEAP32[$25 + -16 >> 2] >> 0] = 0;\n    HEAP32[$25 + -20 >> 2] = 0;\n   }\n   $34 = HEAP8[$op >> 0] | 0;\n   $36 = ($34 & 1) == 0;\n   $37 = $op + 4 | 0;\n   $41 = $36 ? ($34 & 255) >>> 1 : HEAP32[$37 >> 2] | 0;\n   $42 = $op + 8 | 0;\n   $44 = $op + 1 | 0;\n   $46 = $41 >>> 0 > 1;\n   $48 = _memcmp($36 ? $44 : HEAP32[$42 >> 2] | 0, 12752, $46 ? 1 : $41) | 0;\n   if (!((($48 | 0) == 0 ? (($41 | 0) == 0 ? -1 : $46 & 1) : $48) | 0)) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9push_backEc($26, 40);\n   __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($5, 12688, $op1);\n   $53 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($5, 13981) | 0;\n   HEAP32[$4 >> 2] = HEAP32[$53 >> 2];\n   HEAP32[$4 + 4 >> 2] = HEAP32[$53 + 4 >> 2];\n   HEAP32[$4 + 8 >> 2] = HEAP32[$53 + 8 >> 2];\n   HEAP32[$53 >> 2] = 0;\n   HEAP32[$53 + 4 >> 2] = 0;\n   HEAP32[$53 + 8 >> 2] = 0;\n   $56 = HEAP8[$op >> 0] | 0;\n   $58 = ($56 & 1) == 0;\n   $65 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($4, $58 ? $44 : HEAP32[$42 >> 2] | 0, $58 ? ($56 & 255) >>> 1 : HEAP32[$37 >> 2] | 0) | 0;\n   HEAP32[$3 >> 2] = HEAP32[$65 >> 2];\n   HEAP32[$3 + 4 >> 2] = HEAP32[$65 + 4 >> 2];\n   HEAP32[$3 + 8 >> 2] = HEAP32[$65 + 8 >> 2];\n   HEAP32[$65 >> 2] = 0;\n   HEAP32[$65 + 4 >> 2] = 0;\n   HEAP32[$65 + 8 >> 2] = 0;\n   $68 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($3, 12590) | 0;\n   HEAP32[$2 >> 2] = HEAP32[$68 >> 2];\n   HEAP32[$2 + 4 >> 2] = HEAP32[$68 + 4 >> 2];\n   HEAP32[$2 + 8 >> 2] = HEAP32[$68 + 8 >> 2];\n   HEAP32[$68 >> 2] = 0;\n   HEAP32[$68 + 4 >> 2] = 0;\n   HEAP32[$68 + 8 >> 2] = 0;\n   $71 = HEAP8[$op2 >> 0] | 0;\n   $73 = ($71 & 1) == 0;\n   $83 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($2, $73 ? $op2 + 1 | 0 : HEAP32[$op2 + 8 >> 2] | 0, $73 ? ($71 & 255) >>> 1 : HEAP32[$op2 + 4 >> 2] | 0) | 0;\n   HEAP32[$1 >> 2] = HEAP32[$83 >> 2];\n   HEAP32[$1 + 4 >> 2] = HEAP32[$83 + 4 >> 2];\n   HEAP32[$1 + 8 >> 2] = HEAP32[$83 + 8 >> 2];\n   HEAP32[$83 >> 2] = 0;\n   HEAP32[$83 + 4 >> 2] = 0;\n   HEAP32[$83 + 8 >> 2] = 0;\n   $86 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1, 12593) | 0;\n   HEAP32[$0 >> 2] = HEAP32[$86 >> 2];\n   HEAP32[$0 + 4 >> 2] = HEAP32[$86 + 4 >> 2];\n   HEAP32[$0 + 8 >> 2] = HEAP32[$86 + 8 >> 2];\n   HEAP32[$86 >> 2] = 0;\n   HEAP32[$86 + 4 >> 2] = 0;\n   HEAP32[$86 + 8 >> 2] = 0;\n   $89 = HEAP8[$0 >> 0] | 0;\n   $91 = ($89 & 1) == 0;\n   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($26, $91 ? $0 + 1 | 0 : HEAP32[$0 + 8 >> 2] | 0, $91 ? ($89 & 255) >>> 1 : HEAP32[$0 + 4 >> 2] | 0) | 0;\n   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);\n   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);\n   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);\n   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);\n   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4);\n   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($5);\n   $101 = HEAP8[$op >> 0] | 0;\n   $103 = ($101 & 1) == 0;\n   $107 = $103 ? ($101 & 255) >>> 1 : HEAP32[$37 >> 2] | 0;\n   $110 = $107 >>> 0 > 1;\n   $112 = _memcmp($103 ? $44 : HEAP32[$42 >> 2] | 0, 12752, $110 ? 1 : $107) | 0;\n   if (!((($112 | 0) == 0 ? (($107 | 0) == 0 ? -1 : $110 & 1) : $112) | 0)) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9push_backEc($26, 41);\n   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($op1);\n   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($op2);\n   $$0 = $8;\n  }\n } while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction __ZNK10__cxxabiv121__vmi_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib($this, $info, $current_ptr, $path_below, $use_strcmp) {\n $this = $this | 0;\n $info = $info | 0;\n $current_ptr = $current_ptr | 0;\n $path_below = $path_below | 0;\n $use_strcmp = $use_strcmp | 0;\n var $14 = 0, $20 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $30 = 0, $49 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $64 = 0, $67 = 0, $70 = 0, $77 = 0, $78 = 0, $79 = 0, $does_dst_type_point_to_our_static_type$0$off0$lcssa = 0, $does_dst_type_point_to_our_static_type$0$off023 = 0, $does_dst_type_point_to_our_static_type$1$off0 = 0, $is_dst_type_derived_from_static_type$0$off025 = 0, $is_dst_type_derived_from_static_type$1$off0 = 0, $is_dst_type_derived_from_static_type$2$off0 = 0, $p$024 = 0, $p2$0 = 0, $p2$1 = 0, $p2$2 = 0, label = 0;\n L1 : do if (($this | 0) == (HEAP32[$info + 8 >> 2] | 0)) {\n  if ((HEAP32[$info + 4 >> 2] | 0) == ($current_ptr | 0)) {\n   $6 = $info + 28 | 0;\n   if ((HEAP32[$6 >> 2] | 0) != 1) HEAP32[$6 >> 2] = $path_below;\n  }\n } else {\n  if (($this | 0) != (HEAP32[$info >> 2] | 0)) {\n   $59 = HEAP32[$this + 12 >> 2] | 0;\n   $60 = $this + 16 + ($59 << 3) | 0;\n   __ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib($this + 16 | 0, $info, $current_ptr, $path_below, $use_strcmp);\n   $61 = $this + 24 | 0;\n   if (($59 | 0) <= 1) break;\n   $64 = HEAP32[$this + 8 >> 2] | 0;\n   if (!($64 & 2)) {\n    $67 = $info + 36 | 0;\n    if ((HEAP32[$67 >> 2] | 0) != 1) {\n     if (!($64 & 1)) {\n      $79 = $info + 54 | 0;\n      $p2$2 = $61;\n      while (1) {\n       if (HEAP8[$79 >> 0] | 0) break L1;\n       if ((HEAP32[$67 >> 2] | 0) == 1) break L1;\n       __ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib($p2$2, $info, $current_ptr, $path_below, $use_strcmp);\n       $p2$2 = $p2$2 + 8 | 0;\n       if ($p2$2 >>> 0 >= $60 >>> 0) break L1;\n      }\n     }\n     $77 = $info + 24 | 0;\n     $78 = $info + 54 | 0;\n     $p2$1 = $61;\n     while (1) {\n      if (HEAP8[$78 >> 0] | 0) break L1;\n      if ((HEAP32[$67 >> 2] | 0) == 1) if ((HEAP32[$77 >> 2] | 0) == 1) break L1;\n      __ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib($p2$1, $info, $current_ptr, $path_below, $use_strcmp);\n      $p2$1 = $p2$1 + 8 | 0;\n      if ($p2$1 >>> 0 >= $60 >>> 0) break L1;\n     }\n    }\n   }\n   $70 = $info + 54 | 0;\n   $p2$0 = $61;\n   while (1) {\n    if (HEAP8[$70 >> 0] | 0) break L1;\n    __ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib($p2$0, $info, $current_ptr, $path_below, $use_strcmp);\n    $p2$0 = $p2$0 + 8 | 0;\n    if ($p2$0 >>> 0 >= $60 >>> 0) break L1;\n   }\n  }\n  if ((HEAP32[$info + 16 >> 2] | 0) != ($current_ptr | 0)) {\n   $14 = $info + 20 | 0;\n   if ((HEAP32[$14 >> 2] | 0) != ($current_ptr | 0)) {\n    HEAP32[$info + 32 >> 2] = $path_below;\n    $20 = $info + 44 | 0;\n    if ((HEAP32[$20 >> 2] | 0) == 4) break;\n    $24 = HEAP32[$this + 12 >> 2] | 0;\n    $25 = $this + 16 + ($24 << 3) | 0;\n    $26 = $info + 52 | 0;\n    $27 = $info + 53 | 0;\n    $28 = $info + 54 | 0;\n    $29 = $this + 8 | 0;\n    $30 = $info + 24 | 0;\n    L34 : do if (($24 | 0) > 0) {\n     $does_dst_type_point_to_our_static_type$0$off023 = 0;\n     $is_dst_type_derived_from_static_type$0$off025 = 0;\n     $p$024 = $this + 16 | 0;\n     while (1) {\n      HEAP8[$26 >> 0] = 0;\n      HEAP8[$27 >> 0] = 0;\n      __ZNK10__cxxabiv122__base_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib($p$024, $info, $current_ptr, $current_ptr, 1, $use_strcmp);\n      if (HEAP8[$28 >> 0] | 0) {\n       $does_dst_type_point_to_our_static_type$0$off0$lcssa = $does_dst_type_point_to_our_static_type$0$off023;\n       $is_dst_type_derived_from_static_type$2$off0 = $is_dst_type_derived_from_static_type$0$off025;\n       label = 20;\n       break L34;\n      }\n      do if (!(HEAP8[$27 >> 0] | 0)) {\n       $does_dst_type_point_to_our_static_type$1$off0 = $does_dst_type_point_to_our_static_type$0$off023;\n       $is_dst_type_derived_from_static_type$1$off0 = $is_dst_type_derived_from_static_type$0$off025;\n      } else {\n       if (!(HEAP8[$26 >> 0] | 0)) if (!(HEAP32[$29 >> 2] & 1)) {\n        $does_dst_type_point_to_our_static_type$0$off0$lcssa = $does_dst_type_point_to_our_static_type$0$off023;\n        $is_dst_type_derived_from_static_type$2$off0 = 1;\n        label = 20;\n        break L34;\n       } else {\n        $does_dst_type_point_to_our_static_type$1$off0 = $does_dst_type_point_to_our_static_type$0$off023;\n        $is_dst_type_derived_from_static_type$1$off0 = 1;\n        break;\n       }\n       if ((HEAP32[$30 >> 2] | 0) == 1) break L34;\n       if (!(HEAP32[$29 >> 2] & 2)) break L34; else {\n        $does_dst_type_point_to_our_static_type$1$off0 = 1;\n        $is_dst_type_derived_from_static_type$1$off0 = 1;\n       }\n      } while (0);\n      $p$024 = $p$024 + 8 | 0;\n      if ($p$024 >>> 0 >= $25 >>> 0) {\n       $does_dst_type_point_to_our_static_type$0$off0$lcssa = $does_dst_type_point_to_our_static_type$1$off0;\n       $is_dst_type_derived_from_static_type$2$off0 = $is_dst_type_derived_from_static_type$1$off0;\n       label = 20;\n       break;\n      } else {\n       $does_dst_type_point_to_our_static_type$0$off023 = $does_dst_type_point_to_our_static_type$1$off0;\n       $is_dst_type_derived_from_static_type$0$off025 = $is_dst_type_derived_from_static_type$1$off0;\n      }\n     }\n    } else {\n     $does_dst_type_point_to_our_static_type$0$off0$lcssa = 0;\n     $is_dst_type_derived_from_static_type$2$off0 = 0;\n     label = 20;\n    } while (0);\n    do if ((label | 0) == 20) {\n     if ($does_dst_type_point_to_our_static_type$0$off0$lcssa) label = 24; else {\n      HEAP32[$14 >> 2] = $current_ptr;\n      $49 = $info + 40 | 0;\n      HEAP32[$49 >> 2] = (HEAP32[$49 >> 2] | 0) + 1;\n      if ((HEAP32[$info + 36 >> 2] | 0) == 1) if ((HEAP32[$30 >> 2] | 0) == 2) {\n       HEAP8[$28 >> 0] = 1;\n       if ($is_dst_type_derived_from_static_type$2$off0) break;\n      } else label = 24; else label = 24;\n     }\n     if ((label | 0) == 24) if ($is_dst_type_derived_from_static_type$2$off0) break;\n     HEAP32[$20 >> 2] = 4;\n     break L1;\n    } while (0);\n    HEAP32[$20 >> 2] = 3;\n    break;\n   }\n  }\n  if (($path_below | 0) == 1) HEAP32[$info + 32 >> 2] = 1;\n } while (0);\n return;\n}\n\nfunction _arVecTridiagonalize($a, $d, $e) {\n $a = $a | 0;\n $d = $d | 0;\n $e = $e | 0;\n var $$0 = 0, $$pre$phiZ2D = 0, $1 = 0, $106 = 0, $107 = 0, $110 = 0, $112 = 0, $113 = 0, $114 = 0, $117 = 0, $118 = 0, $12 = 0, $120 = 0, $121 = 0, $125 = 0.0, $126 = 0, $13 = 0, $131 = 0, $14 = 0, $16 = 0, $17 = 0, $23 = 0, $25 = 0, $26 = 0.0, $32 = 0, $34 = 0, $35 = 0, $37 = 0, $40 = 0, $45 = 0.0, $54 = 0.0, $63 = 0.0, $65 = 0, $68 = 0.0, $70 = 0, $72 = 0.0, $73 = 0, $75 = 0, $84 = 0, $90 = 0, $92 = 0, $95 = 0, $97 = 0, $i$039 = 0, $i$143 = 0, $i$144 = 0, $i$223 = 0, $i$325 = 0, $j$032 = 0, $j$135 = 0, $j$240 = 0, $j$320 = 0, $k$047 = 0, $k$129$in = 0, $s$0$lcssa = 0.0, $s$031 = 0.0, $s$1$lcssa = 0.0, $s$134 = 0.0, $wv1 = 0, $wv2 = 0, label = 0, sp = 0, $k$047$looptemp = 0, $k$129$in$looptemp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $wv1 = sp + 8 | 0;\n $wv2 = sp;\n $1 = HEAP32[$a + 8 >> 2] | 0;\n if (($1 | 0) == (HEAP32[$a + 4 >> 2] | 0)) if (($1 | 0) == (HEAP32[$d + 4 >> 2] | 0)) if (($1 | 0) == ((HEAP32[$e + 4 >> 2] | 0) + 1 | 0)) {\n  $12 = $1 + -2 | 0;\n  $13 = $wv1 + 4 | 0;\n  $14 = $wv2 + 4 | 0;\n  if (($1 | 0) > 2) {\n   $i$143 = $1 + -1 | 0;\n   $k$047 = 0;\n   do {\n    $16 = Math_imul($k$047, $1) | 0;\n    $17 = HEAP32[$a >> 2] | 0;\n    HEAPF64[(HEAP32[$d >> 2] | 0) + ($k$047 << 3) >> 3] = +HEAPF64[$17 + ($16 + $k$047 << 3) >> 3];\n    $23 = $1 - $k$047 + -1 | 0;\n    HEAP32[$13 >> 2] = $23;\n    $k$047$looptemp = $k$047;\n    $k$047 = $k$047 + 1 | 0;\n    $25 = $17 + ($16 + $k$047 << 3) | 0;\n    HEAP32[$wv1 >> 2] = $25;\n    $26 = +_arVecHousehold($wv1);\n    HEAPF64[(HEAP32[$e >> 2] | 0) + ($k$047$looptemp << 3) >> 3] = $26;\n    if (!($26 == 0.0)) {\n     if (($k$047 | 0) < ($1 | 0)) {\n      $32 = HEAP32[$d >> 2] | 0;\n      $i$039 = $k$047;\n      do {\n       if (($k$047 | 0) < ($i$039 | 0)) {\n        $34 = HEAP32[$a >> 2] | 0;\n        $j$032 = $k$047;\n        $s$031 = 0.0;\n        while (1) {\n         $40 = $34 + ((Math_imul($j$032, $1) | 0) + $i$039 << 3) | 0;\n         $45 = $s$031 + +HEAPF64[$40 >> 3] * +HEAPF64[$17 + ($j$032 + $16 << 3) >> 3];\n         $j$032 = $j$032 + 1 | 0;\n         if (($j$032 | 0) >= ($i$039 | 0)) {\n          $s$0$lcssa = $45;\n          break;\n         } else $s$031 = $45;\n        }\n       } else $s$0$lcssa = 0.0;\n       $35 = Math_imul($i$039, $1) | 0;\n       if (($i$039 | 0) < ($1 | 0)) {\n        $37 = HEAP32[$a >> 2] | 0;\n        $j$135 = $i$039;\n        $s$134 = $s$0$lcssa;\n        while (1) {\n         $54 = $s$134 + +HEAPF64[$37 + ($j$135 + $35 << 3) >> 3] * +HEAPF64[$17 + ($j$135 + $16 << 3) >> 3];\n         $j$135 = $j$135 + 1 | 0;\n         if (($j$135 | 0) >= ($1 | 0)) {\n          $s$1$lcssa = $54;\n          break;\n         } else $s$134 = $54;\n        }\n       } else $s$1$lcssa = $s$0$lcssa;\n       HEAPF64[$32 + ($i$039 << 3) >> 3] = $s$1$lcssa;\n       $i$039 = $i$039 + 1 | 0;\n      } while (($i$039 | 0) < ($1 | 0));\n     }\n     HEAP32[$14 >> 2] = $23;\n     HEAP32[$13 >> 2] = $23;\n     HEAP32[$wv1 >> 2] = $25;\n     HEAP32[$wv2 >> 2] = (HEAP32[$d >> 2] | 0) + ($k$047 << 3);\n     $63 = +_arVecInnerproduct($wv1, $wv2) * .5;\n     if (($i$143 | 0) > ($k$047$looptemp | 0)) {\n      $65 = HEAP32[$d >> 2] | 0;\n      $i$144 = $i$143;\n      do {\n       $68 = +HEAPF64[$17 + ($i$144 + $16 << 3) >> 3];\n       $70 = $65 + ($i$144 << 3) | 0;\n       $72 = +HEAPF64[$70 >> 3] - $63 * $68;\n       HEAPF64[$70 >> 3] = $72;\n       $73 = Math_imul($i$144, $1) | 0;\n       if (($i$144 | 0) < ($1 | 0)) {\n        $75 = HEAP32[$a >> 2] | 0;\n        $j$240 = $i$144;\n        do {\n         $84 = $75 + ($j$240 + $73 << 3) | 0;\n         HEAPF64[$84 >> 3] = +HEAPF64[$84 >> 3] - ($68 * +HEAPF64[$65 + ($j$240 << 3) >> 3] + $72 * +HEAPF64[$17 + ($j$240 + $16 << 3) >> 3]);\n         $j$240 = $j$240 + 1 | 0;\n        } while (($j$240 | 0) < ($1 | 0));\n       }\n       $i$144 = $i$144 + -1 | 0;\n      } while (($i$144 | 0) > ($k$047$looptemp | 0));\n     }\n    }\n   } while (($k$047 | 0) < ($12 | 0));\n  }\n  if (($1 | 0) > 1) {\n   $90 = Math_imul($12, $1) | 0;\n   $92 = HEAP32[$a >> 2] | 0;\n   $95 = HEAP32[$d >> 2] | 0;\n   HEAPF64[$95 + ($12 << 3) >> 3] = +HEAPF64[$92 + ($90 + $12 << 3) >> 3];\n   $97 = $1 + -1 | 0;\n   HEAPF64[(HEAP32[$e >> 2] | 0) + ($12 << 3) >> 3] = +HEAPF64[$92 + ($97 + $90 << 3) >> 3];\n   $$pre$phiZ2D = $97;\n   $107 = $92;\n   $110 = $95;\n   label = 27;\n  } else if (($1 | 0) > 0) {\n   $$pre$phiZ2D = 0;\n   $107 = HEAP32[$a >> 2] | 0;\n   $110 = HEAP32[$d >> 2] | 0;\n   label = 27;\n  }\n  if ((label | 0) == 27) {\n   $106 = $107 + ((Math_imul($$pre$phiZ2D, $1) | 0) + $$pre$phiZ2D << 3) | 0;\n   HEAPF64[$110 + ($$pre$phiZ2D << 3) >> 3] = +HEAPF64[$106 >> 3];\n  }\n  if (($1 | 0) > 0) {\n   $112 = ($1 | 0) > 0;\n   $k$129$in = $1;\n   do {\n    $k$129$in$looptemp = $k$129$in;\n    $k$129$in = $k$129$in + -1 | 0;\n    $113 = Math_imul($k$129$in, $1) | 0;\n    $114 = HEAP32[$a >> 2] | 0;\n    if (($k$129$in$looptemp | 0) <= ($12 | 0)) {\n     $117 = $1 - $k$129$in + -1 | 0;\n     $118 = $114 + ($113 + $k$129$in$looptemp << 3) | 0;\n     if (($k$129$in$looptemp | 0) < ($1 | 0)) {\n      $120 = ($k$129$in$looptemp | 0) < ($1 | 0);\n      $i$223 = $k$129$in$looptemp;\n      do {\n       HEAP32[$14 >> 2] = $117;\n       HEAP32[$13 >> 2] = $117;\n       HEAP32[$wv1 >> 2] = $118;\n       $121 = Math_imul($i$223, $1) | 0;\n       HEAP32[$wv2 >> 2] = (HEAP32[$a >> 2] | 0) + ($121 + $k$129$in$looptemp << 3);\n       $125 = +_arVecInnerproduct($wv1, $wv2);\n       if ($120) {\n        $126 = HEAP32[$a >> 2] | 0;\n        $j$320 = $k$129$in$looptemp;\n        do {\n         $131 = $126 + ($j$320 + $121 << 3) | 0;\n         HEAPF64[$131 >> 3] = +HEAPF64[$131 >> 3] - $125 * +HEAPF64[$114 + ($j$320 + $113 << 3) >> 3];\n         $j$320 = $j$320 + 1 | 0;\n        } while (($j$320 | 0) < ($1 | 0));\n       }\n       $i$223 = $i$223 + 1 | 0;\n      } while (($i$223 | 0) < ($1 | 0));\n     }\n    }\n    if ($112) {\n     $i$325 = 0;\n     do {\n      HEAPF64[$114 + ($i$325 + $113 << 3) >> 3] = 0.0;\n      $i$325 = $i$325 + 1 | 0;\n     } while (($i$325 | 0) < ($1 | 0));\n    }\n    HEAPF64[$114 + ($113 + $k$129$in << 3) >> 3] = 1.0;\n   } while (($k$129$in$looptemp | 0) > 1);\n   $$0 = 0;\n  } else $$0 = 0;\n } else $$0 = -1; else $$0 = -1; else $$0 = -1;\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_18demangleINS0_2DbEEEvPKcS4_RT_Ri($first, $last, $db, $status) {\n $first = $first | 0;\n $last = $last | 0;\n $db = $db | 0;\n $status = $status | 0;\n var $$0$i$i$i11 = 0, $$0$i2 = 0, $$03$i = 0, $$lcssa = 0, $0 = 0, $1 = 0, $12 = 0, $13 = 0, $2 = 0, $20 = 0, $22 = 0, $24 = 0, $31 = 0, $32 = 0, $41 = 0, $44 = 0, $47 = 0, $49 = 0, $6 = 0, $66 = 0, $67 = 0, $78 = 0, $83 = 0, $95 = 0, $__p$0$i$i$i10 = 0, $__p$0$ph$i$i$i = 0, $i$0$i16 = 0, $t$0 = 0, $t$0$i15 = 0, $t$0$i15$lcssa20 = 0, $t$1$i$ph = 0, $t$1$i12 = 0, $t$2$i = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 48 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $0 = sp + 24 | 0;\n $1 = sp + 12 | 0;\n $2 = sp;\n L1 : do if ($first >>> 0 < $last >>> 0) {\n  L3 : do if ((HEAP8[$first >> 0] | 0) == 95) {\n   $6 = $last;\n   if (($6 - $first | 0) <= 3) {\n    HEAP32[$status >> 2] = -2;\n    break L1;\n   }\n   switch (HEAP8[$first + 1 >> 0] | 0) {\n   case 90:\n    {\n     $12 = $first + 2 | 0;\n     $13 = __ZN10__cxxabiv112_GLOBAL__N_114parse_encodingINS0_2DbEEEPKcS4_S4_RT_($12, $last, $db) | 0;\n     if (($13 | 0) == ($12 | 0) | ($13 | 0) == ($last | 0)) $t$0 = $13; else if ((HEAP8[$13 >> 0] | 0) == 46) {\n      $20 = HEAP32[$db + 4 >> 2] | 0;\n      if ((HEAP32[$db >> 2] | 0) == ($20 | 0)) $$03$i = $13; else {\n       $22 = $20 + -24 | 0;\n       $24 = $6 - $13 | 0;\n       if ($24 >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv($2);\n       if ($24 >>> 0 < 11) {\n        HEAP8[$2 >> 0] = $24 << 1;\n        $__p$0$ph$i$i$i = $2 + 1 | 0;\n       } else {\n        $31 = $24 + 16 & -16;\n        $32 = _malloc($31) | 0;\n        HEAP32[$2 + 8 >> 2] = $32;\n        HEAP32[$2 >> 2] = $31 | 1;\n        HEAP32[$2 + 4 >> 2] = $24;\n        $__p$0$ph$i$i$i = $32;\n       }\n       if (($13 | 0) != ($last | 0)) {\n        $$0$i$i$i11 = $13;\n        $__p$0$i$i$i10 = $__p$0$ph$i$i$i;\n        while (1) {\n         HEAP8[$__p$0$i$i$i10 >> 0] = HEAP8[$$0$i$i$i11 >> 0] | 0;\n         $$0$i$i$i11 = $$0$i$i$i11 + 1 | 0;\n         if (($$0$i$i$i11 | 0) == ($last | 0)) break; else $__p$0$i$i$i10 = $__p$0$i$i$i10 + 1 | 0;\n        }\n       }\n       HEAP8[$__p$0$ph$i$i$i + $24 >> 0] = 0;\n       $41 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($2, 0, 12590) | 0;\n       HEAP32[$1 >> 2] = HEAP32[$41 >> 2];\n       HEAP32[$1 + 4 >> 2] = HEAP32[$41 + 4 >> 2];\n       HEAP32[$1 + 8 >> 2] = HEAP32[$41 + 8 >> 2];\n       HEAP32[$41 >> 2] = 0;\n       HEAP32[$41 + 4 >> 2] = 0;\n       HEAP32[$41 + 8 >> 2] = 0;\n       $44 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1, 12593) | 0;\n       HEAP32[$0 >> 2] = HEAP32[$44 >> 2];\n       HEAP32[$0 + 4 >> 2] = HEAP32[$44 + 4 >> 2];\n       HEAP32[$0 + 8 >> 2] = HEAP32[$44 + 8 >> 2];\n       HEAP32[$44 >> 2] = 0;\n       HEAP32[$44 + 4 >> 2] = 0;\n       HEAP32[$44 + 8 >> 2] = 0;\n       $47 = HEAP8[$0 >> 0] | 0;\n       $49 = ($47 & 1) == 0;\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($22, $49 ? $0 + 1 | 0 : HEAP32[$0 + 8 >> 2] | 0, $49 ? ($47 & 255) >>> 1 : HEAP32[$0 + 4 >> 2] | 0) | 0;\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);\n       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);\n       $$03$i = $last;\n      }\n      $t$0 = $$03$i;\n     } else $t$0 = $13;\n     if (($t$0 | 0) == ($last | 0)) break L3;\n     HEAP32[$status >> 2] = -2;\n     break L1;\n     break;\n    }\n   case 95:\n    {\n     label = 20;\n     break;\n    }\n   default:\n    {}\n   }\n   if ((label | 0) == 20) if ((HEAP8[$first + 2 >> 0] | 0) == 95) if ((HEAP8[$first + 3 >> 0] | 0) == 90) {\n    $66 = $first + 4 | 0;\n    $67 = __ZN10__cxxabiv112_GLOBAL__N_114parse_encodingINS0_2DbEEEPKcS4_S4_RT_($66, $last, $db) | 0;\n    if (($67 | 0) == ($66 | 0) | ($67 | 0) == ($last | 0)) {\n     HEAP32[$status >> 2] = -2;\n     break L1;\n    }\n    L36 : do if (($6 - $67 | 0) > 12) {\n     $i$0$i16 = 0;\n     $t$0$i15 = $67;\n     while (1) {\n      if ((HEAP8[$t$0$i15 >> 0] | 0) != (HEAP8[12595 + $i$0$i16 >> 0] | 0)) {\n       $$0$i2 = $67;\n       break L36;\n      }\n      $i$0$i16 = $i$0$i16 + 1 | 0;\n      $78 = $t$0$i15 + 1 | 0;\n      if (($i$0$i16 | 0) >= 13) {\n       $$lcssa = $78;\n       $t$0$i15$lcssa20 = $t$0$i15;\n       break;\n      } else $t$0$i15 = $78;\n     }\n     L41 : do if (($$lcssa | 0) == ($last | 0)) $t$2$i = $last; else {\n      if ((HEAP8[$$lcssa >> 0] | 0) == 95) {\n       $83 = $t$0$i15$lcssa20 + 2 | 0;\n       if (($83 | 0) == ($last | 0)) {\n        $$0$i2 = $67;\n        break L36;\n       }\n       if (((HEAP8[$83 >> 0] | 0) + -48 | 0) >>> 0 >= 10) {\n        $$0$i2 = $67;\n        break L36;\n       }\n       $t$1$i$ph = $t$0$i15$lcssa20 + 3 | 0;\n      } else $t$1$i$ph = $$lcssa;\n      if (($t$1$i$ph | 0) == ($last | 0)) $t$2$i = $last; else {\n       $t$1$i12 = $t$1$i$ph;\n       while (1) {\n        if (((HEAP8[$t$1$i12 >> 0] | 0) + -48 | 0) >>> 0 >= 10) {\n         $t$2$i = $t$1$i12;\n         break L41;\n        }\n        $t$1$i12 = $t$1$i12 + 1 | 0;\n        if (($t$1$i12 | 0) == ($last | 0)) {\n         $t$2$i = $last;\n         break;\n        }\n       }\n      }\n     } while (0);\n     $95 = HEAP32[$db + 4 >> 2] | 0;\n     if ((HEAP32[$db >> 2] | 0) == ($95 | 0)) $$0$i2 = $67; else {\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($95 + -24 | 0, 0, 12609) | 0;\n      $$0$i2 = $t$2$i;\n     }\n    } else $$0$i2 = $67; while (0);\n    if (($$0$i2 | 0) == ($last | 0)) break;\n    HEAP32[$status >> 2] = -2;\n    break L1;\n   }\n   HEAP32[$status >> 2] = -2;\n   break L1;\n  } else if ((__ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0) != ($last | 0)) {\n   HEAP32[$status >> 2] = -2;\n   break L1;\n  } while (0);\n  if (!(HEAP32[$status >> 2] | 0)) if ((HEAP32[$db >> 2] | 0) == (HEAP32[$db + 4 >> 2] | 0)) HEAP32[$status >> 2] = -2;\n } else HEAP32[$status >> 2] = -2; while (0);\n STACKTOP = sp;\n return;\n}\n\nfunction _arMatrixSelfInv($m) {\n $m = $m | 0;\n var $$0$i = 0, $$lcssa = 0, $0 = 0, $13 = 0, $15 = 0, $18 = 0.0, $19 = 0, $2 = 0, $24 = 0, $25 = 0, $26 = 0, $30 = 0.0, $35 = 0.0, $43 = 0, $44 = 0.0, $59 = 0, $61 = 0, $63 = 0, $65 = 0, $70 = 0.0, $exitcond$i23 = 0, $exitcond12$i36 = 0, $exitcond13$i43 = 0, $exitcond7$i30 = 0, $i$0$i14 = 0, $i$1$i45 = 0, $i$2$i8 = 0, $indvars$iv$i49 = 0, $indvars$iv9$i44 = 0, $ip$0$i51 = 0, $ip$1$i$lcssa = 0, $ip$1$i15 = 0, $ip$2$i = 0, $j$0$i24 = 0, $j$1$i31 = 0, $j$2$i37 = 0, $j$3$i$lcssa = 0, $j$3$i4 = 0, $n$0$i53 = 0, $n$1$i50 = 0, $n$2$i12 = 0, $nos$i = 0, $p$0$i$lcssa = 0.0, $p$0$i17 = 0.0, $p$1$i = 0.0, $scevgep$i = 0, $wap$0$i16 = 0, $wap$1$i26 = 0, $wap$2$i32 = 0, $wap$3$i39 = 0, $wap$4$i10 = 0, $wbp$0$i25 = 0, $wbp$1$i38 = 0, $wbp$2$i9 = 0, sp = 0, $wap$2$i32$looptemp = 0, $wap$3$i39$looptemp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 2e3 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $nos$i = sp;\n $0 = HEAP32[$m >> 2] | 0;\n $2 = HEAP32[$m + 4 >> 2] | 0;\n L1 : do if (($2 | 0) > 500) $$0$i = 0; else {\n  switch ($2 | 0) {\n  case 0:\n   {\n    $$0$i = 0;\n    break L1;\n    break;\n   }\n  case 1:\n   {\n    HEAPF64[$0 >> 3] = 1.0 / +HEAPF64[$0 >> 3];\n    $$0$i = $0;\n    break L1;\n    break;\n   }\n  default:\n   {}\n  }\n  if (($2 | 0) > 0) {\n   $n$0$i53 = 0;\n   do {\n    HEAP32[$nos$i + ($n$0$i53 << 2) >> 2] = $n$0$i53;\n    $n$0$i53 = $n$0$i53 + 1 | 0;\n   } while (($n$0$i53 | 0) < ($2 | 0));\n  }\n  $scevgep$i = $0 + ($2 + -1 << 3) | 0;\n  if (($2 | 0) > 0) {\n   $exitcond$i23 = ($2 | 0) == 0;\n   $exitcond7$i30 = ($2 | 0) == 1;\n   $exitcond13$i43 = ($2 | 0) == 0;\n   $exitcond12$i36 = ($2 | 0) == 1;\n   $indvars$iv$i49 = $scevgep$i;\n   $ip$0$i51 = 0;\n   $n$1$i50 = 0;\n   while (1) {\n    $15 = $0 + ((Math_imul($n$1$i50, $2) | 0) << 3) | 0;\n    if (($n$1$i50 | 0) < ($2 | 0)) {\n     $i$0$i14 = $n$1$i50;\n     $ip$1$i15 = $ip$0$i51;\n     $p$0$i17 = 0.0;\n     $wap$0$i16 = $15;\n     while (1) {\n      $18 = +Math_abs(+(+HEAPF64[$wap$0$i16 >> 3]));\n      $19 = $p$0$i17 < $18;\n      $ip$2$i = $19 ? $i$0$i14 : $ip$1$i15;\n      $p$1$i = $19 ? $18 : $p$0$i17;\n      $i$0$i14 = $i$0$i14 + 1 | 0;\n      if (($i$0$i14 | 0) >= ($2 | 0)) {\n       $ip$1$i$lcssa = $ip$2$i;\n       $p$0$i$lcssa = $p$1$i;\n       break;\n      } else {\n       $ip$1$i15 = $ip$2$i;\n       $p$0$i17 = $p$1$i;\n       $wap$0$i16 = $wap$0$i16 + ($2 << 3) | 0;\n      }\n     }\n    } else {\n     $ip$1$i$lcssa = $ip$0$i51;\n     $p$0$i$lcssa = 0.0;\n    }\n    if ($p$0$i$lcssa <= 1.0e-10) {\n     $$0$i = 0;\n     break L1;\n    }\n    $24 = $nos$i + ($ip$1$i$lcssa << 2) | 0;\n    $25 = HEAP32[$24 >> 2] | 0;\n    $26 = $nos$i + ($n$1$i50 << 2) | 0;\n    HEAP32[$24 >> 2] = HEAP32[$26 >> 2];\n    HEAP32[$26 >> 2] = $25;\n    if (!$exitcond$i23) {\n     $j$0$i24 = 0;\n     $wap$1$i26 = $0 + ((Math_imul($ip$1$i$lcssa, $2) | 0) << 3) | 0;\n     $wbp$0$i25 = $15;\n     while (1) {\n      $30 = +HEAPF64[$wap$1$i26 >> 3];\n      HEAPF64[$wap$1$i26 >> 3] = +HEAPF64[$wbp$0$i25 >> 3];\n      HEAPF64[$wbp$0$i25 >> 3] = $30;\n      $j$0$i24 = $j$0$i24 + 1 | 0;\n      if (($j$0$i24 | 0) == ($2 | 0)) break; else {\n       $wap$1$i26 = $wap$1$i26 + 8 | 0;\n       $wbp$0$i25 = $wbp$0$i25 + 8 | 0;\n      }\n     }\n    }\n    $35 = +HEAPF64[$15 >> 3];\n    if (!$exitcond7$i30) {\n     $j$1$i31 = 1;\n     $wap$2$i32 = $15;\n     do {\n      $wap$2$i32$looptemp = $wap$2$i32;\n      $wap$2$i32 = $wap$2$i32 + 8 | 0;\n      HEAPF64[$wap$2$i32$looptemp >> 3] = +HEAPF64[$wap$2$i32 >> 3] / $35;\n      $j$1$i31 = $j$1$i31 + 1 | 0;\n     } while (($j$1$i31 | 0) != ($2 | 0));\n    }\n    HEAPF64[$indvars$iv$i49 >> 3] = 1.0 / $35;\n    if (!$exitcond13$i43) {\n     $i$1$i45 = 0;\n     $indvars$iv9$i44 = $scevgep$i;\n     while (1) {\n      if (($i$1$i45 | 0) != ($n$1$i50 | 0)) {\n       $43 = $0 + ((Math_imul($i$1$i45, $2) | 0) << 3) | 0;\n       $44 = +HEAPF64[$43 >> 3];\n       if (!$exitcond12$i36) {\n        $j$2$i37 = 1;\n        $wap$3$i39 = $43;\n        $wbp$1$i38 = $15;\n        while (1) {\n         $wap$3$i39$looptemp = $wap$3$i39;\n         $wap$3$i39 = $wap$3$i39 + 8 | 0;\n         HEAPF64[$wap$3$i39$looptemp >> 3] = +HEAPF64[$wap$3$i39 >> 3] - $44 * +HEAPF64[$wbp$1$i38 >> 3];\n         $j$2$i37 = $j$2$i37 + 1 | 0;\n         if (($j$2$i37 | 0) == ($2 | 0)) break; else $wbp$1$i38 = $wbp$1$i38 + 8 | 0;\n        }\n       }\n       HEAPF64[$indvars$iv9$i44 >> 3] = -($44 * +HEAPF64[$indvars$iv$i49 >> 3]);\n      }\n      $i$1$i45 = $i$1$i45 + 1 | 0;\n      if (($i$1$i45 | 0) == ($2 | 0)) break; else $indvars$iv9$i44 = $indvars$iv9$i44 + ($2 << 3) | 0;\n     }\n    }\n    $n$1$i50 = $n$1$i50 + 1 | 0;\n    if (($n$1$i50 | 0) >= ($2 | 0)) break; else {\n     $indvars$iv$i49 = $indvars$iv$i49 + ($2 << 3) | 0;\n     $ip$0$i51 = $ip$1$i$lcssa;\n    }\n   }\n  }\n  if (($2 | 0) > 0) {\n   $13 = ($2 | 0) > 0;\n   $n$2$i12 = 0;\n   while (1) {\n    $59 = $nos$i + ($n$2$i12 << 2) | 0;\n    L43 : do if (($n$2$i12 | 0) < ($2 | 0)) {\n     $61 = $59;\n     $j$3$i4 = $n$2$i12;\n     while (1) {\n      if ((HEAP32[$61 >> 2] | 0) == ($n$2$i12 | 0)) {\n       $$lcssa = $61;\n       $j$3$i$lcssa = $j$3$i4;\n       break L43;\n      }\n      $63 = $j$3$i4 + 1 | 0;\n      $65 = $nos$i + ($63 << 2) | 0;\n      if (($63 | 0) < ($2 | 0)) {\n       $61 = $65;\n       $j$3$i4 = $63;\n      } else {\n       $$lcssa = $65;\n       $j$3$i$lcssa = $63;\n       break;\n      }\n     }\n    } else {\n     $$lcssa = $59;\n     $j$3$i$lcssa = $n$2$i12;\n    } while (0);\n    HEAP32[$$lcssa >> 2] = HEAP32[$nos$i + ($n$2$i12 << 2) >> 2];\n    if ($13) {\n     $i$2$i8 = 0;\n     $wap$4$i10 = $0 + ($j$3$i$lcssa << 3) | 0;\n     $wbp$2$i9 = $0 + ($n$2$i12 << 3) | 0;\n     while (1) {\n      $70 = +HEAPF64[$wap$4$i10 >> 3];\n      HEAPF64[$wap$4$i10 >> 3] = +HEAPF64[$wbp$2$i9 >> 3];\n      HEAPF64[$wbp$2$i9 >> 3] = $70;\n      $i$2$i8 = $i$2$i8 + 1 | 0;\n      if (($i$2$i8 | 0) >= ($2 | 0)) break; else {\n       $wap$4$i10 = $wap$4$i10 + ($2 << 3) | 0;\n       $wbp$2$i9 = $wbp$2$i9 + ($2 << 3) | 0;\n      }\n     }\n    }\n    $n$2$i12 = $n$2$i12 + 1 | 0;\n    if (($n$2$i12 | 0) >= ($2 | 0)) {\n     $$0$i = $0;\n     break;\n    }\n   }\n  } else $$0$i = $0;\n } while (0);\n STACKTOP = sp;\n return (($$0$i | 0) == 0) << 31 >> 31 | 0;\n}\n\nfunction _try_realloc_chunk($p, $nb) {\n $p = $p | 0;\n $nb = $nb | 0;\n var $$pre$phiZ2D = 0, $0 = 0, $1 = 0, $101 = 0, $103 = 0, $106 = 0, $109 = 0, $110 = 0, $112 = 0, $113 = 0, $115 = 0, $116 = 0, $118 = 0, $119 = 0, $124 = 0, $125 = 0, $134 = 0, $139 = 0, $143 = 0, $149 = 0, $159 = 0, $168 = 0, $2 = 0, $20 = 0, $3 = 0, $33 = 0, $35 = 0, $4 = 0, $45 = 0, $47 = 0, $5 = 0, $56 = 0, $62 = 0, $68 = 0, $7 = 0, $70 = 0, $71 = 0, $74 = 0, $76 = 0, $78 = 0, $8 = 0, $91 = 0, $96 = 0, $98 = 0, $R$0 = 0, $R$0$lcssa = 0, $R$1 = 0, $RP$0 = 0, $RP$0$lcssa = 0, $newp$0 = 0, $storemerge = 0, $storemerge21 = 0;\n $0 = $p + 4 | 0;\n $1 = HEAP32[$0 >> 2] | 0;\n $2 = $1 & -8;\n $3 = $p + $2 | 0;\n $4 = HEAP32[760] | 0;\n $5 = $1 & 3;\n if (!(($5 | 0) != 1 & $p >>> 0 >= $4 >>> 0 & $p >>> 0 < $3 >>> 0)) _abort();\n $7 = $p + ($2 | 4) | 0;\n $8 = HEAP32[$7 >> 2] | 0;\n if (!($8 & 1)) _abort();\n if (!$5) {\n  if ($nb >>> 0 < 256) {\n   $newp$0 = 0;\n   return $newp$0 | 0;\n  }\n  if ($2 >>> 0 >= ($nb + 4 | 0) >>> 0) if (($2 - $nb | 0) >>> 0 <= HEAP32[876] << 1 >>> 0) {\n   $newp$0 = $p;\n   return $newp$0 | 0;\n  }\n  $newp$0 = 0;\n  return $newp$0 | 0;\n }\n if ($2 >>> 0 >= $nb >>> 0) {\n  $20 = $2 - $nb | 0;\n  if ($20 >>> 0 <= 15) {\n   $newp$0 = $p;\n   return $newp$0 | 0;\n  }\n  HEAP32[$0 >> 2] = $1 & 1 | $nb | 2;\n  HEAP32[$p + ($nb + 4) >> 2] = $20 | 3;\n  HEAP32[$7 >> 2] = HEAP32[$7 >> 2] | 1;\n  _dispose_chunk($p + $nb | 0, $20);\n  $newp$0 = $p;\n  return $newp$0 | 0;\n }\n if (($3 | 0) == (HEAP32[762] | 0)) {\n  $33 = (HEAP32[759] | 0) + $2 | 0;\n  if ($33 >>> 0 <= $nb >>> 0) {\n   $newp$0 = 0;\n   return $newp$0 | 0;\n  }\n  $35 = $33 - $nb | 0;\n  HEAP32[$0 >> 2] = $1 & 1 | $nb | 2;\n  HEAP32[$p + ($nb + 4) >> 2] = $35 | 1;\n  HEAP32[762] = $p + $nb;\n  HEAP32[759] = $35;\n  $newp$0 = $p;\n  return $newp$0 | 0;\n }\n if (($3 | 0) == (HEAP32[761] | 0)) {\n  $45 = (HEAP32[758] | 0) + $2 | 0;\n  if ($45 >>> 0 < $nb >>> 0) {\n   $newp$0 = 0;\n   return $newp$0 | 0;\n  }\n  $47 = $45 - $nb | 0;\n  if ($47 >>> 0 > 15) {\n   HEAP32[$0 >> 2] = $1 & 1 | $nb | 2;\n   HEAP32[$p + ($nb + 4) >> 2] = $47 | 1;\n   HEAP32[$p + $45 >> 2] = $47;\n   $56 = $p + ($45 + 4) | 0;\n   HEAP32[$56 >> 2] = HEAP32[$56 >> 2] & -2;\n   $storemerge = $p + $nb | 0;\n   $storemerge21 = $47;\n  } else {\n   HEAP32[$0 >> 2] = $1 & 1 | $45 | 2;\n   $62 = $p + ($45 + 4) | 0;\n   HEAP32[$62 >> 2] = HEAP32[$62 >> 2] | 1;\n   $storemerge = 0;\n   $storemerge21 = 0;\n  }\n  HEAP32[758] = $storemerge21;\n  HEAP32[761] = $storemerge;\n  $newp$0 = $p;\n  return $newp$0 | 0;\n }\n if ($8 & 2) {\n  $newp$0 = 0;\n  return $newp$0 | 0;\n }\n $68 = ($8 & -8) + $2 | 0;\n if ($68 >>> 0 < $nb >>> 0) {\n  $newp$0 = 0;\n  return $newp$0 | 0;\n }\n $70 = $68 - $nb | 0;\n $71 = $8 >>> 3;\n do if ($8 >>> 0 < 256) {\n  $74 = HEAP32[$p + ($2 + 8) >> 2] | 0;\n  $76 = HEAP32[$p + ($2 + 12) >> 2] | 0;\n  $78 = 3064 + ($71 << 1 << 2) | 0;\n  if (($74 | 0) != ($78 | 0)) {\n   if ($74 >>> 0 < $4 >>> 0) _abort();\n   if ((HEAP32[$74 + 12 >> 2] | 0) != ($3 | 0)) _abort();\n  }\n  if (($76 | 0) == ($74 | 0)) {\n   HEAP32[756] = HEAP32[756] & ~(1 << $71);\n   break;\n  }\n  if (($76 | 0) == ($78 | 0)) $$pre$phiZ2D = $76 + 8 | 0; else {\n   if ($76 >>> 0 < $4 >>> 0) _abort();\n   $91 = $76 + 8 | 0;\n   if ((HEAP32[$91 >> 2] | 0) == ($3 | 0)) $$pre$phiZ2D = $91; else _abort();\n  }\n  HEAP32[$74 + 12 >> 2] = $76;\n  HEAP32[$$pre$phiZ2D >> 2] = $74;\n } else {\n  $96 = HEAP32[$p + ($2 + 24) >> 2] | 0;\n  $98 = HEAP32[$p + ($2 + 12) >> 2] | 0;\n  do if (($98 | 0) == ($3 | 0)) {\n   $109 = $p + ($2 + 20) | 0;\n   $110 = HEAP32[$109 >> 2] | 0;\n   if (!$110) {\n    $112 = $p + ($2 + 16) | 0;\n    $113 = HEAP32[$112 >> 2] | 0;\n    if (!$113) {\n     $R$1 = 0;\n     break;\n    } else {\n     $R$0 = $113;\n     $RP$0 = $112;\n    }\n   } else {\n    $R$0 = $110;\n    $RP$0 = $109;\n   }\n   while (1) {\n    $115 = $R$0 + 20 | 0;\n    $116 = HEAP32[$115 >> 2] | 0;\n    if ($116) {\n     $R$0 = $116;\n     $RP$0 = $115;\n     continue;\n    }\n    $118 = $R$0 + 16 | 0;\n    $119 = HEAP32[$118 >> 2] | 0;\n    if (!$119) {\n     $R$0$lcssa = $R$0;\n     $RP$0$lcssa = $RP$0;\n     break;\n    } else {\n     $R$0 = $119;\n     $RP$0 = $118;\n    }\n   }\n   if ($RP$0$lcssa >>> 0 < $4 >>> 0) _abort(); else {\n    HEAP32[$RP$0$lcssa >> 2] = 0;\n    $R$1 = $R$0$lcssa;\n    break;\n   }\n  } else {\n   $101 = HEAP32[$p + ($2 + 8) >> 2] | 0;\n   if ($101 >>> 0 < $4 >>> 0) _abort();\n   $103 = $101 + 12 | 0;\n   if ((HEAP32[$103 >> 2] | 0) != ($3 | 0)) _abort();\n   $106 = $98 + 8 | 0;\n   if ((HEAP32[$106 >> 2] | 0) == ($3 | 0)) {\n    HEAP32[$103 >> 2] = $98;\n    HEAP32[$106 >> 2] = $101;\n    $R$1 = $98;\n    break;\n   } else _abort();\n  } while (0);\n  if ($96) {\n   $124 = HEAP32[$p + ($2 + 28) >> 2] | 0;\n   $125 = 3328 + ($124 << 2) | 0;\n   if (($3 | 0) == (HEAP32[$125 >> 2] | 0)) {\n    HEAP32[$125 >> 2] = $R$1;\n    if (!$R$1) {\n     HEAP32[757] = HEAP32[757] & ~(1 << $124);\n     break;\n    }\n   } else {\n    if ($96 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort();\n    $134 = $96 + 16 | 0;\n    if ((HEAP32[$134 >> 2] | 0) == ($3 | 0)) HEAP32[$134 >> 2] = $R$1; else HEAP32[$96 + 20 >> 2] = $R$1;\n    if (!$R$1) break;\n   }\n   $139 = HEAP32[760] | 0;\n   if ($R$1 >>> 0 < $139 >>> 0) _abort();\n   HEAP32[$R$1 + 24 >> 2] = $96;\n   $143 = HEAP32[$p + ($2 + 16) >> 2] | 0;\n   do if ($143) if ($143 >>> 0 < $139 >>> 0) _abort(); else {\n    HEAP32[$R$1 + 16 >> 2] = $143;\n    HEAP32[$143 + 24 >> 2] = $R$1;\n    break;\n   } while (0);\n   $149 = HEAP32[$p + ($2 + 20) >> 2] | 0;\n   if ($149) if ($149 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else {\n    HEAP32[$R$1 + 20 >> 2] = $149;\n    HEAP32[$149 + 24 >> 2] = $R$1;\n    break;\n   }\n  }\n } while (0);\n if ($70 >>> 0 < 16) {\n  HEAP32[$0 >> 2] = $68 | $1 & 1 | 2;\n  $159 = $p + ($68 | 4) | 0;\n  HEAP32[$159 >> 2] = HEAP32[$159 >> 2] | 1;\n  $newp$0 = $p;\n  return $newp$0 | 0;\n } else {\n  HEAP32[$0 >> 2] = $1 & 1 | $nb | 2;\n  HEAP32[$p + ($nb + 4) >> 2] = $70 | 3;\n  $168 = $p + ($68 | 4) | 0;\n  HEAP32[$168 >> 2] = HEAP32[$168 >> 2] | 1;\n  _dispose_chunk($p + $nb | 0, $70);\n  $newp$0 = $p;\n  return $newp$0 | 0;\n }\n return 0;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($first, $last, $lit, $db) {\n $first = $first | 0;\n $last = $last | 0;\n $lit = $lit | 0;\n $db = $db | 0;\n var $$0$i$i$i = 0, $$0$i$i$i5 = 0, $$02 = 0, $$1 = 0, $0 = 0, $1 = 0, $11 = 0, $17 = 0, $2 = 0, $20 = 0, $21 = 0, $23 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $37 = 0, $39 = 0, $42 = 0, $43 = 0, $45 = 0, $46 = 0, $48 = 0, $52 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $67 = 0, $69 = 0, $72 = 0, $73 = 0, $76 = 0, $8 = 0, $82 = 0, $88 = 0, $90 = 0, $94 = 0, $__v$i$i4 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 80 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $__v$i$i4 = sp + 48 | 0;\n $0 = sp + 24 | 0;\n $1 = sp + 12 | 0;\n $2 = sp;\n $3 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_($first, $last) | 0;\n if (($3 | 0) == ($first | 0) | ($3 | 0) == ($last | 0)) $$1 = $first; else if ((HEAP8[$3 >> 0] | 0) == 69) {\n  $8 = HEAP8[$lit >> 0] | 0;\n  $11 = $lit + 4 | 0;\n  do if ((($8 & 1) == 0 ? ($8 & 255) >>> 1 : HEAP32[$11 >> 2] | 0) >>> 0 > 3) {\n   __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($2, 12688, $lit);\n   $17 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($2, 12593) | 0;\n   HEAP32[$1 >> 2] = HEAP32[$17 >> 2];\n   HEAP32[$1 + 4 >> 2] = HEAP32[$17 + 4 >> 2];\n   HEAP32[$1 + 8 >> 2] = HEAP32[$17 + 8 >> 2];\n   HEAP32[$17 >> 2] = 0;\n   HEAP32[$17 + 4 >> 2] = 0;\n   HEAP32[$17 + 8 >> 2] = 0;\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($0, $1);\n   $20 = $db + 4 | 0;\n   $21 = HEAP32[$20 >> 2] | 0;\n   $23 = HEAP32[$db + 8 >> 2] | 0;\n   if ($21 >>> 0 < $23 >>> 0) {\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($21, $0);\n    HEAP32[$20 >> 2] = (HEAP32[$20 >> 2] | 0) + 24;\n   } else {\n    $30 = HEAP32[$db >> 2] | 0;\n    $31 = $21 - $30 | 0;\n    $32 = ($31 | 0) / 24 | 0;\n    $33 = $32 + 1 | 0;\n    if (($31 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n    $37 = ($23 - $30 | 0) / 24 | 0;\n    if ($37 >>> 0 < 1073741823) {\n     $39 = $37 << 1;\n     $$0$i$i$i = $39 >>> 0 < $33 >>> 0 ? $33 : $39;\n    } else $$0$i$i$i = 2147483647;\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i4, $$0$i$i$i, $32, $db + 12 | 0);\n    $42 = $__v$i$i4 + 8 | 0;\n    $43 = HEAP32[$42 >> 2] | 0;\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($43, $0);\n    HEAP32[$42 >> 2] = $43 + 24;\n    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i4);\n    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i4);\n   }\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0);\n   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);\n   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);\n  } else {\n   $45 = $db + 4 | 0;\n   $46 = HEAP32[$45 >> 2] | 0;\n   $48 = HEAP32[$db + 8 >> 2] | 0;\n   if ($46 >>> 0 < $48 >>> 0) {\n    HEAP32[$46 >> 2] = 0;\n    HEAP32[$46 + 4 >> 2] = 0;\n    HEAP32[$46 + 8 >> 2] = 0;\n    HEAP32[$46 + 12 >> 2] = 0;\n    HEAP32[$46 + 16 >> 2] = 0;\n    HEAP32[$46 + 20 >> 2] = 0;\n    HEAP32[$46 >> 2] = 0;\n    HEAP32[$46 + 4 >> 2] = 0;\n    HEAP32[$46 + 8 >> 2] = 0;\n    $52 = $46 + 12 | 0;\n    HEAP32[$52 >> 2] = 0;\n    HEAP32[$52 + 4 >> 2] = 0;\n    HEAP32[$52 + 8 >> 2] = 0;\n    HEAP32[$45 >> 2] = (HEAP32[$45 >> 2] | 0) + 24;\n    break;\n   }\n   $60 = HEAP32[$db >> 2] | 0;\n   $61 = $46 - $60 | 0;\n   $62 = ($61 | 0) / 24 | 0;\n   $63 = $62 + 1 | 0;\n   if (($61 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);\n   $67 = ($48 - $60 | 0) / 24 | 0;\n   if ($67 >>> 0 < 1073741823) {\n    $69 = $67 << 1;\n    $$0$i$i$i5 = $69 >>> 0 < $63 >>> 0 ? $63 : $69;\n   } else $$0$i$i$i5 = 2147483647;\n   __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i4, $$0$i$i$i5, $62, $db + 12 | 0);\n   $72 = $__v$i$i4 + 8 | 0;\n   $73 = HEAP32[$72 >> 2] | 0;\n   HEAP32[$73 >> 2] = 0;\n   HEAP32[$73 + 4 >> 2] = 0;\n   HEAP32[$73 + 8 >> 2] = 0;\n   HEAP32[$73 + 12 >> 2] = 0;\n   HEAP32[$73 + 16 >> 2] = 0;\n   HEAP32[$73 + 20 >> 2] = 0;\n   HEAP32[$73 >> 2] = 0;\n   HEAP32[$73 + 4 >> 2] = 0;\n   HEAP32[$73 + 8 >> 2] = 0;\n   $76 = $73 + 12 | 0;\n   HEAP32[$76 >> 2] = 0;\n   HEAP32[$76 + 4 >> 2] = 0;\n   HEAP32[$76 + 8 >> 2] = 0;\n   HEAP32[$72 >> 2] = $73 + 24;\n   __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i4);\n   __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i4);\n  } while (0);\n  $82 = $db + 4 | 0;\n  if ((HEAP8[$first >> 0] | 0) == 110) {\n   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9push_backEc((HEAP32[$82 >> 2] | 0) + -24 | 0, 45);\n   $$02 = $first + 1 | 0;\n  } else $$02 = $first;\n  __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendIPKcEENS_9enable_ifIXsr21__is_forward_iteratorIT_EE5valueERS7_E4typeESC_SC_((HEAP32[$82 >> 2] | 0) + -24 | 0, $$02, $3);\n  $88 = HEAP8[$lit >> 0] | 0;\n  $90 = ($88 & 1) == 0;\n  $94 = $90 ? ($88 & 255) >>> 1 : HEAP32[$11 >> 2] | 0;\n  if ($94 >>> 0 < 4) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj((HEAP32[$82 >> 2] | 0) + -24 | 0, $90 ? $lit + 1 | 0 : HEAP32[$lit + 8 >> 2] | 0, $94) | 0;\n  $$1 = $3 + 1 | 0;\n } else $$1 = $first;\n STACKTOP = sp;\n return $$1 | 0;\n}\n\nfunction _arGetContour($limage, $xsize, $ysize, $label_ref, $label, $clip, $marker_info2) {\n $limage = $limage | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $label_ref = $label_ref | 0;\n $label = $label | 0;\n $clip = $clip | 0;\n $marker_info2 = $marker_info2 | 0;\n var $$0 = 0, $$lcssa68 = 0, $$lcssa69 = 0, $1 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $24 = 0, $26 = 0, $27 = 0, $29 = 0, $30 = 0, $34 = 0, $38 = 0, $4 = 0, $40 = 0, $41 = 0, $46 = 0, $48 = 0, $49 = 0, $56 = 0, $61 = 0, $62 = 0, $65 = 0, $67 = 0, $68 = 0, $83 = 0, $9 = 0, $92 = 0, $dir$0 = 0, $dir$1 = 0, $dir$1$lcssa = 0, $dir$130 = 0, $dir$146 = 0, $dmax$040 = 0, $i$048 = 0, $i$048$lcssa = 0, $i$145 = 0, $i$2$v1$0 = 0, $i$242 = 0, $i$338 = 0, $i$436 = 0, $i$535 = 0, $p1$047 = 0, $v1$0$lcssa = 0, $v1$041 = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, $vararg_buffer3 = 0, $wx = 0, $wy = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 80032 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer3 = sp + 16 | 0;\n $vararg_buffer1 = sp + 8 | 0;\n $vararg_buffer = sp;\n $wx = sp + 40024 | 0;\n $wy = sp + 24 | 0;\n $1 = HEAP32[$clip + 8 >> 2] | 0;\n $2 = HEAP32[$clip >> 2] | 0;\n $4 = HEAP32[$clip + 4 >> 2] | 0;\n L1 : do if (($2 | 0) > ($4 | 0)) label = 6; else {\n  $i$048 = $2;\n  $p1$047 = $limage + ((Math_imul($1, $xsize) | 0) + $2 << 1) | 0;\n  while (1) {\n   $9 = HEAP16[$p1$047 >> 1] | 0;\n   if ($9 << 16 >> 16 > 0) if ((HEAP32[$label_ref + (($9 << 16 >> 16) + -1 << 2) >> 2] | 0) == ($label | 0)) {\n    $i$048$lcssa = $i$048;\n    break;\n   }\n   if (($i$048 | 0) < ($4 | 0)) {\n    $i$048 = $i$048 + 1 | 0;\n    $p1$047 = $p1$047 + 2 | 0;\n   } else {\n    label = 6;\n    break L1;\n   }\n  }\n  $19 = $marker_info2 + 24 | 0;\n  HEAP32[$19 >> 2] = 1;\n  $20 = $marker_info2 + 28 | 0;\n  HEAP32[$20 >> 2] = $i$048$lcssa;\n  $21 = $marker_info2 + 40028 | 0;\n  HEAP32[$21 >> 2] = $1;\n  $27 = $1;\n  $29 = $i$048$lcssa;\n  $40 = 1;\n  $dir$0 = 5;\n  while (1) {\n   $dir$146 = ($dir$0 + 5 | 0) % 8 | 0;\n   $i$145 = 0;\n   while (1) {\n    $24 = HEAP32[776 + ($dir$146 << 2) >> 2] | 0;\n    $26 = HEAP32[808 + ($dir$146 << 2) >> 2] | 0;\n    $30 = $limage + ($26 + $29 + (Math_imul($24 + $27 | 0, $xsize) | 0) << 1) | 0;\n    if ((HEAP16[$30 >> 1] | 0) > 0) {\n     $38 = $26;\n     $46 = $24;\n     $dir$130 = $dir$146;\n     break;\n    }\n    $34 = $i$145 + 1 | 0;\n    $dir$1 = ($dir$146 + 1 | 0) % 8 | 0;\n    if (($34 | 0) < 8) {\n     $dir$146 = $dir$1;\n     $i$145 = $34;\n    } else {\n     $$lcssa68 = $34;\n     $dir$1$lcssa = $dir$1;\n     label = 11;\n     break;\n    }\n   }\n   if ((label | 0) == 11) {\n    label = 0;\n    if (($$lcssa68 | 0) == 8) {\n     label = 13;\n     break;\n    }\n    $38 = HEAP32[808 + ($dir$1$lcssa << 2) >> 2] | 0;\n    $46 = HEAP32[776 + ($dir$1$lcssa << 2) >> 2] | 0;\n    $dir$130 = $dir$1$lcssa;\n   }\n   HEAP32[$marker_info2 + 28 + ($40 << 2) >> 2] = $38 + $29;\n   $41 = HEAP32[$19 >> 2] | 0;\n   HEAP32[$marker_info2 + 40028 + ($41 << 2) >> 2] = $46 + (HEAP32[$marker_info2 + 40028 + ($41 + -1 << 2) >> 2] | 0);\n   $48 = HEAP32[$19 >> 2] | 0;\n   $49 = $marker_info2 + 28 + ($48 << 2) | 0;\n   if ((HEAP32[$49 >> 2] | 0) == ($i$048$lcssa | 0)) if ((HEAP32[$marker_info2 + 40028 + ($48 << 2) >> 2] | 0) == ($1 | 0)) {\n    $$lcssa69 = $48;\n    label = 16;\n    break;\n   }\n   $56 = $48 + 1 | 0;\n   HEAP32[$19 >> 2] = $56;\n   if (($56 | 0) == 9999) {\n    label = 19;\n    break;\n   }\n   $27 = HEAP32[$marker_info2 + 40028 + ($48 << 2) >> 2] | 0;\n   $29 = HEAP32[$49 >> 2] | 0;\n   $40 = $56;\n   $dir$0 = $dir$130;\n  }\n  if ((label | 0) == 13) {\n   _arLog(3, 4347, $vararg_buffer1);\n   $$0 = -1;\n   break;\n  } else if ((label | 0) == 16) {\n   if (($$lcssa69 | 0) > 1) {\n    $dmax$040 = 0;\n    $i$242 = 1;\n    $v1$041 = 0;\n    while (1) {\n     $61 = (HEAP32[$marker_info2 + 28 + ($i$242 << 2) >> 2] | 0) - $i$048$lcssa | 0;\n     $62 = Math_imul($61, $61) | 0;\n     $65 = (HEAP32[$marker_info2 + 40028 + ($i$242 << 2) >> 2] | 0) - $1 | 0;\n     $67 = (Math_imul($65, $65) | 0) + $62 | 0;\n     $68 = ($67 | 0) > ($dmax$040 | 0);\n     $i$2$v1$0 = $68 ? $i$242 : $v1$041;\n     $i$242 = $i$242 + 1 | 0;\n     if (($i$242 | 0) >= ($$lcssa69 | 0)) {\n      $v1$0$lcssa = $i$2$v1$0;\n      break;\n     } else {\n      $dmax$040 = $68 ? $67 : $dmax$040;\n      $v1$041 = $i$2$v1$0;\n     }\n    }\n   } else $v1$0$lcssa = 0;\n   if (($v1$0$lcssa | 0) > 0) {\n    $i$338 = 0;\n    do {\n     HEAP32[$wx + ($i$338 << 2) >> 2] = HEAP32[$marker_info2 + 28 + ($i$338 << 2) >> 2];\n     HEAP32[$wy + ($i$338 << 2) >> 2] = HEAP32[$marker_info2 + 40028 + ($i$338 << 2) >> 2];\n     $i$338 = $i$338 + 1 | 0;\n    } while (($i$338 | 0) < ($v1$0$lcssa | 0));\n   }\n   if (($v1$0$lcssa | 0) < ($$lcssa69 | 0)) {\n    $i$436 = $v1$0$lcssa;\n    do {\n     $83 = $i$436 - $v1$0$lcssa | 0;\n     HEAP32[$marker_info2 + 28 + ($83 << 2) >> 2] = HEAP32[$marker_info2 + 28 + ($i$436 << 2) >> 2];\n     HEAP32[$marker_info2 + 40028 + ($83 << 2) >> 2] = HEAP32[$marker_info2 + 40028 + ($i$436 << 2) >> 2];\n     $i$436 = $i$436 + 1 | 0;\n    } while (($i$436 | 0) < (HEAP32[$19 >> 2] | 0));\n   }\n   if (($v1$0$lcssa | 0) > 0) {\n    $i$535 = 0;\n    do {\n     $92 = $i$535 - $v1$0$lcssa | 0;\n     HEAP32[$marker_info2 + 28 + ((HEAP32[$19 >> 2] | 0) + $92 << 2) >> 2] = HEAP32[$wx + ($i$535 << 2) >> 2];\n     HEAP32[$marker_info2 + 40028 + ((HEAP32[$19 >> 2] | 0) + $92 << 2) >> 2] = HEAP32[$wy + ($i$535 << 2) >> 2];\n     $i$535 = $i$535 + 1 | 0;\n    } while (($i$535 | 0) < ($v1$0$lcssa | 0));\n   }\n   HEAP32[$marker_info2 + 28 + (HEAP32[$19 >> 2] << 2) >> 2] = HEAP32[$20 >> 2];\n   HEAP32[$marker_info2 + 40028 + (HEAP32[$19 >> 2] << 2) >> 2] = HEAP32[$21 >> 2];\n   HEAP32[$19 >> 2] = (HEAP32[$19 >> 2] | 0) + 1;\n   $$0 = 0;\n   break;\n  } else if ((label | 0) == 19) {\n   _arLog(3, 4354, $vararg_buffer3);\n   $$0 = -1;\n   break;\n  }\n } while (0);\n if ((label | 0) == 6) {\n  _arLog(3, 4340, $vararg_buffer);\n  $$0 = -1;\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction ___cxa_demangle($mangled_name, $buf, $n, $status) {\n $mangled_name = $mangled_name | 0;\n $buf = $buf | 0;\n $n = $n | 0;\n $status = $status | 0;\n var $$0 = 0, $$028 = 0, $$1 = 0, $1 = 0, $10 = 0, $101 = 0, $102 = 0, $109 = 0, $11 = 0, $112 = 0, $15 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $27 = 0, $30 = 0, $31 = 0, $35 = 0, $42 = 0, $43 = 0, $45 = 0, $46 = 0, $49 = 0, $50 = 0, $52 = 0, $53 = 0, $59 = 0, $6 = 0, $60 = 0, $62 = 0, $7 = 0, $70 = 0, $77 = 0, $78 = 0, $79 = 0, $80 = 0, $82 = 0, $83 = 0, $86 = 0, $88 = 0, $89 = 0, $91 = 0, $__v$i$i = 0, $a = 0, $db = 0, $internal_status = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 4208 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $__v$i$i = sp + 4184 | 0;\n $a = sp;\n $db = sp + 4120 | 0;\n $internal_status = sp + 4112 | 0;\n if (!$mangled_name) label = 3; else {\n  $1 = ($buf | 0) != 0;\n  $2 = ($n | 0) == 0;\n  if ($1 & $2) label = 3; else {\n   if ($1) $82 = HEAP32[$n >> 2] | 0; else $82 = 0;\n   HEAP32[$a + 4096 >> 2] = $a;\n   $6 = $a;\n   HEAP32[$db >> 2] = 0;\n   $7 = $db + 4 | 0;\n   HEAP32[$7 >> 2] = 0;\n   HEAP32[$db + 8 >> 2] = 0;\n   HEAP32[$db + 12 >> 2] = $6;\n   $10 = $db + 16 | 0;\n   HEAP32[$10 >> 2] = 0;\n   $11 = $db + 20 | 0;\n   HEAP32[$11 >> 2] = 0;\n   HEAP32[$db + 24 >> 2] = 0;\n   HEAP32[$db + 28 >> 2] = $6;\n   HEAP32[$db + 32 >> 2] = 0;\n   $15 = $db + 36 | 0;\n   HEAP32[$15 >> 2] = 0;\n   HEAP32[$db + 40 >> 2] = 0;\n   $17 = $db + 44 | 0;\n   HEAP32[$17 >> 2] = $6;\n   $18 = $db + 48 | 0;\n   $19 = $db + 61 | 0;\n   HEAP32[$18 >> 2] = 0;\n   HEAP32[$18 + 4 >> 2] = 0;\n   HEAP32[$18 + 8 >> 2] = 0;\n   HEAP8[$18 + 12 >> 0] = 0;\n   HEAP8[$19 >> 0] = 1;\n   $20 = $db + 32 | 0;\n   __ZNSt3__114__split_bufferINS_6vectorINS1_IN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEEERNS5_IS9_Lj4096EEEEC2EjjSB_($__v$i$i, 1, 0, $17);\n   $21 = $__v$i$i + 8 | 0;\n   $22 = HEAP32[$21 >> 2] | 0;\n   HEAP32[$22 >> 2] = 0;\n   HEAP32[$22 + 4 >> 2] = 0;\n   HEAP32[$22 + 8 >> 2] = 0;\n   HEAP32[$22 + 12 >> 2] = $6;\n   HEAP32[$21 >> 2] = $22 + 16;\n   __ZNSt3__16vectorINS0_INS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEEENS4_IS8_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS8_RS9_EE($20, $__v$i$i);\n   __ZNSt3__114__split_bufferINS_6vectorINS1_IN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEEERNS5_IS9_Lj4096EEEED2Ev($__v$i$i);\n   $27 = $db + 62 | 0;\n   HEAP8[$27 >> 0] = 0;\n   HEAP8[$db + 63 >> 0] = 1;\n   HEAP32[$internal_status >> 2] = 0;\n   $30 = $mangled_name + (_strlen($mangled_name) | 0) | 0;\n   __ZN10__cxxabiv112_GLOBAL__N_18demangleINS0_2DbEEEvPKcS4_RT_Ri($mangled_name, $30, $db, $internal_status);\n   $31 = HEAP32[$internal_status >> 2] | 0;\n   do if (($31 | 0) != 0 | (HEAP8[$27 >> 0] | 0) == 0) {\n    $59 = $31;\n    label = 17;\n   } else {\n    $35 = HEAP32[$20 >> 2] | 0;\n    if (($35 | 0) == (HEAP32[$15 >> 2] | 0)) label = 18; else if ((HEAP32[$35 >> 2] | 0) == (HEAP32[$35 + 4 >> 2] | 0)) label = 18; else {\n     HEAP8[$27 >> 0] = 0;\n     HEAP8[$19 >> 0] = 0;\n     $42 = HEAP32[$db >> 2] | 0;\n     $43 = HEAP32[$7 >> 2] | 0;\n     if (($43 | 0) != ($42 | 0)) {\n      $46 = $43;\n      do {\n       $45 = $46 + -24 | 0;\n       HEAP32[$7 >> 2] = $45;\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($45);\n       $46 = HEAP32[$7 >> 2] | 0;\n      } while (($46 | 0) != ($42 | 0));\n     }\n     $49 = HEAP32[$10 >> 2] | 0;\n     $50 = HEAP32[$11 >> 2] | 0;\n     if (($50 | 0) != ($49 | 0)) {\n      $53 = $50;\n      do {\n       $52 = $53 + -16 | 0;\n       HEAP32[$11 >> 2] = $52;\n       __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($52);\n       $53 = HEAP32[$11 >> 2] | 0;\n      } while (($53 | 0) != ($49 | 0));\n     }\n     __ZN10__cxxabiv112_GLOBAL__N_18demangleINS0_2DbEEEvPKcS4_RT_Ri($mangled_name, $30, $db, $internal_status);\n     if (!(HEAP8[$27 >> 0] | 0)) {\n      $59 = HEAP32[$internal_status >> 2] | 0;\n      label = 17;\n      break;\n     } else {\n      HEAP32[$internal_status >> 2] = -2;\n      $$1 = 0;\n      $112 = -2;\n      break;\n     }\n    }\n   } while (0);\n   if ((label | 0) == 17) if (!$59) label = 18; else {\n    $$1 = 0;\n    $112 = $59;\n   }\n   do if ((label | 0) == 18) {\n    $60 = HEAP32[$7 >> 2] | 0;\n    $62 = HEAP8[$60 + -24 >> 0] | 0;\n    if (!($62 & 1)) $79 = ($62 & 255) >>> 1; else $79 = HEAP32[$60 + -20 >> 2] | 0;\n    $70 = HEAP8[$60 + -12 >> 0] | 0;\n    if (!($70 & 1)) $78 = ($70 & 255) >>> 1; else $78 = HEAP32[$60 + -8 >> 2] | 0;\n    $77 = $78 + $79 | 0;\n    $80 = $77 + 1 | 0;\n    if ($80 >>> 0 > $82 >>> 0) {\n     $83 = _realloc($buf, $80) | 0;\n     if (!$83) {\n      HEAP32[$internal_status >> 2] = -1;\n      $$1 = 0;\n      $112 = -1;\n      break;\n     }\n     if ($2) $$028 = $83; else {\n      HEAP32[$n >> 2] = $80;\n      $$028 = $83;\n     }\n    } else if (!$buf) {\n     $$1 = 0;\n     $112 = 0;\n     break;\n    } else $$028 = $buf;\n    $86 = HEAP32[$7 >> 2] | 0;\n    $88 = $86 + -12 | 0;\n    $89 = HEAP8[$88 >> 0] | 0;\n    $91 = ($89 & 1) == 0;\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($86 + -24 | 0, $91 ? $88 + 1 | 0 : HEAP32[$86 + -4 >> 2] | 0, $91 ? ($89 & 255) >>> 1 : HEAP32[$86 + -8 >> 2] | 0) | 0;\n    $101 = HEAP32[$7 >> 2] | 0;\n    $102 = $101 + -24 | 0;\n    if (!(HEAP8[$102 >> 0] & 1)) $109 = $102 + 1 | 0; else $109 = HEAP32[$101 + -16 >> 2] | 0;\n    _memcpy($$028 | 0, $109 | 0, $77 | 0) | 0;\n    HEAP8[$$028 + $77 >> 0] = 0;\n    $$1 = $$028;\n    $112 = 0;\n   } while (0);\n   if ($status) HEAP32[$status >> 2] = $112;\n   __ZN10__cxxabiv112_GLOBAL__N_12DbD2Ev($db);\n   $$0 = $$1;\n  }\n }\n if ((label | 0) == 3) if (!$status) $$0 = 0; else {\n  HEAP32[$status >> 2] = -3;\n  $$0 = 0;\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _fmod($x, $y) {\n $x = +$x;\n $y = +$y;\n var $$0 = 0.0, $$lcssa7 = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $106 = 0, $107 = 0, $11 = 0, $112 = 0, $114 = 0, $116 = 0, $119 = 0, $12 = 0, $121 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $130 = 0, $137 = 0, $138 = 0, $139 = 0, $140 = 0, $141 = 0, $146 = 0, $149 = 0, $150 = 0, $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $16 = 0, $2 = 0, $23 = 0.0, $25 = 0, $26 = 0, $3 = 0, $37 = 0, $38 = 0, $4 = 0, $44 = 0, $45 = 0, $46 = 0, $55 = 0, $6 = 0, $60 = 0, $61 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $78 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $9 = 0, $93 = 0, $95 = 0, $97 = 0, $ex$0$lcssa = 0, $ex$026 = 0, $ex$1 = 0, $ex$2$lcssa = 0, $ex$212 = 0, $ex$3$lcssa = 0, $ex$39 = 0, $ey$0$lcssa = 0, $ey$020 = 0, $ey$1$ph = 0, label = 0;\n HEAPF64[tempDoublePtr >> 3] = $x;\n $0 = HEAP32[tempDoublePtr >> 2] | 0;\n $1 = HEAP32[tempDoublePtr + 4 >> 2] | 0;\n HEAPF64[tempDoublePtr >> 3] = $y;\n $2 = HEAP32[tempDoublePtr >> 2] | 0;\n $3 = HEAP32[tempDoublePtr + 4 >> 2] | 0;\n $4 = _bitshift64Lshr($0 | 0, $1 | 0, 52) | 0;\n $6 = $4 & 2047;\n $7 = _bitshift64Lshr($2 | 0, $3 | 0, 52) | 0;\n $9 = $7 & 2047;\n $10 = $1 & -2147483648;\n $11 = _bitshift64Shl($2 | 0, $3 | 0, 1) | 0;\n $12 = tempRet0;\n L1 : do if (($11 | 0) == 0 & ($12 | 0) == 0) label = 3; else {\n  $16 = $3 & 2147483647;\n  if ($16 >>> 0 > 2146435072 | ($16 | 0) == 2146435072 & $2 >>> 0 > 0 | ($6 | 0) == 2047) label = 3; else {\n   $25 = _bitshift64Shl($0 | 0, $1 | 0, 1) | 0;\n   $26 = tempRet0;\n   if (!($26 >>> 0 > $12 >>> 0 | ($26 | 0) == ($12 | 0) & $25 >>> 0 > $11 >>> 0)) return +(($25 | 0) == ($11 | 0) & ($26 | 0) == ($12 | 0) ? $x * 0.0 : $x);\n   if (!$6) {\n    $37 = _bitshift64Shl($0 | 0, $1 | 0, 12) | 0;\n    $38 = tempRet0;\n    if (($38 | 0) > -1 | ($38 | 0) == -1 & $37 >>> 0 > 4294967295) {\n     $45 = $37;\n     $46 = $38;\n     $ex$026 = 0;\n     while (1) {\n      $44 = $ex$026 + -1 | 0;\n      $45 = _bitshift64Shl($45 | 0, $46 | 0, 1) | 0;\n      $46 = tempRet0;\n      if (!(($46 | 0) > -1 | ($46 | 0) == -1 & $45 >>> 0 > 4294967295)) {\n       $ex$0$lcssa = $44;\n       break;\n      } else $ex$026 = $44;\n     }\n    } else $ex$0$lcssa = 0;\n    $55 = _bitshift64Shl($0 | 0, $1 | 0, 1 - $ex$0$lcssa | 0) | 0;\n    $83 = $55;\n    $84 = tempRet0;\n    $ex$1 = $ex$0$lcssa;\n   } else {\n    $83 = $0;\n    $84 = $1 & 1048575 | 1048576;\n    $ex$1 = $6;\n   }\n   if (!$9) {\n    $60 = _bitshift64Shl($2 | 0, $3 | 0, 12) | 0;\n    $61 = tempRet0;\n    if (($61 | 0) > -1 | ($61 | 0) == -1 & $60 >>> 0 > 4294967295) {\n     $68 = $60;\n     $69 = $61;\n     $ey$020 = 0;\n     while (1) {\n      $67 = $ey$020 + -1 | 0;\n      $68 = _bitshift64Shl($68 | 0, $69 | 0, 1) | 0;\n      $69 = tempRet0;\n      if (!(($69 | 0) > -1 | ($69 | 0) == -1 & $68 >>> 0 > 4294967295)) {\n       $ey$0$lcssa = $67;\n       break;\n      } else $ey$020 = $67;\n     }\n    } else $ey$0$lcssa = 0;\n    $78 = _bitshift64Shl($2 | 0, $3 | 0, 1 - $ey$0$lcssa | 0) | 0;\n    $85 = $78;\n    $86 = tempRet0;\n    $ey$1$ph = $ey$0$lcssa;\n   } else {\n    $85 = $2;\n    $86 = $3 & 1048575 | 1048576;\n    $ey$1$ph = $9;\n   }\n   $87 = _i64Subtract($83 | 0, $84 | 0, $85 | 0, $86 | 0) | 0;\n   $88 = tempRet0;\n   $93 = ($88 | 0) > -1 | ($88 | 0) == -1 & $87 >>> 0 > 4294967295;\n   L23 : do if (($ex$1 | 0) > ($ey$1$ph | 0)) {\n    $152 = $93;\n    $153 = $87;\n    $154 = $88;\n    $95 = $83;\n    $97 = $84;\n    $ex$212 = $ex$1;\n    while (1) {\n     if ($152) if (($95 | 0) == ($85 | 0) & ($97 | 0) == ($86 | 0)) break; else {\n      $100 = $153;\n      $101 = $154;\n     } else {\n      $100 = $95;\n      $101 = $97;\n     }\n     $102 = _bitshift64Shl($100 | 0, $101 | 0, 1) | 0;\n     $103 = tempRet0;\n     $104 = $ex$212 + -1 | 0;\n     $106 = _i64Subtract($102 | 0, $103 | 0, $85 | 0, $86 | 0) | 0;\n     $107 = tempRet0;\n     $112 = ($107 | 0) > -1 | ($107 | 0) == -1 & $106 >>> 0 > 4294967295;\n     if (($104 | 0) > ($ey$1$ph | 0)) {\n      $152 = $112;\n      $153 = $106;\n      $154 = $107;\n      $95 = $102;\n      $97 = $103;\n      $ex$212 = $104;\n     } else {\n      $$lcssa7 = $112;\n      $114 = $102;\n      $116 = $103;\n      $155 = $106;\n      $156 = $107;\n      $ex$2$lcssa = $104;\n      break L23;\n     }\n    }\n    $$0 = $x * 0.0;\n    break L1;\n   } else {\n    $$lcssa7 = $93;\n    $114 = $83;\n    $116 = $84;\n    $155 = $87;\n    $156 = $88;\n    $ex$2$lcssa = $ex$1;\n   } while (0);\n   if ($$lcssa7) if (($114 | 0) == ($85 | 0) & ($116 | 0) == ($86 | 0)) {\n    $$0 = $x * 0.0;\n    break;\n   } else {\n    $119 = $156;\n    $121 = $155;\n   } else {\n    $119 = $116;\n    $121 = $114;\n   }\n   if ($119 >>> 0 < 1048576 | ($119 | 0) == 1048576 & $121 >>> 0 < 0) {\n    $126 = $121;\n    $127 = $119;\n    $ex$39 = $ex$2$lcssa;\n    while (1) {\n     $128 = _bitshift64Shl($126 | 0, $127 | 0, 1) | 0;\n     $129 = tempRet0;\n     $130 = $ex$39 + -1 | 0;\n     if ($129 >>> 0 < 1048576 | ($129 | 0) == 1048576 & $128 >>> 0 < 0) {\n      $126 = $128;\n      $127 = $129;\n      $ex$39 = $130;\n     } else {\n      $137 = $128;\n      $138 = $129;\n      $ex$3$lcssa = $130;\n      break;\n     }\n    }\n   } else {\n    $137 = $121;\n    $138 = $119;\n    $ex$3$lcssa = $ex$2$lcssa;\n   }\n   if (($ex$3$lcssa | 0) > 0) {\n    $139 = _i64Add($137 | 0, $138 | 0, 0, -1048576) | 0;\n    $140 = tempRet0;\n    $141 = _bitshift64Shl($ex$3$lcssa | 0, 0, 52) | 0;\n    $149 = $140 | tempRet0;\n    $150 = $139 | $141;\n   } else {\n    $146 = _bitshift64Lshr($137 | 0, $138 | 0, 1 - $ex$3$lcssa | 0) | 0;\n    $149 = tempRet0;\n    $150 = $146;\n   }\n   HEAP32[tempDoublePtr >> 2] = $150;\n   HEAP32[tempDoublePtr + 4 >> 2] = $149 | $10;\n   $$0 = +HEAPF64[tempDoublePtr >> 3];\n  }\n } while (0);\n if ((label | 0) == 3) {\n  $23 = $x * $y;\n  $$0 = $23 / $23;\n }\n return +$$0;\n}\n\nfunction __ZN46EmscriptenBindingInitializer_constant_bindingsC2Ev($this) {\n $this = $this | 0;\n var $0 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $0 = sp;\n __ZN10emscripten8functionIiJiiiEJEEEvPKcPFT_DpT0_EDpT1_(8590, 7);\n __ZN10emscripten8functionIiJiEJEEEvPKcPFT_DpT0_EDpT1_(8596, 3);\n __ZN10emscripten8functionIiJiNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEEJEEEvPKcPFT_DpT0_EDpT1_(8605, 2);\n __ZN10emscripten8functionIiJiNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEEJEEEvPKcPFT_DpT0_EDpT1_(8616, 3);\n __ZN10emscripten8functionIiJiiEJEEEvPKcPFT_DpT0_EDpT1_(8632, 4);\n __ZN10emscripten8functionIiJiEJEEEvPKcPFT_DpT0_EDpT1_(8650, 4);\n __ZN10emscripten8functionIiJNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEEJEEEvPKcPFT_DpT0_EDpT1_(8670, 5);\n __ZN10emscripten8functionIiJiiiEJEEEvPKcPFT_DpT0_EDpT1_(8682, 8);\n __ZN10emscripten8functionIiJiiEJEEEvPKcPFT_DpT0_EDpT1_(8699, 5);\n __ZN10emscripten8functionIiJiiiEJEEEvPKcPFT_DpT0_EDpT1_(8719, 9);\n __ZN10emscripten8functionIiJiiiEJEEEvPKcPFT_DpT0_EDpT1_(8737, 10);\n __ZN10emscripten8functionIiJiiEJEEEvPKcPFT_DpT0_EDpT1_(8759, 6);\n __ZN10emscripten8functionIiJiiEJEEEvPKcPFT_DpT0_EDpT1_(8782, 7);\n __ZN10emscripten8functionIiJiEJEEEvPKcPFT_DpT0_EDpT1_(8811, 6);\n __ZN10emscripten8functionIiJiEJEEEvPKcPFT_DpT0_EDpT1_(8824, 7);\n __ZN10emscripten8functionIiJiiiEJEEEvPKcPFT_DpT0_EDpT1_(8837, 11);\n __ZN10emscripten8functionIiJiiEJEEEvPKcPFT_DpT0_EDpT1_(8856, 8);\n __ZN10emscripten8functionIiJiiEJEEEvPKcPFT_DpT0_EDpT1_(8866, 9);\n __ZN10emscripten8functionIiJiEJEEEvPKcPFT_DpT0_EDpT1_(8879, 8);\n __ZN10emscripten8functionIiJiEJEEEvPKcPFT_DpT0_EDpT1_(8892, 9);\n __ZN10emscripten8functionIvJiEJEEEvPKcPFT_DpT0_EDpT1_(8911, 10);\n __ZN10emscripten8functionIiJEJEEEvPKcPFT_DpT0_EDpT1_(8923, 1);\n __ZN10emscripten8functionIvJidEJEEEvPKcPFT_DpT0_EDpT1_(8935, 1);\n __ZN10emscripten8functionIdJiEJEEEvPKcPFT_DpT0_EDpT1_(8958, 1);\n __ZN10emscripten8functionIvJidEJEEEvPKcPFT_DpT0_EDpT1_(8981, 2);\n __ZN10emscripten8functionIdJiEJEEEvPKcPFT_DpT0_EDpT1_(9003, 2);\n __ZN10emscripten8functionIvJiiEJEEEvPKcPFT_DpT0_EDpT1_(9025, 1);\n __ZN10emscripten8functionIiJiEJEEEvPKcPFT_DpT0_EDpT1_(9042, 10);\n __ZN10emscripten8functionIvJiiEJEEEvPKcPFT_DpT0_EDpT1_(9059, 2);\n __ZN10emscripten8functionIiJiEJEEEvPKcPFT_DpT0_EDpT1_(9072, 11);\n __ZN10emscripten8functionIvJiiEJEEEvPKcPFT_DpT0_EDpT1_(9085, 3);\n __ZN10emscripten8functionIiJiEJEEEvPKcPFT_DpT0_EDpT1_(9109, 12);\n __ZN10emscripten8functionIvJifEJEEEvPKcPFT_DpT0_EDpT1_(9133, 3);\n __ZN10emscripten8functionIdJiEJEEEvPKcPFT_DpT0_EDpT1_(9146, 3);\n __ZN10emscripten8functionIvJiiEJEEEvPKcPFT_DpT0_EDpT1_(9159, 4);\n __ZN10emscripten8functionIiJiEJEEEvPKcPFT_DpT0_EDpT1_(9177, 13);\n __ZN10emscripten8functionIvJiiEJEEEvPKcPFT_DpT0_EDpT1_(9195, 5);\n __ZN10emscripten8functionIiJiEJEEEvPKcPFT_DpT0_EDpT1_(9211, 14);\n __ZN10emscripten8functionIvJiiEJEEEvPKcPFT_DpT0_EDpT1_(9227, 6);\n __ZN10emscripten8functionIiJiEJEEEvPKcPFT_DpT0_EDpT1_(9244, 15);\n __ZN10emscripten8constantIiEEvPKcRKT_(9261, 2088);\n __ZN10emscripten8constantIiEEvPKcRKT_(9290, 2096);\n __ZN10emscripten8constantIiEEvPKcRKT_(9318, 2092);\n __embind_register_constant(9351, 680, 0);\n __embind_register_constant(9368, 680, 1);\n __embind_register_constant(9384, 680, 0);\n __embind_register_constant(9406, 680, 0);\n __embind_register_constant(9431, 680, 1);\n __embind_register_constant(9456, 680, 1);\n __embind_register_constant(9481, 680, 100);\n __embind_register_constant(9508, 680, 0);\n __embind_register_constant(9534, 680, 1);\n __embind_register_constant(9560, 680, 0);\n __embind_register_constant(9587, 680, 0);\n __embind_register_constant(9614, 680, 1);\n __embind_register_constant(9640, 680, 2);\n __embind_register_constant(9665, 680, 3);\n __embind_register_constant(9703, 680, 4);\n __embind_register_constant(9740, 680, 0);\n __embind_register_constant(9774, 680, 0);\n __embind_register_constant(9798, 680, 1);\n __embind_register_constant(9824, 680, 2);\n __embind_register_constant(9851, 680, 2);\n __embind_register_constant(9885, 680, 5);\n HEAPF64[$0 >> 3] = .5;\n __ZN10emscripten8constantIdEEvPKcRKT_(9903, $0);\n __embind_register_constant(9924, 680, 0);\n __embind_register_constant(9943, 680, 1);\n __embind_register_constant(9961, 680, 2);\n __embind_register_constant(9979, 680, 3);\n __embind_register_constant(9998, 680, 4);\n __embind_register_constant(10020, 680, 3);\n __embind_register_constant(10039, 680, 515);\n __embind_register_constant(10068, 680, 259);\n __embind_register_constant(10096, 680, 4);\n __embind_register_constant(10115, 680, 772);\n __embind_register_constant(10145, 680, 1028);\n __embind_register_constant(10175, 680, 0);\n __embind_register_constant(10206, 680, 1);\n __embind_register_constant(10242, 680, 2);\n __embind_register_constant(10276, 680, 3);\n __embind_register_constant(10314, 680, 0);\n __embind_register_constant(10347, 680, 1);\n __embind_register_constant(10394, 680, 2);\n __embind_register_constant(10436, 680, 3);\n __embind_register_constant(10479, 680, 4);\n __embind_register_constant(10531, 680, 5);\n __embind_register_constant(10582, 680, 6);\n __embind_register_constant(10627, 680, 7);\n __embind_register_constant(10666, 680, 8);\n __embind_register_constant(10711, 680, 9);\n STACKTOP = sp;\n return;\n}\n\nfunction _arParamDecompMat($source, $cpara, $trans) {\n $source = $source | 0;\n $cpara = $cpara | 0;\n $trans = $trans | 0;\n var $102 = 0, $105 = 0, $109 = 0.0, $111 = 0.0, $113 = 0.0, $118 = 0.0, $119 = 0, $127 = 0.0, $128 = 0, $134 = 0.0, $140 = 0.0, $146 = 0.0, $152 = 0.0, $163 = 0.0, $167 = 0.0, $181 = 0, $185 = 0, $189 = 0, $45 = 0.0, $47 = 0.0, $49 = 0.0, $55 = 0.0, $56 = 0, $57 = 0.0, $58 = 0, $60 = 0.0, $61 = 0, $63 = 0.0, $64 = 0, $69 = 0, $71 = 0.0, $73 = 0.0, $75 = 0.0, $80 = 0.0, $81 = 0, $84 = 0.0, $87 = 0.0, $90 = 0.0, $96 = 0.0, $97 = 0, $99 = 0, $Cpara = 0, $r$024 = 0, $r$122 = 0, $r$318 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 96 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $Cpara = sp;\n if (!(+HEAPF64[$source + 88 >> 3] >= 0.0)) {\n  $r$122 = 0;\n  do {\n   HEAPF64[$Cpara + ($r$122 << 5) >> 3] = -+HEAPF64[$source + ($r$122 << 5) >> 3];\n   HEAPF64[$Cpara + ($r$122 << 5) + 8 >> 3] = -+HEAPF64[$source + ($r$122 << 5) + 8 >> 3];\n   HEAPF64[$Cpara + ($r$122 << 5) + 16 >> 3] = -+HEAPF64[$source + ($r$122 << 5) + 16 >> 3];\n   HEAPF64[$Cpara + ($r$122 << 5) + 24 >> 3] = -+HEAPF64[$source + ($r$122 << 5) + 24 >> 3];\n   $r$122 = $r$122 + 1 | 0;\n  } while (($r$122 | 0) != 3);\n } else {\n  $r$024 = 0;\n  do {\n   HEAPF64[$Cpara + ($r$024 << 5) >> 3] = +HEAPF64[$source + ($r$024 << 5) >> 3];\n   HEAPF64[$Cpara + ($r$024 << 5) + 8 >> 3] = +HEAPF64[$source + ($r$024 << 5) + 8 >> 3];\n   HEAPF64[$Cpara + ($r$024 << 5) + 16 >> 3] = +HEAPF64[$source + ($r$024 << 5) + 16 >> 3];\n   HEAPF64[$Cpara + ($r$024 << 5) + 24 >> 3] = +HEAPF64[$source + ($r$024 << 5) + 24 >> 3];\n   $r$024 = $r$024 + 1 | 0;\n  } while (($r$024 | 0) != 3);\n }\n HEAPF64[$cpara >> 3] = 0.0;\n HEAPF64[$cpara + 8 >> 3] = 0.0;\n HEAPF64[$cpara + 16 >> 3] = 0.0;\n HEAPF64[$cpara + 24 >> 3] = 0.0;\n HEAPF64[$cpara + 32 >> 3] = 0.0;\n HEAPF64[$cpara + 40 >> 3] = 0.0;\n HEAPF64[$cpara + 48 >> 3] = 0.0;\n HEAPF64[$cpara + 56 >> 3] = 0.0;\n HEAPF64[$cpara + 64 >> 3] = 0.0;\n HEAPF64[$cpara + 72 >> 3] = 0.0;\n HEAPF64[$cpara + 80 >> 3] = 0.0;\n HEAPF64[$cpara + 88 >> 3] = 0.0;\n $45 = +HEAPF64[$Cpara + 64 >> 3];\n $47 = +HEAPF64[$Cpara + 72 >> 3];\n $49 = +HEAPF64[$Cpara + 80 >> 3];\n $55 = +Math_sqrt(+($45 * $45 + $47 * $47 + $49 * $49));\n $56 = $cpara + 80 | 0;\n HEAPF64[$56 >> 3] = $55;\n $57 = $45 / $55;\n $58 = $trans + 64 | 0;\n HEAPF64[$58 >> 3] = $57;\n $60 = $47 / +HEAPF64[$56 >> 3];\n $61 = $trans + 72 | 0;\n HEAPF64[$61 >> 3] = $60;\n $63 = $49 / +HEAPF64[$56 >> 3];\n $64 = $trans + 80 | 0;\n HEAPF64[$64 >> 3] = $63;\n $69 = $trans + 88 | 0;\n HEAPF64[$69 >> 3] = +HEAPF64[$Cpara + 88 >> 3] / +HEAPF64[$56 >> 3];\n $71 = +HEAPF64[$Cpara + 32 >> 3];\n $73 = +HEAPF64[$Cpara + 40 >> 3];\n $75 = +HEAPF64[$Cpara + 48 >> 3];\n $80 = $57 * $71 + $60 * $73 + $63 * $75;\n $81 = $cpara + 48 | 0;\n HEAPF64[$81 >> 3] = $80;\n $84 = $71 - $80 * +HEAPF64[$58 >> 3];\n $87 = $73 - $80 * +HEAPF64[$61 >> 3];\n $90 = $75 - $80 * +HEAPF64[$64 >> 3];\n $96 = +Math_sqrt(+($84 * $84 + $87 * $87 + $90 * $90));\n $97 = $cpara + 40 | 0;\n HEAPF64[$97 >> 3] = $96;\n $99 = $trans + 32 | 0;\n HEAPF64[$99 >> 3] = $84 / $96;\n $102 = $trans + 40 | 0;\n HEAPF64[$102 >> 3] = $87 / +HEAPF64[$97 >> 3];\n $105 = $trans + 48 | 0;\n HEAPF64[$105 >> 3] = $90 / +HEAPF64[$97 >> 3];\n $109 = +HEAPF64[$Cpara >> 3];\n $111 = +HEAPF64[$Cpara + 8 >> 3];\n $113 = +HEAPF64[$Cpara + 16 >> 3];\n $118 = +HEAPF64[$58 >> 3] * $109 + +HEAPF64[$61 >> 3] * $111 + +HEAPF64[$64 >> 3] * $113;\n $119 = $cpara + 16 | 0;\n HEAPF64[$119 >> 3] = $118;\n $127 = +HEAPF64[$99 >> 3] * $109 + +HEAPF64[$102 >> 3] * $111 + +HEAPF64[$105 >> 3] * $113;\n $128 = $cpara + 8 | 0;\n HEAPF64[$128 >> 3] = $127;\n $134 = $109 - $127 * +HEAPF64[$99 >> 3] - $118 * +HEAPF64[$58 >> 3];\n $140 = $111 - $127 * +HEAPF64[$102 >> 3] - $118 * +HEAPF64[$61 >> 3];\n $146 = $113 - $127 * +HEAPF64[$105 >> 3] - $118 * +HEAPF64[$64 >> 3];\n $152 = +Math_sqrt(+($134 * $134 + $140 * $140 + $146 * $146));\n HEAPF64[$cpara >> 3] = $152;\n HEAPF64[$trans >> 3] = $134 / $152;\n HEAPF64[$trans + 8 >> 3] = $140 / +HEAPF64[$cpara >> 3];\n HEAPF64[$trans + 16 >> 3] = $146 / +HEAPF64[$cpara >> 3];\n $163 = +HEAPF64[$69 >> 3];\n $167 = (+HEAPF64[$Cpara + 56 >> 3] - +HEAPF64[$81 >> 3] * $163) / +HEAPF64[$97 >> 3];\n HEAPF64[$trans + 56 >> 3] = $167;\n HEAPF64[$trans + 24 >> 3] = (+HEAPF64[$Cpara + 24 >> 3] - $167 * +HEAPF64[$128 >> 3] - +HEAPF64[$119 >> 3] * $163) / +HEAPF64[$cpara >> 3];\n $r$318 = 0;\n do {\n  $181 = $cpara + ($r$318 << 5) | 0;\n  HEAPF64[$181 >> 3] = +HEAPF64[$181 >> 3] / +HEAPF64[$56 >> 3];\n  $185 = $cpara + ($r$318 << 5) + 8 | 0;\n  HEAPF64[$185 >> 3] = +HEAPF64[$185 >> 3] / +HEAPF64[$56 >> 3];\n  $189 = $cpara + ($r$318 << 5) + 16 | 0;\n  HEAPF64[$189 >> 3] = +HEAPF64[$189 >> 3] / +HEAPF64[$56 >> 3];\n  $r$318 = $r$318 + 1 | 0;\n } while (($r$318 | 0) != 3);\n STACKTOP = sp;\n return 0;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_19base_nameINSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEEEET_RS9_($agg$result, $s) {\n $agg$result = $agg$result | 0;\n $s = $s | 0;\n var $$$$i$i$i3 = 0, $$0$i$i27 = 0, $$lcssa = 0, $$lcssa32 = 0, $$lcssa33 = 0, $0 = 0, $12 = 0, $13 = 0, $15 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $27 = 0, $31 = 0, $33 = 0, $38 = 0, $42 = 0, $46 = 0, $48 = 0, $56 = 0, $63 = 0, $64 = 0, $7 = 0, $__p$0$i$i26 = 0, $__p$0$ph$i$i = 0, $c$0$ph = 0, $p0$0 = 0, $p0$1 = 0, $pe$0 = 0, $pe$0$ph = 0, $pe$1 = 0, $pe$1$pn = 0, label = 0;\n $0 = HEAP8[$s >> 0] | 0;\n $2 = ($0 & 1) == 0;\n $7 = $2 ? ($0 & 255) >>> 1 : HEAP32[$s + 4 >> 2] | 0;\n L1 : do if (!$7) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($agg$result, $s); else {\n  $12 = $2 ? $s + 1 | 0 : HEAP32[$s + 8 >> 2] | 0;\n  $13 = $7 >>> 0 > 11;\n  $15 = _memcmp($12, 12820, $13 ? 11 : $7) | 0;\n  if (!((($15 | 0) == 0 ? ($7 >>> 0 < 11 ? -1 : $13 & 1) : $15) | 0)) {\n   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6assignEPKcj($s, 13424, 70);\n   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($agg$result, 13495, 12);\n   break;\n  }\n  $20 = $7 >>> 0 > 12;\n  $21 = $20 ? 12 : $7;\n  $22 = _memcmp($12, 12832, $21) | 0;\n  $$$$i$i$i3 = $7 >>> 0 < 12 ? -1 : $20 & 1;\n  if (!((($22 | 0) == 0 ? $$$$i$i$i3 : $22) | 0)) {\n   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6assignEPKcj($s, 13508, 49);\n   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($agg$result, 13558, 13);\n   break;\n  }\n  $27 = _memcmp($12, 12845, $21) | 0;\n  if (!((($27 | 0) == 0 ? $$$$i$i$i3 : $27) | 0)) {\n   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6assignEPKcj($s, 13572, 49);\n   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($agg$result, 13622, 13);\n   break;\n  }\n  $31 = $7 >>> 0 > 13;\n  $33 = _memcmp($12, 12858, $31 ? 13 : $7) | 0;\n  if (!((($33 | 0) == 0 ? ($7 >>> 0 < 13 ? -1 : $31 & 1) : $33) | 0)) {\n   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6assignEPKcj($s, 13636, 50);\n   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($agg$result, 13687, 14);\n   break;\n  }\n  $38 = $12 + $7 | 0;\n  L16 : do if ((HEAP8[$12 + ($7 + -1) >> 0] | 0) == 62) {\n   $c$0$ph = 1;\n   $pe$0$ph = $38;\n   L17 : while (1) {\n    $pe$0 = $pe$0$ph;\n    L19 : while (1) {\n     $42 = $pe$0 + -1 | 0;\n     if (($42 | 0) == ($12 | 0)) break L17;\n     $46 = $pe$0 + -2 | 0;\n     switch (HEAP8[$46 >> 0] | 0) {\n     case 60:\n      {\n       $$lcssa = $46;\n       $$lcssa32 = $42;\n       label = 16;\n       break L19;\n       break;\n      }\n     case 62:\n      {\n       $$lcssa33 = $42;\n       label = 17;\n       break L19;\n       break;\n      }\n     default:\n      $pe$0 = $42;\n     }\n    }\n    if ((label | 0) == 16) {\n     label = 0;\n     $48 = $c$0$ph + -1 | 0;\n     if (!$48) {\n      $pe$1 = $$lcssa;\n      break L16;\n     } else {\n      $c$0$ph = $48;\n      $pe$0$ph = $$lcssa32;\n      continue;\n     }\n    } else if ((label | 0) == 17) {\n     label = 0;\n     $c$0$ph = $c$0$ph + 1 | 0;\n     $pe$0$ph = $$lcssa33;\n     continue;\n    }\n   }\n   HEAP32[$agg$result >> 2] = 0;\n   HEAP32[$agg$result + 4 >> 2] = 0;\n   HEAP32[$agg$result + 8 >> 2] = 0;\n   break L1;\n  } else $pe$1 = $38; while (0);\n  $pe$1$pn = $pe$1;\n  while (1) {\n   $p0$0 = $pe$1$pn + -1 | 0;\n   if (($p0$0 | 0) == ($12 | 0)) {\n    $p0$1 = $12;\n    break;\n   }\n   if ((HEAP8[$p0$0 >> 0] | 0) == 58) {\n    $p0$1 = $pe$1$pn;\n    break;\n   } else $pe$1$pn = $p0$0;\n  }\n  $56 = $pe$1 - $p0$1 | 0;\n  if ($56 >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv($agg$result);\n  if ($56 >>> 0 < 11) {\n   HEAP8[$agg$result >> 0] = $56 << 1;\n   $__p$0$ph$i$i = $agg$result + 1 | 0;\n  } else {\n   $63 = $56 + 16 & -16;\n   $64 = _malloc($63) | 0;\n   HEAP32[$agg$result + 8 >> 2] = $64;\n   HEAP32[$agg$result >> 2] = $63 | 1;\n   HEAP32[$agg$result + 4 >> 2] = $56;\n   $__p$0$ph$i$i = $64;\n  }\n  if (($p0$1 | 0) != ($pe$1 | 0)) {\n   $$0$i$i27 = $p0$1;\n   $__p$0$i$i26 = $__p$0$ph$i$i;\n   while (1) {\n    HEAP8[$__p$0$i$i26 >> 0] = HEAP8[$$0$i$i27 >> 0] | 0;\n    $$0$i$i27 = $$0$i$i27 + 1 | 0;\n    if (($$0$i$i27 | 0) == ($pe$1 | 0)) break; else $__p$0$i$i26 = $__p$0$i$i26 + 1 | 0;\n   }\n  }\n  HEAP8[$__p$0$ph$i$i + $56 >> 0] = 0;\n } while (0);\n return;\n}\n\nfunction _trinkle($head, $width, $cmp, $pp, $pshift, $trusty, $lp) {\n $head = $head | 0;\n $width = $width | 0;\n $cmp = $cmp | 0;\n $pp = $pp | 0;\n $pshift = $pshift | 0;\n $trusty = $trusty | 0;\n $lp = $lp | 0;\n var $$0$i = 0, $$0$lcssa = 0, $$0$lcssa49 = 0, $$01162 = 0, $$01162$phi = 0, $$02$i$i = 0, $$02$i3$i = 0, $$02$lcssa = 0, $$02$lcssa51 = 0, $$02964 = 0, $$03$lcssa = 0, $$03865 = 0, $$lcssa = 0, $$lcssa75 = 0, $0 = 0, $10 = 0, $17 = 0, $18 = 0, $2 = 0, $24 = 0, $26 = 0, $27 = 0, $3 = 0, $31 = 0, $37 = 0, $40 = 0, $47 = 0, $49 = 0, $51 = 0, $54 = 0, $57 = 0, $58 = 0, $65 = 0, $ar = 0, $i$0$lcssa = 0, $i$0$lcssa50 = 0, $i$01063 = 0, $nTrailingZeros$03$i$i = 0, $nTrailingZeros$03$i2$i = 0, $nTrailingZeros$03$i2$i$lcssa = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 240 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $ar = sp;\n $0 = HEAP32[$pp >> 2] | 0;\n $2 = HEAP32[$pp + 4 >> 2] | 0;\n HEAP32[$ar >> 2] = $head;\n $3 = 0 - $width | 0;\n L1 : do if (($2 | 0) != 0 | ($0 | 0) != 1) {\n  $10 = $head + (0 - (HEAP32[$lp + ($pshift << 2) >> 2] | 0)) | 0;\n  if ((FUNCTION_TABLE_iii[$cmp & 15]($10, $head) | 0) < 1) {\n   $$0$lcssa = $head;\n   $$02$lcssa = $pshift;\n   $$03$lcssa = $trusty;\n   $i$0$lcssa = 1;\n   label = 19;\n  } else {\n   $$01162 = $head;\n   $$02964 = $pshift;\n   $$03865 = ($trusty | 0) == 0;\n   $18 = $10;\n   $27 = $0;\n   $37 = $2;\n   $i$01063 = 1;\n   while (1) {\n    if ($$03865 & ($$02964 | 0) > 1) {\n     $17 = HEAP32[$lp + ($$02964 + -2 << 2) >> 2] | 0;\n     if ((FUNCTION_TABLE_iii[$cmp & 15]($$01162 + $3 | 0, $18) | 0) > -1) {\n      $$0$lcssa49 = $$01162;\n      $$02$lcssa51 = $$02964;\n      $i$0$lcssa50 = $i$01063;\n      label = 20;\n      break L1;\n     }\n     if ((FUNCTION_TABLE_iii[$cmp & 15]($$01162 + (0 - ($17 + $width)) | 0, $18) | 0) > -1) {\n      $$0$lcssa49 = $$01162;\n      $$02$lcssa51 = $$02964;\n      $i$0$lcssa50 = $i$01063;\n      label = 20;\n      break L1;\n     }\n    }\n    $24 = $i$01063 + 1 | 0;\n    HEAP32[$ar + ($i$01063 << 2) >> 2] = $18;\n    $26 = $27 + -1 | 0;\n    do if (!$26) {\n     $49 = 32;\n     label = 16;\n    } else {\n     if (!($26 & 1)) {\n      $$02$i$i = $26;\n      $nTrailingZeros$03$i$i = 0;\n      while (1) {\n       $31 = $nTrailingZeros$03$i$i + 1 | 0;\n       $$02$i$i = $$02$i$i >>> 1;\n       if ($$02$i$i & 1) {\n        $$lcssa = $31;\n        break;\n       } else $nTrailingZeros$03$i$i = $31;\n      }\n      if (!$$lcssa) label = 11; else $47 = $$lcssa;\n     } else label = 11;\n     if ((label | 0) == 11) {\n      label = 0;\n      if (!$37) {\n       $49 = 64;\n       label = 16;\n       break;\n      }\n      if (!($37 & 1)) {\n       $$02$i3$i = $37;\n       $nTrailingZeros$03$i2$i = 0;\n      } else {\n       $$0$i = 0;\n       $51 = $27;\n       $54 = $37;\n       $58 = 0;\n       break;\n      }\n      while (1) {\n       $40 = $nTrailingZeros$03$i2$i + 1 | 0;\n       $$02$i3$i = $$02$i3$i >>> 1;\n       if ($$02$i3$i & 1) {\n        $$lcssa75 = $40;\n        $nTrailingZeros$03$i2$i$lcssa = $nTrailingZeros$03$i2$i;\n        break;\n       } else $nTrailingZeros$03$i2$i = $40;\n      }\n      if (!$$lcssa75) {\n       $$0$i = 0;\n       $51 = $27;\n       $54 = $37;\n       $58 = 0;\n       break;\n      } else $47 = $nTrailingZeros$03$i2$i$lcssa + 33 | 0;\n     }\n     if ($47 >>> 0 > 31) {\n      $49 = $47;\n      label = 16;\n     } else {\n      $$0$i = $47;\n      $51 = $27;\n      $54 = $37;\n      $58 = $47;\n     }\n    } while (0);\n    if ((label | 0) == 16) {\n     label = 0;\n     $$0$i = $49 + -32 | 0;\n     $51 = $37;\n     $54 = 0;\n     $58 = $49;\n    }\n    $27 = $54 << 32 - $$0$i | $51 >>> $$0$i;\n    $37 = $54 >>> $$0$i;\n    $57 = $58 + $$02964 | 0;\n    if (!(($37 | 0) != 0 | ($27 | 0) != 1)) {\n     $$0$lcssa49 = $18;\n     $$02$lcssa51 = $57;\n     $i$0$lcssa50 = $24;\n     label = 20;\n     break L1;\n    }\n    $65 = $18 + (0 - (HEAP32[$lp + ($57 << 2) >> 2] | 0)) | 0;\n    if ((FUNCTION_TABLE_iii[$cmp & 15]($65, HEAP32[$ar >> 2] | 0) | 0) < 1) {\n     $$0$lcssa = $18;\n     $$02$lcssa = $57;\n     $$03$lcssa = 0;\n     $i$0$lcssa = $24;\n     label = 19;\n     break;\n    } else {\n     $$01162$phi = $18;\n     $$02964 = $57;\n     $$03865 = 1;\n     $18 = $65;\n     $i$01063 = $24;\n     $$01162 = $$01162$phi;\n    }\n   }\n  }\n } else {\n  $$0$lcssa = $head;\n  $$02$lcssa = $pshift;\n  $$03$lcssa = $trusty;\n  $i$0$lcssa = 1;\n  label = 19;\n } while (0);\n if ((label | 0) == 19) if (!$$03$lcssa) {\n  $$0$lcssa49 = $$0$lcssa;\n  $$02$lcssa51 = $$02$lcssa;\n  $i$0$lcssa50 = $i$0$lcssa;\n  label = 20;\n }\n if ((label | 0) == 20) {\n  _cycle($width, $ar, $i$0$lcssa50);\n  _sift($$0$lcssa49, $width, $cmp, $$02$lcssa51, $lp);\n }\n STACKTOP = sp;\n return;\n}\n\nfunction _arMatrixPCA($input, $evec, $ev, $mean) {\n $input = $input | 0;\n $evec = $evec | 0;\n $ev = $ev | 0;\n $mean = $mean | 0;\n var $$0 = 0, $1 = 0, $14 = 0, $17 = 0, $20 = 0, $23 = 0.0, $25 = 0, $27 = 0, $3 = 0, $32 = 0, $35 = 0, $36 = 0.0, $37 = 0, $46 = 0, $5 = 0, $52 = 0, $53 = 0, $65 = 0, $70 = 0, $71 = 0, $73 = 0, $75 = 0, $78 = 0.0, $81 = 0, $exitcond3$i29 = 0, $i$0$i322 = 0, $i$0$i42 = 0, $i$015 = 0, $i$1$i38 = 0, $i$113 = 0, $i$2$i26 = 0, $i$211 = 0, $j$0$i32 = 0, $j$0$i619 = 0, $m$0$i221 = 0, $m$0$i37 = 0, $m$1$i31 = 0, $m$1$i518 = 0, $smax$i = 0, $sum$0$lcssa = 0.0, $sum$012 = 0.0, $v$0$i30 = 0, $v$0$i417 = 0;\n $1 = HEAP32[$input + 4 >> 2] | 0;\n $3 = HEAP32[$input + 8 >> 2] | 0;\n $5 = ($1 | 0) < ($3 | 0) ? $1 : $3;\n L1 : do if (($1 | 0) < 2 | ($3 | 0) < 2) $$0 = -1; else if ((HEAP32[$evec + 8 >> 2] | 0) == ($3 | 0)) if ((HEAP32[$evec + 4 >> 2] | 0) == ($5 | 0)) {\n  $14 = $ev + 4 | 0;\n  if ((HEAP32[$14 >> 2] | 0) == ($5 | 0)) {\n   $17 = $mean + 4 | 0;\n   if ((HEAP32[$17 >> 2] | 0) == ($3 | 0)) {\n    $20 = _arMatrixAllocDup($input) | 0;\n    if (!$20) $$0 = -1; else {\n     $23 = +Math_sqrt(+(+($1 | 0)));\n     $25 = HEAP32[$20 + 4 >> 2] | 0;\n     $27 = HEAP32[$20 + 8 >> 2] | 0;\n     if (!(($25 | 0) < 1 | ($27 | 0) < 1)) if ((HEAP32[$17 >> 2] | 0) == ($27 | 0)) {\n      if ($27) {\n       $32 = HEAP32[$mean >> 2] | 0;\n       $i$0$i42 = 0;\n       do {\n        HEAPF64[$32 + ($i$0$i42 << 3) >> 3] = 0.0;\n        $i$0$i42 = $i$0$i42 + 1 | 0;\n       } while (($i$0$i42 | 0) != ($27 | 0));\n      }\n      $35 = HEAP32[$20 >> 2] | 0;\n      if ($25) {\n       $exitcond3$i29 = ($27 | 0) == 0;\n       $i$1$i38 = 0;\n       $m$0$i37 = $35;\n       while (1) {\n        if (!$exitcond3$i29) {\n         $j$0$i32 = 0;\n         $m$1$i31 = $m$0$i37;\n         $v$0$i30 = HEAP32[$mean >> 2] | 0;\n         while (1) {\n          HEAPF64[$v$0$i30 >> 3] = +HEAPF64[$m$1$i31 >> 3] + +HEAPF64[$v$0$i30 >> 3];\n          $j$0$i32 = $j$0$i32 + 1 | 0;\n          if (($j$0$i32 | 0) == ($27 | 0)) break; else {\n           $m$1$i31 = $m$1$i31 + 8 | 0;\n           $v$0$i30 = $v$0$i30 + 8 | 0;\n          }\n         }\n        }\n        $i$1$i38 = $i$1$i38 + 1 | 0;\n        if (($i$1$i38 | 0) == ($25 | 0)) break; else $m$0$i37 = $m$0$i37 + ($27 << 3) | 0;\n       }\n      }\n      $36 = +($25 | 0);\n      if ($27) {\n       $37 = HEAP32[$mean >> 2] | 0;\n       $i$2$i26 = 0;\n       do {\n        $46 = $37 + ($i$2$i26 << 3) | 0;\n        HEAPF64[$46 >> 3] = +HEAPF64[$46 >> 3] / $36;\n        $i$2$i26 = $i$2$i26 + 1 | 0;\n       } while (($i$2$i26 | 0) != ($27 | 0));\n      }\n      $smax$i = ($27 | 0) > 0 ? $27 : 0;\n      if (($25 | 0) > 0) {\n       $52 = ($27 | 0) > 0;\n       $i$0$i322 = 0;\n       $m$0$i221 = $35;\n       while (1) {\n        if ($52) {\n         $j$0$i619 = 0;\n         $m$1$i518 = $m$0$i221;\n         $v$0$i417 = HEAP32[$mean >> 2] | 0;\n         while (1) {\n          HEAPF64[$m$1$i518 >> 3] = +HEAPF64[$m$1$i518 >> 3] - +HEAPF64[$v$0$i417 >> 3];\n          $j$0$i619 = $j$0$i619 + 1 | 0;\n          if (($j$0$i619 | 0) >= ($27 | 0)) break; else {\n           $m$1$i518 = $m$1$i518 + 8 | 0;\n           $v$0$i417 = $v$0$i417 + 8 | 0;\n          }\n         }\n        }\n        $i$0$i322 = $i$0$i322 + 1 | 0;\n        if (($i$0$i322 | 0) >= ($25 | 0)) break; else $m$0$i221 = $m$0$i221 + ($smax$i << 3) | 0;\n       }\n      }\n      $53 = Math_imul($3, $1) | 0;\n      if (($53 | 0) > 0) {\n       $i$015 = 0;\n       do {\n        $65 = $35 + ($i$015 << 3) | 0;\n        HEAPF64[$65 >> 3] = +HEAPF64[$65 >> 3] / $23;\n        $i$015 = $i$015 + 1 | 0;\n       } while (($i$015 | 0) < ($53 | 0));\n      }\n      $70 = _PCA($20, $evec, $ev) | 0;\n      _arMatrixFree($20) | 0;\n      $71 = HEAP32[$14 >> 2] | 0;\n      if (($71 | 0) > 0) {\n       $73 = HEAP32[$ev >> 2] | 0;\n       $i$113 = 0;\n       $sum$012 = 0.0;\n       while (1) {\n        $78 = $sum$012 + +HEAPF64[$73 + ($i$113 << 3) >> 3];\n        $i$113 = $i$113 + 1 | 0;\n        if (($i$113 | 0) >= ($71 | 0)) {\n         $sum$0$lcssa = $78;\n         break;\n        } else $sum$012 = $78;\n       }\n      } else $sum$0$lcssa = 0.0;\n      if (($71 | 0) <= 0) {\n       $$0 = $70;\n       break;\n      }\n      $75 = HEAP32[$ev >> 2] | 0;\n      $i$211 = 0;\n      while (1) {\n       $81 = $75 + ($i$211 << 3) | 0;\n       HEAPF64[$81 >> 3] = +HEAPF64[$81 >> 3] / $sum$0$lcssa;\n       $i$211 = $i$211 + 1 | 0;\n       if (($i$211 | 0) >= ($71 | 0)) {\n        $$0 = $70;\n        break L1;\n       }\n      }\n     }\n     _arMatrixFree($20) | 0;\n     $$0 = -1;\n    }\n   } else $$0 = -1;\n  } else $$0 = -1;\n } else $$0 = -1; else $$0 = -1; while (0);\n return $$0 | 0;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_126parse_base_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) {\n $first = $first | 0;\n $last = $last | 0;\n $db = $db | 0;\n var $$0 = 0, $$0$i = 0, $10 = 0, $12 = 0, $14 = 0, $15 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $29 = 0, $31 = 0, $4 = 0, $42 = 0, $48 = 0, $52 = 0, $54 = 0, $56 = 0, $58 = 0, $59 = 0, $67 = 0, $68 = 0, $69 = 0, $70 = 0, $73 = 0, $75 = 0, $9 = 0, $args = 0, $args3 = 0, $t$0$i = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 32 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $args = sp + 12 | 0;\n $args3 = sp;\n L1 : do if (($last - $first | 0) > 1) {\n  $4 = HEAP8[$first >> 0] | 0;\n  switch ($4 << 24 >> 24) {\n  case 100:\n  case 111:\n   {\n    if ((HEAP8[$first + 1 >> 0] | 0) == 110) {\n     $9 = $first + 2 | 0;\n     if ($4 << 24 >> 24 == 111) {\n      $10 = __ZN10__cxxabiv112_GLOBAL__N_119parse_operator_nameINS0_2DbEEEPKcS4_S4_RT_($9, $last, $db) | 0;\n      if (($10 | 0) == ($9 | 0)) {\n       $$0 = $first;\n       break L1;\n      }\n      $12 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_($10, $last, $db) | 0;\n      if (($12 | 0) == ($10 | 0)) {\n       $$0 = $10;\n       break L1;\n      }\n      $14 = $db + 4 | 0;\n      $15 = HEAP32[$14 >> 2] | 0;\n      if ((($15 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {\n       $$0 = $12;\n       break L1;\n      }\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($args, $15 + -24 | 0);\n      $23 = HEAP32[$14 >> 2] | 0;\n      $24 = $23 + -24 | 0;\n      $26 = $23;\n      do {\n       $25 = $26 + -24 | 0;\n       HEAP32[$14 >> 2] = $25;\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($25);\n       $26 = HEAP32[$14 >> 2] | 0;\n      } while (($26 | 0) != ($24 | 0));\n      $29 = HEAP8[$args >> 0] | 0;\n      $31 = ($29 & 1) == 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($23 + -48 | 0, $31 ? $args + 1 | 0 : HEAP32[$args + 8 >> 2] | 0, $31 ? ($29 & 255) >>> 1 : HEAP32[$args + 4 >> 2] | 0) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($args);\n      $$0 = $12;\n      break L1;\n     }\n     if (($9 | 0) == ($last | 0)) $$0$i = $last; else {\n      $42 = __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_typeINS0_2DbEEEPKcS4_S4_RT_($9, $last, $db) | 0;\n      if (($42 | 0) == ($9 | 0)) $t$0$i = __ZN10__cxxabiv112_GLOBAL__N_115parse_simple_idINS0_2DbEEEPKcS4_S4_RT_($9, $last, $db) | 0; else $t$0$i = $42;\n      if (($t$0$i | 0) == ($9 | 0)) $$0$i = $9; else {\n       $48 = HEAP32[$db + 4 >> 2] | 0;\n       if ((HEAP32[$db >> 2] | 0) == ($48 | 0)) $$0$i = $9; else {\n        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($48 + -24 | 0, 0, 12902) | 0;\n        $$0$i = $t$0$i;\n       }\n      }\n     }\n     STACKTOP = sp;\n     return (($$0$i | 0) == ($9 | 0) ? $first : $$0$i) | 0;\n    }\n    break;\n   }\n  default:\n   {}\n  }\n  $52 = __ZN10__cxxabiv112_GLOBAL__N_115parse_simple_idINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;\n  if (($52 | 0) == ($first | 0)) {\n   $54 = __ZN10__cxxabiv112_GLOBAL__N_119parse_operator_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;\n   if (($54 | 0) == ($first | 0)) $$0 = $first; else {\n    $56 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_($54, $last, $db) | 0;\n    if (($56 | 0) == ($54 | 0)) $$0 = $54; else {\n     $58 = $db + 4 | 0;\n     $59 = HEAP32[$58 >> 2] | 0;\n     if ((($59 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$0 = $56; else {\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($args3, $59 + -24 | 0);\n      $67 = HEAP32[$58 >> 2] | 0;\n      $68 = $67 + -24 | 0;\n      $70 = $67;\n      do {\n       $69 = $70 + -24 | 0;\n       HEAP32[$58 >> 2] = $69;\n       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($69);\n       $70 = HEAP32[$58 >> 2] | 0;\n      } while (($70 | 0) != ($68 | 0));\n      $73 = HEAP8[$args3 >> 0] | 0;\n      $75 = ($73 & 1) == 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($67 + -48 | 0, $75 ? $args3 + 1 | 0 : HEAP32[$args3 + 8 >> 2] | 0, $75 ? ($73 & 255) >>> 1 : HEAP32[$args3 + 4 >> 2] | 0) | 0;\n      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($args3);\n      $$0 = $56;\n     }\n    }\n   }\n  } else $$0 = $52;\n } else $$0 = $first; while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arParamLoad($filename, $num, $param, $varargs) {\n $filename = $filename | 0;\n $num = $num | 0;\n $param = $param | 0;\n $varargs = $varargs | 0;\n var $$pre$phi14Z2D = 0, $11 = 0, $14 = 0, $15 = 0, $18 = 0, $21 = 0, $23 = 0, $26 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0.0, $34 = 0, $36 = 0, $43 = 0, $44 = 0, $5 = 0, $53 = 0.0, $8 = 0, $ap = 0, $dist_function_version$04 = 0, $i$0 = 0, $i$0$lcssa = 0, $i$119 = 0, $param_wasRead = 0, $ret$06 = 0, $ret$09 = 0, $vararg_buffer = 0, $vararg_buffer13 = 0, $vararg_buffer15 = 0, $vararg_buffer18 = 0, $vararg_buffer2 = 0, $vararg_buffer6 = 0, $vararg_buffer9 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 256 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer18 = sp + 232 | 0;\n $vararg_buffer15 = sp + 224 | 0;\n $vararg_buffer13 = sp + 216 | 0;\n $vararg_buffer9 = sp + 208 | 0;\n $vararg_buffer6 = sp + 200 | 0;\n $vararg_buffer2 = sp + 192 | 0;\n $vararg_buffer = sp + 184 | 0;\n $ap = sp + 240 | 0;\n $param_wasRead = sp;\n do if (($filename | 0) != 0 & ($num | 0) > 0 & ($param | 0) != 0) {\n  $3 = _fopen($filename, 4854) | 0;\n  if (!$3) {\n   $5 = ___errno_location() | 0;\n   HEAP32[$vararg_buffer >> 2] = HEAP32[$5 >> 2];\n   HEAP32[$vararg_buffer + 4 >> 2] = $filename;\n   _arLog(3, 4857, $vararg_buffer);\n   $8 = _strerror(HEAP32[$5 >> 2] | 0) | 0;\n   HEAP32[$vararg_buffer2 >> 2] = 13809;\n   HEAP32[$vararg_buffer2 + 4 >> 2] = $8;\n   _arLog(3, 5361, $vararg_buffer2);\n   $ret$06 = -1;\n   break;\n  }\n  _fseek($3, 0, 2) | 0;\n  L6 : do if (!(_ferror($3) | 0)) {\n   $15 = _ftell($3) | 0;\n   _rewind($3);\n   $i$0 = 0;\n   while (1) {\n    if (($i$0 | 0) >= 4) {\n     $i$0$lcssa = $i$0;\n     label = 9;\n     break;\n    }\n    $18 = HEAP32[2012 + ($i$0 << 3) + 4 >> 2] | 0;\n    $21 = $i$0 + 1 | 0;\n    if (!(($15 | 0) % ($18 | 0) | 0)) {\n     $23 = $18;\n     $dist_function_version$04 = $21;\n     break;\n    } else $i$0 = $21;\n   }\n   do if ((label | 0) == 9) if (($i$0$lcssa | 0) == 4) {\n    _arLog(3, 4971, $vararg_buffer13);\n    $ret$09 = -1;\n    break L6;\n   } else {\n    $23 = HEAP32[2012 + (0 << 3) + 4 >> 2] | 0;\n    $dist_function_version$04 = 0;\n    break;\n   } while (0);\n   if ((_fread($param_wasRead, $23, 1, $3) | 0) != 1) {\n    $26 = ___errno_location() | 0;\n    HEAP32[$vararg_buffer15 >> 2] = HEAP32[$26 >> 2];\n    _arLog(3, 5051, $vararg_buffer15);\n    $29 = _strerror(HEAP32[$26 >> 2] | 0) | 0;\n    HEAP32[$vararg_buffer18 >> 2] = 13809;\n    HEAP32[$vararg_buffer18 + 4 >> 2] = $29;\n    _arLog(3, 5361, $vararg_buffer18);\n    $ret$09 = -1;\n    break;\n   }\n   $30 = $param_wasRead + 176 | 0;\n   HEAP32[$30 >> 2] = $dist_function_version$04;\n   _byteswap($param_wasRead);\n   $31 = ($dist_function_version$04 | 0) == 1;\n   $32 = $param_wasRead + 120 | 0;\n   if ($31) {\n    $33 = +HEAPF64[$32 >> 3];\n    $34 = $param_wasRead + 128 | 0;\n    HEAPF64[$32 >> 3] = +HEAPF64[$34 >> 3];\n    HEAPF64[$34 >> 3] = $33;\n    $$pre$phi14Z2D = $34;\n   } else $$pre$phi14Z2D = $param_wasRead + 128 | 0;\n   _memcpy($param | 0, $param_wasRead | 0, 184) | 0;\n   HEAP32[$ap >> 2] = $varargs;\n   $36 = $param + 176 | 0;\n   if (($num | 0) > 1) {\n    $i$119 = 1;\n    while (1) {\n     $43 = (HEAP32[$ap >> 2] | 0) + (4 - 1) & ~(4 - 1);\n     $44 = HEAP32[$43 >> 2] | 0;\n     HEAP32[$ap >> 2] = $43 + 4;\n     HEAP32[$44 + 176 >> 2] = HEAP32[$36 >> 2];\n     if ((_fread($param_wasRead, HEAP32[2012 + ((HEAP32[$36 >> 2] | 0) + -1 << 3) + 4 >> 2] | 0, 1, $3) | 0) != 1) {\n      $ret$09 = -1;\n      break L6;\n     }\n     HEAP32[$30 >> 2] = $dist_function_version$04;\n     _byteswap($param_wasRead);\n     if ($31) {\n      $53 = +HEAPF64[$32 >> 3];\n      HEAPF64[$32 >> 3] = +HEAPF64[$$pre$phi14Z2D >> 3];\n      HEAPF64[$$pre$phi14Z2D >> 3] = $53;\n     }\n     _memcpy($44 | 0, $param_wasRead | 0, 184) | 0;\n     $i$119 = $i$119 + 1 | 0;\n     if (($i$119 | 0) >= ($num | 0)) {\n      $ret$09 = 0;\n      break;\n     }\n    }\n   } else $ret$09 = 0;\n  } else {\n   $11 = ___errno_location() | 0;\n   HEAP32[$vararg_buffer6 >> 2] = HEAP32[$11 >> 2];\n   _arLog(3, 4926, $vararg_buffer6);\n   $14 = _strerror(HEAP32[$11 >> 2] | 0) | 0;\n   HEAP32[$vararg_buffer9 >> 2] = 13809;\n   HEAP32[$vararg_buffer9 + 4 >> 2] = $14;\n   _arLog(3, 5361, $vararg_buffer9);\n   $ret$09 = -1;\n  } while (0);\n  _fclose($3) | 0;\n  $ret$06 = $ret$09;\n } else $ret$06 = -1; while (0);\n STACKTOP = sp;\n return $ret$06 | 0;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_123parse_prefix_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($first, $last, $op, $db) {\n $first = $first | 0;\n $last = $last | 0;\n $op = $op | 0;\n $db = $db | 0;\n var $$04 = 0, $$pre$i$i$i = 0, $0 = 0, $1 = 0, $10 = 0, $13 = 0, $15 = 0, $2 = 0, $25 = 0, $28 = 0, $3 = 0, $35 = 0, $37 = 0, $4 = 0, $40 = 0, $44 = 0, $47 = 0, $52 = 0, $53 = 0, $56 = 0, $57 = 0, $59 = 0, $60 = 0, $69 = 0, $7 = 0, $72 = 0, $77 = 0, $8 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 48 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $0 = sp + 36 | 0;\n $1 = sp + 24 | 0;\n $2 = sp + 12 | 0;\n $3 = sp;\n $4 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;\n if (($4 | 0) == ($first | 0)) $$04 = $first; else {\n  $7 = $db + 4 | 0;\n  $8 = HEAP32[$7 >> 2] | 0;\n  if ((HEAP32[$db >> 2] | 0) == ($8 | 0)) $$04 = $first; else {\n   $10 = $8 + -24 | 0;\n   __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EERKSB_PKS8_($2, $op, 12688);\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($3, (HEAP32[$7 >> 2] | 0) + -24 | 0);\n   $13 = HEAP8[$3 >> 0] | 0;\n   $15 = ($13 & 1) == 0;\n   $25 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($2, $15 ? $3 + 1 | 0 : HEAP32[$3 + 8 >> 2] | 0, $15 ? ($13 & 255) >>> 1 : HEAP32[$3 + 4 >> 2] | 0) | 0;\n   HEAP32[$1 >> 2] = HEAP32[$25 >> 2];\n   HEAP32[$1 + 4 >> 2] = HEAP32[$25 + 4 >> 2];\n   HEAP32[$1 + 8 >> 2] = HEAP32[$25 + 8 >> 2];\n   HEAP32[$25 >> 2] = 0;\n   HEAP32[$25 + 4 >> 2] = 0;\n   HEAP32[$25 + 8 >> 2] = 0;\n   $28 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1, 12593) | 0;\n   HEAP32[$0 >> 2] = HEAP32[$28 >> 2];\n   HEAP32[$0 + 4 >> 2] = HEAP32[$28 + 4 >> 2];\n   HEAP32[$0 + 8 >> 2] = HEAP32[$28 + 8 >> 2];\n   HEAP32[$28 >> 2] = 0;\n   HEAP32[$28 + 4 >> 2] = 0;\n   HEAP32[$28 + 8 >> 2] = 0;\n   do if (!(HEAP8[$10 >> 0] & 1)) {\n    HEAP8[$10 + 1 >> 0] = 0;\n    HEAP8[$10 >> 0] = 0;\n   } else {\n    $35 = $8 + -16 | 0;\n    HEAP8[HEAP32[$35 >> 2] >> 0] = 0;\n    $37 = $8 + -20 | 0;\n    HEAP32[$37 >> 2] = 0;\n    $$pre$i$i$i = HEAP8[$10 >> 0] | 0;\n    if (!($$pre$i$i$i & 1)) {\n     $44 = $$pre$i$i$i;\n     $53 = 10;\n    } else {\n     $40 = HEAP32[$10 >> 2] | 0;\n     $44 = $40 & 255;\n     $53 = ($40 & -2) + -1 | 0;\n    }\n    if (!($44 & 1)) {\n     $47 = ($44 & 255) >>> 1;\n     if (($44 & 255) < 22) {\n      $52 = 10;\n      $72 = $47;\n      $77 = 1;\n     } else {\n      $52 = ($47 + 16 & 240) + -1 | 0;\n      $72 = $47;\n      $77 = 1;\n     }\n    } else {\n     $52 = 10;\n     $72 = 0;\n     $77 = 0;\n    }\n    if (($52 | 0) != ($53 | 0)) {\n     if (($52 | 0) == 10) {\n      $59 = $10 + 1 | 0;\n      $60 = HEAP32[$35 >> 2] | 0;\n      if ($77) {\n       _memcpy($59 | 0, $60 | 0, (($44 & 255) >>> 1) + 1 | 0) | 0;\n       _free($60);\n      } else {\n       HEAP8[$59 >> 0] = HEAP8[$60 >> 0] | 0;\n       _free($60);\n      }\n      HEAP8[$10 >> 0] = $72 << 1;\n      break;\n     }\n     $56 = $52 + 1 | 0;\n     $57 = _malloc($56) | 0;\n     if (!($52 >>> 0 <= $53 >>> 0 & ($57 | 0) == 0)) {\n      if ($77) _memcpy($57 | 0, $10 + 1 | 0, (($44 & 255) >>> 1) + 1 | 0) | 0; else {\n       $69 = HEAP32[$35 >> 2] | 0;\n       HEAP8[$57 >> 0] = HEAP8[$69 >> 0] | 0;\n       _free($69);\n      }\n      HEAP32[$10 >> 2] = $56 | 1;\n      HEAP32[$37 >> 2] = $72;\n      HEAP32[$35 >> 2] = $57;\n     }\n    }\n   } while (0);\n   HEAP32[$10 >> 2] = HEAP32[$0 >> 2];\n   HEAP32[$10 + 4 >> 2] = HEAP32[$0 + 4 >> 2];\n   HEAP32[$10 + 8 >> 2] = HEAP32[$0 + 8 >> 2];\n   HEAP32[$0 >> 2] = 0;\n   HEAP32[$0 + 4 >> 2] = 0;\n   HEAP32[$0 + 8 >> 2] = 0;\n   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);\n   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);\n   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);\n   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);\n   $$04 = $4;\n  }\n }\n STACKTOP = sp;\n return $$04 | 0;\n}\n\nfunction _icpPoint($handle, $data, $initMatXw2Xc, $matXw2Xc, $err) {\n $handle = $handle | 0;\n $data = $data | 0;\n $initMatXw2Xc = $initMatXw2Xc | 0;\n $matXw2Xc = $matXw2Xc | 0;\n $err = $err | 0;\n var $$0 = 0, $$lcssa = 0, $$lcssa28 = 0, $$lcssa50 = 0.0, $$pre = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $28 = 0, $34 = 0, $38 = 0.0, $4 = 0, $42 = 0.0, $46 = 0.0, $47 = 0, $52 = 0, $55 = 0.0, $7 = 0, $9 = 0, $U = 0, $dS = 0, $err0$0 = 0.0, $err1$0$lcssa = 0.0, $err1$033 = 0.0, $i$1 = 0, $j$042 = 0, $j$134 = 0, $j$238 = 0, $matXw2U = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 176 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer1 = sp + 168 | 0;\n $vararg_buffer = sp + 160 | 0;\n $U = sp + 48 | 0;\n $matXw2U = sp + 64 | 0;\n $dS = sp;\n $0 = $data + 8 | 0;\n $1 = HEAP32[$0 >> 2] | 0;\n do if (($1 | 0) < 3) $$0 = -1; else {\n  $4 = _malloc($1 * 96 | 0) | 0;\n  if (!$4) {\n   _arLog(3, 5109, $vararg_buffer);\n   $$0 = -1;\n   break;\n  }\n  $7 = _malloc($1 << 4) | 0;\n  if (!$7) {\n   _arLog(3, 5109, $vararg_buffer1);\n   _free($4);\n   $$0 = -1;\n   break;\n  } else $j$042 = 0;\n  do {\n   HEAPF64[$matXw2Xc + ($j$042 << 5) >> 3] = +HEAPF64[$initMatXw2Xc + ($j$042 << 5) >> 3];\n   HEAPF64[$matXw2Xc + ($j$042 << 5) + 8 >> 3] = +HEAPF64[$initMatXw2Xc + ($j$042 << 5) + 8 >> 3];\n   HEAPF64[$matXw2Xc + ($j$042 << 5) + 16 >> 3] = +HEAPF64[$initMatXw2Xc + ($j$042 << 5) + 16 >> 3];\n   HEAPF64[$matXw2Xc + ($j$042 << 5) + 24 >> 3] = +HEAPF64[$initMatXw2Xc + ($j$042 << 5) + 24 >> 3];\n   $j$042 = $j$042 + 1 | 0;\n  } while (($j$042 | 0) != 3);\n  $9 = $data + 4 | 0;\n  $10 = $U + 8 | 0;\n  $11 = $handle + 104 | 0;\n  $12 = $handle + 120 | 0;\n  $13 = $handle + 112 | 0;\n  $14 = $handle + 96 | 0;\n  $err0$0 = 0.0;\n  $i$1 = 0;\n  L11 : while (1) {\n   _arUtilMatMul($handle, $matXw2Xc, $matXw2U) | 0;\n   $28 = HEAP32[$0 >> 2] | 0;\n   if (($28 | 0) > 0) {\n    $err1$033 = 0.0;\n    $j$134 = 0;\n    while (1) {\n     if ((_icpGetU_from_X_by_MatX2U($U, $matXw2U, (HEAP32[$9 >> 2] | 0) + ($j$134 * 24 | 0) | 0) | 0) < 0) {\n      label = 10;\n      break L11;\n     }\n     $34 = HEAP32[$data >> 2] | 0;\n     $38 = +HEAPF64[$34 + ($j$134 << 4) >> 3] - +HEAPF64[$U >> 3];\n     $42 = +HEAPF64[$34 + ($j$134 << 4) + 8 >> 3] - +HEAPF64[$10 >> 3];\n     $46 = $err1$033 + ($38 * $38 + $42 * $42);\n     $47 = $j$134 << 1;\n     HEAPF64[$7 + ($47 << 3) >> 3] = $38;\n     HEAPF64[$7 + (($47 | 1) << 3) >> 3] = $42;\n     $j$134 = $j$134 + 1 | 0;\n     $52 = HEAP32[$0 >> 2] | 0;\n     if (($j$134 | 0) >= ($52 | 0)) {\n      $$lcssa = $52;\n      $err1$0$lcssa = $46;\n      break;\n     } else $err1$033 = $46;\n    }\n   } else {\n    $$lcssa = $28;\n    $err1$0$lcssa = 0.0;\n   }\n   $55 = $err1$0$lcssa / +($$lcssa | 0);\n   if ($55 < +HEAPF64[$11 >> 3]) {\n    $$lcssa50 = $55;\n    label = 24;\n    break;\n   }\n   if (($i$1 | 0) > 0) if ($55 < +HEAPF64[$12 >> 3]) if ($55 / $err0$0 > +HEAPF64[$13 >> 3]) {\n    $$lcssa50 = $55;\n    label = 24;\n    break;\n   }\n   if (($i$1 | 0) == (HEAP32[$14 >> 2] | 0)) {\n    $$lcssa50 = $55;\n    label = 24;\n    break;\n   }\n   if (($$lcssa | 0) > 0) {\n    $j$238 = 0;\n    while (1) {\n     if ((_icpGetJ_U_S($4 + ($j$238 * 12 << 3) | 0, $handle, $matXw2Xc, (HEAP32[$9 >> 2] | 0) + ($j$238 * 24 | 0) | 0) | 0) < 0) {\n      label = 20;\n      break L11;\n     }\n     $j$238 = $j$238 + 1 | 0;\n     $$pre = HEAP32[$0 >> 2] | 0;\n     if (($j$238 | 0) >= ($$pre | 0)) {\n      $$lcssa28 = $$pre;\n      break;\n     }\n    }\n   } else $$lcssa28 = $$lcssa;\n   if ((_icpGetDeltaS($dS, $7, $4, $$lcssa28 << 1) | 0) < 0) {\n    label = 22;\n    break;\n   }\n   _icpUpdateMat($matXw2Xc, $dS) | 0;\n   $err0$0 = $55;\n   $i$1 = $i$1 + 1 | 0;\n  }\n  if ((label | 0) == 10) {\n   _icpGetXw2XcCleanup($4, $7);\n   $$0 = -1;\n   break;\n  } else if ((label | 0) == 20) {\n   _icpGetXw2XcCleanup($4, $7);\n   $$0 = -1;\n   break;\n  } else if ((label | 0) == 22) {\n   _icpGetXw2XcCleanup($4, $7);\n   $$0 = -1;\n   break;\n  } else if ((label | 0) == 24) {\n   HEAPF64[$err >> 3] = $$lcssa50;\n   _free($4);\n   _free($7);\n   $$0 = 0;\n   break;\n  }\n } while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arGetMarkerInfo($image, $xsize, $ysize, $pixelFormat, $markerInfo2, $marker2_num, $pattHandle, $imageProcMode, $pattDetectMode, $arParamLTf, $pattRatio, $markerInfo, $marker_num, $matrixCodeType) {\n $image = $image | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $pixelFormat = $pixelFormat | 0;\n $markerInfo2 = $markerInfo2 | 0;\n $marker2_num = $marker2_num | 0;\n $pattHandle = $pattHandle | 0;\n $imageProcMode = $imageProcMode | 0;\n $pattDetectMode = $pattDetectMode | 0;\n $arParamLTf = $arParamLTf | 0;\n $pattRatio = +$pattRatio;\n $markerInfo = $markerInfo | 0;\n $marker_num = $marker_num | 0;\n $matrixCodeType = $matrixCodeType | 0;\n var $0 = 0, $1 = 0, $26 = 0, $29 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $i$03 = 0, $j$0$lcssa = 0, $j$02 = 0, $j$1 = 0, $pos0 = 0, $pos1 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $pos0 = sp + 4 | 0;\n $pos1 = sp;\n $0 = $pattDetectMode >>> 0 < 2;\n $1 = ($pattDetectMode | 0) == 2;\n if (($marker2_num | 0) > 0) {\n  $i$03 = 0;\n  $j$02 = 0;\n  while (1) {\n   HEAP32[$markerInfo + ($j$02 << 8) >> 2] = HEAP32[$markerInfo2 + ($i$03 * 80048 | 0) >> 2];\n   if ((_arParamObserv2IdealLTf($arParamLTf, +HEAPF64[$markerInfo2 + ($i$03 * 80048 | 0) + 8 >> 3], +HEAPF64[$markerInfo2 + ($i$03 * 80048 | 0) + 16 >> 3], $pos0, $pos1) | 0) < 0) $j$1 = $j$02; else {\n    HEAPF64[$markerInfo + ($j$02 << 8) + 56 >> 3] = +HEAPF32[$pos0 >> 2];\n    HEAPF64[$markerInfo + ($j$02 << 8) + 64 >> 3] = +HEAPF32[$pos1 >> 2];\n    $26 = $markerInfo + ($j$02 << 8) + 168 | 0;\n    if ((_arGetLine($markerInfo2 + ($i$03 * 80048 | 0) + 28 | 0, $markerInfo2 + ($i$03 * 80048 | 0) + 40028 | 0, HEAP32[$markerInfo2 + ($i$03 * 80048 | 0) + 24 >> 2] | 0, $markerInfo2 + ($i$03 * 80048 | 0) + 80028 | 0, $arParamLTf, $markerInfo + ($j$02 << 8) + 72 | 0, $26) | 0) < 0) $j$1 = $j$02; else {\n     $29 = $markerInfo + ($j$02 << 8) + 8 | 0;\n     $30 = $markerInfo + ($j$02 << 8) + 20 | 0;\n     $31 = $markerInfo + ($j$02 << 8) + 40 | 0;\n     $32 = $markerInfo + ($j$02 << 8) + 12 | 0;\n     $33 = $markerInfo + ($j$02 << 8) + 24 | 0;\n     $34 = $markerInfo + ($j$02 << 8) + 48 | 0;\n     switch (_arPattGetIDGlobal($pattHandle, $imageProcMode, $pattDetectMode, $image, $xsize, $ysize, $pixelFormat, $arParamLTf, $26, $pattRatio, $29, $30, $31, $32, $33, $34, $matrixCodeType, $markerInfo + ($j$02 << 8) + 240 | 0, $markerInfo + ($j$02 << 8) + 248 | 0) | 0) {\n     case 0:\n      {\n       HEAP32[$markerInfo + ($j$02 << 8) + 236 >> 2] = 0;\n       break;\n      }\n     case -1:\n      {\n       HEAP32[$markerInfo + ($j$02 << 8) + 236 >> 2] = 2;\n       break;\n      }\n     case -2:\n      {\n       HEAP32[$markerInfo + ($j$02 << 8) + 236 >> 2] = 3;\n       break;\n      }\n     case -3:\n      {\n       HEAP32[$markerInfo + ($j$02 << 8) + 236 >> 2] = 4;\n       break;\n      }\n     case -4:\n      {\n       HEAP32[$markerInfo + ($j$02 << 8) + 236 >> 2] = 5;\n       break;\n      }\n     case -5:\n      {\n       HEAP32[$markerInfo + ($j$02 << 8) + 236 >> 2] = 9;\n       break;\n      }\n     case -6:\n      {\n       HEAP32[$markerInfo + ($j$02 << 8) + 236 >> 2] = 1;\n       break;\n      }\n     default:\n      {}\n     }\n     if ($0) {\n      HEAP32[$markerInfo + ($j$02 << 8) + 4 >> 2] = HEAP32[$29 >> 2];\n      HEAP32[$markerInfo + ($j$02 << 8) + 16 >> 2] = HEAP32[$30 >> 2];\n      HEAPF64[$markerInfo + ($j$02 << 8) + 32 >> 3] = +HEAPF64[$31 >> 3];\n     } else if ($1) {\n      HEAP32[$markerInfo + ($j$02 << 8) + 4 >> 2] = HEAP32[$32 >> 2];\n      HEAP32[$markerInfo + ($j$02 << 8) + 16 >> 2] = HEAP32[$33 >> 2];\n      HEAPF64[$markerInfo + ($j$02 << 8) + 32 >> 3] = +HEAPF64[$34 >> 3];\n     }\n     $j$1 = $j$02 + 1 | 0;\n    }\n   }\n   $i$03 = $i$03 + 1 | 0;\n   if (($i$03 | 0) >= ($marker2_num | 0)) {\n    $j$0$lcssa = $j$1;\n    break;\n   } else $j$02 = $j$1;\n  }\n } else $j$0$lcssa = 0;\n HEAP32[$marker_num >> 2] = $j$0$lcssa;\n STACKTOP = sp;\n return 0;\n}\n\nfunction _arImageProcLumaHistAndBoxFilterWithBias($ipi, $dataPtr, $boxSize, $bias) {\n $ipi = $ipi | 0;\n $dataPtr = $dataPtr | 0;\n $boxSize = $boxSize | 0;\n $bias = $bias | 0;\n var $$0 = 0, $$lcssa = 0, $$pre$phi6Z2D = 0, $$pre$phiZ2D = 0, $0 = 0, $10 = 0, $12 = 0, $13 = 0, $14 = 0, $16 = 0, $17 = 0, $18 = 0, $2 = 0, $20 = 0, $24 = 0, $25 = 0, $26 = 0, $43 = 0, $5 = 0, $50 = 0, $57 = 0, $7 = 0, $count$0$lcssa = 0, $count$015 = 0, $count$110 = 0, $count$2 = 0, $count$3 = 0, $i$020 = 0, $i$18 = 0, $j$021 = 0, $kernel_i$011 = 0, $kernel_j$016 = 0, $val$0$lcssa = 0, $val$014 = 0, $val$19 = 0, $val$2 = 0, $val$3 = 0;\n $0 = _arImageProcLumaHist($ipi, $dataPtr) | 0;\n do if (($0 | 0) < 0) $$0 = $0; else {\n  $2 = $ipi + 4 | 0;\n  if (!(HEAP32[$2 >> 2] | 0)) {\n   $5 = $ipi + 8 | 0;\n   $7 = $ipi + 12 | 0;\n   $10 = _malloc(Math_imul(HEAP32[$7 >> 2] | 0, HEAP32[$5 >> 2] | 0) | 0) | 0;\n   HEAP32[$2 >> 2] = $10;\n   if (!$10) {\n    $$0 = -1;\n    break;\n   } else {\n    $$pre$phi6Z2D = $5;\n    $$pre$phiZ2D = $7;\n   }\n  } else {\n   $$pre$phi6Z2D = $ipi + 8 | 0;\n   $$pre$phiZ2D = $ipi + 12 | 0;\n  }\n  $12 = $boxSize >> 1;\n  $13 = 0 - $12 | 0;\n  $14 = HEAP32[$$pre$phiZ2D >> 2] | 0;\n  if (($14 | 0) > 0) {\n   $16 = ($12 | 0) < ($13 | 0);\n   $17 = ($12 | 0) < ($13 | 0);\n   $j$021 = 0;\n   do {\n    $18 = HEAP32[$$pre$phi6Z2D >> 2] | 0;\n    if (($18 | 0) > 0) {\n     $25 = $18;\n     $i$020 = 0;\n     do {\n      if ($16) {\n       $count$0$lcssa = 0;\n       $val$0$lcssa = 0;\n      } else {\n       $count$015 = 0;\n       $kernel_j$016 = $13;\n       $val$014 = 0;\n       while (1) {\n        $20 = $kernel_j$016 + $j$021 | 0;\n        if (($20 | 0) < 0) {\n         $count$3 = $count$015;\n         $val$3 = $val$014;\n        } else if (($20 | 0) < (HEAP32[$$pre$phiZ2D >> 2] | 0)) {\n         $24 = Math_imul($25, $20) | 0;\n         if ($17) {\n          $count$3 = $count$015;\n          $val$3 = $val$014;\n         } else {\n          $count$110 = $count$015;\n          $kernel_i$011 = $13;\n          $val$19 = $val$014;\n          while (1) {\n           $26 = $kernel_i$011 + $i$020 | 0;\n           if (($26 | 0) > -1 & ($26 | 0) < ($25 | 0)) {\n            $count$2 = $count$110 + 1 | 0;\n            $val$2 = (HEAPU8[(HEAP32[$ipi >> 2] | 0) + ($24 + $26) >> 0] | 0) + $val$19 | 0;\n           } else {\n            $count$2 = $count$110;\n            $val$2 = $val$19;\n           }\n           if (($kernel_i$011 | 0) < ($12 | 0)) {\n            $count$110 = $count$2;\n            $kernel_i$011 = $kernel_i$011 + 1 | 0;\n            $val$19 = $val$2;\n           } else {\n            $count$3 = $count$2;\n            $val$3 = $val$2;\n            break;\n           }\n          }\n         }\n        } else {\n         $count$3 = $count$015;\n         $val$3 = $val$014;\n        }\n        if (($kernel_j$016 | 0) < ($12 | 0)) {\n         $count$015 = $count$3;\n         $kernel_j$016 = $kernel_j$016 + 1 | 0;\n         $val$014 = $val$3;\n        } else {\n         $count$0$lcssa = $count$3;\n         $val$0$lcssa = $val$3;\n         break;\n        }\n       }\n      }\n      $43 = (Math_imul($25, $j$021) | 0) + $i$020 | 0;\n      HEAP8[(HEAP32[$2 >> 2] | 0) + $43 >> 0] = ($val$0$lcssa | 0) / ($count$0$lcssa | 0) | 0;\n      $i$020 = $i$020 + 1 | 0;\n      $25 = HEAP32[$$pre$phi6Z2D >> 2] | 0;\n     } while (($i$020 | 0) < ($25 | 0));\n    }\n    $j$021 = $j$021 + 1 | 0;\n    $50 = HEAP32[$$pre$phiZ2D >> 2] | 0;\n   } while (($j$021 | 0) < ($50 | 0));\n   $$lcssa = $50;\n  } else $$lcssa = $14;\n  if (!$bias) $$0 = 0; else if ((Math_imul($$lcssa, HEAP32[$$pre$phi6Z2D >> 2] | 0) | 0) > 0) {\n   $i$18 = 0;\n   do {\n    $57 = (HEAP32[$2 >> 2] | 0) + $i$18 | 0;\n    HEAP8[$57 >> 0] = (HEAPU8[$57 >> 0] | 0) + $bias;\n    $i$18 = $i$18 + 1 | 0;\n   } while (($i$18 | 0) < (Math_imul(HEAP32[$$pre$phiZ2D >> 2] | 0, HEAP32[$$pre$phi6Z2D >> 2] | 0) | 0));\n   $$0 = 0;\n  } else $$0 = 0;\n } while (0);\n return $$0 | 0;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($this, $0) {\n $this = $this | 0;\n $0 = $0 | 0;\n var $$pre$i$i$i = 0, $$pre$i$i$i2 = 0, $10 = 0, $14 = 0, $17 = 0, $22 = 0, $23 = 0, $26 = 0, $27 = 0, $29 = 0, $30 = 0, $39 = 0, $42 = 0, $47 = 0, $48 = 0, $5 = 0, $53 = 0, $55 = 0, $58 = 0, $62 = 0, $65 = 0, $7 = 0, $70 = 0, $71 = 0, $74 = 0, $75 = 0, $77 = 0, $78 = 0, $87 = 0, $90 = 0, $95 = 0, $96 = 0;\n do if (!(HEAP8[$this >> 0] & 1)) {\n  HEAP8[$this + 1 >> 0] = 0;\n  HEAP8[$this >> 0] = 0;\n } else {\n  $5 = $this + 8 | 0;\n  HEAP8[HEAP32[$5 >> 2] >> 0] = 0;\n  $7 = $this + 4 | 0;\n  HEAP32[$7 >> 2] = 0;\n  $$pre$i$i$i = HEAP8[$this >> 0] | 0;\n  if (!($$pre$i$i$i & 1)) {\n   $14 = $$pre$i$i$i;\n   $23 = 10;\n  } else {\n   $10 = HEAP32[$this >> 2] | 0;\n   $14 = $10 & 255;\n   $23 = ($10 & -2) + -1 | 0;\n  }\n  if (!($14 & 1)) {\n   $17 = ($14 & 255) >>> 1;\n   if (($14 & 255) < 22) {\n    $22 = 10;\n    $42 = $17;\n    $95 = 1;\n   } else {\n    $22 = ($17 + 16 & 240) + -1 | 0;\n    $42 = $17;\n    $95 = 1;\n   }\n  } else {\n   $22 = 10;\n   $42 = 0;\n   $95 = 0;\n  }\n  if (($22 | 0) != ($23 | 0)) {\n   if (($22 | 0) == 10) {\n    $29 = $this + 1 | 0;\n    $30 = HEAP32[$5 >> 2] | 0;\n    if ($95) {\n     _memcpy($29 | 0, $30 | 0, (($14 & 255) >>> 1) + 1 | 0) | 0;\n     _free($30);\n    } else {\n     HEAP8[$29 >> 0] = HEAP8[$30 >> 0] | 0;\n     _free($30);\n    }\n    HEAP8[$this >> 0] = $42 << 1;\n    break;\n   }\n   $26 = $22 + 1 | 0;\n   $27 = _malloc($26) | 0;\n   if (!($22 >>> 0 <= $23 >>> 0 & ($27 | 0) == 0)) {\n    if ($95) _memcpy($27 | 0, $this + 1 | 0, (($14 & 255) >>> 1) + 1 | 0) | 0; else {\n     $39 = HEAP32[$5 >> 2] | 0;\n     HEAP8[$27 >> 0] = HEAP8[$39 >> 0] | 0;\n     _free($39);\n    }\n    HEAP32[$this >> 2] = $26 | 1;\n    HEAP32[$7 >> 2] = $42;\n    HEAP32[$5 >> 2] = $27;\n   }\n  }\n } while (0);\n HEAP32[$this >> 2] = HEAP32[$0 >> 2];\n HEAP32[$this + 4 >> 2] = HEAP32[$0 + 4 >> 2];\n HEAP32[$this + 8 >> 2] = HEAP32[$0 + 8 >> 2];\n HEAP32[$0 >> 2] = 0;\n HEAP32[$0 + 4 >> 2] = 0;\n HEAP32[$0 + 8 >> 2] = 0;\n $47 = $this + 12 | 0;\n $48 = $0 + 12 | 0;\n do if (!(HEAP8[$47 >> 0] & 1)) {\n  HEAP8[$47 + 1 >> 0] = 0;\n  HEAP8[$47 >> 0] = 0;\n } else {\n  $53 = $this + 20 | 0;\n  HEAP8[HEAP32[$53 >> 2] >> 0] = 0;\n  $55 = $this + 16 | 0;\n  HEAP32[$55 >> 2] = 0;\n  $$pre$i$i$i2 = HEAP8[$47 >> 0] | 0;\n  if (!($$pre$i$i$i2 & 1)) {\n   $62 = $$pre$i$i$i2;\n   $71 = 10;\n  } else {\n   $58 = HEAP32[$47 >> 2] | 0;\n   $62 = $58 & 255;\n   $71 = ($58 & -2) + -1 | 0;\n  }\n  if (!($62 & 1)) {\n   $65 = ($62 & 255) >>> 1;\n   if (($62 & 255) < 22) {\n    $70 = 10;\n    $90 = $65;\n    $96 = 1;\n   } else {\n    $70 = ($65 + 16 & 240) + -1 | 0;\n    $90 = $65;\n    $96 = 1;\n   }\n  } else {\n   $70 = 10;\n   $90 = 0;\n   $96 = 0;\n  }\n  if (($70 | 0) != ($71 | 0)) {\n   if (($70 | 0) == 10) {\n    $77 = $47 + 1 | 0;\n    $78 = HEAP32[$53 >> 2] | 0;\n    if ($96) {\n     _memcpy($77 | 0, $78 | 0, (($62 & 255) >>> 1) + 1 | 0) | 0;\n     _free($78);\n    } else {\n     HEAP8[$77 >> 0] = HEAP8[$78 >> 0] | 0;\n     _free($78);\n    }\n    HEAP8[$47 >> 0] = $90 << 1;\n    break;\n   }\n   $74 = $70 + 1 | 0;\n   $75 = _malloc($74) | 0;\n   if (!($70 >>> 0 <= $71 >>> 0 & ($75 | 0) == 0)) {\n    if ($96) _memcpy($75 | 0, $47 + 1 | 0, (($62 & 255) >>> 1) + 1 | 0) | 0; else {\n     $87 = HEAP32[$53 >> 2] | 0;\n     HEAP8[$75 >> 0] = HEAP8[$87 >> 0] | 0;\n     _free($87);\n    }\n    HEAP32[$47 >> 2] = $74 | 1;\n    HEAP32[$55 >> 2] = $90;\n    HEAP32[$53 >> 2] = $75;\n   }\n  }\n } while (0);\n HEAP32[$47 >> 2] = HEAP32[$48 >> 2];\n HEAP32[$47 + 4 >> 2] = HEAP32[$48 + 4 >> 2];\n HEAP32[$47 + 8 >> 2] = HEAP32[$48 + 8 >> 2];\n HEAP32[$48 >> 2] = 0;\n HEAP32[$48 + 4 >> 2] = 0;\n HEAP32[$48 + 8 >> 2] = 0;\n return;\n}\n\nfunction __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE8__rehashEj($this, $__nbc) {\n $this = $this | 0;\n $__nbc = $__nbc | 0;\n var $$in = 0, $$in41 = 0, $$in41$lcssa = 0, $$lcssa = 0, $$lcssa56 = 0, $$lcssa58 = 0, $0 = 0, $10 = 0, $13 = 0, $14 = 0, $16 = 0, $21 = 0, $25 = 0, $29 = 0, $3 = 0, $31 = 0, $34 = 0, $36 = 0, $4 = 0, $51 = 0, $9 = 0, $__cp$0$in2736 = 0, $__cp$0$in30 = 0, $__cp$025 = 0, $__cp$02528 = 0, $__cp$0252833 = 0, $__cp$0252837 = 0, $__cp$02531 = 0, $__cp$026 = 0, $__cp$026$lcssa = 0, $__cp$026$lcssa53 = 0, $__i$039 = 0, $__np$0 = 0, $__np$0$lcssa = 0, $__phash$0$ph$ph35 = 0;\n $0 = $this + 4 | 0;\n L1 : do if (!$__nbc) {\n  $51 = HEAP32[$this >> 2] | 0;\n  HEAP32[$this >> 2] = 0;\n  if ($51) __ZdlPv($51);\n  HEAP32[$0 >> 2] = 0;\n } else {\n  $3 = __Znwj($__nbc << 2) | 0;\n  $4 = HEAP32[$this >> 2] | 0;\n  HEAP32[$this >> 2] = $3;\n  if ($4) __ZdlPv($4);\n  HEAP32[$0 >> 2] = $__nbc;\n  if ($__nbc) {\n   $__i$039 = 0;\n   do {\n    HEAP32[(HEAP32[$this >> 2] | 0) + ($__i$039 << 2) >> 2] = 0;\n    $__i$039 = $__i$039 + 1 | 0;\n   } while (($__i$039 | 0) != ($__nbc | 0));\n  }\n  $9 = $this + 8 | 0;\n  $10 = HEAP32[$9 >> 2] | 0;\n  if ($10) {\n   $13 = HEAP32[$10 + 4 >> 2] | 0;\n   $14 = $__nbc + -1 | 0;\n   $16 = ($14 & $__nbc | 0) == 0;\n   if ($16) $21 = $13 & $14; else $21 = ($13 >>> 0) % ($__nbc >>> 0) | 0;\n   HEAP32[(HEAP32[$this >> 2] | 0) + ($21 << 2) >> 2] = $9;\n   $__cp$0252833 = HEAP32[$10 >> 2] | 0;\n   if ($__cp$0252833) {\n    $$in = $10;\n    $__cp$0$in2736 = $10;\n    $__cp$0252837 = $__cp$0252833;\n    $__phash$0$ph$ph35 = $21;\n    while (1) {\n     $$in41 = $$in;\n     $__cp$0$in30 = $__cp$0$in2736;\n     $__cp$02531 = $__cp$0252837;\n     L21 : while (1) {\n      $__cp$026 = $__cp$02531;\n      while (1) {\n       $25 = HEAP32[$__cp$026 + 4 >> 2] | 0;\n       if ($16) $29 = $25 & $14; else $29 = ($25 >>> 0) % ($__nbc >>> 0) | 0;\n       if (($29 | 0) == ($__phash$0$ph$ph35 | 0)) {\n        $__cp$026$lcssa = $__cp$026;\n        break;\n       }\n       $31 = (HEAP32[$this >> 2] | 0) + ($29 << 2) | 0;\n       if (!(HEAP32[$31 >> 2] | 0)) {\n        $$in41$lcssa = $$in41;\n        $$lcssa56 = $29;\n        $$lcssa58 = $31;\n        $__cp$026$lcssa53 = $__cp$026;\n        break L21;\n       }\n       $34 = $__cp$026 + 8 | 0;\n       $__np$0 = $__cp$026;\n       while (1) {\n        $36 = HEAP32[$__np$0 >> 2] | 0;\n        if (!$36) {\n         $$lcssa = $36;\n         $__np$0$lcssa = $__np$0;\n         break;\n        }\n        if ((HEAP32[$34 >> 2] | 0) == (HEAP32[$36 + 8 >> 2] | 0)) $__np$0 = $36; else {\n         $$lcssa = $36;\n         $__np$0$lcssa = $__np$0;\n         break;\n        }\n       }\n       HEAP32[$$in41 >> 2] = $$lcssa;\n       HEAP32[$__np$0$lcssa >> 2] = HEAP32[HEAP32[(HEAP32[$this >> 2] | 0) + ($29 << 2) >> 2] >> 2];\n       HEAP32[HEAP32[(HEAP32[$this >> 2] | 0) + ($29 << 2) >> 2] >> 2] = $__cp$026;\n       $__cp$026 = HEAP32[$__cp$0$in30 >> 2] | 0;\n       if (!$__cp$026) break L1;\n      }\n      $__cp$025 = HEAP32[$__cp$026$lcssa >> 2] | 0;\n      if (!$__cp$025) break L1; else {\n       $$in41 = $__cp$026$lcssa;\n       $__cp$0$in30 = $__cp$026$lcssa;\n       $__cp$02531 = $__cp$025;\n      }\n     }\n     HEAP32[$$lcssa58 >> 2] = $$in41$lcssa;\n     $__cp$02528 = HEAP32[$__cp$026$lcssa53 >> 2] | 0;\n     if (!$__cp$02528) break; else {\n      $$in = $__cp$026$lcssa53;\n      $__cp$0$in2736 = $__cp$026$lcssa53;\n      $__cp$0252837 = $__cp$02528;\n      $__phash$0$ph$ph35 = $$lcssa56;\n     }\n    }\n   }\n  }\n } while (0);\n return;\n}\n\nfunction __ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE8__rehashEj($this, $__nbc) {\n $this = $this | 0;\n $__nbc = $__nbc | 0;\n var $$in = 0, $$in41 = 0, $$in41$lcssa = 0, $$lcssa = 0, $$lcssa56 = 0, $$lcssa58 = 0, $0 = 0, $10 = 0, $13 = 0, $14 = 0, $16 = 0, $21 = 0, $25 = 0, $29 = 0, $3 = 0, $31 = 0, $34 = 0, $36 = 0, $4 = 0, $51 = 0, $9 = 0, $__cp$0$in2736 = 0, $__cp$0$in30 = 0, $__cp$025 = 0, $__cp$02528 = 0, $__cp$0252833 = 0, $__cp$0252837 = 0, $__cp$02531 = 0, $__cp$026 = 0, $__cp$026$lcssa = 0, $__cp$026$lcssa53 = 0, $__i$039 = 0, $__np$0 = 0, $__np$0$lcssa = 0, $__phash$0$ph$ph35 = 0;\n $0 = $this + 4 | 0;\n L1 : do if (!$__nbc) {\n  $51 = HEAP32[$this >> 2] | 0;\n  HEAP32[$this >> 2] = 0;\n  if ($51) __ZdlPv($51);\n  HEAP32[$0 >> 2] = 0;\n } else {\n  $3 = __Znwj($__nbc << 2) | 0;\n  $4 = HEAP32[$this >> 2] | 0;\n  HEAP32[$this >> 2] = $3;\n  if ($4) __ZdlPv($4);\n  HEAP32[$0 >> 2] = $__nbc;\n  if ($__nbc) {\n   $__i$039 = 0;\n   do {\n    HEAP32[(HEAP32[$this >> 2] | 0) + ($__i$039 << 2) >> 2] = 0;\n    $__i$039 = $__i$039 + 1 | 0;\n   } while (($__i$039 | 0) != ($__nbc | 0));\n  }\n  $9 = $this + 8 | 0;\n  $10 = HEAP32[$9 >> 2] | 0;\n  if ($10) {\n   $13 = HEAP32[$10 + 4 >> 2] | 0;\n   $14 = $__nbc + -1 | 0;\n   $16 = ($14 & $__nbc | 0) == 0;\n   if ($16) $21 = $13 & $14; else $21 = ($13 >>> 0) % ($__nbc >>> 0) | 0;\n   HEAP32[(HEAP32[$this >> 2] | 0) + ($21 << 2) >> 2] = $9;\n   $__cp$0252833 = HEAP32[$10 >> 2] | 0;\n   if ($__cp$0252833) {\n    $$in = $10;\n    $__cp$0$in2736 = $10;\n    $__cp$0252837 = $__cp$0252833;\n    $__phash$0$ph$ph35 = $21;\n    while (1) {\n     $$in41 = $$in;\n     $__cp$0$in30 = $__cp$0$in2736;\n     $__cp$02531 = $__cp$0252837;\n     L21 : while (1) {\n      $__cp$026 = $__cp$02531;\n      while (1) {\n       $25 = HEAP32[$__cp$026 + 4 >> 2] | 0;\n       if ($16) $29 = $25 & $14; else $29 = ($25 >>> 0) % ($__nbc >>> 0) | 0;\n       if (($29 | 0) == ($__phash$0$ph$ph35 | 0)) {\n        $__cp$026$lcssa = $__cp$026;\n        break;\n       }\n       $31 = (HEAP32[$this >> 2] | 0) + ($29 << 2) | 0;\n       if (!(HEAP32[$31 >> 2] | 0)) {\n        $$in41$lcssa = $$in41;\n        $$lcssa56 = $29;\n        $$lcssa58 = $31;\n        $__cp$026$lcssa53 = $__cp$026;\n        break L21;\n       }\n       $34 = $__cp$026 + 8 | 0;\n       $__np$0 = $__cp$026;\n       while (1) {\n        $36 = HEAP32[$__np$0 >> 2] | 0;\n        if (!$36) {\n         $$lcssa = $36;\n         $__np$0$lcssa = $__np$0;\n         break;\n        }\n        if ((HEAP32[$34 >> 2] | 0) == (HEAP32[$36 + 8 >> 2] | 0)) $__np$0 = $36; else {\n         $$lcssa = $36;\n         $__np$0$lcssa = $__np$0;\n         break;\n        }\n       }\n       HEAP32[$$in41 >> 2] = $$lcssa;\n       HEAP32[$__np$0$lcssa >> 2] = HEAP32[HEAP32[(HEAP32[$this >> 2] | 0) + ($29 << 2) >> 2] >> 2];\n       HEAP32[HEAP32[(HEAP32[$this >> 2] | 0) + ($29 << 2) >> 2] >> 2] = $__cp$026;\n       $__cp$026 = HEAP32[$__cp$0$in30 >> 2] | 0;\n       if (!$__cp$026) break L1;\n      }\n      $__cp$025 = HEAP32[$__cp$026$lcssa >> 2] | 0;\n      if (!$__cp$025) break L1; else {\n       $$in41 = $__cp$026$lcssa;\n       $__cp$0$in30 = $__cp$026$lcssa;\n       $__cp$02531 = $__cp$025;\n      }\n     }\n     HEAP32[$$lcssa58 >> 2] = $$in41$lcssa;\n     $__cp$02528 = HEAP32[$__cp$026$lcssa53 >> 2] | 0;\n     if (!$__cp$02528) break; else {\n      $$in = $__cp$026$lcssa53;\n      $__cp$0$in2736 = $__cp$026$lcssa53;\n      $__cp$0252837 = $__cp$02528;\n      $__phash$0$ph$ph35 = $$lcssa56;\n     }\n    }\n   }\n  }\n } while (0);\n return;\n}\n\nfunction _arglCameraFrustum($cparam, $focalmin, $focalmax, $m_projection) {\n $cparam = $cparam | 0;\n $focalmin = +$focalmin;\n $focalmax = +$focalmax;\n $m_projection = $m_projection | 0;\n var $0 = 0, $11 = 0, $17 = 0, $2 = 0, $23 = 0, $29 = 0, $33 = 0.0, $50 = 0.0, $63 = 0, $7 = 0.0, $75 = 0, $77 = 0.0, $84 = 0, $88 = 0.0, $90 = 0.0, $92 = 0.0, $94 = 0.0, $95 = 0, $96 = 0, $97 = 0.0, $98 = 0.0, $i$111 = 0, $i$29 = 0, $icpara = 0, $j$18 = 0, $p = 0, $q = 0, $trans = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 400 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $icpara = sp + 296 | 0;\n $trans = sp + 200 | 0;\n $p = sp + 128 | 0;\n $q = sp;\n $0 = HEAP32[$cparam >> 2] | 0;\n $2 = HEAP32[$cparam + 4 >> 2] | 0;\n if ((_arParamDecompMat($cparam + 8 | 0, $icpara, $trans) | 0) < 0) _arLog(3, 6024, sp + 392 | 0); else {\n  $7 = +($2 + -1 | 0);\n  $11 = $icpara + 32 | 0;\n  HEAPF64[$11 >> 3] = $7 * +HEAPF64[$icpara + 64 >> 3] - +HEAPF64[$11 >> 3];\n  $17 = $icpara + 40 | 0;\n  HEAPF64[$17 >> 3] = $7 * +HEAPF64[$icpara + 72 >> 3] - +HEAPF64[$17 >> 3];\n  $23 = $icpara + 48 | 0;\n  HEAPF64[$23 >> 3] = $7 * +HEAPF64[$icpara + 80 >> 3] - +HEAPF64[$23 >> 3];\n  $29 = $icpara + 56 | 0;\n  HEAPF64[$29 >> 3] = $7 * +HEAPF64[$icpara + 88 >> 3] - +HEAPF64[$29 >> 3];\n  $33 = +HEAPF64[$icpara + 80 >> 3];\n  $i$111 = 0;\n  do {\n   HEAPF64[$p + ($i$111 * 24 | 0) >> 3] = +HEAPF64[$icpara + ($i$111 << 5) >> 3] / $33;\n   HEAPF64[$p + ($i$111 * 24 | 0) + 8 >> 3] = +HEAPF64[$icpara + ($i$111 << 5) + 8 >> 3] / $33;\n   HEAPF64[$p + ($i$111 * 24 | 0) + 16 >> 3] = +HEAPF64[$icpara + ($i$111 << 5) + 16 >> 3] / $33;\n   $i$111 = $i$111 + 1 | 0;\n  } while (($i$111 | 0) != 3);\n  $50 = +($0 + -1 | 0);\n  HEAPF64[$q >> 3] = +HEAPF64[$p >> 3] * 2.0 / $50;\n  HEAPF64[$q + 8 >> 3] = +HEAPF64[$p + 8 >> 3] * 2.0 / $50;\n  HEAPF64[$q + 16 >> 3] = +HEAPF64[$p + 16 >> 3] * 2.0 / $50 + -1.0;\n  $63 = $q + 24 | 0;\n  HEAP32[$63 >> 2] = 0;\n  HEAP32[$63 + 4 >> 2] = 0;\n  HEAP32[$63 + 8 >> 2] = 0;\n  HEAP32[$63 + 12 >> 2] = 0;\n  HEAPF64[$q + 40 >> 3] = +HEAPF64[$p + 32 >> 3] * 2.0 / $7;\n  HEAPF64[$q + 48 >> 3] = +HEAPF64[$p + 40 >> 3] * 2.0 / $7 + -1.0;\n  $75 = $q + 56 | 0;\n  $77 = $focalmax - $focalmin;\n  HEAP32[$75 >> 2] = 0;\n  HEAP32[$75 + 4 >> 2] = 0;\n  HEAP32[$75 + 8 >> 2] = 0;\n  HEAP32[$75 + 12 >> 2] = 0;\n  HEAP32[$75 + 16 >> 2] = 0;\n  HEAP32[$75 + 20 >> 2] = 0;\n  HEAPF64[$q + 80 >> 3] = ($focalmin + $focalmax) / $77;\n  HEAPF64[$q + 88 >> 3] = $focalmax * -2.0 * $focalmin / $77;\n  $84 = $q + 96 | 0;\n  HEAP32[$84 >> 2] = 0;\n  HEAP32[$84 + 4 >> 2] = 0;\n  HEAP32[$84 + 8 >> 2] = 0;\n  HEAP32[$84 + 12 >> 2] = 0;\n  HEAPF64[$q + 112 >> 3] = 1.0;\n  HEAPF64[$q + 120 >> 3] = 0.0;\n  $88 = +HEAPF64[$trans + 24 >> 3];\n  $90 = +HEAPF64[$trans + 56 >> 3];\n  $92 = +HEAPF64[$trans + 88 >> 3];\n  $i$29 = 0;\n  do {\n   $94 = +HEAPF64[$q + ($i$29 << 5) >> 3];\n   $95 = $q + ($i$29 << 5) + 8 | 0;\n   $96 = $q + ($i$29 << 5) + 16 | 0;\n   $97 = +HEAPF64[$95 >> 3];\n   $98 = +HEAPF64[$96 >> 3];\n   $j$18 = 0;\n   do {\n    HEAPF64[$m_projection + (($j$18 << 2) + $i$29 << 3) >> 3] = $94 * +HEAPF64[$trans + ($j$18 << 3) >> 3] + $97 * +HEAPF64[$trans + 32 + ($j$18 << 3) >> 3] + $98 * +HEAPF64[$trans + 64 + ($j$18 << 3) >> 3];\n    $j$18 = $j$18 + 1 | 0;\n   } while (($j$18 | 0) != 3);\n   HEAPF64[$m_projection + ($i$29 + 12 << 3) >> 3] = +HEAPF64[$q + ($i$29 << 5) + 24 >> 3] + ($94 * $88 + +HEAPF64[$95 >> 3] * $90 + +HEAPF64[$96 >> 3] * $92);\n   $i$29 = $i$29 + 1 | 0;\n  } while (($i$29 | 0) != 4);\n }\n STACKTOP = sp;\n return;\n}\n\nfunction _arParamIdeal2Observ($dist_factor, $ix, $iy, $ox, $oy, $dist_function_version) {\n $dist_factor = $dist_factor | 0;\n $ix = +$ix;\n $iy = +$iy;\n $ox = $ox | 0;\n $oy = $oy | 0;\n $dist_function_version = $dist_function_version | 0;\n var $$0 = 0, $10 = 0.0, $104 = 0.0, $116 = 0.0, $12 = 0.0, $122 = 0.0, $125 = 0.0, $126 = 0.0, $127 = 0, $130 = 0.0, $14 = 0.0, $141 = 0.0, $16 = 0.0, $19 = 0.0, $22 = 0.0, $25 = 0.0, $30 = 0.0, $4 = 0.0, $55 = 0.0, $58 = 0.0, $59 = 0.0, $6 = 0.0, $60 = 0, $63 = 0.0, $71 = 0.0, $8 = 0.0, $83 = 0.0, $90 = 0.0, $93 = 0.0, $94 = 0.0, $95 = 0, $98 = 0.0, $storemerge = 0.0, $storemerge6 = 0.0, $storemerge7 = 0.0;\n switch ($dist_function_version | 0) {\n case 4:\n  {\n   $4 = +HEAPF64[$dist_factor + 16 >> 3];\n   $6 = +HEAPF64[$dist_factor + 24 >> 3];\n   $8 = +HEAPF64[$dist_factor + 32 >> 3];\n   $10 = +HEAPF64[$dist_factor + 40 >> 3];\n   $12 = +HEAPF64[$dist_factor + 48 >> 3];\n   $14 = +HEAPF64[$dist_factor + 56 >> 3];\n   $16 = +HEAPF64[$dist_factor + 64 >> 3];\n   $19 = ($ix - $12) * $16 / $8;\n   $22 = ($iy - $14) * $16 / $10;\n   $25 = $19 * $19 + $22 * $22;\n   $30 = +HEAPF64[$dist_factor >> 3] * $25 + 1.0 + $25 * (+HEAPF64[$dist_factor + 8 >> 3] * $25);\n   HEAPF64[$ox >> 3] = $12 + $8 * ($6 * ($19 * ($19 * 2.0) + $25) + ($4 * 2.0 * $19 * $22 + $19 * $30));\n   HEAPF64[$oy >> 3] = $14 + $10 * ($6 * 2.0 * $19 * $22 + ($4 * ($25 + $22 * ($22 * 2.0)) + $22 * $30));\n   $$0 = 0;\n   break;\n  }\n case 3:\n  {\n   $55 = +HEAPF64[$dist_factor >> 3];\n   $58 = +HEAPF64[$dist_factor + 16 >> 3];\n   $59 = ($ix - $55) * $58;\n   $60 = $dist_factor + 8 | 0;\n   $63 = $58 * ($iy - +HEAPF64[$60 >> 3]);\n   if ($59 == 0.0 & $63 == 0.0) {\n    HEAPF64[$ox >> 3] = $55;\n    $storemerge7 = +HEAPF64[$60 >> 3];\n   } else {\n    $71 = $59 * $59 + $63 * $63;\n    $83 = 1.0 - $71 * (+HEAPF64[$dist_factor + 32 >> 3] / 1.0e8) - $71 * ($71 * (+HEAPF64[$dist_factor + 40 >> 3] / 1.0e8 / 1.0e5));\n    HEAPF64[$ox >> 3] = $55 + +HEAPF64[$dist_factor + 24 >> 3] * ($59 * $83);\n    $storemerge7 = +HEAPF64[$60 >> 3] + $63 * $83;\n   }\n   HEAPF64[$oy >> 3] = $storemerge7;\n   $$0 = 0;\n   break;\n  }\n case 2:\n  {\n   $90 = +HEAPF64[$dist_factor >> 3];\n   $93 = +HEAPF64[$dist_factor + 16 >> 3];\n   $94 = ($ix - $90) * $93;\n   $95 = $dist_factor + 8 | 0;\n   $98 = $93 * ($iy - +HEAPF64[$95 >> 3]);\n   if ($94 == 0.0 & $98 == 0.0) {\n    HEAPF64[$ox >> 3] = $90;\n    $storemerge6 = +HEAPF64[$95 >> 3];\n   } else {\n    $104 = $94 * $94 + $98 * $98;\n    $116 = 1.0 - $104 * (+HEAPF64[$dist_factor + 24 >> 3] / 1.0e8) - $104 * ($104 * (+HEAPF64[$dist_factor + 32 >> 3] / 1.0e8 / 1.0e5));\n    HEAPF64[$ox >> 3] = $90 + $94 * $116;\n    $storemerge6 = +HEAPF64[$95 >> 3] + $98 * $116;\n   }\n   HEAPF64[$oy >> 3] = $storemerge6;\n   $$0 = 0;\n   break;\n  }\n case 1:\n  {\n   $122 = +HEAPF64[$dist_factor >> 3];\n   $125 = +HEAPF64[$dist_factor + 16 >> 3];\n   $126 = ($ix - $122) * $125;\n   $127 = $dist_factor + 8 | 0;\n   $130 = $125 * ($iy - +HEAPF64[$127 >> 3]);\n   if ($126 == 0.0 & $130 == 0.0) {\n    HEAPF64[$ox >> 3] = $122;\n    $storemerge = +HEAPF64[$127 >> 3];\n   } else {\n    $141 = 1.0 - ($126 * $126 + $130 * $130) * (+HEAPF64[$dist_factor + 24 >> 3] / 1.0e8);\n    HEAPF64[$ox >> 3] = $122 + $126 * $141;\n    $storemerge = +HEAPF64[$127 >> 3] + $130 * $141;\n   }\n   HEAPF64[$oy >> 3] = $storemerge;\n   $$0 = 0;\n   break;\n  }\n default:\n  $$0 = -1;\n }\n return $$0 | 0;\n}\n\nfunction __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE20__node_insert_uniqueEPNS_11__hash_nodeIS3_PvEE($agg$result, $this, $__nd) {\n $agg$result = $agg$result | 0;\n $this = $this | 0;\n $__nd = $__nd | 0;\n var $$pn = 0, $1 = 0, $13 = 0, $14 = 0, $18 = 0, $2 = 0, $22 = 0, $26 = 0, $29 = 0.0, $3 = 0, $32 = 0.0, $4 = 0, $41 = 0, $43 = 0, $46 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $58 = 0, $6 = 0, $60 = 0, $64 = 0, $67 = 0, $68 = 0, $75 = 0, $8 = 0, $81 = 0, $__bc$0 = 0, $__chash$0 = 0, $__chash$1 = 0, $__ndptr$0 = 0, $__ndptr$1 = 0, label = 0;\n $1 = HEAP32[$__nd + 8 >> 2] | 0;\n $2 = $__nd + 4 | 0;\n HEAP32[$2 >> 2] = $1;\n $3 = $this + 4 | 0;\n $4 = HEAP32[$3 >> 2] | 0;\n $5 = ($4 | 0) == 0;\n L1 : do if ($5) {\n  $__chash$0 = 0;\n  label = 12;\n } else {\n  $6 = $4 + -1 | 0;\n  $8 = ($6 & $4 | 0) == 0;\n  if ($8) $13 = $6 & $1; else $13 = ($1 >>> 0) % ($4 >>> 0) | 0;\n  $14 = HEAP32[(HEAP32[$this >> 2] | 0) + ($13 << 2) >> 2] | 0;\n  if (!$14) {\n   $__chash$0 = $13;\n   label = 12;\n  } else {\n   $$pn = $14;\n   while (1) {\n    $__ndptr$0 = HEAP32[$$pn >> 2] | 0;\n    if (!$__ndptr$0) {\n     $__chash$0 = $13;\n     label = 12;\n     break L1;\n    }\n    $18 = HEAP32[$__ndptr$0 + 4 >> 2] | 0;\n    if ($8) $22 = $18 & $6; else $22 = ($18 >>> 0) % ($4 >>> 0) | 0;\n    if (($22 | 0) != ($13 | 0)) {\n     $__chash$0 = $13;\n     label = 12;\n     break L1;\n    }\n    if ((HEAP32[$__ndptr$0 + 8 >> 2] | 0) == ($1 | 0)) {\n     $81 = 0;\n     $__ndptr$1 = $__ndptr$0;\n     break;\n    } else $$pn = $__ndptr$0;\n   }\n  }\n } while (0);\n if ((label | 0) == 12) {\n  $26 = $this + 12 | 0;\n  $29 = +(((HEAP32[$26 >> 2] | 0) + 1 | 0) >>> 0);\n  $32 = +HEAPF32[$this + 16 >> 2];\n  do if ($5 | $29 > +($4 >>> 0) * $32) {\n   if ($4 >>> 0 > 2) $41 = ($4 + -1 & $4 | 0) == 0; else $41 = 0;\n   $43 = ($41 & 1 | $4 << 1) ^ 1;\n   $46 = ~~+Math_ceil(+($29 / $32)) >>> 0;\n   __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE6rehashEj($this, $43 >>> 0 < $46 >>> 0 ? $46 : $43);\n   $49 = HEAP32[$3 >> 2] | 0;\n   $50 = HEAP32[$2 >> 2] | 0;\n   $51 = $49 + -1 | 0;\n   if (!($51 & $49)) {\n    $__bc$0 = $49;\n    $__chash$1 = $51 & $50;\n    break;\n   } else {\n    $__bc$0 = $49;\n    $__chash$1 = ($50 >>> 0) % ($49 >>> 0) | 0;\n    break;\n   }\n  } else {\n   $__bc$0 = $4;\n   $__chash$1 = $__chash$0;\n  } while (0);\n  $58 = HEAP32[(HEAP32[$this >> 2] | 0) + ($__chash$1 << 2) >> 2] | 0;\n  if (!$58) {\n   $60 = $this + 8 | 0;\n   HEAP32[$__nd >> 2] = HEAP32[$60 >> 2];\n   HEAP32[$60 >> 2] = $__nd;\n   HEAP32[(HEAP32[$this >> 2] | 0) + ($__chash$1 << 2) >> 2] = $60;\n   $64 = HEAP32[$__nd >> 2] | 0;\n   if ($64) {\n    $67 = HEAP32[$64 + 4 >> 2] | 0;\n    $68 = $__bc$0 + -1 | 0;\n    if (!($68 & $__bc$0)) $75 = $67 & $68; else $75 = ($67 >>> 0) % ($__bc$0 >>> 0) | 0;\n    HEAP32[(HEAP32[$this >> 2] | 0) + ($75 << 2) >> 2] = $__nd;\n   }\n  } else {\n   HEAP32[$__nd >> 2] = HEAP32[$58 >> 2];\n   HEAP32[$58 >> 2] = $__nd;\n  }\n  HEAP32[$26 >> 2] = (HEAP32[$26 >> 2] | 0) + 1;\n  $81 = 1;\n  $__ndptr$1 = $__nd;\n }\n HEAP32[$agg$result >> 2] = $__ndptr$1;\n HEAP8[$agg$result + 4 >> 0] = $81;\n return;\n}\n\nfunction _scanexp($f, $pok) {\n $f = $f | 0;\n $pok = $pok | 0;\n var $$lcssa22 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $2 = 0, $20 = 0, $35 = 0, $36 = 0, $48 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $59 = 0, $61 = 0, $62 = 0, $63 = 0, $78 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $98 = 0, $99 = 0, $c$0 = 0, $c$1$be = 0, $c$1$be$lcssa = 0, $c$112 = 0, $c$2$be = 0, $c$2$lcssa = 0, $c$27 = 0, $c$3$be = 0, $neg$0 = 0, $x$013 = 0;\n $0 = $f + 4 | 0;\n $1 = HEAP32[$0 >> 2] | 0;\n $2 = $f + 100 | 0;\n if ($1 >>> 0 < (HEAP32[$2 >> 2] | 0) >>> 0) {\n  HEAP32[$0 >> 2] = $1 + 1;\n  $10 = HEAPU8[$1 >> 0] | 0;\n } else $10 = ___shgetc($f) | 0;\n switch ($10 | 0) {\n case 43:\n case 45:\n  {\n   $11 = ($10 | 0) == 45 & 1;\n   $12 = HEAP32[$0 >> 2] | 0;\n   if ($12 >>> 0 < (HEAP32[$2 >> 2] | 0) >>> 0) {\n    HEAP32[$0 >> 2] = $12 + 1;\n    $20 = HEAPU8[$12 >> 0] | 0;\n   } else $20 = ___shgetc($f) | 0;\n   if (($pok | 0) != 0 & ($20 + -48 | 0) >>> 0 > 9) if (!(HEAP32[$2 >> 2] | 0)) {\n    $c$0 = $20;\n    $neg$0 = $11;\n   } else {\n    HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1;\n    $c$0 = $20;\n    $neg$0 = $11;\n   } else {\n    $c$0 = $20;\n    $neg$0 = $11;\n   }\n   break;\n  }\n default:\n  {\n   $c$0 = $10;\n   $neg$0 = 0;\n  }\n }\n if (($c$0 + -48 | 0) >>> 0 > 9) if (!(HEAP32[$2 >> 2] | 0)) {\n  $98 = -2147483648;\n  $99 = 0;\n } else {\n  HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1;\n  $98 = -2147483648;\n  $99 = 0;\n } else {\n  $c$112 = $c$0;\n  $x$013 = 0;\n  while (1) {\n   $35 = $c$112 + -48 + ($x$013 * 10 | 0) | 0;\n   $36 = HEAP32[$0 >> 2] | 0;\n   if ($36 >>> 0 < (HEAP32[$2 >> 2] | 0) >>> 0) {\n    HEAP32[$0 >> 2] = $36 + 1;\n    $c$1$be = HEAPU8[$36 >> 0] | 0;\n   } else $c$1$be = ___shgetc($f) | 0;\n   if (($c$1$be + -48 | 0) >>> 0 < 10 & ($35 | 0) < 214748364) {\n    $c$112 = $c$1$be;\n    $x$013 = $35;\n   } else {\n    $$lcssa22 = $35;\n    $c$1$be$lcssa = $c$1$be;\n    break;\n   }\n  }\n  $48 = (($$lcssa22 | 0) < 0) << 31 >> 31;\n  if (($c$1$be$lcssa + -48 | 0) >>> 0 < 10) {\n   $53 = $$lcssa22;\n   $54 = $48;\n   $c$27 = $c$1$be$lcssa;\n   while (1) {\n    $55 = ___muldi3($53 | 0, $54 | 0, 10, 0) | 0;\n    $56 = tempRet0;\n    $59 = _i64Add($c$27 | 0, (($c$27 | 0) < 0) << 31 >> 31 | 0, -48, -1) | 0;\n    $61 = _i64Add($59 | 0, tempRet0 | 0, $55 | 0, $56 | 0) | 0;\n    $62 = tempRet0;\n    $63 = HEAP32[$0 >> 2] | 0;\n    if ($63 >>> 0 < (HEAP32[$2 >> 2] | 0) >>> 0) {\n     HEAP32[$0 >> 2] = $63 + 1;\n     $c$2$be = HEAPU8[$63 >> 0] | 0;\n    } else $c$2$be = ___shgetc($f) | 0;\n    if (($c$2$be + -48 | 0) >>> 0 < 10 & (($62 | 0) < 21474836 | ($62 | 0) == 21474836 & $61 >>> 0 < 2061584302)) {\n     $53 = $61;\n     $54 = $62;\n     $c$27 = $c$2$be;\n    } else {\n     $92 = $61;\n     $93 = $62;\n     $c$2$lcssa = $c$2$be;\n     break;\n    }\n   }\n  } else {\n   $92 = $$lcssa22;\n   $93 = $48;\n   $c$2$lcssa = $c$1$be$lcssa;\n  }\n  if (($c$2$lcssa + -48 | 0) >>> 0 < 10) do {\n   $78 = HEAP32[$0 >> 2] | 0;\n   if ($78 >>> 0 < (HEAP32[$2 >> 2] | 0) >>> 0) {\n    HEAP32[$0 >> 2] = $78 + 1;\n    $c$3$be = HEAPU8[$78 >> 0] | 0;\n   } else $c$3$be = ___shgetc($f) | 0;\n  } while (($c$3$be + -48 | 0) >>> 0 < 10);\n  if (HEAP32[$2 >> 2] | 0) HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1;\n  $91 = ($neg$0 | 0) != 0;\n  $94 = _i64Subtract(0, 0, $92 | 0, $93 | 0) | 0;\n  $98 = $91 ? tempRet0 : $93;\n  $99 = $91 ? $94 : $92;\n }\n tempRet0 = $98;\n return $99 | 0;\n}\nfunction __ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE20__node_insert_uniqueEPNS_11__hash_nodeIS3_PvEE($agg$result, $this, $__nd) {\n $agg$result = $agg$result | 0;\n $this = $this | 0;\n $__nd = $__nd | 0;\n var $$pn = 0, $1 = 0, $13 = 0, $14 = 0, $18 = 0, $2 = 0, $22 = 0, $26 = 0, $29 = 0.0, $3 = 0, $32 = 0.0, $4 = 0, $41 = 0, $43 = 0, $46 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $58 = 0, $6 = 0, $60 = 0, $64 = 0, $67 = 0, $68 = 0, $75 = 0, $8 = 0, $81 = 0, $__bc$0 = 0, $__chash$0 = 0, $__chash$1 = 0, $__ndptr$0 = 0, $__ndptr$1 = 0, label = 0;\n $1 = HEAP32[$__nd + 8 >> 2] | 0;\n $2 = $__nd + 4 | 0;\n HEAP32[$2 >> 2] = $1;\n $3 = $this + 4 | 0;\n $4 = HEAP32[$3 >> 2] | 0;\n $5 = ($4 | 0) == 0;\n L1 : do if ($5) {\n  $__chash$0 = 0;\n  label = 12;\n } else {\n  $6 = $4 + -1 | 0;\n  $8 = ($6 & $4 | 0) == 0;\n  if ($8) $13 = $6 & $1; else $13 = ($1 >>> 0) % ($4 >>> 0) | 0;\n  $14 = HEAP32[(HEAP32[$this >> 2] | 0) + ($13 << 2) >> 2] | 0;\n  if (!$14) {\n   $__chash$0 = $13;\n   label = 12;\n  } else {\n   $$pn = $14;\n   while (1) {\n    $__ndptr$0 = HEAP32[$$pn >> 2] | 0;\n    if (!$__ndptr$0) {\n     $__chash$0 = $13;\n     label = 12;\n     break L1;\n    }\n    $18 = HEAP32[$__ndptr$0 + 4 >> 2] | 0;\n    if ($8) $22 = $18 & $6; else $22 = ($18 >>> 0) % ($4 >>> 0) | 0;\n    if (($22 | 0) != ($13 | 0)) {\n     $__chash$0 = $13;\n     label = 12;\n     break L1;\n    }\n    if ((HEAP32[$__ndptr$0 + 8 >> 2] | 0) == ($1 | 0)) {\n     $81 = 0;\n     $__ndptr$1 = $__ndptr$0;\n     break;\n    } else $$pn = $__ndptr$0;\n   }\n  }\n } while (0);\n if ((label | 0) == 12) {\n  $26 = $this + 12 | 0;\n  $29 = +(((HEAP32[$26 >> 2] | 0) + 1 | 0) >>> 0);\n  $32 = +HEAPF32[$this + 16 >> 2];\n  do if ($5 | $29 > +($4 >>> 0) * $32) {\n   if ($4 >>> 0 > 2) $41 = ($4 + -1 & $4 | 0) == 0; else $41 = 0;\n   $43 = ($41 & 1 | $4 << 1) ^ 1;\n   $46 = ~~+Math_ceil(+($29 / $32)) >>> 0;\n   __ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE6rehashEj($this, $43 >>> 0 < $46 >>> 0 ? $46 : $43);\n   $49 = HEAP32[$3 >> 2] | 0;\n   $50 = HEAP32[$2 >> 2] | 0;\n   $51 = $49 + -1 | 0;\n   if (!($51 & $49)) {\n    $__bc$0 = $49;\n    $__chash$1 = $51 & $50;\n    break;\n   } else {\n    $__bc$0 = $49;\n    $__chash$1 = ($50 >>> 0) % ($49 >>> 0) | 0;\n    break;\n   }\n  } else {\n   $__bc$0 = $4;\n   $__chash$1 = $__chash$0;\n  } while (0);\n  $58 = HEAP32[(HEAP32[$this >> 2] | 0) + ($__chash$1 << 2) >> 2] | 0;\n  if (!$58) {\n   $60 = $this + 8 | 0;\n   HEAP32[$__nd >> 2] = HEAP32[$60 >> 2];\n   HEAP32[$60 >> 2] = $__nd;\n   HEAP32[(HEAP32[$this >> 2] | 0) + ($__chash$1 << 2) >> 2] = $60;\n   $64 = HEAP32[$__nd >> 2] | 0;\n   if ($64) {\n    $67 = HEAP32[$64 + 4 >> 2] | 0;\n    $68 = $__bc$0 + -1 | 0;\n    if (!($68 & $__bc$0)) $75 = $67 & $68; else $75 = ($67 >>> 0) % ($__bc$0 >>> 0) | 0;\n    HEAP32[(HEAP32[$this >> 2] | 0) + ($75 << 2) >> 2] = $__nd;\n   }\n  } else {\n   HEAP32[$__nd >> 2] = HEAP32[$58 >> 2];\n   HEAP32[$58 >> 2] = $__nd;\n  }\n  HEAP32[$26 >> 2] = (HEAP32[$26 >> 2] | 0) + 1;\n  $81 = 1;\n  $__ndptr$1 = $__nd;\n }\n HEAP32[$agg$result >> 2] = $__ndptr$1;\n HEAP8[$agg$result + 4 >> 0] = $81;\n return;\n}\n\nfunction _arGetLine($x_coord, $y_coord, $coord_num, $vertex, $paramLTf, $line, $v) {\n $x_coord = $x_coord | 0;\n $y_coord = $y_coord | 0;\n $coord_num = $coord_num | 0;\n $vertex = $vertex | 0;\n $paramLTf = $paramLTf | 0;\n $line = $line | 0;\n $v = $v | 0;\n var $$0 = 0, $0 = 0, $1 = 0, $12 = 0.0, $15 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $23 = 0, $34 = 0, $35 = 0, $45 = 0, $47 = 0.0, $5 = 0, $50 = 0.0, $52 = 0, $63 = 0, $64 = 0, $67 = 0.0, $69 = 0, $7 = 0, $72 = 0.0, $74 = 0.0, $77 = 0, $80 = 0, $97 = 0, $i$011 = 0, $i$19 = 0, $j$010 = 0, $m0 = 0, $m1 = 0, label = 0, sp = 0, $i$011$looptemp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $m0 = sp + 4 | 0;\n $m1 = sp;\n $0 = _arVecAlloc(2) | 0;\n $1 = _arVecAlloc(2) | 0;\n $2 = _arMatrixAlloc(2, 2) | 0;\n $i$011 = 0;\n L1 : while (1) {\n  $i$011$looptemp = $i$011;\n  $i$011 = $i$011 + 1 | 0;\n  $5 = HEAP32[$vertex + ($i$011 << 2) >> 2] | 0;\n  $7 = HEAP32[$vertex + ($i$011$looptemp << 2) >> 2] | 0;\n  $12 = +($5 + 1 - $7 | 0) * .05 + .5;\n  $15 = ~~(+($7 | 0) + $12);\n  $19 = ~~(+($5 | 0) - $12) - $15 | 0;\n  $20 = $19 + 1 | 0;\n  $21 = _arMatrixAlloc($20, 2) | 0;\n  if (($19 | 0) > -1) {\n   $j$010 = 0;\n   do {\n    $23 = $j$010 + $15 | 0;\n    if ((_arParamObserv2IdealLTf($paramLTf, +(HEAP32[$x_coord + ($23 << 2) >> 2] | 0), +(HEAP32[$y_coord + ($23 << 2) >> 2] | 0), $m0, $m1) | 0) < 0) {\n     $97 = $21;\n     label = 10;\n     break L1;\n    }\n    $34 = $j$010 << 1;\n    $35 = HEAP32[$21 >> 2] | 0;\n    HEAPF64[$35 + ($34 << 3) >> 3] = +HEAPF32[$m0 >> 2];\n    HEAPF64[$35 + (($34 | 1) << 3) >> 3] = +HEAPF32[$m1 >> 2];\n    $j$010 = $j$010 + 1 | 0;\n   } while (($j$010 | 0) < ($20 | 0));\n  }\n  if ((_arMatrixPCA($21, $2, $0, $1) | 0) < 0) {\n   $97 = $21;\n   label = 10;\n   break;\n  }\n  $45 = HEAP32[$2 >> 2] | 0;\n  $47 = +HEAPF64[$45 + 8 >> 3];\n  HEAPF64[$line + ($i$011$looptemp * 24 | 0) >> 3] = $47;\n  $50 = -+HEAPF64[$45 >> 3];\n  HEAPF64[$line + ($i$011$looptemp * 24 | 0) + 8 >> 3] = $50;\n  $52 = HEAP32[$1 >> 2] | 0;\n  HEAPF64[$line + ($i$011$looptemp * 24 | 0) + 16 >> 3] = -($47 * +HEAPF64[$52 >> 3] + +HEAPF64[$52 + 8 >> 3] * $50);\n  _arMatrixFree($21) | 0;\n  if (($i$011 | 0) >= 4) {\n   label = 7;\n   break;\n  }\n }\n L9 : do if ((label | 0) == 7) {\n  _arMatrixFree($2) | 0;\n  _arVecFree($1) | 0;\n  _arVecFree($0) | 0;\n  $i$19 = 0;\n  while (1) {\n   $63 = ($i$19 + 3 | 0) % 4 | 0;\n   $64 = $line + ($63 * 24 | 0) | 0;\n   $67 = +HEAPF64[$line + ($i$19 * 24 | 0) + 8 >> 3];\n   $69 = $line + ($i$19 * 24 | 0) | 0;\n   $72 = +HEAPF64[$line + ($63 * 24 | 0) + 8 >> 3];\n   $74 = +HEAPF64[$64 >> 3] * $67 - +HEAPF64[$69 >> 3] * $72;\n   if (+Math_abs(+$74) < .0001) {\n    $$0 = -1;\n    break L9;\n   }\n   $77 = $line + ($i$19 * 24 | 0) + 16 | 0;\n   $80 = $line + ($63 * 24 | 0) + 16 | 0;\n   HEAPF64[$v + ($i$19 << 4) >> 3] = ($72 * +HEAPF64[$77 >> 3] - $67 * +HEAPF64[$80 >> 3]) / $74;\n   HEAPF64[$v + ($i$19 << 4) + 8 >> 3] = (+HEAPF64[$69 >> 3] * +HEAPF64[$80 >> 3] - +HEAPF64[$64 >> 3] * +HEAPF64[$77 >> 3]) / $74;\n   $i$19 = $i$19 + 1 | 0;\n   if (($i$19 | 0) >= 4) {\n    $$0 = 0;\n    break;\n   }\n  }\n } else if ((label | 0) == 10) {\n  _arMatrixFree($97) | 0;\n  _arMatrixFree($2) | 0;\n  _arVecFree($1) | 0;\n  _arVecFree($0) | 0;\n  $$0 = -1;\n } while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction ___stpncpy($d, $s, $n) {\n $d = $d | 0;\n $s = $s | 0;\n $n = $n | 0;\n var $$0$lcssa = 0, $$0$lcssa60 = 0, $$031 = 0, $$04$lcssa = 0, $$04$lcssa61 = 0, $$0430 = 0, $$06$lcssa = 0, $$06$lcssa62 = 0, $$0629 = 0, $$1$lcssa = 0, $$117 = 0, $$15$ph = 0, $$1511 = 0, $$17$ph = 0, $$1710 = 0, $$2$ph = 0, $$212 = 0, $$28 = 0, $$3 = 0, $$lcssa = 0, $0 = 0, $10 = 0, $11 = 0, $12 = 0, $16 = 0, $20 = 0, $26 = 0, $27 = 0, $28 = 0, $31 = 0, $35 = 0, $7 = 0, $8 = 0, $wd$0$lcssa = 0, $wd$018 = 0, $ws$0$lcssa = 0, $ws$019 = 0, label = 0;\n $0 = $s;\n do if (!(($0 ^ $d) & 3)) {\n  $7 = ($n | 0) != 0;\n  L3 : do if ($7 & ($0 & 3 | 0) != 0) {\n   $$031 = $n;\n   $$0430 = $s;\n   $$0629 = $d;\n   while (1) {\n    $8 = HEAP8[$$0430 >> 0] | 0;\n    HEAP8[$$0629 >> 0] = $8;\n    if (!($8 << 24 >> 24)) {\n     $$0$lcssa60 = $$031;\n     $$04$lcssa61 = $$0430;\n     $$06$lcssa62 = $$0629;\n     break L3;\n    }\n    $10 = $$031 + -1 | 0;\n    $11 = $$0430 + 1 | 0;\n    $12 = $$0629 + 1 | 0;\n    $16 = ($10 | 0) != 0;\n    if ($16 & ($11 & 3 | 0) != 0) {\n     $$031 = $10;\n     $$0430 = $11;\n     $$0629 = $12;\n    } else {\n     $$0$lcssa = $10;\n     $$04$lcssa = $11;\n     $$06$lcssa = $12;\n     $$lcssa = $16;\n     label = 5;\n     break;\n    }\n   }\n  } else {\n   $$0$lcssa = $n;\n   $$04$lcssa = $s;\n   $$06$lcssa = $d;\n   $$lcssa = $7;\n   label = 5;\n  } while (0);\n  if ((label | 0) == 5) if ($$lcssa) {\n   $$0$lcssa60 = $$0$lcssa;\n   $$04$lcssa61 = $$04$lcssa;\n   $$06$lcssa62 = $$06$lcssa;\n  } else {\n   $$28 = $$06$lcssa;\n   $$3 = 0;\n   break;\n  }\n  if (!(HEAP8[$$04$lcssa61 >> 0] | 0)) {\n   $$28 = $$06$lcssa62;\n   $$3 = $$0$lcssa60;\n  } else {\n   L11 : do if ($$0$lcssa60 >>> 0 > 3) {\n    $$117 = $$0$lcssa60;\n    $wd$018 = $$06$lcssa62;\n    $ws$019 = $$04$lcssa61;\n    while (1) {\n     $20 = HEAP32[$ws$019 >> 2] | 0;\n     if (($20 & -2139062144 ^ -2139062144) & $20 + -16843009) {\n      $$1$lcssa = $$117;\n      $wd$0$lcssa = $wd$018;\n      $ws$0$lcssa = $ws$019;\n      break L11;\n     }\n     HEAP32[$wd$018 >> 2] = $20;\n     $26 = $$117 + -4 | 0;\n     $27 = $ws$019 + 4 | 0;\n     $28 = $wd$018 + 4 | 0;\n     if ($26 >>> 0 > 3) {\n      $$117 = $26;\n      $wd$018 = $28;\n      $ws$019 = $27;\n     } else {\n      $$1$lcssa = $26;\n      $wd$0$lcssa = $28;\n      $ws$0$lcssa = $27;\n      break;\n     }\n    }\n   } else {\n    $$1$lcssa = $$0$lcssa60;\n    $wd$0$lcssa = $$06$lcssa62;\n    $ws$0$lcssa = $$04$lcssa61;\n   } while (0);\n   $$15$ph = $ws$0$lcssa;\n   $$17$ph = $wd$0$lcssa;\n   $$2$ph = $$1$lcssa;\n   label = 11;\n  }\n } else {\n  $$15$ph = $s;\n  $$17$ph = $d;\n  $$2$ph = $n;\n  label = 11;\n } while (0);\n L16 : do if ((label | 0) == 11) if (!$$2$ph) {\n  $$28 = $$17$ph;\n  $$3 = 0;\n } else {\n  $$1511 = $$15$ph;\n  $$1710 = $$17$ph;\n  $$212 = $$2$ph;\n  while (1) {\n   $31 = HEAP8[$$1511 >> 0] | 0;\n   HEAP8[$$1710 >> 0] = $31;\n   if (!($31 << 24 >> 24)) {\n    $$28 = $$1710;\n    $$3 = $$212;\n    break L16;\n   }\n   $$212 = $$212 + -1 | 0;\n   $35 = $$1710 + 1 | 0;\n   if (!$$212) {\n    $$28 = $35;\n    $$3 = 0;\n    break;\n   } else {\n    $$1511 = $$1511 + 1 | 0;\n    $$1710 = $35;\n   }\n  }\n } while (0);\n _memset($$28 | 0, 0, $$3 | 0) | 0;\n return $$28 | 0;\n}\n\nfunction ___stdio_write($f, $buf, $len) {\n $f = $f | 0;\n $buf = $buf | 0;\n $len = $len | 0;\n var $$0 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $16 = 0, $21 = 0, $26 = 0, $3 = 0, $35 = 0, $37 = 0, $39 = 0, $50 = 0, $6 = 0, $cnt$0 = 0, $cnt$1 = 0, $iov$0 = 0, $iov$0$lcssa11 = 0, $iov$1 = 0, $iovcnt$0 = 0, $iovcnt$0$lcssa12 = 0, $iovcnt$1 = 0, $iovs = 0, $rem$0 = 0, $vararg_buffer = 0, $vararg_buffer3 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 48 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer3 = sp + 16 | 0;\n $vararg_buffer = sp;\n $iovs = sp + 32 | 0;\n $0 = $f + 28 | 0;\n $1 = HEAP32[$0 >> 2] | 0;\n HEAP32[$iovs >> 2] = $1;\n $3 = $f + 20 | 0;\n $6 = (HEAP32[$3 >> 2] | 0) - $1 | 0;\n HEAP32[$iovs + 4 >> 2] = $6;\n HEAP32[$iovs + 8 >> 2] = $buf;\n HEAP32[$iovs + 12 >> 2] = $len;\n $10 = $f + 60 | 0;\n $11 = $f + 44 | 0;\n $iov$0 = $iovs;\n $iovcnt$0 = 2;\n $rem$0 = $6 + $len | 0;\n while (1) {\n  if (!(HEAP32[597] | 0)) {\n   HEAP32[$vararg_buffer3 >> 2] = HEAP32[$10 >> 2];\n   HEAP32[$vararg_buffer3 + 4 >> 2] = $iov$0;\n   HEAP32[$vararg_buffer3 + 8 >> 2] = $iovcnt$0;\n   $cnt$0 = ___syscall_ret(___syscall146(146, $vararg_buffer3 | 0) | 0) | 0;\n  } else {\n   _pthread_cleanup_push(14, $f | 0);\n   HEAP32[$vararg_buffer >> 2] = HEAP32[$10 >> 2];\n   HEAP32[$vararg_buffer + 4 >> 2] = $iov$0;\n   HEAP32[$vararg_buffer + 8 >> 2] = $iovcnt$0;\n   $16 = ___syscall_ret(___syscall146(146, $vararg_buffer | 0) | 0) | 0;\n   _pthread_cleanup_pop(0);\n   $cnt$0 = $16;\n  }\n  if (($rem$0 | 0) == ($cnt$0 | 0)) {\n   label = 6;\n   break;\n  }\n  if (($cnt$0 | 0) < 0) {\n   $iov$0$lcssa11 = $iov$0;\n   $iovcnt$0$lcssa12 = $iovcnt$0;\n   label = 8;\n   break;\n  }\n  $35 = $rem$0 - $cnt$0 | 0;\n  $37 = HEAP32[$iov$0 + 4 >> 2] | 0;\n  if ($cnt$0 >>> 0 > $37 >>> 0) {\n   $39 = HEAP32[$11 >> 2] | 0;\n   HEAP32[$0 >> 2] = $39;\n   HEAP32[$3 >> 2] = $39;\n   $50 = HEAP32[$iov$0 + 12 >> 2] | 0;\n   $cnt$1 = $cnt$0 - $37 | 0;\n   $iov$1 = $iov$0 + 8 | 0;\n   $iovcnt$1 = $iovcnt$0 + -1 | 0;\n  } else if (($iovcnt$0 | 0) == 2) {\n   HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + $cnt$0;\n   $50 = $37;\n   $cnt$1 = $cnt$0;\n   $iov$1 = $iov$0;\n   $iovcnt$1 = 2;\n  } else {\n   $50 = $37;\n   $cnt$1 = $cnt$0;\n   $iov$1 = $iov$0;\n   $iovcnt$1 = $iovcnt$0;\n  }\n  HEAP32[$iov$1 >> 2] = (HEAP32[$iov$1 >> 2] | 0) + $cnt$1;\n  HEAP32[$iov$1 + 4 >> 2] = $50 - $cnt$1;\n  $iov$0 = $iov$1;\n  $iovcnt$0 = $iovcnt$1;\n  $rem$0 = $35;\n }\n if ((label | 0) == 6) {\n  $21 = HEAP32[$11 >> 2] | 0;\n  HEAP32[$f + 16 >> 2] = $21 + (HEAP32[$f + 48 >> 2] | 0);\n  $26 = $21;\n  HEAP32[$0 >> 2] = $26;\n  HEAP32[$3 >> 2] = $26;\n  $$0 = $len;\n } else if ((label | 0) == 8) {\n  HEAP32[$f + 16 >> 2] = 0;\n  HEAP32[$0 >> 2] = 0;\n  HEAP32[$3 >> 2] = 0;\n  HEAP32[$f >> 2] = HEAP32[$f >> 2] | 32;\n  if (($iovcnt$0$lcssa12 | 0) == 2) $$0 = 0; else $$0 = $len - (HEAP32[$iov$0$lcssa11 + 4 >> 2] | 0) | 0;\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _pop_arg($arg, $type, $ap) {\n $arg = $arg | 0;\n $type = $type | 0;\n $ap = $ap | 0;\n var $105 = 0, $106 = 0.0, $112 = 0, $113 = 0.0, $13 = 0, $14 = 0, $17 = 0, $26 = 0, $27 = 0, $28 = 0, $37 = 0, $38 = 0, $40 = 0, $43 = 0, $44 = 0, $53 = 0, $54 = 0, $56 = 0, $59 = 0, $6 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $79 = 0, $80 = 0, $82 = 0, $85 = 0, $94 = 0, $95 = 0, $96 = 0;\n L1 : do if ($type >>> 0 <= 20) do switch ($type | 0) {\n case 9:\n  {\n   $6 = (HEAP32[$ap >> 2] | 0) + (4 - 1) & ~(4 - 1);\n   $7 = HEAP32[$6 >> 2] | 0;\n   HEAP32[$ap >> 2] = $6 + 4;\n   HEAP32[$arg >> 2] = $7;\n   break L1;\n   break;\n  }\n case 10:\n  {\n   $13 = (HEAP32[$ap >> 2] | 0) + (4 - 1) & ~(4 - 1);\n   $14 = HEAP32[$13 >> 2] | 0;\n   HEAP32[$ap >> 2] = $13 + 4;\n   $17 = $arg;\n   HEAP32[$17 >> 2] = $14;\n   HEAP32[$17 + 4 >> 2] = (($14 | 0) < 0) << 31 >> 31;\n   break L1;\n   break;\n  }\n case 11:\n  {\n   $26 = (HEAP32[$ap >> 2] | 0) + (4 - 1) & ~(4 - 1);\n   $27 = HEAP32[$26 >> 2] | 0;\n   HEAP32[$ap >> 2] = $26 + 4;\n   $28 = $arg;\n   HEAP32[$28 >> 2] = $27;\n   HEAP32[$28 + 4 >> 2] = 0;\n   break L1;\n   break;\n  }\n case 12:\n  {\n   $37 = (HEAP32[$ap >> 2] | 0) + (8 - 1) & ~(8 - 1);\n   $38 = $37;\n   $40 = HEAP32[$38 >> 2] | 0;\n   $43 = HEAP32[$38 + 4 >> 2] | 0;\n   HEAP32[$ap >> 2] = $37 + 8;\n   $44 = $arg;\n   HEAP32[$44 >> 2] = $40;\n   HEAP32[$44 + 4 >> 2] = $43;\n   break L1;\n   break;\n  }\n case 13:\n  {\n   $53 = (HEAP32[$ap >> 2] | 0) + (4 - 1) & ~(4 - 1);\n   $54 = HEAP32[$53 >> 2] | 0;\n   HEAP32[$ap >> 2] = $53 + 4;\n   $56 = ($54 & 65535) << 16 >> 16;\n   $59 = $arg;\n   HEAP32[$59 >> 2] = $56;\n   HEAP32[$59 + 4 >> 2] = (($56 | 0) < 0) << 31 >> 31;\n   break L1;\n   break;\n  }\n case 14:\n  {\n   $68 = (HEAP32[$ap >> 2] | 0) + (4 - 1) & ~(4 - 1);\n   $69 = HEAP32[$68 >> 2] | 0;\n   HEAP32[$ap >> 2] = $68 + 4;\n   $70 = $arg;\n   HEAP32[$70 >> 2] = $69 & 65535;\n   HEAP32[$70 + 4 >> 2] = 0;\n   break L1;\n   break;\n  }\n case 15:\n  {\n   $79 = (HEAP32[$ap >> 2] | 0) + (4 - 1) & ~(4 - 1);\n   $80 = HEAP32[$79 >> 2] | 0;\n   HEAP32[$ap >> 2] = $79 + 4;\n   $82 = ($80 & 255) << 24 >> 24;\n   $85 = $arg;\n   HEAP32[$85 >> 2] = $82;\n   HEAP32[$85 + 4 >> 2] = (($82 | 0) < 0) << 31 >> 31;\n   break L1;\n   break;\n  }\n case 16:\n  {\n   $94 = (HEAP32[$ap >> 2] | 0) + (4 - 1) & ~(4 - 1);\n   $95 = HEAP32[$94 >> 2] | 0;\n   HEAP32[$ap >> 2] = $94 + 4;\n   $96 = $arg;\n   HEAP32[$96 >> 2] = $95 & 255;\n   HEAP32[$96 + 4 >> 2] = 0;\n   break L1;\n   break;\n  }\n case 17:\n  {\n   $105 = (HEAP32[$ap >> 2] | 0) + (8 - 1) & ~(8 - 1);\n   $106 = +HEAPF64[$105 >> 3];\n   HEAP32[$ap >> 2] = $105 + 8;\n   HEAPF64[$arg >> 3] = $106;\n   break L1;\n   break;\n  }\n case 18:\n  {\n   $112 = (HEAP32[$ap >> 2] | 0) + (8 - 1) & ~(8 - 1);\n   $113 = +HEAPF64[$112 >> 3];\n   HEAP32[$ap >> 2] = $112 + 8;\n   HEAPF64[$arg >> 3] = $113;\n   break L1;\n   break;\n  }\n default:\n  break L1;\n } while (0); while (0);\n return;\n}\n\nfunction _arPattCreateHandle2($pattSize, $patternCountMax) {\n $pattSize = $pattSize | 0;\n $patternCountMax = $patternCountMax | 0;\n var $$0 = 0, $10 = 0, $11 = 0, $14 = 0, $15 = 0, $17 = 0, $18 = 0, $2 = 0, $21 = 0, $24 = 0, $25 = 0, $26 = 0, $29 = 0, $31 = 0, $32 = 0, $35 = 0, $7 = 0, $i$04 = 0, $j$0 = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, $vararg_buffer11 = 0, $vararg_buffer13 = 0, $vararg_buffer3 = 0, $vararg_buffer5 = 0, $vararg_buffer7 = 0, $vararg_buffer9 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 64 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer13 = sp + 56 | 0;\n $vararg_buffer11 = sp + 48 | 0;\n $vararg_buffer9 = sp + 40 | 0;\n $vararg_buffer7 = sp + 32 | 0;\n $vararg_buffer5 = sp + 24 | 0;\n $vararg_buffer3 = sp + 16 | 0;\n $vararg_buffer1 = sp + 8 | 0;\n $vararg_buffer = sp;\n L1 : do if (($pattSize + -16 | 0) >>> 0 > 48 | ($patternCountMax | 0) < 1) $$0 = 0; else {\n  $2 = _malloc(32) | 0;\n  if (!$2) {\n   _arLog(3, 5471, $vararg_buffer);\n   _exit(1);\n  }\n  HEAP32[$2 >> 2] = 0;\n  HEAP32[$2 + 4 >> 2] = $patternCountMax;\n  HEAP32[$2 + 28 >> 2] = $pattSize;\n  $7 = _malloc($patternCountMax << 2) | 0;\n  HEAP32[$2 + 8 >> 2] = $7;\n  if (!$7) {\n   _arLog(3, 5471, $vararg_buffer1);\n   _exit(1);\n  }\n  $10 = $patternCountMax << 4;\n  $11 = _malloc($10) | 0;\n  HEAP32[$2 + 12 >> 2] = $11;\n  if (!$11) {\n   _arLog(3, 5471, $vararg_buffer3);\n   _exit(1);\n  }\n  $14 = _malloc($10) | 0;\n  $15 = $2 + 20 | 0;\n  HEAP32[$15 >> 2] = $14;\n  if (!$14) {\n   _arLog(3, 5471, $vararg_buffer5);\n   _exit(1);\n  }\n  $17 = $patternCountMax << 5;\n  $18 = _malloc($17) | 0;\n  HEAP32[$2 + 16 >> 2] = $18;\n  if (!$18) {\n   _arLog(3, 5471, $vararg_buffer7);\n   _exit(1);\n  }\n  $21 = _malloc($17) | 0;\n  HEAP32[$2 + 24 >> 2] = $21;\n  if (!$21) {\n   _arLog(3, 5471, $vararg_buffer9);\n   _exit(1);\n  }\n  $24 = Math_imul($pattSize, $pattSize) | 0;\n  $25 = $24 * 12 | 0;\n  $26 = $24 << 2;\n  if (($patternCountMax | 0) > 0) {\n   $i$04 = 0;\n   L21 : while (1) {\n    HEAP32[$7 + ($i$04 << 2) >> 2] = 0;\n    $29 = $i$04 << 2;\n    $j$0 = 0;\n    while (1) {\n     if (($j$0 | 0) >= 4) break;\n     $31 = _malloc($25) | 0;\n     $32 = $j$0 + $29 | 0;\n     HEAP32[$11 + ($32 << 2) >> 2] = $31;\n     if (!$31) {\n      label = 18;\n      break L21;\n     }\n     $35 = _malloc($26) | 0;\n     HEAP32[(HEAP32[$15 >> 2] | 0) + ($32 << 2) >> 2] = $35;\n     if (!$35) {\n      label = 20;\n      break L21;\n     } else $j$0 = $j$0 + 1 | 0;\n    }\n    $i$04 = $i$04 + 1 | 0;\n    if (($i$04 | 0) >= ($patternCountMax | 0)) {\n     $$0 = $2;\n     break L1;\n    }\n   }\n   if ((label | 0) == 18) {\n    _arLog(3, 5471, $vararg_buffer11);\n    _exit(1);\n   } else if ((label | 0) == 20) {\n    _arLog(3, 5471, $vararg_buffer13);\n    _exit(1);\n   }\n  } else $$0 = $2;\n } while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arParamChangeSize($source, $xsize, $ysize, $newparam) {\n $source = $source | 0;\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $newparam = $newparam | 0;\n var $$0 = 0, $23 = 0, $3 = 0.0, $8 = 0.0, $i$01 = 0, label = 0;\n $3 = +($xsize | 0) / +(HEAP32[$source >> 2] | 0);\n $8 = +($ysize | 0) / +(HEAP32[$source + 4 >> 2] | 0);\n HEAP32[$newparam >> 2] = $xsize;\n HEAP32[$newparam + 4 >> 2] = $ysize;\n $i$01 = 0;\n do {\n  HEAPF64[$newparam + 8 + ($i$01 << 3) >> 3] = $3 * +HEAPF64[$source + 8 + ($i$01 << 3) >> 3];\n  HEAPF64[$newparam + 40 + ($i$01 << 3) >> 3] = $8 * +HEAPF64[$source + 40 + ($i$01 << 3) >> 3];\n  HEAPF64[$newparam + 72 + ($i$01 << 3) >> 3] = +HEAPF64[$source + 72 + ($i$01 << 3) >> 3];\n  $i$01 = $i$01 + 1 | 0;\n } while (($i$01 | 0) != 4);\n $23 = HEAP32[$source + 176 >> 2] | 0;\n switch ($23 | 0) {\n case 4:\n  {\n   HEAPF64[$newparam + 104 >> 3] = +HEAPF64[$source + 104 >> 3];\n   HEAPF64[$newparam + 112 >> 3] = +HEAPF64[$source + 112 >> 3];\n   HEAPF64[$newparam + 120 >> 3] = +HEAPF64[$source + 120 >> 3];\n   HEAPF64[$newparam + 128 >> 3] = +HEAPF64[$source + 128 >> 3];\n   HEAPF64[$newparam + 136 >> 3] = $3 * +HEAPF64[$source + 136 >> 3];\n   HEAPF64[$newparam + 144 >> 3] = $8 * +HEAPF64[$source + 144 >> 3];\n   HEAPF64[$newparam + 152 >> 3] = $3 * +HEAPF64[$source + 152 >> 3];\n   HEAPF64[$newparam + 160 >> 3] = $8 * +HEAPF64[$source + 160 >> 3];\n   HEAPF64[$newparam + 168 >> 3] = +HEAPF64[$source + 168 >> 3];\n   label = 8;\n   break;\n  }\n case 3:\n  {\n   HEAPF64[$newparam + 104 >> 3] = $3 * +HEAPF64[$source + 104 >> 3];\n   HEAPF64[$newparam + 112 >> 3] = $8 * +HEAPF64[$source + 112 >> 3];\n   HEAPF64[$newparam + 120 >> 3] = +HEAPF64[$source + 120 >> 3];\n   HEAPF64[$newparam + 128 >> 3] = +HEAPF64[$source + 128 >> 3];\n   HEAPF64[$newparam + 136 >> 3] = +HEAPF64[$source + 136 >> 3] / ($3 * $8);\n   HEAPF64[$newparam + 144 >> 3] = +HEAPF64[$source + 144 >> 3] / ($8 * ($3 * $3 * $8));\n   label = 8;\n   break;\n  }\n case 2:\n  {\n   HEAPF64[$newparam + 104 >> 3] = $3 * +HEAPF64[$source + 104 >> 3];\n   HEAPF64[$newparam + 112 >> 3] = $8 * +HEAPF64[$source + 112 >> 3];\n   HEAPF64[$newparam + 120 >> 3] = +HEAPF64[$source + 120 >> 3];\n   HEAPF64[$newparam + 128 >> 3] = +HEAPF64[$source + 128 >> 3] / ($3 * $8);\n   HEAPF64[$newparam + 136 >> 3] = +HEAPF64[$source + 136 >> 3] / ($8 * ($3 * $3 * $8));\n   label = 8;\n   break;\n  }\n case 1:\n  {\n   HEAPF64[$newparam + 104 >> 3] = $3 * +HEAPF64[$source + 104 >> 3];\n   HEAPF64[$newparam + 112 >> 3] = $8 * +HEAPF64[$source + 112 >> 3];\n   HEAPF64[$newparam + 120 >> 3] = +HEAPF64[$source + 120 >> 3];\n   HEAPF64[$newparam + 128 >> 3] = +HEAPF64[$source + 128 >> 3] / ($3 * $8);\n   label = 8;\n   break;\n  }\n default:\n  $$0 = -1;\n }\n if ((label | 0) == 8) {\n  HEAP32[$newparam + 176 >> 2] = $23;\n  $$0 = 0;\n }\n return $$0 | 0;\n}\n\nfunction _icpUpdateMat($matXw2Xc, $dS) {\n $matXw2Xc = $matXw2Xc | 0;\n $dS = $dS | 0;\n var $$sink$i = 0.0, $$sink1$i = 0.0, $0 = 0.0, $11 = 0.0, $16 = 0.0, $18 = 0.0, $20 = 0.0, $21 = 0.0, $22 = 0.0, $23 = 0.0, $25 = 0.0, $29 = 0.0, $3 = 0.0, $30 = 0.0, $31 = 0.0, $35 = 0.0, $36 = 0.0, $47 = 0.0, $48 = 0.0, $64 = 0.0, $65 = 0.0, $66 = 0.0, $7 = 0.0, $82 = 0, $9 = 0.0, $i$08 = 0, $j$09 = 0, $j$17 = 0, $mat = 0, $mat2 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 192 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $mat = sp + 96 | 0;\n $mat2 = sp;\n $0 = +HEAPF64[$dS >> 3];\n $3 = +HEAPF64[$dS + 8 >> 3];\n $7 = +HEAPF64[$dS + 16 >> 3];\n $9 = $0 * $0 + $3 * $3 + $7 * $7;\n if ($9 == 0.0) {\n  $$sink$i = 0.0;\n  $$sink1$i = 0.0;\n  $25 = 1.0;\n  $29 = 0.0;\n } else {\n  $11 = +Math_sqrt(+$9);\n  $$sink$i = $11;\n  $$sink1$i = $7 / $11;\n  $25 = $0 / $11;\n  $29 = $3 / $11;\n }\n $16 = +HEAPF64[$dS + 24 >> 3];\n $18 = +HEAPF64[$dS + 32 >> 3];\n $20 = +HEAPF64[$dS + 40 >> 3];\n $21 = +Math_cos(+$$sink$i);\n $22 = 1.0 - $21;\n $23 = +Math_sin(+$$sink$i);\n HEAPF64[$mat >> 3] = $21 + $25 * $25 * $22;\n $30 = $29 * $25 * $22;\n $31 = $$sink1$i * $23;\n HEAPF64[$mat + 8 >> 3] = $30 - $31;\n $35 = $25 * $$sink1$i * $22;\n $36 = $29 * $23;\n HEAPF64[$mat + 16 >> 3] = $35 + $36;\n HEAPF64[$mat + 24 >> 3] = $16;\n HEAPF64[$mat + 32 >> 3] = $30 + $31;\n HEAPF64[$mat + 40 >> 3] = $21 + $29 * $29 * $22;\n $47 = $29 * $$sink1$i * $22;\n $48 = $25 * $23;\n HEAPF64[$mat + 48 >> 3] = $47 - $48;\n HEAPF64[$mat + 56 >> 3] = $18;\n HEAPF64[$mat + 64 >> 3] = $35 - $36;\n HEAPF64[$mat + 72 >> 3] = $47 + $48;\n HEAPF64[$mat + 80 >> 3] = $21 + $$sink1$i * $$sink1$i * $22;\n HEAPF64[$mat + 88 >> 3] = $20;\n $j$09 = 0;\n do {\n  $64 = +HEAPF64[$matXw2Xc + ($j$09 << 5) >> 3];\n  $65 = +HEAPF64[$matXw2Xc + ($j$09 << 5) + 8 >> 3];\n  $66 = +HEAPF64[$matXw2Xc + ($j$09 << 5) + 16 >> 3];\n  $i$08 = 0;\n  do {\n   HEAPF64[$mat2 + ($j$09 << 5) + ($i$08 << 3) >> 3] = $64 * +HEAPF64[$mat + ($i$08 << 3) >> 3] + $65 * +HEAPF64[$mat + 32 + ($i$08 << 3) >> 3] + $66 * +HEAPF64[$mat + 64 + ($i$08 << 3) >> 3];\n   $i$08 = $i$08 + 1 | 0;\n  } while (($i$08 | 0) != 4);\n  $82 = $mat2 + ($j$09 << 5) + 24 | 0;\n  HEAPF64[$82 >> 3] = +HEAPF64[$matXw2Xc + ($j$09 << 5) + 24 >> 3] + +HEAPF64[$82 >> 3];\n  $j$09 = $j$09 + 1 | 0;\n } while (($j$09 | 0) != 3);\n $j$17 = 0;\n do {\n  HEAPF64[$matXw2Xc + ($j$17 << 5) >> 3] = +HEAPF64[$mat2 + ($j$17 << 5) >> 3];\n  HEAPF64[$matXw2Xc + ($j$17 << 5) + 8 >> 3] = +HEAPF64[$mat2 + ($j$17 << 5) + 8 >> 3];\n  HEAPF64[$matXw2Xc + ($j$17 << 5) + 16 >> 3] = +HEAPF64[$mat2 + ($j$17 << 5) + 16 >> 3];\n  HEAPF64[$matXw2Xc + ($j$17 << 5) + 24 >> 3] = +HEAPF64[$mat2 + ($j$17 << 5) + 24 >> 3];\n  $j$17 = $j$17 + 1 | 0;\n } while (($j$17 | 0) != 3);\n STACKTOP = sp;\n return 0;\n}\n\nfunction _setCamera($id, $cameraID) {\n $id = $id | 0;\n $cameraID = $cameraID | 0;\n var $$0 = 0, $0 = 0, $1 = 0, $10 = 0, $14 = 0, $15 = 0, $20 = 0, $21 = 0, $23 = 0, $24 = 0, $26 = 0, $4 = 0, $7 = 0, $9 = 0, $vararg_buffer = 0, $vararg_buffer2 = 0, $vararg_buffer4 = 0, $vararg_buffer6 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 48 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer6 = sp + 24 | 0;\n $vararg_buffer4 = sp + 16 | 0;\n $vararg_buffer2 = sp + 8 | 0;\n $vararg_buffer = sp;\n $0 = sp + 32 | 0;\n $1 = sp + 28 | 0;\n HEAP32[$0 >> 2] = $id;\n HEAP32[$1 >> 2] = $cameraID;\n do if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = -1; else {\n  $4 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0;\n  if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2064, $1) | 0)) $$0 = -1; else {\n   $7 = $4 + 8 | 0;\n   _memcpy($7 | 0, __ZNSt3__113unordered_mapIi7ARParamNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2064, $1) | 0, 184) | 0;\n   $9 = HEAP32[$7 >> 2] | 0;\n   $10 = $4 + 204 | 0;\n   $14 = HEAP32[$4 + 12 >> 2] | 0;\n   $15 = $4 + 208 | 0;\n   if (!(($9 | 0) == (HEAP32[$10 >> 2] | 0) ? ($14 | 0) == (HEAP32[$15 >> 2] | 0) : 0)) {\n    HEAP32[$vararg_buffer >> 2] = $9;\n    HEAP32[$vararg_buffer + 4 >> 2] = $14;\n    _arLog(2, 6151, $vararg_buffer);\n    _arParamChangeSize($7, HEAP32[$10 >> 2] | 0, HEAP32[$15 >> 2] | 0, $7) | 0;\n   }\n   _deleteHandle($4);\n   $20 = _arParamLTCreate($7, 15) | 0;\n   $21 = $4 + 192 | 0;\n   HEAP32[$21 >> 2] = $20;\n   if (!$20) {\n    _arLog(3, 6198, $vararg_buffer2);\n    $$0 = -1;\n    break;\n   }\n   $23 = _arCreateHandle($20) | 0;\n   $24 = $4 + 212 | 0;\n   HEAP32[$24 >> 2] = $23;\n   if (!$23) {\n    _arLog(3, 6236, $vararg_buffer4);\n    $$0 = -1;\n    break;\n   }\n   _arSetPixelFormat($23, 2) | 0;\n   $26 = _ar3DCreateHandle($7) | 0;\n   HEAP32[$4 + 224 >> 2] = $26;\n   if (!$26) {\n    _arLog(3, 6273, $vararg_buffer6);\n    $$0 = -1;\n    break;\n   } else {\n    _arPattAttach(HEAP32[$24 >> 2] | 0, HEAP32[$4 + 216 >> 2] | 0) | 0;\n    _arglCameraFrustum(HEAP32[$21 >> 2] | 0, +HEAPF64[$4 + 232 >> 3], +HEAPF64[$4 + 240 >> 3], $4 + 264 | 0);\n    $$0 = 0;\n    break;\n   }\n  }\n } while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _memchr($src, $c, $n) {\n $src = $src | 0;\n $c = $c | 0;\n $n = $n | 0;\n var $$0$lcssa = 0, $$0$lcssa44 = 0, $$019 = 0, $$1$lcssa = 0, $$110 = 0, $$110$lcssa = 0, $$24 = 0, $$3 = 0, $$lcssa = 0, $0 = 0, $13 = 0, $15 = 0, $17 = 0, $20 = 0, $26 = 0, $27 = 0, $32 = 0, $4 = 0, $5 = 0, $8 = 0, $9 = 0, $s$0$lcssa = 0, $s$0$lcssa43 = 0, $s$020 = 0, $s$15 = 0, $s$2 = 0, $w$0$lcssa = 0, $w$011 = 0, $w$011$lcssa = 0, label = 0;\n $0 = $c & 255;\n $4 = ($n | 0) != 0;\n L1 : do if ($4 & ($src & 3 | 0) != 0) {\n  $5 = $c & 255;\n  $$019 = $n;\n  $s$020 = $src;\n  while (1) {\n   if ((HEAP8[$s$020 >> 0] | 0) == $5 << 24 >> 24) {\n    $$0$lcssa44 = $$019;\n    $s$0$lcssa43 = $s$020;\n    label = 6;\n    break L1;\n   }\n   $8 = $s$020 + 1 | 0;\n   $9 = $$019 + -1 | 0;\n   $13 = ($9 | 0) != 0;\n   if ($13 & ($8 & 3 | 0) != 0) {\n    $$019 = $9;\n    $s$020 = $8;\n   } else {\n    $$0$lcssa = $9;\n    $$lcssa = $13;\n    $s$0$lcssa = $8;\n    label = 5;\n    break;\n   }\n  }\n } else {\n  $$0$lcssa = $n;\n  $$lcssa = $4;\n  $s$0$lcssa = $src;\n  label = 5;\n } while (0);\n if ((label | 0) == 5) if ($$lcssa) {\n  $$0$lcssa44 = $$0$lcssa;\n  $s$0$lcssa43 = $s$0$lcssa;\n  label = 6;\n } else {\n  $$3 = 0;\n  $s$2 = $s$0$lcssa;\n }\n L8 : do if ((label | 0) == 6) {\n  $15 = $c & 255;\n  if ((HEAP8[$s$0$lcssa43 >> 0] | 0) == $15 << 24 >> 24) {\n   $$3 = $$0$lcssa44;\n   $s$2 = $s$0$lcssa43;\n  } else {\n   $17 = Math_imul($0, 16843009) | 0;\n   L11 : do if ($$0$lcssa44 >>> 0 > 3) {\n    $$110 = $$0$lcssa44;\n    $w$011 = $s$0$lcssa43;\n    while (1) {\n     $20 = HEAP32[$w$011 >> 2] ^ $17;\n     if (($20 & -2139062144 ^ -2139062144) & $20 + -16843009) {\n      $$110$lcssa = $$110;\n      $w$011$lcssa = $w$011;\n      break;\n     }\n     $26 = $w$011 + 4 | 0;\n     $27 = $$110 + -4 | 0;\n     if ($27 >>> 0 > 3) {\n      $$110 = $27;\n      $w$011 = $26;\n     } else {\n      $$1$lcssa = $27;\n      $w$0$lcssa = $26;\n      label = 11;\n      break L11;\n     }\n    }\n    $$24 = $$110$lcssa;\n    $s$15 = $w$011$lcssa;\n   } else {\n    $$1$lcssa = $$0$lcssa44;\n    $w$0$lcssa = $s$0$lcssa43;\n    label = 11;\n   } while (0);\n   if ((label | 0) == 11) if (!$$1$lcssa) {\n    $$3 = 0;\n    $s$2 = $w$0$lcssa;\n    break;\n   } else {\n    $$24 = $$1$lcssa;\n    $s$15 = $w$0$lcssa;\n   }\n   while (1) {\n    if ((HEAP8[$s$15 >> 0] | 0) == $15 << 24 >> 24) {\n     $$3 = $$24;\n     $s$2 = $s$15;\n     break L8;\n    }\n    $32 = $s$15 + 1 | 0;\n    $$24 = $$24 + -1 | 0;\n    if (!$$24) {\n     $$3 = 0;\n     $s$2 = $32;\n     break;\n    } else $s$15 = $32;\n   }\n  }\n } while (0);\n return (($$3 | 0) != 0 ? $s$2 : 0) | 0;\n}\n\nfunction _getMarkerInfo($id, $markerIndex) {\n $id = $id | 0;\n $markerIndex = $markerIndex | 0;\n var $$0 = 0, $0 = 0, $5 = 0, $6 = 0, $_ZL11gMarkerInfo$ = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $0 = sp;\n HEAP32[$0 >> 2] = $id;\n do if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = HEAP32[522] | 0; else {\n  $5 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0;\n  $6 = HEAP32[$5 >> 2] | 0;\n  if ((HEAP32[$6 + 44 >> 2] | 0) > ($markerIndex | 0)) {\n   $_ZL11gMarkerInfo$ = ($markerIndex | 0) < 0 ? 8 : $6 + 48 + ($markerIndex << 8) | 0;\n   _emscripten_asm_const_33(1, HEAP32[$_ZL11gMarkerInfo$ >> 2] | 0, HEAP32[$_ZL11gMarkerInfo$ + 4 >> 2] | 0, HEAP32[$_ZL11gMarkerInfo$ + 8 >> 2] | 0, HEAP32[$_ZL11gMarkerInfo$ + 12 >> 2] | 0, HEAP32[$_ZL11gMarkerInfo$ + 16 >> 2] | 0, HEAP32[$_ZL11gMarkerInfo$ + 20 >> 2] | 0, HEAP32[$_ZL11gMarkerInfo$ + 24 >> 2] | 0, +(+HEAPF64[$_ZL11gMarkerInfo$ + 32 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 40 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 48 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 56 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 64 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 72 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 80 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 88 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 96 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 104 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 112 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 120 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 128 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 136 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 144 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 152 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 160 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 168 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 176 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 184 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 192 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 200 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 208 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 216 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 224 >> 3]), HEAP32[$_ZL11gMarkerInfo$ + 240 >> 2] | 0) | 0;\n   $$0 = 0;\n   break;\n  } else {\n   $$0 = HEAP32[523] | 0;\n   break;\n  }\n } while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_114parse_decltypeINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) {\n $first = $first | 0;\n $last = $last | 0;\n $db = $db | 0;\n var $$03 = 0, $0 = 0, $1 = 0, $13 = 0, $14 = 0, $2 = 0, $21 = 0, $23 = 0, $24 = 0, $27 = 0, $3 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 64 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $0 = sp + 40 | 0;\n $1 = sp + 24 | 0;\n $2 = sp + 12 | 0;\n $3 = sp;\n L1 : do if (($last - $first | 0) > 3) if ((HEAP8[$first >> 0] | 0) == 68) {\n  switch (HEAP8[$first + 1 >> 0] | 0) {\n  case 84:\n  case 116:\n   break;\n  default:\n   {\n    $$03 = $first;\n    break L1;\n   }\n  }\n  $13 = $first + 2 | 0;\n  $14 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($13, $last, $db) | 0;\n  if (($14 | 0) == ($13 | 0) | ($14 | 0) == ($last | 0)) $$03 = $first; else if ((HEAP8[$14 >> 0] | 0) == 69) {\n   $21 = HEAP32[$db + 4 >> 2] | 0;\n   if ((HEAP32[$db >> 2] | 0) == ($21 | 0)) $$03 = $first; else {\n    $23 = $21 + -24 | 0;\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($3, $23);\n    $24 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($3, 0, 12777) | 0;\n    HEAP32[$2 >> 2] = HEAP32[$24 >> 2];\n    HEAP32[$2 + 4 >> 2] = HEAP32[$24 + 4 >> 2];\n    HEAP32[$2 + 8 >> 2] = HEAP32[$24 + 8 >> 2];\n    HEAP32[$24 >> 2] = 0;\n    HEAP32[$24 + 4 >> 2] = 0;\n    HEAP32[$24 + 8 >> 2] = 0;\n    $27 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($2, 12593) | 0;\n    HEAP32[$1 >> 2] = HEAP32[$27 >> 2];\n    HEAP32[$1 + 4 >> 2] = HEAP32[$27 + 4 >> 2];\n    HEAP32[$1 + 8 >> 2] = HEAP32[$27 + 8 >> 2];\n    HEAP32[$27 >> 2] = 0;\n    HEAP32[$27 + 4 >> 2] = 0;\n    HEAP32[$27 + 8 >> 2] = 0;\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($0, $1);\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($23, $0);\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0);\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);\n    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);\n    $$03 = $14 + 1 | 0;\n   }\n  } else $$03 = $first;\n } else $$03 = $first; else $$03 = $first; while (0);\n STACKTOP = sp;\n return $$03 | 0;\n}\n\nfunction ___fdopen($fd, $mode) {\n $fd = $fd | 0;\n $mode = $mode | 0;\n var $$0 = 0, $0 = 0, $13 = 0, $14 = 0, $19 = 0, $24 = 0, $26 = 0, $3 = 0, $37 = 0, $4 = 0, $tio = 0, $vararg_buffer = 0, $vararg_buffer12 = 0, $vararg_buffer3 = 0, $vararg_buffer7 = 0, dest = 0, sp = 0, stop = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 112 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer12 = sp + 40 | 0;\n $vararg_buffer7 = sp + 24 | 0;\n $vararg_buffer3 = sp + 16 | 0;\n $vararg_buffer = sp;\n $tio = sp + 52 | 0;\n $0 = HEAP8[$mode >> 0] | 0;\n if (!(_memchr(16733, $0 << 24 >> 24, 4) | 0)) {\n  $3 = ___errno_location() | 0;\n  HEAP32[$3 >> 2] = 22;\n  $$0 = 0;\n } else {\n  $4 = _malloc(1144) | 0;\n  if (!$4) $$0 = 0; else {\n   dest = $4;\n   stop = dest + 112 | 0;\n   do {\n    HEAP32[dest >> 2] = 0;\n    dest = dest + 4 | 0;\n   } while ((dest | 0) < (stop | 0));\n   if (!(_strchr($mode, 43) | 0)) HEAP32[$4 >> 2] = $0 << 24 >> 24 == 114 ? 8 : 4;\n   if (!(_strchr($mode, 101) | 0)) $13 = $0; else {\n    HEAP32[$vararg_buffer >> 2] = $fd;\n    HEAP32[$vararg_buffer + 4 >> 2] = 2;\n    HEAP32[$vararg_buffer + 8 >> 2] = 1;\n    ___syscall221(221, $vararg_buffer | 0) | 0;\n    $13 = HEAP8[$mode >> 0] | 0;\n   }\n   if ($13 << 24 >> 24 == 97) {\n    HEAP32[$vararg_buffer3 >> 2] = $fd;\n    HEAP32[$vararg_buffer3 + 4 >> 2] = 3;\n    $14 = ___syscall221(221, $vararg_buffer3 | 0) | 0;\n    if (!($14 & 1024)) {\n     HEAP32[$vararg_buffer7 >> 2] = $fd;\n     HEAP32[$vararg_buffer7 + 4 >> 2] = 4;\n     HEAP32[$vararg_buffer7 + 8 >> 2] = $14 | 1024;\n     ___syscall221(221, $vararg_buffer7 | 0) | 0;\n    }\n    $19 = HEAP32[$4 >> 2] | 128;\n    HEAP32[$4 >> 2] = $19;\n    $26 = $19;\n   } else $26 = HEAP32[$4 >> 2] | 0;\n   HEAP32[$4 + 60 >> 2] = $fd;\n   HEAP32[$4 + 44 >> 2] = $4 + 120;\n   HEAP32[$4 + 48 >> 2] = 1024;\n   $24 = $4 + 75 | 0;\n   HEAP8[$24 >> 0] = -1;\n   if (!($26 & 8)) {\n    HEAP32[$vararg_buffer12 >> 2] = $fd;\n    HEAP32[$vararg_buffer12 + 4 >> 2] = 21505;\n    HEAP32[$vararg_buffer12 + 8 >> 2] = $tio;\n    if (!(___syscall54(54, $vararg_buffer12 | 0) | 0)) HEAP8[$24 >> 0] = 10;\n   }\n   HEAP32[$4 + 32 >> 2] = 14;\n   HEAP32[$4 + 36 >> 2] = 4;\n   HEAP32[$4 + 40 >> 2] = 5;\n   HEAP32[$4 + 12 >> 2] = 2;\n   if (!(HEAP32[598] | 0)) HEAP32[$4 + 76 >> 2] = -1;\n   ___lock(2416);\n   $37 = HEAP32[603] | 0;\n   HEAP32[$4 + 56 >> 2] = $37;\n   if ($37) HEAP32[$37 + 52 >> 2] = $4;\n   HEAP32[603] = $4;\n   ___unlock(2416);\n   $$0 = $4;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _addMultiMarker($id, $patt_name) {\n $id = $id | 0;\n $patt_name = $patt_name | 0;\n var $$0 = 0, $0 = 0, $11 = 0, $12 = 0, $13 = 0, $15 = 0, $16 = 0, $21 = 0, $22 = 0, $23 = 0, $28 = 0, $29 = 0, $3 = 0, $38 = 0, $40 = 0, $43 = 0, $44 = 0, $marker = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 32 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer1 = sp + 16 | 0;\n $vararg_buffer = sp + 8 | 0;\n $0 = sp + 20 | 0;\n $marker = sp;\n HEAP32[$0 >> 2] = $id;\n do if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = -1; else {\n  $3 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0;\n  if (!(HEAP8[$patt_name >> 0] & 1)) $15 = $patt_name + 1 | 0; else $15 = HEAP32[$patt_name + 8 >> 2] | 0;\n  $11 = HEAP32[$3 + 212 >> 2] | 0;\n  $12 = $3 + 216 | 0;\n  $13 = $3 + 220 | 0;\n  $16 = _arMultiReadConfigFile($15, HEAP32[$12 >> 2] | 0) | 0;\n  HEAP32[$13 >> 2] = $16;\n  if (!$16) {\n   _arLog(3, 6401, $vararg_buffer);\n   _arPattDeleteHandle(HEAP32[$12 >> 2] | 0) | 0;\n   _arLog(3, 6428, $vararg_buffer1);\n   $$0 = -1;\n   break;\n  }\n  switch (HEAP32[$16 + 108 >> 2] | 0) {\n  case 0:\n   {\n    _arSetPatternDetectionMode($11, 0) | 0;\n    break;\n   }\n  case 1:\n   {\n    _arSetPatternDetectionMode($11, 2) | 0;\n    break;\n   }\n  default:\n   _arSetPatternDetectionMode($11, 3) | 0;\n  }\n  $21 = $3 + 248 | 0;\n  $22 = $3 + 252 | 0;\n  $23 = HEAP32[$22 >> 2] | 0;\n  $28 = $23 - (HEAP32[$21 >> 2] | 0) >> 3;\n  $29 = $marker;\n  HEAP32[$29 >> 2] = 0;\n  HEAP32[$29 + 4 >> 2] = 0;\n  HEAP32[$marker >> 2] = $28;\n  HEAP32[$marker + 4 >> 2] = HEAP32[$13 >> 2];\n  if (($23 | 0) == (HEAP32[$3 + 256 >> 2] | 0)) {\n   __ZNSt3__16vectorI12multi_markerNS_9allocatorIS1_EEE21__push_back_slow_pathIRKS1_EEvOT_($21, $marker);\n   $$0 = $28;\n   break;\n  } else {\n   $38 = $marker;\n   $40 = HEAP32[$38 >> 2] | 0;\n   $43 = HEAP32[$38 + 4 >> 2] | 0;\n   $44 = $23;\n   HEAP32[$44 >> 2] = $40;\n   HEAP32[$44 + 4 >> 2] = $43;\n   HEAP32[$22 >> 2] = (HEAP32[$22 >> 2] | 0) + 8;\n   $$0 = $40;\n   break;\n  }\n } while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _get_cpara($world, $vertex, $para) {\n $world = $world | 0;\n $vertex = $vertex | 0;\n $para = $para | 0;\n var $0 = 0, $1 = 0, $2 = 0, $22 = 0, $3 = 0, $4 = 0, $49 = 0, $5 = 0, $62 = 0, $68 = 0, $7 = 0, $76 = 0, $86 = 0, $9 = 0, $i$03 = 0;\n $0 = _arMatrixAlloc(8, 8) | 0;\n $1 = _arMatrixAlloc(8, 1) | 0;\n $2 = _arMatrixAlloc(8, 1) | 0;\n $3 = HEAP32[$0 >> 2] | 0;\n $4 = HEAP32[$1 >> 2] | 0;\n $i$03 = 0;\n do {\n  $5 = $world + ($i$03 << 4) | 0;\n  $7 = $i$03 << 4;\n  HEAPF64[$3 + ($7 << 3) >> 3] = +HEAPF64[$5 >> 3];\n  $9 = $world + ($i$03 << 4) + 8 | 0;\n  HEAPF64[$3 + (($7 | 1) << 3) >> 3] = +HEAPF64[$9 >> 3];\n  HEAPF64[$3 + (($7 | 2) << 3) >> 3] = 1.0;\n  HEAPF64[$3 + (($7 | 3) << 3) >> 3] = 0.0;\n  HEAPF64[$3 + (($7 | 4) << 3) >> 3] = 0.0;\n  HEAPF64[$3 + (($7 | 5) << 3) >> 3] = 0.0;\n  $22 = $vertex + ($i$03 << 4) | 0;\n  HEAPF64[$3 + (($7 | 6) << 3) >> 3] = -(+HEAPF64[$5 >> 3] * +HEAPF64[$22 >> 3]);\n  HEAPF64[$3 + (($7 | 7) << 3) >> 3] = -(+HEAPF64[$9 >> 3] * +HEAPF64[$22 >> 3]);\n  HEAPF64[$3 + (($7 | 8) << 3) >> 3] = 0.0;\n  HEAPF64[$3 + (($7 | 9) << 3) >> 3] = 0.0;\n  HEAPF64[$3 + (($7 | 10) << 3) >> 3] = 0.0;\n  HEAPF64[$3 + (($7 | 11) << 3) >> 3] = +HEAPF64[$5 >> 3];\n  HEAPF64[$3 + (($7 | 12) << 3) >> 3] = +HEAPF64[$9 >> 3];\n  HEAPF64[$3 + (($7 | 13) << 3) >> 3] = 1.0;\n  $49 = $vertex + ($i$03 << 4) + 8 | 0;\n  HEAPF64[$3 + (($7 | 14) << 3) >> 3] = -(+HEAPF64[$5 >> 3] * +HEAPF64[$49 >> 3]);\n  HEAPF64[$3 + (($7 | 15) << 3) >> 3] = -(+HEAPF64[$9 >> 3] * +HEAPF64[$49 >> 3]);\n  $62 = $i$03 << 1;\n  HEAPF64[$4 + ($62 << 3) >> 3] = +HEAPF64[$22 >> 3];\n  HEAPF64[$4 + (($62 | 1) << 3) >> 3] = +HEAPF64[$49 >> 3];\n  $i$03 = $i$03 + 1 | 0;\n } while (($i$03 | 0) != 4);\n _arMatrixSelfInv($0) | 0;\n _arMatrixMul($2, $0, $1) | 0;\n $68 = HEAP32[$2 >> 2] | 0;\n HEAPF64[$para >> 3] = +HEAPF64[$68 >> 3];\n HEAPF64[$para + 8 >> 3] = +HEAPF64[$68 + 8 >> 3];\n HEAPF64[$para + 16 >> 3] = +HEAPF64[$68 + 16 >> 3];\n $76 = HEAP32[$2 >> 2] | 0;\n HEAPF64[$para + 24 >> 3] = +HEAPF64[$76 + 24 >> 3];\n HEAPF64[$para + 32 >> 3] = +HEAPF64[$76 + 32 >> 3];\n HEAPF64[$para + 40 >> 3] = +HEAPF64[$76 + 40 >> 3];\n $86 = HEAP32[$2 >> 2] | 0;\n HEAPF64[$para + 48 >> 3] = +HEAPF64[$86 + 48 >> 3];\n HEAPF64[$para + 56 >> 3] = +HEAPF64[$86 + 56 >> 3];\n HEAPF64[$para + 64 >> 3] = 1.0;\n _arMatrixFree($0) | 0;\n _arMatrixFree($1) | 0;\n _arMatrixFree($2) | 0;\n return;\n}\n\nfunction _arGetTransMatSquare($handle, $marker_info, $width, $conv) {\n $handle = $handle | 0;\n $marker_info = $marker_info | 0;\n $width = +$width;\n $conv = $conv | 0;\n var $$0 = 0.0, $1 = 0, $10 = 0, $18 = 0, $26 = 0, $3 = 0, $33 = 0.0, $34 = 0.0, $53 = 0, $data = 0, $err = 0, $initMatXw2Xc = 0, $screenCoord = 0, $worldCoord = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 288 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $screenCoord = sp + 200 | 0;\n $worldCoord = sp + 104 | 0;\n $data = sp + 264 | 0;\n $initMatXw2Xc = sp + 8 | 0;\n $err = sp;\n $1 = HEAP32[$marker_info + 16 >> 2] | 0;\n $3 = (4 - $1 | 0) % 4 | 0;\n HEAPF64[$screenCoord >> 3] = +HEAPF64[$marker_info + 168 + ($3 << 4) >> 3];\n HEAPF64[$screenCoord + 8 >> 3] = +HEAPF64[$marker_info + 168 + ($3 << 4) + 8 >> 3];\n $10 = (5 - $1 | 0) % 4 | 0;\n HEAPF64[$screenCoord + 16 >> 3] = +HEAPF64[$marker_info + 168 + ($10 << 4) >> 3];\n HEAPF64[$screenCoord + 24 >> 3] = +HEAPF64[$marker_info + 168 + ($10 << 4) + 8 >> 3];\n $18 = (6 - $1 | 0) % 4 | 0;\n HEAPF64[$screenCoord + 32 >> 3] = +HEAPF64[$marker_info + 168 + ($18 << 4) >> 3];\n HEAPF64[$screenCoord + 40 >> 3] = +HEAPF64[$marker_info + 168 + ($18 << 4) + 8 >> 3];\n $26 = (7 - $1 | 0) % 4 | 0;\n HEAPF64[$screenCoord + 48 >> 3] = +HEAPF64[$marker_info + 168 + ($26 << 4) >> 3];\n HEAPF64[$screenCoord + 56 >> 3] = +HEAPF64[$marker_info + 168 + ($26 << 4) + 8 >> 3];\n $33 = $width * -.5;\n HEAPF64[$worldCoord >> 3] = $33;\n $34 = $width * .5;\n HEAPF64[$worldCoord + 8 >> 3] = $34;\n HEAPF64[$worldCoord + 16 >> 3] = 0.0;\n HEAPF64[$worldCoord + 24 >> 3] = $34;\n HEAPF64[$worldCoord + 32 >> 3] = $34;\n HEAPF64[$worldCoord + 40 >> 3] = 0.0;\n HEAPF64[$worldCoord + 48 >> 3] = $34;\n HEAPF64[$worldCoord + 56 >> 3] = $33;\n HEAPF64[$worldCoord + 64 >> 3] = 0.0;\n HEAPF64[$worldCoord + 72 >> 3] = $33;\n HEAPF64[$worldCoord + 80 >> 3] = $33;\n HEAPF64[$worldCoord + 88 >> 3] = 0.0;\n HEAP32[$data >> 2] = $screenCoord;\n HEAP32[$data + 4 >> 2] = $worldCoord;\n HEAP32[$data + 8 >> 2] = 4;\n if ((_icpGetInitXw2Xc_from_PlanarData(HEAP32[$handle >> 2] | 0, $screenCoord, $worldCoord, 4, $initMatXw2Xc) | 0) < 0) $$0 = 1.0e8; else {\n  $53 = (_icpPoint(HEAP32[$handle >> 2] | 0, $data, $initMatXw2Xc, $conv, $err) | 0) < 0;\n  $$0 = $53 ? 1.0e8 : +HEAPF64[$err >> 3];\n }\n STACKTOP = sp;\n return +$$0;\n}\n\nfunction __ZNK10__cxxabiv120__si_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib($this, $info, $current_ptr, $path_below, $use_strcmp) {\n $this = $this | 0;\n $info = $info | 0;\n $current_ptr = $current_ptr | 0;\n $path_below = $path_below | 0;\n $use_strcmp = $use_strcmp | 0;\n var $14 = 0, $20 = 0, $23 = 0, $24 = 0, $26 = 0, $33 = 0, $44 = 0, $6 = 0, $is_dst_type_derived_from_static_type$0$off01 = 0, label = 0;\n L1 : do if (($this | 0) == (HEAP32[$info + 8 >> 2] | 0)) {\n  if ((HEAP32[$info + 4 >> 2] | 0) == ($current_ptr | 0)) {\n   $6 = $info + 28 | 0;\n   if ((HEAP32[$6 >> 2] | 0) != 1) HEAP32[$6 >> 2] = $path_below;\n  }\n } else {\n  if (($this | 0) != (HEAP32[$info >> 2] | 0)) {\n   $44 = HEAP32[$this + 8 >> 2] | 0;\n   FUNCTION_TABLE_viiiii[HEAP32[(HEAP32[$44 >> 2] | 0) + 24 >> 2] & 3]($44, $info, $current_ptr, $path_below, $use_strcmp);\n   break;\n  }\n  if ((HEAP32[$info + 16 >> 2] | 0) != ($current_ptr | 0)) {\n   $14 = $info + 20 | 0;\n   if ((HEAP32[$14 >> 2] | 0) != ($current_ptr | 0)) {\n    HEAP32[$info + 32 >> 2] = $path_below;\n    $20 = $info + 44 | 0;\n    if ((HEAP32[$20 >> 2] | 0) == 4) break;\n    $23 = $info + 52 | 0;\n    HEAP8[$23 >> 0] = 0;\n    $24 = $info + 53 | 0;\n    HEAP8[$24 >> 0] = 0;\n    $26 = HEAP32[$this + 8 >> 2] | 0;\n    FUNCTION_TABLE_viiiiii[HEAP32[(HEAP32[$26 >> 2] | 0) + 20 >> 2] & 3]($26, $info, $current_ptr, $current_ptr, 1, $use_strcmp);\n    if (!(HEAP8[$24 >> 0] | 0)) {\n     $is_dst_type_derived_from_static_type$0$off01 = 0;\n     label = 13;\n    } else if (!(HEAP8[$23 >> 0] | 0)) {\n     $is_dst_type_derived_from_static_type$0$off01 = 1;\n     label = 13;\n    }\n    do if ((label | 0) == 13) {\n     HEAP32[$14 >> 2] = $current_ptr;\n     $33 = $info + 40 | 0;\n     HEAP32[$33 >> 2] = (HEAP32[$33 >> 2] | 0) + 1;\n     if ((HEAP32[$info + 36 >> 2] | 0) == 1) if ((HEAP32[$info + 24 >> 2] | 0) == 2) {\n      HEAP8[$info + 54 >> 0] = 1;\n      if ($is_dst_type_derived_from_static_type$0$off01) break;\n     } else label = 16; else label = 16;\n     if ((label | 0) == 16) if ($is_dst_type_derived_from_static_type$0$off01) break;\n     HEAP32[$20 >> 2] = 4;\n     break L1;\n    } while (0);\n    HEAP32[$20 >> 2] = 3;\n    break;\n   }\n  }\n  if (($path_below | 0) == 1) HEAP32[$info + 32 >> 2] = 1;\n } while (0);\n return;\n}\n\nfunction _fgets($s, $n, $f) {\n $s = $s | 0;\n $n = $n | 0;\n $f = $f | 0;\n var $$0 = 0, $$048 = 0, $$05 = 0, $$lcssa14 = 0, $$sum$pre$phiZZ2D = 0, $$sum6 = 0, $13 = 0, $15 = 0, $16 = 0, $17 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $27 = 0, $28 = 0, $29 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $39 = 0, $4 = 0, $47 = 0, $48 = 0, $6 = 0, $8 = 0, $p$0 = 0, $p$1 = 0, label = 0;\n if ((HEAP32[$f + 76 >> 2] | 0) > -1) $13 = ___lockfile($f) | 0; else $13 = 0;\n $4 = $n + -1 | 0;\n if (($n | 0) < 2) {\n  $6 = $f + 74 | 0;\n  $8 = HEAP8[$6 >> 0] | 0;\n  HEAP8[$6 >> 0] = $8 + 255 | $8;\n  if ($13) ___unlockfile($f);\n  if (!$4) {\n   HEAP8[$s >> 0] = 0;\n   $$0 = $s;\n  } else $$0 = 0;\n } else {\n  L11 : do if (!$4) {\n   $p$1 = $s;\n   label = 18;\n  } else {\n   $15 = $f + 4 | 0;\n   $16 = $f + 8 | 0;\n   $$05 = $4;\n   $p$0 = $s;\n   while (1) {\n    $17 = HEAP32[$15 >> 2] | 0;\n    $20 = $17;\n    $21 = (HEAP32[$16 >> 2] | 0) - $20 | 0;\n    $22 = _memchr($17, 10, $21) | 0;\n    $23 = ($22 | 0) == 0;\n    $27 = $23 ? $21 : 1 - $20 + $22 | 0;\n    $28 = $27 >>> 0 < $$05 >>> 0;\n    $29 = $28 ? $27 : $$05;\n    _memcpy($p$0 | 0, $17 | 0, $29 | 0) | 0;\n    $30 = HEAP32[$15 >> 2] | 0;\n    $31 = $30 + $29 | 0;\n    HEAP32[$15 >> 2] = $31;\n    $32 = $p$0 + $29 | 0;\n    $33 = $$05 - $29 | 0;\n    if (!($23 & $28)) {\n     $p$1 = $32;\n     label = 18;\n     break L11;\n    }\n    if ($31 >>> 0 < (HEAP32[$16 >> 2] | 0) >>> 0) {\n     $$sum6 = $29 + 1 | 0;\n     HEAP32[$15 >> 2] = $30 + $$sum6;\n     $$sum$pre$phiZZ2D = $$sum6;\n     $47 = HEAPU8[$31 >> 0] | 0;\n    } else {\n     $39 = ___uflow($f) | 0;\n     if (($39 | 0) < 0) {\n      $$lcssa14 = $32;\n      break;\n     }\n     $$sum$pre$phiZZ2D = $29 + 1 | 0;\n     $47 = $39;\n    }\n    $$05 = $33 + -1 | 0;\n    $48 = $p$0 + $$sum$pre$phiZZ2D | 0;\n    HEAP8[$32 >> 0] = $47;\n    if (!(($$05 | 0) != 0 & ($47 & 255 | 0) != 10)) {\n     $p$1 = $48;\n     label = 18;\n     break L11;\n    } else $p$0 = $48;\n   }\n   if (($$lcssa14 | 0) == ($s | 0)) $$048 = 0; else if (!(HEAP32[$f >> 2] & 16)) $$048 = 0; else {\n    $p$1 = $$lcssa14;\n    label = 18;\n   }\n  } while (0);\n  if ((label | 0) == 18) if (!$s) $$048 = 0; else {\n   HEAP8[$p$1 >> 0] = 0;\n   $$048 = $s;\n  }\n  if (!$13) $$0 = $$048; else {\n   ___unlockfile($f);\n   $$0 = $$048;\n  }\n }\n return $$0 | 0;\n}\n\nfunction _mbrtowc($wc, $src, $n, $st) {\n $wc = $wc | 0;\n $src = $src | 0;\n $n = $n | 0;\n $st = $st | 0;\n var $$0 = 0, $$024 = 0, $$1 = 0, $$lcssa = 0, $$lcssa35 = 0, $$st = 0, $1 = 0, $12 = 0, $16 = 0, $17 = 0, $19 = 0, $21 = 0, $30 = 0, $40 = 0, $7 = 0, $8 = 0, $c$05 = 0, $c$1 = 0, $c$2 = 0, $dummy = 0, $dummy$wc = 0, $s$06 = 0, $s$1 = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $dummy = sp;\n $$st = ($st | 0) == 0 ? 2680 : $st;\n $1 = HEAP32[$$st >> 2] | 0;\n L1 : do if (!$src) if (!$1) $$0 = 0; else label = 15; else {\n  $dummy$wc = ($wc | 0) == 0 ? $dummy : $wc;\n  if (!$n) $$0 = -2; else {\n   if (!$1) {\n    $7 = HEAP8[$src >> 0] | 0;\n    $8 = $7 & 255;\n    if ($7 << 24 >> 24 > -1) {\n     HEAP32[$dummy$wc >> 2] = $8;\n     $$0 = $7 << 24 >> 24 != 0 & 1;\n     break;\n    }\n    $12 = $8 + -194 | 0;\n    if ($12 >>> 0 > 50) {\n     label = 15;\n     break;\n    }\n    $16 = HEAP32[2432 + ($12 << 2) >> 2] | 0;\n    $17 = $n + -1 | 0;\n    if (!$17) $c$2 = $16; else {\n     $$024 = $17;\n     $c$05 = $16;\n     $s$06 = $src + 1 | 0;\n     label = 9;\n    }\n   } else {\n    $$024 = $n;\n    $c$05 = $1;\n    $s$06 = $src;\n    label = 9;\n   }\n   L11 : do if ((label | 0) == 9) {\n    $19 = HEAP8[$s$06 >> 0] | 0;\n    $21 = ($19 & 255) >>> 3;\n    if (($21 + -16 | $21 + ($c$05 >> 26)) >>> 0 > 7) {\n     label = 15;\n     break L1;\n    } else {\n     $$1 = $$024;\n     $30 = $19;\n     $c$1 = $c$05;\n     $s$1 = $s$06;\n    }\n    while (1) {\n     $s$1 = $s$1 + 1 | 0;\n     $c$1 = ($30 & 255) + -128 | $c$1 << 6;\n     $$1 = $$1 + -1 | 0;\n     if (($c$1 | 0) >= 0) {\n      $$lcssa = $c$1;\n      $$lcssa35 = $$1;\n      break;\n     }\n     if (!$$1) {\n      $c$2 = $c$1;\n      break L11;\n     }\n     $30 = HEAP8[$s$1 >> 0] | 0;\n     if (($30 & -64) << 24 >> 24 != -128) {\n      label = 15;\n      break L1;\n     }\n    }\n    HEAP32[$$st >> 2] = 0;\n    HEAP32[$dummy$wc >> 2] = $$lcssa;\n    $$0 = $n - $$lcssa35 | 0;\n    break L1;\n   } while (0);\n   HEAP32[$$st >> 2] = $c$2;\n   $$0 = -2;\n  }\n } while (0);\n if ((label | 0) == 15) {\n  HEAP32[$$st >> 2] = 0;\n  $40 = ___errno_location() | 0;\n  HEAP32[$40 >> 2] = 84;\n  $$0 = -1;\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE6removeENS_21__hash_const_iteratorIPNS_11__hash_nodeIS3_PvEEEE($agg$result, $this, $__p) {\n $agg$result = $agg$result | 0;\n $this = $this | 0;\n $__p = $__p | 0;\n var $$pre$phiZ2D = 0, $0 = 0, $11 = 0, $12 = 0, $14 = 0, $16 = 0, $19 = 0, $2 = 0, $23 = 0, $24 = 0, $27 = 0, $31 = 0, $32 = 0, $34 = 0, $36 = 0, $4 = 0, $40 = 0, $43 = 0, $44 = 0, $5 = 0, $7 = 0, $__pn$0 = 0, $__pn$0$lcssa = 0, label = 0;\n $0 = HEAP32[$__p >> 2] | 0;\n $2 = HEAP32[$this + 4 >> 2] | 0;\n $4 = HEAP32[$0 + 4 >> 2] | 0;\n $5 = $2 + -1 | 0;\n $7 = ($5 & $2 | 0) == 0;\n if ($7) $12 = $5 & $4; else $12 = ($4 >>> 0) % ($2 >>> 0) | 0;\n $11 = (HEAP32[$this >> 2] | 0) + ($12 << 2) | 0;\n $__pn$0 = HEAP32[$11 >> 2] | 0;\n while (1) {\n  $14 = HEAP32[$__pn$0 >> 2] | 0;\n  if (($14 | 0) == ($0 | 0)) {\n   $__pn$0$lcssa = $__pn$0;\n   break;\n  } else $__pn$0 = $14;\n }\n $16 = $this + 8 | 0;\n if (($__pn$0$lcssa | 0) == ($16 | 0)) label = 12; else {\n  $19 = HEAP32[$__pn$0$lcssa + 4 >> 2] | 0;\n  if ($7) $23 = $19 & $5; else $23 = ($19 >>> 0) % ($2 >>> 0) | 0;\n  if (($23 | 0) == ($12 | 0)) $$pre$phiZ2D = $0; else label = 12;\n }\n do if ((label | 0) == 12) {\n  $24 = HEAP32[$0 >> 2] | 0;\n  if ($24) {\n   $27 = HEAP32[$24 + 4 >> 2] | 0;\n   if ($7) $31 = $27 & $5; else $31 = ($27 >>> 0) % ($2 >>> 0) | 0;\n   if (($31 | 0) == ($12 | 0)) {\n    $$pre$phiZ2D = $0;\n    break;\n   }\n  }\n  HEAP32[$11 >> 2] = 0;\n  $$pre$phiZ2D = $0;\n } while (0);\n $32 = HEAP32[$$pre$phiZ2D >> 2] | 0;\n $34 = $32;\n if (!$32) $43 = $34; else {\n  $36 = HEAP32[$32 + 4 >> 2] | 0;\n  if ($7) $40 = $36 & $5; else $40 = ($36 >>> 0) % ($2 >>> 0) | 0;\n  if (($40 | 0) == ($12 | 0)) $43 = $34; else {\n   HEAP32[(HEAP32[$this >> 2] | 0) + ($40 << 2) >> 2] = $__pn$0$lcssa;\n   $43 = HEAP32[$0 >> 2] | 0;\n  }\n }\n HEAP32[$__pn$0$lcssa >> 2] = $43;\n HEAP32[$$pre$phiZ2D >> 2] = 0;\n $44 = $this + 12 | 0;\n HEAP32[$44 >> 2] = (HEAP32[$44 >> 2] | 0) + -1;\n HEAP32[$agg$result >> 2] = $0;\n HEAP32[$agg$result + 4 >> 2] = $16;\n HEAP8[$agg$result + 8 >> 0] = 1;\n return;\n}\n\nfunction _arParamLTCreate($param, $offset) {\n $param = $param | 0;\n $offset = $offset | 0;\n var $0 = 0, $14 = 0, $15 = 0, $17 = 0, $20 = 0, $22 = 0, $24 = 0, $26 = 0, $29 = 0.0, $3 = 0, $32 = 0.0, $4 = 0, $9 = 0, $i$04 = 0, $i2of$05 = 0, $i2of$12 = 0, $ix = 0, $iy = 0, $j$07 = 0, $o2if$06 = 0, $o2if$13 = 0, $ox = 0, $oy = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 64 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $ix = sp + 24 | 0;\n $iy = sp + 16 | 0;\n $ox = sp + 8 | 0;\n $oy = sp;\n $0 = _malloc(208) | 0;\n if (!$0) {\n  _arLog(3, 5471, sp + 32 | 0);\n  _exit(1);\n }\n _memcpy($0 | 0, $param | 0, 184) | 0;\n $3 = $offset << 1;\n $4 = (HEAP32[$param >> 2] | 0) + $3 | 0;\n HEAP32[$0 + 192 >> 2] = $4;\n $9 = (HEAP32[$param + 4 >> 2] | 0) + $3 | 0;\n HEAP32[$0 + 196 >> 2] = $9;\n HEAP32[$0 + 200 >> 2] = $offset;\n HEAP32[$0 + 204 >> 2] = $offset;\n $14 = Math_imul($4 << 3, $9) | 0;\n $15 = _malloc($14) | 0;\n HEAP32[$0 + 184 >> 2] = $15;\n if (!$15) {\n  _arLog(3, 5471, sp + 40 | 0);\n  _exit(1);\n }\n $17 = _malloc($14) | 0;\n HEAP32[$0 + 188 >> 2] = $17;\n if (!$17) {\n  _arLog(3, 5471, sp + 48 | 0);\n  _exit(1);\n }\n $20 = $param + 104 | 0;\n $22 = HEAP32[$param + 176 >> 2] | 0;\n $24 = ($4 | 0) > 0 ? $4 << 1 : 0;\n if (($9 | 0) > 0) {\n  $26 = ($4 | 0) > 0;\n  $i2of$05 = $15;\n  $j$07 = 0;\n  $o2if$06 = $17;\n  while (1) {\n   $29 = +($j$07 - $offset | 0);\n   if ($26) {\n    $i$04 = 0;\n    $i2of$12 = $i2of$05;\n    $o2if$13 = $o2if$06;\n    while (1) {\n     $32 = +($i$04 - $offset | 0);\n     _arParamIdeal2Observ($20, $32, $29, $ox, $oy, $22) | 0;\n     HEAPF32[$i2of$12 >> 2] = +HEAPF64[$ox >> 3];\n     HEAPF32[$i2of$12 + 4 >> 2] = +HEAPF64[$oy >> 3];\n     _arParamObserv2Ideal($20, $32, $29, $ix, $iy, $22) | 0;\n     HEAPF32[$o2if$13 >> 2] = +HEAPF64[$ix >> 3];\n     HEAPF32[$o2if$13 + 4 >> 2] = +HEAPF64[$iy >> 3];\n     $i$04 = $i$04 + 1 | 0;\n     if (($i$04 | 0) >= ($4 | 0)) break; else {\n      $i2of$12 = $i2of$12 + 8 | 0;\n      $o2if$13 = $o2if$13 + 8 | 0;\n     }\n    }\n   }\n   $o2if$06 = $o2if$06 + ($24 << 2) | 0;\n   $j$07 = $j$07 + 1 | 0;\n   if (($j$07 | 0) >= ($9 | 0)) break; else $i2of$05 = $i2of$05 + ($24 << 2) | 0;\n  }\n }\n STACKTOP = sp;\n return $0 | 0;\n}\n\nfunction _arGetTransMatSquareCont($handle, $marker_info, $initConv, $width, $conv) {\n $handle = $handle | 0;\n $marker_info = $marker_info | 0;\n $initConv = $initConv | 0;\n $width = +$width;\n $conv = $conv | 0;\n var $1 = 0, $10 = 0, $18 = 0, $26 = 0, $3 = 0, $33 = 0.0, $34 = 0.0, $50 = 0, $data = 0, $err = 0, $screenCoord = 0, $worldCoord = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 192 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $screenCoord = sp + 104 | 0;\n $worldCoord = sp + 8 | 0;\n $data = sp + 168 | 0;\n $err = sp;\n $1 = HEAP32[$marker_info + 16 >> 2] | 0;\n $3 = (4 - $1 | 0) % 4 | 0;\n HEAPF64[$screenCoord >> 3] = +HEAPF64[$marker_info + 168 + ($3 << 4) >> 3];\n HEAPF64[$screenCoord + 8 >> 3] = +HEAPF64[$marker_info + 168 + ($3 << 4) + 8 >> 3];\n $10 = (5 - $1 | 0) % 4 | 0;\n HEAPF64[$screenCoord + 16 >> 3] = +HEAPF64[$marker_info + 168 + ($10 << 4) >> 3];\n HEAPF64[$screenCoord + 24 >> 3] = +HEAPF64[$marker_info + 168 + ($10 << 4) + 8 >> 3];\n $18 = (6 - $1 | 0) % 4 | 0;\n HEAPF64[$screenCoord + 32 >> 3] = +HEAPF64[$marker_info + 168 + ($18 << 4) >> 3];\n HEAPF64[$screenCoord + 40 >> 3] = +HEAPF64[$marker_info + 168 + ($18 << 4) + 8 >> 3];\n $26 = (7 - $1 | 0) % 4 | 0;\n HEAPF64[$screenCoord + 48 >> 3] = +HEAPF64[$marker_info + 168 + ($26 << 4) >> 3];\n HEAPF64[$screenCoord + 56 >> 3] = +HEAPF64[$marker_info + 168 + ($26 << 4) + 8 >> 3];\n $33 = $width * -.5;\n HEAPF64[$worldCoord >> 3] = $33;\n $34 = $width * .5;\n HEAPF64[$worldCoord + 8 >> 3] = $34;\n HEAPF64[$worldCoord + 16 >> 3] = 0.0;\n HEAPF64[$worldCoord + 24 >> 3] = $34;\n HEAPF64[$worldCoord + 32 >> 3] = $34;\n HEAPF64[$worldCoord + 40 >> 3] = 0.0;\n HEAPF64[$worldCoord + 48 >> 3] = $34;\n HEAPF64[$worldCoord + 56 >> 3] = $33;\n HEAPF64[$worldCoord + 64 >> 3] = 0.0;\n HEAPF64[$worldCoord + 72 >> 3] = $33;\n HEAPF64[$worldCoord + 80 >> 3] = $33;\n HEAPF64[$worldCoord + 88 >> 3] = 0.0;\n HEAP32[$data >> 2] = $screenCoord;\n HEAP32[$data + 4 >> 2] = $worldCoord;\n HEAP32[$data + 8 >> 2] = 4;\n $50 = (_icpPoint(HEAP32[$handle >> 2] | 0, $data, $initConv, $conv, $err) | 0) < 0;\n STACKTOP = sp;\n return +($50 ? 1.0e8 : +HEAPF64[$err >> 3]);\n}\n\nfunction ___dynamic_cast($static_ptr, $static_type, $dst_type, $src2dst_offset) {\n $static_ptr = $static_ptr | 0;\n $static_type = $static_type | 0;\n $dst_type = $dst_type | 0;\n $src2dst_offset = $src2dst_offset | 0;\n var $0 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $4 = 0, $6 = 0, $dst_ptr$0 = 0, $info = 0, dest = 0, sp = 0, stop = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 64 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $info = sp;\n $0 = HEAP32[$static_ptr >> 2] | 0;\n $4 = $static_ptr + (HEAP32[$0 + -8 >> 2] | 0) | 0;\n $6 = HEAP32[$0 + -4 >> 2] | 0;\n HEAP32[$info >> 2] = $dst_type;\n HEAP32[$info + 4 >> 2] = $static_ptr;\n HEAP32[$info + 8 >> 2] = $static_type;\n HEAP32[$info + 12 >> 2] = $src2dst_offset;\n $10 = $info + 16 | 0;\n $11 = $info + 20 | 0;\n $12 = $info + 24 | 0;\n $13 = $info + 28 | 0;\n $14 = $info + 32 | 0;\n $15 = $info + 40 | 0;\n $16 = ($6 | 0) == ($dst_type | 0);\n dest = $10;\n stop = dest + 36 | 0;\n do {\n  HEAP32[dest >> 2] = 0;\n  dest = dest + 4 | 0;\n } while ((dest | 0) < (stop | 0));\n HEAP16[$10 + 36 >> 1] = 0;\n HEAP8[$10 + 38 >> 0] = 0;\n L1 : do if ($16) {\n  HEAP32[$info + 48 >> 2] = 1;\n  FUNCTION_TABLE_viiiiii[HEAP32[(HEAP32[$dst_type >> 2] | 0) + 20 >> 2] & 3]($dst_type, $info, $4, $4, 1, 0);\n  $dst_ptr$0 = (HEAP32[$12 >> 2] | 0) == 1 ? $4 : 0;\n } else {\n  FUNCTION_TABLE_viiiii[HEAP32[(HEAP32[$6 >> 2] | 0) + 24 >> 2] & 3]($6, $info, $4, 1, 0);\n  switch (HEAP32[$info + 36 >> 2] | 0) {\n  case 0:\n   {\n    $dst_ptr$0 = (HEAP32[$15 >> 2] | 0) == 1 & (HEAP32[$13 >> 2] | 0) == 1 & (HEAP32[$14 >> 2] | 0) == 1 ? HEAP32[$11 >> 2] | 0 : 0;\n    break L1;\n    break;\n   }\n  case 1:\n   break;\n  default:\n   {\n    $dst_ptr$0 = 0;\n    break L1;\n   }\n  }\n  if ((HEAP32[$12 >> 2] | 0) != 1) if (!((HEAP32[$15 >> 2] | 0) == 0 & (HEAP32[$13 >> 2] | 0) == 1 & (HEAP32[$14 >> 2] | 0) == 1)) {\n   $dst_ptr$0 = 0;\n   break;\n  }\n  $dst_ptr$0 = HEAP32[$10 >> 2] | 0;\n } while (0);\n STACKTOP = sp;\n return $dst_ptr$0 | 0;\n}\n\nfunction _arImageProcLumaHistAndOtsu($ipi, $dataPtr, $value_p) {\n $ipi = $ipi | 0;\n $dataPtr = $dataPtr | 0;\n $value_p = $value_p | 0;\n var $$0 = 0, $$lcssa = 0.0, $0 = 0, $12 = 0.0, $14 = 0, $18 = 0.0, $22 = 0.0, $27 = 0.0, $29 = 0.0, $6 = 0.0, $indvars$iv = 0, $indvars$iv1 = 0, $sum$0 = 0.0, $sumB$0 = 0.0, $sumB$1 = 0.0, $threshold$0 = 0, $threshold$1 = 0, $threshold$2 = 0, $varMax$0 = 0.0, $varMax$1 = 0.0, $wB$0 = 0.0;\n $0 = _arImageProcLumaHist($ipi, $dataPtr) | 0;\n if (($0 | 0) < 0) $$0 = $0; else {\n  $indvars$iv1 = 1;\n  $sum$0 = 0.0;\n  while (1) {\n   $6 = $sum$0 + +((Math_imul(HEAP32[$ipi + 16 + ($indvars$iv1 << 2) >> 2] | 0, $indvars$iv1) | 0) >>> 0);\n   $indvars$iv1 = $indvars$iv1 + 1 | 0;\n   if (($indvars$iv1 | 0) == 256) {\n    $$lcssa = $6;\n    break;\n   } else $sum$0 = $6;\n  }\n  $12 = +(Math_imul(HEAP32[$ipi + 12 >> 2] | 0, HEAP32[$ipi + 8 >> 2] | 0) | 0);\n  $indvars$iv = 0;\n  $sumB$0 = 0.0;\n  $threshold$0 = 0;\n  $varMax$0 = 0.0;\n  $wB$0 = 0.0;\n  while (1) {\n   $14 = HEAP32[$ipi + 16 + ($indvars$iv << 2) >> 2] | 0;\n   $wB$0 = $wB$0 + +($14 >>> 0);\n   if ($wB$0 != 0.0) {\n    $18 = $12 - $wB$0;\n    if ($18 == 0.0) {\n     $threshold$2 = $threshold$0;\n     break;\n    }\n    $22 = $sumB$0 + +((Math_imul($indvars$iv, $14) | 0) >>> 0);\n    $27 = $22 / $wB$0 - ($$lcssa - $22) / $18;\n    $29 = $27 * ($wB$0 * $18 * $27);\n    if ($29 > $varMax$0) {\n     $sumB$1 = $22;\n     $threshold$1 = $indvars$iv & 255;\n     $varMax$1 = $29;\n    } else {\n     $sumB$1 = $22;\n     $threshold$1 = $threshold$0;\n     $varMax$1 = $varMax$0;\n    }\n   } else {\n    $sumB$1 = $sumB$0;\n    $threshold$1 = $threshold$0;\n    $varMax$1 = $varMax$0;\n   }\n   if (($indvars$iv & 255) << 24 >> 24 == -1) {\n    $threshold$2 = $threshold$1;\n    break;\n   } else {\n    $indvars$iv = $indvars$iv + 1 | 0;\n    $sumB$0 = $sumB$1;\n    $threshold$0 = $threshold$1;\n    $varMax$0 = $varMax$1;\n   }\n  }\n  HEAP8[$value_p >> 0] = $threshold$2;\n  $$0 = 0;\n }\n return $$0 | 0;\n}\n\nfunction __ZN53EmscriptenBindingInitializer_native_and_builtin_typesC2Ev($this) {\n $this = $this | 0;\n __embind_register_void(624, 14176);\n __embind_register_bool(632, 14181, 1, 1, 0);\n __embind_register_integer(640, 13757, 1, -128, 127);\n __embind_register_integer(656, 13762, 1, -128, 127);\n __embind_register_integer(648, 13774, 1, 0, 255);\n __embind_register_integer(664, 13788, 2, -32768, 32767);\n __embind_register_integer(672, 13794, 2, 0, 65535);\n __embind_register_integer(680, 14186, 4, -2147483648, 2147483647);\n __embind_register_integer(688, 14190, 4, 0, -1);\n __embind_register_integer(696, 14203, 4, -2147483648, 2147483647);\n __embind_register_integer(704, 14208, 4, 0, -1);\n __embind_register_float(712, 14251, 4);\n __embind_register_float(720, 14257, 8);\n __embind_register_std_string(360, 12820);\n __embind_register_std_string(392, 10916);\n __embind_register_std_wstring(416, 4, 10949);\n __embind_register_emval(440, 10962);\n __embind_register_memory_view(448, 0, 10978);\n __ZN12_GLOBAL__N_1L20register_memory_viewIaEEvPKc(11008);\n __ZN12_GLOBAL__N_1L20register_memory_viewIhEEvPKc(11045);\n __ZN12_GLOBAL__N_1L20register_memory_viewIsEEvPKc(11084);\n __ZN12_GLOBAL__N_1L20register_memory_viewItEEvPKc(11115);\n __ZN12_GLOBAL__N_1L20register_memory_viewIiEEvPKc(11155);\n __ZN12_GLOBAL__N_1L20register_memory_viewIjEEvPKc(11184);\n __embind_register_memory_view(456, 4, 11222);\n __embind_register_memory_view(464, 5, 11252);\n __ZN12_GLOBAL__N_1L20register_memory_viewIaEEvPKc(11291);\n __ZN12_GLOBAL__N_1L20register_memory_viewIhEEvPKc(11323);\n __ZN12_GLOBAL__N_1L20register_memory_viewIsEEvPKc(11356);\n __ZN12_GLOBAL__N_1L20register_memory_viewItEEvPKc(11389);\n __ZN12_GLOBAL__N_1L20register_memory_viewIiEEvPKc(11423);\n __ZN12_GLOBAL__N_1L20register_memory_viewIjEEvPKc(11456);\n __embind_register_memory_view(472, 6, 11490);\n __embind_register_memory_view(480, 7, 11521);\n __embind_register_memory_view(488, 7, 11553);\n return;\n}\n\nfunction _arSetPixelFormat($handle, $pixFormat) {\n $handle = $handle | 0;\n $pixFormat = $pixFormat | 0;\n var $$0 = 0, $1 = 0, $14 = 0, $16 = 0, $17 = 0, $4 = 0, $6 = 0, $7 = 0, $monoFormat$0 = 0, $vararg_buffer = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n L1 : do if (!$handle) $$0 = -1; else {\n  $1 = $handle + 4 | 0;\n  if ((HEAP32[$1 >> 2] | 0) == ($pixFormat | 0)) $$0 = 0; else {\n   switch ($pixFormat | 0) {\n   case 11:\n   case 10:\n   case 9:\n   case 8:\n   case 7:\n   case 6:\n   case 4:\n   case 3:\n   case 2:\n   case 1:\n   case 0:\n    {\n     $monoFormat$0 = 0;\n     break;\n    }\n   case 14:\n   case 13:\n   case 12:\n   case 5:\n    {\n     $monoFormat$0 = 1;\n     break;\n    }\n   default:\n    {\n     HEAP32[$vararg_buffer >> 2] = $pixFormat;\n     _arLog(3, 3936, $vararg_buffer);\n     $$0 = -1;\n     break L1;\n    }\n   }\n   HEAP32[$1 >> 2] = $pixFormat;\n   $4 = _arUtilGetPixelSize($pixFormat) | 0;\n   HEAP32[$handle + 8 >> 2] = $4;\n   $6 = $handle + 7062408 | 0;\n   $7 = HEAP32[$6 >> 2] | 0;\n   if ($7) {\n    _arImageProcFinal($7);\n    $14 = _arImageProcInit(HEAP32[$handle + 36 >> 2] | 0, HEAP32[$handle + 40 >> 2] | 0, HEAP32[$1 >> 2] | 0, 0) | 0;\n    HEAP32[$6 >> 2] = $14;\n   }\n   $16 = $handle + 24 | 0;\n   $17 = HEAP32[$16 >> 2] | 0;\n   if (!$monoFormat$0) switch ($17 | 0) {\n   case 1:\n    {\n     HEAP32[$16 >> 2] = 4;\n     $$0 = 0;\n     break L1;\n     break;\n    }\n   case 4:\n    {\n     HEAP32[$16 >> 2] = 3;\n     $$0 = 0;\n     break L1;\n     break;\n    }\n   default:\n    {\n     $$0 = 0;\n     break L1;\n    }\n   } else switch ($17 | 0) {\n   case 0:\n    {\n     HEAP32[$16 >> 2] = 1;\n     $$0 = 0;\n     break L1;\n     break;\n    }\n   case 3:\n    {\n     HEAP32[$16 >> 2] = 4;\n     $$0 = 0;\n     break L1;\n     break;\n    }\n   default:\n    {\n     $$0 = 0;\n     break L1;\n    }\n   }\n  }\n } while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _confidenceCutoff($arHandle) {\n $arHandle = $arHandle | 0;\n var $11 = 0, $21 = 0, $3 = 0, $31 = 0, $37 = 0, $6 = 0, $9 = 0, $cfOK$0 = 0, $i$010 = 0, $i$112 = 0, $i$29 = 0;\n switch (HEAP32[$arHandle + 24 >> 2] | 0) {\n case 1:\n case 0:\n  {\n   $6 = HEAP32[$arHandle + 44 >> 2] | 0;\n   if (($6 | 0) > 0) {\n    $i$010 = 0;\n    do {\n     $11 = $arHandle + 48 + ($i$010 << 8) + 4 | 0;\n     if ((HEAP32[$11 >> 2] | 0) > -1) if (+HEAPF64[$arHandle + 48 + ($i$010 << 8) + 32 >> 3] < .5) {\n      HEAP32[$arHandle + 48 + ($i$010 << 8) + 8 >> 2] = -1;\n      HEAP32[$11 >> 2] = -1;\n      HEAP32[$arHandle + 48 + ($i$010 << 8) + 236 >> 2] = 6;\n     }\n     $i$010 = $i$010 + 1 | 0;\n    } while (($i$010 | 0) < ($6 | 0));\n   }\n   break;\n  }\n case 2:\n  {\n   $3 = HEAP32[$arHandle + 44 >> 2] | 0;\n   if (($3 | 0) > 0) {\n    $i$112 = 0;\n    do {\n     $21 = $arHandle + 48 + ($i$112 << 8) + 4 | 0;\n     if ((HEAP32[$21 >> 2] | 0) > -1) if (+HEAPF64[$arHandle + 48 + ($i$112 << 8) + 32 >> 3] < .5) {\n      HEAP32[$arHandle + 48 + ($i$112 << 8) + 12 >> 2] = -1;\n      HEAP32[$21 >> 2] = -1;\n      HEAP32[$arHandle + 48 + ($i$112 << 8) + 236 >> 2] = 6;\n     }\n     $i$112 = $i$112 + 1 | 0;\n    } while (($i$112 | 0) < ($3 | 0));\n   }\n   break;\n  }\n default:\n  {\n   $9 = HEAP32[$arHandle + 44 >> 2] | 0;\n   if (($9 | 0) > 0) {\n    $i$29 = 0;\n    do {\n     $31 = $arHandle + 48 + ($i$29 << 8) + 8 | 0;\n     if ((HEAP32[$31 >> 2] | 0) > -1) if (+HEAPF64[$arHandle + 48 + ($i$29 << 8) + 40 >> 3] < .5) {\n      HEAP32[$31 >> 2] = -1;\n      $cfOK$0 = 0;\n     } else $cfOK$0 = 1; else $cfOK$0 = 1;\n     $37 = $arHandle + 48 + ($i$29 << 8) + 12 | 0;\n     if ((HEAP32[$37 >> 2] | 0) > -1) if (+HEAPF64[$arHandle + 48 + ($i$29 << 8) + 48 >> 3] < .5) {\n      HEAP32[$37 >> 2] = -1;\n      if (!$cfOK$0) HEAP32[$arHandle + 48 + ($i$29 << 8) + 236 >> 2] = 6;\n     }\n     $i$29 = $i$29 + 1 | 0;\n    } while (($i$29 | 0) < ($9 | 0));\n   }\n  }\n }\n return;\n}\n\nfunction ___stpcpy($d, $s) {\n $d = $d | 0;\n $s = $s | 0;\n var $$0$lcssa = 0, $$01$lcssa = 0, $$0115 = 0, $$016 = 0, $$03 = 0, $$1$ph = 0, $$12$ph = 0, $$128 = 0, $$19 = 0, $0 = 0, $10 = 0, $14 = 0, $20 = 0, $21 = 0, $22 = 0, $29 = 0, $32 = 0, $33 = 0, $7 = 0, $9 = 0, $wd$0$lcssa = 0, $wd$010 = 0, $ws$0$lcssa = 0, $ws$011 = 0, label = 0;\n $0 = $s;\n L1 : do if (!(($0 ^ $d) & 3)) {\n  if (!($0 & 3)) {\n   $$0$lcssa = $s;\n   $$01$lcssa = $d;\n  } else {\n   $$0115 = $d;\n   $$016 = $s;\n   while (1) {\n    $7 = HEAP8[$$016 >> 0] | 0;\n    HEAP8[$$0115 >> 0] = $7;\n    if (!($7 << 24 >> 24)) {\n     $$03 = $$0115;\n     break L1;\n    }\n    $9 = $$016 + 1 | 0;\n    $10 = $$0115 + 1 | 0;\n    if (!($9 & 3)) {\n     $$0$lcssa = $9;\n     $$01$lcssa = $10;\n     break;\n    } else {\n     $$0115 = $10;\n     $$016 = $9;\n    }\n   }\n  }\n  $14 = HEAP32[$$0$lcssa >> 2] | 0;\n  if (!(($14 & -2139062144 ^ -2139062144) & $14 + -16843009)) {\n   $22 = $14;\n   $wd$010 = $$01$lcssa;\n   $ws$011 = $$0$lcssa;\n   while (1) {\n    $20 = $ws$011 + 4 | 0;\n    $21 = $wd$010 + 4 | 0;\n    HEAP32[$wd$010 >> 2] = $22;\n    $22 = HEAP32[$20 >> 2] | 0;\n    if (($22 & -2139062144 ^ -2139062144) & $22 + -16843009) {\n     $wd$0$lcssa = $21;\n     $ws$0$lcssa = $20;\n     break;\n    } else {\n     $wd$010 = $21;\n     $ws$011 = $20;\n    }\n   }\n  } else {\n   $wd$0$lcssa = $$01$lcssa;\n   $ws$0$lcssa = $$0$lcssa;\n  }\n  $$1$ph = $ws$0$lcssa;\n  $$12$ph = $wd$0$lcssa;\n  label = 8;\n } else {\n  $$1$ph = $s;\n  $$12$ph = $d;\n  label = 8;\n } while (0);\n if ((label | 0) == 8) {\n  $29 = HEAP8[$$1$ph >> 0] | 0;\n  HEAP8[$$12$ph >> 0] = $29;\n  if (!($29 << 24 >> 24)) $$03 = $$12$ph; else {\n   $$128 = $$12$ph;\n   $$19 = $$1$ph;\n   while (1) {\n    $$19 = $$19 + 1 | 0;\n    $32 = $$128 + 1 | 0;\n    $33 = HEAP8[$$19 >> 0] | 0;\n    HEAP8[$32 >> 0] = $33;\n    if (!($33 << 24 >> 24)) {\n     $$03 = $32;\n     break;\n    } else $$128 = $32;\n   }\n  }\n }\n return $$03 | 0;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_118parse_template_argINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) {\n $first = $first | 0;\n $last = $last | 0;\n $db = $db | 0;\n var $$0 = 0, $10 = 0, $17 = 0, $21 = 0, $22 = 0, $3 = 0, $4 = 0, $t$0 = 0, $t$0$lcssa = 0, $t$0$looptemp = 0;\n L1 : do if (($first | 0) == ($last | 0)) $$0 = $first; else switch (HEAP8[$first >> 0] | 0) {\n case 88:\n  {\n   $3 = $first + 1 | 0;\n   $4 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($3, $last, $db) | 0;\n   if (($4 | 0) == ($3 | 0) | ($4 | 0) == ($last | 0)) {\n    $$0 = $first;\n    break L1;\n   }\n   $$0 = (HEAP8[$4 >> 0] | 0) == 69 ? $4 + 1 | 0 : $first;\n   break L1;\n   break;\n  }\n case 74:\n  {\n   $10 = $first + 1 | 0;\n   if (($10 | 0) == ($last | 0)) {\n    $$0 = $first;\n    break L1;\n   } else $t$0 = $10;\n   while (1) {\n    if ((HEAP8[$t$0 >> 0] | 0) == 69) {\n     $t$0$lcssa = $t$0;\n     break;\n    }\n    $t$0$looptemp = $t$0;\n    $t$0 = __ZN10__cxxabiv112_GLOBAL__N_118parse_template_argINS0_2DbEEEPKcS4_S4_RT_($t$0, $last, $db) | 0;\n    if (($t$0 | 0) == ($t$0$looptemp | 0)) {\n     $$0 = $first;\n     break L1;\n    }\n   }\n   $$0 = $t$0$lcssa + 1 | 0;\n   break L1;\n   break;\n  }\n case 76:\n  {\n   $17 = $first + 1 | 0;\n   if (($17 | 0) != ($last | 0)) if ((HEAP8[$17 >> 0] | 0) == 90) {\n    $21 = $first + 2 | 0;\n    $22 = __ZN10__cxxabiv112_GLOBAL__N_114parse_encodingINS0_2DbEEEPKcS4_S4_RT_($21, $last, $db) | 0;\n    if (($22 | 0) == ($21 | 0) | ($22 | 0) == ($last | 0)) {\n     $$0 = $first;\n     break L1;\n    }\n    return ((HEAP8[$22 >> 0] | 0) == 69 ? $22 + 1 | 0 : $first) | 0;\n   }\n   $$0 = __ZN10__cxxabiv112_GLOBAL__N_118parse_expr_primaryINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;\n   break L1;\n   break;\n  }\n default:\n  {\n   $$0 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;\n   break L1;\n  }\n } while (0);\n return $$0 | 0;\n}\n\nfunction _vfprintf($f, $fmt, $ap) {\n $f = $f | 0;\n $fmt = $fmt | 0;\n $ap = $ap | 0;\n var $$ = 0, $$0 = 0, $12 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $21 = 0, $22 = 0, $28 = 0, $33 = 0, $6 = 0, $7 = 0, $ap2 = 0, $internal_buf = 0, $nl_arg = 0, $nl_type = 0, $ret$1 = 0, dest = 0, sp = 0, stop = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 224 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $ap2 = sp + 80 | 0;\n $nl_type = sp + 96 | 0;\n $nl_arg = sp;\n $internal_buf = sp + 136 | 0;\n dest = $nl_type;\n stop = dest + 40 | 0;\n do {\n  HEAP32[dest >> 2] = 0;\n  dest = dest + 4 | 0;\n } while ((dest | 0) < (stop | 0));\n HEAP32[$ap2 >> 2] = HEAP32[$ap >> 2];\n if ((_printf_core(0, $fmt, $ap2, $nl_arg, $nl_type) | 0) < 0) $$0 = -1; else {\n  if ((HEAP32[$f + 76 >> 2] | 0) > -1) $33 = ___lockfile($f) | 0; else $33 = 0;\n  $6 = HEAP32[$f >> 2] | 0;\n  $7 = $6 & 32;\n  if ((HEAP8[$f + 74 >> 0] | 0) < 1) HEAP32[$f >> 2] = $6 & -33;\n  $12 = $f + 48 | 0;\n  if (!(HEAP32[$12 >> 2] | 0)) {\n   $16 = $f + 44 | 0;\n   $17 = HEAP32[$16 >> 2] | 0;\n   HEAP32[$16 >> 2] = $internal_buf;\n   $18 = $f + 28 | 0;\n   HEAP32[$18 >> 2] = $internal_buf;\n   $19 = $f + 20 | 0;\n   HEAP32[$19 >> 2] = $internal_buf;\n   HEAP32[$12 >> 2] = 80;\n   $21 = $f + 16 | 0;\n   HEAP32[$21 >> 2] = $internal_buf + 80;\n   $22 = _printf_core($f, $fmt, $ap2, $nl_arg, $nl_type) | 0;\n   if (!$17) $ret$1 = $22; else {\n    FUNCTION_TABLE_iiii[HEAP32[$f + 36 >> 2] & 15]($f, 0, 0) | 0;\n    $$ = (HEAP32[$19 >> 2] | 0) == 0 ? -1 : $22;\n    HEAP32[$16 >> 2] = $17;\n    HEAP32[$12 >> 2] = 0;\n    HEAP32[$21 >> 2] = 0;\n    HEAP32[$18 >> 2] = 0;\n    HEAP32[$19 >> 2] = 0;\n    $ret$1 = $$;\n   }\n  } else $ret$1 = _printf_core($f, $fmt, $ap2, $nl_arg, $nl_type) | 0;\n  $28 = HEAP32[$f >> 2] | 0;\n  HEAP32[$f >> 2] = $28 | $7;\n  if ($33) ___unlockfile($f);\n  $$0 = ($28 & 32 | 0) == 0 ? $ret$1 : -1;\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _get_vertex($x_coord, $y_coord, $st, $ed, $thresh, $vertex, $vnum) {\n $x_coord = $x_coord | 0;\n $y_coord = $y_coord | 0;\n $st = $st | 0;\n $ed = $ed | 0;\n $thresh = +$thresh;\n $vertex = $vertex | 0;\n $vnum = $vnum | 0;\n var $$0 = 0, $1 = 0, $11 = 0.0, $15 = 0.0, $16 = 0, $27 = 0.0, $28 = 0.0, $29 = 0, $3 = 0, $39 = 0, $5 = 0.0, $7 = 0, $9 = 0, $dmax$0$lcssa = 0.0, $dmax$01 = 0.0, $dmax$1 = 0.0, $i$02 = 0, $v1$0$lcssa = 0, $v1$03 = 0, $v1$1 = 0, label = 0;\n $1 = HEAP32[$y_coord + ($ed << 2) >> 2] | 0;\n $3 = HEAP32[$y_coord + ($st << 2) >> 2] | 0;\n $5 = +($1 - $3 | 0);\n $7 = HEAP32[$x_coord + ($st << 2) >> 2] | 0;\n $9 = HEAP32[$x_coord + ($ed << 2) >> 2] | 0;\n $11 = +($7 - $9 | 0);\n $15 = +((Math_imul($9, $3) | 0) - (Math_imul($7, $1) | 0) | 0);\n $16 = $st + 1 | 0;\n if (($16 | 0) < ($ed | 0)) {\n  $dmax$01 = 0.0;\n  $i$02 = $16;\n  $v1$03 = $16;\n  while (1) {\n   $27 = $15 + ($5 * +(HEAP32[$x_coord + ($i$02 << 2) >> 2] | 0) + $11 * +(HEAP32[$y_coord + ($i$02 << 2) >> 2] | 0));\n   $28 = $27 * $27;\n   $29 = $28 > $dmax$01;\n   $dmax$1 = $29 ? $28 : $dmax$01;\n   $v1$1 = $29 ? $i$02 : $v1$03;\n   $i$02 = $i$02 + 1 | 0;\n   if (($i$02 | 0) >= ($ed | 0)) {\n    $dmax$0$lcssa = $dmax$1;\n    $v1$0$lcssa = $v1$1;\n    break;\n   } else {\n    $dmax$01 = $dmax$1;\n    $v1$03 = $v1$1;\n   }\n  }\n } else {\n  $dmax$0$lcssa = 0.0;\n  $v1$0$lcssa = $16;\n }\n if ($dmax$0$lcssa / ($5 * $5 + $11 * $11) > $thresh) if ((_get_vertex($x_coord, $y_coord, $st, $v1$0$lcssa, $thresh, $vertex, $vnum) | 0) < 0) $$0 = -1; else {\n  $39 = HEAP32[$vnum >> 2] | 0;\n  if (($39 | 0) > 5) $$0 = -1; else {\n   HEAP32[$vertex + ($39 << 2) >> 2] = $v1$0$lcssa;\n   HEAP32[$vnum >> 2] = (HEAP32[$vnum >> 2] | 0) + 1;\n   if ((_get_vertex($x_coord, $y_coord, $v1$0$lcssa, $ed, $thresh, $vertex, $vnum) | 0) < 0) $$0 = -1; else label = 7;\n  }\n } else label = 7;\n if ((label | 0) == 7) $$0 = 0;\n return $$0 | 0;\n}\n\nfunction _setMarkerInfoVertex($id, $markerIndex) {\n $id = $id | 0;\n $markerIndex = $markerIndex | 0;\n var $$0 = 0, $0 = 0, $13 = 0.0, $15 = 0.0, $17 = 0.0, $19 = 0.0, $21 = 0.0, $23 = 0.0, $25 = 0.0, $27 = 0.0, $5 = 0, $6 = 0, $_ZL11gMarkerInfo$ = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $0 = sp;\n HEAP32[$0 >> 2] = $id;\n do if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = HEAP32[522] | 0; else {\n  $5 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0;\n  $6 = HEAP32[$5 >> 2] | 0;\n  if ((HEAP32[$6 + 44 >> 2] | 0) > ($markerIndex | 0)) {\n   $_ZL11gMarkerInfo$ = ($markerIndex | 0) < 0 ? 8 : $6 + 48 + ($markerIndex << 8) | 0;\n   $13 = +HEAPF64[33];\n   HEAPF64[$_ZL11gMarkerInfo$ + 168 >> 3] = $13;\n   $15 = +HEAPF64[34];\n   HEAPF64[$_ZL11gMarkerInfo$ + 176 >> 3] = $15;\n   $17 = +HEAPF64[35];\n   HEAPF64[$_ZL11gMarkerInfo$ + 184 >> 3] = $17;\n   $19 = +HEAPF64[36];\n   HEAPF64[$_ZL11gMarkerInfo$ + 192 >> 3] = $19;\n   $21 = +HEAPF64[37];\n   HEAPF64[$_ZL11gMarkerInfo$ + 200 >> 3] = $21;\n   $23 = +HEAPF64[38];\n   HEAPF64[$_ZL11gMarkerInfo$ + 208 >> 3] = $23;\n   $25 = +HEAPF64[39];\n   HEAPF64[$_ZL11gMarkerInfo$ + 216 >> 3] = $25;\n   $27 = +HEAPF64[40];\n   HEAPF64[$_ZL11gMarkerInfo$ + 224 >> 3] = $27;\n   HEAPF64[$_ZL11gMarkerInfo$ + 56 >> 3] = ($13 + $17 + $21 + $25) * .25;\n   HEAPF64[$_ZL11gMarkerInfo$ + 64 >> 3] = ($15 + $19 + $23 + $27) * .25;\n   $$0 = 0;\n   break;\n  } else {\n   $$0 = HEAP32[523] | 0;\n   break;\n  }\n } while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction ___stdio_read($f, $buf, $len) {\n $f = $f | 0;\n $buf = $buf | 0;\n $len = $len | 0;\n var $$0 = 0, $0 = 0, $1 = 0, $15 = 0, $2 = 0, $27 = 0, $30 = 0, $31 = 0, $32 = 0, $7 = 0, $cnt$0 = 0, $iov = 0, $vararg_buffer = 0, $vararg_buffer3 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 48 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer3 = sp + 16 | 0;\n $vararg_buffer = sp;\n $iov = sp + 32 | 0;\n HEAP32[$iov >> 2] = $buf;\n $0 = $iov + 4 | 0;\n $1 = $f + 48 | 0;\n $2 = HEAP32[$1 >> 2] | 0;\n HEAP32[$0 >> 2] = $len - (($2 | 0) != 0 & 1);\n $7 = $f + 44 | 0;\n HEAP32[$iov + 8 >> 2] = HEAP32[$7 >> 2];\n HEAP32[$iov + 12 >> 2] = $2;\n if (!(HEAP32[597] | 0)) {\n  HEAP32[$vararg_buffer3 >> 2] = HEAP32[$f + 60 >> 2];\n  HEAP32[$vararg_buffer3 + 4 >> 2] = $iov;\n  HEAP32[$vararg_buffer3 + 8 >> 2] = 2;\n  $cnt$0 = ___syscall_ret(___syscall145(145, $vararg_buffer3 | 0) | 0) | 0;\n } else {\n  _pthread_cleanup_push(13, $f | 0);\n  HEAP32[$vararg_buffer >> 2] = HEAP32[$f + 60 >> 2];\n  HEAP32[$vararg_buffer + 4 >> 2] = $iov;\n  HEAP32[$vararg_buffer + 8 >> 2] = 2;\n  $15 = ___syscall_ret(___syscall145(145, $vararg_buffer | 0) | 0) | 0;\n  _pthread_cleanup_pop(0);\n  $cnt$0 = $15;\n }\n if (($cnt$0 | 0) < 1) {\n  HEAP32[$f >> 2] = HEAP32[$f >> 2] | $cnt$0 & 48 ^ 16;\n  HEAP32[$f + 8 >> 2] = 0;\n  HEAP32[$f + 4 >> 2] = 0;\n  $$0 = $cnt$0;\n } else {\n  $27 = HEAP32[$0 >> 2] | 0;\n  if ($cnt$0 >>> 0 > $27 >>> 0) {\n   $30 = HEAP32[$7 >> 2] | 0;\n   $31 = $f + 4 | 0;\n   HEAP32[$31 >> 2] = $30;\n   $32 = $30;\n   HEAP32[$f + 8 >> 2] = $32 + ($cnt$0 - $27);\n   if (!(HEAP32[$1 >> 2] | 0)) $$0 = $len; else {\n    HEAP32[$31 >> 2] = $32 + 1;\n    HEAP8[$buf + ($len + -1) >> 0] = HEAP8[$32 >> 0] | 0;\n    $$0 = $len;\n   }\n  } else $$0 = $cnt$0;\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction __ZNK10__cxxabiv121__vmi_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib($this, $info, $dst_ptr, $current_ptr, $path_below, $use_strcmp) {\n $this = $this | 0;\n $info = $info | 0;\n $dst_ptr = $dst_ptr | 0;\n $current_ptr = $current_ptr | 0;\n $path_below = $path_below | 0;\n $use_strcmp = $use_strcmp | 0;\n var $10 = 0, $13 = 0, $14 = 0, $15 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $9 = 0, $p$0 = 0;\n if (($this | 0) == (HEAP32[$info + 8 >> 2] | 0)) __ZNK10__cxxabiv117__class_type_info29process_static_type_above_dstEPNS_19__dynamic_cast_infoEPKvS4_i(0, $info, $dst_ptr, $current_ptr, $path_below); else {\n  $3 = $info + 52 | 0;\n  $4 = HEAP8[$3 >> 0] | 0;\n  $5 = $info + 53 | 0;\n  $6 = HEAP8[$5 >> 0] | 0;\n  $9 = HEAP32[$this + 12 >> 2] | 0;\n  $10 = $this + 16 + ($9 << 3) | 0;\n  HEAP8[$3 >> 0] = 0;\n  HEAP8[$5 >> 0] = 0;\n  __ZNK10__cxxabiv122__base_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib($this + 16 | 0, $info, $dst_ptr, $current_ptr, $path_below, $use_strcmp);\n  L4 : do if (($9 | 0) > 1) {\n   $13 = $info + 24 | 0;\n   $14 = $this + 8 | 0;\n   $15 = $info + 54 | 0;\n   $p$0 = $this + 24 | 0;\n   do {\n    if (HEAP8[$15 >> 0] | 0) break L4;\n    if (!(HEAP8[$3 >> 0] | 0)) {\n     if (HEAP8[$5 >> 0] | 0) if (!(HEAP32[$14 >> 2] & 1)) break L4;\n    } else {\n     if ((HEAP32[$13 >> 2] | 0) == 1) break L4;\n     if (!(HEAP32[$14 >> 2] & 2)) break L4;\n    }\n    HEAP8[$3 >> 0] = 0;\n    HEAP8[$5 >> 0] = 0;\n    __ZNK10__cxxabiv122__base_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib($p$0, $info, $dst_ptr, $current_ptr, $path_below, $use_strcmp);\n    $p$0 = $p$0 + 8 | 0;\n   } while ($p$0 >>> 0 < $10 >>> 0);\n  } while (0);\n  HEAP8[$3 >> 0] = $4;\n  HEAP8[$5 >> 0] = $6;\n }\n return;\n}\n\nfunction _teardown($id) {\n $id = $id | 0;\n var $$0 = 0, $0 = 0, $10 = 0, $11 = 0, $13 = 0, $16 = 0, $3 = 0, $4 = 0, $5 = 0, $i$02 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $0 = sp;\n HEAP32[$0 >> 2] = $id;\n if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = -1; else {\n  $3 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0;\n  $4 = $3 + 196 | 0;\n  $5 = HEAP32[$4 >> 2] | 0;\n  if ($5) {\n   _free($5);\n   HEAP32[$4 >> 2] = 0;\n   HEAP32[$3 + 200 >> 2] = 0;\n  }\n  _deleteHandle($3);\n  _arPattDeleteHandle(HEAP32[$3 + 216 >> 2] | 0) | 0;\n  __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE14__erase_uniqueIiEEjRKT_(2044, $0) | 0;\n  $10 = $3 + 248 | 0;\n  $11 = $3 + 252 | 0;\n  $13 = HEAP32[$10 >> 2] | 0;\n  if ((HEAP32[$11 >> 2] | 0) != ($13 | 0)) {\n   $16 = $13;\n   $i$02 = 0;\n   do {\n    _arMultiFreeConfig(HEAP32[$16 + ($i$02 << 3) + 4 >> 2] | 0) | 0;\n    $i$02 = $i$02 + 1 | 0;\n    $16 = HEAP32[$10 >> 2] | 0;\n   } while ($i$02 >>> 0 < (HEAP32[$11 >> 2] | 0) - $16 >> 3 >>> 0);\n  }\n  __ZNSt3__113__vector_baseI12multi_markerNS_9allocatorIS1_EEED2Ev($10);\n  __ZdlPv($10);\n  __ZNSt3__113__vector_baseI12multi_markerNS_9allocatorIS1_EEED2Ev($3 + 248 | 0);\n  __ZdlPv($3);\n  $$0 = 0;\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_115parse_simple_idINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) {\n $first = $first | 0;\n $last = $last | 0;\n $db = $db | 0;\n var $$0 = 0, $1 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $20 = 0, $22 = 0, $3 = 0, $5 = 0, $6 = 0, $args = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $args = sp;\n if (($first | 0) == ($last | 0)) $$0 = $first; else {\n  $1 = __ZN10__cxxabiv112_GLOBAL__N_117parse_source_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;\n  if (($1 | 0) == ($first | 0)) $$0 = $first; else {\n   $3 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_($1, $last, $db) | 0;\n   if (($3 | 0) == ($1 | 0)) $$0 = $1; else {\n    $5 = $db + 4 | 0;\n    $6 = HEAP32[$5 >> 2] | 0;\n    if ((($6 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$0 = $first; else {\n     __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($args, $6 + -24 | 0);\n     $14 = HEAP32[$5 >> 2] | 0;\n     $15 = $14 + -24 | 0;\n     $17 = $14;\n     do {\n      $16 = $17 + -24 | 0;\n      HEAP32[$5 >> 2] = $16;\n      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($16);\n      $17 = HEAP32[$5 >> 2] | 0;\n     } while (($17 | 0) != ($15 | 0));\n     $20 = HEAP8[$args >> 0] | 0;\n     $22 = ($20 & 1) == 0;\n     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($14 + -48 | 0, $22 ? $args + 1 | 0 : HEAP32[$args + 8 >> 2] | 0, $22 ? ($20 & 255) >>> 1 : HEAP32[$args + 4 >> 2] | 0) | 0;\n     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($args);\n     $$0 = $3;\n    }\n   }\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arMatrixMul($dest, $a, $b) {\n $dest = $dest | 0;\n $a = $a | 0;\n $b = $b | 0;\n var $$0 = 0, $1 = 0, $11 = 0, $18 = 0, $19 = 0, $20 = 0, $29 = 0.0, $6 = 0, $c$04 = 0, $i$01 = 0, $p1$02 = 0, $p2$03 = 0, $p3$09 = 0, $p3$15 = 0, $r$08 = 0, $smax = 0;\n $1 = HEAP32[$a + 8 >> 2] | 0;\n if (($1 | 0) == (HEAP32[$b + 4 >> 2] | 0)) {\n  $6 = HEAP32[$dest + 4 >> 2] | 0;\n  if (($6 | 0) == (HEAP32[$a + 4 >> 2] | 0)) {\n   $11 = HEAP32[$dest + 8 >> 2] | 0;\n   if (($11 | 0) == (HEAP32[$b + 8 >> 2] | 0)) {\n    $smax = ($11 | 0) > 0 ? $11 : 0;\n    if (($6 | 0) > 0) {\n     $18 = ($11 | 0) > 0;\n     $19 = ($1 | 0) > 0;\n     $p3$09 = HEAP32[$dest >> 2] | 0;\n     $r$08 = 0;\n     while (1) {\n      $20 = Math_imul($1, $r$08) | 0;\n      if ($18) {\n       $c$04 = 0;\n       $p3$15 = $p3$09;\n       while (1) {\n        HEAPF64[$p3$15 >> 3] = 0.0;\n        if ($19) {\n         $29 = 0.0;\n         $i$01 = 0;\n         $p1$02 = (HEAP32[$a >> 2] | 0) + ($20 << 3) | 0;\n         $p2$03 = (HEAP32[$b >> 2] | 0) + ($c$04 << 3) | 0;\n         while (1) {\n          $29 = $29 + +HEAPF64[$p1$02 >> 3] * +HEAPF64[$p2$03 >> 3];\n          HEAPF64[$p3$15 >> 3] = $29;\n          $i$01 = $i$01 + 1 | 0;\n          if (($i$01 | 0) >= ($1 | 0)) break; else {\n           $p1$02 = $p1$02 + 8 | 0;\n           $p2$03 = $p2$03 + ($11 << 3) | 0;\n          }\n         }\n        }\n        $c$04 = $c$04 + 1 | 0;\n        if (($c$04 | 0) >= ($11 | 0)) break; else $p3$15 = $p3$15 + 8 | 0;\n       }\n      }\n      $r$08 = $r$08 + 1 | 0;\n      if (($r$08 | 0) >= ($6 | 0)) {\n       $$0 = 0;\n       break;\n      } else $p3$09 = $p3$09 + ($smax << 3) | 0;\n     }\n    } else $$0 = 0;\n   } else $$0 = -1;\n  } else $$0 = -1;\n } else $$0 = -1;\n return $$0 | 0;\n}\n\nfunction __ZNSt3__16vectorINS0_INS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEEENS4_IS8_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS8_RS9_EE($this, $__v) {\n $this = $this | 0;\n $__v = $__v | 0;\n var $$0$i1 = 0, $0 = 0, $1 = 0, $11 = 0, $14 = 0, $16 = 0, $2 = 0, $22 = 0, $24 = 0, $25 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $5 = 0, $6 = 0, $9 = 0, $$0$i1$looptemp = 0;\n $0 = HEAP32[$this >> 2] | 0;\n $1 = $this + 4 | 0;\n $2 = HEAP32[$1 >> 2] | 0;\n $3 = $__v + 4 | 0;\n if (($2 | 0) != ($0 | 0)) {\n  $$0$i1 = $2;\n  do {\n   $5 = HEAP32[$3 >> 2] | 0;\n   $6 = $5 + -16 | 0;\n   $$0$i1$looptemp = $$0$i1;\n   $$0$i1 = $$0$i1 + -16 | 0;\n   HEAP32[$6 >> 2] = 0;\n   $9 = $5 + -12 | 0;\n   HEAP32[$9 >> 2] = 0;\n   $11 = HEAP32[$$0$i1$looptemp + -4 >> 2] | 0;\n   HEAP32[$5 + -8 >> 2] = 0;\n   HEAP32[$5 + -4 >> 2] = $11;\n   HEAP32[$6 >> 2] = HEAP32[$$0$i1 >> 2];\n   $14 = $$0$i1$looptemp + -12 | 0;\n   HEAP32[$9 >> 2] = HEAP32[$14 >> 2];\n   $16 = $$0$i1$looptemp + -8 | 0;\n   HEAP32[$5 + -8 >> 2] = HEAP32[$16 >> 2];\n   HEAP32[$16 >> 2] = 0;\n   HEAP32[$14 >> 2] = 0;\n   HEAP32[$$0$i1 >> 2] = 0;\n   HEAP32[$3 >> 2] = (HEAP32[$3 >> 2] | 0) + -16;\n  } while (($$0$i1 | 0) != ($0 | 0));\n }\n $22 = HEAP32[$this >> 2] | 0;\n HEAP32[$this >> 2] = HEAP32[$3 >> 2];\n HEAP32[$3 >> 2] = $22;\n $24 = $__v + 8 | 0;\n $25 = HEAP32[$1 >> 2] | 0;\n HEAP32[$1 >> 2] = HEAP32[$24 >> 2];\n HEAP32[$24 >> 2] = $25;\n $27 = $this + 8 | 0;\n $28 = $__v + 12 | 0;\n $29 = HEAP32[$27 >> 2] | 0;\n HEAP32[$27 >> 2] = HEAP32[$28 >> 2];\n HEAP32[$28 >> 2] = $29;\n HEAP32[$__v >> 2] = HEAP32[$3 >> 2];\n return;\n}\n\nfunction _strspn($s, $c) {\n $s = $s | 0;\n $c = $c | 0;\n var $$0 = 0, $$028 = 0, $$03 = 0, $$03$lcssa = 0, $$1$lcssa = 0, $$16 = 0, $0 = 0, $11 = 0, $14 = 0, $18 = 0, $24 = 0, $33 = 0, $byteset = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 32 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $byteset = sp;\n HEAP32[$byteset >> 2] = 0;\n HEAP32[$byteset + 4 >> 2] = 0;\n HEAP32[$byteset + 8 >> 2] = 0;\n HEAP32[$byteset + 12 >> 2] = 0;\n HEAP32[$byteset + 16 >> 2] = 0;\n HEAP32[$byteset + 20 >> 2] = 0;\n HEAP32[$byteset + 24 >> 2] = 0;\n HEAP32[$byteset + 28 >> 2] = 0;\n $0 = HEAP8[$c >> 0] | 0;\n do if (!($0 << 24 >> 24)) $$0 = 0; else {\n  if (!(HEAP8[$c + 1 >> 0] | 0)) {\n   $$03 = $s;\n   while (1) if ((HEAP8[$$03 >> 0] | 0) == $0 << 24 >> 24) $$03 = $$03 + 1 | 0; else {\n    $$03$lcssa = $$03;\n    break;\n   }\n   $$0 = $$03$lcssa - $s | 0;\n   break;\n  } else {\n   $$028 = $c;\n   $14 = $0;\n  }\n  do {\n   $18 = $byteset + ((($14 & 255) >>> 5 & 255) << 2) | 0;\n   HEAP32[$18 >> 2] = HEAP32[$18 >> 2] | 1 << ($14 & 31);\n   $$028 = $$028 + 1 | 0;\n   $14 = HEAP8[$$028 >> 0] | 0;\n  } while ($14 << 24 >> 24 != 0);\n  $11 = HEAP8[$s >> 0] | 0;\n  L10 : do if (!($11 << 24 >> 24)) $$1$lcssa = $s; else {\n   $$16 = $s;\n   $24 = $11;\n   while (1) {\n    if (!(HEAP32[$byteset + ((($24 & 255) >>> 5 & 255) << 2) >> 2] & 1 << ($24 & 31))) {\n     $$1$lcssa = $$16;\n     break L10;\n    }\n    $33 = $$16 + 1 | 0;\n    $24 = HEAP8[$33 >> 0] | 0;\n    if (!($24 << 24 >> 24)) {\n     $$1$lcssa = $33;\n     break;\n    } else $$16 = $33;\n   }\n  } while (0);\n  $$0 = $$1$lcssa - $s | 0;\n } while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arLog($logLevel, $format, $varargs) {\n $logLevel = $logLevel | 0;\n $format = $format | 0;\n $varargs = $varargs | 0;\n var $12 = 0, $15 = 0, $16 = 0, $21 = 0, $29 = 0, $5 = 0, $7 = 0, $ap = 0, $buf = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 32 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $buf = sp + 16 | 0;\n $ap = sp;\n HEAP32[$buf >> 2] = 0;\n if (($format | 0) != 0 & (HEAP32[496] | 0) <= ($logLevel | 0)) if (HEAP8[$format >> 0] | 0) {\n  HEAP32[$ap >> 2] = $varargs;\n  $5 = _vasprintf($buf, $format, $ap) | 0;\n  if (($5 | 0) > -1) {\n   $7 = HEAP32[497] | 0;\n   do if (!$7) _fputs(HEAP32[$buf >> 2] | 0, HEAP32[659] | 0) | 0; else {\n    if (!(HEAP32[498] | 0)) {\n     FUNCTION_TABLE_vi[$7 & 15](HEAP32[$buf >> 2] | 0);\n     break;\n    }\n    $12 = _pthread_self() | 0;\n    $15 = HEAP32[500] | 0;\n    if (($12 | 0) == (HEAP32[499] | 0)) {\n     if (($15 | 0) > 0) {\n      FUNCTION_TABLE_vi[$7 & 15](HEAP32[502] | 0);\n      HEAP32[500] = 0;\n      $29 = HEAP32[497] | 0;\n     } else $29 = $7;\n     FUNCTION_TABLE_vi[$29 & 15](HEAP32[$buf >> 2] | 0);\n     break;\n    }\n    $16 = HEAP32[501] | 0;\n    if (($15 | 0) < ($16 | 0)) {\n     $21 = (HEAP32[502] | 0) + $15 | 0;\n     if (($5 | 0) < (-3 - $15 + $16 | 0)) {\n      _strcpy($21, HEAP32[$buf >> 2] | 0) | 0;\n      HEAP32[500] = (HEAP32[500] | 0) + $5;\n      break;\n     } else {\n      HEAP8[$21 >> 0] = 46;\n      HEAP8[$21 + 1 >> 0] = 46;\n      HEAP8[$21 + 2 >> 0] = 46;\n      HEAP8[$21 + 3 >> 0] = 0;\n      HEAP32[500] = HEAP32[501];\n      break;\n     }\n    }\n   } while (0);\n   _free(HEAP32[$buf >> 2] | 0);\n  }\n }\n STACKTOP = sp;\n return;\n}\n\nfunction __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($this, $__v) {\n $this = $this | 0;\n $__v = $__v | 0;\n var $$0$i1 = 0, $0 = 0, $1 = 0, $11 = 0, $14 = 0, $16 = 0, $2 = 0, $22 = 0, $24 = 0, $25 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $5 = 0, $6 = 0, $9 = 0, $$0$i1$looptemp = 0;\n $0 = HEAP32[$this >> 2] | 0;\n $1 = $this + 4 | 0;\n $2 = HEAP32[$1 >> 2] | 0;\n $3 = $__v + 4 | 0;\n if (($2 | 0) != ($0 | 0)) {\n  $$0$i1 = $2;\n  do {\n   $5 = HEAP32[$3 >> 2] | 0;\n   $6 = $5 + -16 | 0;\n   $$0$i1$looptemp = $$0$i1;\n   $$0$i1 = $$0$i1 + -16 | 0;\n   HEAP32[$6 >> 2] = 0;\n   $9 = $5 + -12 | 0;\n   HEAP32[$9 >> 2] = 0;\n   $11 = HEAP32[$$0$i1$looptemp + -4 >> 2] | 0;\n   HEAP32[$5 + -8 >> 2] = 0;\n   HEAP32[$5 + -4 >> 2] = $11;\n   HEAP32[$6 >> 2] = HEAP32[$$0$i1 >> 2];\n   $14 = $$0$i1$looptemp + -12 | 0;\n   HEAP32[$9 >> 2] = HEAP32[$14 >> 2];\n   $16 = $$0$i1$looptemp + -8 | 0;\n   HEAP32[$5 + -8 >> 2] = HEAP32[$16 >> 2];\n   HEAP32[$16 >> 2] = 0;\n   HEAP32[$14 >> 2] = 0;\n   HEAP32[$$0$i1 >> 2] = 0;\n   HEAP32[$3 >> 2] = (HEAP32[$3 >> 2] | 0) + -16;\n  } while (($$0$i1 | 0) != ($0 | 0));\n }\n $22 = HEAP32[$this >> 2] | 0;\n HEAP32[$this >> 2] = HEAP32[$3 >> 2];\n HEAP32[$3 >> 2] = $22;\n $24 = $__v + 8 | 0;\n $25 = HEAP32[$1 >> 2] | 0;\n HEAP32[$1 >> 2] = HEAP32[$24 >> 2];\n HEAP32[$24 >> 2] = $25;\n $27 = $this + 8 | 0;\n $28 = $__v + 12 | 0;\n $29 = HEAP32[$27 >> 2] | 0;\n HEAP32[$27 >> 2] = HEAP32[$28 >> 2];\n HEAP32[$28 >> 2] = $29;\n HEAP32[$__v >> 2] = HEAP32[$3 >> 2];\n return;\n}\n\nfunction _getMultiEachMarkerInfo($id, $multiMarkerId, $markerIndex) {\n $id = $id | 0;\n $multiMarkerId = $multiMarkerId | 0;\n $markerIndex = $markerIndex | 0;\n var $$0 = 0, $0 = 0, $17 = 0, $23 = 0, $4 = 0, $8 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $0 = sp;\n HEAP32[$0 >> 2] = $id;\n do if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = HEAP32[522] | 0; else {\n  $4 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0;\n  $8 = HEAP32[$4 + 248 >> 2] | 0;\n  if (($multiMarkerId | 0) < 0 ? 1 : (HEAP32[$4 + 252 >> 2] | 0) - $8 >> 3 >>> 0 <= $multiMarkerId >>> 0) {\n   $$0 = HEAP32[524] | 0;\n   break;\n  }\n  $17 = HEAP32[$8 + ($multiMarkerId << 3) + 4 >> 2] | 0;\n  if (($markerIndex | 0) < 0 ? 1 : (HEAP32[$17 + 4 >> 2] | 0) <= ($markerIndex | 0)) {\n   $$0 = HEAP32[523] | 0;\n   break;\n  } else {\n   $23 = HEAP32[$17 >> 2] | 0;\n   _matrixCopy($23 + ($markerIndex * 320 | 0) + 16 | 0, 264);\n   _emscripten_asm_const_4(0, HEAP32[$23 + ($markerIndex * 320 | 0) + 304 >> 2] | 0, HEAP32[$23 + ($markerIndex * 320 | 0) >> 2] | 0, HEAP32[$23 + ($markerIndex * 320 | 0) + 4 >> 2] | 0, +(+HEAPF64[$23 + ($markerIndex * 320 | 0) + 8 >> 3])) | 0;\n   $$0 = 0;\n   break;\n  }\n } while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendIPKcEENS_9enable_ifIXsr21__is_forward_iteratorIT_EE5valueERS7_E4typeESC_SC_($this, $__first, $__last) {\n $this = $this | 0;\n $__first = $__first | 0;\n $__last = $__last | 0;\n var $$03 = 0, $0 = 0, $1 = 0, $12 = 0, $15 = 0, $16 = 0, $21 = 0, $29 = 0, $34 = 0, $41 = 0, $8 = 0, $__p$04 = 0, $scevgep1 = 0;\n $0 = $__first;\n $1 = HEAP8[$this >> 0] | 0;\n if (!($1 & 1)) {\n  $15 = 10;\n  $16 = ($1 & 255) >>> 1;\n  $41 = $1;\n } else {\n  $8 = HEAP32[$this >> 2] | 0;\n  $15 = ($8 & -2) + -1 | 0;\n  $16 = HEAP32[$this + 4 >> 2] | 0;\n  $41 = $8 & 255;\n }\n $12 = $__last - $0 | 0;\n do if (($__last | 0) != ($__first | 0)) {\n  if (($15 - $16 | 0) >>> 0 < $12 >>> 0) {\n   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9__grow_byEjjjjjj($this, $15, $16 + $12 - $15 | 0, $16, $16, 0);\n   $21 = HEAP8[$this >> 0] | 0;\n  } else $21 = $41;\n  if (!($21 & 1)) $29 = $this + 1 | 0; else $29 = HEAP32[$this + 8 >> 2] | 0;\n  $scevgep1 = $__last + ($16 - $0) | 0;\n  if (($__first | 0) != ($__last | 0)) {\n   $$03 = $__first;\n   $__p$04 = $29 + $16 | 0;\n   while (1) {\n    HEAP8[$__p$04 >> 0] = HEAP8[$$03 >> 0] | 0;\n    $$03 = $$03 + 1 | 0;\n    if (($$03 | 0) == ($__last | 0)) break; else $__p$04 = $__p$04 + 1 | 0;\n   }\n  }\n  HEAP8[$29 + $scevgep1 >> 0] = 0;\n  $34 = $16 + $12 | 0;\n  if (!(HEAP8[$this >> 0] & 1)) {\n   HEAP8[$this >> 0] = $34 << 1;\n   break;\n  } else {\n   HEAP32[$this + 4 >> 2] = $34;\n   break;\n  }\n } while (0);\n return;\n}\n\nfunction _fread($destv, $size, $nmemb, $f) {\n $destv = $destv | 0;\n $size = $size | 0;\n $nmemb = $nmemb | 0;\n $f = $f | 0;\n var $$ = 0, $$0 = 0, $0 = 0, $13 = 0, $14 = 0, $17 = 0, $24 = 0, $28 = 0, $32 = 0, $5 = 0, $7 = 0, $dest$0$ph = 0, $dest$02 = 0, $l$0$ph = 0, $l$03 = 0, $l$03$lcssa = 0, label = 0;\n $0 = Math_imul($nmemb, $size) | 0;\n if ((HEAP32[$f + 76 >> 2] | 0) > -1) $32 = ___lockfile($f) | 0; else $32 = 0;\n $5 = $f + 74 | 0;\n $7 = HEAP8[$5 >> 0] | 0;\n HEAP8[$5 >> 0] = $7 + 255 | $7;\n $13 = $f + 4 | 0;\n $14 = HEAP32[$13 >> 2] | 0;\n $17 = (HEAP32[$f + 8 >> 2] | 0) - $14 | 0;\n if (($17 | 0) > 0) {\n  $$ = $17 >>> 0 < $0 >>> 0 ? $17 : $0;\n  _memcpy($destv | 0, $14 | 0, $$ | 0) | 0;\n  HEAP32[$13 >> 2] = $14 + $$;\n  $dest$0$ph = $destv + $$ | 0;\n  $l$0$ph = $0 - $$ | 0;\n } else {\n  $dest$0$ph = $destv;\n  $l$0$ph = $0;\n }\n L7 : do if (!$l$0$ph) label = 13; else {\n  $24 = $f + 32 | 0;\n  $dest$02 = $dest$0$ph;\n  $l$03 = $l$0$ph;\n  while (1) {\n   if (___toread($f) | 0) {\n    $l$03$lcssa = $l$03;\n    break;\n   }\n   $28 = FUNCTION_TABLE_iiii[HEAP32[$24 >> 2] & 15]($f, $dest$02, $l$03) | 0;\n   if (($28 + 1 | 0) >>> 0 < 2) {\n    $l$03$lcssa = $l$03;\n    break;\n   }\n   if (($l$03 | 0) == ($28 | 0)) {\n    label = 13;\n    break L7;\n   } else {\n    $dest$02 = $dest$02 + $28 | 0;\n    $l$03 = $l$03 - $28 | 0;\n   }\n  }\n  if ($32) ___unlockfile($f);\n  $$0 = (($0 - $l$03$lcssa | 0) >>> 0) / ($size >>> 0) | 0;\n } while (0);\n if ((label | 0) == 13) if (!$32) $$0 = $nmemb; else {\n  ___unlockfile($f);\n  $$0 = $nmemb;\n }\n return $$0 | 0;\n}\n\nfunction __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKcj($this, $__pos, $__s, $__n) {\n $this = $this | 0;\n $__pos = $__pos | 0;\n $__s = $__s | 0;\n $__n = $__n | 0;\n var $$1 = 0, $$pre$phiZ2D = 0, $0 = 0, $13 = 0, $17 = 0, $2 = 0, $23 = 0, $25 = 0, $31 = 0, $8 = 0, $9 = 0;\n $0 = HEAP8[$this >> 0] | 0;\n $2 = ($0 & 1) == 0;\n if ($2) $8 = ($0 & 255) >>> 1; else $8 = HEAP32[$this + 4 >> 2] | 0;\n if ($8 >>> 0 < $__pos >>> 0) __ZNKSt3__121__basic_string_commonILb1EE20__throw_out_of_rangeEv($this);\n if ($2) {\n  $13 = 10;\n  $17 = $0;\n } else {\n  $9 = HEAP32[$this >> 2] | 0;\n  $13 = ($9 & -2) + -1 | 0;\n  $17 = $9 & 255;\n }\n if (($13 - $8 | 0) >>> 0 < $__n >>> 0) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE21__grow_by_and_replaceEjjjjjjPKc($this, $13, $8 + $__n - $13 | 0, $8, $__pos, 0, $__n, $__s); else if ($__n) {\n  if (!($17 & 1)) $23 = $this + 1 | 0; else $23 = HEAP32[$this + 8 >> 2] | 0;\n  if (($8 | 0) == ($__pos | 0)) {\n   $$1 = $__s;\n   $$pre$phiZ2D = $23 + $__pos | 0;\n  } else {\n   $25 = $23 + $__pos | 0;\n   _memmove($23 + ($__n + $__pos) | 0, $25 | 0, $8 - $__pos | 0) | 0;\n   $$1 = $25 >>> 0 <= $__s >>> 0 & ($23 + $8 | 0) >>> 0 > $__s >>> 0 ? $__s + $__n | 0 : $__s;\n   $$pre$phiZ2D = $25;\n  }\n  _memmove($$pre$phiZ2D | 0, $$1 | 0, $__n | 0) | 0;\n  $31 = $8 + $__n | 0;\n  if (!(HEAP8[$this >> 0] & 1)) HEAP8[$this >> 0] = $31 << 1; else HEAP32[$this + 4 >> 2] = $31;\n  HEAP8[$23 + $31 >> 0] = 0;\n }\n return $this | 0;\n}\n\nfunction _arUtilMatInv($s, $d) {\n $s = $s | 0;\n $d = $d | 0;\n var $0 = 0, $1 = 0, $2 = 0, $22 = 0, $23 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $4 = 0, $5 = 0, $j$08 = 0, $j$16 = 0;\n $0 = _arMatrixAlloc(4, 4) | 0;\n $1 = HEAP32[$0 >> 2] | 0;\n $2 = HEAP32[$0 >> 2] | 0;\n $3 = HEAP32[$0 >> 2] | 0;\n $4 = HEAP32[$0 >> 2] | 0;\n $j$08 = 0;\n do {\n  $5 = $j$08 << 2;\n  HEAPF64[$1 + ($5 << 3) >> 3] = +HEAPF64[$s + ($j$08 << 5) >> 3];\n  HEAPF64[$2 + (1 + $5 << 3) >> 3] = +HEAPF64[$s + ($j$08 << 5) + 8 >> 3];\n  HEAPF64[$3 + (2 + $5 << 3) >> 3] = +HEAPF64[$s + ($j$08 << 5) + 16 >> 3];\n  HEAPF64[$4 + (3 + $5 << 3) >> 3] = +HEAPF64[$s + ($j$08 << 5) + 24 >> 3];\n  $j$08 = $j$08 + 1 | 0;\n } while (($j$08 | 0) != 3);\n $22 = HEAP32[$0 >> 2] | 0;\n $23 = $22 + 96 | 0;\n HEAP32[$23 >> 2] = 0;\n HEAP32[$23 + 4 >> 2] = 0;\n HEAP32[$23 + 8 >> 2] = 0;\n HEAP32[$23 + 12 >> 2] = 0;\n HEAP32[$23 + 16 >> 2] = 0;\n HEAP32[$23 + 20 >> 2] = 0;\n HEAPF64[$22 + 120 >> 3] = 1.0;\n _arMatrixSelfInv($0) | 0;\n $25 = HEAP32[$0 >> 2] | 0;\n $26 = HEAP32[$0 >> 2] | 0;\n $27 = HEAP32[$0 >> 2] | 0;\n $28 = HEAP32[$0 >> 2] | 0;\n $j$16 = 0;\n do {\n  $29 = $j$16 << 2;\n  HEAPF64[$d + ($j$16 << 5) >> 3] = +HEAPF64[$25 + ($29 << 3) >> 3];\n  HEAPF64[$d + ($j$16 << 5) + 8 >> 3] = +HEAPF64[$26 + (1 + $29 << 3) >> 3];\n  HEAPF64[$d + ($j$16 << 5) + 16 >> 3] = +HEAPF64[$27 + (2 + $29 << 3) >> 3];\n  HEAPF64[$d + ($j$16 << 5) + 24 >> 3] = +HEAPF64[$28 + (3 + $29 << 3) >> 3];\n  $j$16 = $j$16 + 1 | 0;\n } while (($j$16 | 0) != 3);\n _arMatrixFree($0) | 0;\n return 0;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_119parse_discriminatorEPKcS2_($first, $last) {\n $first = $first | 0;\n $last = $last | 0;\n var $$0 = 0, $$lcssa = 0, $1 = 0, $11 = 0, $3 = 0, $5 = 0, $9 = 0, $first$pn = 0, $t1$016 = 0, $t1$016$lcssa = 0, $t11$0 = 0;\n L1 : do if (($first | 0) == ($last | 0)) $$0 = $first; else {\n  $1 = HEAP8[$first >> 0] | 0;\n  if ($1 << 24 >> 24 != 95) {\n   if ((($1 << 24 >> 24) + -48 | 0) >>> 0 < 10) $first$pn = $first; else {\n    $$0 = $first;\n    break;\n   }\n   while (1) {\n    $t11$0 = $first$pn + 1 | 0;\n    if (($t11$0 | 0) == ($last | 0)) {\n     $$0 = $last;\n     break L1;\n    }\n    if (((HEAP8[$t11$0 >> 0] | 0) + -48 | 0) >>> 0 < 10) $first$pn = $t11$0; else {\n     $$0 = $t11$0;\n     break L1;\n    }\n   }\n  }\n  $3 = $first + 1 | 0;\n  if (($3 | 0) == ($last | 0)) $$0 = $first; else {\n   $5 = HEAP8[$3 >> 0] | 0;\n   if ((($5 << 24 >> 24) + -48 | 0) >>> 0 < 10) {\n    $$0 = $first + 2 | 0;\n    break;\n   }\n   if ($5 << 24 >> 24 == 95) {\n    $9 = $first + 2 | 0;\n    if (($9 | 0) == ($last | 0)) $$0 = $first; else {\n     $t1$016 = $9;\n     while (1) {\n      $11 = HEAP8[$t1$016 >> 0] | 0;\n      if ((($11 << 24 >> 24) + -48 | 0) >>> 0 >= 10) {\n       $$lcssa = $11;\n       $t1$016$lcssa = $t1$016;\n       break;\n      }\n      $t1$016 = $t1$016 + 1 | 0;\n      if (($t1$016 | 0) == ($last | 0)) {\n       $$0 = $first;\n       break L1;\n      }\n     }\n     return ($$lcssa << 24 >> 24 == 95 ? $t1$016$lcssa + 1 | 0 : $first) | 0;\n    }\n   } else $$0 = $first;\n  }\n } while (0);\n return $$0 | 0;\n}\n\nfunction __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE21__grow_by_and_replaceEjjjjjjPKc($this, $__old_cap, $__delta_cap, $__old_sz, $__n_copy, $__n_del, $__n_add, $__p_new_stuff) {\n $this = $this | 0;\n $__old_cap = $__old_cap | 0;\n $__delta_cap = $__delta_cap | 0;\n $__old_sz = $__old_sz | 0;\n $__n_copy = $__n_copy | 0;\n $__n_del = $__n_del | 0;\n $__n_add = $__n_add | 0;\n $__p_new_stuff = $__p_new_stuff | 0;\n var $10 = 0, $12 = 0, $17 = 0, $18 = 0, $20 = 0, $23 = 0, $31 = 0, $9 = 0;\n if ((-18 - $__old_cap | 0) >>> 0 < $__delta_cap >>> 0) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv($this);\n if (!(HEAP8[$this >> 0] & 1)) $20 = $this + 1 | 0; else $20 = HEAP32[$this + 8 >> 2] | 0;\n if ($__old_cap >>> 0 < 2147483623) {\n  $9 = $__delta_cap + $__old_cap | 0;\n  $10 = $__old_cap << 1;\n  $12 = $9 >>> 0 < $10 >>> 0 ? $10 : $9;\n  $17 = $12 >>> 0 < 11 ? 11 : $12 + 16 & -16;\n } else $17 = -17;\n $18 = _malloc($17) | 0;\n if ($__n_copy) _memcpy($18 | 0, $20 | 0, $__n_copy | 0) | 0;\n if ($__n_add) _memcpy($18 + $__n_copy | 0, $__p_new_stuff | 0, $__n_add | 0) | 0;\n $23 = $__old_sz - $__n_del | 0;\n if (($23 | 0) != ($__n_copy | 0)) _memcpy($18 + ($__n_add + $__n_copy) | 0, $20 + ($__n_del + $__n_copy) | 0, $23 - $__n_copy | 0) | 0;\n if (($__old_cap | 0) != 10) _free($20);\n HEAP32[$this + 8 >> 2] = $18;\n HEAP32[$this >> 2] = $17 | 1;\n $31 = $23 + $__n_add | 0;\n HEAP32[$this + 4 >> 2] = $31;\n HEAP8[$18 + $31 >> 0] = 0;\n return;\n}\n\nfunction _strcspn($s, $c) {\n $s = $s | 0;\n $c = $c | 0;\n var $$0 = 0, $$027 = 0, $$03$lcssa = 0, $$035 = 0, $0 = 0, $10 = 0, $13 = 0, $17 = 0, $23 = 0, $32 = 0, $byteset = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 32 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $byteset = sp;\n $0 = HEAP8[$c >> 0] | 0;\n if (!($0 << 24 >> 24)) label = 3; else if (!(HEAP8[$c + 1 >> 0] | 0)) label = 3; else {\n  HEAP32[$byteset >> 2] = 0;\n  HEAP32[$byteset + 4 >> 2] = 0;\n  HEAP32[$byteset + 8 >> 2] = 0;\n  HEAP32[$byteset + 12 >> 2] = 0;\n  HEAP32[$byteset + 16 >> 2] = 0;\n  HEAP32[$byteset + 20 >> 2] = 0;\n  HEAP32[$byteset + 24 >> 2] = 0;\n  HEAP32[$byteset + 28 >> 2] = 0;\n  $$027 = $c;\n  $13 = $0;\n  do {\n   $17 = $byteset + ((($13 & 255) >>> 5 & 255) << 2) | 0;\n   HEAP32[$17 >> 2] = HEAP32[$17 >> 2] | 1 << ($13 & 31);\n   $$027 = $$027 + 1 | 0;\n   $13 = HEAP8[$$027 >> 0] | 0;\n  } while ($13 << 24 >> 24 != 0);\n  $10 = HEAP8[$s >> 0] | 0;\n  L7 : do if (!($10 << 24 >> 24)) $$03$lcssa = $s; else {\n   $$035 = $s;\n   $23 = $10;\n   while (1) {\n    if (HEAP32[$byteset + ((($23 & 255) >>> 5 & 255) << 2) >> 2] & 1 << ($23 & 31)) {\n     $$03$lcssa = $$035;\n     break L7;\n    }\n    $32 = $$035 + 1 | 0;\n    $23 = HEAP8[$32 >> 0] | 0;\n    if (!($23 << 24 >> 24)) {\n     $$03$lcssa = $32;\n     break;\n    } else $$035 = $32;\n   }\n  } while (0);\n  $$0 = $$03$lcssa - $s | 0;\n }\n if ((label | 0) == 3) $$0 = (___strchrnul($s, $0 << 24 >> 24) | 0) - $s | 0;\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction ___strchrnul($s, $c) {\n $s = $s | 0;\n $c = $c | 0;\n var $$0 = 0, $$02$lcssa = 0, $$0211 = 0, $$1 = 0, $0 = 0, $11 = 0, $15 = 0, $16 = 0, $22 = 0, $23 = 0, $29 = 0, $36 = 0, $37 = 0, $5 = 0, $8 = 0, $w$0$lcssa = 0, $w$08 = 0;\n $0 = $c & 255;\n L1 : do if (!$0) $$0 = $s + (_strlen($s) | 0) | 0; else {\n  if (!($s & 3)) $$02$lcssa = $s; else {\n   $5 = $c & 255;\n   $$0211 = $s;\n   while (1) {\n    $8 = HEAP8[$$0211 >> 0] | 0;\n    if ($8 << 24 >> 24 == 0 ? 1 : $8 << 24 >> 24 == $5 << 24 >> 24) {\n     $$0 = $$0211;\n     break L1;\n    }\n    $11 = $$0211 + 1 | 0;\n    if (!($11 & 3)) {\n     $$02$lcssa = $11;\n     break;\n    } else $$0211 = $11;\n   }\n  }\n  $15 = Math_imul($0, 16843009) | 0;\n  $16 = HEAP32[$$02$lcssa >> 2] | 0;\n  L10 : do if (!(($16 & -2139062144 ^ -2139062144) & $16 + -16843009)) {\n   $23 = $16;\n   $w$08 = $$02$lcssa;\n   while (1) {\n    $22 = $23 ^ $15;\n    if (($22 & -2139062144 ^ -2139062144) & $22 + -16843009) {\n     $w$0$lcssa = $w$08;\n     break L10;\n    }\n    $29 = $w$08 + 4 | 0;\n    $23 = HEAP32[$29 >> 2] | 0;\n    if (($23 & -2139062144 ^ -2139062144) & $23 + -16843009) {\n     $w$0$lcssa = $29;\n     break;\n    } else $w$08 = $29;\n   }\n  } else $w$0$lcssa = $$02$lcssa; while (0);\n  $36 = $c & 255;\n  $$1 = $w$0$lcssa;\n  while (1) {\n   $37 = HEAP8[$$1 >> 0] | 0;\n   if ($37 << 24 >> 24 == 0 ? 1 : $37 << 24 >> 24 == $36 << 24 >> 24) {\n    $$0 = $$1;\n    break;\n   } else $$1 = $$1 + 1 | 0;\n  }\n } while (0);\n return $$0 | 0;\n}\n\nfunction _arGetTransMatRobust($handle, $initConv, $pos2d, $pos3d, $num, $conv) {\n $handle = $handle | 0;\n $initConv = $initConv | 0;\n $pos2d = $pos2d | 0;\n $pos3d = $pos3d | 0;\n $num = $num | 0;\n $conv = $conv | 0;\n var $1 = 0, $4 = 0, $5 = 0, $data = 0, $err = 0, $i$01 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 32 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $data = sp + 20 | 0;\n $err = sp;\n $1 = _malloc($num << 4) | 0;\n HEAP32[$data >> 2] = $1;\n if (!$1) {\n  _arLog(3, 5471, sp + 8 | 0);\n  _exit(1);\n }\n $4 = _malloc($num * 24 | 0) | 0;\n $5 = $data + 4 | 0;\n HEAP32[$5 >> 2] = $4;\n if (!$4) {\n  _arLog(3, 5471, sp + 16 | 0);\n  _exit(1);\n }\n if (($num | 0) > 0) {\n  $i$01 = 0;\n  do {\n   HEAPF64[$1 + ($i$01 << 4) >> 3] = +HEAPF64[$pos2d + ($i$01 << 4) >> 3];\n   HEAPF64[$1 + ($i$01 << 4) + 8 >> 3] = +HEAPF64[$pos2d + ($i$01 << 4) + 8 >> 3];\n   HEAPF64[$4 + ($i$01 * 24 | 0) >> 3] = +HEAPF64[$pos3d + ($i$01 * 24 | 0) >> 3];\n   HEAPF64[$4 + ($i$01 * 24 | 0) + 8 >> 3] = +HEAPF64[$pos3d + ($i$01 * 24 | 0) + 8 >> 3];\n   HEAPF64[$4 + ($i$01 * 24 | 0) + 16 >> 3] = +HEAPF64[$pos3d + ($i$01 * 24 | 0) + 16 >> 3];\n   $i$01 = $i$01 + 1 | 0;\n  } while (($i$01 | 0) < ($num | 0));\n }\n HEAP32[$data + 8 >> 2] = $num;\n if ((_icpPointRobust(HEAP32[$handle >> 2] | 0, $data, $initConv, $conv, $err) | 0) < 0) HEAPF64[$err >> 3] = 1.0e8;\n _free(HEAP32[$data >> 2] | 0);\n _free(HEAP32[$5 >> 2] | 0);\n STACKTOP = sp;\n return +(+HEAPF64[$err >> 3]);\n}\n\nfunction _arGetTransMat($handle, $initConv, $pos2d, $pos3d, $num, $conv) {\n $handle = $handle | 0;\n $initConv = $initConv | 0;\n $pos2d = $pos2d | 0;\n $pos3d = $pos3d | 0;\n $num = $num | 0;\n $conv = $conv | 0;\n var $1 = 0, $4 = 0, $5 = 0, $data = 0, $err = 0, $i$01 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 32 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $data = sp + 20 | 0;\n $err = sp;\n $1 = _malloc($num << 4) | 0;\n HEAP32[$data >> 2] = $1;\n if (!$1) {\n  _arLog(3, 5471, sp + 8 | 0);\n  _exit(1);\n }\n $4 = _malloc($num * 24 | 0) | 0;\n $5 = $data + 4 | 0;\n HEAP32[$5 >> 2] = $4;\n if (!$4) {\n  _arLog(3, 5471, sp + 16 | 0);\n  _exit(1);\n }\n if (($num | 0) > 0) {\n  $i$01 = 0;\n  do {\n   HEAPF64[$1 + ($i$01 << 4) >> 3] = +HEAPF64[$pos2d + ($i$01 << 4) >> 3];\n   HEAPF64[$1 + ($i$01 << 4) + 8 >> 3] = +HEAPF64[$pos2d + ($i$01 << 4) + 8 >> 3];\n   HEAPF64[$4 + ($i$01 * 24 | 0) >> 3] = +HEAPF64[$pos3d + ($i$01 * 24 | 0) >> 3];\n   HEAPF64[$4 + ($i$01 * 24 | 0) + 8 >> 3] = +HEAPF64[$pos3d + ($i$01 * 24 | 0) + 8 >> 3];\n   HEAPF64[$4 + ($i$01 * 24 | 0) + 16 >> 3] = +HEAPF64[$pos3d + ($i$01 * 24 | 0) + 16 >> 3];\n   $i$01 = $i$01 + 1 | 0;\n  } while (($i$01 | 0) < ($num | 0));\n }\n HEAP32[$data + 8 >> 2] = $num;\n if ((_icpPoint(HEAP32[$handle >> 2] | 0, $data, $initConv, $conv, $err) | 0) < 0) HEAPF64[$err >> 3] = 1.0e8;\n _free(HEAP32[$data >> 2] | 0);\n _free(HEAP32[$5 >> 2] | 0);\n STACKTOP = sp;\n return +(+HEAPF64[$err >> 3]);\n}\n\nfunction ___fwritex($s, $l, $f) {\n $s = $s | 0;\n $l = $l | 0;\n $f = $f | 0;\n var $$0 = 0, $$01 = 0, $$02 = 0, $0 = 0, $1 = 0, $19 = 0, $29 = 0, $5 = 0, $6 = 0, $8 = 0, $i$0 = 0, $i$0$lcssa10 = 0, $i$1 = 0, label = 0;\n $0 = $f + 16 | 0;\n $1 = HEAP32[$0 >> 2] | 0;\n if (!$1) if (!(___towrite($f) | 0)) {\n  $8 = HEAP32[$0 >> 2] | 0;\n  label = 4;\n } else $$0 = 0; else {\n  $8 = $1;\n  label = 4;\n }\n L4 : do if ((label | 0) == 4) {\n  $5 = $f + 20 | 0;\n  $6 = HEAP32[$5 >> 2] | 0;\n  if (($8 - $6 | 0) >>> 0 < $l >>> 0) {\n   $$0 = FUNCTION_TABLE_iiii[HEAP32[$f + 36 >> 2] & 15]($f, $s, $l) | 0;\n   break;\n  }\n  L9 : do if ((HEAP8[$f + 75 >> 0] | 0) > -1) {\n   $i$0 = $l;\n   while (1) {\n    if (!$i$0) {\n     $$01 = $l;\n     $$02 = $s;\n     $29 = $6;\n     $i$1 = 0;\n     break L9;\n    }\n    $19 = $i$0 + -1 | 0;\n    if ((HEAP8[$s + $19 >> 0] | 0) == 10) {\n     $i$0$lcssa10 = $i$0;\n     break;\n    } else $i$0 = $19;\n   }\n   if ((FUNCTION_TABLE_iiii[HEAP32[$f + 36 >> 2] & 15]($f, $s, $i$0$lcssa10) | 0) >>> 0 < $i$0$lcssa10 >>> 0) {\n    $$0 = $i$0$lcssa10;\n    break L4;\n   }\n   $$01 = $l - $i$0$lcssa10 | 0;\n   $$02 = $s + $i$0$lcssa10 | 0;\n   $29 = HEAP32[$5 >> 2] | 0;\n   $i$1 = $i$0$lcssa10;\n  } else {\n   $$01 = $l;\n   $$02 = $s;\n   $29 = $6;\n   $i$1 = 0;\n  } while (0);\n  _memcpy($29 | 0, $$02 | 0, $$01 | 0) | 0;\n  HEAP32[$5 >> 2] = (HEAP32[$5 >> 2] | 0) + $$01;\n  $$0 = $i$1 + $$01 | 0;\n } while (0);\n return $$0 | 0;\n}\n\nfunction ___shgetc($f) {\n $f = $f | 0;\n var $$0 = 0, $$phi$trans$insert = 0, $$pre = 0, $$pre4 = 0, $0 = 0, $1 = 0, $12 = 0, $14 = 0, $15 = 0, $21 = 0, $26 = 0, $28 = 0, $31 = 0, $36 = 0, $41 = 0, $6 = 0, $9 = 0, label = 0;\n $0 = $f + 104 | 0;\n $1 = HEAP32[$0 >> 2] | 0;\n if (!$1) label = 3; else if ((HEAP32[$f + 108 >> 2] | 0) < ($1 | 0)) label = 3; else label = 4;\n if ((label | 0) == 3) {\n  $6 = ___uflow($f) | 0;\n  if (($6 | 0) < 0) label = 4; else {\n   $9 = HEAP32[$0 >> 2] | 0;\n   $$phi$trans$insert = $f + 8 | 0;\n   if (!$9) {\n    $$pre = HEAP32[$$phi$trans$insert >> 2] | 0;\n    $26 = $$pre;\n    $41 = $$pre;\n    label = 9;\n   } else {\n    $12 = HEAP32[$$phi$trans$insert >> 2] | 0;\n    $14 = HEAP32[$f + 4 >> 2] | 0;\n    $15 = $12;\n    $21 = $9 - (HEAP32[$f + 108 >> 2] | 0) + -1 | 0;\n    if (($15 - $14 | 0) > ($21 | 0)) {\n     HEAP32[$f + 100 >> 2] = $14 + $21;\n     $28 = $12;\n    } else {\n     $26 = $15;\n     $41 = $12;\n     label = 9;\n    }\n   }\n   if ((label | 0) == 9) {\n    HEAP32[$f + 100 >> 2] = $26;\n    $28 = $41;\n   }\n   $$pre4 = HEAP32[$f + 4 >> 2] | 0;\n   if ($28) {\n    $31 = $f + 108 | 0;\n    HEAP32[$31 >> 2] = $28 + 1 - $$pre4 + (HEAP32[$31 >> 2] | 0);\n   }\n   $36 = $$pre4 + -1 | 0;\n   if ((HEAPU8[$36 >> 0] | 0 | 0) == ($6 | 0)) $$0 = $6; else {\n    HEAP8[$36 >> 0] = $6;\n    $$0 = $6;\n   }\n  }\n }\n if ((label | 0) == 4) {\n  HEAP32[$f + 100 >> 2] = 0;\n  $$0 = -1;\n }\n return $$0 | 0;\n}\n\nfunction _arSetLabelingThreshMode($handle, $mode) {\n $handle = $handle | 0;\n $mode = $mode | 0;\n var $$0 = 0, $1 = 0, $13 = 0, $4 = 0, $5 = 0, $mode1$0 = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer1 = sp + 8 | 0;\n $vararg_buffer = sp;\n if (!$handle) $$0 = -1; else {\n  $1 = $handle + 7062388 | 0;\n  if ((HEAP32[$1 >> 2] | 0) == ($mode | 0)) $$0 = 0; else {\n   $4 = $handle + 7062408 | 0;\n   $5 = HEAP32[$4 >> 2] | 0;\n   if ($5) {\n    _arImageProcFinal($5);\n    HEAP32[$4 >> 2] = 0;\n   }\n   switch ($mode | 0) {\n   case 3:\n   case 2:\n   case 1:\n    {\n     $13 = _arImageProcInit(HEAP32[$handle + 36 >> 2] | 0, HEAP32[$handle + 40 >> 2] | 0, HEAP32[$handle + 4 >> 2] | 0, 0) | 0;\n     HEAP32[$4 >> 2] = $13;\n     $mode1$0 = $mode;\n     break;\n    }\n   case 4:\n    {\n     HEAP32[$handle + 7062404 >> 2] = 1;\n     HEAP32[$handle + 7062400 >> 2] = 1;\n     $mode1$0 = 4;\n     break;\n    }\n   case 0:\n    {\n     $mode1$0 = 0;\n     break;\n    }\n   default:\n    {\n     _arLog(3, 3985, $vararg_buffer);\n     $mode1$0 = 0;\n    }\n   }\n   HEAP32[$1 >> 2] = $mode1$0;\n   if ((HEAP32[$handle >> 2] | 0) == 1) {\n    HEAP32[$vararg_buffer1 >> 2] = HEAP32[760 + ($mode1$0 << 2) >> 2];\n    _arLog(3, 4059, $vararg_buffer1);\n    $$0 = 0;\n   } else $$0 = 0;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _sift($head, $width, $cmp, $pshift, $lp) {\n $head = $head | 0;\n $width = $width | 0;\n $cmp = $cmp | 0;\n $pshift = $pshift | 0;\n $lp = $lp | 0;\n var $$0$be = 0, $$01$be = 0, $$012 = 0, $$03 = 0, $1 = 0, $14 = 0, $15 = 0, $2 = 0, $3 = 0, $6 = 0, $7 = 0, $ar = 0, $i$0$lcssa = 0, $i$04 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 240 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $ar = sp;\n HEAP32[$ar >> 2] = $head;\n L1 : do if (($pshift | 0) > 1) {\n  $1 = 0 - $width | 0;\n  $$012 = $pshift;\n  $$03 = $head;\n  $7 = $head;\n  $i$04 = 1;\n  while (1) {\n   $2 = $$03 + $1 | 0;\n   $3 = $$012 + -2 | 0;\n   $6 = $$03 + (0 - ((HEAP32[$lp + ($3 << 2) >> 2] | 0) + $width)) | 0;\n   if ((FUNCTION_TABLE_iii[$cmp & 15]($7, $6) | 0) > -1) if ((FUNCTION_TABLE_iii[$cmp & 15]($7, $2) | 0) > -1) {\n    $i$0$lcssa = $i$04;\n    break L1;\n   }\n   $14 = $i$04 + 1 | 0;\n   $15 = $ar + ($i$04 << 2) | 0;\n   if ((FUNCTION_TABLE_iii[$cmp & 15]($6, $2) | 0) > -1) {\n    HEAP32[$15 >> 2] = $6;\n    $$0$be = $6;\n    $$01$be = $$012 + -1 | 0;\n   } else {\n    HEAP32[$15 >> 2] = $2;\n    $$0$be = $2;\n    $$01$be = $3;\n   }\n   if (($$01$be | 0) <= 1) {\n    $i$0$lcssa = $14;\n    break L1;\n   }\n   $$012 = $$01$be;\n   $$03 = $$0$be;\n   $7 = HEAP32[$ar >> 2] | 0;\n   $i$04 = $14;\n  }\n } else $i$0$lcssa = 1; while (0);\n _cycle($width, $ar, $i$0$lcssa);\n STACKTOP = sp;\n return;\n}\n\nfunction _arCreateHandle($paramLT) {\n $paramLT = $paramLT | 0;\n var $0 = 0, $15 = 0, $18 = 0, $26 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $0 = _malloc(7062432) | 0;\n if (!$0) {\n  _arLog(3, 5471, sp);\n  _exit(1);\n }\n HEAP32[$0 >> 2] = 0;\n HEAP32[$0 + 4834148 >> 2] = 0;\n HEAP32[$0 + 7062408 >> 2] = 0;\n HEAP32[$0 + 4 >> 2] = -1;\n HEAP32[$0 + 8 >> 2] = 0;\n HEAP32[$0 + 12 >> 2] = 1;\n HEAP32[$0 + 16 >> 2] = 100;\n HEAP32[$0 + 20 >> 2] = 0;\n HEAP32[$0 + 24 >> 2] = 0;\n HEAP32[$0 + 28 >> 2] = 2;\n HEAPF64[$0 + 7062416 >> 3] = .5;\n HEAP32[$0 + 7062424 >> 2] = 3;\n HEAP32[$0 + 32 >> 2] = $paramLT;\n $15 = HEAP32[$paramLT >> 2] | 0;\n HEAP32[$0 + 36 >> 2] = $15;\n $18 = HEAP32[$paramLT + 4 >> 2] | 0;\n HEAP32[$0 + 40 >> 2] = $18;\n HEAP32[$0 + 44 >> 2] = 0;\n HEAP32[$0 + 15408 >> 2] = 0;\n HEAP32[$0 + 4834152 >> 2] = 0;\n HEAP32[$0 + 4818296 >> 2] = 0;\n $26 = _malloc(Math_imul($15 << 1, $18) | 0) | 0;\n HEAP32[$0 + 4834144 >> 2] = $26;\n if (!$26) {\n  _arLog(3, 5471, sp + 8 | 0);\n  _exit(1);\n } else {\n  HEAP32[$0 + 7062384 >> 2] = 0;\n  _arSetPixelFormat($0, 2) | 0;\n  _arSetDebugMode($0, 0) | 0;\n  HEAP32[$0 + 7062388 >> 2] = -1;\n  _arSetLabelingThreshMode($0, 0) | 0;\n  HEAP32[$0 + 7062392 >> 2] = 7;\n  HEAP32[$0 + 7062396 >> 2] = 0;\n  STACKTOP = sp;\n  return $0 | 0;\n }\n return 0;\n}\n\nfunction __ZNSt3__16vectorI12multi_markerNS_9allocatorIS1_EEE21__push_back_slow_pathIRKS1_EEvOT_($this, $__x) {\n $this = $this | 0;\n $__x = $__x | 0;\n var $$0$i = 0, $1 = 0, $13 = 0, $14 = 0, $17 = 0, $24 = 0, $25 = 0, $26 = 0, $3 = 0, $31 = 0, $32 = 0, $8 = 0, $__v = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 32 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $__v = sp;\n $1 = $this + 4 | 0;\n $3 = HEAP32[$this >> 2] | 0;\n $8 = ((HEAP32[$1 >> 2] | 0) - $3 >> 3) + 1 | 0;\n if ($8 >>> 0 > 536870911) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($this);\n $13 = $3;\n $14 = (HEAP32[$this + 8 >> 2] | 0) - $13 | 0;\n if ($14 >> 3 >>> 0 < 268435455) {\n  $17 = $14 >> 2;\n  $$0$i = $17 >>> 0 < $8 >>> 0 ? $8 : $17;\n } else $$0$i = 536870911;\n __ZNSt3__114__split_bufferI12multi_markerRNS_9allocatorIS1_EEEC2EjjS4_($__v, $$0$i, (HEAP32[$1 >> 2] | 0) - $13 >> 3, $this + 8 | 0);\n $24 = $__v + 8 | 0;\n $25 = HEAP32[$24 >> 2] | 0;\n $26 = $__x;\n $31 = HEAP32[$26 + 4 >> 2] | 0;\n $32 = $25;\n HEAP32[$32 >> 2] = HEAP32[$26 >> 2];\n HEAP32[$32 + 4 >> 2] = $31;\n HEAP32[$24 >> 2] = $25 + 8;\n __ZNSt3__16vectorI12multi_markerNS_9allocatorIS1_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS1_RS3_EE($this, $__v);\n __ZNSt3__114__split_bufferI12multi_markerRNS_9allocatorIS1_EEED2Ev($__v);\n STACKTOP = sp;\n return;\n}\n\nfunction __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE6rehashEj($this, $__n) {\n $this = $this | 0;\n $__n = $__n | 0;\n var $20 = 0, $27 = 0, $28 = 0, $30 = 0, $6 = 0, $__n1 = 0;\n if (($__n | 0) == 1) $__n1 = 2; else if (!($__n + -1 & $__n)) $__n1 = $__n; else $__n1 = __ZNSt3__112__next_primeEj($__n) | 0;\n $6 = HEAP32[$this + 4 >> 2] | 0;\n if ($__n1 >>> 0 > $6 >>> 0) __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE8__rehashEj($this, $__n1); else if ($__n1 >>> 0 < $6 >>> 0) {\n  if ($6 >>> 0 > 2) $30 = ($6 + -1 & $6 | 0) == 0; else $30 = 0;\n  $20 = ~~+Math_ceil(+(+((HEAP32[$this + 12 >> 2] | 0) >>> 0) / +HEAPF32[$this + 16 >> 2])) >>> 0;\n  if ($30) $27 = 1 << 32 - (Math_clz32($20 + -1 | 0) | 0); else $27 = __ZNSt3__112__next_primeEj($20) | 0;\n  $28 = $__n1 >>> 0 < $27 >>> 0 ? $27 : $__n1;\n  if ($28 >>> 0 < $6 >>> 0) __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE8__rehashEj($this, $28);\n }\n return;\n}\n\nfunction _vsnprintf($s, $n, $fmt, $ap) {\n $s = $s | 0;\n $n = $n | 0;\n $fmt = $fmt | 0;\n $ap = $ap | 0;\n var $$$02 = 0, $$0 = 0, $$01 = 0, $$02 = 0, $10 = 0, $11 = 0, $13 = 0, $15 = 0, $3 = 0, $5 = 0, $8 = 0, $b = 0, $f = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 128 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $b = sp + 112 | 0;\n $f = sp;\n dest = $f;\n src = 2684;\n stop = dest + 112 | 0;\n do {\n  HEAP32[dest >> 2] = HEAP32[src >> 2];\n  dest = dest + 4 | 0;\n  src = src + 4 | 0;\n } while ((dest | 0) < (stop | 0));\n if (($n + -1 | 0) >>> 0 > 2147483646) if (!$n) {\n  $$01 = $b;\n  $$02 = 1;\n  label = 4;\n } else {\n  $3 = ___errno_location() | 0;\n  HEAP32[$3 >> 2] = 75;\n  $$0 = -1;\n } else {\n  $$01 = $s;\n  $$02 = $n;\n  label = 4;\n }\n if ((label | 0) == 4) {\n  $5 = -2 - $$01 | 0;\n  $$$02 = $$02 >>> 0 > $5 >>> 0 ? $5 : $$02;\n  HEAP32[$f + 48 >> 2] = $$$02;\n  $8 = $f + 20 | 0;\n  HEAP32[$8 >> 2] = $$01;\n  HEAP32[$f + 44 >> 2] = $$01;\n  $10 = $$01 + $$$02 | 0;\n  $11 = $f + 16 | 0;\n  HEAP32[$11 >> 2] = $10;\n  HEAP32[$f + 28 >> 2] = $10;\n  $13 = _vfprintf($f, $fmt, $ap) | 0;\n  if (!$$$02) $$0 = $13; else {\n   $15 = HEAP32[$8 >> 2] | 0;\n   HEAP8[$15 + ((($15 | 0) == (HEAP32[$11 >> 2] | 0)) << 31 >> 31) >> 0] = 0;\n   $$0 = $13;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction __ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE6rehashEj($this, $__n) {\n $this = $this | 0;\n $__n = $__n | 0;\n var $20 = 0, $27 = 0, $28 = 0, $30 = 0, $6 = 0, $__n1 = 0;\n if (($__n | 0) == 1) $__n1 = 2; else if (!($__n + -1 & $__n)) $__n1 = $__n; else $__n1 = __ZNSt3__112__next_primeEj($__n) | 0;\n $6 = HEAP32[$this + 4 >> 2] | 0;\n if ($__n1 >>> 0 > $6 >>> 0) __ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE8__rehashEj($this, $__n1); else if ($__n1 >>> 0 < $6 >>> 0) {\n  if ($6 >>> 0 > 2) $30 = ($6 + -1 & $6 | 0) == 0; else $30 = 0;\n  $20 = ~~+Math_ceil(+(+((HEAP32[$this + 12 >> 2] | 0) >>> 0) / +HEAPF32[$this + 16 >> 2])) >>> 0;\n  if ($30) $27 = 1 << 32 - (Math_clz32($20 + -1 | 0) | 0); else $27 = __ZNSt3__112__next_primeEj($20) | 0;\n  $28 = $__n1 >>> 0 < $27 >>> 0 ? $27 : $__n1;\n  if ($28 >>> 0 < $6 >>> 0) __ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE8__rehashEj($this, $28);\n }\n return;\n}\n\nfunction _addMarker($id, $patt_name) {\n $id = $id | 0;\n $patt_name = $patt_name | 0;\n var $$0 = 0, $0 = 0, $11 = 0, $13 = 0, $14 = 0, $3 = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer1 = sp + 8 | 0;\n $vararg_buffer = sp;\n $0 = sp + 12 | 0;\n HEAP32[$0 >> 2] = $id;\n if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = -1; else {\n  $3 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0;\n  if (!(HEAP8[$patt_name >> 0] & 1)) $13 = $patt_name + 1 | 0; else $13 = HEAP32[$patt_name + 8 >> 2] | 0;\n  $11 = $3 + 216 | 0;\n  $14 = _arPattLoad(HEAP32[$11 >> 2] | 0, $13) | 0;\n  HEAP32[$3 + 260 >> 2] = $14;\n  if (($14 | 0) < 0) {\n   HEAP32[$vararg_buffer >> 2] = $13;\n   _arLog(3, 6311, $vararg_buffer);\n   _arPattDeleteHandle(HEAP32[$11 >> 2] | 0) | 0;\n   _arLog(3, 6357, $vararg_buffer1);\n   $$0 = -1;\n  } else $$0 = $14;\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _icpGetDeltaS($S, $dU, $J_U_S, $n) {\n $S = $S | 0;\n $dU = $dU | 0;\n $J_U_S = $J_U_S | 0;\n $n = $n | 0;\n var $$0 = 0, $10 = 0, $6 = 0, $8 = 0, $matJ = 0, $matS = 0, $matU = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 48 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $matS = sp + 24 | 0;\n $matU = sp + 12 | 0;\n $matJ = sp;\n HEAP32[$matS + 4 >> 2] = 6;\n HEAP32[$matS + 8 >> 2] = 1;\n HEAP32[$matS >> 2] = $S;\n HEAP32[$matU + 4 >> 2] = $n;\n HEAP32[$matU + 8 >> 2] = 1;\n HEAP32[$matU >> 2] = $dU;\n HEAP32[$matJ + 4 >> 2] = $n;\n HEAP32[$matJ + 8 >> 2] = 6;\n HEAP32[$matJ >> 2] = $J_U_S;\n $6 = _arMatrixAllocTrans($matJ) | 0;\n do if (!$6) $$0 = -1; else {\n  $8 = _arMatrixAllocMul($6, $matJ) | 0;\n  if (!$8) {\n   _arMatrixFree($6) | 0;\n   $$0 = -1;\n   break;\n  }\n  $10 = _arMatrixAllocMul($6, $matU) | 0;\n  if (!$10) {\n   _arMatrixFree($6) | 0;\n   _arMatrixFree($8) | 0;\n   $$0 = -1;\n   break;\n  }\n  if ((_arMatrixSelfInv($8) | 0) < 0) {\n   _arMatrixFree($6) | 0;\n   _arMatrixFree($8) | 0;\n   _arMatrixFree($10) | 0;\n   $$0 = -1;\n   break;\n  } else {\n   _arMatrixMul($matS, $8, $10) | 0;\n   _arMatrixFree($6) | 0;\n   _arMatrixFree($8) | 0;\n   _arMatrixFree($10) | 0;\n   $$0 = 0;\n   break;\n  }\n } while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _getTransMatMultiSquareRobust($id, $multiMarkerId) {\n $id = $id | 0;\n $multiMarkerId = $multiMarkerId | 0;\n var $$0 = 0, $0 = 0, $17 = 0, $21 = 0, $4 = 0, $8 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $0 = sp;\n HEAP32[$0 >> 2] = $id;\n do if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = HEAP32[522] | 0; else {\n  $4 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0;\n  $8 = HEAP32[$4 + 248 >> 2] | 0;\n  if (($multiMarkerId | 0) < 0 ? 1 : (HEAP32[$4 + 252 >> 2] | 0) - $8 >> 3 >>> 0 <= $multiMarkerId >>> 0) {\n   $$0 = HEAP32[524] | 0;\n   break;\n  } else {\n   $17 = HEAP32[$8 + ($multiMarkerId << 3) + 4 >> 2] | 0;\n   $21 = HEAP32[$4 + 212 >> 2] | 0;\n   +_arGetTransMatMultiSquareRobust(HEAP32[$4 + 224 >> 2] | 0, $21 + 48 | 0, HEAP32[$21 + 44 >> 2] | 0, $17);\n   _matrixCopy($17 + 8 | 0, 264);\n   $$0 = 0;\n   break;\n  }\n } while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arImageProcLumaHistAndCDFAndPercentile($ipi, $dataPtr, $percentile, $value_p) {\n $ipi = $ipi | 0;\n $dataPtr = $dataPtr | 0;\n $percentile = +$percentile;\n $value_p = $value_p | 0;\n var $$0 = 0, $$in = 0, $$lcssa10 = 0, $$lcssa9 = 0, $11 = 0, $12 = 0, $14 = 0, $18 = 0, $2 = 0, $i$0 = 0, $i$0$lcssa = 0, $j$0$lcssa = 0;\n if ($percentile < 0.0 | $percentile > 1.0) $$0 = -1; else {\n  $2 = _arImageProcLumaHistAndCDF($ipi, $dataPtr) | 0;\n  if (($2 | 0) < 0) $$0 = $2; else {\n   $11 = ~~(+(Math_imul(HEAP32[$ipi + 12 >> 2] | 0, HEAP32[$ipi + 8 >> 2] | 0) | 0) * $percentile) >>> 0;\n   $i$0 = 0;\n   while (1) {\n    $12 = $i$0 & 255;\n    $14 = HEAP32[$ipi + 1040 + ($12 << 2) >> 2] | 0;\n    if ($14 >>> 0 < $11 >>> 0) $i$0 = $i$0 + 1 << 24 >> 24; else {\n     $$lcssa10 = $14;\n     $$lcssa9 = $12;\n     $i$0$lcssa = $i$0;\n     break;\n    }\n   }\n   if (($$lcssa10 | 0) == ($11 | 0)) {\n    $$in = $i$0$lcssa;\n    while (1) {\n     $18 = $$in + 1 << 24 >> 24;\n     if ((HEAP32[$ipi + 1040 + (($18 & 255) << 2) >> 2] | 0) == ($11 | 0)) $$in = $18; else {\n      $j$0$lcssa = $18;\n      break;\n     }\n    }\n   } else $j$0$lcssa = $i$0$lcssa;\n   HEAP8[$value_p >> 0] = (($j$0$lcssa & 255) + $$lcssa9 | 0) >>> 1;\n   $$0 = 0;\n  }\n }\n return $$0 | 0;\n}\n\nfunction _getTransMatMultiSquare($id, $multiMarkerId) {\n $id = $id | 0;\n $multiMarkerId = $multiMarkerId | 0;\n var $$0 = 0, $0 = 0, $17 = 0, $21 = 0, $4 = 0, $8 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $0 = sp;\n HEAP32[$0 >> 2] = $id;\n do if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = HEAP32[522] | 0; else {\n  $4 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0;\n  $8 = HEAP32[$4 + 248 >> 2] | 0;\n  if (($multiMarkerId | 0) < 0 ? 1 : (HEAP32[$4 + 252 >> 2] | 0) - $8 >> 3 >>> 0 <= $multiMarkerId >>> 0) {\n   $$0 = HEAP32[524] | 0;\n   break;\n  } else {\n   $17 = HEAP32[$8 + ($multiMarkerId << 3) + 4 >> 2] | 0;\n   $21 = HEAP32[$4 + 212 >> 2] | 0;\n   +_arGetTransMatMultiSquare(HEAP32[$4 + 224 >> 2] | 0, $21 + 48 | 0, HEAP32[$21 + 44 >> 2] | 0, $17);\n   _matrixCopy($17 + 8 | 0, 264);\n   $$0 = 0;\n   break;\n  }\n } while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arPattDeleteHandle($pattHandle) {\n $pattHandle = $pattHandle | 0;\n var $$0 = 0, $1 = 0, $11 = 0, $18 = 0, $2 = 0, $25 = 0, $3 = 0, $32 = 0, $4 = 0, $i$03 = 0;\n if (!$pattHandle) $$0 = -1; else {\n  $1 = $pattHandle + 4 | 0;\n  $2 = $pattHandle + 8 | 0;\n  $3 = $pattHandle + 12 | 0;\n  $4 = $pattHandle + 20 | 0;\n  if ((HEAP32[$1 >> 2] | 0) > 0) {\n   $i$03 = 0;\n   do {\n    if (HEAP32[(HEAP32[$2 >> 2] | 0) + ($i$03 << 2) >> 2] | 0) _arPattFree($pattHandle, $i$03) | 0;\n    $11 = $i$03 << 2;\n    _free(HEAP32[(HEAP32[$3 >> 2] | 0) + ($11 << 2) >> 2] | 0);\n    _free(HEAP32[(HEAP32[$4 >> 2] | 0) + ($11 << 2) >> 2] | 0);\n    $18 = 1 + $11 | 0;\n    _free(HEAP32[(HEAP32[$3 >> 2] | 0) + ($18 << 2) >> 2] | 0);\n    _free(HEAP32[(HEAP32[$4 >> 2] | 0) + ($18 << 2) >> 2] | 0);\n    $25 = 2 + $11 | 0;\n    _free(HEAP32[(HEAP32[$3 >> 2] | 0) + ($25 << 2) >> 2] | 0);\n    _free(HEAP32[(HEAP32[$4 >> 2] | 0) + ($25 << 2) >> 2] | 0);\n    $32 = 3 + $11 | 0;\n    _free(HEAP32[(HEAP32[$3 >> 2] | 0) + ($32 << 2) >> 2] | 0);\n    _free(HEAP32[(HEAP32[$4 >> 2] | 0) + ($32 << 2) >> 2] | 0);\n    $i$03 = $i$03 + 1 | 0;\n   } while (($i$03 | 0) < (HEAP32[$1 >> 2] | 0));\n  }\n  _free($pattHandle);\n  $$0 = 0;\n }\n return $$0 | 0;\n}\n\nfunction _atoi($s) {\n $s = $s | 0;\n var $$0 = 0, $$0$lcssa = 0, $$1$ph = 0, $$13 = 0, $$lcssa9 = 0, $11 = 0, $4 = 0, $5 = 0, $8 = 0, $isdigittmp1 = 0, $isdigittmp5 = 0, $n$0$lcssa = 0, $n$04 = 0, $neg$0 = 0, $neg$1$ph = 0, label = 0;\n $$0 = $s;\n while (1) {\n  $4 = $$0 + 1 | 0;\n  if (!(_isspace(HEAP8[$$0 >> 0] | 0) | 0)) {\n   $$0$lcssa = $$0;\n   $$lcssa9 = $4;\n   break;\n  } else $$0 = $4;\n }\n $5 = HEAP8[$$0$lcssa >> 0] | 0;\n switch ($5 << 24 >> 24 | 0) {\n case 45:\n  {\n   $neg$0 = 1;\n   label = 5;\n   break;\n  }\n case 43:\n  {\n   $neg$0 = 0;\n   label = 5;\n   break;\n  }\n default:\n  {\n   $$1$ph = $$0$lcssa;\n   $8 = $5;\n   $neg$1$ph = 0;\n  }\n }\n if ((label | 0) == 5) {\n  $$1$ph = $$lcssa9;\n  $8 = HEAP8[$$lcssa9 >> 0] | 0;\n  $neg$1$ph = $neg$0;\n }\n $isdigittmp1 = ($8 << 24 >> 24) + -48 | 0;\n if ($isdigittmp1 >>> 0 < 10) {\n  $$13 = $$1$ph;\n  $isdigittmp5 = $isdigittmp1;\n  $n$04 = 0;\n  while (1) {\n   $$13 = $$13 + 1 | 0;\n   $11 = ($n$04 * 10 | 0) - $isdigittmp5 | 0;\n   $isdigittmp5 = (HEAP8[$$13 >> 0] | 0) + -48 | 0;\n   if ($isdigittmp5 >>> 0 >= 10) {\n    $n$0$lcssa = $11;\n    break;\n   } else $n$04 = $11;\n  }\n } else $n$0$lcssa = 0;\n return (($neg$1$ph | 0) != 0 ? $n$0$lcssa : 0 - $n$0$lcssa | 0) | 0;\n}\n\nfunction __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_($this, $__k) {\n $this = $this | 0;\n $__k = $__k | 0;\n var $$pn3 = 0, $0 = 0, $1 = 0, $5 = 0, $__h = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 32 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $__h = sp + 8 | 0;\n $0 = sp;\n $1 = __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_($this, $__k) | 0;\n if (!$1) {\n  __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEE25__construct_node_with_keyERS8_($__h, $this, $__k);\n  __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE20__node_insert_uniqueEPNS_11__hash_nodeIS3_PvEE($0, $this, HEAP32[$__h >> 2] | 0);\n  $5 = HEAP32[$0 >> 2] | 0;\n  HEAP32[$__h >> 2] = 0;\n  $$pn3 = $5;\n } else $$pn3 = $1;\n STACKTOP = sp;\n return $$pn3 + 16 | 0;\n}\n\nfunction __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9push_backEc($this, $__c) {\n $this = $this | 0;\n $__c = $__c | 0;\n var $$pn = 0, $0 = 0, $19 = 0, $2 = 0, $20 = 0, $__cap$0 = 0, $__p$0$sum$pre$phiZZZ2D = 0, $__sz$0 = 0, label = 0;\n $0 = HEAP8[$this >> 0] | 0;\n $2 = ($0 & 1) != 0;\n if ($2) {\n  $__cap$0 = (HEAP32[$this >> 2] & -2) + -1 | 0;\n  $__sz$0 = HEAP32[$this + 4 >> 2] | 0;\n } else {\n  $__cap$0 = 10;\n  $__sz$0 = ($0 & 255) >>> 1;\n }\n if (($__sz$0 | 0) == ($__cap$0 | 0)) {\n  __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9__grow_byEjjjjjj($this, $__cap$0, 1, $__cap$0, $__cap$0, 0);\n  if (!(HEAP8[$this >> 0] & 1)) label = 7; else label = 8;\n } else if ($2) label = 8; else label = 7;\n if ((label | 0) == 7) {\n  HEAP8[$this >> 0] = ($__sz$0 << 1) + 2;\n  $$pn = $this + 1 | 0;\n  $__p$0$sum$pre$phiZZZ2D = $__sz$0 + 1 | 0;\n } else if ((label | 0) == 8) {\n  $19 = HEAP32[$this + 8 >> 2] | 0;\n  $20 = $__sz$0 + 1 | 0;\n  HEAP32[$this + 4 >> 2] = $20;\n  $$pn = $19;\n  $__p$0$sum$pre$phiZZZ2D = $20;\n }\n HEAP8[$$pn + $__sz$0 >> 0] = $__c;\n HEAP8[$$pn + $__p$0$sum$pre$phiZZZ2D >> 0] = 0;\n return;\n}\n\nfunction __ZNK10__cxxabiv117__class_type_info29process_static_type_above_dstEPNS_19__dynamic_cast_infoEPKvS4_i($this, $info, $dst_ptr, $current_ptr, $path_below) {\n $this = $this | 0;\n $info = $info | 0;\n $dst_ptr = $dst_ptr | 0;\n $current_ptr = $current_ptr | 0;\n $path_below = $path_below | 0;\n var $16 = 0, $17 = 0, $23 = 0, $25 = 0, $5 = 0, $6 = 0;\n HEAP8[$info + 53 >> 0] = 1;\n do if ((HEAP32[$info + 4 >> 2] | 0) == ($current_ptr | 0)) {\n  HEAP8[$info + 52 >> 0] = 1;\n  $5 = $info + 16 | 0;\n  $6 = HEAP32[$5 >> 2] | 0;\n  if (!$6) {\n   HEAP32[$5 >> 2] = $dst_ptr;\n   HEAP32[$info + 24 >> 2] = $path_below;\n   HEAP32[$info + 36 >> 2] = 1;\n   if (!(($path_below | 0) == 1 ? (HEAP32[$info + 48 >> 2] | 0) == 1 : 0)) break;\n   HEAP8[$info + 54 >> 0] = 1;\n   break;\n  }\n  if (($6 | 0) != ($dst_ptr | 0)) {\n   $25 = $info + 36 | 0;\n   HEAP32[$25 >> 2] = (HEAP32[$25 >> 2] | 0) + 1;\n   HEAP8[$info + 54 >> 0] = 1;\n   break;\n  }\n  $16 = $info + 24 | 0;\n  $17 = HEAP32[$16 >> 2] | 0;\n  if (($17 | 0) == 2) {\n   HEAP32[$16 >> 2] = $path_below;\n   $23 = $path_below;\n  } else $23 = $17;\n  if (($23 | 0) == 1 ? (HEAP32[$info + 48 >> 2] | 0) == 1 : 0) HEAP8[$info + 54 >> 0] = 1;\n } while (0);\n return;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_117parse_call_offsetEPKcS2_($first, $last) {\n $first = $first | 0;\n $last = $last | 0;\n var $$0 = 0, $10 = 0, $11 = 0, $16 = 0, $17 = 0, $3 = 0, $4 = 0;\n L1 : do if (($first | 0) == ($last | 0)) $$0 = $first; else {\n  switch (HEAP8[$first >> 0] | 0) {\n  case 104:\n   {\n    $3 = $first + 1 | 0;\n    $4 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_($3, $last) | 0;\n    if (($4 | 0) == ($3 | 0) | ($4 | 0) == ($last | 0)) {\n     $$0 = $first;\n     break L1;\n    }\n    $$0 = (HEAP8[$4 >> 0] | 0) == 95 ? $4 + 1 | 0 : $first;\n    break L1;\n    break;\n   }\n  case 118:\n   break;\n  default:\n   {\n    $$0 = $first;\n    break L1;\n   }\n  }\n  $10 = $first + 1 | 0;\n  $11 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_($10, $last) | 0;\n  if (($11 | 0) == ($10 | 0) | ($11 | 0) == ($last | 0)) $$0 = $first; else if ((HEAP8[$11 >> 0] | 0) == 95) {\n   $16 = $11 + 1 | 0;\n   $17 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_($16, $last) | 0;\n   if (($17 | 0) == ($16 | 0) | ($17 | 0) == ($last | 0)) $$0 = $first; else return ((HEAP8[$17 >> 0] | 0) == 95 ? $17 + 1 | 0 : $first) | 0;\n  } else $$0 = $first;\n } while (0);\n return $$0 | 0;\n}\n\nfunction _setup($width, $height, $cameraID) {\n $width = $width | 0;\n $height = $height | 0;\n $cameraID = $cameraID | 0;\n var $0 = 0, $10 = 0, $2 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $id = 0, $vararg_buffer1 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer1 = sp + 8 | 0;\n $id = sp + 12 | 0;\n $0 = HEAP32[525] | 0;\n HEAP32[525] = $0 + 1;\n HEAP32[$id >> 2] = $0;\n $2 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $id) | 0;\n HEAP32[$2 >> 2] = $0;\n HEAP32[$2 + 204 >> 2] = $width;\n HEAP32[$2 + 208 >> 2] = $height;\n $6 = Math_imul($width << 2, $height) | 0;\n $7 = $2 + 200 | 0;\n HEAP32[$7 >> 2] = $6;\n $8 = _malloc($6) | 0;\n $9 = $2 + 196 | 0;\n HEAP32[$9 >> 2] = $8;\n $10 = _arPattCreateHandle() | 0;\n HEAP32[$2 + 216 >> 2] = $10;\n if (!$10) _arLog(3, 8284, sp);\n _setCamera($0, $cameraID) | 0;\n HEAP32[$vararg_buffer1 >> 2] = HEAP32[$7 >> 2];\n _arLog(1, 8321, $vararg_buffer1);\n _emscripten_asm_const_5(2, HEAP32[$2 >> 2] | 0, HEAP32[$9 >> 2] | 0, HEAP32[$7 >> 2] | 0, $2 + 264 | 0, 264) | 0;\n STACKTOP = sp;\n return HEAP32[$2 >> 2] | 0;\n}\n\nfunction __ZNSt3__113unordered_mapIi7ARParamNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_($this, $__k) {\n $this = $this | 0;\n $__k = $__k | 0;\n var $$pn3 = 0, $0 = 0, $1 = 0, $5 = 0, $__h = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 32 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $__h = sp + 8 | 0;\n $0 = sp;\n $1 = __ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_($this, $__k) | 0;\n if (!$1) {\n  __ZNSt3__113unordered_mapIi7ARParamNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEE25__construct_node_with_keyERS8_($__h, $this, $__k);\n  __ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE20__node_insert_uniqueEPNS_11__hash_nodeIS3_PvEE($0, $this, HEAP32[$__h >> 2] | 0);\n  $5 = HEAP32[$0 >> 2] | 0;\n  HEAP32[$__h >> 2] = 0;\n  $$pn3 = $5;\n } else $$pn3 = $1;\n STACKTOP = sp;\n return $$pn3 + 16 | 0;\n}\n\nfunction __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9__grow_byEjjjjjj($this, $__old_cap, $__delta_cap, $__old_sz, $__n_copy, $__n_add) {\n $this = $this | 0;\n $__old_cap = $__old_cap | 0;\n $__delta_cap = $__delta_cap | 0;\n $__old_sz = $__old_sz | 0;\n $__n_copy = $__n_copy | 0;\n $__n_add = $__n_add | 0;\n var $10 = 0, $12 = 0, $17 = 0, $18 = 0, $20 = 0, $9 = 0;\n if ((-17 - $__old_cap | 0) >>> 0 < $__delta_cap >>> 0) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv($this);\n if (!(HEAP8[$this >> 0] & 1)) $20 = $this + 1 | 0; else $20 = HEAP32[$this + 8 >> 2] | 0;\n if ($__old_cap >>> 0 < 2147483623) {\n  $9 = $__delta_cap + $__old_cap | 0;\n  $10 = $__old_cap << 1;\n  $12 = $9 >>> 0 < $10 >>> 0 ? $10 : $9;\n  $17 = $12 >>> 0 < 11 ? 11 : $12 + 16 & -16;\n } else $17 = -17;\n $18 = _malloc($17) | 0;\n if ($__n_copy) _memcpy($18 | 0, $20 | 0, $__n_copy | 0) | 0;\n if (($__old_sz | 0) != ($__n_copy | 0)) _memcpy($18 + ($__n_add + $__n_copy) | 0, $20 + $__n_copy | 0, $__old_sz - $__n_copy | 0) | 0;\n if (($__old_cap | 0) != 10) _free($20);\n HEAP32[$this + 8 >> 2] = $18;\n HEAP32[$this >> 2] = $17 | 1;\n return;\n}\n\nfunction __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_($this, $__k) {\n $this = $this | 0;\n $__k = $__k | 0;\n var $$pn = 0, $0 = 0, $11 = 0, $12 = 0, $16 = 0, $2 = 0, $20 = 0, $24 = 0, $4 = 0, $6 = 0, $__nd$0 = 0;\n $0 = HEAP32[$__k >> 2] | 0;\n $2 = HEAP32[$this + 4 >> 2] | 0;\n L1 : do if (!$2) $24 = 0; else {\n  $4 = $2 + -1 | 0;\n  $6 = ($4 & $2 | 0) == 0;\n  if ($6) $11 = $4 & $0; else $11 = ($0 >>> 0) % ($2 >>> 0) | 0;\n  $12 = HEAP32[(HEAP32[$this >> 2] | 0) + ($11 << 2) >> 2] | 0;\n  if (!$12) $24 = 0; else {\n   $$pn = $12;\n   while (1) {\n    $__nd$0 = HEAP32[$$pn >> 2] | 0;\n    if (!$__nd$0) {\n     $24 = 0;\n     break L1;\n    }\n    $16 = HEAP32[$__nd$0 + 4 >> 2] | 0;\n    if ($6) $20 = $16 & $4; else $20 = ($16 >>> 0) % ($2 >>> 0) | 0;\n    if (($20 | 0) != ($11 | 0)) {\n     $24 = 0;\n     break L1;\n    }\n    if ((HEAP32[$__nd$0 + 8 >> 2] | 0) == ($0 | 0)) {\n     $24 = $__nd$0;\n     break;\n    } else $$pn = $__nd$0;\n   }\n  }\n } while (0);\n return $24 | 0;\n}\n\nfunction __ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_($this, $__k) {\n $this = $this | 0;\n $__k = $__k | 0;\n var $$pn = 0, $0 = 0, $11 = 0, $12 = 0, $16 = 0, $2 = 0, $20 = 0, $24 = 0, $4 = 0, $6 = 0, $__nd$0 = 0;\n $0 = HEAP32[$__k >> 2] | 0;\n $2 = HEAP32[$this + 4 >> 2] | 0;\n L1 : do if (!$2) $24 = 0; else {\n  $4 = $2 + -1 | 0;\n  $6 = ($4 & $2 | 0) == 0;\n  if ($6) $11 = $4 & $0; else $11 = ($0 >>> 0) % ($2 >>> 0) | 0;\n  $12 = HEAP32[(HEAP32[$this >> 2] | 0) + ($11 << 2) >> 2] | 0;\n  if (!$12) $24 = 0; else {\n   $$pn = $12;\n   while (1) {\n    $__nd$0 = HEAP32[$$pn >> 2] | 0;\n    if (!$__nd$0) {\n     $24 = 0;\n     break L1;\n    }\n    $16 = HEAP32[$__nd$0 + 4 >> 2] | 0;\n    if ($6) $20 = $16 & $4; else $20 = ($16 >>> 0) % ($2 >>> 0) | 0;\n    if (($20 | 0) != ($11 | 0)) {\n     $24 = 0;\n     break L1;\n    }\n    if ((HEAP32[$__nd$0 + 8 >> 2] | 0) == ($0 | 0)) {\n     $24 = $__nd$0;\n     break;\n    } else $$pn = $__nd$0;\n   }\n  }\n } while (0);\n return $24 | 0;\n}\n\nfunction __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE14__erase_uniqueIiEEjRKT_($this, $__k) {\n $this = $this | 0;\n $__k = $__k | 0;\n var $$0 = 0, $$byval_copy = 0, $0 = 0, $1 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $$byval_copy = sp + 4 | 0;\n $0 = sp;\n $1 = __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_($this, $__k) | 0;\n if (!$1) $$0 = 0; else {\n  HEAP32[$0 >> 2] = $1;\n  HEAP32[$$byval_copy >> 2] = HEAP32[$0 >> 2];\n  __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE5eraseENS_21__hash_const_iteratorIPNS_11__hash_nodeIS3_PvEEEE($this, $$byval_copy) | 0;\n  $$0 = 1;\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE5eraseENS_21__hash_const_iteratorIPNS_11__hash_nodeIS3_PvEEEE($this, $__p) {\n $this = $this | 0;\n $__p = $__p | 0;\n var $$byval_copy = 0, $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 32 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $$byval_copy = sp + 16 | 0;\n $0 = sp + 4 | 0;\n $1 = sp;\n $2 = HEAP32[$__p >> 2] | 0;\n $3 = HEAP32[$2 >> 2] | 0;\n HEAP32[$1 >> 2] = $2;\n HEAP32[$$byval_copy >> 2] = HEAP32[$1 >> 2];\n __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE6removeENS_21__hash_const_iteratorIPNS_11__hash_nodeIS3_PvEEEE($0, $this, $$byval_copy);\n $4 = HEAP32[$0 >> 2] | 0;\n HEAP32[$0 >> 2] = 0;\n if ($4) {\n  if (HEAP8[$0 + 8 >> 0] | 0) __ZNSt3__113__vector_baseI12multi_markerNS_9allocatorIS1_EEED2Ev($4 + 264 | 0);\n  __ZdlPv($4);\n }\n STACKTOP = sp;\n return $3 | 0;\n}\n\nfunction __ZNK10__cxxabiv117__class_type_info9can_catchEPKNS_16__shim_type_infoERPv($this, $thrown_type, $adjustedPtr) {\n $this = $this | 0;\n $thrown_type = $thrown_type | 0;\n $adjustedPtr = $adjustedPtr | 0;\n var $$0 = 0, $$1 = 0, $2 = 0, $info = 0, dest = 0, sp = 0, stop = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 64 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $info = sp;\n if (($this | 0) == ($thrown_type | 0)) $$1 = 1; else if (!$thrown_type) $$1 = 0; else {\n  $2 = ___dynamic_cast($thrown_type, 576, 592, 0) | 0;\n  if (!$2) $$1 = 0; else {\n   dest = $info;\n   stop = dest + 56 | 0;\n   do {\n    HEAP32[dest >> 2] = 0;\n    dest = dest + 4 | 0;\n   } while ((dest | 0) < (stop | 0));\n   HEAP32[$info >> 2] = $2;\n   HEAP32[$info + 8 >> 2] = $this;\n   HEAP32[$info + 12 >> 2] = -1;\n   HEAP32[$info + 48 >> 2] = 1;\n   FUNCTION_TABLE_viiii[HEAP32[(HEAP32[$2 >> 2] | 0) + 28 >> 2] & 3]($2, $info, HEAP32[$adjustedPtr >> 2] | 0, 1);\n   if ((HEAP32[$info + 24 >> 2] | 0) == 1) {\n    HEAP32[$adjustedPtr >> 2] = HEAP32[$info + 16 >> 2];\n    $$0 = 1;\n   } else $$0 = 0;\n   $$1 = $$0;\n  }\n }\n STACKTOP = sp;\n return $$1 | 0;\n}\n\nfunction __ZNK10__cxxabiv117__class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib($this, $info, $current_ptr, $path_below, $use_strcmp) {\n $this = $this | 0;\n $info = $info | 0;\n $current_ptr = $current_ptr | 0;\n $path_below = $path_below | 0;\n $use_strcmp = $use_strcmp | 0;\n var $14 = 0, $20 = 0, $6 = 0;\n do if (($this | 0) == (HEAP32[$info + 8 >> 2] | 0)) {\n  if ((HEAP32[$info + 4 >> 2] | 0) == ($current_ptr | 0)) {\n   $6 = $info + 28 | 0;\n   if ((HEAP32[$6 >> 2] | 0) != 1) HEAP32[$6 >> 2] = $path_below;\n  }\n } else if (($this | 0) == (HEAP32[$info >> 2] | 0)) {\n  if ((HEAP32[$info + 16 >> 2] | 0) != ($current_ptr | 0)) {\n   $14 = $info + 20 | 0;\n   if ((HEAP32[$14 >> 2] | 0) != ($current_ptr | 0)) {\n    HEAP32[$info + 32 >> 2] = $path_below;\n    HEAP32[$14 >> 2] = $current_ptr;\n    $20 = $info + 40 | 0;\n    HEAP32[$20 >> 2] = (HEAP32[$20 >> 2] | 0) + 1;\n    if ((HEAP32[$info + 36 >> 2] | 0) == 1) if ((HEAP32[$info + 24 >> 2] | 0) == 2) HEAP8[$info + 54 >> 0] = 1;\n    HEAP32[$info + 44 >> 2] = 4;\n    break;\n   }\n  }\n  if (($path_below | 0) == 1) HEAP32[$info + 32 >> 2] = 1;\n } while (0);\n return;\n}\n\nfunction _getTransMatSquareCont($id, $markerIndex, $markerWidth) {\n $id = $id | 0;\n $markerIndex = $markerIndex | 0;\n $markerWidth = $markerWidth | 0;\n var $$0 = 0, $0 = 0, $4 = 0, $6 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $0 = sp;\n HEAP32[$0 >> 2] = $id;\n do if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = HEAP32[522] | 0; else {\n  $4 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0;\n  $6 = HEAP32[$4 + 212 >> 2] | 0;\n  if ((HEAP32[$6 + 44 >> 2] | 0) > ($markerIndex | 0)) {\n   +_arGetTransMatSquareCont(HEAP32[$4 + 224 >> 2] | 0, ($markerIndex | 0) < 0 ? 8 : $6 + 48 + ($markerIndex << 8) | 0, 264, +($markerWidth | 0), 264);\n   $$0 = 0;\n   break;\n  } else {\n   $$0 = HEAP32[523] | 0;\n   break;\n  }\n } while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arPattLoad($pattHandle, $filename) {\n $pattHandle = $pattHandle | 0;\n $filename = $filename | 0;\n var $$0 = 0, $0 = 0, $2 = 0, $4 = 0, $6 = 0, $9 = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, $vararg_buffer3 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 32 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer3 = sp + 16 | 0;\n $vararg_buffer1 = sp + 8 | 0;\n $vararg_buffer = sp;\n $0 = _fopen($filename, 4854) | 0;\n do if (!$0) {\n  HEAP32[$vararg_buffer >> 2] = $filename;\n  _arLog(3, 4774, $vararg_buffer);\n  $$0 = -1;\n } else {\n  _fseek($0, 0, 2) | 0;\n  $2 = _ftell($0) | 0;\n  _fseek($0, 0, 0) | 0;\n  $4 = _malloc($2 + 1 | 0) | 0;\n  if (!$4) {\n   _arLog(3, 5471, $vararg_buffer1);\n   _fclose($0) | 0;\n   $$0 = -1;\n   break;\n  }\n  $6 = _fread($4, $2, 1, $0) | 0;\n  _fclose($0) | 0;\n  if (!$6) {\n   HEAP32[$vararg_buffer3 >> 2] = $filename;\n   _arLog(3, 4820, $vararg_buffer3);\n   _free($4);\n   $$0 = -1;\n   break;\n  } else {\n   HEAP8[$4 + $2 >> 0] = 0;\n   $9 = _arPattLoadFromBuffer($pattHandle, $4) | 0;\n   _free($4);\n   $$0 = $9;\n   break;\n  }\n } while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _fmt_u($0, $1, $s) {\n $0 = $0 | 0;\n $1 = $1 | 0;\n $s = $s | 0;\n var $$0$lcssa = 0, $$01$lcssa$off0 = 0, $$05 = 0, $$1$lcssa = 0, $$12 = 0, $$lcssa20 = 0, $13 = 0, $14 = 0, $25 = 0, $28 = 0, $7 = 0, $8 = 0, $9 = 0, $y$03 = 0;\n if ($1 >>> 0 > 0 | ($1 | 0) == 0 & $0 >>> 0 > 4294967295) {\n  $$05 = $s;\n  $7 = $0;\n  $8 = $1;\n  while (1) {\n   $9 = ___uremdi3($7 | 0, $8 | 0, 10, 0) | 0;\n   $13 = $$05 + -1 | 0;\n   HEAP8[$13 >> 0] = $9 | 48;\n   $14 = ___udivdi3($7 | 0, $8 | 0, 10, 0) | 0;\n   if ($8 >>> 0 > 9 | ($8 | 0) == 9 & $7 >>> 0 > 4294967295) {\n    $$05 = $13;\n    $7 = $14;\n    $8 = tempRet0;\n   } else {\n    $$lcssa20 = $13;\n    $28 = $14;\n    break;\n   }\n  }\n  $$0$lcssa = $$lcssa20;\n  $$01$lcssa$off0 = $28;\n } else {\n  $$0$lcssa = $s;\n  $$01$lcssa$off0 = $0;\n }\n if (!$$01$lcssa$off0) $$1$lcssa = $$0$lcssa; else {\n  $$12 = $$0$lcssa;\n  $y$03 = $$01$lcssa$off0;\n  while (1) {\n   $25 = $$12 + -1 | 0;\n   HEAP8[$25 >> 0] = ($y$03 >>> 0) % 10 | 0 | 48;\n   if ($y$03 >>> 0 < 10) {\n    $$1$lcssa = $25;\n    break;\n   } else {\n    $$12 = $25;\n    $y$03 = ($y$03 >>> 0) / 10 | 0;\n   }\n  }\n }\n return $$1$lcssa | 0;\n}\n\nfunction _byteswap($param) {\n $param = $param | 0;\n var $$lcssa = 0, $15 = 0, $2 = 0, $i$13 = 0, $j$05 = 0, $wparam = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 192 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $wparam = sp;\n _byteSwapInt($param, $wparam);\n _byteSwapInt($param + 4 | 0, $wparam + 4 | 0);\n $j$05 = 0;\n do {\n  _byteSwapDouble($param + 8 + ($j$05 << 5) | 0, $wparam + 8 + ($j$05 << 5) | 0);\n  _byteSwapDouble($param + 8 + ($j$05 << 5) + 8 | 0, $wparam + 8 + ($j$05 << 5) + 8 | 0);\n  _byteSwapDouble($param + 8 + ($j$05 << 5) + 16 | 0, $wparam + 8 + ($j$05 << 5) + 16 | 0);\n  _byteSwapDouble($param + 8 + ($j$05 << 5) + 24 | 0, $wparam + 8 + ($j$05 << 5) + 24 | 0);\n  $j$05 = $j$05 + 1 | 0;\n } while (($j$05 | 0) != 3);\n $2 = $param + 176 | 0;\n $i$13 = 0;\n do {\n  _byteSwapDouble($param + 104 + ($i$13 << 3) | 0, $wparam + 104 + ($i$13 << 3) | 0);\n  $i$13 = $i$13 + 1 | 0;\n  $15 = HEAP32[$2 >> 2] | 0;\n } while (($i$13 | 0) < (HEAP32[2012 + ($15 + -1 << 3) >> 2] | 0));\n $$lcssa = $15;\n HEAP32[$wparam + 176 >> 2] = $$lcssa;\n _memcpy($param | 0, $wparam | 0, 184) | 0;\n STACKTOP = sp;\n return;\n}\n\nfunction _getTransMatSquare($id, $markerIndex, $markerWidth) {\n $id = $id | 0;\n $markerIndex = $markerIndex | 0;\n $markerWidth = $markerWidth | 0;\n var $$0 = 0, $0 = 0, $4 = 0, $6 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $0 = sp;\n HEAP32[$0 >> 2] = $id;\n do if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = HEAP32[522] | 0; else {\n  $4 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0;\n  $6 = HEAP32[$4 + 212 >> 2] | 0;\n  if ((HEAP32[$6 + 44 >> 2] | 0) > ($markerIndex | 0)) {\n   +_arGetTransMatSquare(HEAP32[$4 + 224 >> 2] | 0, ($markerIndex | 0) < 0 ? 8 : $6 + 48 + ($markerIndex << 8) | 0, +($markerWidth | 0), 264);\n   $$0 = 0;\n   break;\n  } else {\n   $$0 = HEAP32[523] | 0;\n   break;\n  }\n } while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arMatrixTrans($dest, $source) {\n $dest = $dest | 0;\n $source = $source | 0;\n var $$0 = 0, $1 = 0, $13 = 0, $6 = 0, $c$01 = 0, $p1$02 = 0, $p2$05 = 0, $p2$13 = 0, $r$04 = 0, $smax = 0;\n $1 = HEAP32[$dest + 4 >> 2] | 0;\n if (($1 | 0) == (HEAP32[$source + 8 >> 2] | 0)) {\n  $6 = HEAP32[$dest + 8 >> 2] | 0;\n  if (($6 | 0) == (HEAP32[$source + 4 >> 2] | 0)) {\n   $smax = ($6 | 0) > 0 ? $6 : 0;\n   if (($1 | 0) > 0) {\n    $13 = ($6 | 0) > 0;\n    $p2$05 = HEAP32[$dest >> 2] | 0;\n    $r$04 = 0;\n    while (1) {\n     if ($13) {\n      $c$01 = 0;\n      $p1$02 = (HEAP32[$source >> 2] | 0) + ($r$04 << 3) | 0;\n      $p2$13 = $p2$05;\n      while (1) {\n       HEAPF64[$p2$13 >> 3] = +HEAPF64[$p1$02 >> 3];\n       $c$01 = $c$01 + 1 | 0;\n       if (($c$01 | 0) >= ($6 | 0)) break; else {\n        $p1$02 = $p1$02 + ($1 << 3) | 0;\n        $p2$13 = $p2$13 + 8 | 0;\n       }\n      }\n     }\n     $r$04 = $r$04 + 1 | 0;\n     if (($r$04 | 0) >= ($1 | 0)) {\n      $$0 = 0;\n      break;\n     } else $p2$05 = $p2$05 + ($smax << 3) | 0;\n    }\n   } else $$0 = 0;\n  } else $$0 = -1;\n } else $$0 = -1;\n return $$0 | 0;\n}\n\nfunction _fflush($f) {\n $f = $f | 0;\n var $$0 = 0, $$012 = 0, $$014 = 0, $24 = 0, $27 = 0, $6 = 0, $phitmp = 0, $r$0$lcssa = 0, $r$03 = 0, $r$1 = 0;\n do if (!$f) {\n  if (!(HEAP32[660] | 0)) $27 = 0; else $27 = _fflush(HEAP32[660] | 0) | 0;\n  ___lock(2416);\n  $$012 = HEAP32[603] | 0;\n  if (!$$012) $r$0$lcssa = $27; else {\n   $$014 = $$012;\n   $r$03 = $27;\n   while (1) {\n    if ((HEAP32[$$014 + 76 >> 2] | 0) > -1) $24 = ___lockfile($$014) | 0; else $24 = 0;\n    if ((HEAP32[$$014 + 20 >> 2] | 0) >>> 0 > (HEAP32[$$014 + 28 >> 2] | 0) >>> 0) $r$1 = ___fflush_unlocked($$014) | 0 | $r$03; else $r$1 = $r$03;\n    if ($24) ___unlockfile($$014);\n    $$014 = HEAP32[$$014 + 56 >> 2] | 0;\n    if (!$$014) {\n     $r$0$lcssa = $r$1;\n     break;\n    } else $r$03 = $r$1;\n   }\n  }\n  ___unlock(2416);\n  $$0 = $r$0$lcssa;\n } else {\n  if ((HEAP32[$f + 76 >> 2] | 0) <= -1) {\n   $$0 = ___fflush_unlocked($f) | 0;\n   break;\n  }\n  $phitmp = (___lockfile($f) | 0) == 0;\n  $6 = ___fflush_unlocked($f) | 0;\n  if ($phitmp) $$0 = $6; else {\n   ___unlockfile($f);\n   $$0 = $6;\n  }\n } while (0);\n return $$0 | 0;\n}\n\nfunction __ZNK10__cxxabiv121__vmi_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi($this, $info, $adjustedPtr, $path_below) {\n $this = $this | 0;\n $info = $info | 0;\n $adjustedPtr = $adjustedPtr | 0;\n $path_below = $path_below | 0;\n var $5 = 0, $6 = 0, $9 = 0, $p$0 = 0;\n L1 : do if (($this | 0) == (HEAP32[$info + 8 >> 2] | 0)) __ZNK10__cxxabiv117__class_type_info24process_found_base_classEPNS_19__dynamic_cast_infoEPvi(0, $info, $adjustedPtr, $path_below); else {\n  $5 = HEAP32[$this + 12 >> 2] | 0;\n  $6 = $this + 16 + ($5 << 3) | 0;\n  __ZNK10__cxxabiv122__base_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi($this + 16 | 0, $info, $adjustedPtr, $path_below);\n  if (($5 | 0) > 1) {\n   $9 = $info + 54 | 0;\n   $p$0 = $this + 24 | 0;\n   do {\n    __ZNK10__cxxabiv122__base_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi($p$0, $info, $adjustedPtr, $path_below);\n    if (HEAP8[$9 >> 0] | 0) break L1;\n    $p$0 = $p$0 + 8 | 0;\n   } while ($p$0 >>> 0 < $6 >>> 0);\n  }\n } while (0);\n return;\n}\n\nfunction __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($this, $__v) {\n $this = $this | 0;\n $__v = $__v | 0;\n var $$0$i1 = 0, $0 = 0, $1 = 0, $11 = 0, $13 = 0, $14 = 0, $16 = 0, $17 = 0, $18 = 0, $2 = 0, $3 = 0;\n $0 = HEAP32[$this >> 2] | 0;\n $1 = $this + 4 | 0;\n $2 = HEAP32[$1 >> 2] | 0;\n $3 = $__v + 4 | 0;\n if (($2 | 0) != ($0 | 0)) {\n  $$0$i1 = $2;\n  do {\n   $$0$i1 = $$0$i1 + -24 | 0;\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_((HEAP32[$3 >> 2] | 0) + -24 | 0, $$0$i1);\n   HEAP32[$3 >> 2] = (HEAP32[$3 >> 2] | 0) + -24;\n  } while (($$0$i1 | 0) != ($0 | 0));\n }\n $11 = HEAP32[$this >> 2] | 0;\n HEAP32[$this >> 2] = HEAP32[$3 >> 2];\n HEAP32[$3 >> 2] = $11;\n $13 = $__v + 8 | 0;\n $14 = HEAP32[$1 >> 2] | 0;\n HEAP32[$1 >> 2] = HEAP32[$13 >> 2];\n HEAP32[$13 >> 2] = $14;\n $16 = $this + 8 | 0;\n $17 = $__v + 12 | 0;\n $18 = HEAP32[$16 >> 2] | 0;\n HEAP32[$16 >> 2] = HEAP32[$17 >> 2];\n HEAP32[$17 >> 2] = $18;\n HEAP32[$__v >> 2] = HEAP32[$3 >> 2];\n return;\n}\n\nfunction _strlen($s) {\n $s = $s | 0;\n var $$01$lcssa = 0, $$014 = 0, $$1$lcssa = 0, $$lcssa20 = 0, $$pn = 0, $$pn15 = 0, $0 = 0, $18 = 0, $21 = 0, $5 = 0, $9 = 0, $w$0 = 0, $w$0$lcssa = 0, label = 0;\n $0 = $s;\n L1 : do if (!($0 & 3)) {\n  $$01$lcssa = $s;\n  label = 4;\n } else {\n  $$014 = $s;\n  $21 = $0;\n  while (1) {\n   if (!(HEAP8[$$014 >> 0] | 0)) {\n    $$pn = $21;\n    break L1;\n   }\n   $5 = $$014 + 1 | 0;\n   $21 = $5;\n   if (!($21 & 3)) {\n    $$01$lcssa = $5;\n    label = 4;\n    break;\n   } else $$014 = $5;\n  }\n } while (0);\n if ((label | 0) == 4) {\n  $w$0 = $$01$lcssa;\n  while (1) {\n   $9 = HEAP32[$w$0 >> 2] | 0;\n   if (!(($9 & -2139062144 ^ -2139062144) & $9 + -16843009)) $w$0 = $w$0 + 4 | 0; else {\n    $$lcssa20 = $9;\n    $w$0$lcssa = $w$0;\n    break;\n   }\n  }\n  if (!(($$lcssa20 & 255) << 24 >> 24)) $$1$lcssa = $w$0$lcssa; else {\n   $$pn15 = $w$0$lcssa;\n   while (1) {\n    $18 = $$pn15 + 1 | 0;\n    if (!(HEAP8[$18 >> 0] | 0)) {\n     $$1$lcssa = $18;\n     break;\n    } else $$pn15 = $18;\n   }\n  }\n  $$pn = $$1$lcssa;\n }\n return $$pn - $0 | 0;\n}\n\nfunction _setMarkerInfoDir($id, $markerIndex, $dir) {\n $id = $id | 0;\n $markerIndex = $markerIndex | 0;\n $dir = $dir | 0;\n var $$0 = 0, $0 = 0, $5 = 0, $6 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $0 = sp;\n HEAP32[$0 >> 2] = $id;\n do if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = HEAP32[522] | 0; else {\n  $5 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0;\n  $6 = HEAP32[$5 >> 2] | 0;\n  if ((HEAP32[$6 + 44 >> 2] | 0) > ($markerIndex | 0)) {\n   HEAP32[(($markerIndex | 0) < 0 ? 8 : $6 + 48 + ($markerIndex << 8) | 0) + 16 >> 2] = $dir;\n   $$0 = 0;\n   break;\n  } else {\n   $$0 = HEAP32[523] | 0;\n   break;\n  }\n } while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6assignEPKcj($this, $__s, $__n) {\n $this = $this | 0;\n $__s = $__s | 0;\n $__n = $__n | 0;\n var $0 = 0, $10 = 0, $14 = 0, $27 = 0, $3 = 0, $7 = 0, $9 = 0;\n $0 = HEAP8[$this >> 0] | 0;\n if (!($0 & 1)) {\n  $7 = 10;\n  $9 = $0;\n } else {\n  $3 = HEAP32[$this >> 2] | 0;\n  $7 = ($3 & -2) + -1 | 0;\n  $9 = $3 & 255;\n }\n $10 = ($9 & 1) == 0;\n do if ($7 >>> 0 < $__n >>> 0) {\n  if ($10) $27 = ($9 & 255) >>> 1; else $27 = HEAP32[$this + 4 >> 2] | 0;\n  __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE21__grow_by_and_replaceEjjjjjjPKc($this, $7, $__n - $7 | 0, $27, 0, $27, $__n, $__s);\n } else {\n  if ($10) $14 = $this + 1 | 0; else $14 = HEAP32[$this + 8 >> 2] | 0;\n  _memmove($14 | 0, $__s | 0, $__n | 0) | 0;\n  HEAP8[$14 + $__n >> 0] = 0;\n  if (!(HEAP8[$this >> 0] & 1)) {\n   HEAP8[$this >> 0] = $__n << 1;\n   break;\n  } else {\n   HEAP32[$this + 4 >> 2] = $__n;\n   break;\n  }\n } while (0);\n return;\n}\n\nfunction __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($this, $__s, $__n) {\n $this = $this | 0;\n $__s = $__s | 0;\n $__n = $__n | 0;\n var $0 = 0, $14 = 0, $15 = 0, $24 = 0, $25 = 0, $3 = 0, $7 = 0;\n $0 = HEAP8[$this >> 0] | 0;\n if (!($0 & 1)) {\n  $14 = 10;\n  $7 = $0;\n } else {\n  $3 = HEAP32[$this >> 2] | 0;\n  $14 = ($3 & -2) + -1 | 0;\n  $7 = $3 & 255;\n }\n if (!($7 & 1)) $15 = ($7 & 255) >>> 1; else $15 = HEAP32[$this + 4 >> 2] | 0;\n if (($14 - $15 | 0) >>> 0 < $__n >>> 0) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE21__grow_by_and_replaceEjjjjjjPKc($this, $14, $__n - $14 + $15 | 0, $15, $15, 0, $__n, $__s); else if ($__n) {\n  if (!($7 & 1)) $24 = $this + 1 | 0; else $24 = HEAP32[$this + 8 >> 2] | 0;\n  _memcpy($24 + $15 | 0, $__s | 0, $__n | 0) | 0;\n  $25 = $15 + $__n | 0;\n  if (!(HEAP8[$this >> 0] & 1)) HEAP8[$this >> 0] = $25 << 1; else HEAP32[$this + 4 >> 2] = $25;\n  HEAP8[$24 + $25 >> 0] = 0;\n }\n return $this | 0;\n}\n\nfunction _pad($f, $c, $w, $l, $fl) {\n $f = $f | 0;\n $c = $c | 0;\n $w = $w | 0;\n $l = $l | 0;\n $fl = $fl | 0;\n var $$0$lcssa6 = 0, $$02 = 0, $10 = 0, $14 = 0, $17 = 0, $18 = 0, $3 = 0, $7 = 0, $9 = 0, $pad = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 256 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $pad = sp;\n do if (($w | 0) > ($l | 0) & ($fl & 73728 | 0) == 0) {\n  $3 = $w - $l | 0;\n  _memset($pad | 0, $c | 0, ($3 >>> 0 > 256 ? 256 : $3) | 0) | 0;\n  $7 = HEAP32[$f >> 2] | 0;\n  $9 = ($7 & 32 | 0) == 0;\n  if ($3 >>> 0 > 255) {\n   $10 = $w - $l | 0;\n   $$02 = $3;\n   $17 = $7;\n   $18 = $9;\n   while (1) {\n    if ($18) {\n     ___fwritex($pad, 256, $f) | 0;\n     $14 = HEAP32[$f >> 2] | 0;\n    } else $14 = $17;\n    $$02 = $$02 + -256 | 0;\n    $18 = ($14 & 32 | 0) == 0;\n    if ($$02 >>> 0 <= 255) break; else $17 = $14;\n   }\n   if ($18) $$0$lcssa6 = $10 & 255; else break;\n  } else if ($9) $$0$lcssa6 = $3; else break;\n  ___fwritex($pad, $$0$lcssa6, $f) | 0;\n } while (0);\n STACKTOP = sp;\n return;\n}\n\nfunction _loadCamera($cparam_name) {\n $cparam_name = $cparam_name | 0;\n var $$0 = 0, $15 = 0, $16 = 0, $6 = 0, $cameraID = 0, $param = 0, $vararg_buffer1 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 208 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer1 = sp + 192 | 0;\n $param = sp;\n $cameraID = sp + 196 | 0;\n if (!(HEAP8[$cparam_name >> 0] & 1)) $6 = $cparam_name + 1 | 0; else $6 = HEAP32[$cparam_name + 8 >> 2] | 0;\n if ((_arParamLoad($6, 1, $param, sp + 184 | 0) | 0) < 0) {\n  if (!(HEAP8[$cparam_name >> 0] & 1)) $15 = $cparam_name + 1 | 0; else $15 = HEAP32[$cparam_name + 8 >> 2] | 0;\n  HEAP32[$vararg_buffer1 >> 2] = $15;\n  _arLog(3, 6092, $vararg_buffer1);\n  $$0 = -1;\n } else {\n  $16 = HEAP32[521] | 0;\n  HEAP32[521] = $16 + 1;\n  HEAP32[$cameraID >> 2] = $16;\n  _memcpy(__ZNSt3__113unordered_mapIi7ARParamNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2064, $cameraID) | 0, $param | 0, 184) | 0;\n  $$0 = $16;\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _getMultiMarkerNum($id, $multiMarker_id) {\n $id = $id | 0;\n $multiMarker_id = $multiMarker_id | 0;\n var $$0 = 0, $0 = 0, $3 = 0, $8 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $0 = sp;\n HEAP32[$0 >> 2] = $id;\n if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = -1; else {\n  $3 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0;\n  if (($multiMarker_id | 0) < 0) $$0 = -1; else {\n   $8 = HEAP32[$3 + 248 >> 2] | 0;\n   if ((HEAP32[$3 + 252 >> 2] | 0) - $8 >> 3 >>> 0 > $multiMarker_id >>> 0) $$0 = HEAP32[(HEAP32[$8 + ($multiMarker_id << 3) + 4 >> 2] | 0) + 4 >> 2] | 0; else $$0 = -1;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _arImageProcInit($xsize, $ysize, $pixFormat, $alwaysCopy) {\n $xsize = $xsize | 0;\n $ysize = $ysize | 0;\n $pixFormat = $pixFormat | 0;\n $alwaysCopy = $alwaysCopy | 0;\n var $$0 = 0, $0 = 0, $5 = 0, label = 0;\n $0 = _malloc(2080) | 0;\n L1 : do if (!$0) $$0 = $0; else {\n  HEAP32[$0 + 2068 >> 2] = $pixFormat;\n  L3 : do if (!$alwaysCopy) {\n   switch ($pixFormat | 0) {\n   case 5:\n   case 12:\n   case 13:\n   case 14:\n    break;\n   default:\n    {\n     label = 4;\n     break L3;\n    }\n   }\n   HEAP32[$0 + 2076 >> 2] = 0;\n  } else label = 4; while (0);\n  do if ((label | 0) == 4) {\n   $5 = _malloc(Math_imul($ysize, $xsize) | 0) | 0;\n   HEAP32[$0 >> 2] = $5;\n   if (!$5) {\n    _free($0);\n    $$0 = 0;\n    break L1;\n   } else {\n    HEAP32[$0 + 2076 >> 2] = 1;\n    break;\n   }\n  } while (0);\n  HEAP32[$0 + 2072 >> 2] = $alwaysCopy;\n  HEAP32[$0 + 4 >> 2] = 0;\n  HEAP32[$0 + 8 >> 2] = $xsize;\n  HEAP32[$0 + 12 >> 2] = $ysize;\n  $$0 = $0;\n } while (0);\n return $$0 | 0;\n}\n\nfunction _setPattRatio($id, $ratio) {\n $id = $id | 0;\n $ratio = +$ratio;\n var $0 = 0, $3 = 0, $6 = 0.0, $8 = 0, $vararg_buffer = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = sp + 8 | 0;\n HEAP32[$0 >> 2] = $id;\n if (__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0) {\n  $3 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0;\n  if (!($ratio <= 0.0 | $ratio >= 1.0)) {\n   $6 = $ratio;\n   $8 = HEAP32[$3 + 212 >> 2] | 0;\n   if ($8) if (!(_arSetPattRatio($8, $6) | 0)) {\n    HEAPF64[$vararg_buffer >> 3] = $6;\n    _arLog(1, 6512, $vararg_buffer);\n   }\n  }\n }\n STACKTOP = sp;\n return;\n}\n\nfunction _setDebugMode($id, $enable) {\n $id = $id | 0;\n $enable = $enable | 0;\n var $$0 = 0, $0 = 0, $4 = 0, $6 = 0, $vararg_buffer = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = sp + 4 | 0;\n HEAP32[$0 >> 2] = $id;\n if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = 0; else {\n  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0;\n  $6 = ($enable | 0) != 0;\n  _arSetDebugMode(HEAP32[$4 >> 2] | 0, $6 & 1) | 0;\n  HEAP32[$vararg_buffer >> 2] = $6 ? 6615 : 6619;\n  _arLog(1, 6624, $vararg_buffer);\n  $$0 = $enable;\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction ___remdi3($a$0, $a$1, $b$0, $b$1) {\n $a$0 = $a$0 | 0;\n $a$1 = $a$1 | 0;\n $b$0 = $b$0 | 0;\n $b$1 = $b$1 | 0;\n var $rem = 0, $1$0 = 0, $1$1 = 0, $2$0 = 0, $2$1 = 0, $4$0 = 0, $4$1 = 0, $10$0 = 0, $10$1 = 0, __stackBase__ = 0;\n __stackBase__ = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n $rem = __stackBase__ | 0;\n $1$0 = $a$1 >> 31 | (($a$1 | 0) < 0 ? -1 : 0) << 1;\n $1$1 = (($a$1 | 0) < 0 ? -1 : 0) >> 31 | (($a$1 | 0) < 0 ? -1 : 0) << 1;\n $2$0 = $b$1 >> 31 | (($b$1 | 0) < 0 ? -1 : 0) << 1;\n $2$1 = (($b$1 | 0) < 0 ? -1 : 0) >> 31 | (($b$1 | 0) < 0 ? -1 : 0) << 1;\n $4$0 = _i64Subtract($1$0 ^ $a$0, $1$1 ^ $a$1, $1$0, $1$1) | 0;\n $4$1 = tempRet0;\n ___udivmoddi4($4$0, $4$1, _i64Subtract($2$0 ^ $b$0, $2$1 ^ $b$1, $2$0, $2$1) | 0, tempRet0, $rem) | 0;\n $10$0 = _i64Subtract(HEAP32[$rem >> 2] ^ $1$0, HEAP32[$rem + 4 >> 2] ^ $1$1, $1$0, $1$1) | 0;\n $10$1 = tempRet0;\n STACKTOP = __stackBase__;\n return (tempRet0 = $10$1, $10$0) | 0;\n}\n\nfunction _fopen($filename, $mode) {\n $filename = $filename | 0;\n $mode = $mode | 0;\n var $$0 = 0, $3 = 0, $5 = 0, $7 = 0, $9 = 0, $vararg_buffer = 0, $vararg_buffer3 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 32 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer3 = sp + 16 | 0;\n $vararg_buffer = sp;\n if (!(_memchr(16733, HEAP8[$mode >> 0] | 0, 4) | 0)) {\n  $3 = ___errno_location() | 0;\n  HEAP32[$3 >> 2] = 22;\n  $$0 = 0;\n } else {\n  $5 = ___fmodeflags($mode) | 0 | 32768;\n  HEAP32[$vararg_buffer >> 2] = $filename;\n  HEAP32[$vararg_buffer + 4 >> 2] = $5;\n  HEAP32[$vararg_buffer + 8 >> 2] = 438;\n  $7 = ___syscall_ret(___syscall5(5, $vararg_buffer | 0) | 0) | 0;\n  if (($7 | 0) < 0) $$0 = 0; else {\n   $9 = ___fdopen($7, $mode) | 0;\n   if (!$9) {\n    HEAP32[$vararg_buffer3 >> 2] = $7;\n    ___syscall6(6, $vararg_buffer3 | 0) | 0;\n    $$0 = 0;\n   } else $$0 = $9;\n  }\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _cycle($width, $ar, $n) {\n $width = $width | 0;\n $ar = $ar | 0;\n $n = $n | 0;\n var $$02 = 0, $1 = 0, $4 = 0, $6 = 0, $7 = 0, $i$01 = 0, $tmp = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 256 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $tmp = sp;\n L1 : do if (($n | 0) >= 2) {\n  $1 = $ar + ($n << 2) | 0;\n  HEAP32[$1 >> 2] = $tmp;\n  if ($width) {\n   $$02 = $width;\n   $6 = $tmp;\n   while (1) {\n    $4 = $$02 >>> 0 > 256 ? 256 : $$02;\n    _memcpy($6 | 0, HEAP32[$ar >> 2] | 0, $4 | 0) | 0;\n    $i$01 = 0;\n    do {\n     $7 = $ar + ($i$01 << 2) | 0;\n     $i$01 = $i$01 + 1 | 0;\n     _memcpy(HEAP32[$7 >> 2] | 0, HEAP32[$ar + ($i$01 << 2) >> 2] | 0, $4 | 0) | 0;\n     HEAP32[$7 >> 2] = (HEAP32[$7 >> 2] | 0) + $4;\n    } while (($i$01 | 0) != ($n | 0));\n    if (($$02 | 0) == ($4 | 0)) break L1;\n    $$02 = $$02 - $4 | 0;\n    $6 = HEAP32[$1 >> 2] | 0;\n   }\n  }\n } while (0);\n STACKTOP = sp;\n return;\n}\n\nfunction _setThreshold($id, $threshold) {\n $id = $id | 0;\n $threshold = $threshold | 0;\n var $0 = 0, $3 = 0, $vararg_buffer = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = sp + 4 | 0;\n HEAP32[$0 >> 2] = $id;\n if (__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0) {\n  $3 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0;\n  if ($threshold >>> 0 <= 255) if (!(_arSetLabelingThresh(HEAP32[$3 + 212 >> 2] | 0, $threshold) | 0)) {\n   HEAP32[$vararg_buffer >> 2] = $threshold;\n   _arLog(1, 6568, $vararg_buffer);\n  }\n }\n STACKTOP = sp;\n return;\n}\n\nfunction _scalbn($x, $n) {\n $x = +$x;\n $n = $n | 0;\n var $$0 = 0, $1 = 0.0, $12 = 0, $15 = 0, $16 = 0, $2 = 0, $5 = 0, $8 = 0.0, $9 = 0, $y$0 = 0.0;\n if (($n | 0) > 1023) {\n  $1 = $x * 8988465674311579538646525.0e283;\n  $2 = $n + -1023 | 0;\n  if (($2 | 0) > 1023) {\n   $5 = $n + -2046 | 0;\n   $$0 = ($5 | 0) > 1023 ? 1023 : $5;\n   $y$0 = $1 * 8988465674311579538646525.0e283;\n  } else {\n   $$0 = $2;\n   $y$0 = $1;\n  }\n } else if (($n | 0) < -1022) {\n  $8 = $x * 2.2250738585072014e-308;\n  $9 = $n + 1022 | 0;\n  if (($9 | 0) < -1022) {\n   $12 = $n + 2044 | 0;\n   $$0 = ($12 | 0) < -1022 ? -1022 : $12;\n   $y$0 = $8 * 2.2250738585072014e-308;\n  } else {\n   $$0 = $9;\n   $y$0 = $8;\n  }\n } else {\n  $$0 = $n;\n  $y$0 = $x;\n }\n $15 = _bitshift64Shl($$0 + 1023 | 0, 0, 52) | 0;\n $16 = tempRet0;\n HEAP32[tempDoublePtr >> 2] = $15;\n HEAP32[tempDoublePtr + 4 >> 2] = $16;\n return +($y$0 * +HEAPF64[tempDoublePtr >> 3]);\n}\n\nfunction _wcrtomb($s, $wc, $st) {\n $s = $s | 0;\n $wc = $wc | 0;\n $st = $st | 0;\n var $$0 = 0, $45 = 0;\n do if (!$s) $$0 = 1; else {\n  if ($wc >>> 0 < 128) {\n   HEAP8[$s >> 0] = $wc;\n   $$0 = 1;\n   break;\n  }\n  if ($wc >>> 0 < 2048) {\n   HEAP8[$s >> 0] = $wc >>> 6 | 192;\n   HEAP8[$s + 1 >> 0] = $wc & 63 | 128;\n   $$0 = 2;\n   break;\n  }\n  if ($wc >>> 0 < 55296 | ($wc & -8192 | 0) == 57344) {\n   HEAP8[$s >> 0] = $wc >>> 12 | 224;\n   HEAP8[$s + 1 >> 0] = $wc >>> 6 & 63 | 128;\n   HEAP8[$s + 2 >> 0] = $wc & 63 | 128;\n   $$0 = 3;\n   break;\n  }\n  if (($wc + -65536 | 0) >>> 0 < 1048576) {\n   HEAP8[$s >> 0] = $wc >>> 18 | 240;\n   HEAP8[$s + 1 >> 0] = $wc >>> 12 & 63 | 128;\n   HEAP8[$s + 2 >> 0] = $wc >>> 6 & 63 | 128;\n   HEAP8[$s + 3 >> 0] = $wc & 63 | 128;\n   $$0 = 4;\n   break;\n  } else {\n   $45 = ___errno_location() | 0;\n   HEAP32[$45 >> 2] = 84;\n   $$0 = -1;\n   break;\n  }\n } while (0);\n return $$0 | 0;\n}\n\nfunction _getThresholdMode($id) {\n $id = $id | 0;\n var $0 = 0, $4 = 0, $7 = 0, $thresholdMode = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $0 = sp + 4 | 0;\n $thresholdMode = sp;\n HEAP32[$0 >> 2] = $id;\n if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) {\n  STACKTOP = sp;\n  return -1;\n } else {\n  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0;\n  $7 = (_arGetLabelingThreshMode(HEAP32[$4 >> 2] | 0, $thresholdMode) | 0) == 0;\n  STACKTOP = sp;\n  return ($7 ? HEAP32[$thresholdMode >> 2] | 0 : -1) | 0;\n }\n return 0;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj9EEERAT__Kc($this, $s) {\n $this = $this | 0;\n $s = $s | 0;\n var $1 = 0, $10 = 0, $12 = 0, $2 = 0, $3 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;\n HEAP8[$this >> 0] = 16;\n $1 = $s;\n $2 = $1;\n $3 = HEAPU8[$2 >> 0] | HEAPU8[$2 + 1 >> 0] << 8 | HEAPU8[$2 + 2 >> 0] << 16 | HEAPU8[$2 + 3 >> 0] << 24;\n $5 = $1 + 4 | 0;\n $6 = HEAPU8[$5 >> 0] | HEAPU8[$5 + 1 >> 0] << 8 | HEAPU8[$5 + 2 >> 0] << 16 | HEAPU8[$5 + 3 >> 0] << 24;\n $7 = $this + 1 | 0;\n $8 = $7;\n HEAP8[$8 >> 0] = $3;\n HEAP8[$8 + 1 >> 0] = $3 >> 8;\n HEAP8[$8 + 2 >> 0] = $3 >> 16;\n HEAP8[$8 + 3 >> 0] = $3 >> 24;\n $10 = $7 + 4 | 0;\n HEAP8[$10 >> 0] = $6;\n HEAP8[$10 + 1 >> 0] = $6 >> 8;\n HEAP8[$10 + 2 >> 0] = $6 >> 16;\n HEAP8[$10 + 3 >> 0] = $6 >> 24;\n HEAP8[$this + 9 >> 0] = 0;\n $12 = $this + 12 | 0;\n HEAP32[$12 >> 2] = 0;\n HEAP32[$12 + 4 >> 2] = 0;\n HEAP32[$12 + 8 >> 2] = 0;\n return;\n}\n\nfunction _getImageProcMode($id) {\n $id = $id | 0;\n var $0 = 0, $4 = 0, $7 = 0, $imageProcMode = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $0 = sp + 4 | 0;\n $imageProcMode = sp;\n HEAP32[$0 >> 2] = $id;\n if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) {\n  STACKTOP = sp;\n  return -1;\n } else {\n  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0;\n  $7 = (_arGetImageProcMode(HEAP32[$4 >> 2] | 0, $imageProcMode) | 0) == 0;\n  STACKTOP = sp;\n  return ($7 ? HEAP32[$imageProcMode >> 2] | 0 : -1) | 0;\n }\n return 0;\n}\n\nfunction __ZNSt3__16vectorI12multi_markerNS_9allocatorIS1_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS1_RS3_EE($this, $__v) {\n $this = $this | 0;\n $__v = $__v | 0;\n var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $13 = 0, $14 = 0, $16 = 0, $17 = 0, $18 = 0, $3 = 0, $6 = 0;\n $0 = HEAP32[$this >> 2] | 0;\n $1 = $this + 4 | 0;\n $3 = $__v + 4 | 0;\n $6 = (HEAP32[$1 >> 2] | 0) - $0 | 0;\n $10 = (HEAP32[$3 >> 2] | 0) + (0 - ($6 >> 3) << 3) | 0;\n HEAP32[$3 >> 2] = $10;\n _memcpy($10 | 0, $0 | 0, $6 | 0) | 0;\n $11 = HEAP32[$this >> 2] | 0;\n HEAP32[$this >> 2] = HEAP32[$3 >> 2];\n HEAP32[$3 >> 2] = $11;\n $13 = $__v + 8 | 0;\n $14 = HEAP32[$1 >> 2] | 0;\n HEAP32[$1 >> 2] = HEAP32[$13 >> 2];\n HEAP32[$13 >> 2] = $14;\n $16 = $this + 8 | 0;\n $17 = $__v + 12 | 0;\n $18 = HEAP32[$16 >> 2] | 0;\n HEAP32[$16 >> 2] = HEAP32[$17 >> 2];\n HEAP32[$17 >> 2] = $18;\n HEAP32[$__v >> 2] = HEAP32[$3 >> 2];\n return;\n}\n\nfunction _setPatternDetectionMode($id, $mode) {\n $id = $id | 0;\n $mode = $mode | 0;\n var $0 = 0, $4 = 0, $vararg_buffer = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = sp + 4 | 0;\n HEAP32[$0 >> 2] = $id;\n if (__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0) {\n  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0;\n  if (!(_arSetPatternDetectionMode(HEAP32[$4 >> 2] | 0, $mode) | 0)) {\n   HEAP32[$vararg_buffer >> 2] = $mode;\n   _arLog(1, 6477, $vararg_buffer);\n  }\n }\n STACKTOP = sp;\n return;\n}\n\nfunction _getLabelingMode($id) {\n $id = $id | 0;\n var $0 = 0, $4 = 0, $7 = 0, $labelingMode = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $0 = sp + 4 | 0;\n $labelingMode = sp;\n HEAP32[$0 >> 2] = $id;\n if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) {\n  STACKTOP = sp;\n  return -1;\n } else {\n  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0;\n  $7 = (_arGetLabelingMode(HEAP32[$4 >> 2] | 0, $labelingMode) | 0) == 0;\n  STACKTOP = sp;\n  return ($7 ? HEAP32[$labelingMode >> 2] | 0 : -1) | 0;\n }\n return 0;\n}\n\nfunction _arMatrixDup($dest, $source) {\n $dest = $dest | 0;\n $source = $source | 0;\n var $$0 = 0, $1 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $6 = 0, $c$02 = 0, $r$03 = 0;\n $1 = HEAP32[$dest + 4 >> 2] | 0;\n if (($1 | 0) == (HEAP32[$source + 4 >> 2] | 0)) {\n  $6 = HEAP32[$dest + 8 >> 2] | 0;\n  if (($6 | 0) == (HEAP32[$source + 8 >> 2] | 0)) if (($1 | 0) > 0) {\n   $11 = ($6 | 0) > 0;\n   $r$03 = 0;\n   do {\n    $12 = Math_imul($6, $r$03) | 0;\n    if ($11) {\n     $13 = HEAP32[$source >> 2] | 0;\n     $14 = HEAP32[$dest >> 2] | 0;\n     $c$02 = 0;\n     do {\n      $15 = $12 + $c$02 | 0;\n      HEAPF64[$14 + ($15 << 3) >> 3] = +HEAPF64[$13 + ($15 << 3) >> 3];\n      $c$02 = $c$02 + 1 | 0;\n     } while (($c$02 | 0) < ($6 | 0));\n    }\n    $r$03 = $r$03 + 1 | 0;\n   } while (($r$03 | 0) < ($1 | 0));\n   $$0 = 0;\n  } else $$0 = 0; else $$0 = -1;\n } else $$0 = -1;\n return $$0 | 0;\n}\n\nfunction _setThresholdMode($id, $mode) {\n $id = $id | 0;\n $mode = $mode | 0;\n var $0 = 0, $4 = 0, $vararg_buffer = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = sp + 4 | 0;\n HEAP32[$0 >> 2] = $id;\n if (__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0) {\n  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0;\n  if (!(_arSetLabelingThreshMode(HEAP32[$4 >> 2] | 0, $mode) | 0)) {\n   HEAP32[$vararg_buffer >> 2] = $mode;\n   _arLog(1, 6589, $vararg_buffer);\n  }\n }\n STACKTOP = sp;\n return;\n}\n\nfunction _getPattRatio($id) {\n $id = $id | 0;\n var $0 = 0, $4 = 0, $5 = 0, $8 = 0, $pattRatio = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $0 = sp + 8 | 0;\n $pattRatio = sp;\n HEAP32[$0 >> 2] = $id;\n if (__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0) {\n  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0;\n  $5 = HEAP32[$4 >> 2] | 0;\n  if ($5) {\n   $8 = (_arGetPattRatio($5, $pattRatio) | 0) == 0;\n   STACKTOP = sp;\n   return +($8 ? +HEAPF64[$pattRatio >> 3] : -1.0);\n  }\n }\n STACKTOP = sp;\n return -1.0;\n}\n\nfunction _setImageProcMode($id, $mode) {\n $id = $id | 0;\n $mode = $mode | 0;\n var $0 = 0, $4 = 0, $vararg_buffer = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = sp + 4 | 0;\n HEAP32[$0 >> 2] = $id;\n if (__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0) {\n  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0;\n  if (!(_arSetImageProcMode(HEAP32[$4 >> 2] | 0, $mode) | 0)) {\n   HEAP32[$vararg_buffer >> 2] = $mode;\n   _arLog(1, 6646, $vararg_buffer);\n  }\n }\n STACKTOP = sp;\n return;\n}\n\nfunction _setLabelingMode($id, $mode) {\n $id = $id | 0;\n $mode = $mode | 0;\n var $0 = 0, $4 = 0, $vararg_buffer = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $0 = sp + 4 | 0;\n HEAP32[$0 >> 2] = $id;\n if (__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0) {\n  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0;\n  if (!(_arSetLabelingMode(HEAP32[$4 >> 2] | 0, $mode) | 0)) {\n   HEAP32[$vararg_buffer >> 2] = $mode;\n   _arLog(1, 6543, $vararg_buffer);\n  }\n }\n STACKTOP = sp;\n return;\n}\n\nfunction _getThreshold($id) {\n $id = $id | 0;\n var $0 = 0, $4 = 0, $7 = 0, $threshold = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $0 = sp + 4 | 0;\n $threshold = sp;\n HEAP32[$0 >> 2] = $id;\n if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) {\n  STACKTOP = sp;\n  return -1;\n } else {\n  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0;\n  $7 = (_arGetLabelingThresh(HEAP32[$4 >> 2] | 0, $threshold) | 0) == 0;\n  STACKTOP = sp;\n  return ($7 ? HEAP32[$threshold >> 2] | 0 : -1) | 0;\n }\n return 0;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_119parse_cv_qualifiersEPKcS2_Rj($first, $last, $cv) {\n $first = $first | 0;\n $last = $last | 0;\n $cv = $cv | 0;\n var $$0 = 0, $$1 = 0, $$2 = 0, $1 = 0, $10 = 0, $12 = 0, $3 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;\n HEAP32[$cv >> 2] = 0;\n if (($first | 0) == ($last | 0)) $$2 = $first; else {\n  $1 = HEAP8[$first >> 0] | 0;\n  if ($1 << 24 >> 24 == 114) {\n   HEAP32[$cv >> 2] = 4;\n   $3 = $first + 1 | 0;\n   $$0 = $3;\n   $5 = HEAP8[$3 >> 0] | 0;\n   $7 = 4;\n  } else {\n   $$0 = $first;\n   $5 = $1;\n   $7 = 0;\n  }\n  if ($5 << 24 >> 24 == 86) {\n   $6 = $7 | 2;\n   HEAP32[$cv >> 2] = $6;\n   $8 = $$0 + 1 | 0;\n   $$1 = $8;\n   $10 = HEAP8[$8 >> 0] | 0;\n   $12 = $6;\n  } else {\n   $$1 = $$0;\n   $10 = $5;\n   $12 = $7;\n  }\n  if ($10 << 24 >> 24 == 75) {\n   HEAP32[$cv >> 2] = $12 | 1;\n   $$2 = $$1 + 1 | 0;\n  } else $$2 = $$1;\n }\n return $$2 | 0;\n}\n\nfunction _getPatternDetectionMode($id) {\n $id = $id | 0;\n var $0 = 0, $4 = 0, $7 = 0, $mode = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $0 = sp + 4 | 0;\n $mode = sp;\n HEAP32[$0 >> 2] = $id;\n if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) {\n  STACKTOP = sp;\n  return -1;\n } else {\n  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0;\n  $7 = (_arGetPatternDetectionMode(HEAP32[$4 >> 2] | 0, $mode) | 0) == 0;\n  STACKTOP = sp;\n  return ($7 ? HEAP32[$mode >> 2] | 0 : -1) | 0;\n }\n return 0;\n}\n\nfunction _strerror($e) {\n $e = $e | 0;\n var $$lcssa = 0, $9 = 0, $i$03 = 0, $i$03$lcssa = 0, $i$12 = 0, $s$0$lcssa = 0, $s$01 = 0, $s$1 = 0, label = 0;\n $i$03 = 0;\n while (1) {\n  if ((HEAPU8[14566 + $i$03 >> 0] | 0) == ($e | 0)) {\n   $i$03$lcssa = $i$03;\n   label = 2;\n   break;\n  }\n  $i$03 = $i$03 + 1 | 0;\n  if (($i$03 | 0) == 87) {\n   $i$12 = 87;\n   $s$01 = 14654;\n   label = 5;\n   break;\n  }\n }\n if ((label | 0) == 2) if (!$i$03$lcssa) $s$0$lcssa = 14654; else {\n  $i$12 = $i$03$lcssa;\n  $s$01 = 14654;\n  label = 5;\n }\n if ((label | 0) == 5) while (1) {\n  label = 0;\n  $s$1 = $s$01;\n  while (1) {\n   $9 = $s$1 + 1 | 0;\n   if (!(HEAP8[$s$1 >> 0] | 0)) {\n    $$lcssa = $9;\n    break;\n   } else $s$1 = $9;\n  }\n  $i$12 = $i$12 + -1 | 0;\n  if (!$i$12) {\n   $s$0$lcssa = $$lcssa;\n   break;\n  } else {\n   $s$01 = $$lcssa;\n   label = 5;\n  }\n }\n return $s$0$lcssa | 0;\n}\n\nfunction __ZNSt3__113__lower_boundIRNS_6__lessIjjEEPKjjEET0_S6_S6_RKT1_T_($__first, $__last, $__value_, $__comp) {\n $__first = $__first | 0;\n $__last = $__last | 0;\n $__value_ = $__value_ | 0;\n $__comp = $__comp | 0;\n var $$0$ph = 0, $$0$ph$lcssa = 0, $$lcssa = 0, $4 = 0, $6 = 0, $__len$0 = 0, $__len$0$lcssa7 = 0, $__len$0$ph = 0;\n $4 = HEAP32[$__value_ >> 2] | 0;\n $$0$ph = $__first;\n $__len$0$ph = $__last - $__first >> 2;\n L1 : while (1) {\n  $__len$0 = $__len$0$ph;\n  while (1) {\n   if (!$__len$0) {\n    $$0$ph$lcssa = $$0$ph;\n    break L1;\n   }\n   $6 = ($__len$0 | 0) / 2 | 0;\n   if ((HEAP32[$$0$ph + ($6 << 2) >> 2] | 0) >>> 0 < $4 >>> 0) {\n    $$lcssa = $6;\n    $__len$0$lcssa7 = $__len$0;\n    break;\n   } else $__len$0 = $6;\n  }\n  $$0$ph = $$0$ph + ($$lcssa + 1 << 2) | 0;\n  $__len$0$ph = $__len$0$lcssa7 + -1 - $$lcssa | 0;\n }\n return $$0$ph$lcssa | 0;\n}\n\nfunction __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($agg$result, $__lhs, $__rhs) {\n $agg$result = $agg$result | 0;\n $__lhs = $__lhs | 0;\n $__rhs = $__rhs | 0;\n var $10 = 0, $2 = 0, $3 = 0;\n HEAP32[$agg$result >> 2] = 0;\n HEAP32[$agg$result + 4 >> 2] = 0;\n HEAP32[$agg$result + 8 >> 2] = 0;\n $2 = _strlen($__lhs) | 0;\n $3 = HEAP8[$__rhs >> 0] | 0;\n $10 = ($3 & 1) == 0 ? ($3 & 255) >>> 1 : HEAP32[$__rhs + 4 >> 2] | 0;\n __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcjj($agg$result, $__lhs, $2, $10 + $2 | 0);\n __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($agg$result, (HEAP8[$__rhs >> 0] & 1) == 0 ? $__rhs + 1 | 0 : HEAP32[$__rhs + 8 >> 2] | 0, $10) | 0;\n return;\n}\n\nfunction _frexp($x, $e) {\n $x = +$x;\n $e = $e | 0;\n var $$0 = 0.0, $$01 = 0.0, $0 = 0, $1 = 0, $2 = 0, $4 = 0, $7 = 0.0, $storemerge = 0;\n HEAPF64[tempDoublePtr >> 3] = $x;\n $0 = HEAP32[tempDoublePtr >> 2] | 0;\n $1 = HEAP32[tempDoublePtr + 4 >> 2] | 0;\n $2 = _bitshift64Lshr($0 | 0, $1 | 0, 52) | 0;\n $4 = $2 & 2047;\n switch ($4 | 0) {\n case 0:\n  {\n   if ($x != 0.0) {\n    $7 = +_frexp($x * 18446744073709551616.0, $e);\n    $$01 = $7;\n    $storemerge = (HEAP32[$e >> 2] | 0) + -64 | 0;\n   } else {\n    $$01 = $x;\n    $storemerge = 0;\n   }\n   HEAP32[$e >> 2] = $storemerge;\n   $$0 = $$01;\n   break;\n  }\n case 2047:\n  {\n   $$0 = $x;\n   break;\n  }\n default:\n  {\n   HEAP32[$e >> 2] = $4 + -1022;\n   HEAP32[tempDoublePtr >> 2] = $0;\n   HEAP32[tempDoublePtr + 4 >> 2] = $1 & -2146435073 | 1071644672;\n   $$0 = +HEAPF64[tempDoublePtr >> 3];\n  }\n }\n return +$$0;\n}\n\nfunction ___fseeko_unlocked($f, $off, $whence) {\n $f = $f | 0;\n $off = $off | 0;\n $whence = $whence | 0;\n var $$0 = 0, $$01 = 0, $11 = 0, $9 = 0, label = 0;\n if (($whence | 0) == 1) $$01 = $off - (HEAP32[$f + 8 >> 2] | 0) + (HEAP32[$f + 4 >> 2] | 0) | 0; else $$01 = $off;\n $9 = $f + 20 | 0;\n $11 = $f + 28 | 0;\n if ((HEAP32[$9 >> 2] | 0) >>> 0 > (HEAP32[$11 >> 2] | 0) >>> 0) {\n  FUNCTION_TABLE_iiii[HEAP32[$f + 36 >> 2] & 15]($f, 0, 0) | 0;\n  if (!(HEAP32[$9 >> 2] | 0)) $$0 = -1; else label = 5;\n } else label = 5;\n if ((label | 0) == 5) {\n  HEAP32[$f + 16 >> 2] = 0;\n  HEAP32[$11 >> 2] = 0;\n  HEAP32[$9 >> 2] = 0;\n  if ((FUNCTION_TABLE_iiii[HEAP32[$f + 40 >> 2] & 15]($f, $$01, $whence) | 0) < 0) $$0 = -1; else {\n   HEAP32[$f + 8 >> 2] = 0;\n   HEAP32[$f + 4 >> 2] = 0;\n   HEAP32[$f >> 2] = HEAP32[$f >> 2] & -17;\n   $$0 = 0;\n  }\n }\n return $$0 | 0;\n}\n\nfunction __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EERKSB_PKS8_($agg$result, $__lhs, $__rhs) {\n $agg$result = $agg$result | 0;\n $__lhs = $__lhs | 0;\n $__rhs = $__rhs | 0;\n var $10 = 0, $2 = 0, $4 = 0, $9 = 0;\n HEAP32[$agg$result >> 2] = 0;\n HEAP32[$agg$result + 4 >> 2] = 0;\n HEAP32[$agg$result + 8 >> 2] = 0;\n $2 = HEAP8[$__lhs >> 0] | 0;\n $4 = ($2 & 1) == 0;\n $9 = $4 ? ($2 & 255) >>> 1 : HEAP32[$__lhs + 4 >> 2] | 0;\n $10 = _strlen($__rhs) | 0;\n __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcjj($agg$result, $4 ? $__lhs + 1 | 0 : HEAP32[$__lhs + 8 >> 2] | 0, $9, $9 + $10 | 0);\n __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($agg$result, $__rhs, $10) | 0;\n return;\n}\n\nfunction _icpGetU_from_X_by_MatX2U($u, $matX2U, $coord3d) {\n $u = $u | 0;\n $matX2U = $matX2U | 0;\n $coord3d = $coord3d | 0;\n var $$0 = 0, $0 = 0.0, $18 = 0.0, $2 = 0.0, $33 = 0.0, $4 = 0.0;\n $0 = +HEAPF64[$coord3d >> 3];\n $2 = +HEAPF64[$coord3d + 8 >> 3];\n $4 = +HEAPF64[$coord3d + 16 >> 3];\n $18 = +HEAPF64[$matX2U + 88 >> 3] + ($0 * +HEAPF64[$matX2U + 64 >> 3] + $2 * +HEAPF64[$matX2U + 72 >> 3] + $4 * +HEAPF64[$matX2U + 80 >> 3]);\n if ($18 == 0.0) $$0 = -1; else {\n  $33 = +HEAPF64[$matX2U + 56 >> 3] + ($0 * +HEAPF64[$matX2U + 32 >> 3] + $2 * +HEAPF64[$matX2U + 40 >> 3] + $4 * +HEAPF64[$matX2U + 48 >> 3]);\n  HEAPF64[$u >> 3] = (+HEAPF64[$matX2U + 24 >> 3] + ($0 * +HEAPF64[$matX2U >> 3] + $2 * +HEAPF64[$matX2U + 8 >> 3] + $4 * +HEAPF64[$matX2U + 16 >> 3])) / $18;\n  HEAPF64[$u + 8 >> 3] = $33 / $18;\n  $$0 = 0;\n }\n return $$0 | 0;\n}\n\nfunction __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($this, $__x, $__a) {\n $this = $this | 0;\n $__x = $__x | 0;\n $__a = $__a | 0;\n var $0 = 0, $2 = 0, $5 = 0;\n HEAP32[$this >> 2] = 0;\n $0 = $this + 4 | 0;\n HEAP32[$0 >> 2] = 0;\n $2 = HEAP32[$__a >> 2] | 0;\n HEAP32[$this + 8 >> 2] = 0;\n HEAP32[$this + 12 >> 2] = $2;\n $5 = __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE8allocateEj($2, 24) | 0;\n HEAP32[$0 >> 2] = $5;\n HEAP32[$this >> 2] = $5;\n HEAP32[$this + 8 >> 2] = $5 + 24;\n __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($5, $__x);\n __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($5 + 12 | 0, $__x + 12 | 0);\n HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + 24;\n return;\n}\n\nfunction _getMatrixCodeType($id) {\n $id = $id | 0;\n var $$0 = 0, $0 = 0, $4 = 0, $matrixType = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $0 = sp + 4 | 0;\n $matrixType = sp;\n HEAP32[$0 >> 2] = $id;\n if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = -1; else {\n  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0;\n  _arGetMatrixCodeType(HEAP32[$4 >> 2] | 0, $matrixType) | 0;\n  $$0 = HEAP32[$matrixType >> 2] | 0;\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_($first, $last) {\n $first = $first | 0;\n $last = $last | 0;\n var $$0 = 0, $$1 = 0, $$first = 0, $5 = 0, $t$0$pn = 0;\n L1 : do if (($first | 0) == ($last | 0)) $$1 = $first; else {\n  $$first = (HEAP8[$first >> 0] | 0) == 110 ? $first + 1 | 0 : $first;\n  if (($$first | 0) == ($last | 0)) $$1 = $first; else {\n   $5 = HEAP8[$$first >> 0] | 0;\n   if ($5 << 24 >> 24 == 48) {\n    $$1 = $$first + 1 | 0;\n    break;\n   }\n   if (($5 + -49 & 255) < 9) {\n    $t$0$pn = $$first;\n    while (1) {\n     $$0 = $t$0$pn + 1 | 0;\n     if (($$0 | 0) == ($last | 0)) {\n      $$1 = $last;\n      break L1;\n     }\n     if (((HEAP8[$$0 >> 0] | 0) + -48 | 0) >>> 0 < 10) $t$0$pn = $$0; else {\n      $$1 = $$0;\n      break;\n     }\n    }\n   } else $$1 = $first;\n  }\n } while (0);\n return $$1 | 0;\n}\n\nfunction __ZNSt3__114__split_bufferINS_6vectorINS1_IN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEEERNS5_IS9_Lj4096EEEED2Ev($this) {\n $this = $this | 0;\n var $1 = 0, $2 = 0, $3 = 0, $5 = 0, $6 = 0, $9 = 0;\n $1 = HEAP32[$this + 4 >> 2] | 0;\n $2 = $this + 8 | 0;\n $3 = HEAP32[$2 >> 2] | 0;\n if (($3 | 0) != ($1 | 0)) {\n  $6 = $3;\n  do {\n   $5 = $6 + -16 | 0;\n   HEAP32[$2 >> 2] = $5;\n   __ZNSt3__113__vector_baseINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEED2Ev($5);\n   $6 = HEAP32[$2 >> 2] | 0;\n  } while (($6 | 0) != ($1 | 0));\n }\n $9 = HEAP32[$this >> 2] | 0;\n if ($9) __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE10deallocateEPcj(HEAP32[HEAP32[$this + 16 >> 2] >> 2] | 0, $9, (HEAP32[$this + 12 >> 2] | 0) - $9 | 0);\n return;\n}\n\nfunction __ZNSt3__113__vector_baseINS_6vectorINS1_IN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEEENS5_IS9_Lj4096EEEED2Ev($this) {\n $this = $this | 0;\n var $0 = 0, $2 = 0, $3 = 0, $5 = 0, $6 = 0, $9 = 0;\n $0 = HEAP32[$this >> 2] | 0;\n if ($0) {\n  $2 = $this + 4 | 0;\n  $3 = HEAP32[$2 >> 2] | 0;\n  if (($3 | 0) != ($0 | 0)) {\n   $6 = $3;\n   do {\n    $5 = $6 + -16 | 0;\n    HEAP32[$2 >> 2] = $5;\n    __ZNSt3__113__vector_baseINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEED2Ev($5);\n    $6 = HEAP32[$2 >> 2] | 0;\n   } while (($6 | 0) != ($0 | 0));\n  }\n  $9 = HEAP32[$this >> 2] | 0;\n  __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE10deallocateEPcj(HEAP32[$this + 12 >> 2] | 0, $9, (HEAP32[$this + 8 >> 2] | 0) - $9 | 0);\n }\n return;\n}\n\nfunction _getDebugMode($id) {\n $id = $id | 0;\n var $$0 = 0, $0 = 0, $4 = 0, $enable = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $0 = sp + 4 | 0;\n $enable = sp;\n HEAP32[$0 >> 2] = $id;\n if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = 0; else {\n  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0;\n  _arGetDebugMode(HEAP32[$4 >> 2] | 0, $enable) | 0;\n  $$0 = HEAP32[$enable >> 2] | 0;\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _realloc($oldmem, $bytes) {\n $oldmem = $oldmem | 0;\n $bytes = $bytes | 0;\n var $12 = 0, $15 = 0, $20 = 0, $3 = 0, $9 = 0, $mem$0 = 0;\n if (!$oldmem) {\n  $mem$0 = _malloc($bytes) | 0;\n  return $mem$0 | 0;\n }\n if ($bytes >>> 0 > 4294967231) {\n  $3 = ___errno_location() | 0;\n  HEAP32[$3 >> 2] = 12;\n  $mem$0 = 0;\n  return $mem$0 | 0;\n }\n $9 = _try_realloc_chunk($oldmem + -8 | 0, $bytes >>> 0 < 11 ? 16 : $bytes + 11 & -8) | 0;\n if ($9) {\n  $mem$0 = $9 + 8 | 0;\n  return $mem$0 | 0;\n }\n $12 = _malloc($bytes) | 0;\n if (!$12) {\n  $mem$0 = 0;\n  return $mem$0 | 0;\n }\n $15 = HEAP32[$oldmem + -4 >> 2] | 0;\n $20 = ($15 & -8) - (($15 & 3 | 0) == 0 ? 8 : 4) | 0;\n _memcpy($12 | 0, $oldmem | 0, ($20 >>> 0 < $bytes >>> 0 ? $20 : $bytes) | 0) | 0;\n _free($oldmem);\n $mem$0 = $12;\n return $mem$0 | 0;\n}\n\nfunction _arSetDebugMode($handle, $mode) {\n $handle = $handle | 0;\n $mode = $mode | 0;\n var $$0 = 0, $11 = 0, $4 = 0, $vararg_buffer = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n do if (!$handle) $$0 = -1; else if ((HEAP32[$handle >> 2] | 0) == ($mode | 0)) $$0 = 0; else {\n  HEAP32[$handle >> 2] = $mode;\n  if (!$mode) {\n   $4 = $handle + 4834148 | 0;\n   _free(HEAP32[$4 >> 2] | 0);\n   HEAP32[$4 >> 2] = 0;\n   $$0 = 0;\n   break;\n  }\n  $11 = _malloc(Math_imul(HEAP32[$handle + 40 >> 2] | 0, HEAP32[$handle + 36 >> 2] | 0) | 0) | 0;\n  HEAP32[$handle + 4834148 >> 2] = $11;\n  if (!$11) {\n   _arLog(3, 5471, $vararg_buffer);\n   _exit(1);\n  } else $$0 = 0;\n } while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _vasprintf($s, $fmt, $ap) {\n $s = $s | 0;\n $fmt = $fmt | 0;\n $ap = $ap | 0;\n var $$0 = 0, $0 = 0, $10 = 0, $2 = 0, $5 = 0, $9 = 0, $ap2 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $ap2 = sp;\n $0 = _malloc(240) | 0;\n do if (!$0) $$0 = -1; else {\n  HEAP32[$ap2 >> 2] = HEAP32[$ap >> 2];\n  $2 = _vsnprintf($0, 240, $fmt, $ap2) | 0;\n  if ($2 >>> 0 < 240) {\n   $5 = _realloc($0, $2 + 1 | 0) | 0;\n   HEAP32[$s >> 2] = ($5 | 0) != 0 ? $5 : $0;\n   $$0 = $2;\n   break;\n  }\n  _free($0);\n  if (($2 | 0) < 0) $$0 = -1; else {\n   $9 = $2 + 1 | 0;\n   $10 = _malloc($9) | 0;\n   HEAP32[$s >> 2] = $10;\n   if (!$10) $$0 = -1; else $$0 = _vsnprintf($10, $9, $fmt, $ap) | 0;\n  }\n } while (0);\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _icpCreateHandle($matXc2U) {\n $matXc2U = $matXc2U | 0;\n var $$0 = 0, $0 = 0, $j$04 = 0;\n $0 = _malloc(136) | 0;\n if (!$0) $$0 = 0; else {\n  $j$04 = 0;\n  do {\n   HEAPF64[$0 + ($j$04 << 5) >> 3] = +HEAPF64[$matXc2U + ($j$04 << 5) >> 3];\n   HEAPF64[$0 + ($j$04 << 5) + 8 >> 3] = +HEAPF64[$matXc2U + ($j$04 << 5) + 8 >> 3];\n   HEAPF64[$0 + ($j$04 << 5) + 16 >> 3] = +HEAPF64[$matXc2U + ($j$04 << 5) + 16 >> 3];\n   HEAPF64[$0 + ($j$04 << 5) + 24 >> 3] = +HEAPF64[$matXc2U + ($j$04 << 5) + 24 >> 3];\n   $j$04 = $j$04 + 1 | 0;\n  } while (($j$04 | 0) != 3);\n  HEAP32[$0 + 96 >> 2] = 10;\n  HEAPF64[$0 + 104 >> 3] = .10000000149011612;\n  HEAPF64[$0 + 112 >> 3] = .9900000095367432;\n  HEAPF64[$0 + 120 >> 3] = 4.0;\n  HEAPF64[$0 + 128 >> 3] = .5;\n  $$0 = $0;\n }\n return $$0 | 0;\n}\n\nfunction __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($this) {\n $this = $this | 0;\n var $1 = 0, $2 = 0, $3 = 0, $5 = 0, $6 = 0, $9 = 0;\n $1 = HEAP32[$this + 4 >> 2] | 0;\n $2 = $this + 8 | 0;\n $3 = HEAP32[$2 >> 2] | 0;\n if (($3 | 0) != ($1 | 0)) {\n  $6 = $3;\n  do {\n   $5 = $6 + -16 | 0;\n   HEAP32[$2 >> 2] = $5;\n   __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($5);\n   $6 = HEAP32[$2 >> 2] | 0;\n  } while (($6 | 0) != ($1 | 0));\n }\n $9 = HEAP32[$this >> 2] | 0;\n if ($9) __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE10deallocateEPcj(HEAP32[HEAP32[$this + 16 >> 2] >> 2] | 0, $9, (HEAP32[$this + 12 >> 2] | 0) - $9 | 0);\n return;\n}\n\nfunction __ZNSt3__113__vector_baseINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEED2Ev($this) {\n $this = $this | 0;\n var $0 = 0, $2 = 0, $3 = 0, $5 = 0, $6 = 0, $9 = 0;\n $0 = HEAP32[$this >> 2] | 0;\n if ($0) {\n  $2 = $this + 4 | 0;\n  $3 = HEAP32[$2 >> 2] | 0;\n  if (($3 | 0) != ($0 | 0)) {\n   $6 = $3;\n   do {\n    $5 = $6 + -16 | 0;\n    HEAP32[$2 >> 2] = $5;\n    __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($5);\n    $6 = HEAP32[$2 >> 2] | 0;\n   } while (($6 | 0) != ($0 | 0));\n  }\n  $9 = HEAP32[$this >> 2] | 0;\n  __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE10deallocateEPcj(HEAP32[$this + 12 >> 2] | 0, $9, (HEAP32[$this + 8 >> 2] | 0) - $9 | 0);\n }\n return;\n}\n\nfunction __ZNK10__cxxabiv122__base_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib($this, $info, $dst_ptr, $current_ptr, $path_below, $use_strcmp) {\n $this = $this | 0;\n $info = $info | 0;\n $dst_ptr = $dst_ptr | 0;\n $current_ptr = $current_ptr | 0;\n $path_below = $path_below | 0;\n $use_strcmp = $use_strcmp | 0;\n var $1 = 0, $2 = 0, $8 = 0, $offset_to_base$0 = 0;\n $1 = HEAP32[$this + 4 >> 2] | 0;\n $2 = $1 >> 8;\n if (!($1 & 1)) $offset_to_base$0 = $2; else $offset_to_base$0 = HEAP32[(HEAP32[$current_ptr >> 2] | 0) + $2 >> 2] | 0;\n $8 = HEAP32[$this >> 2] | 0;\n FUNCTION_TABLE_viiiiii[HEAP32[(HEAP32[$8 >> 2] | 0) + 20 >> 2] & 3]($8, $info, $dst_ptr, $current_ptr + $offset_to_base$0 | 0, ($1 & 2 | 0) != 0 ? $path_below : 2, $use_strcmp);\n return;\n}\n\nfunction _setProjectionNearPlane($id, $projectionNearPlane) {\n $id = $id | 0;\n $projectionNearPlane = +$projectionNearPlane;\n var $0 = 0, $4 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $0 = sp;\n HEAP32[$0 >> 2] = $id;\n if (__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0) {\n  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 232 | 0;\n  HEAPF64[$4 >> 3] = $projectionNearPlane;\n }\n STACKTOP = sp;\n return;\n}\n\nfunction _detectMarker($id) {\n $id = $id | 0;\n var $$0 = 0, $0 = 0, $4 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $0 = sp;\n HEAP32[$0 >> 2] = $id;\n if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = HEAP32[522] | 0; else {\n  $4 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0;\n  $$0 = _arDetectMarker(HEAP32[$4 + 212 >> 2] | 0, HEAP32[$4 + 196 >> 2] | 0) | 0;\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction __ZNK10__cxxabiv117__class_type_info24process_found_base_classEPNS_19__dynamic_cast_infoEPvi($this, $info, $adjustedPtr, $path_below) {\n $this = $this | 0;\n $info = $info | 0;\n $adjustedPtr = $adjustedPtr | 0;\n $path_below = $path_below | 0;\n var $0 = 0, $1 = 0, $6 = 0, $9 = 0;\n $0 = $info + 16 | 0;\n $1 = HEAP32[$0 >> 2] | 0;\n do if (!$1) {\n  HEAP32[$0 >> 2] = $adjustedPtr;\n  HEAP32[$info + 24 >> 2] = $path_below;\n  HEAP32[$info + 36 >> 2] = 1;\n } else {\n  if (($1 | 0) != ($adjustedPtr | 0)) {\n   $9 = $info + 36 | 0;\n   HEAP32[$9 >> 2] = (HEAP32[$9 >> 2] | 0) + 1;\n   HEAP32[$info + 24 >> 2] = 2;\n   HEAP8[$info + 54 >> 0] = 1;\n   break;\n  }\n  $6 = $info + 24 | 0;\n  if ((HEAP32[$6 >> 2] | 0) == 2) HEAP32[$6 >> 2] = $path_below;\n } while (0);\n return;\n}\n\nfunction _setProjectionFarPlane($id, $projectionFarPlane) {\n $id = $id | 0;\n $projectionFarPlane = +$projectionFarPlane;\n var $0 = 0, $4 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $0 = sp;\n HEAP32[$0 >> 2] = $id;\n if (__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0) {\n  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 240 | 0;\n  HEAPF64[$4 >> 3] = $projectionFarPlane;\n }\n STACKTOP = sp;\n return;\n}\n\nfunction _arParamObserv2IdealLTf($paramLTf, $ox, $oy, $ix, $iy) {\n $paramLTf = $paramLTf | 0;\n $ox = +$ox;\n $oy = +$oy;\n $ix = $ix | 0;\n $iy = $iy | 0;\n var $$0 = 0, $12 = 0, $19 = 0, $22 = 0, $4 = 0, $9 = 0;\n $4 = (HEAP32[$paramLTf + 16 >> 2] | 0) + ~~($ox + .5) | 0;\n $9 = (HEAP32[$paramLTf + 20 >> 2] | 0) + ~~($oy + .5) | 0;\n if (($4 | 0) < 0) $$0 = -1; else {\n  $12 = HEAP32[$paramLTf + 8 >> 2] | 0;\n  if (($9 | 0) < 0 | ($4 | 0) >= ($12 | 0)) $$0 = -1; else if (($9 | 0) < (HEAP32[$paramLTf + 12 >> 2] | 0)) {\n   $19 = HEAP32[$paramLTf + 4 >> 2] | 0;\n   $22 = (Math_imul($12, $9) | 0) + $4 << 1;\n   HEAP32[$ix >> 2] = HEAP32[$19 + ($22 << 2) >> 2];\n   HEAP32[$iy >> 2] = HEAP32[$19 + (($22 | 1) << 2) >> 2];\n   $$0 = 0;\n  } else $$0 = -1;\n }\n return $$0 | 0;\n}\n\nfunction _arParamIdeal2ObservLTf($paramLTf, $ix, $iy, $ox, $oy) {\n $paramLTf = $paramLTf | 0;\n $ix = +$ix;\n $iy = +$iy;\n $ox = $ox | 0;\n $oy = $oy | 0;\n var $$0 = 0, $12 = 0, $18 = 0, $21 = 0, $4 = 0, $9 = 0;\n $4 = (HEAP32[$paramLTf + 16 >> 2] | 0) + ~~($ix + .5) | 0;\n $9 = (HEAP32[$paramLTf + 20 >> 2] | 0) + ~~($iy + .5) | 0;\n if (($4 | 0) < 0) $$0 = -1; else {\n  $12 = HEAP32[$paramLTf + 8 >> 2] | 0;\n  if (($9 | 0) < 0 | ($4 | 0) >= ($12 | 0)) $$0 = -1; else if (($9 | 0) < (HEAP32[$paramLTf + 12 >> 2] | 0)) {\n   $18 = HEAP32[$paramLTf >> 2] | 0;\n   $21 = (Math_imul($12, $9) | 0) + $4 << 1;\n   HEAP32[$ox >> 2] = HEAP32[$18 + ($21 << 2) >> 2];\n   HEAP32[$oy >> 2] = HEAP32[$18 + (($21 | 1) << 2) >> 2];\n   $$0 = 0;\n  } else $$0 = -1;\n }\n return $$0 | 0;\n}\n\nfunction _arUtilMatMul($s1, $s2, $d) {\n $s1 = $s1 | 0;\n $s2 = $s2 | 0;\n $d = $d | 0;\n var $0 = 0, $1 = 0, $2 = 0, $21 = 0, $i$02 = 0, $j$03 = 0;\n $j$03 = 0;\n do {\n  $0 = $s1 + ($j$03 << 5) | 0;\n  $1 = $s1 + ($j$03 << 5) + 8 | 0;\n  $2 = $s1 + ($j$03 << 5) + 16 | 0;\n  $i$02 = 0;\n  do {\n   HEAPF64[$d + ($j$03 << 5) + ($i$02 << 3) >> 3] = +HEAPF64[$0 >> 3] * +HEAPF64[$s2 + ($i$02 << 3) >> 3] + +HEAPF64[$1 >> 3] * +HEAPF64[$s2 + 32 + ($i$02 << 3) >> 3] + +HEAPF64[$2 >> 3] * +HEAPF64[$s2 + 64 + ($i$02 << 3) >> 3];\n   $i$02 = $i$02 + 1 | 0;\n  } while (($i$02 | 0) != 4);\n  $21 = $d + ($j$03 << 5) + 24 | 0;\n  HEAPF64[$21 >> 3] = +HEAPF64[$s1 + ($j$03 << 5) + 24 >> 3] + +HEAPF64[$21 >> 3];\n  $j$03 = $j$03 + 1 | 0;\n } while (($j$03 | 0) != 3);\n return 0;\n}\n\nfunction _getMultiMarkerCount($id) {\n $id = $id | 0;\n var $$0 = 0, $0 = 0, $3 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $0 = sp;\n HEAP32[$0 >> 2] = $id;\n if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = -1; else {\n  $3 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0;\n  $$0 = (HEAP32[$3 + 252 >> 2] | 0) - (HEAP32[$3 + 248 >> 2] | 0) >> 3;\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _getMarkerNum($id) {\n $id = $id | 0;\n var $$0$in = 0, $0 = 0, $4 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $0 = sp;\n HEAP32[$0 >> 2] = $id;\n if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0$in = 2088; else {\n  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0;\n  $$0$in = (HEAP32[$4 >> 2] | 0) + 44 | 0;\n }\n STACKTOP = sp;\n return HEAP32[$$0$in >> 2] | 0;\n}\n\nfunction _getProcessingImage($id) {\n $id = $id | 0;\n var $$0 = 0, $0 = 0, $4 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $0 = sp;\n HEAP32[$0 >> 2] = $id;\n if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = 0; else {\n  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0;\n  $$0 = HEAP32[(HEAP32[$4 >> 2] | 0) + 4834148 >> 2] | 0;\n }\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction ___fflush_unlocked($f) {\n $f = $f | 0;\n var $$0 = 0, $0 = 0, $10 = 0, $11 = 0, $12 = 0, $2 = 0, $9 = 0, label = 0;\n $0 = $f + 20 | 0;\n $2 = $f + 28 | 0;\n if ((HEAP32[$0 >> 2] | 0) >>> 0 > (HEAP32[$2 >> 2] | 0) >>> 0) {\n  FUNCTION_TABLE_iiii[HEAP32[$f + 36 >> 2] & 15]($f, 0, 0) | 0;\n  if (!(HEAP32[$0 >> 2] | 0)) $$0 = -1; else label = 3;\n } else label = 3;\n if ((label | 0) == 3) {\n  $9 = $f + 4 | 0;\n  $10 = HEAP32[$9 >> 2] | 0;\n  $11 = $f + 8 | 0;\n  $12 = HEAP32[$11 >> 2] | 0;\n  if ($10 >>> 0 < $12 >>> 0) FUNCTION_TABLE_iiii[HEAP32[$f + 40 >> 2] & 15]($f, $10 - $12 | 0, 1) | 0;\n  HEAP32[$f + 16 >> 2] = 0;\n  HEAP32[$2 >> 2] = 0;\n  HEAP32[$0 >> 2] = 0;\n  HEAP32[$11 >> 2] = 0;\n  HEAP32[$9 >> 2] = 0;\n  $$0 = 0;\n }\n return $$0 | 0;\n}\n\nfunction ___divdi3($a$0, $a$1, $b$0, $b$1) {\n $a$0 = $a$0 | 0;\n $a$1 = $a$1 | 0;\n $b$0 = $b$0 | 0;\n $b$1 = $b$1 | 0;\n var $1$0 = 0, $1$1 = 0, $2$0 = 0, $2$1 = 0, $4$0 = 0, $4$1 = 0, $7$0 = 0, $7$1 = 0;\n $1$0 = $a$1 >> 31 | (($a$1 | 0) < 0 ? -1 : 0) << 1;\n $1$1 = (($a$1 | 0) < 0 ? -1 : 0) >> 31 | (($a$1 | 0) < 0 ? -1 : 0) << 1;\n $2$0 = $b$1 >> 31 | (($b$1 | 0) < 0 ? -1 : 0) << 1;\n $2$1 = (($b$1 | 0) < 0 ? -1 : 0) >> 31 | (($b$1 | 0) < 0 ? -1 : 0) << 1;\n $4$0 = _i64Subtract($1$0 ^ $a$0, $1$1 ^ $a$1, $1$0, $1$1) | 0;\n $4$1 = tempRet0;\n $7$0 = $2$0 ^ $1$0;\n $7$1 = $2$1 ^ $1$1;\n return _i64Subtract((___udivmoddi4($4$0, $4$1, _i64Subtract($2$0 ^ $b$0, $2$1 ^ $b$1, $2$0, $2$1) | 0, tempRet0, 0) | 0) ^ $7$0, tempRet0 ^ $7$1, $7$0, $7$1) | 0;\n}\n\nfunction _setMatrixCodeType($id, $type) {\n $id = $id | 0;\n $type = $type | 0;\n var $0 = 0, $4 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $0 = sp;\n HEAP32[$0 >> 2] = $id;\n if (__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0) {\n  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0;\n  _arSetMatrixCodeType(HEAP32[$4 >> 2] | 0, $type) | 0;\n }\n STACKTOP = sp;\n return;\n}\n\nfunction __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcjj($this, $__s, $__sz, $__reserve) {\n $this = $this | 0;\n $__s = $__s | 0;\n $__sz = $__sz | 0;\n $__reserve = $__reserve | 0;\n var $6 = 0, $7 = 0, $__p$0 = 0;\n if ($__reserve >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv($this);\n if ($__reserve >>> 0 < 11) {\n  HEAP8[$this >> 0] = $__sz << 1;\n  $__p$0 = $this + 1 | 0;\n } else {\n  $6 = $__reserve + 16 & -16;\n  $7 = _malloc($6) | 0;\n  HEAP32[$this + 8 >> 2] = $7;\n  HEAP32[$this >> 2] = $6 | 1;\n  HEAP32[$this + 4 >> 2] = $__sz;\n  $__p$0 = $7;\n }\n _memcpy($__p$0 | 0, $__s | 0, $__sz | 0) | 0;\n HEAP8[$__p$0 + $__sz >> 0] = 0;\n return;\n}\n\nfunction __ZNK10__cxxabiv120__si_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib($this, $info, $dst_ptr, $current_ptr, $path_below, $use_strcmp) {\n $this = $this | 0;\n $info = $info | 0;\n $dst_ptr = $dst_ptr | 0;\n $current_ptr = $current_ptr | 0;\n $path_below = $path_below | 0;\n $use_strcmp = $use_strcmp | 0;\n var $4 = 0;\n if (($this | 0) == (HEAP32[$info + 8 >> 2] | 0)) __ZNK10__cxxabiv117__class_type_info29process_static_type_above_dstEPNS_19__dynamic_cast_infoEPKvS4_i(0, $info, $dst_ptr, $current_ptr, $path_below); else {\n  $4 = HEAP32[$this + 8 >> 2] | 0;\n  FUNCTION_TABLE_viiiiii[HEAP32[(HEAP32[$4 >> 2] | 0) + 20 >> 2] & 3]($4, $info, $dst_ptr, $current_ptr, $path_below, $use_strcmp);\n }\n return;\n}\n\nfunction _strtok($s, $sep) {\n $s = $s | 0;\n $sep = $sep | 0;\n var $$0 = 0, $$01 = 0, $$sum = 0, $1 = 0, $3 = 0, $4 = 0, $8 = 0, label = 0;\n if (!$s) {\n  $1 = HEAP32[699] | 0;\n  if (!$1) $$0 = 0; else {\n   $$01 = $1;\n   label = 3;\n  }\n } else {\n  $$01 = $s;\n  label = 3;\n }\n do if ((label | 0) == 3) {\n  $3 = _strspn($$01, $sep) | 0;\n  $4 = $$01 + $3 | 0;\n  if (!(HEAP8[$4 >> 0] | 0)) {\n   HEAP32[699] = 0;\n   $$0 = 0;\n   break;\n  }\n  $$sum = (_strcspn($4, $sep) | 0) + $3 | 0;\n  $8 = $$01 + $$sum | 0;\n  HEAP32[699] = $8;\n  if (!(HEAP8[$8 >> 0] | 0)) {\n   HEAP32[699] = 0;\n   $$0 = $4;\n   break;\n  } else {\n   HEAP32[699] = $$01 + ($$sum + 1);\n   HEAP8[$8 >> 0] = 0;\n   $$0 = $4;\n   break;\n  }\n } while (0);\n return $$0 | 0;\n}\n\nfunction __ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib($this, $info, $current_ptr, $path_below, $use_strcmp) {\n $this = $this | 0;\n $info = $info | 0;\n $current_ptr = $current_ptr | 0;\n $path_below = $path_below | 0;\n $use_strcmp = $use_strcmp | 0;\n var $1 = 0, $2 = 0, $8 = 0, $offset_to_base$0 = 0;\n $1 = HEAP32[$this + 4 >> 2] | 0;\n $2 = $1 >> 8;\n if (!($1 & 1)) $offset_to_base$0 = $2; else $offset_to_base$0 = HEAP32[(HEAP32[$current_ptr >> 2] | 0) + $2 >> 2] | 0;\n $8 = HEAP32[$this >> 2] | 0;\n FUNCTION_TABLE_viiiii[HEAP32[(HEAP32[$8 >> 2] | 0) + 24 >> 2] & 3]($8, $info, $current_ptr + $offset_to_base$0 | 0, ($1 & 2 | 0) != 0 ? $path_below : 2, $use_strcmp);\n return;\n}\n\nfunction _getProjectionNearPlane($id) {\n $id = $id | 0;\n var $$0 = 0.0, $0 = 0, $4 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $0 = sp;\n HEAP32[$0 >> 2] = $id;\n if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = -1.0; else {\n  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 232 | 0;\n  $$0 = +HEAPF64[$4 >> 3];\n }\n STACKTOP = sp;\n return +$$0;\n}\n\nfunction _getProjectionFarPlane($id) {\n $id = $id | 0;\n var $$0 = 0.0, $0 = 0, $4 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $0 = sp;\n HEAP32[$0 >> 2] = $id;\n if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = -1.0; else {\n  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 240 | 0;\n  $$0 = +HEAPF64[$4 >> 3];\n }\n STACKTOP = sp;\n return +$$0;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($agg$result, $this) {\n $agg$result = $agg$result | 0;\n $this = $this | 0;\n var $0 = 0, $1 = 0, $13 = 0, $3 = 0;\n $0 = $this + 12 | 0;\n $1 = HEAP8[$0 >> 0] | 0;\n $3 = ($1 & 1) == 0;\n $13 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($this, $3 ? $0 + 1 | 0 : HEAP32[$this + 20 >> 2] | 0, $3 ? ($1 & 255) >>> 1 : HEAP32[$this + 16 >> 2] | 0) | 0;\n HEAP32[$agg$result >> 2] = HEAP32[$13 >> 2];\n HEAP32[$agg$result + 4 >> 2] = HEAP32[$13 + 4 >> 2];\n HEAP32[$agg$result + 8 >> 2] = HEAP32[$13 + 8 >> 2];\n HEAP32[$13 >> 2] = 0;\n HEAP32[$13 + 4 >> 2] = 0;\n HEAP32[$13 + 8 >> 2] = 0;\n return;\n}\n\nfunction _arImageProcLumaHist($ipi, $dataPtr) {\n $ipi = $ipi | 0;\n $dataPtr = $dataPtr | 0;\n var $$0 = 0, $13 = 0, $5 = 0, $8 = 0, $9 = 0, $p$03 = 0;\n if (($ipi | 0) != 0 & ($dataPtr | 0) != 0) if ((_arImageProcLuma($ipi, $dataPtr) | 0) < 0) $$0 = -1; else {\n  _memset($ipi + 16 | 0, 0, 1024) | 0;\n  $5 = HEAP32[$ipi >> 2] | 0;\n  $8 = Math_imul(HEAP32[$ipi + 12 >> 2] | 0, HEAP32[$ipi + 8 >> 2] | 0) | 0;\n  $9 = $5 + $8 | 0;\n  if (($8 | 0) > 0) {\n   $p$03 = $5;\n   do {\n    $13 = $ipi + 16 + ((HEAPU8[$p$03 >> 0] | 0) << 2) | 0;\n    HEAP32[$13 >> 2] = (HEAP32[$13 >> 2] | 0) + 1;\n    $p$03 = $p$03 + 1 | 0;\n   } while ($p$03 >>> 0 < $9 >>> 0);\n   $$0 = 0;\n  } else $$0 = 0;\n } else $$0 = -1;\n return $$0 | 0;\n}\n\nfunction _memcpy(dest, src, num) {\n dest = dest | 0;\n src = src | 0;\n num = num | 0;\n var ret = 0;\n if ((num | 0) >= 4096) return _emscripten_memcpy_big(dest | 0, src | 0, num | 0) | 0;\n ret = dest | 0;\n if ((dest & 3) == (src & 3)) {\n  while (dest & 3) {\n   if (!num) return ret | 0;\n   HEAP8[dest >> 0] = HEAP8[src >> 0] | 0;\n   dest = dest + 1 | 0;\n   src = src + 1 | 0;\n   num = num - 1 | 0;\n  }\n  while ((num | 0) >= 4) {\n   HEAP32[dest >> 2] = HEAP32[src >> 2];\n   dest = dest + 4 | 0;\n   src = src + 4 | 0;\n   num = num - 4 | 0;\n  }\n }\n while ((num | 0) > 0) {\n  HEAP8[dest >> 0] = HEAP8[src >> 0] | 0;\n  dest = dest + 1 | 0;\n  src = src + 1 | 0;\n  num = num - 1 | 0;\n }\n return ret | 0;\n}\n\nfunction __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE5eraseEjj($this) {\n $this = $this | 0;\n var $$pre1 = 0, $0 = 0, $10 = 0, $11 = 0, $14 = 0, $16 = 0;\n $0 = HEAP8[$this >> 0] | 0;\n if (!($0 & 1)) {\n  $10 = ($0 & 255) >>> 1;\n  $14 = $this + 1 | 0;\n } else {\n  $10 = HEAP32[$this + 4 >> 2] | 0;\n  $14 = HEAP32[$this + 8 >> 2] | 0;\n }\n $11 = ($10 | 0) != 0 & 1;\n $$pre1 = $10 - $11 | 0;\n if (($10 | 0) == ($11 | 0)) $16 = $0; else {\n  _memmove($14 | 0, $14 + $11 | 0, $$pre1 | 0) | 0;\n  $16 = HEAP8[$this >> 0] | 0;\n }\n if (!($16 & 1)) HEAP8[$this >> 0] = $$pre1 << 1; else HEAP32[$this + 4 >> 2] = $$pre1;\n HEAP8[$14 + $$pre1 >> 0] = 0;\n return;\n}\n\nfunction ___stdio_seek($f, $off, $whence) {\n $f = $f | 0;\n $off = $off | 0;\n $whence = $whence | 0;\n var $5 = 0, $ret = 0, $vararg_buffer = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 32 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n $ret = sp + 20 | 0;\n HEAP32[$vararg_buffer >> 2] = HEAP32[$f + 60 >> 2];\n HEAP32[$vararg_buffer + 4 >> 2] = 0;\n HEAP32[$vararg_buffer + 8 >> 2] = $off;\n HEAP32[$vararg_buffer + 12 >> 2] = $ret;\n HEAP32[$vararg_buffer + 16 >> 2] = $whence;\n if ((___syscall_ret(___syscall140(140, $vararg_buffer | 0) | 0) | 0) < 0) {\n  HEAP32[$ret >> 2] = -1;\n  $5 = -1;\n } else $5 = HEAP32[$ret >> 2] | 0;\n STACKTOP = sp;\n return $5 | 0;\n}\n\nfunction __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($this) {\n $this = $this | 0;\n var $1 = 0, $2 = 0, $3 = 0, $5 = 0, $6 = 0, $9 = 0;\n $1 = HEAP32[$this + 4 >> 2] | 0;\n $2 = $this + 8 | 0;\n $3 = HEAP32[$2 >> 2] | 0;\n if (($3 | 0) != ($1 | 0)) {\n  $6 = $3;\n  do {\n   $5 = $6 + -24 | 0;\n   HEAP32[$2 >> 2] = $5;\n   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($5);\n   $6 = HEAP32[$2 >> 2] | 0;\n  } while (($6 | 0) != ($1 | 0));\n }\n $9 = HEAP32[$this >> 2] | 0;\n if ($9) __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE10deallocateEPcj(HEAP32[HEAP32[$this + 16 >> 2] >> 2] | 0, $9, (HEAP32[$this + 12 >> 2] | 0) - $9 | 0);\n return;\n}\n\nfunction __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($this) {\n $this = $this | 0;\n var $0 = 0, $2 = 0, $3 = 0, $5 = 0, $6 = 0, $9 = 0;\n $0 = HEAP32[$this >> 2] | 0;\n if ($0) {\n  $2 = $this + 4 | 0;\n  $3 = HEAP32[$2 >> 2] | 0;\n  if (($3 | 0) != ($0 | 0)) {\n   $6 = $3;\n   do {\n    $5 = $6 + -24 | 0;\n    HEAP32[$2 >> 2] = $5;\n    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($5);\n    $6 = HEAP32[$2 >> 2] | 0;\n   } while (($6 | 0) != ($0 | 0));\n  }\n  $9 = HEAP32[$this >> 2] | 0;\n  __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE10deallocateEPcj(HEAP32[$this + 12 >> 2] | 0, $9, (HEAP32[$this + 8 >> 2] | 0) - $9 | 0);\n }\n return;\n}\n\nfunction __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEE25__construct_node_with_keyERS8_($agg$result, $this, $__k) {\n $agg$result = $agg$result | 0;\n $this = $this | 0;\n $__k = $__k | 0;\n var $1 = 0, $11 = 0, $8 = 0;\n $1 = __Znwj(408) | 0;\n HEAP32[$1 + 8 >> 2] = HEAP32[$__k >> 2];\n _memset($1 + 16 | 0, 0, 392) | 0;\n HEAPF64[$1 + 248 >> 3] = .0001;\n HEAPF64[$1 + 256 >> 3] = 1.0e3;\n $8 = $1 + 264 | 0;\n HEAP32[$8 >> 2] = 0;\n HEAP32[$8 + 4 >> 2] = 0;\n HEAP32[$8 + 8 >> 2] = 0;\n HEAP32[$8 + 12 >> 2] = 0;\n HEAP32[$agg$result >> 2] = $1;\n $11 = $agg$result + 4 | 0;\n HEAP32[$11 >> 2] = $this + 8;\n HEAP32[$11 + 4 >> 2] = 257;\n return;\n}\n\nfunction _arVecHousehold($x) {\n $x = $x | 0;\n var $1 = 0.0, $10 = 0.0, $12 = 0, $14 = 0, $3 = 0, $4 = 0.0, $7 = 0.0, $i$01 = 0, $s$0 = 0.0, $s$1 = 0.0;\n $1 = +Math_sqrt(+(+_arVecInnerproduct($x, $x)));\n if ($1 != 0.0) {\n  $3 = HEAP32[$x >> 2] | 0;\n  $4 = +HEAPF64[$3 >> 3];\n  $s$0 = $4 < 0.0 ? -$1 : $1;\n  $7 = $4 + $s$0;\n  HEAPF64[$3 >> 3] = $7;\n  $10 = 1.0 / +Math_sqrt(+($7 * $s$0));\n  $12 = HEAP32[$x + 4 >> 2] | 0;\n  if (($12 | 0) > 0) {\n   $i$01 = 0;\n   do {\n    $14 = $3 + ($i$01 << 3) | 0;\n    HEAPF64[$14 >> 3] = $10 * +HEAPF64[$14 >> 3];\n    $i$01 = $i$01 + 1 | 0;\n   } while (($i$01 | 0) < ($12 | 0));\n   $s$1 = $s$0;\n  } else $s$1 = $s$0;\n } else $s$1 = $1;\n return +-$s$1;\n}\n\nfunction __ZNSt3__114__split_bufferINS_6vectorINS1_IN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEEERNS5_IS9_Lj4096EEEEC2EjjSB_($this, $__cap, $__start, $__a) {\n $this = $this | 0;\n $__cap = $__cap | 0;\n $__start = $__start | 0;\n $__a = $__a | 0;\n var $6 = 0, $7 = 0;\n HEAP32[$this + 12 >> 2] = 0;\n HEAP32[$this + 16 >> 2] = $__a;\n if (!$__cap) $6 = 0; else $6 = __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE8allocateEj(HEAP32[$__a >> 2] | 0, $__cap << 4) | 0;\n HEAP32[$this >> 2] = $6;\n $7 = $6 + ($__start << 4) | 0;\n HEAP32[$this + 8 >> 2] = $7;\n HEAP32[$this + 4 >> 2] = $7;\n HEAP32[$this + 12 >> 2] = $6 + ($__cap << 4);\n return;\n}\n\nfunction _memset(ptr, value, num) {\n ptr = ptr | 0;\n value = value | 0;\n num = num | 0;\n var stop = 0, value4 = 0, stop4 = 0, unaligned = 0;\n stop = ptr + num | 0;\n if ((num | 0) >= 20) {\n  value = value & 255;\n  unaligned = ptr & 3;\n  value4 = value | value << 8 | value << 16 | value << 24;\n  stop4 = stop & ~3;\n  if (unaligned) {\n   unaligned = ptr + 4 - unaligned | 0;\n   while ((ptr | 0) < (unaligned | 0)) {\n    HEAP8[ptr >> 0] = value;\n    ptr = ptr + 1 | 0;\n   }\n  }\n  while ((ptr | 0) < (stop4 | 0)) {\n   HEAP32[ptr >> 2] = value4;\n   ptr = ptr + 4 | 0;\n  }\n }\n while ((ptr | 0) < (stop | 0)) {\n  HEAP8[ptr >> 0] = value;\n  ptr = ptr + 1 | 0;\n }\n return ptr - num | 0;\n}\n\nfunction __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($this, $__s, $__sz) {\n $this = $this | 0;\n $__s = $__s | 0;\n $__sz = $__sz | 0;\n var $6 = 0, $7 = 0, $__p$0 = 0;\n if ($__sz >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv($this);\n if ($__sz >>> 0 < 11) {\n  HEAP8[$this >> 0] = $__sz << 1;\n  $__p$0 = $this + 1 | 0;\n } else {\n  $6 = $__sz + 16 & -16;\n  $7 = _malloc($6) | 0;\n  HEAP32[$this + 8 >> 2] = $7;\n  HEAP32[$this >> 2] = $6 | 1;\n  HEAP32[$this + 4 >> 2] = $__sz;\n  $__p$0 = $7;\n }\n _memcpy($__p$0 | 0, $__s | 0, $__sz | 0) | 0;\n HEAP8[$__p$0 + $__sz >> 0] = 0;\n return;\n}\n\nfunction __ZNK10__cxxabiv122__base_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi($this, $info, $adjustedPtr, $path_below) {\n $this = $this | 0;\n $info = $info | 0;\n $adjustedPtr = $adjustedPtr | 0;\n $path_below = $path_below | 0;\n var $1 = 0, $2 = 0, $8 = 0, $offset_to_base$0 = 0;\n $1 = HEAP32[$this + 4 >> 2] | 0;\n $2 = $1 >> 8;\n if (!($1 & 1)) $offset_to_base$0 = $2; else $offset_to_base$0 = HEAP32[(HEAP32[$adjustedPtr >> 2] | 0) + $2 >> 2] | 0;\n $8 = HEAP32[$this >> 2] | 0;\n FUNCTION_TABLE_viiii[HEAP32[(HEAP32[$8 >> 2] | 0) + 28 >> 2] & 3]($8, $info, $adjustedPtr + $offset_to_base$0 | 0, ($1 & 2 | 0) != 0 ? $path_below : 2);\n return;\n}\n\nfunction __ZN10emscripten8internal7InvokerIiJiNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEE6invokeEPFiiS8_EiPNS0_11BindingTypeIS8_EUt_E($fn, $args, $args1) {\n $fn = $fn | 0;\n $args = $args | 0;\n $args1 = $args1 | 0;\n var $0 = 0, $1 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $0 = sp;\n __ZN10emscripten8internal11BindingTypeINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE12fromWireTypeEPNS9_Ut_E($0, $args1);\n $1 = FUNCTION_TABLE_iii[$fn & 15]($args, $0) | 0;\n __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev($0);\n STACKTOP = sp;\n return $1 | 0;\n}\n\nfunction ___toread($f) {\n $f = $f | 0;\n var $$0 = 0, $0 = 0, $15 = 0, $2 = 0, $21 = 0, $6 = 0, $8 = 0;\n $0 = $f + 74 | 0;\n $2 = HEAP8[$0 >> 0] | 0;\n HEAP8[$0 >> 0] = $2 + 255 | $2;\n $6 = $f + 20 | 0;\n $8 = $f + 44 | 0;\n if ((HEAP32[$6 >> 2] | 0) >>> 0 > (HEAP32[$8 >> 2] | 0) >>> 0) FUNCTION_TABLE_iiii[HEAP32[$f + 36 >> 2] & 15]($f, 0, 0) | 0;\n HEAP32[$f + 16 >> 2] = 0;\n HEAP32[$f + 28 >> 2] = 0;\n HEAP32[$6 >> 2] = 0;\n $15 = HEAP32[$f >> 2] | 0;\n if (!($15 & 20)) {\n  $21 = HEAP32[$8 >> 2] | 0;\n  HEAP32[$f + 8 >> 2] = $21;\n  HEAP32[$f + 4 >> 2] = $21;\n  $$0 = 0;\n } else if (!($15 & 4)) $$0 = -1; else {\n  HEAP32[$f >> 2] = $15 | 32;\n  $$0 = -1;\n }\n return $$0 | 0;\n}\n\nfunction _fclose($f) {\n $f = $f | 0;\n var $$pre = 0, $12 = 0, $18 = 0, $22 = 0, $24 = 0, $5 = 0, $7 = 0;\n if ((HEAP32[$f + 76 >> 2] | 0) > -1) {}\n $5 = (HEAP32[$f >> 2] & 1 | 0) != 0;\n if (!$5) {\n  ___lock(2416);\n  $7 = HEAP32[$f + 52 >> 2] | 0;\n  $$pre = $f + 56 | 0;\n  if ($7) HEAP32[$7 + 56 >> 2] = HEAP32[$$pre >> 2];\n  $12 = HEAP32[$$pre >> 2] | 0;\n  if ($12) HEAP32[$12 + 52 >> 2] = $7;\n  if ((HEAP32[603] | 0) == ($f | 0)) HEAP32[603] = $12;\n  ___unlock(2416);\n }\n $18 = _fflush($f) | 0;\n $22 = FUNCTION_TABLE_ii[HEAP32[$f + 12 >> 2] & 31]($f) | 0 | $18;\n $24 = HEAP32[$f + 92 >> 2] | 0;\n if ($24) _free($24);\n if (!$5) _free($f);\n return $22 | 0;\n}\n\nfunction __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($this, $__cap, $__start, $__a) {\n $this = $this | 0;\n $__cap = $__cap | 0;\n $__start = $__start | 0;\n $__a = $__a | 0;\n var $6 = 0, $7 = 0;\n HEAP32[$this + 12 >> 2] = 0;\n HEAP32[$this + 16 >> 2] = $__a;\n if (!$__cap) $6 = 0; else $6 = __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE8allocateEj(HEAP32[$__a >> 2] | 0, $__cap << 4) | 0;\n HEAP32[$this >> 2] = $6;\n $7 = $6 + ($__start << 4) | 0;\n HEAP32[$this + 8 >> 2] = $7;\n HEAP32[$this + 4 >> 2] = $7;\n HEAP32[$this + 12 >> 2] = $6 + ($__cap << 4);\n return;\n}\n\nfunction __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj($this, $__s, $__sz) {\n $this = $this | 0;\n $__s = $__s | 0;\n $__sz = $__sz | 0;\n var $6 = 0, $7 = 0, $__p$0 = 0;\n if ($__sz >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv($this);\n if ($__sz >>> 0 < 11) {\n  HEAP8[$this >> 0] = $__sz << 1;\n  $__p$0 = $this + 1 | 0;\n } else {\n  $6 = $__sz + 16 & -16;\n  $7 = __Znwj($6) | 0;\n  HEAP32[$this + 8 >> 2] = $7;\n  HEAP32[$this >> 2] = $6 | 1;\n  HEAP32[$this + 4 >> 2] = $__sz;\n  $__p$0 = $7;\n }\n _memcpy($__p$0 | 0, $__s | 0, $__sz | 0) | 0;\n HEAP8[$__p$0 + $__sz >> 0] = 0;\n return;\n}\n\nfunction _arVecInnerproduct($x, $y) {\n $x = $x | 0;\n $y = $y | 0;\n var $1 = 0, $13 = 0.0, $6 = 0, $7 = 0, $i$02 = 0, $result$0$lcssa = 0.0, $result$01 = 0.0;\n $1 = HEAP32[$x + 4 >> 2] | 0;\n if (($1 | 0) != (HEAP32[$y + 4 >> 2] | 0)) _exit(0);\n if (($1 | 0) > 0) {\n  $6 = HEAP32[$x >> 2] | 0;\n  $7 = HEAP32[$y >> 2] | 0;\n  $i$02 = 0;\n  $result$01 = 0.0;\n  while (1) {\n   $13 = $result$01 + +HEAPF64[$6 + ($i$02 << 3) >> 3] * +HEAPF64[$7 + ($i$02 << 3) >> 3];\n   $i$02 = $i$02 + 1 | 0;\n   if (($i$02 | 0) >= ($1 | 0)) {\n    $result$0$lcssa = $13;\n    break;\n   } else $result$01 = $13;\n  }\n } else $result$0$lcssa = 0.0;\n return +$result$0$lcssa;\n}\n\nfunction _memcmp($vl, $vr, $n) {\n $vl = $vl | 0;\n $vr = $vr | 0;\n $n = $n | 0;\n var $$03 = 0, $$lcssa = 0, $$lcssa19 = 0, $1 = 0, $11 = 0, $2 = 0, $l$04 = 0, $r$05 = 0;\n L1 : do if (!$n) $11 = 0; else {\n  $$03 = $n;\n  $l$04 = $vl;\n  $r$05 = $vr;\n  while (1) {\n   $1 = HEAP8[$l$04 >> 0] | 0;\n   $2 = HEAP8[$r$05 >> 0] | 0;\n   if ($1 << 24 >> 24 != $2 << 24 >> 24) {\n    $$lcssa = $1;\n    $$lcssa19 = $2;\n    break;\n   }\n   $$03 = $$03 + -1 | 0;\n   if (!$$03) {\n    $11 = 0;\n    break L1;\n   } else {\n    $l$04 = $l$04 + 1 | 0;\n    $r$05 = $r$05 + 1 | 0;\n   }\n  }\n  $11 = ($$lcssa & 255) - ($$lcssa19 & 255) | 0;\n } while (0);\n return $11 | 0;\n}\n\nfunction ___fmodeflags($mode) {\n $mode = $mode | 0;\n var $1 = 0, $2 = 0, $4 = 0, $7 = 0, $flags$0 = 0, $flags$0$ = 0, $flags$2 = 0, $flags$2$ = 0, $flags$4 = 0;\n $1 = (_strchr($mode, 43) | 0) == 0;\n $2 = HEAP8[$mode >> 0] | 0;\n $flags$0 = $1 ? $2 << 24 >> 24 != 114 & 1 : 2;\n $4 = (_strchr($mode, 120) | 0) == 0;\n $flags$0$ = $4 ? $flags$0 : $flags$0 | 128;\n $7 = (_strchr($mode, 101) | 0) == 0;\n $flags$2 = $7 ? $flags$0$ : $flags$0$ | 524288;\n $flags$2$ = $2 << 24 >> 24 == 114 ? $flags$2 : $flags$2 | 64;\n $flags$4 = $2 << 24 >> 24 == 119 ? $flags$2$ | 512 : $flags$2$;\n return ($2 << 24 >> 24 == 97 ? $flags$4 | 1024 : $flags$4) | 0;\n}\n\nfunction __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($this, $__cap, $__start, $__a) {\n $this = $this | 0;\n $__cap = $__cap | 0;\n $__start = $__start | 0;\n $__a = $__a | 0;\n var $6 = 0, $7 = 0;\n HEAP32[$this + 12 >> 2] = 0;\n HEAP32[$this + 16 >> 2] = $__a;\n if (!$__cap) $6 = 0; else $6 = __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE8allocateEj(HEAP32[$__a >> 2] | 0, $__cap * 24 | 0) | 0;\n HEAP32[$this >> 2] = $6;\n $7 = $6 + ($__start * 24 | 0) | 0;\n HEAP32[$this + 8 >> 2] = $7;\n HEAP32[$this + 4 >> 2] = $7;\n HEAP32[$this + 12 >> 2] = $6 + ($__cap * 24 | 0);\n return;\n}\n\nfunction __ZN10emscripten8internal7InvokerIiJNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEE6invokeEPFiS8_EPNS0_11BindingTypeIS8_EUt_E($fn, $args) {\n $fn = $fn | 0;\n $args = $args | 0;\n var $0 = 0, $1 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $0 = sp;\n __ZN10emscripten8internal11BindingTypeINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE12fromWireTypeEPNS9_Ut_E($0, $args);\n $1 = FUNCTION_TABLE_ii[$fn & 31]($0) | 0;\n __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev($0);\n STACKTOP = sp;\n return $1 | 0;\n}\n\nfunction _strncat($d, $s, $n) {\n $d = $d | 0;\n $s = $s | 0;\n $n = $n | 0;\n var $$0$lcssa = 0, $$014 = 0, $$023 = 0, $$05 = 0, $1 = 0, $3 = 0, $7 = 0;\n $1 = $d + (_strlen($d) | 0) | 0;\n L1 : do if (!$n) $$0$lcssa = $1; else {\n  $$014 = $n;\n  $$023 = $s;\n  $$05 = $1;\n  while (1) {\n   $3 = HEAP8[$$023 >> 0] | 0;\n   if (!($3 << 24 >> 24)) {\n    $$0$lcssa = $$05;\n    break L1;\n   }\n   $$014 = $$014 + -1 | 0;\n   $7 = $$05 + 1 | 0;\n   HEAP8[$$05 >> 0] = $3;\n   if (!$$014) {\n    $$0$lcssa = $7;\n    break;\n   } else {\n    $$023 = $$023 + 1 | 0;\n    $$05 = $7;\n   }\n  }\n } while (0);\n HEAP8[$$0$lcssa >> 0] = 0;\n return $d | 0;\n}\n\nfunction _get_buff($buf, $fp) {\n $buf = $buf | 0;\n $fp = $fp | 0;\n var $2 = 0, $5 = 0, $l$01 = 0;\n L1 : do if (_fgets($buf, 256, $fp) | 0) while (1) {\n  $2 = _strlen($buf) | 0;\n  L4 : do if ($2) {\n   $l$01 = $2;\n   while (1) {\n    $l$01 = $l$01 + -1 | 0;\n    $5 = $buf + $l$01 | 0;\n    switch (HEAP8[$5 >> 0] | 0) {\n    case 13:\n    case 10:\n     break;\n    default:\n     break L4;\n    }\n    HEAP8[$5 >> 0] = 0;\n    if (!$l$01) break L4;\n   }\n  } while (0);\n  switch (HEAP8[$buf >> 0] | 0) {\n  case 0:\n  case 35:\n   break;\n  default:\n   break L1;\n  }\n  if (!(_fgets($buf, 256, $fp) | 0)) break L1;\n } while (0);\n return;\n}\n\nfunction __ZNK10__cxxabiv120__si_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi($this, $info, $adjustedPtr, $path_below) {\n $this = $this | 0;\n $info = $info | 0;\n $adjustedPtr = $adjustedPtr | 0;\n $path_below = $path_below | 0;\n var $4 = 0;\n if (($this | 0) == (HEAP32[$info + 8 >> 2] | 0)) __ZNK10__cxxabiv117__class_type_info24process_found_base_classEPNS_19__dynamic_cast_infoEPvi(0, $info, $adjustedPtr, $path_below); else {\n  $4 = HEAP32[$this + 8 >> 2] | 0;\n  FUNCTION_TABLE_viiii[HEAP32[(HEAP32[$4 >> 2] | 0) + 28 >> 2] & 3]($4, $info, $adjustedPtr, $path_below);\n }\n return;\n}\n\nfunction ___stdout_write($f, $buf, $len) {\n $f = $f | 0;\n $buf = $buf | 0;\n $len = $len | 0;\n var $9 = 0, $vararg_buffer = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 80 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n HEAP32[$f + 36 >> 2] = 4;\n if (!(HEAP32[$f >> 2] & 64)) {\n  HEAP32[$vararg_buffer >> 2] = HEAP32[$f + 60 >> 2];\n  HEAP32[$vararg_buffer + 4 >> 2] = 21505;\n  HEAP32[$vararg_buffer + 8 >> 2] = sp + 12;\n  if (___syscall54(54, $vararg_buffer | 0) | 0) HEAP8[$f + 75 >> 0] = -1;\n }\n $9 = ___stdio_write($f, $buf, $len) | 0;\n STACKTOP = sp;\n return $9 | 0;\n}\n\nfunction _arUtilGetDirectoryNameFromPath($dir, $path, $n, $addSeparator) {\n $dir = $dir | 0;\n $path = $path | 0;\n $n = $n | 0;\n $addSeparator = $addSeparator | 0;\n var $$0 = 0, $10 = 0, $3 = 0;\n do if (($dir | 0) != 0 & ($path | 0) != 0 & ($n | 0) != 0) {\n  $3 = _strrchr($path, 47) | 0;\n  if (!$3) {\n   HEAP8[$dir >> 0] = 0;\n   $$0 = $dir;\n   break;\n  }\n  $10 = $3 + (($addSeparator | 0) != 0 & 1) - $path | 0;\n  if (($10 + 1 | 0) >>> 0 > $n >>> 0) $$0 = 0; else {\n   _strncpy($dir, $path, $10) | 0;\n   HEAP8[$dir + $10 >> 0] = 0;\n   $$0 = $dir;\n  }\n } else $$0 = 0; while (0);\n return $$0 | 0;\n}\n\nfunction __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEED2Ev($this) {\n $this = $this | 0;\n var $2 = 0;\n __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE12__deallocateEPNS_11__hash_nodeIS3_PvEE($this, HEAP32[$this + 8 >> 2] | 0);\n $2 = HEAP32[$this >> 2] | 0;\n HEAP32[$this >> 2] = 0;\n if ($2) __ZdlPv($2);\n return;\n}\n\nfunction __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE12__deallocateEPNS_11__hash_nodeIS3_PvEE($this, $__np) {\n $this = $this | 0;\n $__np = $__np | 0;\n var $$01 = 0, $$01$looptemp = 0;\n if ($__np) {\n  $$01 = $__np;\n  do {\n   $$01$looptemp = $$01;\n   $$01 = HEAP32[$$01 >> 2] | 0;\n   __ZNSt3__113__vector_baseI12multi_markerNS_9allocatorIS1_EEED2Ev($$01$looptemp + 264 | 0);\n   __ZdlPv($$01$looptemp);\n  } while (($$01 | 0) != 0);\n }\n return;\n}\n\nfunction __ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEED2Ev($this) {\n $this = $this | 0;\n var $2 = 0;\n __ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE12__deallocateEPNS_11__hash_nodeIS3_PvEE($this, HEAP32[$this + 8 >> 2] | 0);\n $2 = HEAP32[$this >> 2] | 0;\n HEAP32[$this >> 2] = 0;\n if ($2) __ZdlPv($2);\n return;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($this, $0) {\n $this = $this | 0;\n $0 = $0 | 0;\n var $3 = 0, $4 = 0;\n HEAP32[$this >> 2] = HEAP32[$0 >> 2];\n HEAP32[$this + 4 >> 2] = HEAP32[$0 + 4 >> 2];\n HEAP32[$this + 8 >> 2] = HEAP32[$0 + 8 >> 2];\n HEAP32[$0 >> 2] = 0;\n HEAP32[$0 + 4 >> 2] = 0;\n HEAP32[$0 + 8 >> 2] = 0;\n $3 = $this + 12 | 0;\n $4 = $0 + 12 | 0;\n HEAP32[$3 >> 2] = HEAP32[$4 >> 2];\n HEAP32[$3 + 4 >> 2] = HEAP32[$4 + 4 >> 2];\n HEAP32[$3 + 8 >> 2] = HEAP32[$4 + 8 >> 2];\n HEAP32[$4 >> 2] = 0;\n HEAP32[$4 + 4 >> 2] = 0;\n HEAP32[$4 + 8 >> 2] = 0;\n return;\n}\n\nfunction _arImageProcLumaHistAndCDF($ipi, $dataPtr) {\n $ipi = $ipi | 0;\n $dataPtr = $dataPtr | 0;\n var $$0 = 0, $0 = 0, $cdfCurrent$0 = 0, $indvars$iv = 0;\n $0 = _arImageProcLumaHist($ipi, $dataPtr) | 0;\n if (($0 | 0) < 0) $$0 = $0; else {\n  $cdfCurrent$0 = 0;\n  $indvars$iv = 0;\n  do {\n   $cdfCurrent$0 = (HEAP32[$ipi + 16 + ($indvars$iv << 2) >> 2] | 0) + $cdfCurrent$0 | 0;\n   HEAP32[$ipi + 1040 + ($indvars$iv << 2) >> 2] = $cdfCurrent$0;\n   $indvars$iv = $indvars$iv + 1 | 0;\n  } while (($indvars$iv | 0) != 256);\n  $$0 = 0;\n }\n return $$0 | 0;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj5EEERAT__Kc($this, $s) {\n $this = $this | 0;\n $s = $s | 0;\n var $0 = 0, $1 = 0, $3 = 0;\n HEAP8[$this >> 0] = 8;\n $0 = $this + 1 | 0;\n $1 = HEAPU8[$s >> 0] | HEAPU8[$s + 1 >> 0] << 8 | HEAPU8[$s + 2 >> 0] << 16 | HEAPU8[$s + 3 >> 0] << 24;\n HEAP8[$0 >> 0] = $1;\n HEAP8[$0 + 1 >> 0] = $1 >> 8;\n HEAP8[$0 + 2 >> 0] = $1 >> 16;\n HEAP8[$0 + 3 >> 0] = $1 >> 24;\n HEAP8[$this + 5 >> 0] = 0;\n $3 = $this + 12 | 0;\n HEAP32[$3 >> 2] = 0;\n HEAP32[$3 + 4 >> 2] = 0;\n HEAP32[$3 + 8 >> 2] = 0;\n return;\n}\n\nfunction _vsscanf($s, $fmt, $ap) {\n $s = $s | 0;\n $fmt = $fmt | 0;\n $ap = $ap | 0;\n var $4 = 0, $f = 0, dest = 0, sp = 0, stop = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 112 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $f = sp;\n dest = $f;\n stop = dest + 112 | 0;\n do {\n  HEAP32[dest >> 2] = 0;\n  dest = dest + 4 | 0;\n } while ((dest | 0) < (stop | 0));\n HEAP32[$f + 32 >> 2] = 15;\n HEAP32[$f + 44 >> 2] = $s;\n HEAP32[$f + 76 >> 2] = -1;\n HEAP32[$f + 84 >> 2] = $s;\n $4 = _vfscanf($f, $fmt, $ap) | 0;\n STACKTOP = sp;\n return $4 | 0;\n}\n\nfunction __ZNSt3__114__split_bufferI12multi_markerRNS_9allocatorIS1_EEED2Ev($this) {\n $this = $this | 0;\n var $$lcssa = 0, $$pre$i$i$i = 0, $1 = 0, $2 = 0, $4 = 0, $5 = 0, $7 = 0;\n $1 = HEAP32[$this + 4 >> 2] | 0;\n $2 = $this + 8 | 0;\n $$pre$i$i$i = HEAP32[$2 >> 2] | 0;\n if (($$pre$i$i$i | 0) != ($1 | 0)) {\n  $5 = $$pre$i$i$i;\n  while (1) {\n   $4 = $5 + -8 | 0;\n   if (($4 | 0) == ($1 | 0)) {\n    $$lcssa = $4;\n    break;\n   } else $5 = $4;\n  }\n  HEAP32[$2 >> 2] = $$lcssa;\n }\n $7 = HEAP32[$this >> 2] | 0;\n if ($7) __ZdlPv($7);\n return;\n}\n\nfunction __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($this, $__str) {\n $this = $this | 0;\n $__str = $__str | 0;\n if (!(HEAP8[$__str >> 0] & 1)) {\n  HEAP32[$this >> 2] = HEAP32[$__str >> 2];\n  HEAP32[$this + 4 >> 2] = HEAP32[$__str + 4 >> 2];\n  HEAP32[$this + 8 >> 2] = HEAP32[$__str + 8 >> 2];\n } else __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($this, HEAP32[$__str + 8 >> 2] | 0, HEAP32[$__str + 4 >> 2] | 0);\n return;\n}\n\nfunction __ZNK10__cxxabiv117__class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib($this, $info, $dst_ptr, $current_ptr, $path_below, $use_strcmp) {\n $this = $this | 0;\n $info = $info | 0;\n $dst_ptr = $dst_ptr | 0;\n $current_ptr = $current_ptr | 0;\n $path_below = $path_below | 0;\n $use_strcmp = $use_strcmp | 0;\n if (($this | 0) == (HEAP32[$info + 8 >> 2] | 0)) __ZNK10__cxxabiv117__class_type_info29process_static_type_above_dstEPNS_19__dynamic_cast_infoEPKvS4_i(0, $info, $dst_ptr, $current_ptr, $path_below);\n return;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj6EEERAT__Kc($this, $s) {\n $this = $this | 0;\n $s = $s | 0;\n var $0 = 0, $2 = 0;\n HEAP8[$this >> 0] = 10;\n $0 = $this + 1 | 0;\n HEAP8[$0 >> 0] = HEAP8[$s >> 0] | 0;\n HEAP8[$0 + 1 >> 0] = HEAP8[$s + 1 >> 0] | 0;\n HEAP8[$0 + 2 >> 0] = HEAP8[$s + 2 >> 0] | 0;\n HEAP8[$0 + 3 >> 0] = HEAP8[$s + 3 >> 0] | 0;\n HEAP8[$0 + 4 >> 0] = HEAP8[$s + 4 >> 0] | 0;\n HEAP8[$this + 6 >> 0] = 0;\n $2 = $this + 12 | 0;\n HEAP32[$2 >> 2] = 0;\n HEAP32[$2 + 4 >> 2] = 0;\n HEAP32[$2 + 8 >> 2] = 0;\n return;\n}\n\nfunction _fwrite($src, $size, $nmemb, $f) {\n $src = $src | 0;\n $size = $size | 0;\n $nmemb = $nmemb | 0;\n $f = $f | 0;\n var $0 = 0, $10 = 0, $6 = 0, $8 = 0, $phitmp = 0;\n $0 = Math_imul($nmemb, $size) | 0;\n if ((HEAP32[$f + 76 >> 2] | 0) > -1) {\n  $phitmp = (___lockfile($f) | 0) == 0;\n  $6 = ___fwritex($src, $0, $f) | 0;\n  if ($phitmp) $8 = $6; else {\n   ___unlockfile($f);\n   $8 = $6;\n  }\n } else $8 = ___fwritex($src, $0, $f) | 0;\n if (($8 | 0) == ($0 | 0)) $10 = $nmemb; else $10 = ($8 >>> 0) / ($size >>> 0) | 0;\n return $10 | 0;\n}\n\nfunction ___string_read($f, $buf, $len) {\n $f = $f | 0;\n $buf = $buf | 0;\n $len = $len | 0;\n var $0 = 0, $1 = 0, $11 = 0, $2 = 0, $3 = 0, $k$0 = 0, $k$0$len = 0;\n $0 = $f + 84 | 0;\n $1 = HEAP32[$0 >> 2] | 0;\n $2 = $len + 256 | 0;\n $3 = _memchr($1, 0, $2) | 0;\n $k$0 = ($3 | 0) == 0 ? $2 : $3 - $1 | 0;\n $k$0$len = $k$0 >>> 0 < $len >>> 0 ? $k$0 : $len;\n _memcpy($buf | 0, $1 | 0, $k$0$len | 0) | 0;\n HEAP32[$f + 4 >> 2] = $1 + $k$0$len;\n $11 = $1 + $k$0 | 0;\n HEAP32[$f + 8 >> 2] = $11;\n HEAP32[$0 >> 2] = $11;\n return $k$0$len | 0;\n}\n\nfunction __Znwj($size) {\n $size = $size | 0;\n var $$lcssa = 0, $$size = 0, $1 = 0, $3 = 0, $5 = 0, $7 = 0;\n $$size = ($size | 0) == 0 ? 1 : $size;\n $1 = _malloc($$size) | 0;\n L1 : do if (!$1) {\n  while (1) {\n   $3 = __ZSt15get_new_handlerv() | 0;\n   if (!$3) break;\n   FUNCTION_TABLE_v[$3 & 0]();\n   $5 = _malloc($$size) | 0;\n   if ($5) {\n    $$lcssa = $5;\n    break L1;\n   }\n  }\n  $7 = ___cxa_allocate_exception(4) | 0;\n  HEAP32[$7 >> 2] = 2224;\n  ___cxa_throw($7 | 0, 544, 1);\n } else $$lcssa = $1; while (0);\n return $$lcssa | 0;\n}\n\nfunction _calloc($n_elements, $elem_size) {\n $n_elements = $n_elements | 0;\n $elem_size = $elem_size | 0;\n var $1 = 0, $6 = 0, $req$0 = 0;\n if (!$n_elements) $req$0 = 0; else {\n  $1 = Math_imul($elem_size, $n_elements) | 0;\n  if (($elem_size | $n_elements) >>> 0 > 65535) $req$0 = (($1 >>> 0) / ($n_elements >>> 0) | 0 | 0) == ($elem_size | 0) ? $1 : -1; else $req$0 = $1;\n }\n $6 = _malloc($req$0) | 0;\n if (!$6) return $6 | 0;\n if (!(HEAP32[$6 + -4 >> 2] & 3)) return $6 | 0;\n _memset($6 | 0, 0, $req$0 | 0) | 0;\n return $6 | 0;\n}\n\nfunction ___muldi3($a$0, $a$1, $b$0, $b$1) {\n $a$0 = $a$0 | 0;\n $a$1 = $a$1 | 0;\n $b$0 = $b$0 | 0;\n $b$1 = $b$1 | 0;\n var $x_sroa_0_0_extract_trunc = 0, $y_sroa_0_0_extract_trunc = 0, $1$0 = 0, $1$1 = 0;\n $x_sroa_0_0_extract_trunc = $a$0;\n $y_sroa_0_0_extract_trunc = $b$0;\n $1$0 = ___muldsi3($x_sroa_0_0_extract_trunc, $y_sroa_0_0_extract_trunc) | 0;\n $1$1 = tempRet0;\n return (tempRet0 = (Math_imul($a$1, $y_sroa_0_0_extract_trunc) | 0) + (Math_imul($b$1, $x_sroa_0_0_extract_trunc) | 0) + $1$1 | $1$1 & 0, $1$0 | 0 | 0) | 0;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_12DbD2Ev($this) {\n $this = $this | 0;\n __ZNSt3__113__vector_baseINS_6vectorINS1_IN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEEENS5_IS9_Lj4096EEEED2Ev($this + 32 | 0);\n __ZNSt3__113__vector_baseINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEED2Ev($this + 16 | 0);\n __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($this);\n return;\n}\n\nfunction __ZNSt3__114__split_bufferI12multi_markerRNS_9allocatorIS1_EEEC2EjjS4_($this, $__cap, $__start, $__a) {\n $this = $this | 0;\n $__cap = $__cap | 0;\n $__start = $__start | 0;\n $__a = $__a | 0;\n var $5 = 0, $6 = 0;\n HEAP32[$this + 12 >> 2] = 0;\n HEAP32[$this + 16 >> 2] = $__a;\n if (!$__cap) $5 = 0; else $5 = __Znwj($__cap << 3) | 0;\n HEAP32[$this >> 2] = $5;\n $6 = $5 + ($__start << 3) | 0;\n HEAP32[$this + 8 >> 2] = $6;\n HEAP32[$this + 4 >> 2] = $6;\n HEAP32[$this + 12 >> 2] = $5 + ($__cap << 3);\n return;\n}\n\nfunction __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEaSERKS7_($this, $__str) {\n $this = $this | 0;\n $__str = $__str | 0;\n var $1 = 0, $3 = 0;\n if (($this | 0) != ($__str | 0)) {\n  $1 = HEAP8[$__str >> 0] | 0;\n  $3 = ($1 & 1) == 0;\n  __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6assignEPKcj($this, $3 ? $__str + 1 | 0 : HEAP32[$__str + 8 >> 2] | 0, $3 ? ($1 & 255) >>> 1 : HEAP32[$__str + 4 >> 2] | 0);\n }\n return;\n}\n\nfunction __ZNSt3__113__vector_baseI12multi_markerNS_9allocatorIS1_EEED2Ev($this) {\n $this = $this | 0;\n var $$lcssa = 0, $$pre$i$i = 0, $0 = 0, $2 = 0, $4 = 0, $5 = 0;\n $0 = HEAP32[$this >> 2] | 0;\n if ($0) {\n  $2 = $this + 4 | 0;\n  $$pre$i$i = HEAP32[$2 >> 2] | 0;\n  if (($$pre$i$i | 0) != ($0 | 0)) {\n   $5 = $$pre$i$i;\n   while (1) {\n    $4 = $5 + -8 | 0;\n    if (($4 | 0) == ($0 | 0)) {\n     $$lcssa = $4;\n     break;\n    } else $5 = $4;\n   }\n   HEAP32[$2 >> 2] = $$lcssa;\n  }\n  __ZdlPv($0);\n }\n return;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($this, $s) {\n $this = $this | 0;\n $s = $s | 0;\n var $2 = 0, dest = 0, src = 0, stop = 0;\n HEAP8[$this >> 0] = 20;\n dest = $this + 1 | 0;\n src = $s;\n stop = dest + 10 | 0;\n do {\n  HEAP8[dest >> 0] = HEAP8[src >> 0] | 0;\n  dest = dest + 1 | 0;\n  src = src + 1 | 0;\n } while ((dest | 0) < (stop | 0));\n HEAP8[$this + 11 >> 0] = 0;\n $2 = $this + 12 | 0;\n HEAP32[$2 >> 2] = 0;\n HEAP32[$2 + 4 >> 2] = 0;\n HEAP32[$2 + 8 >> 2] = 0;\n return;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($this, $s) {\n $this = $this | 0;\n $s = $s | 0;\n var $2 = 0, dest = 0, src = 0, stop = 0;\n HEAP8[$this >> 0] = 18;\n dest = $this + 1 | 0;\n src = $s;\n stop = dest + 9 | 0;\n do {\n  HEAP8[dest >> 0] = HEAP8[src >> 0] | 0;\n  dest = dest + 1 | 0;\n  src = src + 1 | 0;\n } while ((dest | 0) < (stop | 0));\n HEAP8[$this + 10 >> 0] = 0;\n $2 = $this + 12 | 0;\n HEAP32[$2 >> 2] = 0;\n HEAP32[$2 + 4 >> 2] = 0;\n HEAP32[$2 + 8 >> 2] = 0;\n return;\n}\n\nfunction ___towrite($f) {\n $f = $f | 0;\n var $$0 = 0, $0 = 0, $13 = 0, $2 = 0, $6 = 0;\n $0 = $f + 74 | 0;\n $2 = HEAP8[$0 >> 0] | 0;\n HEAP8[$0 >> 0] = $2 + 255 | $2;\n $6 = HEAP32[$f >> 2] | 0;\n if (!($6 & 8)) {\n  HEAP32[$f + 8 >> 2] = 0;\n  HEAP32[$f + 4 >> 2] = 0;\n  $13 = HEAP32[$f + 44 >> 2] | 0;\n  HEAP32[$f + 28 >> 2] = $13;\n  HEAP32[$f + 20 >> 2] = $13;\n  HEAP32[$f + 16 >> 2] = $13 + (HEAP32[$f + 48 >> 2] | 0);\n  $$0 = 0;\n } else {\n  HEAP32[$f >> 2] = $6 | 32;\n  $$0 = -1;\n }\n return $$0 | 0;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($this, $f) {\n $this = $this | 0;\n $f = $f | 0;\n var $2 = 0;\n HEAP32[$this >> 2] = HEAP32[$f >> 2];\n HEAP32[$this + 4 >> 2] = HEAP32[$f + 4 >> 2];\n HEAP32[$this + 8 >> 2] = HEAP32[$f + 8 >> 2];\n HEAP32[$f >> 2] = 0;\n HEAP32[$f + 4 >> 2] = 0;\n HEAP32[$f + 8 >> 2] = 0;\n $2 = $this + 12 | 0;\n HEAP32[$2 >> 2] = 0;\n HEAP32[$2 + 4 >> 2] = 0;\n HEAP32[$2 + 8 >> 2] = 0;\n return;\n}\n\nfunction _matrixCopy($src, $dst) {\n $src = $src | 0;\n $dst = $dst | 0;\n var $i$03 = 0;\n $i$03 = 0;\n do {\n  HEAPF64[$dst + ($i$03 << 5) >> 3] = +HEAPF64[$src + ($i$03 << 5) >> 3];\n  HEAPF64[$dst + ($i$03 << 5) + 8 >> 3] = +HEAPF64[$src + ($i$03 << 5) + 8 >> 3];\n  HEAPF64[$dst + ($i$03 << 5) + 16 >> 3] = +HEAPF64[$src + ($i$03 << 5) + 16 >> 3];\n  HEAPF64[$dst + ($i$03 << 5) + 24 >> 3] = +HEAPF64[$src + ($i$03 << 5) + 24 >> 3];\n  $i$03 = $i$03 + 1 | 0;\n } while (($i$03 | 0) != 3);\n return;\n}\n\nfunction __ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE12__deallocateEPNS_11__hash_nodeIS3_PvEE($this, $__np) {\n $this = $this | 0;\n $__np = $__np | 0;\n var $$01 = 0, $$01$looptemp = 0;\n if ($__np) {\n  $$01 = $__np;\n  do {\n   $$01$looptemp = $$01;\n   $$01 = HEAP32[$$01 >> 2] | 0;\n   __ZdlPv($$01$looptemp);\n  } while (($$01 | 0) != 0);\n }\n return;\n}\n\nfunction __ZNSt3__113unordered_mapIi7ARParamNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEE25__construct_node_with_keyERS8_($agg$result, $this, $__k) {\n $agg$result = $agg$result | 0;\n $this = $this | 0;\n $__k = $__k | 0;\n var $1 = 0, $8 = 0;\n $1 = __Znwj(200) | 0;\n HEAP32[$1 + 8 >> 2] = HEAP32[$__k >> 2];\n _memset($1 + 16 | 0, 0, 184) | 0;\n HEAP32[$agg$result >> 2] = $1;\n $8 = $agg$result + 4 | 0;\n HEAP32[$8 >> 2] = $this + 8;\n HEAP32[$8 + 4 >> 2] = 257;\n return;\n}\n\nfunction _byteSwapDouble($from, $to) {\n $from = $from | 0;\n $to = $to | 0;\n HEAP8[$to >> 0] = HEAP8[$from + 7 >> 0] | 0;\n HEAP8[$to + 1 >> 0] = HEAP8[$from + 6 >> 0] | 0;\n HEAP8[$to + 2 >> 0] = HEAP8[$from + 5 >> 0] | 0;\n HEAP8[$to + 3 >> 0] = HEAP8[$from + 4 >> 0] | 0;\n HEAP8[$to + 4 >> 0] = HEAP8[$from + 3 >> 0] | 0;\n HEAP8[$to + 5 >> 0] = HEAP8[$from + 2 >> 0] | 0;\n HEAP8[$to + 6 >> 0] = HEAP8[$from + 1 >> 0] | 0;\n HEAP8[$to + 7 >> 0] = HEAP8[$from >> 0] | 0;\n return;\n}\n\nfunction copyTempDouble(ptr) {\n ptr = ptr | 0;\n HEAP8[tempDoublePtr >> 0] = HEAP8[ptr >> 0];\n HEAP8[tempDoublePtr + 1 >> 0] = HEAP8[ptr + 1 >> 0];\n HEAP8[tempDoublePtr + 2 >> 0] = HEAP8[ptr + 2 >> 0];\n HEAP8[tempDoublePtr + 3 >> 0] = HEAP8[ptr + 3 >> 0];\n HEAP8[tempDoublePtr + 4 >> 0] = HEAP8[ptr + 4 >> 0];\n HEAP8[tempDoublePtr + 5 >> 0] = HEAP8[ptr + 5 >> 0];\n HEAP8[tempDoublePtr + 6 >> 0] = HEAP8[ptr + 6 >> 0];\n HEAP8[tempDoublePtr + 7 >> 0] = HEAP8[ptr + 7 >> 0];\n}\n\nfunction ___ftello_unlocked($f) {\n $f = $f | 0;\n var $$0 = 0, $10 = 0, $11 = 0;\n if (!(HEAP32[$f >> 2] & 128)) $10 = 1; else $10 = (HEAP32[$f + 20 >> 2] | 0) >>> 0 > (HEAP32[$f + 28 >> 2] | 0) >>> 0 ? 2 : 1;\n $11 = FUNCTION_TABLE_iiii[HEAP32[$f + 40 >> 2] & 15]($f, 0, $10) | 0;\n if (($11 | 0) < 0) $$0 = $11; else $$0 = $11 - (HEAP32[$f + 8 >> 2] | 0) + (HEAP32[$f + 4 >> 2] | 0) + (HEAP32[$f + 20 >> 2] | 0) - (HEAP32[$f + 28 >> 2] | 0) | 0;\n return $$0 | 0;\n}\n\nfunction ___uflow($f) {\n $f = $f | 0;\n var $$0 = 0, $c = 0, label = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $c = sp;\n if (!(HEAP32[$f + 8 >> 2] | 0)) if (!(___toread($f) | 0)) label = 3; else $$0 = -1; else label = 3;\n if ((label | 0) == 3) if ((FUNCTION_TABLE_iiii[HEAP32[$f + 32 >> 2] & 15]($f, $c, 1) | 0) == 1) $$0 = HEAPU8[$c >> 0] | 0; else $$0 = -1;\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction _deleteHandle($arc) {\n $arc = $arc | 0;\n var $0 = 0, $1 = 0, $4 = 0, $7 = 0;\n $0 = $arc + 212 | 0;\n $1 = HEAP32[$0 >> 2] | 0;\n if ($1) {\n  _arPattDetach($1) | 0;\n  _arDeleteHandle(HEAP32[$0 >> 2] | 0) | 0;\n  HEAP32[$0 >> 2] = 0;\n }\n $4 = $arc + 224 | 0;\n if (HEAP32[$4 >> 2] | 0) {\n  _ar3DDeleteHandle($4) | 0;\n  HEAP32[$4 >> 2] = 0;\n }\n $7 = $arc + 192 | 0;\n if (HEAP32[$7 >> 2] | 0) {\n  _arParamLTFree($7) | 0;\n  HEAP32[$7 >> 2] = 0;\n }\n return;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj4EEERAT__Kc($this, $s) {\n $this = $this | 0;\n $s = $s | 0;\n var $0 = 0, $2 = 0;\n HEAP8[$this >> 0] = 6;\n $0 = $this + 1 | 0;\n HEAP8[$0 >> 0] = HEAP8[$s >> 0] | 0;\n HEAP8[$0 + 1 >> 0] = HEAP8[$s + 1 >> 0] | 0;\n HEAP8[$0 + 2 >> 0] = HEAP8[$s + 2 >> 0] | 0;\n HEAP8[$this + 4 >> 0] = 0;\n $2 = $this + 12 | 0;\n HEAP32[$2 >> 2] = 0;\n HEAP32[$2 + 4 >> 2] = 0;\n HEAP32[$2 + 8 >> 2] = 0;\n return;\n}\n\nfunction __ZNK10__cxxabiv117__class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi($this, $info, $adjustedPtr, $path_below) {\n $this = $this | 0;\n $info = $info | 0;\n $adjustedPtr = $adjustedPtr | 0;\n $path_below = $path_below | 0;\n if (($this | 0) == (HEAP32[$info + 8 >> 2] | 0)) __ZNK10__cxxabiv117__class_type_info24process_found_base_classEPNS_19__dynamic_cast_infoEPvi(0, $info, $adjustedPtr, $path_below);\n return;\n}\n\nfunction ___muldsi3($a, $b) {\n $a = $a | 0;\n $b = $b | 0;\n var $1 = 0, $2 = 0, $3 = 0, $6 = 0, $8 = 0, $11 = 0, $12 = 0;\n $1 = $a & 65535;\n $2 = $b & 65535;\n $3 = Math_imul($2, $1) | 0;\n $6 = $a >>> 16;\n $8 = ($3 >>> 16) + (Math_imul($2, $6) | 0) | 0;\n $11 = $b >>> 16;\n $12 = Math_imul($11, $1) | 0;\n return (tempRet0 = ($8 >>> 16) + (Math_imul($11, $6) | 0) + ((($8 & 65535) + $12 | 0) >>> 16) | 0, $8 + $12 << 16 | $3 & 65535 | 0) | 0;\n}\n\nfunction _memmove(dest, src, num) {\n dest = dest | 0;\n src = src | 0;\n num = num | 0;\n var ret = 0;\n if ((src | 0) < (dest | 0) & (dest | 0) < (src + num | 0)) {\n  ret = dest;\n  src = src + num | 0;\n  dest = dest + num | 0;\n  while ((num | 0) > 0) {\n   dest = dest - 1 | 0;\n   src = src - 1 | 0;\n   num = num - 1 | 0;\n   HEAP8[dest >> 0] = HEAP8[src >> 0] | 0;\n  }\n  dest = ret;\n } else _memcpy(dest, src, num) | 0;\n return dest | 0;\n}\n\nfunction _arUtilGetPixelSize($arPixelFormat) {\n $arPixelFormat = $arPixelFormat | 0;\n var $$0 = 0;\n switch ($arPixelFormat | 0) {\n case 1:\n case 0:\n  {\n   $$0 = 3;\n   break;\n  }\n case 6:\n case 4:\n case 3:\n case 2:\n  {\n   $$0 = 4;\n   break;\n  }\n case 14:\n case 13:\n case 12:\n case 5:\n  {\n   $$0 = 1;\n   break;\n  }\n case 11:\n case 10:\n case 9:\n case 8:\n case 7:\n  {\n   $$0 = 2;\n   break;\n  }\n default:\n  $$0 = 0;\n }\n return $$0 | 0;\n}\n\nfunction _copysign($x, $y) {\n $x = +$x;\n $y = +$y;\n var $0 = 0, $1 = 0, $6 = 0;\n HEAPF64[tempDoublePtr >> 3] = $x;\n $0 = HEAP32[tempDoublePtr >> 2] | 0;\n $1 = HEAP32[tempDoublePtr + 4 >> 2] | 0;\n HEAPF64[tempDoublePtr >> 3] = $y;\n $6 = HEAP32[tempDoublePtr + 4 >> 2] & -2147483648 | $1 & 2147483647;\n HEAP32[tempDoublePtr >> 2] = $0;\n HEAP32[tempDoublePtr + 4 >> 2] = $6;\n return +(+HEAPF64[tempDoublePtr >> 3]);\n}\n\nfunction _arMatrixAlloc($row, $clm) {\n $row = $row | 0;\n $clm = $clm | 0;\n var $$0 = 0, $0 = 0, $4 = 0;\n $0 = _malloc(12) | 0;\n do if (!$0) $$0 = 0; else {\n  $4 = _malloc(Math_imul($row << 3, $clm) | 0) | 0;\n  HEAP32[$0 >> 2] = $4;\n  if (!$4) {\n   _free($0);\n   $$0 = 0;\n   break;\n  } else {\n   HEAP32[$0 + 4 >> 2] = $row;\n   HEAP32[$0 + 8 >> 2] = $clm;\n   $$0 = $0;\n   break;\n  }\n } while (0);\n return $$0 | 0;\n}\n\nfunction _ar3DCreateHandle2($cpara) {\n $cpara = $cpara | 0;\n var $$0 = 0, $0 = 0, $2 = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $0 = _malloc(4) | 0;\n if (!$0) {\n  _arLog(3, 5471, sp);\n  _exit(1);\n }\n $2 = _icpCreateHandle($cpara) | 0;\n HEAP32[$0 >> 2] = $2;\n if (!$2) {\n  _free($0);\n  $$0 = 0;\n } else $$0 = $0;\n STACKTOP = sp;\n return $$0 | 0;\n}\n\nfunction ___fseeko($f, $off, $whence) {\n $f = $f | 0;\n $off = $off | 0;\n $whence = $whence | 0;\n var $5 = 0, $6 = 0, $phitmp = 0;\n if ((HEAP32[$f + 76 >> 2] | 0) > -1) {\n  $phitmp = (___lockfile($f) | 0) == 0;\n  $5 = ___fseeko_unlocked($f, $off, $whence) | 0;\n  if ($phitmp) $6 = $5; else {\n   ___unlockfile($f);\n   $6 = $5;\n  }\n } else $6 = ___fseeko_unlocked($f, $off, $whence) | 0;\n return $6 | 0;\n}\n\nfunction __GLOBAL__sub_I_ARToolKitJS_cpp() {\n HEAP32[511] = 0;\n HEAP32[512] = 0;\n HEAP32[513] = 0;\n HEAP32[514] = 0;\n HEAPF32[515] = 1.0;\n ___cxa_atexit(11, 2044, ___dso_handle | 0) | 0;\n HEAP32[516] = 0;\n HEAP32[517] = 0;\n HEAP32[518] = 0;\n HEAP32[519] = 0;\n HEAPF32[520] = 1.0;\n ___cxa_atexit(12, 2064, ___dso_handle | 0) | 0;\n __ZN46EmscriptenBindingInitializer_constant_bindingsC2Ev(0);\n return;\n}\n\nfunction _arParamLTFree($paramLT_p) {\n $paramLT_p = $paramLT_p | 0;\n var $$0 = 0, $1 = 0;\n if (!$paramLT_p) $$0 = -1; else {\n  $1 = HEAP32[$paramLT_p >> 2] | 0;\n  if (!$1) $$0 = -1; else {\n   _free(HEAP32[$1 + 184 >> 2] | 0);\n   _free(HEAP32[(HEAP32[$paramLT_p >> 2] | 0) + 188 >> 2] | 0);\n   _free(HEAP32[$paramLT_p >> 2] | 0);\n   HEAP32[$paramLT_p >> 2] = 0;\n   $$0 = 0;\n  }\n }\n return $$0 | 0;\n}\n\nfunction ___uremdi3($a$0, $a$1, $b$0, $b$1) {\n $a$0 = $a$0 | 0;\n $a$1 = $a$1 | 0;\n $b$0 = $b$0 | 0;\n $b$1 = $b$1 | 0;\n var $rem = 0, __stackBase__ = 0;\n __stackBase__ = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n $rem = __stackBase__ | 0;\n ___udivmoddi4($a$0, $a$1, $b$0, $b$1, $rem) | 0;\n STACKTOP = __stackBase__;\n return (tempRet0 = HEAP32[$rem + 4 >> 2] | 0, HEAP32[$rem >> 2] | 0) | 0;\n}\n\nfunction _arDeleteHandle($handle) {\n $handle = $handle | 0;\n var $$0 = 0, $1 = 0, $2 = 0;\n if (!$handle) $$0 = -1; else {\n  $1 = $handle + 7062408 | 0;\n  $2 = HEAP32[$1 >> 2] | 0;\n  if ($2) {\n   _arImageProcFinal($2);\n   HEAP32[$1 >> 2] = 0;\n  }\n  _free(HEAP32[$handle + 4834144 >> 2] | 0);\n  _free(HEAP32[$handle + 4834148 >> 2] | 0);\n  _free($handle);\n  $$0 = 0;\n }\n return $$0 | 0;\n}\n\nfunction _llvm_cttz_i32(x) {\n x = x | 0;\n var ret = 0;\n ret = HEAP8[cttz_i8 + (x & 255) >> 0] | 0;\n if ((ret | 0) < 8) return ret | 0;\n ret = HEAP8[cttz_i8 + (x >> 8 & 255) >> 0] | 0;\n if ((ret | 0) < 8) return ret + 8 | 0;\n ret = HEAP8[cttz_i8 + (x >> 16 & 255) >> 0] | 0;\n if ((ret | 0) < 8) return ret + 16 | 0;\n return (HEAP8[cttz_i8 + (x >>> 24) >> 0] | 0) + 24 | 0;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE8allocateEj($this, $n) {\n $this = $this | 0;\n $n = $n | 0;\n var $$0 = 0, $1 = 0, $3 = 0, $4 = 0;\n $1 = $n + 15 & -16;\n $3 = $this + 4096 | 0;\n $4 = HEAP32[$3 >> 2] | 0;\n if (($this + 4096 - $4 | 0) >>> 0 < $1 >>> 0) $$0 = _malloc($1) | 0; else {\n  HEAP32[$3 >> 2] = $4 + $1;\n  $$0 = $4;\n }\n return $$0 | 0;\n}\n\nfunction _snprintf($s, $n, $fmt, $varargs) {\n $s = $s | 0;\n $n = $n | 0;\n $fmt = $fmt | 0;\n $varargs = $varargs | 0;\n var $0 = 0, $ap = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $ap = sp;\n HEAP32[$ap >> 2] = $varargs;\n $0 = _vsnprintf($s, $n, $fmt, $ap) | 0;\n STACKTOP = sp;\n return $0 | 0;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj18EEERAT__Kc($this, $s) {\n $this = $this | 0;\n $s = $s | 0;\n var $0 = 0;\n __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($this, $s, 17);\n $0 = $this + 12 | 0;\n HEAP32[$0 >> 2] = 0;\n HEAP32[$0 + 4 >> 2] = 0;\n HEAP32[$0 + 8 >> 2] = 0;\n return;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj15EEERAT__Kc($this, $s) {\n $this = $this | 0;\n $s = $s | 0;\n var $0 = 0;\n __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($this, $s, 14);\n $0 = $this + 12 | 0;\n HEAP32[$0 >> 2] = 0;\n HEAP32[$0 + 4 >> 2] = 0;\n HEAP32[$0 + 8 >> 2] = 0;\n return;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj14EEERAT__Kc($this, $s) {\n $this = $this | 0;\n $s = $s | 0;\n var $0 = 0;\n __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($this, $s, 13);\n $0 = $this + 12 | 0;\n HEAP32[$0 >> 2] = 0;\n HEAP32[$0 + 4 >> 2] = 0;\n HEAP32[$0 + 8 >> 2] = 0;\n return;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj13EEERAT__Kc($this, $s) {\n $this = $this | 0;\n $s = $s | 0;\n var $0 = 0;\n __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($this, $s, 12);\n $0 = $this + 12 | 0;\n HEAP32[$0 >> 2] = 0;\n HEAP32[$0 + 4 >> 2] = 0;\n HEAP32[$0 + 8 >> 2] = 0;\n return;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj12EEERAT__Kc($this, $s) {\n $this = $this | 0;\n $s = $s | 0;\n var $0 = 0;\n __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($this, $s, 11);\n $0 = $this + 12 | 0;\n HEAP32[$0 >> 2] = 0;\n HEAP32[$0 + 4 >> 2] = 0;\n HEAP32[$0 + 8 >> 2] = 0;\n return;\n}\n\nfunction __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEED2Ev($this) {\n $this = $this | 0;\n __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEED2Ev($this);\n return;\n}\n\nfunction __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($this, $__pos, $__s) {\n $this = $this | 0;\n $__pos = $__pos | 0;\n $__s = $__s | 0;\n return __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKcj($this, $__pos, $__s, _strlen($__s) | 0) | 0;\n}\n\nfunction ___shlim($f, $lim) {\n $f = $f | 0;\n $lim = $lim | 0;\n var $4 = 0, $5 = 0, $7 = 0;\n HEAP32[$f + 104 >> 2] = $lim;\n $4 = HEAP32[$f + 4 >> 2] | 0;\n $5 = HEAP32[$f + 8 >> 2] | 0;\n $7 = $5 - $4 | 0;\n HEAP32[$f + 108 >> 2] = $7;\n if (($lim | 0) != 0 & ($7 | 0) > ($lim | 0)) HEAP32[$f + 100 >> 2] = $4 + $lim; else HEAP32[$f + 100 >> 2] = $5;\n return;\n}\n\nfunction ___stdio_close($f) {\n $f = $f | 0;\n var $3 = 0, $vararg_buffer = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $vararg_buffer = sp;\n HEAP32[$vararg_buffer >> 2] = HEAP32[$f + 60 >> 2];\n $3 = ___syscall_ret(___syscall6(6, $vararg_buffer | 0) | 0) | 0;\n STACKTOP = sp;\n return $3 | 0;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE10deallocateEPcj($this, $p, $n) {\n $this = $this | 0;\n $p = $p | 0;\n $n = $n | 0;\n var $7 = 0;\n if ($this >>> 0 <= $p >>> 0 & ($this + 4096 | 0) >>> 0 >= $p >>> 0) {\n  $7 = $this + 4096 | 0;\n  if (($p + ($n + 15 & -16) | 0) == (HEAP32[$7 >> 2] | 0)) HEAP32[$7 >> 2] = $p;\n } else _free($p);\n return;\n}\n\nfunction _rewind($f) {\n $f = $f | 0;\n var $phitmp = 0;\n if ((HEAP32[$f + 76 >> 2] | 0) > -1) {\n  $phitmp = (___lockfile($f) | 0) == 0;\n  ___fseeko_unlocked($f, 0, 0) | 0;\n  HEAP32[$f >> 2] = HEAP32[$f >> 2] & -33;\n  if (!$phitmp) ___unlockfile($f);\n } else {\n  ___fseeko_unlocked($f, 0, 0) | 0;\n  HEAP32[$f >> 2] = HEAP32[$f >> 2] & -33;\n }\n return;\n}\n\nfunction _arPattFree($pattHandle, $patno) {\n $pattHandle = $pattHandle | 0;\n $patno = $patno | 0;\n var $$0 = 0, $2 = 0;\n $2 = (HEAP32[$pattHandle + 8 >> 2] | 0) + ($patno << 2) | 0;\n if (!(HEAP32[$2 >> 2] | 0)) $$0 = -1; else {\n  HEAP32[$2 >> 2] = 0;\n  HEAP32[$pattHandle >> 2] = (HEAP32[$pattHandle >> 2] | 0) + -1;\n  $$0 = 1;\n }\n return $$0 | 0;\n}\n\nfunction __ZNSt3__113unordered_mapIi7ARParamNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEED2Ev($this) {\n $this = $this | 0;\n __ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEED2Ev($this);\n return;\n}\n\nfunction _sn_write($f, $s, $l) {\n $f = $f | 0;\n $s = $s | 0;\n $l = $l | 0;\n var $2 = 0, $3 = 0, $6 = 0, $l$ = 0;\n $2 = $f + 20 | 0;\n $3 = HEAP32[$2 >> 2] | 0;\n $6 = (HEAP32[$f + 16 >> 2] | 0) - $3 | 0;\n $l$ = $6 >>> 0 > $l >>> 0 ? $l : $6;\n _memcpy($3 | 0, $s | 0, $l$ | 0) | 0;\n HEAP32[$2 >> 2] = (HEAP32[$2 >> 2] | 0) + $l$;\n return $l | 0;\n}\n\nfunction _ferror($f) {\n $f = $f | 0;\n var $$lobit = 0, $$lobit2 = 0, $phitmp = 0;\n if ((HEAP32[$f + 76 >> 2] | 0) > -1) {\n  $phitmp = (___lockfile($f) | 0) == 0;\n  $$lobit = (HEAP32[$f >> 2] | 0) >>> 5 & 1;\n  if ($phitmp) $$lobit2 = $$lobit; else $$lobit2 = $$lobit;\n } else $$lobit2 = (HEAP32[$f >> 2] | 0) >>> 5 & 1;\n return $$lobit2 | 0;\n}\n\nfunction ___memrchr($m, $c, $n) {\n $m = $m | 0;\n $c = $c | 0;\n $n = $n | 0;\n var $$0 = 0, $$01 = 0, $0 = 0, $3 = 0;\n $0 = $c & 255;\n $$01 = $n;\n while (1) {\n  if (!$$01) {\n   $$0 = 0;\n   break;\n  }\n  $$01 = $$01 + -1 | 0;\n  $3 = $m + $$01 | 0;\n  if ((HEAP8[$3 >> 0] | 0) == $0 << 24 >> 24) {\n   $$0 = $3;\n   break;\n  }\n }\n return $$0 | 0;\n}\n\nfunction __ZN10emscripten8internal11BindingTypeINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE12fromWireTypeEPNS9_Ut_E($agg$result, $v) {\n $agg$result = $agg$result | 0;\n $v = $v | 0;\n __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj($agg$result, $v + 4 | 0, HEAP32[$v >> 2] | 0);\n return;\n}\n\nfunction _arVecAlloc($clm) {\n $clm = $clm | 0;\n var $$0 = 0, $0 = 0, $3 = 0;\n $0 = _malloc(8) | 0;\n do if (!$0) $$0 = 0; else {\n  $3 = _malloc($clm << 3) | 0;\n  HEAP32[$0 >> 2] = $3;\n  if (!$3) {\n   _free($0);\n   $$0 = 0;\n   break;\n  } else {\n   HEAP32[$0 + 4 >> 2] = $clm;\n   $$0 = $0;\n   break;\n  }\n } while (0);\n return $$0 | 0;\n}\n\nfunction _sscanf($s, $fmt, $varargs) {\n $s = $s | 0;\n $fmt = $fmt | 0;\n $varargs = $varargs | 0;\n var $0 = 0, $ap = 0, sp = 0;\n sp = STACKTOP;\n STACKTOP = STACKTOP + 16 | 0;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n $ap = sp;\n HEAP32[$ap >> 2] = $varargs;\n $0 = _vsscanf($s, $fmt, $ap) | 0;\n STACKTOP = sp;\n return $0 | 0;\n}\n\nfunction _arPattAttach($arHandle, $arPattHandle) {\n $arHandle = $arHandle | 0;\n $arPattHandle = $arPattHandle | 0;\n var $$0 = 0, $1 = 0;\n if (!$arHandle) $$0 = -1; else {\n  $1 = $arHandle + 7062384 | 0;\n  if (!(HEAP32[$1 >> 2] | 0)) {\n   HEAP32[$1 >> 2] = $arPattHandle;\n   $$0 = 0;\n  } else $$0 = -1;\n }\n return $$0 | 0;\n}\n\nfunction __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($this, $__s) {\n $this = $this | 0;\n $__s = $__s | 0;\n return __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($this, $__s, _strlen($__s) | 0) | 0;\n}\n\nfunction __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($this) {\n $this = $this | 0;\n __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($this + 12 | 0);\n __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($this);\n return;\n}\n\nfunction _arMatrixAllocTrans($source) {\n $source = $source | 0;\n var $$0 = 0, $4 = 0;\n $4 = _arMatrixAlloc(HEAP32[$source + 8 >> 2] | 0, HEAP32[$source + 4 >> 2] | 0) | 0;\n if (!$4) $$0 = 0; else if ((_arMatrixTrans($4, $source) | 0) < 0) {\n  _arMatrixFree($4) | 0;\n  $$0 = 0;\n } else $$0 = $4;\n return $$0 | 0;\n}\n\nfunction _arMatrixAllocDup($source) {\n $source = $source | 0;\n var $$0 = 0, $4 = 0;\n $4 = _arMatrixAlloc(HEAP32[$source + 4 >> 2] | 0, HEAP32[$source + 8 >> 2] | 0) | 0;\n if (!$4) $$0 = 0; else if ((_arMatrixDup($4, $source) | 0) < 0) {\n  _arMatrixFree($4) | 0;\n  $$0 = 0;\n } else $$0 = $4;\n return $$0 | 0;\n}\n\nfunction _arMatrixAllocMul($a, $b) {\n $a = $a | 0;\n $b = $b | 0;\n var $$0 = 0, $4 = 0;\n $4 = _arMatrixAlloc(HEAP32[$a + 4 >> 2] | 0, HEAP32[$b + 8 >> 2] | 0) | 0;\n if (!$4) $$0 = 0; else if ((_arMatrixMul($4, $a, $b) | 0) < 0) {\n  _arMatrixFree($4) | 0;\n  $$0 = 0;\n } else $$0 = $4;\n return $$0 | 0;\n}\n\nfunction _arGetTransMatMultiSquareRobust($handle, $marker_info, $marker_num, $config) {\n $handle = $handle | 0;\n $marker_info = $marker_info | 0;\n $marker_num = $marker_num | 0;\n $config = $config | 0;\n return +(+_arGetTransMatMultiSquare2($handle, $marker_info, $marker_num, $config, 1));\n}\n\nfunction _arGetTransMatMultiSquare($handle, $marker_info, $marker_num, $config) {\n $handle = $handle | 0;\n $marker_info = $marker_info | 0;\n $marker_num = $marker_num | 0;\n $config = $config | 0;\n return +(+_arGetTransMatMultiSquare2($handle, $marker_info, $marker_num, $config, 0));\n}\n\nfunction ___ftello($f) {\n $f = $f | 0;\n var $5 = 0, $6 = 0, $phitmp = 0;\n if ((HEAP32[$f + 76 >> 2] | 0) > -1) {\n  $phitmp = (___lockfile($f) | 0) == 0;\n  $5 = ___ftello_unlocked($f) | 0;\n  if ($phitmp) $6 = $5; else $6 = $5;\n } else $6 = ___ftello_unlocked($f) | 0;\n return $6 | 0;\n}\n\nfunction _arSetPattRatio($handle, $pattRatio) {\n $handle = $handle | 0;\n $pattRatio = +$pattRatio;\n var $$0 = 0;\n if (!$handle) $$0 = -1; else if ($pattRatio <= 0.0 | $pattRatio >= 1.0) $$0 = -1; else {\n  HEAPF64[$handle + 7062416 >> 3] = $pattRatio;\n  $$0 = 0;\n }\n return $$0 | 0;\n}\n\nfunction _bitshift64Ashr(low, high, bits) {\n low = low | 0;\n high = high | 0;\n bits = bits | 0;\n if ((bits | 0) < 32) {\n  tempRet0 = high >> bits;\n  return low >>> bits | (high & (1 << bits) - 1) << 32 - bits;\n }\n tempRet0 = (high | 0) < 0 ? -1 : 0;\n return high >> bits - 32 | 0;\n}\n\nfunction _byteSwapInt($from, $to) {\n $from = $from | 0;\n $to = $to | 0;\n HEAP8[$to >> 0] = HEAP8[$from + 3 >> 0] | 0;\n HEAP8[$to + 1 >> 0] = HEAP8[$from + 2 >> 0] | 0;\n HEAP8[$to + 2 >> 0] = HEAP8[$from + 1 >> 0] | 0;\n HEAP8[$to + 3 >> 0] = HEAP8[$from >> 0] | 0;\n return;\n}\n\nfunction _arGetLabelingThreshMode($handle, $mode_p) {\n $handle = $handle | 0;\n $mode_p = $mode_p | 0;\n var $$0 = 0;\n if (($handle | 0) != 0 & ($mode_p | 0) != 0) {\n  HEAP32[$mode_p >> 2] = HEAP32[$handle + 7062388 >> 2];\n  $$0 = 0;\n } else $$0 = -1;\n return $$0 | 0;\n}\n\nfunction _bitshift64Shl(low, high, bits) {\n low = low | 0;\n high = high | 0;\n bits = bits | 0;\n if ((bits | 0) < 32) {\n  tempRet0 = high << bits | (low & (1 << bits) - 1 << 32 - bits) >>> 32 - bits;\n  return low << bits;\n }\n tempRet0 = low << bits - 32;\n return 0;\n}\n\nfunction _ar3DDeleteHandle($handle) {\n $handle = $handle | 0;\n var $$0 = 0, $0 = 0;\n $0 = HEAP32[$handle >> 2] | 0;\n if (!$0) $$0 = -1; else {\n  _icpDeleteHandle($0) | 0;\n  _free(HEAP32[$handle >> 2] | 0);\n  HEAP32[$handle >> 2] = 0;\n  $$0 = 0;\n }\n return $$0 | 0;\n}\n\nfunction _arGetMatrixCodeType($handle, $type_p) {\n $handle = $handle | 0;\n $type_p = $type_p | 0;\n var $$0 = 0;\n if (($handle | 0) != 0 & ($type_p | 0) != 0) {\n  HEAP32[$type_p >> 2] = HEAP32[$handle + 7062424 >> 2];\n  $$0 = 0;\n } else $$0 = -1;\n return $$0 | 0;\n}\n\nfunction _bitshift64Lshr(low, high, bits) {\n low = low | 0;\n high = high | 0;\n bits = bits | 0;\n if ((bits | 0) < 32) {\n  tempRet0 = high >>> bits;\n  return low >>> bits | (high & (1 << bits) - 1) << 32 - bits;\n }\n tempRet0 = 0;\n return high >>> bits - 32 | 0;\n}\n\nfunction _arPattDetach($arHandle) {\n $arHandle = $arHandle | 0;\n var $$0 = 0, $1 = 0;\n if (!$arHandle) $$0 = -1; else {\n  $1 = $arHandle + 7062384 | 0;\n  if (!(HEAP32[$1 >> 2] | 0)) $$0 = -1; else {\n   HEAP32[$1 >> 2] = 0;\n   $$0 = 0;\n  }\n }\n return $$0 | 0;\n}\n\nfunction _arGetLabelingThresh($handle, $thresh) {\n $handle = $handle | 0;\n $thresh = $thresh | 0;\n var $$0 = 0;\n if (($handle | 0) != 0 & ($thresh | 0) != 0) {\n  HEAP32[$thresh >> 2] = HEAP32[$handle + 16 >> 2];\n  $$0 = 0;\n } else $$0 = -1;\n return $$0 | 0;\n}\n\nfunction __ZN10emscripten8functionIiJiNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEEJEEEvPKcPFT_DpT0_EDpT1_($name, $fn) {\n $name = $name | 0;\n $fn = $fn | 0;\n __embind_register_function($name | 0, 3, 2180, 10905, 12, $fn | 0);\n return;\n}\n\nfunction copyTempFloat(ptr) {\n ptr = ptr | 0;\n HEAP8[tempDoublePtr >> 0] = HEAP8[ptr >> 0];\n HEAP8[tempDoublePtr + 1 >> 0] = HEAP8[ptr + 1 >> 0];\n HEAP8[tempDoublePtr + 2 >> 0] = HEAP8[ptr + 2 >> 0];\n HEAP8[tempDoublePtr + 3 >> 0] = HEAP8[ptr + 3 >> 0];\n}\n\nfunction __ZN10emscripten8functionIiJNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEEJEEEvPKcPFT_DpT0_EDpT1_($name, $fn) {\n $name = $name | 0;\n $fn = $fn | 0;\n __embind_register_function($name | 0, 2, 2160, 10800, 11, $fn | 0);\n return;\n}\n\nfunction dynCall_viiiiii(index, a1, a2, a3, a4, a5, a6) {\n index = index | 0;\n a1 = a1 | 0;\n a2 = a2 | 0;\n a3 = a3 | 0;\n a4 = a4 | 0;\n a5 = a5 | 0;\n a6 = a6 | 0;\n FUNCTION_TABLE_viiiiii[index & 3](a1 | 0, a2 | 0, a3 | 0, a4 | 0, a5 | 0, a6 | 0);\n}\n\nfunction _arSetLabelingThresh($handle, $thresh) {\n $handle = $handle | 0;\n $thresh = $thresh | 0;\n var $$0 = 0;\n if (($handle | 0) == 0 | $thresh >>> 0 > 255) $$0 = -1; else {\n  HEAP32[$handle + 16 >> 2] = $thresh;\n  $$0 = 0;\n }\n return $$0 | 0;\n}\n\nfunction _arGetLabelingMode($handle, $mode) {\n $handle = $handle | 0;\n $mode = $mode | 0;\n var $$0 = 0;\n if (($handle | 0) != 0 & ($mode | 0) != 0) {\n  HEAP32[$mode >> 2] = HEAP32[$handle + 12 >> 2];\n  $$0 = 0;\n } else $$0 = -1;\n return $$0 | 0;\n}\n\nfunction __ZN10emscripten8internal7InvokerIiJiiiEE6invokeEPFiiiiEiii($fn, $args, $args1, $args2) {\n $fn = $fn | 0;\n $args = $args | 0;\n $args1 = $args1 | 0;\n $args2 = $args2 | 0;\n return FUNCTION_TABLE_iiii[$fn & 15]($args, $args1, $args2) | 0;\n}\n\nfunction _arGetPattRatio($handle, $pattRatio) {\n $handle = $handle | 0;\n $pattRatio = $pattRatio | 0;\n var $$0 = 0;\n if (!$handle) $$0 = -1; else {\n  HEAPF64[$pattRatio >> 3] = +HEAPF64[$handle + 7062416 >> 3];\n  $$0 = 0;\n }\n return $$0 | 0;\n}\n\nfunction _arSetPatternDetectionMode($handle, $mode) {\n $handle = $handle | 0;\n $mode = $mode | 0;\n var $$0 = 0;\n if (($handle | 0) != 0 & $mode >>> 0 < 5) {\n  HEAP32[$handle + 24 >> 2] = $mode;\n  $$0 = 0;\n } else $$0 = -1;\n return $$0 | 0;\n}\n\nfunction _arGetDebugMode($handle, $mode) {\n $handle = $handle | 0;\n $mode = $mode | 0;\n var $$0 = 0;\n if (($handle | 0) != 0 & ($mode | 0) != 0) {\n  HEAP32[$mode >> 2] = HEAP32[$handle >> 2];\n  $$0 = 0;\n } else $$0 = -1;\n return $$0 | 0;\n}\n\nfunction _icpSetInlierProbability($handle, $inlierProb) {\n $handle = $handle | 0;\n $inlierProb = +$inlierProb;\n var $$0 = 0;\n if (!$handle) $$0 = -1; else {\n  HEAPF64[$handle + 128 >> 3] = $inlierProb;\n  $$0 = 0;\n }\n return $$0 | 0;\n}\n\nfunction _arSetImageProcMode($handle, $mode) {\n $handle = $handle | 0;\n $mode = $mode | 0;\n var $$0 = 0;\n if (($handle | 0) != 0 & $mode >>> 0 < 2) {\n  HEAP32[$handle + 20 >> 2] = $mode;\n  $$0 = 0;\n } else $$0 = -1;\n return $$0 | 0;\n}\n\nfunction _arSetLabelingMode($handle, $mode) {\n $handle = $handle | 0;\n $mode = $mode | 0;\n var $$0 = 0;\n if (($handle | 0) != 0 & $mode >>> 0 < 2) {\n  HEAP32[$handle + 12 >> 2] = $mode;\n  $$0 = 0;\n } else $$0 = -1;\n return $$0 | 0;\n}\n\nfunction __ZNK10__cxxabiv123__fundamental_type_info9can_catchEPKNS_16__shim_type_infoERPv($this, $thrown_type, $0) {\n $this = $this | 0;\n $thrown_type = $thrown_type | 0;\n $0 = $0 | 0;\n return ($this | 0) == ($thrown_type | 0) | 0;\n}\n\nfunction runPostSets() {}\nfunction _i64Subtract(a, b, c, d) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n var h = 0;\n h = b - d >>> 0;\n h = b - d - (c >>> 0 > a >>> 0 | 0) >>> 0;\n return (tempRet0 = h, a - c >>> 0 | 0) | 0;\n}\n\nfunction _arImageProcLumaHistAndCDFAndMedian($ipi, $dataPtr, $value_p) {\n $ipi = $ipi | 0;\n $dataPtr = $dataPtr | 0;\n $value_p = $value_p | 0;\n return _arImageProcLumaHistAndCDFAndPercentile($ipi, $dataPtr, .5, $value_p) | 0;\n}\n\nfunction _arGetPatternDetectionMode($handle, $mode) {\n $handle = $handle | 0;\n $mode = $mode | 0;\n var $$0 = 0;\n if (!$handle) $$0 = -1; else {\n  HEAP32[$mode >> 2] = HEAP32[$handle + 24 >> 2];\n  $$0 = 0;\n }\n return $$0 | 0;\n}\n\nfunction ___strdup($s) {\n $s = $s | 0;\n var $$0 = 0, $1 = 0, $2 = 0;\n $1 = (_strlen($s) | 0) + 1 | 0;\n $2 = _malloc($1) | 0;\n if (!$2) $$0 = 0; else {\n  _memcpy($2 | 0, $s | 0, $1 | 0) | 0;\n  $$0 = $2;\n }\n return $$0 | 0;\n}\n\nfunction dynCall_viiiii(index, a1, a2, a3, a4, a5) {\n index = index | 0;\n a1 = a1 | 0;\n a2 = a2 | 0;\n a3 = a3 | 0;\n a4 = a4 | 0;\n a5 = a5 | 0;\n FUNCTION_TABLE_viiiii[index & 3](a1 | 0, a2 | 0, a3 | 0, a4 | 0, a5 | 0);\n}\n\nfunction _arGetImageProcMode($handle, $mode) {\n $handle = $handle | 0;\n $mode = $mode | 0;\n var $$0 = 0;\n if (!$handle) $$0 = -1; else {\n  HEAP32[$mode >> 2] = HEAP32[$handle + 20 >> 2];\n  $$0 = 0;\n }\n return $$0 | 0;\n}\n\nfunction _icpDeleteHandle($handle) {\n $handle = $handle | 0;\n var $$0 = 0, $0 = 0;\n $0 = HEAP32[$handle >> 2] | 0;\n if (!$0) $$0 = -1; else {\n  _free($0);\n  HEAP32[$handle >> 2] = 0;\n  $$0 = 0;\n }\n return $$0 | 0;\n}\n\nfunction _arSetMatrixCodeType($handle, $type) {\n $handle = $handle | 0;\n $type = $type | 0;\n var $$0 = 0;\n if (!$handle) $$0 = -1; else {\n  HEAP32[$handle + 7062424 >> 2] = $type;\n  $$0 = 0;\n }\n return $$0 | 0;\n}\nfunction stackAlloc(size) {\n size = size | 0;\n var ret = 0;\n ret = STACKTOP;\n STACKTOP = STACKTOP + size | 0;\n STACKTOP = STACKTOP + 15 & -16;\n if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();\n return ret | 0;\n}\n\nfunction __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($this) {\n $this = $this | 0;\n if (HEAP8[$this >> 0] & 1) _free(HEAP32[$this + 8 >> 2] | 0);\n return;\n}\n\nfunction ___syscall_ret($r) {\n $r = $r | 0;\n var $$0 = 0, $2 = 0;\n if ($r >>> 0 > 4294963200) {\n  $2 = ___errno_location() | 0;\n  HEAP32[$2 >> 2] = 0 - $r;\n  $$0 = -1;\n } else $$0 = $r;\n return $$0 | 0;\n}\n\nfunction __ZN10emscripten8internal7InvokerIiJiiEE6invokeEPFiiiEii($fn, $args, $args1) {\n $fn = $fn | 0;\n $args = $args | 0;\n $args1 = $args1 | 0;\n return FUNCTION_TABLE_iii[$fn & 15]($args, $args1) | 0;\n}\n\nfunction dynCall_iiiii(index, a1, a2, a3, a4) {\n index = index | 0;\n a1 = a1 | 0;\n a2 = a2 | 0;\n a3 = a3 | 0;\n a4 = a4 | 0;\n return FUNCTION_TABLE_iiiii[index & 1](a1 | 0, a2 | 0, a3 | 0, a4 | 0) | 0;\n}\n\nfunction __ZN10emscripten8internal7InvokerIvJiiEE6invokeEPFviiEii($fn, $args, $args1) {\n $fn = $fn | 0;\n $args = $args | 0;\n $args1 = $args1 | 0;\n FUNCTION_TABLE_vii[$fn & 7]($args, $args1);\n return;\n}\n\nfunction __ZN10emscripten8internal7InvokerIvJifEE6invokeEPFvifEif($fn, $args, $args1) {\n $fn = $fn | 0;\n $args = $args | 0;\n $args1 = +$args1;\n FUNCTION_TABLE_vid[$fn & 3]($args, $args1);\n return;\n}\n\nfunction __ZN10emscripten8internal7InvokerIvJidEE6invokeEPFvidEid($fn, $args, $args1) {\n $fn = $fn | 0;\n $args = $args | 0;\n $args1 = +$args1;\n FUNCTION_TABLE_vid[$fn & 3]($args, $args1);\n return;\n}\n\nfunction _arImageProcFinal($ipi) {\n $ipi = $ipi | 0;\n if ($ipi) {\n  if (HEAP32[$ipi + 2076 >> 2] | 0) _free(HEAP32[$ipi >> 2] | 0);\n  _free(HEAP32[$ipi + 4 >> 2] | 0);\n  _free($ipi);\n }\n return;\n}\n\nfunction __ZN10emscripten8functionIiJiiiEJEEEvPKcPFT_DpT0_EDpT1_($name, $fn) {\n $name = $name | 0;\n $fn = $fn | 0;\n __embind_register_function($name | 0, 4, 2200, 10910, 1, $fn | 0);\n return;\n}\n\nfunction __ZN10emscripten8functionIiJiiEJEEEvPKcPFT_DpT0_EDpT1_($name, $fn) {\n $name = $name | 0;\n $fn = $fn | 0;\n __embind_register_function($name | 0, 3, 2168, 10905, 13, $fn | 0);\n return;\n}\n\nfunction __ZN10emscripten8functionIvJiiEJEEEvPKcPFT_DpT0_EDpT1_($name, $fn) {\n $name = $name | 0;\n $fn = $fn | 0;\n __embind_register_function($name | 0, 3, 2116, 10779, 1, $fn | 0);\n return;\n}\n\nfunction __ZN10emscripten8functionIvJifEJEEEvPKcPFT_DpT0_EDpT1_($name, $fn) {\n $name = $name | 0;\n $fn = $fn | 0;\n __embind_register_function($name | 0, 3, 2104, 10774, 2, $fn | 0);\n return;\n}\n\nfunction __ZN10emscripten8functionIvJidEJEEEvPKcPFT_DpT0_EDpT1_($name, $fn) {\n $name = $name | 0;\n $fn = $fn | 0;\n __embind_register_function($name | 0, 3, 2136, 10788, 1, $fn | 0);\n return;\n}\n\nfunction __ZN10emscripten8functionIiJiEJEEEvPKcPFT_DpT0_EDpT1_($name, $fn) {\n $name = $name | 0;\n $fn = $fn | 0;\n __embind_register_function($name | 0, 2, 2192, 10800, 10, $fn | 0);\n return;\n}\n\nfunction dynCall_viiii(index, a1, a2, a3, a4) {\n index = index | 0;\n a1 = a1 | 0;\n a2 = a2 | 0;\n a3 = a3 | 0;\n a4 = a4 | 0;\n FUNCTION_TABLE_viiii[index & 3](a1 | 0, a2 | 0, a3 | 0, a4 | 0);\n}\n\nfunction __ZN10emscripten8functionIvJiEJEEEvPKcPFT_DpT0_EDpT1_($name, $fn) {\n $name = $name | 0;\n $fn = $fn | 0;\n __embind_register_function($name | 0, 2, 2152, 10796, 7, $fn | 0);\n return;\n}\n\nfunction __ZN10emscripten8functionIiJEJEEEvPKcPFT_DpT0_EDpT1_($name, $fn) {\n $name = $name | 0;\n $fn = $fn | 0;\n __embind_register_function($name | 0, 1, 2148, 10793, 16, $fn | 0);\n return;\n}\n\nfunction __ZN10emscripten8functionIdJiEJEEEvPKcPFT_DpT0_EDpT1_($name, $fn) {\n $name = $name | 0;\n $fn = $fn | 0;\n __embind_register_function($name | 0, 2, 2128, 10784, 1, $fn | 0);\n return;\n}\n\nfunction _icpGetXw2XcCleanup295($J_U_S, $dU, $E, $E2) {\n $J_U_S = $J_U_S | 0;\n $dU = $dU | 0;\n $E = $E | 0;\n $E2 = $E2 | 0;\n _free($J_U_S);\n _free($dU);\n _free($E);\n _free($E2);\n return;\n}\n\nfunction ___errno_location() {\n var $$0 = 0, $3 = 0;\n if (!(HEAP32[597] | 0)) $$0 = 2644; else {\n  $3 = (_pthread_self() | 0) + 60 | 0;\n  $$0 = HEAP32[$3 >> 2] | 0;\n }\n return $$0 | 0;\n}\n\nfunction __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev($this) {\n $this = $this | 0;\n if (HEAP8[$this >> 0] & 1) __ZdlPv(HEAP32[$this + 8 >> 2] | 0);\n return;\n}\n\nfunction _i64Add(a, b, c, d) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n var l = 0;\n l = a + c >>> 0;\n return (tempRet0 = b + d + (l >>> 0 < a >>> 0 | 0) >>> 0, l | 0) | 0;\n}\n\nfunction __ZN10emscripten8constantIdEEvPKcRKT_($name, $v) {\n $name = $name | 0;\n $v = $v | 0;\n __embind_register_constant($name | 0, 720, ~~+HEAPF64[$v >> 3] >>> 0 | 0);\n return;\n}\n\nfunction dynCall_iiii(index, a1, a2, a3) {\n index = index | 0;\n a1 = a1 | 0;\n a2 = a2 | 0;\n a3 = a3 | 0;\n return FUNCTION_TABLE_iiii[index & 15](a1 | 0, a2 | 0, a3 | 0) | 0;\n}\n\nfunction ___udivdi3($a$0, $a$1, $b$0, $b$1) {\n $a$0 = $a$0 | 0;\n $a$1 = $a$1 | 0;\n $b$0 = $b$0 | 0;\n $b$1 = $b$1 | 0;\n return ___udivmoddi4($a$0, $a$1, $b$0, $b$1, 0) | 0;\n}\n\nfunction _strchr($s, $c) {\n $s = $s | 0;\n $c = $c | 0;\n var $0 = 0;\n $0 = ___strchrnul($s, $c) | 0;\n return ((HEAP8[$0 >> 0] | 0) == ($c & 255) << 24 >> 24 ? $0 : 0) | 0;\n}\n\nfunction __ZN10emscripten8constantIiEEvPKcRKT_($name, $v) {\n $name = $name | 0;\n $v = $v | 0;\n __embind_register_constant($name | 0, 680, HEAP32[$v >> 2] | 0);\n return;\n}\n\nfunction dynCall_viii(index, a1, a2, a3) {\n index = index | 0;\n a1 = a1 | 0;\n a2 = a2 | 0;\n a3 = a3 | 0;\n FUNCTION_TABLE_viii[index & 1](a1 | 0, a2 | 0, a3 | 0);\n}\n\nfunction __ZN10emscripten8internal7InvokerIiJiEE6invokeEPFiiEi($fn, $args) {\n $fn = $fn | 0;\n $args = $args | 0;\n return FUNCTION_TABLE_ii[$fn & 31]($args) | 0;\n}\n\nfunction __ZN10emscripten8internal7InvokerIdJiEE6invokeEPFdiEi($fn, $args) {\n $fn = $fn | 0;\n $args = $args | 0;\n return +(+FUNCTION_TABLE_di[$fn & 3]($args));\n}\n\nfunction __ZN10emscripten8internal7InvokerIvJiEE6invokeEPFviEi($fn, $args) {\n $fn = $fn | 0;\n $args = $args | 0;\n FUNCTION_TABLE_vi[$fn & 15]($args);\n return;\n}\n\nfunction _compE($a, $b) {\n $a = $a | 0;\n $b = $b | 0;\n var $2 = 0.0;\n $2 = +HEAPF64[$a >> 3] - +HEAPF64[$b >> 3];\n return ($2 < 0.0 ? -1 : $2 > 0.0 & 1) | 0;\n}\n\nfunction dynCall_viid(index, a1, a2, a3) {\n index = index | 0;\n a1 = a1 | 0;\n a2 = a2 | 0;\n a3 = +a3;\n FUNCTION_TABLE_viid[index & 3](a1 | 0, a2 | 0, +a3);\n}\n\nfunction _isxdigit($c) {\n $c = $c | 0;\n var $4 = 0;\n if (($c + -48 | 0) >>> 0 < 10) $4 = 1; else $4 = (($c | 32) + -97 | 0) >>> 0 < 6;\n return $4 & 1 | 0;\n}\n\nfunction establishStackSpace(stackBase, stackMax) {\n stackBase = stackBase | 0;\n stackMax = stackMax | 0;\n STACKTOP = stackBase;\n STACK_MAX = stackMax;\n}\n\nfunction __ZN12_GLOBAL__N_1L20register_memory_viewItEEvPKc($name) {\n $name = $name | 0;\n __embind_register_memory_view(512, 3, $name | 0);\n return;\n}\n\nfunction __ZN12_GLOBAL__N_1L20register_memory_viewIsEEvPKc($name) {\n $name = $name | 0;\n __embind_register_memory_view(520, 2, $name | 0);\n return;\n}\n\nfunction __ZN12_GLOBAL__N_1L20register_memory_viewIjEEvPKc($name) {\n $name = $name | 0;\n __embind_register_memory_view(496, 5, $name | 0);\n return;\n}\n\nfunction __ZN12_GLOBAL__N_1L20register_memory_viewIiEEvPKc($name) {\n $name = $name | 0;\n __embind_register_memory_view(504, 4, $name | 0);\n return;\n}\n\nfunction __ZN12_GLOBAL__N_1L20register_memory_viewIhEEvPKc($name) {\n $name = $name | 0;\n __embind_register_memory_view(528, 1, $name | 0);\n return;\n}\n\nfunction __ZN12_GLOBAL__N_1L20register_memory_viewIaEEvPKc($name) {\n $name = $name | 0;\n __embind_register_memory_view(536, 0, $name | 0);\n return;\n}\n\nfunction __ZNKSt3__121__basic_string_commonILb1EE20__throw_out_of_rangeEv($this) {\n $this = $this | 0;\n ___assert_fail(14126, 12515, 1175, 14155);\n}\n\nfunction __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv($this) {\n $this = $this | 0;\n ___assert_fail(12486, 12515, 1164, 12450);\n}\n\nfunction dynCall_iii(index, a1, a2) {\n index = index | 0;\n a1 = a1 | 0;\n a2 = a2 | 0;\n return FUNCTION_TABLE_iii[index & 15](a1 | 0, a2 | 0) | 0;\n}\n\nfunction b13(p0, p1, p2, p3, p4, p5) {\n p0 = p0 | 0;\n p1 = p1 | 0;\n p2 = p2 | 0;\n p3 = p3 | 0;\n p4 = p4 | 0;\n p5 = p5 | 0;\n nullFunc_viiiiii(13);\n}\n\nfunction _wctomb($s, $wc) {\n $s = $s | 0;\n $wc = $wc | 0;\n var $$0 = 0;\n if (!$s) $$0 = 0; else $$0 = _wcrtomb($s, $wc, 0) | 0;\n return $$0 | 0;\n}\n\nfunction __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($this) {\n $this = $this | 0;\n ___assert_fail(12352, 12375, 303, 12450);\n}\n\nfunction dynCall_dii(index, a1, a2) {\n index = index | 0;\n a1 = a1 | 0;\n a2 = a2 | 0;\n return +FUNCTION_TABLE_dii[index & 1](a1 | 0, a2 | 0);\n}\n\nfunction setThrew(threw, value) {\n threw = threw | 0;\n value = value | 0;\n if (!__THREW__) {\n  __THREW__ = threw;\n  threwValue = value;\n }\n}\n\nfunction _fseek($f, $off, $whence) {\n $f = $f | 0;\n $off = $off | 0;\n $whence = $whence | 0;\n return ___fseeko($f, $off, $whence) | 0;\n}\n\nfunction dynCall_vii(index, a1, a2) {\n index = index | 0;\n a1 = a1 | 0;\n a2 = a2 | 0;\n FUNCTION_TABLE_vii[index & 7](a1 | 0, a2 | 0);\n}\n\nfunction _mbsinit($st) {\n $st = $st | 0;\n var $4 = 0;\n if (!$st) $4 = 1; else $4 = (HEAP32[$st >> 2] | 0) == 0;\n return $4 & 1 | 0;\n}\n\nfunction _do_read($f, $buf, $len) {\n $f = $f | 0;\n $buf = $buf | 0;\n $len = $len | 0;\n return ___string_read($f, $buf, $len) | 0;\n}\n\nfunction dynCall_vid(index, a1, a2) {\n index = index | 0;\n a1 = a1 | 0;\n a2 = +a2;\n FUNCTION_TABLE_vid[index & 3](a1 | 0, +a2);\n}\n\nfunction b1(p0, p1, p2, p3, p4) {\n p0 = p0 | 0;\n p1 = p1 | 0;\n p2 = p2 | 0;\n p3 = p3 | 0;\n p4 = p4 | 0;\n nullFunc_viiiii(1);\n}\n\nfunction _arMultiFreeConfig($config) {\n $config = $config | 0;\n _free(HEAP32[$config >> 2] | 0);\n _free($config);\n return 0;\n}\n\nfunction __ZN10emscripten8internal7InvokerIiJEE6invokeEPFivE($fn) {\n $fn = $fn | 0;\n return FUNCTION_TABLE_i[$fn & 1]() | 0;\n}\n\nfunction _icpGetXw2XcCleanup($J_U_S, $dU) {\n $J_U_S = $J_U_S | 0;\n $dU = $dU | 0;\n _free($J_U_S);\n _free($dU);\n return;\n}\n\nfunction b12(p0, p1, p2, p3) {\n p0 = p0 | 0;\n p1 = p1 | 0;\n p2 = p2 | 0;\n p3 = p3 | 0;\n nullFunc_iiiii(12);\n return 0;\n}\n\nfunction _strncpy($d, $s, $n) {\n $d = $d | 0;\n $s = $s | 0;\n $n = $n | 0;\n ___stpncpy($d, $s, $n) | 0;\n return $d | 0;\n}\n\nfunction dynCall_ii(index, a1) {\n index = index | 0;\n a1 = a1 | 0;\n return FUNCTION_TABLE_ii[index & 31](a1 | 0) | 0;\n}\n\nfunction _strcpy($dest, $src) {\n $dest = $dest | 0;\n $src = $src | 0;\n ___stpcpy($dest, $src) | 0;\n return $dest | 0;\n}\n\nfunction __GLOBAL__sub_I_bind_cpp() {\n __ZN53EmscriptenBindingInitializer_native_and_builtin_typesC2Ev(0);\n return;\n}\n\nfunction _strrchr($s, $c) {\n $s = $s | 0;\n $c = $c | 0;\n return ___memrchr($s, $c, (_strlen($s) | 0) + 1 | 0) | 0;\n}\n\nfunction _ar3DCreateHandle($arParam) {\n $arParam = $arParam | 0;\n return _ar3DCreateHandle2($arParam + 8 | 0) | 0;\n}\n\nfunction dynCall_di(index, a1) {\n index = index | 0;\n a1 = a1 | 0;\n return +FUNCTION_TABLE_di[index & 3](a1 | 0);\n}\n\nfunction _fputs($s, $f) {\n $s = $s | 0;\n $f = $f | 0;\n return (_fwrite($s, _strlen($s) | 0, 1, $f) | 0) + -1 | 0;\n}\n\nfunction __ZSt15get_new_handlerv() {\n var $0 = 0;\n $0 = HEAP32[559] | 0;\n HEAP32[559] = $0 + 0;\n return $0 | 0;\n}\n\nfunction _arMatrixFree($m) {\n $m = $m | 0;\n if ($m) {\n  _free(HEAP32[$m >> 2] | 0);\n  _free($m);\n }\n return 0;\n}\n\nfunction __ZN10__cxxabiv123__fundamental_type_infoD0Ev($this) {\n $this = $this | 0;\n __ZdlPv($this);\n return;\n}\n\nfunction b15(p0, p1, p2, p3) {\n p0 = p0 | 0;\n p1 = p1 | 0;\n p2 = p2 | 0;\n p3 = p3 | 0;\n nullFunc_viiii(15);\n}\n\nfunction __ZN10__cxxabiv121__vmi_class_type_infoD0Ev($this) {\n $this = $this | 0;\n __ZdlPv($this);\n return;\n}\n\nfunction dynCall_vi(index, a1) {\n index = index | 0;\n a1 = a1 | 0;\n FUNCTION_TABLE_vi[index & 15](a1 | 0);\n}\n\nfunction __ZN10__cxxabiv120__si_class_type_infoD0Ev($this) {\n $this = $this | 0;\n __ZdlPv($this);\n return;\n}\n\nfunction __ZN10__cxxabiv117__class_type_infoD0Ev($this) {\n $this = $this | 0;\n __ZdlPv($this);\n return;\n}\n\nfunction _cleanup392($p) {\n $p = $p | 0;\n if (!(HEAP32[$p + 68 >> 2] | 0)) ___unlockfile($p);\n return;\n}\n\nfunction _cleanup387($p) {\n $p = $p | 0;\n if (!(HEAP32[$p + 68 >> 2] | 0)) ___unlockfile($p);\n return;\n}\n\nfunction b0(p0, p1, p2) {\n p0 = p0 | 0;\n p1 = p1 | 0;\n p2 = p2 | 0;\n nullFunc_iiii(0);\n return 0;\n}\n\nfunction _isspace($c) {\n $c = $c | 0;\n return (($c | 0) == 32 | ($c + -9 | 0) >>> 0 < 5) & 1 | 0;\n}\n\nfunction ___getTypeName($ti) {\n $ti = $ti | 0;\n return ___strdup(HEAP32[$ti + 4 >> 2] | 0) | 0;\n}\n\nfunction _arVecFree($v) {\n $v = $v | 0;\n _free(HEAP32[$v >> 2] | 0);\n _free($v);\n return 0;\n}\n\nfunction dynCall_i(index) {\n index = index | 0;\n return FUNCTION_TABLE_i[index & 1]() | 0;\n}\n\nfunction __ZNK10__cxxabiv116__shim_type_info5noop2Ev($this) {\n $this = $this | 0;\n return;\n}\n\nfunction __ZNK10__cxxabiv116__shim_type_info5noop1Ev($this) {\n $this = $this | 0;\n return;\n}\n\nfunction b9(p0, p1, p2) {\n p0 = p0 | 0;\n p1 = p1 | 0;\n p2 = p2 | 0;\n nullFunc_viii(9);\n}\n\nfunction b11(p0, p1, p2) {\n p0 = p0 | 0;\n p1 = p1 | 0;\n p2 = +p2;\n nullFunc_viid(11);\n}\n\nfunction _setLogLevel($level) {\n $level = $level | 0;\n HEAP32[496] = $level;\n return;\n}\n\nfunction __ZN10__cxxabiv116__shim_type_infoD2Ev($this) {\n $this = $this | 0;\n return;\n}\n\nfunction __ZNSt9bad_allocD0Ev($this) {\n $this = $this | 0;\n __ZdlPv($this);\n return;\n}\n\nfunction _copysignl($x, $y) {\n $x = +$x;\n $y = +$y;\n return +(+_copysign($x, $y));\n}\n\nfunction _scalbnl($x, $n) {\n $x = +$x;\n $n = $n | 0;\n return +(+_scalbn($x, $n));\n}\n\nfunction b2(p0, p1) {\n p0 = p0 | 0;\n p1 = p1 | 0;\n nullFunc_dii(2);\n return 0.0;\n}\n\nfunction b14(p0, p1) {\n p0 = p0 | 0;\n p1 = p1 | 0;\n nullFunc_iii(14);\n return 0;\n}\n\nfunction dynCall_v(index) {\n index = index | 0;\n FUNCTION_TABLE_v[index & 0]();\n}\n\nfunction _frexpl($x, $e) {\n $x = +$x;\n $e = $e | 0;\n return +(+_frexp($x, $e));\n}\n\nfunction __ZNKSt9bad_alloc4whatEv($this) {\n $this = $this | 0;\n return 12471;\n}\n\nfunction _isupper($c) {\n $c = $c | 0;\n return ($c + -65 | 0) >>> 0 < 26 | 0;\n}\n\nfunction _fmodl($x, $y) {\n $x = +$x;\n $y = +$y;\n return +(+_fmod($x, $y));\n}\n\nfunction _arPattCreateHandle() {\n return _arPattCreateHandle2(16, 50) | 0;\n}\n\nfunction setTempRet0(value) {\n value = value | 0;\n tempRet0 = value;\n}\n\nfunction b7(p0, p1) {\n p0 = p0 | 0;\n p1 = p1 | 0;\n nullFunc_vii(7);\n}\n\nfunction __ZNSt9type_infoD2Ev($this) {\n $this = $this | 0;\n return;\n}\n\nfunction __ZNSt9exceptionD2Ev($this) {\n $this = $this | 0;\n return;\n}\n\nfunction __ZNSt9bad_allocD2Ev($this) {\n $this = $this | 0;\n return;\n}\n\nfunction __ZdlPv($ptr) {\n $ptr = $ptr | 0;\n _free($ptr);\n return;\n}\n\nfunction b3(p0, p1) {\n p0 = p0 | 0;\n p1 = +p1;\n nullFunc_vid(3);\n}\n\nfunction _ftell($f) {\n $f = $f | 0;\n return ___ftello($f) | 0;\n}\n\nfunction stackRestore(top) {\n top = top | 0;\n STACKTOP = top;\n}\n\nfunction b4(p0) {\n p0 = p0 | 0;\n nullFunc_di(4);\n return 0.0;\n}\n\nfunction b8(p0) {\n p0 = p0 | 0;\n nullFunc_ii(8);\n return 0;\n}\n\nfunction ___unlockfile($f) {\n $f = $f | 0;\n return;\n}\n\nfunction ___lockfile($f) {\n $f = $f | 0;\n return 0;\n}\n\nfunction _getLogLevel() {\n return HEAP32[496] | 0;\n}\n\nfunction b6(p0) {\n p0 = p0 | 0;\n nullFunc_vi(6);\n}\n\nfunction getTempRet0() {\n return tempRet0 | 0;\n}\n\nfunction stackSave() {\n return STACKTOP | 0;\n}\n\nfunction b5() {\n nullFunc_i(5);\n return 0;\n}\n\nfunction b10() {\n nullFunc_v(10);\n}\n\n// EMSCRIPTEN_END_FUNCS\nvar FUNCTION_TABLE_iiii = [b0,__ZNK10__cxxabiv123__fundamental_type_info9can_catchEPKNS_16__shim_type_infoERPv,__ZNK10__cxxabiv117__class_type_info9can_catchEPKNS_16__shim_type_infoERPv,_sn_write,___stdio_write,___stdio_seek,___stdout_write,_setup,_setMarkerInfoDir,_getTransMatSquare,_getTransMatSquareCont,_getMultiEachMarkerInfo,__ZN10emscripten8internal7InvokerIiJiNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEE6invokeEPFiiS8_EiPNS0_11BindingTypeIS8_EUt_E,__ZN10emscripten8internal7InvokerIiJiiEE6invokeEPFiiiEii,___stdio_read,_do_read];\nvar FUNCTION_TABLE_viiiii = [b1,__ZNK10__cxxabiv117__class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib,__ZNK10__cxxabiv120__si_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib,__ZNK10__cxxabiv121__vmi_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib];\nvar FUNCTION_TABLE_dii = [b2,__ZN10emscripten8internal7InvokerIdJiEE6invokeEPFdiEi];\nvar FUNCTION_TABLE_vid = [b3,_setProjectionNearPlane,_setProjectionFarPlane,_setPattRatio];\nvar FUNCTION_TABLE_di = [b4,_getProjectionNearPlane,_getProjectionFarPlane,_getPattRatio];\nvar FUNCTION_TABLE_i = [b5,_getLogLevel];\nvar FUNCTION_TABLE_vi = [b6,__ZNSt9bad_allocD2Ev,__ZNSt9bad_allocD0Ev,__ZN10__cxxabiv116__shim_type_infoD2Ev,__ZN10__cxxabiv123__fundamental_type_infoD0Ev,__ZNK10__cxxabiv116__shim_type_info5noop1Ev,__ZNK10__cxxabiv116__shim_type_info5noop2Ev,__ZN10__cxxabiv117__class_type_infoD0Ev,__ZN10__cxxabiv120__si_class_type_infoD0Ev,__ZN10__cxxabiv121__vmi_class_type_infoD0Ev,_setLogLevel,__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEED2Ev,__ZNSt3__113unordered_mapIi7ARParamNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEED2Ev,_cleanup387,_cleanup392,b6];\nvar FUNCTION_TABLE_vii = [b7,_setThresholdMode,_setThreshold,_setPatternDetectionMode,_setMatrixCodeType,_setLabelingMode,_setImageProcMode,__ZN10emscripten8internal7InvokerIvJiEE6invokeEPFviEi];\nvar FUNCTION_TABLE_ii = [b8,__ZNKSt9bad_alloc4whatEv,___stdio_close,_teardown,_getMultiMarkerCount,_loadCamera,_detectMarker,_getMarkerNum,_getDebugMode,_getProcessingImage,_getThresholdMode,_getThreshold,_getPatternDetectionMode,_getMatrixCodeType,_getLabelingMode,_getImageProcMode,__ZN10emscripten8internal7InvokerIiJEE6invokeEPFivE,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8\n,b8,b8,b8];\nvar FUNCTION_TABLE_viii = [b9,__ZN10emscripten8internal7InvokerIvJiiEE6invokeEPFviiEii];\nvar FUNCTION_TABLE_v = [b10];\nvar FUNCTION_TABLE_viid = [b11,__ZN10emscripten8internal7InvokerIvJidEE6invokeEPFvidEid,__ZN10emscripten8internal7InvokerIvJifEE6invokeEPFvifEif,b11];\nvar FUNCTION_TABLE_iiiii = [b12,__ZN10emscripten8internal7InvokerIiJiiiEE6invokeEPFiiiiEiii];\nvar FUNCTION_TABLE_viiiiii = [b13,__ZNK10__cxxabiv117__class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib,__ZNK10__cxxabiv120__si_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib,__ZNK10__cxxabiv121__vmi_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib];\nvar FUNCTION_TABLE_iii = [b14,_compE,_addMarker,_addMultiMarker,_getMultiMarkerNum,_setMarkerInfoVertex,_getTransMatMultiSquare,_getTransMatMultiSquareRobust,_getMarkerInfo,_setDebugMode,__ZN10emscripten8internal7InvokerIiJiEE6invokeEPFiiEi,__ZN10emscripten8internal7InvokerIiJNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEE6invokeEPFiS8_EPNS0_11BindingTypeIS8_EUt_E,b14,b14,b14,b14];\nvar FUNCTION_TABLE_viiii = [b15,__ZNK10__cxxabiv117__class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi,__ZNK10__cxxabiv120__si_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi,__ZNK10__cxxabiv121__vmi_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi];\n\n  return { _malloc: _malloc, _i64Subtract: _i64Subtract, _fflush: _fflush, _i64Add: _i64Add, _memmove: _memmove, _memset: _memset, ___cxa_demangle: ___cxa_demangle, _memcpy: _memcpy, ___getTypeName: ___getTypeName, _bitshift64Lshr: _bitshift64Lshr, _free: _free, ___errno_location: ___errno_location, _bitshift64Shl: _bitshift64Shl, __GLOBAL__sub_I_ARToolKitJS_cpp: __GLOBAL__sub_I_ARToolKitJS_cpp, __GLOBAL__sub_I_bind_cpp: __GLOBAL__sub_I_bind_cpp, runPostSets: runPostSets, _emscripten_replace_memory: _emscripten_replace_memory, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, establishStackSpace: establishStackSpace, setThrew: setThrew, setTempRet0: setTempRet0, getTempRet0: getTempRet0, dynCall_iiii: dynCall_iiii, dynCall_viiiii: dynCall_viiiii, dynCall_dii: dynCall_dii, dynCall_vid: dynCall_vid, dynCall_di: dynCall_di, dynCall_i: dynCall_i, dynCall_vi: dynCall_vi, dynCall_vii: dynCall_vii, dynCall_ii: dynCall_ii, dynCall_viii: dynCall_viii, dynCall_v: dynCall_v, dynCall_viid: dynCall_viid, dynCall_iiiii: dynCall_iiiii, dynCall_viiiiii: dynCall_viiiiii, dynCall_iii: dynCall_iii, dynCall_viiii: dynCall_viiii };\n})\n// EMSCRIPTEN_END_ASM\n(Module.asmGlobalArg, Module.asmLibraryArg, buffer);\nvar real____cxa_demangle = asm[\"___cxa_demangle\"]; asm[\"___cxa_demangle\"] = function() {\nassert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\nassert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\nreturn real____cxa_demangle.apply(null, arguments);\n};\n\nvar real__i64Subtract = asm[\"_i64Subtract\"]; asm[\"_i64Subtract\"] = function() {\nassert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\nassert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\nreturn real__i64Subtract.apply(null, arguments);\n};\n\nvar real___GLOBAL__sub_I_bind_cpp = asm[\"__GLOBAL__sub_I_bind_cpp\"]; asm[\"__GLOBAL__sub_I_bind_cpp\"] = function() {\nassert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\nassert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\nreturn real___GLOBAL__sub_I_bind_cpp.apply(null, arguments);\n};\n\nvar real__fflush = asm[\"_fflush\"]; asm[\"_fflush\"] = function() {\nassert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\nassert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\nreturn real__fflush.apply(null, arguments);\n};\n\nvar real___GLOBAL__sub_I_ARToolKitJS_cpp = asm[\"__GLOBAL__sub_I_ARToolKitJS_cpp\"]; asm[\"__GLOBAL__sub_I_ARToolKitJS_cpp\"] = function() {\nassert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\nassert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\nreturn real___GLOBAL__sub_I_ARToolKitJS_cpp.apply(null, arguments);\n};\n\nvar real__i64Add = asm[\"_i64Add\"]; asm[\"_i64Add\"] = function() {\nassert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\nassert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\nreturn real__i64Add.apply(null, arguments);\n};\n\nvar real__memmove = asm[\"_memmove\"]; asm[\"_memmove\"] = function() {\nassert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\nassert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\nreturn real__memmove.apply(null, arguments);\n};\n\nvar real__malloc = asm[\"_malloc\"]; asm[\"_malloc\"] = function() {\nassert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\nassert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\nreturn real__malloc.apply(null, arguments);\n};\n\nvar real____getTypeName = asm[\"___getTypeName\"]; asm[\"___getTypeName\"] = function() {\nassert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\nassert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\nreturn real____getTypeName.apply(null, arguments);\n};\n\nvar real__bitshift64Lshr = asm[\"_bitshift64Lshr\"]; asm[\"_bitshift64Lshr\"] = function() {\nassert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\nassert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\nreturn real__bitshift64Lshr.apply(null, arguments);\n};\n\nvar real__free = asm[\"_free\"]; asm[\"_free\"] = function() {\nassert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\nassert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\nreturn real__free.apply(null, arguments);\n};\n\nvar real____errno_location = asm[\"___errno_location\"]; asm[\"___errno_location\"] = function() {\nassert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\nassert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\nreturn real____errno_location.apply(null, arguments);\n};\n\nvar real__bitshift64Shl = asm[\"_bitshift64Shl\"]; asm[\"_bitshift64Shl\"] = function() {\nassert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');\nassert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');\nreturn real__bitshift64Shl.apply(null, arguments);\n};\nvar ___cxa_demangle = Module[\"___cxa_demangle\"] = asm[\"___cxa_demangle\"];\nvar _i64Subtract = Module[\"_i64Subtract\"] = asm[\"_i64Subtract\"];\nvar __GLOBAL__sub_I_bind_cpp = Module[\"__GLOBAL__sub_I_bind_cpp\"] = asm[\"__GLOBAL__sub_I_bind_cpp\"];\nvar _fflush = Module[\"_fflush\"] = asm[\"_fflush\"];\nvar __GLOBAL__sub_I_ARToolKitJS_cpp = Module[\"__GLOBAL__sub_I_ARToolKitJS_cpp\"] = asm[\"__GLOBAL__sub_I_ARToolKitJS_cpp\"];\nvar _i64Add = Module[\"_i64Add\"] = asm[\"_i64Add\"];\nvar _memmove = Module[\"_memmove\"] = asm[\"_memmove\"];\nvar _memset = Module[\"_memset\"] = asm[\"_memset\"];\nvar runPostSets = Module[\"runPostSets\"] = asm[\"runPostSets\"];\nvar _malloc = Module[\"_malloc\"] = asm[\"_malloc\"];\nvar _memcpy = Module[\"_memcpy\"] = asm[\"_memcpy\"];\nvar ___getTypeName = Module[\"___getTypeName\"] = asm[\"___getTypeName\"];\nvar _bitshift64Lshr = Module[\"_bitshift64Lshr\"] = asm[\"_bitshift64Lshr\"];\nvar _free = Module[\"_free\"] = asm[\"_free\"];\nvar _emscripten_replace_memory = Module[\"_emscripten_replace_memory\"] = asm[\"_emscripten_replace_memory\"];\nvar ___errno_location = Module[\"___errno_location\"] = asm[\"___errno_location\"];\nvar _bitshift64Shl = Module[\"_bitshift64Shl\"] = asm[\"_bitshift64Shl\"];\nvar dynCall_iiii = Module[\"dynCall_iiii\"] = asm[\"dynCall_iiii\"];\nvar dynCall_viiiii = Module[\"dynCall_viiiii\"] = asm[\"dynCall_viiiii\"];\nvar dynCall_dii = Module[\"dynCall_dii\"] = asm[\"dynCall_dii\"];\nvar dynCall_vid = Module[\"dynCall_vid\"] = asm[\"dynCall_vid\"];\nvar dynCall_di = Module[\"dynCall_di\"] = asm[\"dynCall_di\"];\nvar dynCall_i = Module[\"dynCall_i\"] = asm[\"dynCall_i\"];\nvar dynCall_vi = Module[\"dynCall_vi\"] = asm[\"dynCall_vi\"];\nvar dynCall_vii = Module[\"dynCall_vii\"] = asm[\"dynCall_vii\"];\nvar dynCall_ii = Module[\"dynCall_ii\"] = asm[\"dynCall_ii\"];\nvar dynCall_viii = Module[\"dynCall_viii\"] = asm[\"dynCall_viii\"];\nvar dynCall_v = Module[\"dynCall_v\"] = asm[\"dynCall_v\"];\nvar dynCall_viid = Module[\"dynCall_viid\"] = asm[\"dynCall_viid\"];\nvar dynCall_iiiii = Module[\"dynCall_iiiii\"] = asm[\"dynCall_iiiii\"];\nvar dynCall_viiiiii = Module[\"dynCall_viiiiii\"] = asm[\"dynCall_viiiiii\"];\nvar dynCall_iii = Module[\"dynCall_iii\"] = asm[\"dynCall_iii\"];\nvar dynCall_viiii = Module[\"dynCall_viiii\"] = asm[\"dynCall_viiii\"];\n;\n\nRuntime.stackAlloc = asm['stackAlloc'];\nRuntime.stackSave = asm['stackSave'];\nRuntime.stackRestore = asm['stackRestore'];\nRuntime.establishStackSpace = asm['establishStackSpace'];\n\nRuntime.setTempRet0 = asm['setTempRet0'];\nRuntime.getTempRet0 = asm['getTempRet0'];\n\n\n\n// === Auto-generated postamble setup entry stuff ===\n\n\nfunction ExitStatus(status) {\n  this.name = \"ExitStatus\";\n  this.message = \"Program terminated with exit(\" + status + \")\";\n  this.status = status;\n};\nExitStatus.prototype = new Error();\nExitStatus.prototype.constructor = ExitStatus;\n\nvar initialStackTop;\nvar preloadStartTime = null;\nvar calledMain = false;\n\ndependenciesFulfilled = function runCaller() {\n  // If run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false)\n  if (!Module['calledRun']) run();\n  if (!Module['calledRun']) dependenciesFulfilled = runCaller; // try this again later, after new deps are fulfilled\n}\n\nModule['callMain'] = Module.callMain = function callMain(args) {\n  assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on __ATMAIN__)');\n  assert(__ATPRERUN__.length == 0, 'cannot call main when preRun functions remain to be called');\n\n  args = args || [];\n\n  ensureInitRuntime();\n\n  var argc = args.length+1;\n  function pad() {\n    for (var i = 0; i < 4-1; i++) {\n      argv.push(0);\n    }\n  }\n  var argv = [allocate(intArrayFromString(Module['thisProgram']), 'i8', ALLOC_NORMAL) ];\n  pad();\n  for (var i = 0; i < argc-1; i = i + 1) {\n    argv.push(allocate(intArrayFromString(args[i]), 'i8', ALLOC_NORMAL));\n    pad();\n  }\n  argv.push(0);\n  argv = allocate(argv, 'i32', ALLOC_NORMAL);\n\n\n  try {\n\n    var ret = Module['_main'](argc, argv, 0);\n\n\n    // if we're not running an evented main loop, it's time to exit\n    exit(ret, /* implicit = */ true);\n  }\n  catch(e) {\n    if (e instanceof ExitStatus) {\n      // exit() throws this once it's done to make sure execution\n      // has been stopped completely\n      return;\n    } else if (e == 'SimulateInfiniteLoop') {\n      // running an evented main loop, don't immediately exit\n      Module['noExitRuntime'] = true;\n      return;\n    } else {\n      if (e && typeof e === 'object' && e.stack) Module.printErr('exception thrown: ' + [e, e.stack]);\n      throw e;\n    }\n  } finally {\n    calledMain = true;\n  }\n}\n\n\n\n\nfunction run(args) {\n  args = args || Module['arguments'];\n\n  if (preloadStartTime === null) preloadStartTime = Date.now();\n\n  if (runDependencies > 0) {\n    Module.printErr('run() called, but dependencies remain, so not running');\n    return;\n  }\n\n  preRun();\n\n  if (runDependencies > 0) return; // a preRun added a dependency, run will be called later\n  if (Module['calledRun']) return; // run may have just been called through dependencies being fulfilled just in this very frame\n\n  function doRun() {\n    if (Module['calledRun']) return; // run may have just been called while the async setStatus time below was happening\n    Module['calledRun'] = true;\n\n    if (ABORT) return; \n\n    ensureInitRuntime();\n\n    preMain();\n\n    if (ENVIRONMENT_IS_WEB && preloadStartTime !== null) {\n      Module.printErr('pre-main prep time: ' + (Date.now() - preloadStartTime) + ' ms');\n    }\n\n    if (Module['onRuntimeInitialized']) Module['onRuntimeInitialized']();\n\n    if (Module['_main'] && shouldRunNow) Module['callMain'](args);\n\n    postRun();\n  }\n\n  if (Module['setStatus']) {\n    Module['setStatus']('Running...');\n    setTimeout(function() {\n      setTimeout(function() {\n        Module['setStatus']('');\n      }, 1);\n      doRun();\n    }, 1);\n  } else {\n    doRun();\n  }\n}\nModule['run'] = Module.run = run;\n\nfunction exit(status, implicit) {\n  if (implicit && Module['noExitRuntime']) {\n    Module.printErr('exit(' + status + ') implicitly called by end of main(), but noExitRuntime, so not exiting the runtime (you can use emscripten_force_exit, if you want to force a true shutdown)');\n    return;\n  }\n\n  if (Module['noExitRuntime']) {\n    Module.printErr('exit(' + status + ') called, but noExitRuntime, so halting execution but not exiting the runtime or preventing further async execution (you can use emscripten_force_exit, if you want to force a true shutdown)');\n  } else {\n\n    ABORT = true;\n    EXITSTATUS = status;\n    STACKTOP = initialStackTop;\n\n    exitRuntime();\n\n    if (Module['onExit']) Module['onExit'](status);\n  }\n\n  if (ENVIRONMENT_IS_NODE) {\n    // Work around a node.js bug where stdout buffer is not flushed at process exit:\n    // Instead of process.exit() directly, wait for stdout flush event.\n    // See https://github.com/joyent/node/issues/1669 and https://github.com/kripken/emscripten/issues/2582\n    // Workaround is based on https://github.com/RReverser/acorn/commit/50ab143cecc9ed71a2d66f78b4aec3bb2e9844f6\n    process['stdout']['once']('drain', function () {\n      process['exit'](status);\n    });\n    console.log(' '); // Make sure to print something to force the drain event to occur, in case the stdout buffer was empty.\n    // Work around another node bug where sometimes 'drain' is never fired - make another effort\n    // to emit the exit status, after a significant delay (if node hasn't fired drain by then, give up)\n    setTimeout(function() {\n      process['exit'](status);\n    }, 500);\n  } else\n  if (ENVIRONMENT_IS_SHELL && typeof quit === 'function') {\n    quit(status);\n  }\n  // if we reach here, we must throw an exception to halt the current execution\n  throw new ExitStatus(status);\n}\nModule['exit'] = Module.exit = exit;\n\nvar abortDecorators = [];\n\nfunction abort(what) {\n  if (what !== undefined) {\n    Module.print(what);\n    Module.printErr(what);\n    what = JSON.stringify(what)\n  } else {\n    what = '';\n  }\n\n  ABORT = true;\n  EXITSTATUS = 1;\n\n  var extra = '';\n\n  var output = 'abort(' + what + ') at ' + stackTrace() + extra;\n  if (abortDecorators) {\n    abortDecorators.forEach(function(decorator) {\n      output = decorator(output, what);\n    });\n  }\n  throw output;\n}\nModule['abort'] = Module.abort = abort;\n\n// {{PRE_RUN_ADDITIONS}}\n\nif (Module['preInit']) {\n  if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']];\n  while (Module['preInit'].length > 0) {\n    Module['preInit'].pop()();\n  }\n}\n\n// shouldRunNow refers to calling main(), not run().\nvar shouldRunNow = true;\nif (Module['noInitialRun']) {\n  shouldRunNow = false;\n}\n\n\nrun();\n\n// {{POST_RUN_ADDITIONS}}\n\n\n\n\n\n\n// {{MODULE_ADDITIONS}}\n\nexports.FS = FS;\nexports.Module = Module;\n\n\n\n\n\n","(function() {\n\t'use strict'\n\n\t/**\n\t\tThe ARController is the main object for doing AR marker detection with JSARToolKit.\n\n\t\tTo use an ARController, you need to tell it the dimensions to use for the AR processing canvas and\n\t\tpass it an ARCameraParam to define the camera parameters to use when processing images. \n\t\tThe ARCameraParam defines the lens distortion and aspect ratio of the camera used. \n\t\tSee https://www.artoolworks.com/support/library/Calibrating_your_camera for more information about AR camera parameteters and how to make and use them.\n\n\t\tIf you pass an image as the first argument, the ARController uses that as the image to process,\n\t\tusing the dimensions of the image as AR processing canvas width and height. If the first argument\n\t\tto ARController is an image, the second argument is used as the camera param.\n\n\t\tThe camera parameters argument can be either an ARCameraParam or an URL to a camera definition file.\n\t\tIf the camera argument is an URL, it is loaded into a new ARCameraParam, and the ARController dispatches\n\t\ta 'load' event and calls the onload method if it is defined.\n\n\t \t@exports ARController\n\t \t@constructor\n\n\t\t@param {number} width The width of the images to process.\n\t\t@param {number} height The height of the images to process.\n\t\t@param {ARCameraParam | string} camera The ARCameraParam to use for image processing. If this is a string, the ARController treats it as an URL and tries to load it as a ARCameraParam definition file, calling ARController#onload on success. \n\t*/\n\tvar ARController = function(width, height, camera) {\n\t\tvar id;\n\t\tvar w = width, h = height;\n\n\t\tthis.orientation = 'landscape';\n\n\t\tthis.listeners = {};\n\n\t\tif (typeof width !== 'number') {\n\t\t\tvar image = width;\n\t\t\tcamera = height;\n\t\t\tw = image.videoWidth || image.width;\n\t\t\th = image.videoHeight || image.height;\n\t\t\tthis.image = image;\n\t\t}\n\n\t\tthis.defaultMarkerWidth = 1;\n\t\tthis.patternMarkers = {};\n\t\tthis.barcodeMarkers = {};\n\t\tthis.transform_mat = new Float32Array(16);\n\n\t\tthis.canvas = document.createElement('canvas');\n\t\tthis.canvas.width = w;\n\t\tthis.canvas.height = h;\n\t\tthis.ctx = this.canvas.getContext('2d');\n\n\t\tthis.videoWidth = w;\n\t\tthis.videoHeight = h;\n\n\t\tif (typeof camera === 'string') {\n\n\t\t\tvar self = this;\n\t\t\tthis.cameraParam = new ARCameraParam(camera, function() {\n\t\t\t\tself._initialize();\n\t\t\t}, function(err) {\n\t\t\t\tconsole.error(\"ARController: Failed to load ARCameraParam\", err);\n\t\t\t});\n\n\t\t} else {\n\n\t\t\tthis.cameraParam = camera;\n\t\t\tthis._initialize();\n\n\t\t}\n\t};\n\n\t/**\n\t\tDestroys the ARController instance and frees all associated resources.\n\t\tAfter calling dispose, the ARController can't be used any longer. Make a new one if you need one.\n\n\t\tCalling this avoids leaking Emscripten memory, which may be important if you're using multiple ARControllers.\n\t*/\n\tARController.prototype.dispose = function() {\n\t\tartoolkit.teardown(this.id);\n\n\t\tfor (var t in this) {\n\t\t\tthis[t] = null;\n\t\t}\n\t};\n\n\t/**\n\t\tDetects markers in the given image. The process method dispatches marker detection events during its run.\n\n\t\tThe marker detection process proceeds by first dispatching a markerNum event that tells you how many\n\t\tmarkers were found in the image. Next, a getMarker event is dispatched for each found marker square.\n\t\tFinally, getMultiMarker is dispatched for every found multimarker, followed by getMultiMarkerSub events\n\t\tdispatched for each of the markers in the multimarker.\n\t\t\t\n\t\t\tarController.addEventListener('markerNum', function(ev) {\n\t\t\t\tconsole.log(\"Detected \" + ev.data + \" markers.\")\n\t\t\t});\n\t\t\tarController.addEventListener('getMarker', function(ev) {\n\t\t\t\tconsole.log(\"Detected marker with ids:\", ev.data.marker.id, ev.data.marker.idPatt, ev.data.marker.idMatrix);\n\t\t\t\tconsole.log(\"Marker data\", ev.data.marker);\n\t\t\t\tconsole.log(\"Marker transform matrix:\", [].join.call(ev.data.matrix, ', '));\n\t\t\t});\n\t\t\tarController.addEventListener('getMultiMarker', function(ev) {\n\t\t\t\tconsole.log(\"Detected multimarker with id:\", ev.data.multiMarkerId);\n\t\t\t});\n\t\t\tarController.addEventListener('getMultiMarkerSub', function(ev) {\n\t\t\t\tconsole.log(\"Submarker for \" + ev.data.multiMarkerId, ev.data.markerIndex, ev.data.marker);\n\t\t\t});\n\t\t\t\n\t\t\tarController.process(image);\t\n\n\n\t\tIf no image is given, defaults to this.image.\n\n\t\tIf the debugSetup has been called, draws debug markers on the debug canvas.\n\n\t\t@param {ImageElement | VideoElement} image The image to process [optional]. \n\t*/\n\tARController.prototype.process = function(image) {\n\t\tthis.detectMarker(image);\n\n\t\tvar markerNum = this.getMarkerNum();\n\t\tvar k,o;\n\t\tfor (k in this.patternMarkers) {\n\t\t\to = this.patternMarkers[k]\n\t\t\to.inPrevious = o.inCurrent;\n\t\t\to.inCurrent = false;\n\t\t}\n\t\tfor (k in this.barcodeMarkers) {\n\t\t\to = this.barcodeMarkers[k]\n\t\t\to.inPrevious = o.inCurrent;\n\t\t\to.inCurrent = false;\n\t\t}\n\n\t\tfor (var i=0; i<markerNum; i++) {\n\t\t\tvar markerInfo = this.getMarker(i);\n\n\t\t\tvar markerType = artoolkit.UNKNOWN_MARKER;\n\t\t\tvar visible = this.trackPatternMarkerId(-1);\n\n\t\t\tif (markerInfo.idPatt > -1 && (markerInfo.id === markerInfo.idPatt || markerInfo.idMatrix === -1)) {\n\t\t\t\tvisible = this.trackPatternMarkerId(markerInfo.idPatt);\n\t\t\t\tmarkerType = artoolkit.PATTERN_MARKER;\n\n\t\t\t\tif (markerInfo.dir !== markerInfo.dirPatt) {\n\t\t\t\t\tthis.setMarkerInfoDir(i, markerInfo.dirPatt);\n\t\t\t\t}\n\n\t\t\t} else if (markerInfo.idMatrix > -1) {\n\t\t\t\tvisible = this.trackBarcodeMarkerId(markerInfo.idMatrix);\n\t\t\t\tmarkerType = artoolkit.BARCODE_MARKER;\n\n\t\t\t\tif (markerInfo.dir !== markerInfo.dirMatrix) {\n\t\t\t\t\tthis.setMarkerInfoDir(i, markerInfo.dirMatrix);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (markerType !== artoolkit.UNKNOWN_MARKER && visible.inPrevious) {\n\t\t\t\tthis.getTransMatSquareCont(i, visible.markerWidth, visible.matrix, visible.matrix);\n\t\t\t} else {\n\t\t\t\tthis.getTransMatSquare(i, visible.markerWidth, visible.matrix);\n\t\t\t}\n\n\t\t\tvisible.inCurrent = true;\n\t\t\tthis.transMatToGLMat(visible.matrix, this.transform_mat);\n\t\t\tthis.dispatchEvent({\n\t\t\t\tname: 'getMarker',\n\t\t\t\ttarget: this,\n\t\t\t\tdata: {\n\t\t\t\t\tindex: i,\n\t\t\t\t\ttype: markerType,\n\t\t\t\t\tmarker: markerInfo,\n\t\t\t\t\tmatrix: this.transform_mat\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tvar multiMarkerCount = this.getMultiMarkerCount();\n\t\tfor (var i=0; i<multiMarkerCount; i++) {\n\t\t\tvar subMarkerCount = this.getMultiMarkerPatternCount(i);\n\t\t\tvar visible = false;\n\n\t\t\tartoolkit.getTransMatMultiSquareRobust(this.id, i);\n\t\t\tthis.transMatToGLMat(this.marker_transform_mat, this.transform_mat);\n\n\t\t\tfor (var j=0; j<subMarkerCount; j++) {\n\t\t\t\tvar multiEachMarkerInfo = this.getMultiEachMarker(i, j);\n\t\t\t\tif (multiEachMarkerInfo.visible >= 0) {\n\t\t\t\t\tvisible = true;\n\t\t\t\t\tthis.dispatchEvent({\n\t\t\t\t\t\tname: 'getMultiMarker',\n\t\t\t\t\t\ttarget: this,\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tmultiMarkerId: i,\n\t\t\t\t\t\t\tmatrix: this.transform_mat\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (visible) {\n\t\t\t\tfor (var j=0; j<subMarkerCount; j++) {\n\t\t\t\t\tvar multiEachMarkerInfo = this.getMultiEachMarker(i, j);\n\t\t\t\t\tthis.transMatToGLMat(this.marker_transform_mat, this.transform_mat);\n\t\t\t\t\tthis.dispatchEvent({\n\t\t\t\t\t\tname: 'getMultiMarkerSub',\n\t\t\t\t\t\ttarget: this,\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tmultiMarkerId: i,\n\t\t\t\t\t\t\tmarkerIndex: j,\n\t\t\t\t\t\t\tmarker: multiEachMarkerInfo,\n\t\t\t\t\t\t\tmatrix: this.transform_mat\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (this._bwpointer) {\n\t\t\tthis.debugDraw();\n\t\t}\n\t};\n\n\t/**\n\t\tAdds the given pattern marker ID to the index of tracked IDs.\n\t\tSets the markerWidth for the pattern marker to markerWidth.\n\n\t\tUsed by process() to implement continuous tracking, \n\t\tkeeping track of the marker's transformation matrix\n\t\tand customizable marker widths.\n\n\t\t@param {number} id ID of the pattern marker to track.\n\t\t@param {number} markerWidth The width of the marker to track.\n\t\t@return {Object} The marker tracking object.\n\t*/\n\tARController.prototype.trackPatternMarkerId = function(id, markerWidth) {\n\t\tvar obj = this.patternMarkers[id];\n\t\tif (!obj) {\n\t\t\tthis.patternMarkers[id] = obj = {\n\t\t\t\tinPrevious: false,\n\t\t\t\tinCurrent: false,\n\t\t\t\tmatrix: new Float32Array(12),\n\t\t\t\tmarkerWidth: markerWidth || this.defaultMarkerWidth\n\t\t\t};\n\t\t}\n\t\tif (markerWidth) {\n\t\t\tobj.markerWidth = markerWidth;\n\t\t}\n\t\treturn obj;\n\t};\n\n\t/**\n\t\tAdds the given barcode marker ID to the index of tracked IDs.\n\t\tSets the markerWidth for the pattern marker to markerWidth.\n\n\t\tUsed by process() to implement continuous tracking, \n\t\tkeeping track of the marker's transformation matrix\n\t\tand customizable marker widths.\n\n\t\t@param {number} id ID of the barcode marker to track.\n\t\t@param {number} markerWidth The width of the marker to track.\n\t\t@return {Object} The marker tracking object.\n\t*/\n\tARController.prototype.trackBarcodeMarkerId = function(id, markerWidth) {\n\t\tvar obj = this.barcodeMarkers[id];\n\t\tif (!obj) {\n\t\t\tthis.barcodeMarkers[id] = obj = {\n\t\t\t\tinPrevious: false,\n\t\t\t\tinCurrent: false,\n\t\t\t\tmatrix: new Float32Array(12),\n\t\t\t\tmarkerWidth: markerWidth || this.defaultMarkerWidth\n\t\t\t};\n\t\t}\n\t\tif (markerWidth) {\n\t\t\tobj.markerWidth = markerWidth;\n\t\t}\n\t\treturn obj;\n\t};\n\n\t/**\n\t\tReturns the number of multimarkers registered on this ARController.\n\n\t\t@return {number} Number of multimarkers registered.\n\t*/\n\tARController.prototype.getMultiMarkerCount = function() {\n\t\treturn artoolkit.getMultiMarkerCount(this.id);\n\t};\n\n\t/**\n\t\tReturns the number of markers in the multimarker registered for the given multiMarkerId.\n\n\t\t@param {number} multiMarkerId The id number of the multimarker to access. Given by loadMultiMarker.\n\t\t@return {number} Number of markers in the multimarker. Negative value indicates failure to find the multimarker.\n\t*/\n\tARController.prototype.getMultiMarkerPatternCount = function(multiMarkerId) {\n\t\treturn artoolkit.getMultiMarkerNum(this.id, multiMarkerId);\n\t};\n\n\t/**\n\t\tAdd an event listener on this ARController for the named event, calling the callback function\n\t\twhenever that event is dispatched.\n\n\t\tPossible events are: \n\t\t  * getMarker - dispatched whenever process() finds a square marker\n\t\t  * getMultiMarker - dispatched whenever process() finds a visible registered multimarker\n\t\t  * getMultiMarkerSub - dispatched by process() for each marker in a visible multimarker\n\t\t  * load - dispatched when the ARController is ready to use (useful if passing in a camera URL in the constructor)\n\n\t\t@param {string} name Name of the event to listen to.\n\t\t@param {function} callback Callback function to call when an event with the given name is dispatched.\n\t*/\n\tARController.prototype.addEventListener = function(name, callback) {\n       if (!this.listeners[name]) {\n\t\t\tthis.listeners[name] = [];\n\t\t}\n\t\tthis.listeners[name].push(callback);\n\t};\n\n\t/**\n\t\tRemove an event listener from the named event.\n\n\t\t@param {string} name Name of the event to stop listening to.\n\t\t@param {function} callback Callback function to remove from the listeners of the named event.\n\t*/\n\tARController.prototype.removeEventListener = function(name, callback) {\n\t\tif (this.listeners[name]) {\n\t\t\tvar index = this.listeners[name].indexOf(callback);\n\t\t\tif (index > -1) {\n\t\t\t\tthis.listeners[name].splice(index, 1);\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t\tDispatches the given event to all registered listeners on event.name.\n\n\t\t@param {Object} event Event to dispatch.\n\t*/\n\tARController.prototype.dispatchEvent = function(event) {\n\t\tvar listeners = this.listeners[event.name];\n\t\tif (listeners) {\n\t\t\tfor (var i=0; i<listeners.length; i++) {\n\t\t\t\tlisteners[i].call(this, event);\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t\tSets up a debug canvas for the AR detection. Draws a red marker on top of each detected square in the image.\n\n\t\tThe debug canvas is added to document.body.\n\t*/\n\tARController.prototype.debugSetup = function() {\n\t\tdocument.body.appendChild(this.canvas)\n\t\tthis.setDebugMode(1);\n\t\tthis._bwpointer = this.getProcessingImage();\n\t};\n\n\t/**\n\t\tLoads a pattern marker from the given URL and calls the onSuccess callback with the UID of the marker.\n\n\t\tarController.loadMarker(markerURL, onSuccess, onError);\n\n\t\t@param {string} markerURL - The URL of the marker pattern file to load.\n\t\t@param {function} onSuccess - The success callback. Called with the id of the loaded marker on a successful load.\n\t\t@param {function} onError - The error callback. Called with the encountered error if the load fails.\n\t*/\n\tARController.prototype.loadMarker = function(markerURL, onSuccess, onError) {\n\t\treturn artoolkit.addMarker(this.id, markerURL, onSuccess, onError);\n\t};\n\n\t/**\n\t\tLoads a multimarker from the given URL and calls the onSuccess callback with the UID of the marker.\n\n\t\tarController.loadMultiMarker(markerURL, onSuccess, onError);\n\n\t\t@param {string} markerURL - The URL of the multimarker pattern file to load.\n\t\t@param {function} onSuccess - The success callback. Called with the id and the number of sub-markers of the loaded marker on a successful load.\n\t\t@param {function} onError - The error callback. Called with the encountered error if the load fails.\n\t*/\n\tARController.prototype.loadMultiMarker = function(markerURL, onSuccess, onError) {\n\t\treturn artoolkit.addMultiMarker(this.id, markerURL, onSuccess, onError);\n\t};\n\n\t/**\n\t * Populates the provided float array with the current transformation for the specified marker. After \n\t * a call to detectMarker, all marker information will be current. Marker transformations can then be \n\t * checked.\n\t * @param {number} markerUID\tThe unique identifier (UID) of the marker to query\n\t * @param {number} markerWidth\tThe width of the marker\n\t * @param {Float64Array} dst\tThe float array to populate with the 3x4 marker transformation matrix\n\t * @return\t{Float64Array} The dst array.\n\t */\n\tARController.prototype.getTransMatSquare = function(markerIndex, markerWidth, dst) {\n\t\tartoolkit.getTransMatSquare(this.id, markerIndex, markerWidth);\n\t\tdst.set(this.marker_transform_mat);\n\t\treturn dst;\n\t};\n\n\t/**\n\t * Populates the provided float array with the current transformation for the specified marker, using \n\t * previousMarkerTransform as the previously detected transformation. After \n\t * a call to detectMarker, all marker information will be current. Marker transformations can then be \n\t * checked.\n\t * @param {number} markerUID\tThe unique identifier (UID) of the marker to query\n\t * @param {number} markerWidth\tThe width of the marker\n\t * @param {Float64Array} previousMarkerTransform\tThe float array to use as the previous 3x4 marker transformation matrix\n\t * @param {Float64Array} dst\tThe float array to populate with the 3x4 marker transformation matrix\n\t * @return\t{Float64Array} The dst array.\n\t */\n\tARController.prototype.getTransMatSquareCont = function(markerIndex, markerWidth, previousMarkerTransform, dst) {\n\t\tthis.marker_transform_mat.set(previousMarkerTransform)\n\t\tartoolkit.getTransMatSquareCont(this.id, markerIndex, markerWidth);\n\t\tdst.set(this.marker_transform_mat);\n\t\treturn dst;\n\t};\n\n\t/**\n\t * Populates the provided float array with the current transformation for the specified multimarker. After \n\t * a call to detectMarker, all marker information will be current. Marker transformations can then be \n\t * checked.\n\t *\n\t * @param {number} markerUID\tThe unique identifier (UID) of the marker to query\n\t * @param {number} markerWidth\tThe width of the marker\n\t * @param {Float64Array} dst\tThe float array to populate with the 3x4 marker transformation matrix\n\t * @return\t{Float64Array} The dst array.\n\t */\n\tARController.prototype.getTransMatMultiSquare = function(multiMarkerId, dst) {\n\t\tartoolkit.getTransMatMultiSquare(this.id, multiMarkerId);\n\t\tdst.set(this.marker_transform_mat);\n\t\treturn dst;\n\t};\n\n\t/**\n\t * Populates the provided float array with the current robust transformation for the specified multimarker. After \n\t * a call to detectMarker, all marker information will be current. Marker transformations can then be \n\t * checked.\n\t * @param {number} markerUID\tThe unique identifier (UID) of the marker to query\n\t * @param {number} markerWidth\tThe width of the marker\n\t * @param {Float64Array} dst\tThe float array to populate with the 3x4 marker transformation matrix\n\t * @return\t{Float64Array} The dst array.\n\t */\n\tARController.prototype.getTransMatMultiSquareRobust = function(multiMarkerId, dst) {\n\t\tartoolkit.getTransMatMultiSquare(this.id, multiMarkerId);\n\t\tdst.set(this.marker_transform_mat);\n\t\treturn dst;\n\t};\n\n\t/**\n\t\tConverts the given 3x4 marker transformation matrix in the 12-element transMat array\n\t\tinto a 4x4 WebGL matrix and writes the result into the 16-element glMat array.\n\n\t\tIf scale parameter is given, scales the transform of the glMat by the scale parameter.\n\n\t\t@param {Float64Array} transMat The 3x4 marker transformation matrix.\n\t\t@param {Float64Array} glMat The 4x4 GL transformation matrix.\n\t\t@param {number} scale The scale for the transform.\n\t*/ \n\tARController.prototype.transMatToGLMat = function(transMat, glMat, scale) {\n\t\tglMat[0 + 0*4] = transMat[0]; // R1C1\n\t\tglMat[0 + 1*4] = transMat[1]; // R1C2\n\t\tglMat[0 + 2*4] = transMat[2];\n\t\tglMat[0 + 3*4] = transMat[3];\n\t\tglMat[1 + 0*4] = transMat[4]; // R2\n\t\tglMat[1 + 1*4] = transMat[5];\n\t\tglMat[1 + 2*4] = transMat[6];\n\t\tglMat[1 + 3*4] = transMat[7];\n\t\tglMat[2 + 0*4] = transMat[8]; // R3\n\t\tglMat[2 + 1*4] = transMat[9];\n\t\tglMat[2 + 2*4] = transMat[10];\n\t\tglMat[2 + 3*4] = transMat[11];\n\t\tglMat[3 + 0*4] = 0.0;\n\t\tglMat[3 + 1*4] = 0.0;\n\t\tglMat[3 + 2*4] = 0.0;\n\t\tglMat[3 + 3*4] = 1.0;\n\t\tif (scale != undefined && scale !== 0.0) {\n\t\t\tglMat[12] *= scale;\n\t\t\tglMat[13] *= scale;\n\t\t\tglMat[14] *= scale;\n\t\t}\n\t\treturn glMat;\n\t};\n\n\t/**\n\t\tThis is the core ARToolKit marker detection function. It calls through to a set of\n\t\tinternal functions to perform the key marker detection steps of binarization and\n\t\tlabelling, contour extraction, and template matching and/or matrix code extraction.\n        \n        Typically, the resulting set of detected markers is retrieved by calling arGetMarkerNum\n        to get the number of markers detected and arGetMarker to get an array of ARMarkerInfo\n        structures with information on each detected marker, followed by a step in which\n        detected markers are possibly examined for some measure of goodness of match (e.g. by\n        examining the match confidence value) and pose extraction.\n\n\t\t@param {image} Image to be processed to detect markers.\n\t\t@return {number}     0 if the function proceeded without error, or a value less than 0 in case of error.\n\t\t\tA result of 0 does not however, imply any markers were detected.\n\t*/\n\tARController.prototype.detectMarker = function(image) {\n\t\tif (this._copyImageToHeap(image)) {\n\t\t\treturn artoolkit.detectMarker(this.id);\n\t\t}\n\t\treturn -99;\n\t};\n\n\t/**\n\t\tGet the number of markers detected in a video frame.\n  \n\t    @return {number}     The number of detected markers in the most recent image passed to arDetectMarker.\n    \t    Note that this is actually a count, not an index. A better name for this function would be\n        \tarGetDetectedMarkerCount, but the current name lives on for historical reasons.\n    */\n\tARController.prototype.getMarkerNum = function() {\n\t\treturn artoolkit.getMarkerNum(this.id);\n\t};\n\n\t/**\n\t\tGet the marker info struct for the given marker index in detected markers.\n\n\t\tCall this.detectMarker first, then use this.getMarkerNum to get the detected marker count.\n\n\t\tThe returned object is the global artoolkit.markerInfo object and will be overwritten\n\t\tby subsequent calls. If you need to hang on to it, create a copy using this.cloneMarkerInfo();\n\n\t\tReturns undefined if no marker was found.\n\n\t\tA markerIndex of -1 is used to access the global custom marker.\n\n\t\tThe fields of the markerInfo struct are:\n\t\t    @field      area Area in pixels of the largest connected region, comprising the marker border and regions connected to it. Note that this is\n\t\t        not the same as the actual onscreen area inside the marker border.\n\t\t\t@field      id If pattern detection mode is either pattern mode OR matrix but not both, will be marker ID (>= 0) if marker is valid, or -1 if invalid.\n\t\t\t@field      idPatt If pattern detection mode includes a pattern mode, will be marker ID (>= 0) if marker is valid, or -1 if invalid.\n\t\t    @field      idMatrix If pattern detection mode includes a matrix mode, will be marker ID (>= 0) if marker is valid, or -1 if invalid.\n\t\t\t@field      dir If pattern detection mode is either pattern mode OR matrix but not both, and id != -1, will be marker direction (range 0 to 3, inclusive).\n\t\t\t@field      dirPatt If pattern detection mode includes a pattern mode, and id != -1, will be marker direction (range 0 to 3, inclusive).\n\t\t\t@field      dirMatrix If pattern detection mode includes a matrix mode, and id != -1, will be marker direction (range 0 to 3, inclusive).\n\t\t\t@field      cf If pattern detection mode is either pattern mode OR matrix but not both, will be marker matching confidence (range 0.0 to 1.0 inclusive) if marker is valid, or -1.0 if marker is invalid.\n\t\t\t@field      cfPatt If pattern detection mode includes a pattern mode, will be marker matching confidence (range 0.0 to 1.0 inclusive) if marker is valid, or -1.0 if marker is invalid.\n\t\t\t@field      cfMatrix If pattern detection mode includes a matrix mode, will be marker matching confidence (range 0.0 to 1.0 inclusive) if marker is valid, or -1.0 if marker is invalid.\n\t\t\t@field      pos 2D position (in camera image coordinates, origin at top-left) of the centre of the marker.\n\t\t\t@field      line Line equations for the 4 sides of the marker.\n\t\t\t@field      vertex 2D positions (in camera image coordinates, origin at top-left) of the corners of the marker. vertex[(4 - dir)%4][] is the top-left corner of the marker. Other vertices proceed clockwise from this. These are idealised coordinates (i.e. the onscreen position aligns correctly with the undistorted camera image.)\n\n\n\t\t@param {number} markerIndex The index of the marker to query.\n\t\t@returns {Object} The markerInfo struct.\n\t*/\n\tARController.prototype.getMarker = function(markerIndex) {\n\t\tif (0 === artoolkit.getMarker(this.id, markerIndex)) {\n\t\t\treturn artoolkit.markerInfo;\n\t\t}\n\t};\n\n\t/**\n\t\tSet marker vertices to the given vertexData[4][2] array.\n\n\t\tSets the marker pos to the center of the vertices.\n\n\t\tUseful for building custom markers for getTransMatSquare.\n\n\t\tA markerIndex of -1 is used to access the global custom marker.\n\n\t\t@param {number} markerIndex The index of the marker to edit.\n\t*/\n\tARController.prototype.setMarkerInfoVertex = function(markerIndex, vertexData) {\n\t\tfor (var i=0; i<vertexData.length; i++) {\n\t\t\tthis.marker_transform_mat[i*2+0] = vertexData[i][0];\n\t\t\tthis.marker_transform_mat[i*2+1] = vertexData[i][1];\n\t\t}\n\t\treturn artoolkit.setMarkerInfoVertex(this.id, markerIndex);\n\t};\n\n\t/**\n\t\tMakes a deep copy of the given marker info.\n\n\t\t@param {Object} markerInfo The marker info object to copy.\n\t\t@return {Object} The new copy of the marker info.\n\t*/\n\tARController.prototype.cloneMarkerInfo = function(markerInfo) {\n\t\treturn JSON.parse(JSON.stringify(markerInfo));\n\t};\n\n\t/**\n\t\tGet the marker info struct for the given marker index in detected markers.\n\n\t\tCall this.detectMarker first, then use this.getMarkerNum to get the detected marker count.\n\n\t\tThe returned object is the global artoolkit.markerInfo object and will be overwritten\n\t\tby subsequent calls. If you need to hang on to it, create a copy using this.cloneMarkerInfo();\n\n\t\tReturns undefined if no marker was found.\n\n\t\t@field {number} pattId The index of the marker.\n\t\t@field {number} pattType The type of the marker. Either AR_MULTI_PATTERN_TYPE_TEMPLATE or AR_MULTI_PATTERN_TYPE_MATRIX.\n\t\t@field {number} visible 0 or larger if the marker is visible\n\t\t@field {number} width The width of the marker.\n\n\t\t@param {number} multiMarkerId The multimarker to query.\n\t\t@param {number} markerIndex The index of the marker to query.\n\t\t@returns {Object} The markerInfo struct.\n\t*/\n\tARController.prototype.getMultiEachMarker = function(multiMarkerId, markerIndex) {\n\t\tif (0 === artoolkit.getMultiEachMarker(this.id, multiMarkerId, markerIndex)) {\n\t\t\treturn artoolkit.multiEachMarkerInfo;\n\t\t}\n\t};\n\n\n\t/**\n\t\tReturns the 16-element WebGL transformation matrix used by ARController.process to \n\t\tpass marker WebGL matrices to event listeners.\n\n\t\tUnique to each ARController.\n\n\t\t@return {Float64Array} The 16-element WebGL transformation matrix used by the ARController.\n\t*/\n\tARController.prototype.getTransformationMatrix = function() {\n\t\treturn this.transform_mat;\n\t};\n\n\t/**\n\t * Returns the projection matrix computed from camera parameters for the ARController.\n\t *\n\t * @return {Float64Array} The 16-element WebGL camera matrix for the ARController camera parameters.\n\t */\n\tARController.prototype.getCameraMatrix = function() {\n\t\treturn this.camera_mat;\n\t};\n\n\t/**\n\t\tReturns the shared ARToolKit 3x4 marker transformation matrix, used for passing and receiving\n\t\tmarker transforms to/from the Emscripten side.\n\n\t\t@return {Float64Array} The 12-element 3x4 row-major marker transformation matrix used by ARToolKit.\n\t*/\n\tARController.prototype.getMarkerTransformationMatrix = function() {\n\t\treturn this.marker_transform_mat;\n\t};\n\n\n\t/* Setter / Getter Proxies */\n\n\t/**\n\t * Enables or disables debug mode in the tracker. When enabled, a black and white debug\n\t * image is generated during marker detection. The debug image is useful for visualising\n\t * the binarization process and choosing a threshold value.\n\t * @param {number} debug\t\ttrue to enable debug mode, false to disable debug mode\n\t * @see\t\t\t\tgetDebugMode()\n\t */\n\tARController.prototype.setDebugMode = function(mode) {\n\t\treturn artoolkit.setDebugMode(this.id, mode);\n\t};\n\n\t/**\n\t * Returns whether debug mode is currently enabled.\n\t * @return\t\t\ttrue when debug mode is enabled, false when debug mode is disabled\n\t * @see\t\t\t\tsetDebugMode()\n\t */\n\tARController.prototype.getDebugMode = function() {\n\t\treturn artoolkit.getDebugMode(this.id);\n\t};\n\n\t/**\n\t\tReturns the Emscripten HEAP offset to the debug processing image used by ARToolKit.\n\n\t\t@return {number} HEAP offset to the debug processing image.\n\t*/\n\tARController.prototype.getProcessingImage = function() {\n\t\treturn artoolkit.getProcessingImage(this.id);\n\t}\n\n\t/**\n\t\tSets the logging level to use by ARToolKit.\n\n\t\t@param \n\t*/\n\tARController.prototype.setLogLevel = function(mode) {\n\t\treturn artoolkit.setLogLevel(mode);\n\t};\n\n\tARController.prototype.getLogLevel = function() {\n\t\treturn artoolkit.getLogLevel();\n\t};\n\n\tARController.prototype.setMarkerInfoDir = function(markerIndex, dir) {\n\t\treturn artoolkit.setMarkerInfoDir(this.id, markerIndex, dir);\n\t};\n\n\tARController.prototype.setProjectionNearPlane = function(value) {\n\t\treturn artoolkit.setProjectionNearPlane(this.id, value);\n\t};\n\n\tARController.prototype.getProjectionNearPlane = function() {\n\t\treturn artoolkit.getProjectionNearPlane(this.id);\n\t};\n\n\tARController.prototype.setProjectionFarPlane = function(value) {\n\t\treturn artoolkit.setProjectionFarPlane(this.id, value);\n\t};\n\n\tARController.prototype.getProjectionFarPlane = function() {\n\t\treturn artoolkit.getProjectionFarPlane(this.id);\n\t};\n\n\n\t/**\n\t    Set the labeling threshold mode (auto/manual).\n\n\t    @param {number}\t\tmode An integer specifying the mode. One of:\n\t        AR_LABELING_THRESH_MODE_MANUAL,\n\t        AR_LABELING_THRESH_MODE_AUTO_MEDIAN,\n\t        AR_LABELING_THRESH_MODE_AUTO_OTSU,\n\t        AR_LABELING_THRESH_MODE_AUTO_ADAPTIVE,\n\t        AR_LABELING_THRESH_MODE_AUTO_BRACKETING\n\t */\n \tARController.prototype.setThresholdMode = function(mode) {\n\t\treturn artoolkit.setThresholdMode(this.id, mode);\n\t};\n\n\t/**\n\t * Gets the current threshold mode used for image binarization.\n\t * @return\t{number}\t\tThe current threshold mode\n\t * @see\t\t\t\tgetVideoThresholdMode()\n\t */\n\tARController.prototype.getThresholdMode = function() {\n\t\treturn artoolkit.getThresholdMode(this.id);\n\t};\n\n\t/**\n    \tSet the labeling threshhold.\n\n        This function forces sets the threshold value.\n        The default value is AR_DEFAULT_LABELING_THRESH which is 100.\n        \n        The current threshold mode is not affected by this call.\n        Typically, this function is used when labeling threshold mode\n        is AR_LABELING_THRESH_MODE_MANUAL.\n \n        The threshold value is not relevant if threshold mode is\n        AR_LABELING_THRESH_MODE_AUTO_ADAPTIVE.\n \n        Background: The labeling threshold is the value which\n\t\tthe AR library uses to differentiate between black and white\n\t\tportions of an ARToolKit marker. Since the actual brightness,\n\t\tcontrast, and gamma of incoming images can vary signficantly\n\t\tbetween different cameras and lighting conditions, this\n\t\tvalue typically needs to be adjusted dynamically to a\n\t\tsuitable midpoint between the observed values for black\n\t\tand white portions of the markers in the image.\n\n\t\t@param {number}     thresh An integer in the range [0,255] (inclusive).\n\t*/\n\tARController.prototype.setThreshold = function(threshold) {\n\t\treturn artoolkit.setThreshold(this.id, threshold);\n\t};\n\n\t/**\n\t    Get the current labeling threshold.\n\n\t\tThis function queries the current labeling threshold. For,\n\t\tAR_LABELING_THRESH_MODE_AUTO_MEDIAN, AR_LABELING_THRESH_MODE_AUTO_OTSU,\n\t\tand AR_LABELING_THRESH_MODE_AUTO_BRACKETING\n\t\tthe threshold value is only valid until the next auto-update.\n\n\t\tThe current threshold mode is not affected by this call.\n\n\t\tThe threshold value is not relevant if threshold mode is\n\t\tAR_LABELING_THRESH_MODE_AUTO_ADAPTIVE.\n\n\t    @return {number} The current threshold value.\n\t*/\n\tARController.prototype.getThreshold = function() {\n\t\treturn artoolkit.getThreshold(this.id);\n\t};\n\n\n\t/**\n\t\tSet the pattern detection mode\n\n\t\tThe pattern detection determines the method by which ARToolKit\n\t\tmatches detected squares in the video image to marker templates\n\t\tand/or IDs. ARToolKit v4.x can match against pictorial \"template\" markers,\n\t\twhose pattern files are created with the mk_patt utility, in either colour\n\t\tor mono, and additionally can match against 2D-barcode-type \"matrix\"\n\t\tmarkers, which have an embedded marker ID. Two different two-pass modes\n\t\tare also available, in which a matrix-detection pass is made first,\n\t\tfollowed by a template-matching pass.\n\n\t\t@param {number} mode\n\t\t\tOptions for this field are:\n\t\t\tAR_TEMPLATE_MATCHING_COLOR\n\t\t\tAR_TEMPLATE_MATCHING_MONO\n\t\t\tAR_MATRIX_CODE_DETECTION\n\t\t\tAR_TEMPLATE_MATCHING_COLOR_AND_MATRIX\n\t\t\tAR_TEMPLATE_MATCHING_MONO_AND_MATRIX\n\t\t\tThe default mode is AR_TEMPLATE_MATCHING_COLOR.\n\t*/\n\tARController.prototype.setPatternDetectionMode = function(value) {\n\t\treturn artoolkit.setPatternDetectionMode(this.id, value);\n\t};\n\n\t/**\n\t\tReturns the current pattern detection mode.\n\n\t\t@return {number} The current pattern detection mode.\n\t*/\n\tARController.prototype.getPatternDetectionMode = function() {\n\t\treturn artoolkit.getPatternDetectionMode(this.id);\n\t};\n\n\t/**\n\t\tSet the size and ECC algorithm to be used for matrix code (2D barcode) marker detection.\n\n\t\tWhen matrix-code (2D barcode) marker detection is enabled (see arSetPatternDetectionMode)\n\t\tthen the size of the barcode pattern and the type of error checking and correction (ECC)\n\t\twith which the markers were produced can be set via this function.\n\n\t\tThis setting is global to a given ARHandle; It is not possible to have two different matrix\n\t\tcode types in use at once.\n\n\t    @param      type The type of matrix code (2D barcode) in use. Options include:\n\t        AR_MATRIX_CODE_3x3\n\t        AR_MATRIX_CODE_3x3_HAMMING63\n\t        AR_MATRIX_CODE_3x3_PARITY65\n\t        AR_MATRIX_CODE_4x4\n\t        AR_MATRIX_CODE_4x4_BCH_13_9_3\n\t        AR_MATRIX_CODE_4x4_BCH_13_5_5\n\t        The default mode is AR_MATRIX_CODE_3x3.\n\t*/\n\tARController.prototype.setMatrixCodeType = function(value) {\n\t\treturn artoolkit.setMatrixCodeType(this.id, value);\n\t};\n\n\t/**\n\t\tReturns the current matrix code (2D barcode) marker detection type.\n\n\t\t@return {number} The current matrix code type.\n\t*/\n\tARController.prototype.getMatrixCodeType = function() {\n\t\treturn artoolkit.getMatrixCodeType(this.id);\n\t};\n\n\t/**\n\t\tSelect between detection of black markers and white markers.\n\t\n\t\tARToolKit's labelling algorithm can work with both black-bordered\n\t\tmarkers on a white background (AR_LABELING_BLACK_REGION) or\n\t\twhite-bordered markers on a black background (AR_LABELING_WHITE_REGION).\n\t\tThis function allows you to specify the type of markers to look for.\n\t\tNote that this does not affect the pattern-detection algorith\n\t\twhich works on the interior of the marker.\n\n\t\t@param {number}      mode\n\t\t\tOptions for this field are:\n\t\t\tAR_LABELING_WHITE_REGION\n\t\t\tAR_LABELING_BLACK_REGION\n\t\t\tThe default mode is AR_LABELING_BLACK_REGION.\n\t*/\n\tARController.prototype.setLabelingMode = function(value) {\n\t\treturn artoolkit.setLabelingMode(this.id, value);\n\t};\n\n\t/**\n\t\tEnquire whether detection is looking for black markers or white markers.\n\t    \n\t    See discussion for setLabelingMode.\n\n\t    @result {number} The current labeling mode.\n\t*/\n\tARController.prototype.getLabelingMode = function() {\n\t\treturn artoolkit.getLabelingMode(this.id);\n\t};\n\n\t/**\n\t\tSet the width/height of the marker pattern space, as a proportion of marker width/height.\n\n\t    @param {number}\t\tpattRatio The the width/height of the marker pattern space, as a proportion of marker\n\t        width/height. To set the default, pass AR_PATT_RATIO.\n\t        If compatibility with ARToolKit verions 1.0 through 4.4 is required, this value\n\t        must be 0.5.\n\t */\n \tARController.prototype.setPattRatio = function(value) {\n\t\treturn artoolkit.setPattRatio(this.id, value);\n\t};\n\n\t/**\n\t\tReturns the current ratio of the marker pattern to the total marker size.\n\n\t\t@return {number} The current pattern ratio.\n\t*/\n\tARController.prototype.getPattRatio = function() {\n\t\treturn artoolkit.getPattRatio(this.id);\n\t};\n\n\t/**\n\t    Set the image processing mode.\n\n        When the image processing mode is AR_IMAGE_PROC_FRAME_IMAGE,\n        ARToolKit processes all pixels in each incoming image\n        to locate markers. When the mode is AR_IMAGE_PROC_FIELD_IMAGE,\n        ARToolKit processes pixels in only every second pixel row and\n        column. This is useful both for handling images from interlaced\n        video sources (where alternate lines are assembled from alternate\n        fields and thus have one field time-difference, resulting in a\n        \"comb\" effect) such as Digital Video cameras.\n        The effective reduction by 75% in the pixels processed also\n        has utility in accelerating tracking by effectively reducing\n        the image size to one quarter size, at the cost of pose accuraccy.\n\n\t    @param {number} mode\n\t\t\tOptions for this field are:\n\t\t\tAR_IMAGE_PROC_FRAME_IMAGE\n\t\t\tAR_IMAGE_PROC_FIELD_IMAGE\n\t\t\tThe default mode is AR_IMAGE_PROC_FRAME_IMAGE.\n\t*/\n\tARController.prototype.setImageProcMode = function(value) {\n\t\treturn artoolkit.setImageProcMode(this.id, value);\n\t};\n\n\t/**\n\t    Get the image processing mode.\n\n\t\tSee arSetImageProcMode() for a complete description.\n\n\t    @return {number} The current image processing mode.\n\t*/\n\tARController.prototype.getImageProcMode = function() {\n\t\treturn artoolkit.getImageProcMode(this.id);\n\t};\n\n\n\t/**\n\t\tDraw the black and white image and debug markers to the ARController canvas.\n\n\t\tSee setDebugMode.\n\t*/\n\tARController.prototype.debugDraw = function() {\n\t\tvar debugBuffer = new Uint8ClampedArray(Module.HEAPU8.buffer, this._bwpointer, this.framesize);\n\t\tvar id = new ImageData(debugBuffer, this.canvas.width, this.canvas.height)\n\t\tthis.ctx.putImageData(id, 0, 0)\n\n\t\tvar marker_num = this.getMarkerNum();\n\t\tfor (var i=0; i<marker_num; i++) {\n\t\t\tthis._debugMarker(this.getMarker(i));\n\t\t}\n\t};\n\n\n\t// private\n\n\tARController.prototype._initialize = function() {\n\t\tthis.id = artoolkit.setup(this.canvas.width, this.canvas.height, this.cameraParam.id);\n\n\t\tvar params = artoolkit.frameMalloc;\n\t\tthis.framepointer = params.framepointer;\n\t\tthis.framesize = params.framesize;\n\n\t\tthis.dataHeap = new Uint8Array(Module.HEAPU8.buffer, this.framepointer, this.framesize);\n\n\t\tthis.camera_mat = new Float64Array(Module.HEAPU8.buffer, params.camera, 16);\n\t\tthis.marker_transform_mat = new Float64Array(Module.HEAPU8.buffer, params.transform, 12);\n\n\t\tthis.setProjectionNearPlane(0.1)\n\t\tthis.setProjectionFarPlane(1000);\n\n\t\tvar self = this;\n\t\tsetTimeout(function() {\n\t\t\tif (self.onload) {\n\t\t\t\tself.onload();\n\t\t\t}\n\t\t\tself.dispatchEvent({\n\t\t\t\tname: 'load',\n\t\t\t\ttarget: self\n\t\t\t});\n\t\t}, 1);\n\t};\n\n\tARController.prototype._copyImageToHeap = function(image) {\n\t\tif (!image) {\n\t\t\timage = this.image;\n\t\t}\n\n\t\tthis.ctx.save();\n\n\t\tif (this.orientation === 'portrait') {\n\t\t\tthis.ctx.translate(this.canvas.width, 0);\n\t\t\tthis.ctx.rotate(Math.PI/2);\n\t\t\tthis.ctx.drawImage(image, 0, 0, this.canvas.height, this.canvas.width); // draw video\n\t\t} else {\n\t\t\tthis.ctx.drawImage(image, 0, 0, this.canvas.width, this.canvas.height); // draw video\n\t\t}\n\n\t\tthis.ctx.restore();\n\n\t\tvar imageData = this.ctx.getImageData(0, 0, this.canvas.width, this.canvas.height);\n\t\tvar data = imageData.data;\n\n\t\tif (this.dataHeap) {\n\t\t\tthis.dataHeap.set( data );\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t};\n\n\tARController.prototype._debugMarker = function(marker) {\n\t\tvar vertex, pos;\n\t\tvertex = marker.vertex;\n\t\tvar ctx = this.ctx;\n\t\tctx.strokeStyle = 'red';\n\n\t\tctx.beginPath()\n\t\tctx.moveTo(vertex[0][0], vertex[0][1])\n\t\tctx.lineTo(vertex[1][0], vertex[1][1])\n\t\tctx.stroke();\n\n\t\tctx.beginPath()\n\t\tctx.moveTo(vertex[2][0], vertex[2][1])\n\t\tctx.lineTo(vertex[3][0], vertex[3][1])\n\t\tctx.stroke()\n\n\t\tctx.strokeStyle = 'green';\n\t\tctx.beginPath()\n\t\tctx.lineTo(vertex[1][0], vertex[1][1])\n\t\tctx.lineTo(vertex[2][0], vertex[2][1])\n\t\tctx.stroke();\n\n\t\tctx.beginPath()\n\t\tctx.moveTo(vertex[3][0], vertex[3][1])\n\t\tctx.lineTo(vertex[0][0], vertex[0][1])\n\t\tctx.stroke();\n\n\t\tpos = marker.pos\n\t\tctx.beginPath()\n\t\tctx.arc(pos[0], pos[1], 8, 0, Math.PI * 2)\n\t\tctx.fillStyle = 'red'\n\t\tctx.fill()\n\t};\n\n\n\t// static\n\n\t/**\n\t\tARController.getUserMedia gets a device camera video feed and calls the given onSuccess callback with it.\n\n\t\tTries to start playing the video. Playing the video can fail on Chrome for Android,\n\t\tso ARController.getUserMedia adds user input event listeners to the window\n\t\tthat try to start playing the video. On success, the event listeners are removed.\n\n\t\tTo use ARController.getUserMedia, call it with an object with the onSuccess attribute set to a callback function.\n\n\t\t\tARController.getUserMedia({\n\t\t\t\tonSuccess: function(video) {\n\t\t\t\t\tconsole.log(\"Got video\", video);\n\t\t\t\t}\n\t\t\t});\n\n\t\tThe configuration object supports the following attributes:\n\n\t\t\t{\n\t\t\t\tonSuccess : function(video),\n\t\t\t\tonError : function(error),\n\n\t\t\t\twidth : number | {min: number, ideal: number, max: number},\n\t\t\t\theight : number | {min: number, ideal: number, max: number},\n\n\t\t\t\tfacingMode : 'environment' | 'user' | 'left' | 'right' | { exact: 'environment' | ... }\n\t\t\t}\n\n\t\tSee https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia for more information about the\n\t\twidth, height and facingMode attributes.\n\n\t\t@param {object} configuration The configuration object.\n\t\t@return {VideoElement} Returns the created video element.\n\t*/\n\tARController.getUserMedia = function(configuration) {\n\t\tvar facing = configuration.facingMode || 'environment';\n\n\t\tvar onSuccess = configuration.onSuccess;\n\t\tvar onError = configuration.onError || function(err) { console.error(\"ARController.getUserMedia\", err); };\n\n\t\tvar video = document.createElement('video');\n\n\t\tvar initProgress = function() {\n\t\t\tif (this.videoWidth !== 0) {\n\t\t\t\tonSuccess(video);\n\t\t\t}\n\t\t};\n\n\t\tvar readyToPlay = false;\n\t\tvar eventNames = [\n\t\t\t'touchstart', 'touchend', 'touchmove', 'touchcancel',\n\t\t\t'click', 'mousedown', 'mouseup', 'mousemove',\n\t\t\t'keydown', 'keyup', 'keypress', 'scroll'\n\t\t];\n\t\tvar play = function(ev) {\n\t\t\tif (readyToPlay) {\n\t\t\t\tvideo.play();\n\t\t\t\tif (!video.paused) {\n\t\t\t\t\teventNames.forEach(function(eventName) {\n\t\t\t\t\t\twindow.removeEventListener(eventName, play, true);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\teventNames.forEach(function(eventName) {\n\t\t\twindow.addEventListener(eventName, play, true);\n\t\t});\n\n\t\tvar success = function(stream) {\n\t\t\tvideo.addEventListener('loadedmetadata', initProgress, false);\n\t\t\tvideo.src = window.URL.createObjectURL(stream);\n\t\t\treadyToPlay = true;\n\t\t\tplay(); // Try playing without user input, should work on non-Android Chrome\n\t\t};\n\n\t\tvar constraints = {};\n\t\tvar mediaDevicesConstraints = {};\n\t\tif (configuration.width) {\n\t\t\tmediaDevicesConstraints.width = configuration.width;\n\t\t\tif (typeof configuration.width === 'object') {\n\t\t\t\tif (configuration.width.max) {\n\t\t\t\t\tconstraints.maxWidth = configuration.width.max;\n\t\t\t\t}\n\t\t\t\tif (configuration.width.min) {\n\t\t\t\t\tconstraints.minWidth = configuration.width.max;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconstraints.maxWidth = configuration.width;\n\t\t\t}\n\t\t}\n\n\t\tif (configuration.height) {\n\t\t\tmediaDevicesConstraints.height = configuration.height;\n\t\t\tif (typeof configuration.height === 'object') {\n\t\t\t\tif (configuration.height.max) {\n\t\t\t\t\tconstraints.maxHeight = configuration.height.max;\n\t\t\t\t}\n\t\t\t\tif (configuration.height.min) {\n\t\t\t\t\tconstraints.minHeight = configuration.height.max;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconstraints.maxHeight = configuration.height;\n\t\t\t}\n\t\t}\n\n\t\tvar videoConfig = { mandatory: constraints };\n\t\tif (configuration.cameraConfig && configuration.cameraConfig.video) {\n\t\t\tvideoConfig = configuration.cameraConfig.video;\n\t\t}\n\n\t\tmediaDevicesConstraints.facingMode = facing;\n\n\t\tnavigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;\n\t\tvar hdConstraints = {\n\t\t\taudio: false,\n\t\t\tvideo: videoConfig\n\t\t};\n\n\t\tif ( false ) {\n\t\t// if ( navigator.mediaDevices || window.MediaStreamTrack) {\n\t\t\tif (navigator.mediaDevices) {\n\t\t\t\tnavigator.mediaDevices.getUserMedia({\n\t\t\t\t\taudio: false,\n\t\t\t\t\tvideo: mediaDevicesConstraints\n\t\t\t\t}).then(success, onError); \n\t\t\t} else {\n\t\t\t\tMediaStreamTrack.getSources(function(sources) {\n\t\t\t\t\tvar facingDir = mediaDevicesConstraints.facingMode;\n\t\t\t\t\tif (facing && facing.exact) {\n\t\t\t\t\t\tfacingDir = facing.exact;\n\t\t\t\t\t}\n\t\t\t\t\tfor (var i=0; i<sources.length; i++) {\n\t\t\t\t\t\tif (sources[i].kind === 'video' && sources[i].facing === facingDir) {\n\t\t\t\t\t\t\thdConstraints.video.mandatory.sourceId = sources[i].id;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (facing && facing.exact && !hdConstraints.video.mandatory.sourceId) {\n\t\t\t\t\t\tonError('Failed to get camera facing the wanted direction');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (navigator.getUserMedia) {\n\t\t\t\t\t\t\tnavigator.getUserMedia(hdConstraints, success, onError);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tonError('navigator.getUserMedia is not supported on your browser');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tif (navigator.getUserMedia) {\n\t\t\t\tnavigator.getUserMedia(hdConstraints, success, onError);\n\t\t\t} else {\n\t\t\t\tonError('navigator.getUserMedia is not supported on your browser');\n\t\t\t}\n\t\t}\n\n\t\treturn video;\n\t};\n\n\t/**\n\t\tARController.getUserMediaARController gets an ARController for the device camera video feed and calls the \n\t\tgiven onSuccess callback with it.\n\n\t\tTo use ARController.getUserMediaARController, call it with an object with the cameraParam attribute set to\n\t\ta camera parameter file URL, and the onSuccess attribute set to a callback function.\n\n\t\t\tARController.getUserMediaARController({\n\t\t\t\tcameraParam: 'Data/camera_para.dat',\n\t\t\t\tonSuccess: function(arController, arCameraParam) {\n\t\t\t\t\tconsole.log(\"Got ARController\", arController);\n\t\t\t\t\tconsole.log(\"Got ARCameraParam\", arCameraParam);\n\t\t\t\t\tconsole.log(\"Got video\", arController.image);\n\t\t\t\t}\n\t\t\t});\n\n\t\tThe configuration object supports the following attributes:\n\n\t\t\t{\n\t\t\t\tonSuccess : function(ARController, ARCameraParam),\n\t\t\t\tonError : function(error),\n\n\t\t\t\tcameraParam: url, // URL to camera parameters definition file.\n\t\t\t\tmaxARVideoSize: number, // Maximum max(width, height) for the AR processing canvas.\n\n\t\t\t\twidth : number | {min: number, ideal: number, max: number},\n\t\t\t\theight : number | {min: number, ideal: number, max: number},\n\n\t\t\t\tfacingMode : 'environment' | 'user' | 'left' | 'right' | { exact: 'environment' | ... }\n\t\t\t}\n\n\t\tSee https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia for more information about the\n\t\twidth, height and facingMode attributes.\n\n\t\tThe orientation attribute of the returned ARController is set to \"portrait\" if the userMedia video has larger\n\t\theight than width. Otherwise it's set to \"landscape\". The videoWidth and videoHeight attributes of the arController\n\t\tare set to be always in landscape configuration so that width is larger than height.\n\n\t\t@param {object} configuration The configuration object.\n\t\t@return {VideoElement} Returns the created video element.\n\t*/\n\tARController.getUserMediaARController = function(configuration) {\n\t\tvar obj = {};\n\t\tfor (var i in configuration) {\n\t\t\tobj[i] = configuration[i];\n\t\t}\n\t\tvar onSuccess = configuration.onSuccess;\n\t\tvar cameraParamURL = configuration.cameraParam;\n\n\t\tobj.onSuccess = function() {\n\t\t\tnew ARCameraParam(cameraParamURL, function() {\n\t\t\t\tvar arCameraParam = this;\n\t\t\t\tvar maxSize = configuration.maxARVideoSize || Math.max(video.videoWidth, video.videoHeight);\n\t\t\t\tvar f = maxSize / Math.max(video.videoWidth, video.videoHeight);\n\t\t\t\tvar w = f * video.videoWidth;\n\t\t\t\tvar h = f * video.videoHeight;\n\t\t\t\tif (video.videoWidth < video.videoHeight) {\n\t\t\t\t\tvar tmp = w;\n\t\t\t\t\tw = h;\n\t\t\t\t\th = tmp;\n\t\t\t\t}\n\t\t\t\tvar arController = new ARController(w, h, arCameraParam);\n\t\t\t\tarController.image = video;\n\t\t\t\tif (video.videoWidth < video.videoHeight) {\n\t\t\t\t\tarController.orientation = 'portrait';\n\t\t\t\t\tarController.videoWidth = video.videoHeight;\n\t\t\t\t\tarController.videoHeight = video.videoWidth;\n\t\t\t\t} else {\n\t\t\t\t\tarController.orientation = 'landscape';\n\t\t\t\t\tarController.videoWidth = video.videoWidth;\n\t\t\t\t\tarController.videoHeight = video.videoHeight;\n\t\t\t\t}\n\t\t\t\tonSuccess(arController, arCameraParam);\n\t\t\t}, function(err) {\n\t\t\t\tconsole.error(\"ARController: Failed to load ARCameraParam\", err);\n\t\t\t});\n\t\t};\n\n\t\tvar video = this.getUserMedia(obj);\n\t\treturn video;\n\t};\n\n\n\t/** \n\t\tARCameraParam is used for loading AR camera parameters for use with ARController.\n\t\tUse by passing in an URL and a callback function.\n\n\t\t\tvar camera = new ARCameraParam('Data/camera_para.dat', function() {\n\t\t\t\tconsole.log('loaded camera', this.id);\n\t\t\t},\n\t\t\tfunction(err) {\n\t\t\t\tconsole.log('failed to load camera', err);\n\t\t\t});\n\n\t\t@exports ARCameraParam\n\t\t@constructor\n\t \n\t\t@param {string} src URL to load camera parameters from.\n\t\t@param {string} onload Onload callback to be called on successful parameter loading.\n\t\t@param {string} onerror Error callback to called when things don't work out.\n\t*/\n\tvar ARCameraParam = function(src, onload, onerror) {\n\t\tthis.id = -1;\n\t\tthis._src = '';\n\t\tthis.complete = false;\n\t\tthis.onload = onload;\n\t\tthis.onerror = onerror;\n\t\tif (src) {\n\t\t\tthis.load(src);\n\t\t}\n\t};\n\n\t/** \n\t\tLoads the given URL as camera parameters definition file into this ARCameraParam.\n\n\t\tCan only be called on an unloaded ARCameraParam instance. \n\n\t\t@param {string} src URL to load.\n\t*/\n\tARCameraParam.prototype.load = function(src) {\n\t\tif (this._src !== '') {\n\t\t\tthrow(\"ARCameraParam: Trying to load camera parameters twice.\")\n\t\t}\n\t\tthis._src = src;\n\t\tif (src) {\n\t\t\tvar self = this;\n\t\t\tartoolkit.loadCamera(src, function(id) {\n\t\t\t\tself.id = id;\n\t\t\t\tself.complete = true;\n\t\t\t\tself.onload();\n\t\t\t}, function(err) {\n\t\t\t\tself.onerror(err);\n\t\t\t});\n\t\t}\n\t};\n\n\tObject.defineProperty(ARCameraParam.prototype, 'src', {\n\t\tset: function(src) {\n\t\t\tthis.load(src);\n\t\t},\n\t\tget: function() {\n\t\t\treturn this._src;\n\t\t}\n\t});\n\n\t/**\n\t\tDestroys the camera parameter and frees associated Emscripten resources.\n\n\t*/\n\tARCameraParam.prototype.dispose = function() {\n\t\tif (this.id !== -1) {\n\t\t\tartoolkit.deleteCamera(this.id);\n\t\t}\n\t\tthis.id = -1;\n\t\tthis._src = '';\n\t\tthis.complete = false;\n\t};\n\n\n\n\t// ARToolKit exported JS API\n\t//\n\tvar artoolkit = {\n\n\t\tUNKNOWN_MARKER: -1,\n\t\tPATTERN_MARKER: 0,\n\t\tBARCODE_MARKER: 1,\n\n\t\tloadCamera: loadCamera,\n\n\t\taddMarker: addMarker,\n\t\taddMultiMarker: addMultiMarker\n\n\t};\n\n\tvar FUNCTIONS = [\n\t\t'setup',\n\t\t'teardown',\n\n\t\t'setLogLevel',\n\t\t'getLogLevel',\n\n\t\t'setDebugMode',\n\t\t'getDebugMode',\n\n\t\t'getProcessingImage',\n\n\t\t'setMarkerInfoDir',\n\t\t'setMarkerInfoVertex',\n\n\t\t'getTransMatSquare',\n\t\t'getTransMatSquareCont',\n\n\t\t'getTransMatMultiSquare',\n\t\t'getTransMatMultiSquareRobust',\n\n\t\t'getMultiMarkerNum',\n\t\t'getMultiMarkerCount',\n\n\t\t'detectMarker',\n\t\t'getMarkerNum',\n\n\t\t'getMarker',\n\t\t'getMultiEachMarker',\n\n\t\t'setProjectionNearPlane',\n\t\t'getProjectionNearPlane',\n\n\t\t'setProjectionFarPlane',\n\t\t'getProjectionFarPlane',\n\n\t\t'setThresholdMode',\n\t\t'getThresholdMode',\n\n\t\t'setThreshold',\n\t\t'getThreshold',\n\n\t\t'setPatternDetectionMode',\n\t\t'getPatternDetectionMode',\n\n\t\t'setMatrixCodeType',\n\t\t'getMatrixCodeType',\n\n\t\t'setLabelingMode',\n\t\t'getLabelingMode',\n\n\t\t'setPattRatio',\n\t\t'getPattRatio',\n\n\t\t'setImageProcMode',\n\t\t'getImageProcMode',\n\t];\n\n\tfunction runWhenLoaded() {\n\t\tFUNCTIONS.forEach(function(n) {\n\t\t\tartoolkit[n] = Module[n];\n\t\t})\n\n\t\tfor (var m in Module) {\n\t\t\tif (m.match(/^AR/))\n\t\t\tartoolkit[m] = Module[m];\n\t\t}\n\t}\n\n\tvar marker_count = 0;\n\tfunction addMarker(arId, url, callback) {\n\t\tvar filename = '/marker_' + marker_count++;\n\t\tajax(url, filename, function() {\n\t\t\tvar id = Module._addMarker(arId, filename);\n\t\t\tif (callback) callback(id);\n\t\t});\n\t}\n\n\tfunction bytesToString(array) {\n\t\treturn String.fromCharCode.apply(String, array);\n\t}\n\n\tfunction parseMultiFile(bytes) {\n\t\tvar str = bytesToString(bytes);\n\n\t\tvar lines = str.split('\\n');\n\n\t\tvar files = [];\n\n\t\tvar state = 0; // 0 - read,\n\t\tvar markers = 0;\n\n\t\tlines.forEach(function(line) {\n\t\t\tline = line.trim();\n\t\t\tif (!line || line.startsWith('#')) return;\n\n\t\t\tswitch (state) {\n\t\t\t\tcase 0:\n\t\t\t\t\tmarkers = +line;\n\t\t\t\t\tstate = 1;\n\t\t\t\t\treturn;\n\t\t\t\tcase 1: // filename or barcode\n\t\t\t\t\tif (!line.match(/^\\d+$/)) {\n\t\t\t\t\t\tfiles.push(line);\n\t\t\t\t\t}\n\t\t\t\tcase 2: // width\n\t\t\t\tcase 3: // matrices\n\t\t\t\tcase 4:\n\t\t\t\t\tstate++;\n\t\t\t\t\treturn;\n\t\t\t\tcase 5:\n\t\t\t\t\tstate = 1;\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t});\n\n\t\treturn files;\n\t}\n\n\tvar multi_marker_count = 0;\n\n\tfunction addMultiMarker(arId, url, callback) {\n\t\tvar filename = '/multi_marker_' + multi_marker_count++;\n\t\tajax(url, filename, function(bytes) {\n\t\t\tvar files = parseMultiFile(bytes);\n\n\t\t\tfunction ok() {\n\t\t\t\tvar markerID = Module._addMultiMarker(arId, filename);\n\t\t\t\tvar markerNum = Module.getMultiMarkerNum(arId, markerID);\n\t\t\t\tif (callback) callback(markerID, markerNum);\n\t\t\t}\n\n\t\t\tif (!files.length) return ok();\n\n\t\t\tvar path = url.split('/').slice(0, -1).join('/')\n\t\t\tfiles = files.map(function(file) {\n\t\t\t\treturn [path + '/' + file, file]\n\t\t\t})\n\n\t\t\tajaxDependencies(files, ok);\n\t\t});\n\t}\n\n\tvar camera_count = 0;\n\tfunction loadCamera(url, callback) {\n\t\tvar filename = '/camera_param_' + camera_count++;\n\t\tvar writeCallback = function() {\n\t\t\tvar id = Module._loadCamera(filename);\n\t\t\tif (callback) callback(id);\n\t\t};\n\t\tif (typeof url === 'object') { // Maybe it's a byte array\n\t\t\twriteByteArrayToFS(filename, url, writeCallback);\n\t\t} else if (url.indexOf(\"\\n\") > -1) { // Or a string with the camera param\n\t\t\twriteStringToFS(filename, url, writeCallback);\n\t\t} else {\n\t\t\tajax(url, filename, writeCallback);\n\t\t}\n\t}\n\n\n\t// transfer image\n\n\tfunction writeStringToFS(target, string, callback) {\n\t\tvar byteArray = new Uint8Array(string.length);\n\t\tfor (var i=0; i<byteArray.length; i++) {\n\t\t\tbyteArray[i] = string.charCodeAt(i) & 0xff;\n\t\t}\n\t\twriteByteArrayToFS(target, byteArray, callback);\n\t}\n\n\tfunction writeByteArrayToFS(target, byteArray, callback) {\n\t\tFS.writeFile(target, byteArray, { encoding: 'binary' });\n\t\t// console.log('FS written', target);\n\n\t\tcallback(byteArray);\n\t}\n\n\t// Eg.\n\t//\tajax('../bin/Data2/markers.dat', '/Data2/markers.dat', callback);\n\t//\tajax('../bin/Data/patt.hiro', '/patt.hiro', callback);\n\n\tfunction ajax(url, target, callback) {\n\t\tvar oReq = new XMLHttpRequest();\n\t\toReq.open('GET', url, true);\n\t\toReq.responseType = 'arraybuffer'; // blob arraybuffer\n\n\t\toReq.onload = function(oEvent) {\n\t\t\t// console.log('ajax done for ', url);\n\t\t\tvar arrayBuffer = oReq.response;\n\t\t\tvar byteArray = new Uint8Array(arrayBuffer);\n\t\t\twriteByteArrayToFS(target, byteArray, callback);\n\t\t};\n\n\t\toReq.send();\n\t}\n\n\tfunction ajaxDependencies(files, callback) {\n\t\tvar next = files.pop();\n\t\tif (next) {\n\t\t\tajax(next[0], next[1], function() {\n\t\t\t\tajaxDependencies(files, callback);\n\t\t\t});\n\t\t} else {\n\t\t\tcallback();\n\t\t}\n\t}\n\n\t/* Exports */\n\twindow.artoolkit = artoolkit;\n\twindow.ARController = ARController;\n\twindow.ARCameraParam = ARCameraParam;\n\n\texports.artoolkit = artoolkit;\n\texports.ARController = ARController;\n\texports.ARCameraParam = ARCameraParam;\n\n\tvar toolkit = require('../build/artoolkit.debug');\n\tvar FS = toolkit.FS;\n\tvar Module = toolkit.Module;\n\twindow.Module = Module;\n\n\tif (window.Module) {\n\t\trunWhenLoaded();\n\t} else {\n\t\twindow.Module = {\n\t\t\tonRuntimeInitialized: function() {\n\t\t\t\trunWhenLoaded();\n\t\t\t}\n\t\t};\n\t}\n\n})();\n","/* THREE.js ARToolKit integration */\n\n(function() {\n\tvar integrate = function() {\n\t\t/**\n\t\t\tHelper for setting up a Three.js AR scene using the device camera as input.\n\t\t\tPass in the maximum dimensions of the video you want to process and onSuccess and onError callbacks.\n\n\t\t\tOn a successful initialization, the onSuccess callback is called with an ThreeARScene object.\n\t\t\tThe ThreeARScene object contains two THREE.js scenes (one for the video image and other for the 3D scene)\n\t\t\tand a couple of helper functions for doing video frame processing and AR rendering.\n\n\t\t\tHere's the structure of the ThreeARScene object:\n\t\t\t{\n\t\t\t\tscene: THREE.Scene, // The 3D scene. Put your AR objects here.\n\t\t\t\tcamera: THREE.Camera, // The 3D scene camera.\n\n\t\t\t\tarController: ARController,\n\n\t\t\t\tvideo: HTMLVideoElement, // The userMedia video element.\n\n\t\t\t\tvideoScene: THREE.Scene, // The userMedia video image scene. Shows the video feed.\n\t\t\t\tvideoCamera: THREE.Camera, // Camera for the userMedia video scene.\n\n\t\t\t\tprocess: function(), // Process the current video frame and update the markers in the scene.\n\t\t\t\trenderOn: function( THREE.WebGLRenderer ) // Render the AR scene and video background on the given Three.js renderer.\n\t\t\t}\n\n\t\t\tYou should use the arScene.video.videoWidth and arScene.video.videoHeight to set the width and height of your renderer.\n\n\t\t\tIn your frame loop, use arScene.process() and arScene.renderOn(renderer) to do frame processing and 3D rendering, respectively.\n\n\t\t\t@param {number} width - The maximum width of the userMedia video to request.\n\t\t\t@param {number} height - The maximum height of the userMedia video to request.\n\t\t\t@param {function} onSuccess - Called on successful initialization with an ThreeARScene object.\n\t\t\t@param {function} onError - Called if the initialization fails with the error encountered.\n\t\t*/\n\t\tARController.getUserMediaThreeScene = function(configuration) {\n\t\t\tvar obj = {};\n\t\t\tfor (var i in configuration) {\n\t\t\t\tobj[i] = configuration[i];\n\t\t\t}\n\t\t\tvar onSuccess = configuration.onSuccess;\n\n\t\t\tobj.onSuccess = function(arController, arCameraParam) {\n\t\t\t\tvar scenes = arController.createThreeScene();\n\t\t\t\tonSuccess(scenes, arController, arCameraParam);\n\t\t\t};\n\n\t\t\tvar video = this.getUserMediaARController(obj);\n\t\t\treturn video;\n\t\t};\n\n\t\t/**\n\t\t\tCreates a Three.js scene for use with this ARController.\n\n\t\t\tReturns a ThreeARScene object that contains two THREE.js scenes (one for the video image and other for the 3D scene)\n\t\t\tand a couple of helper functions for doing video frame processing and AR rendering.\n\n\t\t\tHere's the structure of the ThreeARScene object:\n\t\t\t{\n\t\t\t\tscene: THREE.Scene, // The 3D scene. Put your AR objects here.\n\t\t\t\tcamera: THREE.Camera, // The 3D scene camera.\n\n\t\t\t\tarController: ARController,\n\n\t\t\t\tvideo: HTMLVideoElement, // The userMedia video element.\n\n\t\t\t\tvideoScene: THREE.Scene, // The userMedia video image scene. Shows the video feed.\n\t\t\t\tvideoCamera: THREE.Camera, // Camera for the userMedia video scene.\n\n\t\t\t\tprocess: function(), // Process the current video frame and update the markers in the scene.\n\t\t\t\trenderOn: function( THREE.WebGLRenderer ) // Render the AR scene and video background on the given Three.js renderer.\n\t\t\t}\n\n\t\t\tYou should use the arScene.video.videoWidth and arScene.video.videoHeight to set the width and height of your renderer.\n\n\t\t\tIn your frame loop, use arScene.process() and arScene.renderOn(renderer) to do frame processing and 3D rendering, respectively.\n\n\t\t\t@param video Video image to use as scene background. Defaults to this.image\n\t\t*/\n\t\tARController.prototype.createThreeScene = function(video) {\n\t\t\tvideo = video || this.image;\n\n\t\t\tthis.setupThree();\n\n\t\t\t// To display the video, first create a texture from it.\n\t\t\tvar videoTex = new THREE.Texture(video);\n\n\t\t\tvideoTex.minFilter = THREE.LinearFilter;\n\t\t\tvideoTex.flipY = false;\n\n\t\t\t// Then create a plane textured with the video.\n\t\t\tvar plane = new THREE.Mesh(\n\t\t\t  new THREE.PlaneBufferGeometry(2, 2),\n\t\t\t  new THREE.MeshBasicMaterial({map: videoTex, side: THREE.DoubleSide})\n\t\t\t);\n\n\t\t\t// The video plane shouldn't care about the z-buffer.\n\t\t\tplane.material.depthTest = false;\n\t\t\tplane.material.depthWrite = false;\n\n\t\t\t// Create a camera and a scene for the video plane and\n\t\t\t// add the camera and the video plane to the scene.\n\t\t\tvar videoCamera = new THREE.OrthographicCamera(-1, 1, -1, 1, -1, 1);\n\t\t\tvar videoScene = new THREE.Scene();\n\t\t\tvideoScene.add(plane);\n\t\t\tvideoScene.add(videoCamera);\n\n\t\t\tif (this.orientation === 'portrait') {\n\t\t\t\tplane.rotation.z = Math.PI/2;\n\t\t\t}\n\n\t\t\tvar scene = new THREE.Scene();\n\t\t\tvar camera = new THREE.Camera();\n\t\t\tcamera.matrixAutoUpdate = false;\n\t\t\tcamera.projectionMatrix.elements.set(this.getCameraMatrix());\n\n\t\t\tscene.add(camera);\n\n\n\t\t\tvar self = this;\n\n\t\t\treturn {\n\t\t\t\tscene: scene,\n\t\t\t\tvideoScene: videoScene,\n\t\t\t\tcamera: camera,\n\t\t\t\tvideoCamera: videoCamera,\n\n\t\t\t\tarController: this,\n\n\t\t\t\tvideo: video,\n\n\t\t\t\tprocess: function() {\n\t\t\t\t\tfor (var i in self.threePatternMarkers) {\n\t\t\t\t\t\tself.threePatternMarkers[i].visible = false;\n\t\t\t\t\t}\n\t\t\t\t\tfor (var i in self.threeBarcodeMarkers) {\n\t\t\t\t\t\tself.threeBarcodeMarkers[i].visible = false;\n\t\t\t\t\t}\n\t\t\t\t\tfor (var i in self.threeMultiMarkers) {\n\t\t\t\t\t\tself.threeMultiMarkers[i].visible = false;\n\t\t\t\t\t\tfor (var j=0; j<self.threeMultiMarkers[i].markers.length; j++) {\n\t\t\t\t\t\t\tif (self.threeMultiMarkers[i].markers[j]) {\n\t\t\t\t\t\t\t\tself.threeMultiMarkers[i].markers[j].visible = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tself.process(video);\n\t\t\t\t},\n\n\t\t\t\trenderOn: function(renderer) {\n\t\t\t\t\tvideoTex.needsUpdate = true;\n\n\t\t\t\t\tvar ac = renderer.autoClear;\n\t\t\t\t\trenderer.autoClear = false;\n\t\t\t\t\trenderer.clear();\n\t\t\t\t\trenderer.render(this.videoScene, this.videoCamera);\n\t\t\t\t\trenderer.render(this.scene, this.camera);\n\t\t\t\t\trenderer.autoClear = ac;\n\t\t\t\t}\n\t\t\t};\n\t\t};\n\n\n\t\t/**\n\t\t\tCreates a Three.js marker Object3D for the given marker UID.\n\t\t\tThe marker Object3D tracks the marker pattern when it's detected in the video.\n\n\t\t\tUse this after a successful artoolkit.loadMarker call:\n\n\t\t\tarController.loadMarker('/bin/Data/patt.hiro', function(markerUID) {\n\t\t\t\tvar markerRoot = arController.createThreeMarker(markerUID);\n\t\t\t\tmarkerRoot.add(myFancyHiroModel);\n\t\t\t\tarScene.scene.add(markerRoot);\n\t\t\t});\n\n\t\t\t@param {number} markerUID The UID of the marker to track.\n\t\t\t@param {number} markerWidth The width of the marker, defaults to 1.\n\t\t\t@return {THREE.Object3D} Three.Object3D that tracks the given marker.\n\t\t*/\n\t\tARController.prototype.createThreeMarker = function(markerUID, markerWidth) {\n\t\t\tthis.setupThree();\n\t\t\tvar obj = new THREE.Object3D();\n\t\t\tobj.markerTracker = this.trackPatternMarkerId(markerUID, markerWidth);\n\t\t\tobj.matrixAutoUpdate = false;\n\t\t\tthis.threePatternMarkers[markerUID] = obj;\n\t\t\treturn obj;\n\t\t};\n\n\t\t/**\n\t\t\tCreates a Three.js marker Object3D for the given multimarker UID.\n\t\t\tThe marker Object3D tracks the multimarker when it's detected in the video.\n\n\t\t\tUse this after a successful arController.loadMarker call:\n\n\t\t\tarController.loadMultiMarker('/bin/Data/multi-barcode-4x3.dat', function(markerUID) {\n\t\t\t\tvar markerRoot = arController.createThreeMultiMarker(markerUID);\n\t\t\t\tmarkerRoot.add(myFancyMultiMarkerModel);\n\t\t\t\tarScene.scene.add(markerRoot);\n\t\t\t});\n\n\t\t\t@param {number} markerUID The UID of the marker to track.\n\t\t\t@return {THREE.Object3D} Three.Object3D that tracks the given marker.\n\t\t*/\n\t\tARController.prototype.createThreeMultiMarker = function(markerUID) {\n\t\t\tthis.setupThree();\n\t\t\tvar obj = new THREE.Object3D();\n\t\t\tobj.matrixAutoUpdate = false;\n\t\t\tobj.markers = [];\n\t\t\tthis.threeMultiMarkers[markerUID] = obj;\n\t\t\treturn obj;\n\t\t};\n\n\t\t/**\n\t\t\tCreates a Three.js marker Object3D for the given barcode marker UID.\n\t\t\tThe marker Object3D tracks the marker pattern when it's detected in the video.\n\n\t\t\tvar markerRoot20 = arController.createThreeBarcodeMarker(20);\n\t\t\tmarkerRoot20.add(myFancyNumber20Model);\n\t\t\tarScene.scene.add(markerRoot20);\n\n\t\t\tvar markerRoot5 = arController.createThreeBarcodeMarker(5);\n\t\t\tmarkerRoot5.add(myFancyNumber5Model);\n\t\t\tarScene.scene.add(markerRoot5);\n\n\t\t\t@param {number} markerUID The UID of the barcode marker to track.\n\t\t\t@param {number} markerWidth The width of the marker, defaults to 1.\n\t\t\t@return {THREE.Object3D} Three.Object3D that tracks the given marker.\n\t\t*/\n\t\tARController.prototype.createThreeBarcodeMarker = function(markerUID, markerWidth) {\n\t\t\tthis.setupThree();\n\t\t\tvar obj = new THREE.Object3D();\n\t\t\tobj.markerTracker = this.trackBarcodeMarkerId(markerUID, markerWidth);\n\t\t\tobj.matrixAutoUpdate = false;\n\t\t\tthis.threeBarcodeMarkers[markerUID] = obj;\n\t\t\treturn obj;\n\t\t};\n\n\t\tARController.prototype.setupThree = function() {\n\t\t\tif (this.THREE_JS_ENABLED) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.THREE_JS_ENABLED = true;\n\n\t\t\t/*\n\t\t\t\tListen to getMarker events to keep track of Three.js markers.\n\t\t\t*/\n\t\t\tthis.addEventListener('getMarker', function(ev) {\n\t\t\t\tvar marker = ev.data.marker;\n\t\t\t\tvar obj;\n\t\t\t\tif (ev.data.type === artoolkit.PATTERN_MARKER) {\n\t\t\t\t\tobj = this.threePatternMarkers[ev.data.marker.idPatt];\n\n\t\t\t\t} else if (ev.data.type === artoolkit.BARCODE_MARKER) {\n\t\t\t\t\tobj = this.threeBarcodeMarkers[ev.data.marker.idMatrix];\n\n\t\t\t\t}\n\t\t\t\tif (obj) {\n\t\t\t\t\tobj.matrix.elements.set(ev.data.matrix);\n\t\t\t\t\tobj.visible = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t/*\n\t\t\t\tListen to getMultiMarker events to keep track of Three.js multimarkers.\n\t\t\t*/\n\t\t\tthis.addEventListener('getMultiMarker', function(ev) {\n\t\t\t\tvar obj = this.threeMultiMarkers[ev.data.multiMarkerId];\n\t\t\t\tif (obj) {\n\t\t\t\t\tobj.matrix.elements.set(ev.data.matrix);\n\t\t\t\t\tobj.visible = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t/*\n\t\t\t\tListen to getMultiMarkerSub events to keep track of Three.js multimarker submarkers.\n\t\t\t*/\n\t\t\tthis.addEventListener('getMultiMarkerSub', function(ev) {\n\t\t\t\tvar marker = ev.data.multiMarkerId;\n\t\t\t\tvar subMarkerID = ev.data.markerIndex;\n\t\t\t\tvar subMarker = ev.data.marker;\n\t\t\t\tvar obj = this.threeMultiMarkers[marker];\n\t\t\t\tif (obj && obj.markers && obj.markers[subMarkerID]) {\n\t\t\t\t\tvar sub = obj.markers[subMarkerID];\n\t\t\t\t\tsub.matrix.elements.set(ev.data.matrix);\n\t\t\t\t\tsub.visible = (subMarker.visible >= 0);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t/**\n\t\t\t\tIndex of Three.js pattern markers, maps markerID -> THREE.Object3D.\n\t\t\t*/\n\t\t\tthis.threePatternMarkers = {};\n\n\t\t\t/**\n\t\t\t\tIndex of Three.js barcode markers, maps markerID -> THREE.Object3D.\n\t\t\t*/\n\t\t\tthis.threeBarcodeMarkers = {};\n\n\t\t\t/**\n\t\t\t\tIndex of Three.js multimarkers, maps markerID -> THREE.Object3D.\n\t\t\t*/\n\t\t\tthis.threeMultiMarkers = {};\n\t\t};\n\n\t};\n\n\tvar tick = function() {\n\t\tvar THREE = require('three');\n\t\twindow.THREE = THREE;\n\n\t\tif (window.ARController && window.THREE) {\n\t\t\tintegrate();\n\t\t\tif (window.ARThreeOnLoad) {\n\t\t\t\twindow.ARThreeOnLoad();\n\t\t\t}\n\t\t} else {\n\t\t\tsetTimeout(tick, 50);\n\t\t}\t\t\t\n\t};\n\n\ttick();\n\n})();\n","\"use strict\";\r\nfunction ___export(m) {\r\n    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n___export(require('./artoolkit.api'));\r\n___export(require('./artoolkit.three'));\r\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar THREE$1 = require('three');\nvar jsartoolkit5 = require('jsartoolkit5');\n\nclass ArToolkitSource{\n\tconstructor(parameters) {\n\t\tconst defaultParameters = {\n\t\t\tsourceType: 'webcam', // options are webcam, image, video\n\t\t\tsourceUrl: null, // url of the source. Used for image or video source\n\t\t\tsourceWidth: 640,\n\t\t\tsourceHeight: 480,\n\t\t\tdisplayWidth: 640,\n\t\t\tdisplayHeight: 480,\n\t\t};\n\t\tthis.parameters = Object.assign({}, defaultParameters, parameters);\n\t\tthis.domElement = null;\n\t\tthis.ready = false;\n\t}\n\tinit(onReady, onError){\n\t\tconst self = this;\n\t\tconst { sourceType } = this.parameters;\n\t\tconst sourceTypeActions = {\n\t\t\timage: () => self.initSourceImage(onReady, onError),\n\t\t\tvideo: () => self.initSourceVideo(onReady, onError),\n\t\t\twebcam: () => this.initSourceWebcam(onReady, onError)\n\t\t};\n\t\tif(sourceType in sourceTypeActions) {\n\t\t\tconst domElement = sourceTypeActions[sourceType]();\n\t\t\tthis.domElement = domElement;\n\t\t\tthis.domElement.style.position = 'absolute';\n\t\t\tthis.domElement.style.top = '0';\n\t\t\tthis.domElement.style.left = '0';\n\t\t\tthis.domElement.style.zIndex = '-2';\n\t\t\tthis.render();\n\t\t}\n\t}\n\trender() {\n\t\tdocument.body.appendChild(this.domElement);\n\t\tthis.ready = true;\n\t}\n\tinitSourceImage(onReady) {\n\t\tconst domElement = document.createElement('img');\n\t\tdomElement.src = this.parameters.sourceUrl;\n\t\tdomElement.width = this.parameters.sourceWidth;\n\t\tdomElement.height = this.parameters.sourceHeight;\n\t\tdomElement.style.width = `${this.parameters.displayWidth}px`;\n\t\tdomElement.style.height = `${this.parameters.displayHeight}px`;\n\t\tconst interval = setInterval(() => {\n\t\t\tif(!domElement.naturalWidth) return;\n\t\t\tonReady();\n\t\t\tclearInterval(interval);\n\t\t}, 1000/50);\n\t\treturn domElement;\n\t}\n\tinitSourceVideo(onReady) {\n\t\t// TODO make it static\n\t\tconst domElement = document.createElement('video');\n\t\tdomElement.src = this.parameters.sourceUrl;\n\t\tdomElement.style.objectFit = 'initial';\n\t\tdomElement.autoplay = true;\n\t\tdomElement.webkitPlaysinline = true;\n\t\tdomElement.controls = false;\n\t\tdomElement.loop = true;\n\t\tdomElement.muted = true;\n\n\t\t// Trick to trigger the video on android\n\t\tdocument.body.addEventListener('click', function onClick() {\n\t\t\tdocument.body.removeEventListener('click', onClick);\n\t\t\tdomElement.play();\n\t\t});\n\n\t\tdomElement.width = this.parameters.sourceWidth;\n\t\tdomElement.height = this.parameters.sourceHeight;\n\t\tdomElement.style.width = this.parameters.displayWidth+'px';\n\t\tdomElement.style.height = this.parameters.displayHeight+'px';\n\t\t\n\t\t// wait until the video stream is ready\n\t\tvar interval = setInterval(() => {\n\t\t\tif (!domElement.videoWidth)\treturn;\n\t\t\tonReady();\n\t\t\tclearInterval(interval);\n\t\t}, 1000/50);\n\n\t\treturn domElement\n\t}\n\tinitSourceWebcam(onReady, onError) {\n\t\tconst _this = this;\n\t\tonError = onError || (error => alert(`Webcam Error\\nName:${error.name}\\nMessage:${error.message}`));\n\t\tconst domElement = document.createElement('video');\n\t\tdomElement.setAttribute('autoplay', '');\n\t\tdomElement.setAttribute('muted', '');\n\t\tdomElement.setAttribute('playsinline', '');\n\t\tdomElement.style.width = this.parameters.displayWidth+'px';\n\t\tdomElement.style.height = this.parameters.displayHeight+'px';\n\n\t\t// check API is available\n\t\tif (navigator.mediaDevices === undefined \n\t\t\t\t|| navigator.mediaDevices.enumerateDevices === undefined \n\t\t\t\t|| navigator.mediaDevices.getUserMedia === undefined  ){\n\t\t\tif( navigator.mediaDevices === undefined )\t\t\t\tvar fctName = 'navigator.mediaDevices';\n\t\t\telse if( navigator.mediaDevices.enumerateDevices === undefined )\tvar fctName = 'navigator.mediaDevices.enumerateDevices';\n\t\t\telse if( navigator.mediaDevices.getUserMedia === undefined )\t\tvar fctName = 'navigator.mediaDevices.getUserMedia';\n\t\t\telse console.assert(false);\n\t\t\tonError({\n\t\t\t\tname: '',\n\t\t\t\tmessage: 'WebRTC issue-! '+fctName+' not present in your browser'\n\t\t\t});\n\t\t\treturn null\n\t\t}\n\n\t\t// get available devices\n\t\tnavigator.mediaDevices.enumerateDevices().then(function(devices) {\n\t\t\tvar userMediaConstraints = {\n\t\t\t\taudio: false,\n\t\t\t\tvideo: {\n\t\t\t\t\tfacingMode: 'environment',\n\t\t\t\t\twidth: {\n\t\t\t\t\t\tideal: _this.parameters.sourceWidth,\n\t\t\t\t\t\t// min: 1024,\n\t\t\t\t\t\t// max: 1920\n\t\t\t\t\t},\n\t\t\t\t\theight: {\n\t\t\t\t\t\tideal: _this.parameters.sourceHeight,\n\t\t\t\t\t\t// min: 776,\n\t\t\t\t\t\t// max: 1080\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t\t// get a device which satisfy the constraints\n\t\t\tnavigator.mediaDevices.getUserMedia(userMediaConstraints).then(function success(stream) {\n\t\t\t\t// set the .src of the domElement\n\t\t\t\tdomElement.srcObject = stream;\n\t\t\t\t// to start the video, when it is possible to start it only on userevent. like in android\n\t\t\t\tdocument.body.addEventListener('click', function(){\n\t\t\t\t\tdomElement.play();\n\t\t\t\t});\n\n\t\t\t\t// TODO listen to loadedmetadata instead\n\t\t\t\t// wait until the video stream is ready\n\t\t\t\tvar interval = setInterval(function() {\n\t\t\t\t\tif (!domElement.videoWidth)\treturn;\n\t\t\t\t\tonReady();\n\t\t\t\t\tclearInterval(interval);\n\t\t\t\t}, 1000/50);\n\t\t\t}).catch(function(error) {\n\t\t\t\tonError({\n\t\t\t\t\tname: error.name,\n\t\t\t\t\tmessage: error.message\n\t\t\t\t});\n\t\t\t});\n\t\t}).catch(function(error) {\n\t\t\tonError({\n\t\t\t\tmessage: error.message\n\t\t\t});\n\t\t});\n\n\t\treturn domElement\n\t}\n\thasMobileTorch() {\n\t\tvar stream = arToolkitSource.domElement.srcObject;\n\t\tif( stream instanceof MediaStream === false )\treturn false\n\n\t\tif( this._currentTorchStatus === undefined ){\n\t\t\tthis._currentTorchStatus = false;\n\t\t}\n\n\t\tvar videoTrack = stream.getVideoTracks()[0];\n\n\t\t// if videoTrack.getCapabilities() doesnt exist, return false now\n\t\tif( videoTrack.getCapabilities === undefined )\treturn false\n\n\t\tvar capabilities = videoTrack.getCapabilities();\n\t\t\n\t\treturn capabilities.torch ? true : false\n\t}\n\t/**\n\t * toggle the flash/torch of the mobile fun if applicable.\n\t * Great post about it https://www.oberhofer.co/mediastreamtrack-and-its-capabilities/\n\t */\n\ttoggleMobileTorch() {\n\t\t// sanity check\n\t\tconsole.assert(this.hasMobileTorch() === true);\n\t\t\t\n\t\tvar stream = arToolkitSource.domElement.srcObject;\n\t\tif( stream instanceof MediaStream === false ){\n\t\t\talert('enabling mobile torch is available only on webcam');\n\t\t\treturn\n\t\t}\n\n\t\tif( this._currentTorchStatus === undefined ){\n\t\t\tthis._currentTorchStatus = false;\n\t\t}\n\n\t\tvar videoTrack = stream.getVideoTracks()[0];\n\t\tvar capabilities = videoTrack.getCapabilities();\n\t\t\n\t\tif( !capabilities.torch ){\n\t\t\talert('no mobile torch is available on your camera');\n\t\t\treturn\n\t\t}\n\n\t\tthis._currentTorchStatus = this._currentTorchStatus === false ? true : false;\n\t\tvideoTrack.applyConstraints({\n\t\t\tadvanced: [{\n\t\t\t\ttorch: this._currentTorchStatus\n\t\t\t}]\n\t\t}).catch(function(error){\n\t\t\tconsole.log(error);\n\t\t});\n\t}\n\tdomElementWidth() {\n\t\treturn parseInt(this.domElement.style.width);\n\t}\n\tdomElementHeight() {\n\t\treturn parseInt(this.domElement.style.height);\n\t}\n\tonResizeElement() {\n\t\tconst screenWidth = window.innerWidth;\n\t\tconst screenHeight = window.innerHeight;\n\n\t\t// sanity check\n\t\tconsole.assert( arguments.length === 0 );\n\n\t\t// compute sourceWidth, sourceHeight\n\t\tif( this.domElement.nodeName === \"IMG\" ){\n\t\t\tvar sourceWidth = this.domElement.naturalWidth;\n\t\t\tvar sourceHeight = this.domElement.naturalHeight;\n\t\t}else if( this.domElement.nodeName === \"VIDEO\" ){\n\t\t\tvar sourceWidth = this.domElement.videoWidth;\n\t\t\tvar sourceHeight = this.domElement.videoHeight;\n\t\t}else{\n\t\t\tconsole.assert(false);\n\t\t}\n\t\t\n\t\t// compute sourceAspect\n\t\tvar sourceAspect = sourceWidth / sourceHeight;\n\t\t// compute screenAspect\n\t\tvar screenAspect = screenWidth / screenHeight;\n\n\t\t// if screenAspect < sourceAspect, then change the width, else change the height\n\t\tif( screenAspect < sourceAspect ){\n\t\t\t// compute newWidth and set .width/.marginLeft\n\t\t\tvar newWidth = sourceAspect * screenHeight;\n\t\t\tthis.domElement.style.width = newWidth+'px';\n\t\t\tthis.domElement.style.marginLeft = -(newWidth-screenWidth)/2+'px';\n\t\t\t\n\t\t\t// init style.height/.marginTop to normal value\n\t\t\tthis.domElement.style.height = screenHeight+'px';\n\t\t\tthis.domElement.style.marginTop = '0px';\n\t\t}else{\n\t\t\t// compute newHeight and set .height/.marginTop\n\t\t\tvar newHeight = 1 / (sourceAspect / screenWidth);\n\t\t\tthis.domElement.style.height = newHeight+'px';\n\t\t\tthis.domElement.style.marginTop = -(newHeight-screenHeight)/2+'px';\n\t\t\t\n\t\t\t// init style.width/.marginLeft to normal value\n\t\t\tthis.domElement.style.width = screenWidth+'px';\n\t\t\tthis.domElement.style.marginLeft = '0px';\n\t\t}\n\t}\n\tcopyElementSizeTo(otherElement) {\n\t\tif (window.innerWidth > window.innerHeight)\n\t\t{\n\t\t\t//landscape\n\t\t\totherElement.style.width = this.domElement.style.width;\n\t\t\totherElement.style.height = this.domElement.style.height;\n\t\t\totherElement.style.marginLeft = this.domElement.style.marginLeft;\n\t\t\totherElement.style.marginTop = this.domElement.style.marginTop;\n\t\t}\n\t\telse {\n\t\t\t//portrait\n\t\t\totherElement.style.height = this.domElement.style.height;\n\t\t\totherElement.style.width = (parseInt(otherElement.style.height) * 4/3)+\"px\";\n\t\t\totherElement.style.marginLeft = ((window.innerWidth- parseInt(otherElement.style.width))/2)+\"px\";\n\t\t\totherElement.style.marginTop = 0;\n\t\t}\n\t}\n\tcopySizeTo() {\n\t\tconsole.warn('obsolete function arToolkitSource.copySizeTo. Use arToolkitSource.copyElementSizeTo' );\n\t\tthis.copyElementSizeTo.apply(this, arguments);\n\t}\n\tonResize() {\n\t\tif( arguments.length !== 3 ){\n\t\t\tconsole.warn('obsolete function arToolkitSource.onResize. Use arToolkitSource.onResizeElement' );\n\t\t\treturn this.onResizeElement.apply(this, arguments)\n\t\t}\n\n\t\tvar trackingBackend = arToolkitContext.parameters.trackingBackend;\n\t\t\n\n\t\t// RESIZE DOMELEMENT\n\t\tif( trackingBackend === 'artoolkit' ){\n\n\t\t\tthis.onResizeElement();\n\t\t\t\n\t\t\tvar isAframe = renderer.domElement.dataset.aframeCanvas ? true : false;\n\t\t\tif( isAframe === false ){\n\t\t\t\tthis.copyElementSizeTo(renderer.domElement);\t\n\t\t\t}\n\n\t\t\tif( arToolkitContext.arController !== null ){\n\t\t\t\tthis.copyElementSizeTo(arToolkitContext.arController.canvas);\t\n\t\t\t}\n\t\t}else if( trackingBackend === 'aruco' ){\n\t\t\tthis.onResizeElement();\n\t\t\tthis.copyElementSizeTo(renderer.domElement);\t\n\n\t\t\tthis.copyElementSizeTo(arToolkitContext.arucoContext.canvas);\t\n\t\t}else if( trackingBackend === 'tango' ){\n\t\t\trenderer.setSize( window.innerWidth, window.innerHeight );\n\t\t}else console.assert(false, 'unhandled trackingBackend '+trackingBackend);\n\n\n\t\t// UPDATE CAMERA\n\t\tif( trackingBackend === 'artoolkit' ){\n\t\t\tif( arToolkitContext.arController !== null ){\n\t\t\t\tcamera.projectionMatrix.copy( arToolkitContext.getProjectionMatrix() );\t\t\t\n\t\t\t}\n\t\t}else if( trackingBackend === 'aruco' ){\t\n\t\t\tcamera.aspect = renderer.domElement.width / renderer.domElement.height;\n\t\t\tcamera.updateProjectionMatrix();\t\t\t\n\t\t}else if( trackingBackend === 'tango' ){\n\t\t\tvar vrDisplay = arToolkitContext._tangoContext.vrDisplay;\n\t\t\t// make camera fit vrDisplay\n\t\t\tif( vrDisplay && vrDisplay.displayName === \"Tango VR Device\" ) THREE.WebAR.resizeVRSeeThroughCamera(vrDisplay, camera);\n\t\t}else console.assert(false, 'unhandled trackingBackend '+trackingBackend);\t\n\n\t}\n}\n\nconst Source = THREE => {\n\treturn ArToolkitSource;\n};\n\nvar THREEx$1 = THREEx$1 || {};\n\nconst ArBaseControls = function(object3d){\n\tthis.id = THREEx$1.ArBaseControls.id++;\n\n\tthis.object3d = object3d;\n\tthis.object3d.matrixAutoUpdate = false;\n\tthis.object3d.visible = false;\n\n\t// Events to honor\n\t// this.dispatchEvent({ type: 'becameVisible' })\n\t// this.dispatchEvent({ type: 'markerVisible' })\t// replace markerFound\n\t// this.dispatchEvent({ type: 'becameUnVisible' })\n};\n\nArBaseControls.id = 0;\n\nObject.assign( ArBaseControls.prototype, THREE$1.EventDispatcher.prototype );\n\n//////////////////////////////////////////////////////////////////////////////\n//\t\tFunctions\n//////////////////////////////////////////////////////////////////////////////\n/**\n * error catching function for update()\n */\nArBaseControls.prototype.update = function(){\n\tconsole.assert(false, 'you need to implement your own update');\n};\n\n/**\n * error catching function for name()\n */\nArBaseControls.prototype.name = function(){\n\tconsole.assert(false, 'you need to implement your own .name()');\n\treturn 'Not yet implemented - name()'\n};\n\nTHREEx$1.ArBaseControls = ArBaseControls;\n\nconst MarkerControls = function(context, object3d, parameters){\n\tvar _this = this;\n\n\tArBaseControls.call(this, object3d);\n\n\tthis.context = context;\n\t// handle default parameters\n\tthis.parameters = {\n\t\t// size of the marker in meter\n\t\tsize : 1,\n\t\t// type of marker - ['pattern', 'barcode', 'unknown' ]\n\t\ttype : 'unknown',\n\t\t// url of the pattern - IIF type='pattern'\n\t\tpatternUrl : null,\n\t\t// value of the barcode - IIF type='barcode'\n\t\tbarcodeValue : null,\n\t\t// change matrix mode - [modelViewMatrix, cameraTransformMatrix]\n\t\tchangeMatrixMode : 'modelViewMatrix',\n\t\t// minimal confidence in the marke recognition - between [0, 1] - default to 1\n\t\tminConfidence: 0.6,\n\t};\n\n\t// sanity check\n\tvar possibleValues = ['pattern', 'barcode', 'unknown'];\n\tconsole.assert(possibleValues.indexOf(this.parameters.type) !== -1, 'illegal value', this.parameters.type);\n\tvar possibleValues = ['modelViewMatrix', 'cameraTransformMatrix' ];\n\tconsole.assert(possibleValues.indexOf(this.parameters.changeMatrixMode) !== -1, 'illegal value', this.parameters.changeMatrixMode);\n\n\n        // create the marker Root\n\tthis.object3d = object3d;\n\tthis.object3d.matrixAutoUpdate = false;\n\tthis.object3d.visible = false;\n\n\t//////////////////////////////////////////////////////////////////////////////\n\t//\t\tsetParameters\n\t//////////////////////////////////////////////////////////////////////////////\n\tsetParameters(parameters);\n\tfunction setParameters(parameters){\n\t\tif( parameters === undefined )\treturn\n\t\tfor( var key in parameters ){\n\t\t\tvar newValue = parameters[ key ];\n\n\t\t\tif( newValue === undefined ){\n\t\t\t\tconsole.warn( \"THREEx.ArMarkerControls: '\" + key + \"' parameter is undefined.\" );\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tvar currentValue = _this.parameters[ key ];\n\n\t\t\tif( currentValue === undefined ){\n\t\t\t\tconsole.warn( \"THREEx.ArMarkerControls: '\" + key + \"' is not a property of this material.\" );\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t_this.parameters[ key ] = newValue;\n\t\t}\n\t}\n\n\t//////////////////////////////////////////////////////////////////////////////\n\t//\t\tCode Separator\n\t//////////////////////////////////////////////////////////////////////////////\n\t// add this marker to artoolkitsystem\n\t// TODO rename that .addMarkerControls\n\tcontext.addMarker(this);\n\n\tif( _this.context.parameters.trackingBackend === 'artoolkit' ){\n\t\tthis._initArtoolkit();\n\t}else if( _this.context.parameters.trackingBackend === 'aruco' ){\n\t\t// TODO create a ._initAruco\n\t\t// put aruco second\n\t\tthis._arucoPosit = new POS.Posit(this.parameters.size, _this.context.arucoContext.canvas.width);\n\t}else if( _this.context.parameters.trackingBackend === 'tango' ){\n\t\tthis._initTango();\n\t}else console.assert(false);\n};\n\nMarkerControls.prototype = Object.create( ArBaseControls.prototype );\nMarkerControls.prototype.constructor = MarkerControls;\n\nMarkerControls.prototype.dispose = function(){\n\tthis.context.removeMarker(this);\n\n\t// TODO remove the event listener if needed\n\t// unloadMaker ???\n};\n\n//////////////////////////////////////////////////////////////////////////////\n//\t\tupdate controls with new modelViewMatrix\n//////////////////////////////////////////////////////////////////////////////\n\n/**\n * When you actually got a new modelViewMatrix, you need to perfom a whole bunch\n * of things. it is done here.\n */\nMarkerControls.prototype.updateWithModelViewMatrix = function(modelViewMatrix){\n\tvar markerObject3D = this.object3d;\n\n\t// mark object as visible\n\tmarkerObject3D.visible = true;\n\n\tif( this.context.parameters.trackingBackend === 'artoolkit' ){\n\t\t// apply context._axisTransformMatrix - change artoolkit axis to match usual webgl one\n\t\tvar tmpMatrix = new THREE$1.Matrix4().copy(this.context._artoolkitProjectionAxisTransformMatrix);\n\t\ttmpMatrix.multiply(modelViewMatrix);\n\n\t\tmodelViewMatrix.copy(tmpMatrix);\n\t}else if( this.context.parameters.trackingBackend === 'aruco' );else if( this.context.parameters.trackingBackend === 'tango' );else console.assert(false);\n\n\n\tif( this.context.parameters.trackingBackend !== 'tango' ){\n\n\t\t// change axis orientation on marker - artoolkit say Z is normal to the marker - ar.js say Y is normal to the marker\n\t\tvar markerAxisTransformMatrix = new THREE$1.Matrix4().makeRotationX(Math.PI/2);\n\t\tmodelViewMatrix.multiply(markerAxisTransformMatrix);\n\t}\n\n\t// change markerObject3D.matrix based on parameters.changeMatrixMode\n\tif( this.parameters.changeMatrixMode === 'modelViewMatrix' ){\n\t\tmarkerObject3D.matrix.copy(modelViewMatrix);\n\t}else if( this.parameters.changeMatrixMode === 'cameraTransformMatrix' ){\n\t\tmarkerObject3D.matrix.getInverse( modelViewMatrix );\n\t}else {\n\t\tconsole.assert(false);\n\t}\n\n\t// decompose - the matrix into .position, .quaternion, .scale\n\tmarkerObject3D.matrix.decompose(markerObject3D.position, markerObject3D.quaternion, markerObject3D.scale);\n\n\t// dispatchEvent\n\tthis.dispatchEvent( { type: 'markerFound' } );\n};\n\n//////////////////////////////////////////////////////////////////////////////\n//\t\tutility functions\n//////////////////////////////////////////////////////////////////////////////\n\n/**\n * provide a name for a marker\n * - silly heuristic for now\n * - should be improved\n */\nMarkerControls.prototype.name = function(){\n\tvar name = '';\n\tname += this.parameters.type;\n\tif( this.parameters.type === 'pattern' ){\n\t\tvar url = this.parameters.patternUrl;\n\t\tvar basename = url.replace(/^.*\\//g, '');\n\t\tname += ' - ' + basename;\n\t}else if( this.parameters.type === 'barcode' ){\n\t\tname += ' - ' + this.parameters.barcodeValue;\n\t}else{\n\t\tconsole.assert(false, 'no .name() implemented for this marker controls');\n\t}\n\treturn name\n};\n\n//////////////////////////////////////////////////////////////////////////////\n//\t\tinit for Artoolkit\n//////////////////////////////////////////////////////////////////////////////\nMarkerControls.prototype._initArtoolkit = function(){\n\tvar _this = this;\n\n\tvar artoolkitMarkerId = null;\n\n\tvar delayedInitTimerId = setInterval(function(){\n\t\t// check if arController is init\n\t\tvar arController = _this.context.arController;\n\t\tif( arController === null )\treturn\n\t\t// stop looping if it is init\n\t\tclearInterval(delayedInitTimerId);\n\t\tdelayedInitTimerId = null;\n\t\t// launch the _postInitArtoolkit\n\t\tpostInit();\n\t}, 1000/50);\n\n\treturn\n\n\tfunction postInit(){\n\t\t// check if arController is init\n\t\tvar arController = _this.context.arController;\n\t\tconsole.assert(arController !== null );\n\n\t\t// start tracking this pattern\n\t\tif( _this.parameters.type === 'pattern' ){\n\t                arController.loadMarker(_this.parameters.patternUrl, function(markerId) {\n\t\t\t\tartoolkitMarkerId = markerId;\n\t                        arController.trackPatternMarkerId(artoolkitMarkerId, _this.parameters.size);\n\t                });\n\t\t}else if( _this.parameters.type === 'barcode' ){\n\t\t\tartoolkitMarkerId = _this.parameters.barcodeValue;\n\t\t\tarController.trackBarcodeMarkerId(artoolkitMarkerId, _this.parameters.size);\n\t\t}else if( _this.parameters.type === 'unknown' ){\n\t\t\tartoolkitMarkerId = null;\n\t\t}else{\n\t\t\tconsole.log(false, 'invalid marker type', _this.parameters.type);\n\t\t}\n\n\t\t// listen to the event\n\t\tarController.addEventListener('getMarker', function(event){\n\t\t\tif( event.data.type === artoolkit.PATTERN_MARKER && _this.parameters.type === 'pattern' ){\n\t\t\t\tif( artoolkitMarkerId === null )\treturn\n\t\t\t\tif( event.data.marker.idPatt === artoolkitMarkerId ) onMarkerFound(event);\n\t\t\t}else if( event.data.type === artoolkit.BARCODE_MARKER && _this.parameters.type === 'barcode' ){\n\t\t\t\t// console.log('BARCODE_MARKER idMatrix', event.data.marker.idMatrix, artoolkitMarkerId )\n\t\t\t\tif( artoolkitMarkerId === null )\treturn\n\t\t\t\tif( event.data.marker.idMatrix === artoolkitMarkerId )  onMarkerFound(event);\n\t\t\t}else if( event.data.type === artoolkit.UNKNOWN_MARKER && _this.parameters.type === 'unknown'){\n\t\t\t\tonMarkerFound(event);\n\t\t\t}\n\t\t});\n\n\t}\n\n\tfunction onMarkerFound(event){\n\t\t// honor his.parameters.minConfidence\n\t\tif( event.data.type === artoolkit.PATTERN_MARKER && event.data.marker.cfPatt < _this.parameters.minConfidence )\treturn\n\t\tif( event.data.type === artoolkit.BARCODE_MARKER && event.data.marker.cfMatt < _this.parameters.minConfidence )\treturn\n\n\t\tvar modelViewMatrix = new THREE$1.Matrix4().fromArray(event.data.matrix);\n\t\t_this.updateWithModelViewMatrix(modelViewMatrix);\n\t}\n};\n\n//////////////////////////////////////////////////////////////////////////////\n//\t\taruco specific\n//////////////////////////////////////////////////////////////////////////////\nMarkerControls.prototype._initAruco = function(){\n\tthis._arucoPosit = new POS.Posit(this.parameters.size, _this.context.arucoContext.canvas.width);\n};\n\n//////////////////////////////////////////////////////////////////////////////\n//\t\tinit for Artoolkit\n//////////////////////////////////////////////////////////////////////////////\nMarkerControls.prototype._initTango = function(){\n\tconsole.log('init tango ArMarkerControls');\n};\n\nconst ArucoDebug = function(arucoContext){\n\tthis.arucoContext = arucoContext;\n\n// TODO to rename canvasElement into canvas\n\tthis.canvasElement = document.createElement('canvas');\n\tthis.canvasElement.width = this.arucoContext.canvas.width;\n\tthis.canvasElement.height = this.arucoContext.canvas.height;\n};\n\nArucoDebug.prototype.setSize = function (width, height) {\n        if( this.canvasElement.width !== width )\tthis.canvasElement.width = width;\n        if( this.canvasElement.height !== height )\tthis.canvasElement.height = height;\n};\n\n\nArucoDebug.prototype.clear = function(){\n\tvar canvas = this.canvasElement;\n\tvar context = canvas.getContext('2d');\n\tcontext.clearRect(0,0,canvas.width, canvas.height);\n\t\n};\n\t\nArucoDebug.prototype.drawContoursContours = function(){\n\tvar contours = this.arucoContext.detector.contours;\n\tvar canvas = this.canvasElement;\n\tthis.drawContours(contours, 0, 0, canvas.width, canvas.height, function(hole){\n\t\treturn hole? \"magenta\": \"blue\"\n\t});\n};\n\nArucoDebug.prototype.drawContoursPolys = function(){\n\tvar contours = this.arucoContext.detector.polys;\n\tvar canvas = this.canvasElement;\n\tthis.drawContours(contours, 0, 0, canvas.width, canvas.height, function(){\n\t\treturn 'green'\n\t});\n};\n\n\nArucoDebug.prototype.drawContoursCandidates = function(){\n\tvar contours = this.arucoContext.detector.candidates;\n\tvar canvas = this.canvasElement;\n\tthis.drawContours(contours, 0, 0, canvas.width, canvas.height, function(){\n\t\treturn 'red'\n\t});\n};\n\nArucoDebug.prototype.drawContours = function(contours, x, y, width, height, fn){\n\tvar i = contours.length, j, contour, point;\n\tvar canvas = this.canvasElement;\n\tvar context = canvas.getContext('2d');\n\t\n\tcontext.save();\n\twhile(i --){\n\t\tcontour = contours[i];\n\t\tcontext.strokeStyle = fn(contour.hole);\n\t\tcontext.beginPath();\n\t\tfor (j = 0; j < contour.length; ++ j){\n\t\t\tpoint = contour[j];\n\t\t\tcontext.moveTo(x + point.x, y + point.y);\n\t\t\tpoint = contour[(j + 1) % contour.length];\n\t\t\tcontext.lineTo(x + point.x, y + point.y);\n\t\t}\n\t\t\n\t\tcontext.stroke();\n\t\tcontext.closePath();\n\t}\n\tcontext.restore();\n};\n\n//////////////////////////////////////////////////////////////////////////////\n//\t\tCode Separator\n//////////////////////////////////////////////////////////////////////////////    \n\nArucoDebug.prototype.drawDetectorGrey = function(){\n\tvar cvImage = arucoContext.detector.grey;\n        this.drawCVImage( cvImage );\n};\n\nArucoDebug.prototype.drawDetectorThreshold = function(){\n\tvar cvImage = arucoContext.detector.thres;\n        this.drawCVImage( cvImage );\n};\n\n//////////////////////////////////////////////////////////////////////////////\n//\t\tCode Separator\n//////////////////////////////////////////////////////////////////////////////\nArucoDebug.prototype.drawCVImage = function(cvImage){\n\tvar detector = this.arucoContext.detector;\n\n\tvar canvas = this.canvasElement;\n\tvar context = canvas.getContext('2d');\n\n\tvar imageData = context.createImageData(canvas.width, canvas.height);\n\tthis.copyCVImage2ImageData(cvImage, imageData);\n\tcontext.putImageData( imageData, 0, 0);\n};\n\n\nArucoDebug.prototype.copyCVImage2ImageData = function(cvImage, imageData){\n\tvar i = cvImage.data.length, j = (i * 4) + 3;\n\t\n\twhile(i --){\n\t\timageData.data[j -= 4] = 255;\n\t\timageData.data[j - 1] = imageData.data[j - 2] = imageData.data[j - 3] = cvImage.data[i];\n\t}\n\t\n\treturn imageData;\n};\n\n//////////////////////////////////////////////////////////////////////////////\n//\t\tCode Separator\n//////////////////////////////////////////////////////////////////////////////\nArucoDebug.prototype.drawVideo = function(videoElement){\n\tvar canvas = this.canvasElement;\n\tvar context = canvas.getContext('2d');\n\tcontext.drawImage(videoElement, 0, 0, canvas.width, canvas.height);\n};\n\n//////////////////////////////////////////////////////////////////////////////\n//\t\tCode Separator\n//////////////////////////////////////////////////////////////////////////////\nArucoDebug.prototype.drawMarkerIDs = function(markers){\n\tvar canvas = this.canvasElement;\n\tvar context = canvas.getContext('2d');\n\tvar corners, corner, x, y, i, j;\n\t\n\tcontext.save();\n\tcontext.strokeStyle = \"blue\";\n\tcontext.lineWidth = 1;\n\t\n\tfor (i = 0; i !== markers.length; ++ i){\n\t\tcorners = markers[i].corners;\n\t\t\n\t\tx = Infinity;\n\t\ty = Infinity;\n\t\t\n\t\tfor (j = 0; j !== corners.length; ++ j){\n\t\t\tcorner = corners[j];\n\t\t\t\n\t\t\tx = Math.min(x, corner.x);\n\t\t\ty = Math.min(y, corner.y);\n\t\t}\n\t\tcontext.strokeText(markers[i].id, x, y);\n\t}\n\tcontext.restore();\n};\n\n//////////////////////////////////////////////////////////////////////////////\n//\t\tCode Separator\n//////////////////////////////////////////////////////////////////////////////\nArucoDebug.prototype.drawMarkerCorners = function(markers){\n\tvar canvas = this.canvasElement;\n        var corners, corner, i, j;\n        var context = canvas.getContext('2d');\n\tcontext.save();\n        context.lineWidth = 3;\n        \n        for (i = 0; i < markers.length; ++ i){\n                corners = markers[i].corners;\n                \n                context.strokeStyle = 'red';\n                context.beginPath();\n                \n                for (j = 0; j < corners.length; ++ j){\n                        corner = corners[j];\n                        context.moveTo(corner.x, corner.y);\n                        corner = corners[(j + 1) % corners.length];\n                        context.lineTo(corner.x, corner.y);\n                }\n                \n                context.stroke();\n                context.closePath();\n                \n                context.strokeStyle = 'green';\n                context.strokeRect(corners[0].x - 2, corners[0].y - 2, 4, 4);\n        }\n\tcontext.restore();\n\n};\n\nconst ArucoContext = function(parameters){\n\t// handle default parameters\n\tparameters = parameters || {};\n\tthis.parameters = {\n\t\t// debug - true if one should display artoolkit debug canvas, false otherwise\n\t\tdebug: parameters.debug !== undefined ? parameters.debug : false,\n\t\t// resolution of at which we detect pose in the source image\n\t\tcanvasWidth: parameters.canvasWidth !== undefined ? parameters.canvasWidth : 640,\n\t\tcanvasHeight: parameters.canvasHeight !== undefined ? parameters.canvasHeight : 480,\n\t};\n\n\n        this.canvas = document.createElement('canvas');\n                \n        this.detector = new AR.Detector();\n        \n        // setup ArucoDebug if needed\n        this.debug = null;\n        if( parameters.debug == true ){\n                this.debug = new ArucoDebug(this);\n        }\n\t\n\t// honor parameters.canvasWidth/.canvasHeight\n\tthis.setSize(this.parameters.canvasWidth, this.parameters.canvasHeight);\n};\n\nArucoContext.prototype.setSize = function (width, height) {\n        this.canvas.width = width;\n        this.canvas.height = height;\n        if( this.debug !== null ){\n                this.debug.setSize(width, height);\n        }\n};\n\nArucoContext.prototype.detect = function (videoElement) {\n        var canvas = this.canvas;\n        \n        // get imageData from videoElement\n        var context = canvas.getContext('2d');\n        context.drawImage(videoElement, 0, 0, canvas.width, canvas.height);\n        var imageData = context.getImageData(0, 0, canvas.width, canvas.height);\n        \n        // detect markers in imageData\n        var detectedMarkers = this.detector.detect(imageData);\n\treturn detectedMarkers\n};\n\n/**\n * crappy function to update a object3d with a detectedMarker - super crappy\n */\nArucoContext.prototype.updateObject3D = function(object3D, arucoPosit, markerSize, detectedMarker){\n        var markerCorners = detectedMarker.corners;\n        var canvas = this.canvas;\n\n        // convert the corners\n        var poseCorners = new Array(markerCorners.length);\n        for (var i = 0; i < markerCorners.length; ++ i){\n                var markerCorner = markerCorners[i];        \n                poseCorners[i] = {\n                        x:  markerCorner.x - (canvas.width / 2),\n                        y: -markerCorner.y + (canvas.height/ 2)\n                };\n        }\n        \n        // estimate pose from corners\n        var pose = arucoPosit.pose(poseCorners);\n\n\n\tvar rotation    = pose.bestRotation;\n\tvar translation = pose.bestTranslation;\n\t\n        object3D.position.x =  translation[0];\n        object3D.position.y =  translation[1];\n        object3D.position.z = -translation[2];\n        \n        object3D.rotation.x = -Math.asin(-rotation[1][2]);\n        object3D.rotation.y = -Math.atan2(rotation[0][2], rotation[2][2]);\n        object3D.rotation.z =  Math.atan2(rotation[1][0], rotation[1][1]);\n        \n        object3D.scale.x = markerSize;\n        object3D.scale.y = markerSize;\n        object3D.scale.z = markerSize;\n};\n\nconst Context = function(parameters){\n\tvar _this = this;\n\n\t_this._updatedAt = null;\n\n\t// handle default parameters\n\tthis.parameters = {\n\t\t// AR backend - ['artoolkit', 'aruco', 'tango']\n\t\ttrackingBackend: 'artoolkit',\n\t\t// debug - true if one should display artoolkit debug canvas, false otherwise\n\t\tdebug: false,\n\t\t// the mode of detection - ['color', 'color_and_matrix', 'mono', 'mono_and_matrix']\n\t\tdetectionMode: 'mono',\n\t\t// type of matrix code - valid iif detectionMode end with 'matrix' - [3x3, 3x3_HAMMING63, 3x3_PARITY65, 4x4, 4x4_BCH_13_9_3, 4x4_BCH_13_5_5]\n\t\tmatrixCodeType: '3x3',\n\n\t\t// url of the camera parameters\n\t\tcameraParametersUrl: Context.baseURL + 'parameters/camera_para.dat',\n\n\t\t// tune the maximum rate of pose detection in the source image\n\t\tmaxDetectionRate: 60,\n\t\t// resolution of at which we detect pose in the source image\n\t\tcanvasWidth: 640,\n\t\tcanvasHeight: 480,\n\n\t\t// the patternRatio inside the artoolkit marker - artoolkit only\n\t\tpatternRatio: 0.5,\n\n\t\t// enable image smoothing or not for canvas copy - default to true\n\t\t// https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/imageSmoothingEnabled\n\t\timageSmoothingEnabled : false,\n\t};\n\t// parameters sanity check\n\tconsole.assert(['artoolkit', 'aruco', 'tango'].indexOf(this.parameters.trackingBackend) !== -1, 'invalid parameter trackingBackend', this.parameters.trackingBackend);\n\tconsole.assert(['color', 'color_and_matrix', 'mono', 'mono_and_matrix'].indexOf(this.parameters.detectionMode) !== -1, 'invalid parameter detectionMode', this.parameters.detectionMode);\n\n        this.arController = null;\n        this.arucoContext = null;\n\n\t_this.initialized = false;\n\n\n\tthis._arMarkersControls = [];\n\n\t//////////////////////////////////////////////////////////////////////////////\n\t//\t\tsetParameters\n\t//////////////////////////////////////////////////////////////////////////////\n\tsetParameters(parameters);\n\tfunction setParameters(parameters){\n\t\tif( parameters === undefined )\treturn\n\t\tfor( var key in parameters ){\n\t\t\tvar newValue = parameters[ key ];\n\n\t\t\tif( newValue === undefined ){\n\t\t\t\tconsole.warn( \"ArToolkitContext: '\" + key + \"' parameter is undefined.\" );\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tvar currentValue = _this.parameters[ key ];\n\n\t\t\tif( currentValue === undefined ){\n\t\t\t\tconsole.warn( \"ArToolkitContext: '\" + key + \"' is not a property of this material.\" );\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t_this.parameters[ key ] = newValue;\n\t\t}\n\t}\n};\n\nObject.assign( Context.prototype, THREE$1.EventDispatcher.prototype );\n\n// Context.baseURL = '../'\n// default to github page\nContext.baseURL = 'https://jeromeetienne.github.io/AR.js/three.js/';\nContext.REVISION = '1.6.0';\n\n\n\n/**\n * Create a default camera for this trackingBackend\n * @param {string} trackingBackend - the tracking to user\n * @return {THREE.Camera} the created camera\n */\nContext.createDefaultCamera = function( trackingBackend ){\n\tconsole.assert(false, 'use ARjs.Utils.createDefaultCamera instead');\n\t// Create a camera\n\tif( trackingBackend === 'artoolkit' ){\n\t\tvar camera = new THREE$1.Camera();\n\t}else if( trackingBackend === 'aruco' ){\n\t\tvar camera = new THREE$1.PerspectiveCamera(42, renderer.domElement.width / renderer.domElement.height, 0.01, 100);\n\t}else if( trackingBackend === 'tango' ){\n\t\tvar camera = new THREE$1.PerspectiveCamera(42, renderer.domElement.width / renderer.domElement.height, 0.01, 100);\n\t}else console.assert(false);\n\treturn camera\n};\n\n\n//////////////////////////////////////////////////////////////////////////////\n//\t\tinit functions\n//////////////////////////////////////////////////////////////////////////////\nContext.prototype.init = function(onCompleted){\n\tvar _this = this;\n\tif( this.parameters.trackingBackend === 'artoolkit' ){\n\t\tthis._initArtoolkit(done);\n\t}else if( this.parameters.trackingBackend === 'aruco' ){\n\t\tthis._initAruco(done);\n\t}else if( this.parameters.trackingBackend === 'tango' ){\n\t\tthis._initTango(done);\n\t}else console.assert(false);\n\treturn\n\n\tfunction done(){\n\t\t// dispatch event\n\t\t_this.dispatchEvent({\n\t\t\ttype: 'initialized'\n\t\t});\n\n\t\t_this.initialized = true;\n\n\t\tonCompleted && onCompleted();\n\t}\n\n};\n////////////////////////////////////////////////////////////////////////////////\n//          update function\n////////////////////////////////////////////////////////////////////////////////\nContext.prototype.update = function(srcElement){\n\n\t// be sure arController is fully initialized\n        if(this.parameters.trackingBackend === 'artoolkit' && this.arController === null) return false;\n\n\t// honor this.parameters.maxDetectionRate\n\tvar present = performance.now();\n\tif( this._updatedAt !== null && present - this._updatedAt < 1000/this.parameters.maxDetectionRate ){\n\t\treturn false\n\t}\n\tthis._updatedAt = present;\n\n\t// mark all markers to invisible before processing this frame\n\tthis._arMarkersControls.forEach(function(markerControls){\n\t\tmarkerControls.object3d.visible = false;\n\t});\n\n\t// process this frame\n\tif(this.parameters.trackingBackend === 'artoolkit'){\n\t\tthis._updateArtoolkit(srcElement);\n\t}else if( this.parameters.trackingBackend === 'aruco' ){\n\t\tthis._updateAruco(srcElement);\n\t}else if( this.parameters.trackingBackend === 'tango' ){\n\t\tthis._updateTango(srcElement);\n\t}else{\n\t\tconsole.assert(false);\n\t}\n\n\t// dispatch event\n\tthis.dispatchEvent({\n\t\ttype: 'sourceProcessed'\n\t});\n\n\n\t// return true as we processed the frame\n\treturn true;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n//          Add/Remove markerControls\n////////////////////////////////////////////////////////////////////////////////\nContext.prototype.addMarker = function(arMarkerControls){\n\tconsole.assert(arMarkerControls instanceof MarkerControls);\n\tthis._arMarkersControls.push(arMarkerControls);\n};\n\nContext.prototype.removeMarker = function(arMarkerControls){\n\tconsole.assert(arMarkerControls instanceof MarkerControls);\n\t// console.log('remove marker for', arMarkerControls)\n\tvar index = this.arMarkerControlss.indexOf(artoolkitMarker);\n\tconsole.assert(index !== index );\n\tthis._arMarkersControls.splice(index, 1);\n};\n\n//////////////////////////////////////////////////////////////////////////////\n//\t\tartoolkit specific\n//////////////////////////////////////////////////////////////////////////////\nContext.prototype._initArtoolkit = function(onCompleted){\n        var _this = this;\n\n\t// set this._artoolkitProjectionAxisTransformMatrix to change artoolkit projection matrix axis to match usual webgl one\n\tthis._artoolkitProjectionAxisTransformMatrix = new THREE$1.Matrix4();\n\tthis._artoolkitProjectionAxisTransformMatrix.multiply(new THREE$1.Matrix4().makeRotationY(Math.PI));\n\tthis._artoolkitProjectionAxisTransformMatrix.multiply(new THREE$1.Matrix4().makeRotationZ(Math.PI));\n\n\t// get cameraParameters\n        var cameraParameters = new jsartoolkit5.ARCameraParam(_this.parameters.cameraParametersUrl, function(){\n        \t// init controller\n                var arController = new jsartoolkit5.ARController(_this.parameters.canvasWidth, _this.parameters.canvasHeight, cameraParameters);\n                _this.arController = arController;\n\n\t\t// honor this.parameters.imageSmoothingEnabled\n\t\tarController.ctx.mozImageSmoothingEnabled = _this.parameters.imageSmoothingEnabled;\n\t\tarController.ctx.webkitImageSmoothingEnabled = _this.parameters.imageSmoothingEnabled;\n\t\tarController.ctx.msImageSmoothingEnabled = _this.parameters.imageSmoothingEnabled;\n\t\tarController.ctx.imageSmoothingEnabled = _this.parameters.imageSmoothingEnabled;\n\n\t\t// honor this.parameters.debug\n                if( _this.parameters.debug === true ){\n\t\t\tarController.debugSetup();\n\t\t\tarController.canvas.style.position = 'absolute';\n\t\t\tarController.canvas.style.top = '0px';\n\t\t\tarController.canvas.style.opacity = '0.6';\n\t\t\tarController.canvas.style.pointerEvents = 'none';\n\t\t\tarController.canvas.style.zIndex = '-1';\n\t\t}\n\n\t\t// setPatternDetectionMode\n\t\tvar detectionModes = {\n\t\t\t'color'\t\t\t: jsartoolkit5.artoolkit.AR_TEMPLATE_MATCHING_COLOR,\n\t\t\t'color_and_matrix'\t: jsartoolkit5.artoolkit.AR_TEMPLATE_MATCHING_COLOR_AND_MATRIX,\n\t\t\t'mono'\t\t\t: jsartoolkit5.artoolkit.AR_TEMPLATE_MATCHING_MONO,\n\t\t\t'mono_and_matrix'\t: jsartoolkit5.artoolkit.AR_TEMPLATE_MATCHING_MONO_AND_MATRIX,\n\t\t};\n\t\tvar detectionMode = detectionModes[_this.parameters.detectionMode];\n\t\tconsole.assert(detectionMode !== undefined);\n\t\tarController.setPatternDetectionMode(detectionMode);\n\n\t\t// setMatrixCodeType\n\t\tvar matrixCodeTypes = {\n\t\t\t'3x3'\t\t: jsartoolkit5.artoolkit.AR_MATRIX_CODE_3x3,\n\t\t\t'3x3_HAMMING63'\t: jsartoolkit5.artoolkit.AR_MATRIX_CODE_3x3_HAMMING63,\n\t\t\t'3x3_PARITY65'\t: jsartoolkit5.artoolkit.AR_MATRIX_CODE_3x3_PARITY65,\n\t\t\t'4x4'\t\t: jsartoolkit5.artoolkit.AR_MATRIX_CODE_4x4,\n\t\t\t'4x4_BCH_13_9_3': jsartoolkit5.artoolkit.AR_MATRIX_CODE_4x4_BCH_13_9_3,\n\t\t\t'4x4_BCH_13_5_5': jsartoolkit5.artoolkit.AR_MATRIX_CODE_4x4_BCH_13_5_5,\n\t\t};\n\t\tvar matrixCodeType = matrixCodeTypes[_this.parameters.matrixCodeType];\n\t\tconsole.assert(matrixCodeType !== undefined);\n\t\tarController.setMatrixCodeType(matrixCodeType);\n\n\t\t// set the patternRatio for artoolkit\n\t\tarController.setPattRatio(_this.parameters.patternRatio);\n\n\t\t// set thresholding in artoolkit\n\t\t// this seems to be the default\n\t\t// arController.setThresholdMode(artoolkit.AR_LABELING_THRESH_MODE_MANUAL)\n\t\t// adatative consume a LOT of cpu...\n\t\t// arController.setThresholdMode(artoolkit.AR_LABELING_THRESH_MODE_AUTO_ADAPTIVE)\n\t\t// arController.setThresholdMode(artoolkit.AR_LABELING_THRESH_MODE_AUTO_OTSU)\n\n\t\t// notify\n                onCompleted();\n        });\n\treturn this\n};\n\n/**\n * return the projection matrix\n */\nContext.prototype.getProjectionMatrix = function(srcElement){\n\n\n// FIXME rename this function to say it is artoolkit specific - getArtoolkitProjectMatrix\n// keep a backward compatibility with a console.warn\n\n\tconsole.assert( this.parameters.trackingBackend === 'artoolkit' );\n\tconsole.assert(this.arController, 'arController MUST be initialized to call this function');\n\t// get projectionMatrixArr from artoolkit\n\tvar projectionMatrixArr = this.arController.getCameraMatrix();\n\tvar projectionMatrix = new THREE$1.Matrix4().fromArray(projectionMatrixArr);\n\n\t// apply context._axisTransformMatrix - change artoolkit axis to match usual webgl one\n\tprojectionMatrix.multiply(this._artoolkitProjectionAxisTransformMatrix);\n\n\t// return the result\n\treturn projectionMatrix\n};\n\nContext.prototype._updateArtoolkit = function(srcElement){\n\tthis.arController.process(srcElement);\n};\n\n//////////////////////////////////////////////////////////////////////////////\n//\t\taruco specific\n//////////////////////////////////////////////////////////////////////////////\nContext.prototype._initAruco = function(onCompleted){\n\tthis.arucoContext = new ArucoContext();\n\n\t// honor this.parameters.canvasWidth/.canvasHeight\n\tthis.arucoContext.canvas.width = this.parameters.canvasWidth;\n\tthis.arucoContext.canvas.height = this.parameters.canvasHeight;\n\n\t// honor this.parameters.imageSmoothingEnabled\n\tvar context = this.arucoContext.canvas.getContext('2d');\n\t// context.mozImageSmoothingEnabled = this.parameters.imageSmoothingEnabled;\n\tcontext.webkitImageSmoothingEnabled = this.parameters.imageSmoothingEnabled;\n\tcontext.msImageSmoothingEnabled = this.parameters.imageSmoothingEnabled;\n\tcontext.imageSmoothingEnabled = this.parameters.imageSmoothingEnabled;\n\n\n\tsetTimeout(function(){\n\t\tonCompleted();\n\t}, 0);\n};\n\n\nContext.prototype._updateAruco = function(srcElement){\n\t// console.log('update aruco here')\n\tvar _this = this;\n\tvar arMarkersControls = this._arMarkersControls;\n        var detectedMarkers = this.arucoContext.detect(srcElement);\n\n\tdetectedMarkers.forEach(function(detectedMarker){\n\t\tvar foundControls = null;\n\t\tfor(var i = 0; i < arMarkersControls.length; i++){\n\t\t\tconsole.assert( arMarkersControls[i].parameters.type === 'barcode' );\n\t\t\tif( arMarkersControls[i].parameters.barcodeValue === detectedMarker.id ){\n\t\t\t\tfoundControls = arMarkersControls[i];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif( foundControls === null )\treturn\n\n\t\tvar tmpObject3d = new THREE$1.Object3D;\n                _this.arucoContext.updateObject3D(tmpObject3d, foundControls._arucoPosit, foundControls.parameters.size, detectedMarker);\n\t\ttmpObject3d.updateMatrix();\n\n\t\tfoundControls.updateWithModelViewMatrix(tmpObject3d.matrix);\n\t});\n};\n\n//////////////////////////////////////////////////////////////////////////////\n//\t\ttango specific\n//////////////////////////////////////////////////////////////////////////////\nContext.prototype._initTango = function(onCompleted){\n\tvar _this = this;\n\t// check webvr is available\n\tif (navigator.getVRDisplays); else if (navigator.getVRDevices){\n\t\talert(\"Your browser supports WebVR but not the latest version. See <a href='http://webvr.info'>webvr.info</a> for more info.\");\n\t} else {\n\t\talert(\"Your browser does not support WebVR. See <a href='http://webvr.info'>webvr.info</a> for assistance.\");\n\t}\n\n\n\tthis._tangoContext = {\n\t\tvrDisplay: null,\n\t\tvrPointCloud: null,\n\t\tframeData: new VRFrameData(),\n\t};\n\n\n\t// get vrDisplay\n\tnavigator.getVRDisplays().then(function (vrDisplays){\n\t\tif( vrDisplays.length === 0 )\talert('no vrDisplays available');\n\t\tvar vrDisplay = _this._tangoContext.vrDisplay = vrDisplays[0];\n\n\t\tconsole.log('vrDisplays.displayName :', vrDisplay.displayName);\n\n\t\t// init vrPointCloud\n\t\tif( vrDisplay.displayName === \"Tango VR Device\" ){\n                \t_this._tangoContext.vrPointCloud = new THREE$1.WebAR.VRPointCloud(vrDisplay, true);\n\t\t}\n\n\t\t// NOTE it doesnt seem necessary and it fails on tango\n\t\t// var canvasElement = document.createElement('canvas')\n\t\t// document.body.appendChild(canvasElement)\n\t\t// _this._tangoContext.requestPresent([{ source: canvasElement }]).then(function(){\n\t\t// \tconsole.log('vrdisplay request accepted')\n\t\t// });\n\n\t\tonCompleted();\n\t});\n};\n\n\nContext.prototype._updateTango = function(srcElement){\n\t// console.log('update aruco here')\n\tvar _this = this;\n\tvar arMarkersControls = this._arMarkersControls;\n\tvar tangoContext= this._tangoContext;\n\tvar vrDisplay = this._tangoContext.vrDisplay;\n\n\t// check vrDisplay is already initialized\n\tif( vrDisplay === null )\treturn\n\n\n        // Update the point cloud. Only if the point cloud will be shown the geometry is also updated.\n\tif( vrDisplay.displayName === \"Tango VR Device\" ){\n\t        var showPointCloud = true;\n\t\tvar pointsToSkip = 0;\n\t        _this._tangoContext.vrPointCloud.update(showPointCloud, pointsToSkip, true);\n\t}\n\n\n\tif( this._arMarkersControls.length === 0 )\treturn\n\n\t// TODO here do a fake search on barcode/1001 ?\n\n\tvar foundControls = this._arMarkersControls[0];\n\n\tvar frameData = this._tangoContext.frameData;\n\n\t// read frameData\n\tvrDisplay.getFrameData(frameData);\n\n\tif( frameData.pose.position === null )\t\treturn\n\tif( frameData.pose.orientation === null )\treturn\n\n\t// create cameraTransformMatrix\n\tvar position = new THREE$1.Vector3().fromArray(frameData.pose.position);\n\tvar quaternion = new THREE$1.Quaternion().fromArray(frameData.pose.orientation);\n\tvar scale = new THREE$1.Vector3(1,1,1);\n\tvar cameraTransformMatrix = new THREE$1.Matrix4().compose(position, quaternion, scale);\n\t// compute modelViewMatrix from cameraTransformMatrix\n\tvar modelViewMatrix = new THREE$1.Matrix4();\n\tmodelViewMatrix.getInverse( cameraTransformMatrix );\n\n\tfoundControls.updateWithModelViewMatrix(modelViewMatrix);\n\n\t// console.log('position', position)\n\t// if( position.x !== 0 ||  position.y !== 0 ||  position.z !== 0 ){\n\t// \tconsole.log('vrDisplay tracking')\n\t// }else{\n\t// \tconsole.log('vrDisplay NOT tracking')\n\t// }\n\n};\n\n/**\n * - lerp position/quaternino/scale\n * - minDelayDetected\n * - minDelayUndetected\n * @param {[type]} object3d   [description]\n * @param {[type]} parameters [description]\n */\nconst SmoothedControls = function(object3d, parameters){\n\tvar _this = this;\n\t\n\tArBaseControls.call(this, object3d);\n\t\n\t// copy parameters\n\tthis.object3d.visible = false;\n\t\n\tthis._lastLerpStepAt = null;\n\tthis._visibleStartedAt = null;\n\tthis._unvisibleStartedAt = null;\n\n\t// handle default parameters\n\tparameters = parameters || {};\n\tthis.parameters = {\n\t\t// lerp coeficient for the position - between [0,1] - default to 1\n\t\tlerpPosition: 0.8,\n\t\t// lerp coeficient for the quaternion - between [0,1] - default to 1\n\t\tlerpQuaternion: 0.2,\n\t\t// lerp coeficient for the scale - between [0,1] - default to 1\n\t\tlerpScale: 0.7,\n\t\t// delay for lerp fixed steps - in seconds - default to 1/120\n\t\tlerpStepDelay: 1/60,\n\t\t// minimum delay the sub-control must be visible before this controls become visible - default to 0 seconds\n\t\tminVisibleDelay: 0.0,\n\t\t// minimum delay the sub-control must be unvisible before this controls become unvisible - default to 0 seconds\n\t\tminUnvisibleDelay: 0.2,\n\t};\n\t\n\t//////////////////////////////////////////////////////////////////////////////\n\t//\t\tsetParameters\n\t//////////////////////////////////////////////////////////////////////////////\n\tsetParameters(parameters);\n\tfunction setParameters(parameters){\n\t\tif( parameters === undefined )\treturn\n\t\tfor( var key in parameters ){\n\t\t\tvar newValue = parameters[ key ];\n\n\t\t\tif( newValue === undefined ){\n\t\t\t\tconsole.warn( \"THREEx.ArSmoothedControls: '\" + key + \"' parameter is undefined.\" );\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tvar currentValue = _this.parameters[ key ];\n\n\t\t\tif( currentValue === undefined ){\n\t\t\t\tconsole.warn( \"THREEx.ArSmoothedControls: '\" + key + \"' is not a property of this material.\" );\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t_this.parameters[ key ] = newValue;\n\t\t}\n\t}\n};\n\t\nSmoothedControls.prototype = Object.create( ArBaseControls.prototype );\nSmoothedControls.prototype.constructor = SmoothedControls;\n\n//////////////////////////////////////////////////////////////////////////////\n//\t\tupdate function\n//////////////////////////////////////////////////////////////////////////////\n\nSmoothedControls.prototype.update = function(targetObject3d){\n\tvar object3d = this.object3d;\n\tvar parameters = this.parameters;\n\tvar wasVisible = object3d.visible;\n\tvar present = performance.now()/1000;\n\n\n\t//////////////////////////////////////////////////////////////////////////////\n\t//\t\thandle object3d.visible with minVisibleDelay/minUnvisibleDelay\n\t//////////////////////////////////////////////////////////////////////////////\n\tif( targetObject3d.visible === false )\tthis._visibleStartedAt = null;\n\tif( targetObject3d.visible === true )\tthis._unvisibleStartedAt = null;\n\n\tif( targetObject3d.visible === true && this._visibleStartedAt === null )\tthis._visibleStartedAt = present;\n\tif( targetObject3d.visible === false && this._unvisibleStartedAt === null )\tthis._unvisibleStartedAt = present;\n\n\tif( wasVisible === false && targetObject3d.visible === true ){\n\t\tvar visibleFor = present - this._visibleStartedAt;\n\t\tif( visibleFor >= this.parameters.minVisibleDelay ){\n\t\t\tobject3d.visible = true;\n\t\t\tsnapDirectlyToTarget();\n\t\t}\n\t\t// console.log('visibleFor', visibleFor)\n\t}\n\n\tif( wasVisible === true && targetObject3d.visible === false ){\n\t\tvar unvisibleFor = present - this._unvisibleStartedAt;\n\t\tif( unvisibleFor >= this.parameters.minUnvisibleDelay ){\n\t\t\tobject3d.visible = false;\t\t\t\n\t\t}\n\t}\n\t\n\t//////////////////////////////////////////////////////////////////////////////\n\t//\t\tapply lerp on positon/quaternion/scale\n\t//////////////////////////////////////////////////////////////////////////////\n\n\t// apply lerp steps - require fix time steps to behave the same no matter the fps\n\tif( this._lastLerpStepAt === null ){\n\t\tapplyOneSlerpStep();\n\t\tthis._lastLerpStepAt = present;\n\t}else{\n\t\tvar nStepsToDo = Math.floor( (present - this._lastLerpStepAt)/this.parameters.lerpStepDelay );\n\t\tfor(var i = 0; i < nStepsToDo; i++){\n\t\t\tapplyOneSlerpStep();\n\t\t\tthis._lastLerpStepAt += this.parameters.lerpStepDelay;\n\t\t}\n\t}\n\n\t// update the matrix\n\tthis.object3d.updateMatrix();\n\n\t//////////////////////////////////////////////////////////////////////////////\n\t//\t\thonor becameVisible/becameUnVisible event\n\t//////////////////////////////////////////////////////////////////////////////\n\t// honor becameVisible event\n\tif( wasVisible === false && object3d.visible === true ){\n\t\tthis.dispatchEvent({ type: 'becameVisible' });\n\t}\n\t// honor becameUnVisible event\n\tif( wasVisible === true && object3d.visible === false ){\n\t\tthis.dispatchEvent({ type: 'becameUnVisible' });\n\t}\n\treturn\n\n\tfunction snapDirectlyToTarget(){\n\t\tobject3d.position.copy( targetObject3d.position );\n\t\tobject3d.quaternion.copy( targetObject3d.quaternion );\n\t\tobject3d.scale.copy( targetObject3d.scale );\n\t}\t\n\t\n\tfunction applyOneSlerpStep(){\n\t\tobject3d.position.lerp(targetObject3d.position, parameters.lerpPosition);\n\t\tobject3d.quaternion.slerp(targetObject3d.quaternion, parameters.lerpQuaternion);\n\t\tobject3d.scale.lerp(targetObject3d.scale, parameters.lerpScale);\n\t}\n};\n\nconst ArToolkitSource$1 = three => Source(three);\nconst ArToolkitContext = Context;\nconst ArMarkerControls = MarkerControls;\nconst ArSmoothedControls = SmoothedControls;\n\nexports.ArToolkitSource = ArToolkitSource$1;\nexports.ArToolkitContext = ArToolkitContext;\nexports.ArMarkerControls = ArMarkerControls;\nexports.ArSmoothedControls = ArSmoothedControls;\n","/**\n * @author Rich Tibbett / https://github.com/richtr\n * @author mrdoob / http://mrdoob.com/\n * @author Tony Parisi / http://www.tonyparisi.com/\n * @author Takahiro / https://github.com/takahirox\n * @author Don McCurdy / https://www.donmccurdy.com\n */\n\nvar THREE = require( 'three' );\n\n\nvar _GLTFLoader = ( function () {\n\n\tfunction GLTFLoader( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager;\n\t\tthis.dracoLoader = null;\n\n\t}\n\n\tGLTFLoader.prototype = {\n\n\t\tconstructor: GLTFLoader,\n\n\t\tcrossOrigin: 'anonymous',\n\n\t\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\t\tvar scope = this;\n\n\t\t\tvar path = this.path !== undefined ? this.path : THREE.LoaderUtils.extractUrlBase( url );\n\n\t\t\tvar loader = new THREE.FileLoader( scope.manager );\n\n\t\t\tloader.setResponseType( 'arraybuffer' );\n\n\t\t\tloader.load( url, function ( data ) {\n\n\t\t\t\ttry {\n\n\t\t\t\t\tscope.parse( data, path, onLoad, onError );\n\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\tif ( onError !== undefined ) {\n\n\t\t\t\t\t\tonError( e );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthrow e;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t},\n\n\t\tsetCrossOrigin: function ( value ) {\n\n\t\t\tthis.crossOrigin = value;\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetPath: function ( value ) {\n\n\t\t\tthis.path = value;\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetDRACOLoader: function ( dracoLoader ) {\n\n\t\t\tthis.dracoLoader = dracoLoader;\n\t\t\treturn this;\n\n\t\t},\n\n\t\tparse: function ( data, path, onLoad, onError ) {\n\n\t\t\tvar content;\n\t\t\tvar extensions = {};\n\n\t\t\tif ( typeof data === 'string' ) {\n\n\t\t\t\tcontent = data;\n\n\t\t\t} else {\n\n\t\t\t\tvar magic = THREE.LoaderUtils.decodeText( new Uint8Array( data, 0, 4 ) );\n\n\t\t\t\tif ( magic === BINARY_EXTENSION_HEADER_MAGIC ) {\n\n\t\t\t\t\ttry {\n\n\t\t\t\t\t\textensions[ EXTENSIONS.KHR_BINARY_GLTF ] = new GLTFBinaryExtension( data );\n\n\t\t\t\t\t} catch ( error ) {\n\n\t\t\t\t\t\tif ( onError ) onError( error );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontent = extensions[ EXTENSIONS.KHR_BINARY_GLTF ].content;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcontent = THREE.LoaderUtils.decodeText( new Uint8Array( data ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar json = JSON.parse( content );\n\n\t\t\tif ( json.asset === undefined || json.asset.version[ 0 ] < 2 ) {\n\n\t\t\t\tif ( onError ) onError( new Error( 'THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported. Use LegacyGLTFLoader instead.' ) );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tif ( json.extensionsUsed ) {\n\n\t\t\t\tfor ( var i = 0; i < json.extensionsUsed.length; ++ i ) {\n\n\t\t\t\t\tvar extensionName = json.extensionsUsed[ i ];\n\t\t\t\t\tvar extensionsRequired = json.extensionsRequired || [];\n\n\t\t\t\t\tswitch ( extensionName ) {\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_LIGHTS_PUNCTUAL:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFLightsExtension( json );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_MATERIALS_UNLIT:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFMaterialsUnlitExtension( json );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFMaterialsPbrSpecularGlossinessExtension();\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.KHR_DRACO_MESH_COMPRESSION:\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFDracoMeshCompressionExtension( json, this.dracoLoader );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EXTENSIONS.MSFT_TEXTURE_DDS:\n\t\t\t\t\t\t\textensions[ EXTENSIONS.MSFT_TEXTURE_DDS ] = new GLTFTextureDDSExtension();\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\tif ( extensionsRequired.indexOf( extensionName ) >= 0 ) {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Unknown extension \"' + extensionName + '\".' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar parser = new GLTFParser( json, extensions, {\n\n\t\t\t\tpath: path || this.path || '',\n\t\t\t\tcrossOrigin: this.crossOrigin,\n\t\t\t\tmanager: this.manager\n\n\t\t\t} );\n\n\t\t\tparser.parse( function ( scene, scenes, cameras, animations, json ) {\n\n\t\t\t\tvar glTF = {\n\t\t\t\t\tscene: scene,\n\t\t\t\t\tscenes: scenes,\n\t\t\t\t\tcameras: cameras,\n\t\t\t\t\tanimations: animations,\n\t\t\t\t\tasset: json.asset,\n\t\t\t\t\tparser: parser,\n\t\t\t\t\tuserData: {}\n\t\t\t\t};\n\n\t\t\t\taddUnknownExtensionsToUserData( extensions, glTF, json );\n\n\t\t\t\tonLoad( glTF );\n\n\t\t\t}, onError );\n\n\t\t}\n\n\t};\n\n\t/* GLTFREGISTRY */\n\n\tfunction GLTFRegistry() {\n\n\t\tvar objects = {};\n\n\t\treturn\t{\n\n\t\t\tget: function ( key ) {\n\n\t\t\t\treturn objects[ key ];\n\n\t\t\t},\n\n\t\t\tadd: function ( key, object ) {\n\n\t\t\t\tobjects[ key ] = object;\n\n\t\t\t},\n\n\t\t\tremove: function ( key ) {\n\n\t\t\t\tdelete objects[ key ];\n\n\t\t\t},\n\n\t\t\tremoveAll: function () {\n\n\t\t\t\tobjects = {};\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t/*********************************/\n\t/********** EXTENSIONS ***********/\n\t/*********************************/\n\n\tvar EXTENSIONS = {\n\t\tKHR_BINARY_GLTF: 'KHR_binary_glTF',\n\t\tKHR_DRACO_MESH_COMPRESSION: 'KHR_draco_mesh_compression',\n\t\tKHR_LIGHTS_PUNCTUAL: 'KHR_lights_punctual',\n\t\tKHR_MATERIALS_PBR_SPECULAR_GLOSSINESS: 'KHR_materials_pbrSpecularGlossiness',\n\t\tKHR_MATERIALS_UNLIT: 'KHR_materials_unlit',\n\t\tMSFT_TEXTURE_DDS: 'MSFT_texture_dds'\n\t};\n\n\t/**\n\t * DDS Texture Extension\n\t *\n\t * Specification:\n\t * https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/MSFT_texture_dds\n\t *\n\t */\n\tfunction GLTFTextureDDSExtension() {\n\n\t\tif ( ! THREE.DDSLoader ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Attempting to load .dds texture without importing THREE.DDSLoader' );\n\n\t\t}\n\n\t\tthis.name = EXTENSIONS.MSFT_TEXTURE_DDS;\n\t\tthis.ddsLoader = new THREE.DDSLoader();\n\n\t}\n\n\t/**\n\t * Lights Extension\n\t *\n\t * Specification: PENDING\n\t */\n\tfunction GLTFLightsExtension( json ) {\n\n\t\tthis.name = EXTENSIONS.KHR_LIGHTS_PUNCTUAL;\n\n\t\tthis.lights = [];\n\n\t\tvar extension = ( json.extensions && json.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ] ) || {};\n\t\tvar lightDefs = extension.lights || [];\n\n\t\tfor ( var i = 0; i < lightDefs.length; i ++ ) {\n\n\t\t\tvar lightDef = lightDefs[ i ];\n\t\t\tvar lightNode;\n\n\t\t\tvar color = new THREE.Color( 0xffffff );\n\t\t\tif ( lightDef.color !== undefined ) color.fromArray( lightDef.color );\n\n\t\t\tvar range = lightDef.range !== undefined ? lightDef.range : 0;\n\n\t\t\tswitch ( lightDef.type ) {\n\n\t\t\t\tcase 'directional':\n\t\t\t\t\tlightNode = new THREE.DirectionalLight( color );\n\t\t\t\t\tlightNode.target.position.set( 0, 0, 1 );\n\t\t\t\t\tlightNode.add( lightNode.target );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'point':\n\t\t\t\t\tlightNode = new THREE.PointLight( color );\n\t\t\t\t\tlightNode.distance = range;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'spot':\n\t\t\t\t\tlightNode = new THREE.SpotLight( color );\n\t\t\t\t\tlightNode.distance = range;\n\t\t\t\t\t// Handle spotlight properties.\n\t\t\t\t\tlightDef.spot = lightDef.spot || {};\n\t\t\t\t\tlightDef.spot.innerConeAngle = lightDef.spot.innerConeAngle !== undefined ? lightDef.spot.innerConeAngle : 0;\n\t\t\t\t\tlightDef.spot.outerConeAngle = lightDef.spot.outerConeAngle !== undefined ? lightDef.spot.outerConeAngle : Math.PI / 4.0;\n\t\t\t\t\tlightNode.angle = lightDef.spot.outerConeAngle;\n\t\t\t\t\tlightNode.penumbra = 1.0 - lightDef.spot.innerConeAngle / lightDef.spot.outerConeAngle;\n\t\t\t\t\tlightNode.target.position.set( 0, 0, 1 );\n\t\t\t\t\tlightNode.add( lightNode.target );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error( 'THREE.GLTFLoader: Unexpected light type, \"' + lightDef.type + '\".' );\n\n\t\t\t}\n\n\t\t\tlightNode.decay = 2;\n\n\t\t\tif ( lightDef.intensity !== undefined ) lightNode.intensity = lightDef.intensity;\n\n\t\t\tlightNode.name = lightDef.name || ( 'light_' + i );\n\n\t\t\tthis.lights.push( lightNode );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Unlit Materials Extension (pending)\n\t *\n\t * PR: https://github.com/KhronosGroup/glTF/pull/1163\n\t */\n\tfunction GLTFMaterialsUnlitExtension( json ) {\n\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_UNLIT;\n\n\t}\n\n\tGLTFMaterialsUnlitExtension.prototype.getMaterialType = function ( material ) {\n\n\t\treturn THREE.MeshBasicMaterial;\n\n\t};\n\n\tGLTFMaterialsUnlitExtension.prototype.extendParams = function ( materialParams, material, parser ) {\n\n\t\tvar pending = [];\n\n\t\tmaterialParams.color = new THREE.Color( 1.0, 1.0, 1.0 );\n\t\tmaterialParams.opacity = 1.0;\n\n\t\tvar metallicRoughness = material.pbrMetallicRoughness;\n\n\t\tif ( metallicRoughness ) {\n\n\t\t\tif ( Array.isArray( metallicRoughness.baseColorFactor ) ) {\n\n\t\t\t\tvar array = metallicRoughness.baseColorFactor;\n\n\t\t\t\tmaterialParams.color.fromArray( array );\n\t\t\t\tmaterialParams.opacity = array[ 3 ];\n\n\t\t\t}\n\n\t\t\tif ( metallicRoughness.baseColorTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture.index ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t};\n\n\t/* BINARY EXTENSION */\n\n\tvar BINARY_EXTENSION_BUFFER_NAME = 'binary_glTF';\n\tvar BINARY_EXTENSION_HEADER_MAGIC = 'glTF';\n\tvar BINARY_EXTENSION_HEADER_LENGTH = 12;\n\tvar BINARY_EXTENSION_CHUNK_TYPES = { JSON: 0x4E4F534A, BIN: 0x004E4942 };\n\n\tfunction GLTFBinaryExtension( data ) {\n\n\t\tthis.name = EXTENSIONS.KHR_BINARY_GLTF;\n\t\tthis.content = null;\n\t\tthis.body = null;\n\n\t\tvar headerView = new DataView( data, 0, BINARY_EXTENSION_HEADER_LENGTH );\n\n\t\tthis.header = {\n\t\t\tmagic: THREE.LoaderUtils.decodeText( new Uint8Array( data.slice( 0, 4 ) ) ),\n\t\t\tversion: headerView.getUint32( 4, true ),\n\t\t\tlength: headerView.getUint32( 8, true )\n\t\t};\n\n\t\tif ( this.header.magic !== BINARY_EXTENSION_HEADER_MAGIC ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Unsupported glTF-Binary header.' );\n\n\t\t} else if ( this.header.version < 2.0 ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Legacy binary file detected. Use LegacyGLTFLoader instead.' );\n\n\t\t}\n\n\t\tvar chunkView = new DataView( data, BINARY_EXTENSION_HEADER_LENGTH );\n\t\tvar chunkIndex = 0;\n\n\t\twhile ( chunkIndex < chunkView.byteLength ) {\n\n\t\t\tvar chunkLength = chunkView.getUint32( chunkIndex, true );\n\t\t\tchunkIndex += 4;\n\n\t\t\tvar chunkType = chunkView.getUint32( chunkIndex, true );\n\t\t\tchunkIndex += 4;\n\n\t\t\tif ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.JSON ) {\n\n\t\t\t\tvar contentArray = new Uint8Array( data, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength );\n\t\t\t\tthis.content = THREE.LoaderUtils.decodeText( contentArray );\n\n\t\t\t} else if ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.BIN ) {\n\n\t\t\t\tvar byteOffset = BINARY_EXTENSION_HEADER_LENGTH + chunkIndex;\n\t\t\t\tthis.body = data.slice( byteOffset, byteOffset + chunkLength );\n\n\t\t\t}\n\n\t\t\t// Clients must ignore chunks with unknown types.\n\n\t\t\tchunkIndex += chunkLength;\n\n\t\t}\n\n\t\tif ( this.content === null ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: JSON content not found.' );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * DRACO Mesh Compression Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/pull/874\n\t */\n\tfunction GLTFDracoMeshCompressionExtension( json, dracoLoader ) {\n\n\t\tif ( ! dracoLoader ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: No DRACOLoader instance provided.' );\n\n\t\t}\n\n\t\tthis.name = EXTENSIONS.KHR_DRACO_MESH_COMPRESSION;\n\t\tthis.json = json;\n\t\tthis.dracoLoader = dracoLoader;\n\n\t}\n\n\tGLTFDracoMeshCompressionExtension.prototype.decodePrimitive = function ( primitive, parser ) {\n\n\t\tvar json = this.json;\n\t\tvar dracoLoader = this.dracoLoader;\n\t\tvar bufferViewIndex = primitive.extensions[ this.name ].bufferView;\n\t\tvar gltfAttributeMap = primitive.extensions[ this.name ].attributes;\n\t\tvar threeAttributeMap = {};\n\t\tvar attributeNormalizedMap = {};\n\t\tvar attributeTypeMap = {};\n\n\t\tfor ( var attributeName in gltfAttributeMap ) {\n\n\t\t\tif ( ! ( attributeName in ATTRIBUTES ) ) continue;\n\n\t\t\tthreeAttributeMap[ ATTRIBUTES[ attributeName ] ] = gltfAttributeMap[ attributeName ];\n\n\t\t}\n\n\t\tfor ( attributeName in primitive.attributes ) {\n\n\t\t\tif ( ATTRIBUTES[ attributeName ] !== undefined && gltfAttributeMap[ attributeName ] !== undefined ) {\n\n\t\t\t\tvar accessorDef = json.accessors[ primitive.attributes[ attributeName ] ];\n\t\t\t\tvar componentType = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ];\n\n\t\t\t\tattributeTypeMap[ ATTRIBUTES[ attributeName ] ] = componentType;\n\t\t\t\tattributeNormalizedMap[ ATTRIBUTES[ attributeName ] ] = accessorDef.normalized === true;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn parser.getDependency( 'bufferView', bufferViewIndex ).then( function ( bufferView ) {\n\n\t\t\treturn new Promise( function ( resolve ) {\n\n\t\t\t\tdracoLoader.decodeDracoFile( bufferView, function ( geometry ) {\n\n\t\t\t\t\tfor ( var attributeName in geometry.attributes ) {\n\n\t\t\t\t\t\tvar attribute = geometry.attributes[ attributeName ];\n\t\t\t\t\t\tvar normalized = attributeNormalizedMap[ attributeName ];\n\n\t\t\t\t\t\tif ( normalized !== undefined ) attribute.normalized = normalized;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve( geometry );\n\n\t\t\t\t}, threeAttributeMap, attributeTypeMap );\n\n\t\t\t} );\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specular-Glossiness Extension\n\t *\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_pbrSpecularGlossiness\n\t */\n\tfunction GLTFMaterialsPbrSpecularGlossinessExtension() {\n\n\t\treturn {\n\n\t\t\tname: EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS,\n\n\t\t\tspecularGlossinessParams: [\n\t\t\t\t'color',\n\t\t\t\t'map',\n\t\t\t\t'lightMap',\n\t\t\t\t'lightMapIntensity',\n\t\t\t\t'aoMap',\n\t\t\t\t'aoMapIntensity',\n\t\t\t\t'emissive',\n\t\t\t\t'emissiveIntensity',\n\t\t\t\t'emissiveMap',\n\t\t\t\t'bumpMap',\n\t\t\t\t'bumpScale',\n\t\t\t\t'normalMap',\n\t\t\t\t'displacementMap',\n\t\t\t\t'displacementScale',\n\t\t\t\t'displacementBias',\n\t\t\t\t'specularMap',\n\t\t\t\t'specular',\n\t\t\t\t'glossinessMap',\n\t\t\t\t'glossiness',\n\t\t\t\t'alphaMap',\n\t\t\t\t'envMap',\n\t\t\t\t'envMapIntensity',\n\t\t\t\t'refractionRatio',\n\t\t\t],\n\n\t\t\tgetMaterialType: function () {\n\n\t\t\t\treturn THREE.ShaderMaterial;\n\n\t\t\t},\n\n\t\t\textendParams: function ( params, material, parser ) {\n\n\t\t\t\tvar pbrSpecularGlossiness = material.extensions[ this.name ];\n\n\t\t\t\tvar shader = THREE.ShaderLib[ 'standard' ];\n\n\t\t\t\tvar uniforms = THREE.UniformsUtils.clone( shader.uniforms );\n\n\t\t\t\tvar specularMapParsFragmentChunk = [\n\t\t\t\t\t'#ifdef USE_SPECULARMAP',\n\t\t\t\t\t'\tuniform sampler2D specularMap;',\n\t\t\t\t\t'#endif'\n\t\t\t\t].join( '\\n' );\n\n\t\t\t\tvar glossinessMapParsFragmentChunk = [\n\t\t\t\t\t'#ifdef USE_GLOSSINESSMAP',\n\t\t\t\t\t'\tuniform sampler2D glossinessMap;',\n\t\t\t\t\t'#endif'\n\t\t\t\t].join( '\\n' );\n\n\t\t\t\tvar specularMapFragmentChunk = [\n\t\t\t\t\t'vec3 specularFactor = specular;',\n\t\t\t\t\t'#ifdef USE_SPECULARMAP',\n\t\t\t\t\t'\tvec4 texelSpecular = texture2D( specularMap, vUv );',\n\t\t\t\t\t'\ttexelSpecular = sRGBToLinear( texelSpecular );',\n\t\t\t\t\t'\t// reads channel RGB, compatible with a glTF Specular-Glossiness (RGBA) texture',\n\t\t\t\t\t'\tspecularFactor *= texelSpecular.rgb;',\n\t\t\t\t\t'#endif'\n\t\t\t\t].join( '\\n' );\n\n\t\t\t\tvar glossinessMapFragmentChunk = [\n\t\t\t\t\t'float glossinessFactor = glossiness;',\n\t\t\t\t\t'#ifdef USE_GLOSSINESSMAP',\n\t\t\t\t\t'\tvec4 texelGlossiness = texture2D( glossinessMap, vUv );',\n\t\t\t\t\t'\t// reads channel A, compatible with a glTF Specular-Glossiness (RGBA) texture',\n\t\t\t\t\t'\tglossinessFactor *= texelGlossiness.a;',\n\t\t\t\t\t'#endif'\n\t\t\t\t].join( '\\n' );\n\n\t\t\t\tvar lightPhysicalFragmentChunk = [\n\t\t\t\t\t'PhysicalMaterial material;',\n\t\t\t\t\t'material.diffuseColor = diffuseColor.rgb;',\n\t\t\t\t\t'material.specularRoughness = clamp( 1.0 - glossinessFactor, 0.04, 1.0 );',\n\t\t\t\t\t'material.specularColor = specularFactor.rgb;',\n\t\t\t\t].join( '\\n' );\n\n\t\t\t\tvar fragmentShader = shader.fragmentShader\n\t\t\t\t\t.replace( 'uniform float roughness;', 'uniform vec3 specular;' )\n\t\t\t\t\t.replace( 'uniform float metalness;', 'uniform float glossiness;' )\n\t\t\t\t\t.replace( '#include <roughnessmap_pars_fragment>', specularMapParsFragmentChunk )\n\t\t\t\t\t.replace( '#include <metalnessmap_pars_fragment>', glossinessMapParsFragmentChunk )\n\t\t\t\t\t.replace( '#include <roughnessmap_fragment>', specularMapFragmentChunk )\n\t\t\t\t\t.replace( '#include <metalnessmap_fragment>', glossinessMapFragmentChunk )\n\t\t\t\t\t.replace( '#include <lights_physical_fragment>', lightPhysicalFragmentChunk );\n\n\t\t\t\tdelete uniforms.roughness;\n\t\t\t\tdelete uniforms.metalness;\n\t\t\t\tdelete uniforms.roughnessMap;\n\t\t\t\tdelete uniforms.metalnessMap;\n\n\t\t\t\tuniforms.specular = { value: new THREE.Color().setHex( 0x111111 ) };\n\t\t\t\tuniforms.glossiness = { value: 0.5 };\n\t\t\t\tuniforms.specularMap = { value: null };\n\t\t\t\tuniforms.glossinessMap = { value: null };\n\n\t\t\t\tparams.vertexShader = shader.vertexShader;\n\t\t\t\tparams.fragmentShader = fragmentShader;\n\t\t\t\tparams.uniforms = uniforms;\n\t\t\t\tparams.defines = { 'STANDARD': '' };\n\n\t\t\t\tparams.color = new THREE.Color( 1.0, 1.0, 1.0 );\n\t\t\t\tparams.opacity = 1.0;\n\n\t\t\t\tvar pending = [];\n\n\t\t\t\tif ( Array.isArray( pbrSpecularGlossiness.diffuseFactor ) ) {\n\n\t\t\t\t\tvar array = pbrSpecularGlossiness.diffuseFactor;\n\n\t\t\t\t\tparams.color.fromArray( array );\n\t\t\t\t\tparams.opacity = array[ 3 ];\n\n\t\t\t\t}\n\n\t\t\t\tif ( pbrSpecularGlossiness.diffuseTexture !== undefined ) {\n\n\t\t\t\t\tpending.push( parser.assignTexture( params, 'map', pbrSpecularGlossiness.diffuseTexture.index ) );\n\n\t\t\t\t}\n\n\t\t\t\tparams.emissive = new THREE.Color( 0.0, 0.0, 0.0 );\n\t\t\t\tparams.glossiness = pbrSpecularGlossiness.glossinessFactor !== undefined ? pbrSpecularGlossiness.glossinessFactor : 1.0;\n\t\t\t\tparams.specular = new THREE.Color( 1.0, 1.0, 1.0 );\n\n\t\t\t\tif ( Array.isArray( pbrSpecularGlossiness.specularFactor ) ) {\n\n\t\t\t\t\tparams.specular.fromArray( pbrSpecularGlossiness.specularFactor );\n\n\t\t\t\t}\n\n\t\t\t\tif ( pbrSpecularGlossiness.specularGlossinessTexture !== undefined ) {\n\n\t\t\t\t\tvar specGlossIndex = pbrSpecularGlossiness.specularGlossinessTexture.index;\n\t\t\t\t\tpending.push( parser.assignTexture( params, 'glossinessMap', specGlossIndex ) );\n\t\t\t\t\tpending.push( parser.assignTexture( params, 'specularMap', specGlossIndex ) );\n\n\t\t\t\t}\n\n\t\t\t\treturn Promise.all( pending );\n\n\t\t\t},\n\n\t\t\tcreateMaterial: function ( params ) {\n\n\t\t\t\t// setup material properties based on MeshStandardMaterial for Specular-Glossiness\n\n\t\t\t\tvar material = new THREE.ShaderMaterial( {\n\t\t\t\t\tdefines: params.defines,\n\t\t\t\t\tvertexShader: params.vertexShader,\n\t\t\t\t\tfragmentShader: params.fragmentShader,\n\t\t\t\t\tuniforms: params.uniforms,\n\t\t\t\t\tfog: true,\n\t\t\t\t\tlights: true,\n\t\t\t\t\topacity: params.opacity,\n\t\t\t\t\ttransparent: params.transparent\n\t\t\t\t} );\n\n\t\t\t\tmaterial.isGLTFSpecularGlossinessMaterial = true;\n\n\t\t\t\tmaterial.color = params.color;\n\n\t\t\t\tmaterial.map = params.map === undefined ? null : params.map;\n\n\t\t\t\tmaterial.lightMap = null;\n\t\t\t\tmaterial.lightMapIntensity = 1.0;\n\n\t\t\t\tmaterial.aoMap = params.aoMap === undefined ? null : params.aoMap;\n\t\t\t\tmaterial.aoMapIntensity = 1.0;\n\n\t\t\t\tmaterial.emissive = params.emissive;\n\t\t\t\tmaterial.emissiveIntensity = 1.0;\n\t\t\t\tmaterial.emissiveMap = params.emissiveMap === undefined ? null : params.emissiveMap;\n\n\t\t\t\tmaterial.bumpMap = params.bumpMap === undefined ? null : params.bumpMap;\n\t\t\t\tmaterial.bumpScale = 1;\n\n\t\t\t\tmaterial.normalMap = params.normalMap === undefined ? null : params.normalMap;\n\t\t\t\tif ( params.normalScale ) material.normalScale = params.normalScale;\n\n\t\t\t\tmaterial.displacementMap = null;\n\t\t\t\tmaterial.displacementScale = 1;\n\t\t\t\tmaterial.displacementBias = 0;\n\n\t\t\t\tmaterial.specularMap = params.specularMap === undefined ? null : params.specularMap;\n\t\t\t\tmaterial.specular = params.specular;\n\n\t\t\t\tmaterial.glossinessMap = params.glossinessMap === undefined ? null : params.glossinessMap;\n\t\t\t\tmaterial.glossiness = params.glossiness;\n\n\t\t\t\tmaterial.alphaMap = null;\n\n\t\t\t\tmaterial.envMap = params.envMap === undefined ? null : params.envMap;\n\t\t\t\tmaterial.envMapIntensity = 1.0;\n\n\t\t\t\tmaterial.refractionRatio = 0.98;\n\n\t\t\t\tmaterial.extensions.derivatives = true;\n\n\t\t\t\treturn material;\n\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Clones a GLTFSpecularGlossinessMaterial instance. The ShaderMaterial.copy() method can\n\t\t\t * copy only properties it knows about or inherits, and misses many properties that would\n\t\t\t * normally be defined by MeshStandardMaterial.\n\t\t\t *\n\t\t\t * This method allows GLTFSpecularGlossinessMaterials to be cloned in the process of\n\t\t\t * loading a glTF model, but cloning later (e.g. by the user) would require these changes\n\t\t\t * AND also updating `.onBeforeRender` on the parent mesh.\n\t\t\t *\n\t\t\t * @param  {THREE.ShaderMaterial} source\n\t\t\t * @return {THREE.ShaderMaterial}\n\t\t\t */\n\t\t\tcloneMaterial: function ( source ) {\n\n\t\t\t\tvar target = source.clone();\n\n\t\t\t\ttarget.isGLTFSpecularGlossinessMaterial = true;\n\n\t\t\t\tvar params = this.specularGlossinessParams;\n\n\t\t\t\tfor ( var i = 0, il = params.length; i < il; i ++ ) {\n\n\t\t\t\t\ttarget[ params[ i ] ] = source[ params[ i ] ];\n\n\t\t\t\t}\n\n\t\t\t\treturn target;\n\n\t\t\t},\n\n\t\t\t// Here's based on refreshUniformsCommon() and refreshUniformsStandard() in WebGLRenderer.\n\t\t\trefreshUniforms: function ( renderer, scene, camera, geometry, material, group ) {\n\n\t\t\t\tif ( material.isGLTFSpecularGlossinessMaterial !== true ) {\n\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tvar uniforms = material.uniforms;\n\t\t\t\tvar defines = material.defines;\n\n\t\t\t\tuniforms.opacity.value = material.opacity;\n\n\t\t\t\tuniforms.diffuse.value.copy( material.color );\n\t\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t\t\tuniforms.map.value = material.map;\n\t\t\t\tuniforms.specularMap.value = material.specularMap;\n\t\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t\t\t// uv repeat and offset setting priorities\n\t\t\t\t// 1. color map\n\t\t\t\t// 2. specular map\n\t\t\t\t// 3. normal map\n\t\t\t\t// 4. bump map\n\t\t\t\t// 5. alpha map\n\t\t\t\t// 6. emissive map\n\n\t\t\t\tvar uvScaleMap;\n\n\t\t\t\tif ( material.map ) {\n\n\t\t\t\t\tuvScaleMap = material.map;\n\n\t\t\t\t} else if ( material.specularMap ) {\n\n\t\t\t\t\tuvScaleMap = material.specularMap;\n\n\t\t\t\t} else if ( material.displacementMap ) {\n\n\t\t\t\t\tuvScaleMap = material.displacementMap;\n\n\t\t\t\t} else if ( material.normalMap ) {\n\n\t\t\t\t\tuvScaleMap = material.normalMap;\n\n\t\t\t\t} else if ( material.bumpMap ) {\n\n\t\t\t\t\tuvScaleMap = material.bumpMap;\n\n\t\t\t\t} else if ( material.glossinessMap ) {\n\n\t\t\t\t\tuvScaleMap = material.glossinessMap;\n\n\t\t\t\t} else if ( material.alphaMap ) {\n\n\t\t\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t\t\t} else if ( material.emissiveMap ) {\n\n\t\t\t\t\tuvScaleMap = material.emissiveMap;\n\n\t\t\t\t}\n\n\t\t\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\t\t\t// backwards compatibility\n\t\t\t\t\tif ( uvScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\t\t\tuvScaleMap = uvScaleMap.texture;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t\t\t}\n\n\t\t\t\tuniforms.envMap.value = material.envMap;\n\t\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\t\t\t\tuniforms.flipEnvMap.value = ( material.envMap && material.envMap.isCubeTexture ) ? - 1 : 1;\n\n\t\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t\t\tuniforms.specular.value.copy( material.specular );\n\t\t\t\tuniforms.glossiness.value = material.glossiness;\n\n\t\t\t\tuniforms.glossinessMap.value = material.glossinessMap;\n\n\t\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\t\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\t\tuniforms.normalMap.value = material.normalMap;\n\n\t\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t\t\tif ( uniforms.glossinessMap.value !== null && defines.USE_GLOSSINESSMAP === undefined ) {\n\n\t\t\t\t\tdefines.USE_GLOSSINESSMAP = '';\n\t\t\t\t\t// set USE_ROUGHNESSMAP to enable vUv\n\t\t\t\t\tdefines.USE_ROUGHNESSMAP = '';\n\n\t\t\t\t}\n\n\t\t\t\tif ( uniforms.glossinessMap.value === null && defines.USE_GLOSSINESSMAP !== undefined ) {\n\n\t\t\t\t\tdelete defines.USE_GLOSSINESSMAP;\n\t\t\t\t\tdelete defines.USE_ROUGHNESSMAP;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t/*********************************/\n\t/********** INTERPOLATION ********/\n\t/*********************************/\n\n\t// Spline Interpolation\n\t// Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#appendix-c-spline-interpolation\n\tfunction GLTFCubicSplineInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tTHREE.Interpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tGLTFCubicSplineInterpolant.prototype = Object.create( THREE.Interpolant.prototype );\n\tGLTFCubicSplineInterpolant.prototype.constructor = GLTFCubicSplineInterpolant;\n\n\tGLTFCubicSplineInterpolant.prototype.interpolate_ = function ( i1, t0, t, t1 ) {\n\n\t\tvar result = this.resultBuffer;\n\t\tvar values = this.sampleValues;\n\t\tvar stride = this.valueSize;\n\n\t\tvar stride2 = stride * 2;\n\t\tvar stride3 = stride * 3;\n\n\t\tvar td = t1 - t0;\n\n\t\tvar p = ( t - t0 ) / td;\n\t\tvar pp = p * p;\n\t\tvar ppp = pp * p;\n\n\t\tvar offset1 = i1 * stride3;\n\t\tvar offset0 = offset1 - stride3;\n\n\t\tvar s0 = 2 * ppp - 3 * pp + 1;\n\t\tvar s1 = ppp - 2 * pp + p;\n\t\tvar s2 = - 2 * ppp + 3 * pp;\n\t\tvar s3 = ppp - pp;\n\n\t\t// Layout of keyframe output values for CUBICSPLINE animations:\n\t\t//   [ inTangent_1, splineVertex_1, outTangent_1, inTangent_2, splineVertex_2, ... ]\n\t\tfor ( var i = 0; i !== stride; i ++ ) {\n\n\t\t\tvar p0 = values[ offset0 + i + stride ]; // splineVertex_k\n\t\t\tvar m0 = values[ offset0 + i + stride2 ] * td; // outTangent_k * (t_k+1 - t_k)\n\t\t\tvar p1 = values[ offset1 + i + stride ]; // splineVertex_k+1\n\t\t\tvar m1 = values[ offset1 + i ] * td; // inTangent_k+1 * (t_k+1 - t_k)\n\n\t\t\tresult[ i ] = s0 * p0 + s1 * m0 + s2 * p1 + s3 * m1;\n\n\t\t}\n\n\t\treturn result;\n\n\t};\n\n\t/*********************************/\n\t/********** INTERNALS ************/\n\t/*********************************/\n\n\t/* CONSTANTS */\n\n\tvar WEBGL_CONSTANTS = {\n\t\tFLOAT: 5126,\n\t\t//FLOAT_MAT2: 35674,\n\t\tFLOAT_MAT3: 35675,\n\t\tFLOAT_MAT4: 35676,\n\t\tFLOAT_VEC2: 35664,\n\t\tFLOAT_VEC3: 35665,\n\t\tFLOAT_VEC4: 35666,\n\t\tLINEAR: 9729,\n\t\tREPEAT: 10497,\n\t\tSAMPLER_2D: 35678,\n\t\tPOINTS: 0,\n\t\tLINES: 1,\n\t\tLINE_LOOP: 2,\n\t\tLINE_STRIP: 3,\n\t\tTRIANGLES: 4,\n\t\tTRIANGLE_STRIP: 5,\n\t\tTRIANGLE_FAN: 6,\n\t\tUNSIGNED_BYTE: 5121,\n\t\tUNSIGNED_SHORT: 5123\n\t};\n\n\tvar WEBGL_TYPE = {\n\t\t5126: Number,\n\t\t//35674: THREE.Matrix2,\n\t\t35675: THREE.Matrix3,\n\t\t35676: THREE.Matrix4,\n\t\t35664: THREE.Vector2,\n\t\t35665: THREE.Vector3,\n\t\t35666: THREE.Vector4,\n\t\t35678: THREE.Texture\n\t};\n\n\tvar WEBGL_COMPONENT_TYPES = {\n\t\t5120: Int8Array,\n\t\t5121: Uint8Array,\n\t\t5122: Int16Array,\n\t\t5123: Uint16Array,\n\t\t5125: Uint32Array,\n\t\t5126: Float32Array\n\t};\n\n\tvar WEBGL_FILTERS = {\n\t\t9728: THREE.NearestFilter,\n\t\t9729: THREE.LinearFilter,\n\t\t9984: THREE.NearestMipMapNearestFilter,\n\t\t9985: THREE.LinearMipMapNearestFilter,\n\t\t9986: THREE.NearestMipMapLinearFilter,\n\t\t9987: THREE.LinearMipMapLinearFilter\n\t};\n\n\tvar WEBGL_WRAPPINGS = {\n\t\t33071: THREE.ClampToEdgeWrapping,\n\t\t33648: THREE.MirroredRepeatWrapping,\n\t\t10497: THREE.RepeatWrapping\n\t};\n\n\tvar WEBGL_SIDES = {\n\t\t1028: THREE.BackSide, // Culling front\n\t\t1029: THREE.FrontSide // Culling back\n\t\t//1032: THREE.NoSide   // Culling front and back, what to do?\n\t};\n\n\tvar WEBGL_DEPTH_FUNCS = {\n\t\t512: THREE.NeverDepth,\n\t\t513: THREE.LessDepth,\n\t\t514: THREE.EqualDepth,\n\t\t515: THREE.LessEqualDepth,\n\t\t516: THREE.GreaterEqualDepth,\n\t\t517: THREE.NotEqualDepth,\n\t\t518: THREE.GreaterEqualDepth,\n\t\t519: THREE.AlwaysDepth\n\t};\n\n\tvar WEBGL_BLEND_EQUATIONS = {\n\t\t32774: THREE.AddEquation,\n\t\t32778: THREE.SubtractEquation,\n\t\t32779: THREE.ReverseSubtractEquation\n\t};\n\n\tvar WEBGL_BLEND_FUNCS = {\n\t\t0: THREE.ZeroFactor,\n\t\t1: THREE.OneFactor,\n\t\t768: THREE.SrcColorFactor,\n\t\t769: THREE.OneMinusSrcColorFactor,\n\t\t770: THREE.SrcAlphaFactor,\n\t\t771: THREE.OneMinusSrcAlphaFactor,\n\t\t772: THREE.DstAlphaFactor,\n\t\t773: THREE.OneMinusDstAlphaFactor,\n\t\t774: THREE.DstColorFactor,\n\t\t775: THREE.OneMinusDstColorFactor,\n\t\t776: THREE.SrcAlphaSaturateFactor\n\t\t// The followings are not supported by Three.js yet\n\t\t//32769: CONSTANT_COLOR,\n\t\t//32770: ONE_MINUS_CONSTANT_COLOR,\n\t\t//32771: CONSTANT_ALPHA,\n\t\t//32772: ONE_MINUS_CONSTANT_COLOR\n\t};\n\n\tvar WEBGL_TYPE_SIZES = {\n\t\t'SCALAR': 1,\n\t\t'VEC2': 2,\n\t\t'VEC3': 3,\n\t\t'VEC4': 4,\n\t\t'MAT2': 4,\n\t\t'MAT3': 9,\n\t\t'MAT4': 16\n\t};\n\n\tvar ATTRIBUTES = {\n\t\tPOSITION: 'position',\n\t\tNORMAL: 'normal',\n\t\tTEXCOORD_0: 'uv',\n\t\tTEXCOORD0: 'uv', // deprecated\n\t\tTEXCOORD: 'uv', // deprecated\n\t\tTEXCOORD_1: 'uv2',\n\t\tCOLOR_0: 'color',\n\t\tCOLOR0: 'color', // deprecated\n\t\tCOLOR: 'color', // deprecated\n\t\tWEIGHTS_0: 'skinWeight',\n\t\tWEIGHT: 'skinWeight', // deprecated\n\t\tJOINTS_0: 'skinIndex',\n\t\tJOINT: 'skinIndex' // deprecated\n\t};\n\n\tvar PATH_PROPERTIES = {\n\t\tscale: 'scale',\n\t\ttranslation: 'position',\n\t\trotation: 'quaternion',\n\t\tweights: 'morphTargetInfluences'\n\t};\n\n\tvar INTERPOLATION = {\n\t\tCUBICSPLINE: THREE.InterpolateSmooth, // We use custom interpolation GLTFCubicSplineInterpolation for CUBICSPLINE.\n\t\t                                      // KeyframeTrack.optimize() can't handle glTF Cubic Spline output values layout,\n\t\t                                      // using THREE.InterpolateSmooth for KeyframeTrack instantiation to prevent optimization.\n\t\t                                      // See KeyframeTrack.optimize() for the detail.\n\t\tLINEAR: THREE.InterpolateLinear,\n\t\tSTEP: THREE.InterpolateDiscrete\n\t};\n\n\tvar STATES_ENABLES = {\n\t\t2884: 'CULL_FACE',\n\t\t2929: 'DEPTH_TEST',\n\t\t3042: 'BLEND',\n\t\t3089: 'SCISSOR_TEST',\n\t\t32823: 'POLYGON_OFFSET_FILL',\n\t\t32926: 'SAMPLE_ALPHA_TO_COVERAGE'\n\t};\n\n\tvar ALPHA_MODES = {\n\t\tOPAQUE: 'OPAQUE',\n\t\tMASK: 'MASK',\n\t\tBLEND: 'BLEND'\n\t};\n\n\t/* UTILITY FUNCTIONS */\n\n\tfunction resolveURL( url, path ) {\n\n\t\t// Invalid URL\n\t\tif ( typeof url !== 'string' || url === '' ) return '';\n\n\t\t// Absolute URL http://,https://,//\n\t\tif ( /^(https?:)?\\/\\//i.test( url ) ) return url;\n\n\t\t// Data URI\n\t\tif ( /^data:.*,.*$/i.test( url ) ) return url;\n\n\t\t// Blob URL\n\t\tif ( /^blob:.*$/i.test( url ) ) return url;\n\n\t\t// Relative URL\n\t\treturn path + url;\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#default-material\n\t */\n\tfunction createDefaultMaterial() {\n\n\t\treturn new THREE.MeshStandardMaterial( {\n\t\t\tcolor: 0xFFFFFF,\n\t\t\temissive: 0x000000,\n\t\t\tmetalness: 1,\n\t\t\troughness: 1,\n\t\t\ttransparent: false,\n\t\t\tdepthTest: true,\n\t\t\tside: THREE.FrontSide\n\t\t} );\n\n\t}\n\n\tfunction addUnknownExtensionsToUserData( knownExtensions, object, objectDef ) {\n\n\t\t// Add unknown glTF extensions to an object's userData.\n\n\t\tfor ( var name in objectDef.extensions ) {\n\n\t\t\tif ( knownExtensions[ name ] === undefined ) {\n\n\t\t\t\tobject.userData.gltfExtensions = object.userData.gltfExtensions || {};\n\t\t\t\tobject.userData.gltfExtensions[ name ] = objectDef.extensions[ name ];\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * @param {THREE.Object3D|THREE.Material|THREE.BufferGeometry} object\n\t * @param {GLTF.definition} def\n\t */\n\tfunction assignExtrasToUserData( object, gltfDef ) {\n\n\t\tif ( gltfDef.extras !== undefined ) {\n\n\t\t\tif ( typeof gltfDef.extras === 'object' ) {\n\n\t\t\t\tobject.userData = gltfDef.extras;\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Ignoring primitive type .extras, ' + gltfDef.extras );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#morph-targets\n\t *\n\t * @param {THREE.BufferGeometry} geometry\n\t * @param {Array<GLTF.Target>} targets\n\t * @param {Array<THREE.BufferAttribute>} accessors\n\t */\n\tfunction addMorphTargets( geometry, targets, accessors ) {\n\n\t\tvar hasMorphPosition = false;\n\t\tvar hasMorphNormal = false;\n\n\t\tfor ( var i = 0, il = targets.length; i < il; i ++ ) {\n\n\t\t\tvar target = targets[ i ];\n\n\t\t\tif ( target.POSITION !== undefined ) hasMorphPosition = true;\n\t\t\tif ( target.NORMAL !== undefined ) hasMorphNormal = true;\n\n\t\t\tif ( hasMorphPosition && hasMorphNormal ) break;\n\n\t\t}\n\n\t\tif ( ! hasMorphPosition && ! hasMorphNormal ) return;\n\n\t\tvar morphPositions = [];\n\t\tvar morphNormals = [];\n\n\t\tfor ( var i = 0, il = targets.length; i < il; i ++ ) {\n\n\t\t\tvar target = targets[ i ];\n\t\t\tvar attributeName = 'morphTarget' + i;\n\n\t\t\tif ( hasMorphPosition ) {\n\n\t\t\t\t// Three.js morph position is absolute value. The formula is\n\t\t\t\t//   basePosition\n\t\t\t\t//     + weight0 * ( morphPosition0 - basePosition )\n\t\t\t\t//     + weight1 * ( morphPosition1 - basePosition )\n\t\t\t\t//     ...\n\t\t\t\t// while the glTF one is relative\n\t\t\t\t//   basePosition\n\t\t\t\t//     + weight0 * glTFmorphPosition0\n\t\t\t\t//     + weight1 * glTFmorphPosition1\n\t\t\t\t//     ...\n\t\t\t\t// then we need to convert from relative to absolute here.\n\n\t\t\t\tif ( target.POSITION !== undefined ) {\n\n\t\t\t\t\t// Cloning not to pollute original accessor\n\t\t\t\t\tvar positionAttribute = cloneBufferAttribute( accessors[ target.POSITION ] );\n\t\t\t\t\tpositionAttribute.name = attributeName;\n\n\t\t\t\t\tvar position = geometry.attributes.position;\n\n\t\t\t\t\tfor ( var j = 0, jl = positionAttribute.count; j < jl; j ++ ) {\n\n\t\t\t\t\t\tpositionAttribute.setXYZ(\n\t\t\t\t\t\t\tj,\n\t\t\t\t\t\t\tpositionAttribute.getX( j ) + position.getX( j ),\n\t\t\t\t\t\t\tpositionAttribute.getY( j ) + position.getY( j ),\n\t\t\t\t\t\t\tpositionAttribute.getZ( j ) + position.getZ( j )\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tpositionAttribute = geometry.attributes.position;\n\n\t\t\t\t}\n\n\t\t\t\tmorphPositions.push( positionAttribute );\n\n\t\t\t}\n\n\t\t\tif ( hasMorphNormal ) {\n\n\t\t\t\t// see target.POSITION's comment\n\n\t\t\t\tvar normalAttribute;\n\n\t\t\t\tif ( target.NORMAL !== undefined ) {\n\n\t\t\t\t\tvar normalAttribute = cloneBufferAttribute( accessors[ target.NORMAL ] );\n\t\t\t\t\tnormalAttribute.name = attributeName;\n\n\t\t\t\t\tvar normal = geometry.attributes.normal;\n\n\t\t\t\t\tfor ( var j = 0, jl = normalAttribute.count; j < jl; j ++ ) {\n\n\t\t\t\t\t\tnormalAttribute.setXYZ(\n\t\t\t\t\t\t\tj,\n\t\t\t\t\t\t\tnormalAttribute.getX( j ) + normal.getX( j ),\n\t\t\t\t\t\t\tnormalAttribute.getY( j ) + normal.getY( j ),\n\t\t\t\t\t\t\tnormalAttribute.getZ( j ) + normal.getZ( j )\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tnormalAttribute = geometry.attributes.normal;\n\n\t\t\t\t}\n\n\t\t\t\tmorphNormals.push( normalAttribute );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( hasMorphPosition ) geometry.morphAttributes.position = morphPositions;\n\t\tif ( hasMorphNormal ) geometry.morphAttributes.normal = morphNormals;\n\n\t}\n\n\t/**\n\t * @param {THREE.Mesh} mesh\n\t * @param {GLTF.Mesh} meshDef\n\t */\n\tfunction updateMorphTargets( mesh, meshDef ) {\n\n\t\tmesh.updateMorphTargets();\n\n\t\tif ( meshDef.weights !== undefined ) {\n\n\t\t\tfor ( var i = 0, il = meshDef.weights.length; i < il; i ++ ) {\n\n\t\t\t\tmesh.morphTargetInfluences[ i ] = meshDef.weights[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// .extras has user-defined data, so check that .extras.targetNames is an array.\n\t\tif ( meshDef.extras && Array.isArray( meshDef.extras.targetNames ) ) {\n\n\t\t\tvar targetNames = meshDef.extras.targetNames;\n\n\t\t\tif ( mesh.morphTargetInfluences.length === targetNames.length ) {\n\n\t\t\t\tmesh.morphTargetDictionary = {};\n\n\t\t\t\tfor ( var i = 0, il = targetNames.length; i < il; i ++ ) {\n\n\t\t\t\t\tmesh.morphTargetDictionary[ targetNames[ i ] ] = i;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction isPrimitiveEqual( a, b ) {\n\n\t\tif ( a.indices !== b.indices ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn isObjectEqual( a.attributes, b.attributes );\n\n\t}\n\n\tfunction isObjectEqual( a, b ) {\n\n\t\tif ( Object.keys( a ).length !== Object.keys( b ).length ) return false;\n\n\t\tfor ( var key in a ) {\n\n\t\t\tif ( a[ key ] !== b[ key ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfunction isArrayEqual( a, b ) {\n\n\t\tif ( a.length !== b.length ) return false;\n\n\t\tfor ( var i = 0, il = a.length; i < il; i ++ ) {\n\n\t\t\tif ( a[ i ] !== b[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfunction getCachedGeometry( cache, newPrimitive ) {\n\n\t\tfor ( var i = 0, il = cache.length; i < il; i ++ ) {\n\n\t\t\tvar cached = cache[ i ];\n\n\t\t\tif ( isPrimitiveEqual( cached.primitive, newPrimitive ) ) return cached.promise;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\tfunction getCachedCombinedGeometry( cache, geometries ) {\n\n\t\tfor ( var i = 0, il = cache.length; i < il; i ++ ) {\n\n\t\t\tvar cached = cache[ i ];\n\n\t\t\tif ( isArrayEqual( geometries, cached.baseGeometries ) ) return cached.geometry;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\tfunction getCachedMultiPassGeometry( cache, geometry, primitives ) {\n\n\t\tfor ( var i = 0, il = cache.length; i < il; i ++ ) {\n\n\t\t\tvar cached = cache[ i ];\n\n\t\t\tif ( geometry === cached.baseGeometry && isArrayEqual( primitives, cached.primitives ) ) return cached.geometry;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\tfunction cloneBufferAttribute( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\tvar count = attribute.count;\n\t\t\tvar itemSize = attribute.itemSize;\n\t\t\tvar array = attribute.array.slice( 0, count * itemSize );\n\n\t\t\tfor ( var i = 0; i < count; ++ i ) {\n\n\t\t\t\tarray[ i ] = attribute.getX( i );\n\t\t\t\tif ( itemSize >= 2 ) array[ i + 1 ] = attribute.getY( i );\n\t\t\t\tif ( itemSize >= 3 ) array[ i + 2 ] = attribute.getZ( i );\n\t\t\t\tif ( itemSize >= 4 ) array[ i + 3 ] = attribute.getW( i );\n\n\t\t\t}\n\n\t\t\treturn new THREE.BufferAttribute( array, itemSize, attribute.normalized );\n\n\t\t}\n\n\t\treturn attribute.clone();\n\n\t}\n\n\t/**\n\t * Checks if we can build a single Mesh with MultiMaterial from multiple primitives.\n\t * Returns true if all primitives use the same attributes/morphAttributes/mode\n\t * and also have index. Otherwise returns false.\n\t *\n\t * @param {Array<GLTF.Primitive>} primitives\n\t * @return {Boolean}\n\t */\n\tfunction isMultiPassGeometry( primitives ) {\n\n\t\tif ( primitives.length < 2 ) return false;\n\n\t\tvar primitive0 = primitives[ 0 ];\n\t\tvar targets0 = primitive0.targets || [];\n\n\t\tif ( primitive0.indices === undefined ) return false;\n\n\t\tfor ( var i = 1, il = primitives.length; i < il; i ++ ) {\n\n\t\t\tvar primitive = primitives[ i ];\n\n\t\t\tif ( primitive0.mode !== primitive.mode ) return false;\n\t\t\tif ( primitive.indices === undefined ) return false;\n\t\t\tif ( ! isObjectEqual( primitive0.attributes, primitive.attributes ) ) return false;\n\n\t\t\tvar targets = primitive.targets || [];\n\n\t\t\tif ( targets0.length !== targets.length ) return false;\n\n\t\t\tfor ( var j = 0, jl = targets0.length; j < jl; j ++ ) {\n\n\t\t\t\tif ( ! isObjectEqual( targets0[ j ], targets[ j ] ) ) return false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\t/* GLTF PARSER */\n\n\tfunction GLTFParser( json, extensions, options ) {\n\n\t\tthis.json = json || {};\n\t\tthis.extensions = extensions || {};\n\t\tthis.options = options || {};\n\n\t\t// loader object cache\n\t\tthis.cache = new GLTFRegistry();\n\n\t\t// BufferGeometry caching\n\t\tthis.primitiveCache = [];\n\t\tthis.multiplePrimitivesCache = [];\n\t\tthis.multiPassGeometryCache = [];\n\n\t\tthis.textureLoader = new THREE.TextureLoader( this.options.manager );\n\t\tthis.textureLoader.setCrossOrigin( this.options.crossOrigin );\n\n\t\tthis.fileLoader = new THREE.FileLoader( this.options.manager );\n\t\tthis.fileLoader.setResponseType( 'arraybuffer' );\n\n\t}\n\n\tGLTFParser.prototype.parse = function ( onLoad, onError ) {\n\n\t\tvar json = this.json;\n\n\t\t// Clear the loader cache\n\t\tthis.cache.removeAll();\n\n\t\t// Mark the special nodes/meshes in json for efficient parse\n\t\tthis.markDefs();\n\n\t\t// Fire the callback on complete\n\t\tthis.getMultiDependencies( [\n\n\t\t\t'scene',\n\t\t\t'animation',\n\t\t\t'camera'\n\n\t\t] ).then( function ( dependencies ) {\n\n\t\t\tvar scenes = dependencies.scenes || [];\n\t\t\tvar scene = scenes[ json.scene || 0 ];\n\t\t\tvar animations = dependencies.animations || [];\n\t\t\tvar cameras = dependencies.cameras || [];\n\n\t\t\tonLoad( scene, scenes, cameras, animations, json );\n\n\t\t} ).catch( onError );\n\n\t};\n\n\t/**\n\t * Marks the special nodes/meshes in json for efficient parse.\n\t */\n\tGLTFParser.prototype.markDefs = function () {\n\n\t\tvar nodeDefs = this.json.nodes || [];\n\t\tvar skinDefs = this.json.skins || [];\n\t\tvar meshDefs = this.json.meshes || [];\n\n\t\tvar meshReferences = {};\n\t\tvar meshUses = {};\n\n\t\t// Nothing in the node definition indicates whether it is a Bone or an\n\t\t// Object3D. Use the skins' joint references to mark bones.\n\t\tfor ( var skinIndex = 0, skinLength = skinDefs.length; skinIndex < skinLength; skinIndex ++ ) {\n\n\t\t\tvar joints = skinDefs[ skinIndex ].joints;\n\n\t\t\tfor ( var i = 0, il = joints.length; i < il; i ++ ) {\n\n\t\t\t\tnodeDefs[ joints[ i ] ].isBone = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Meshes can (and should) be reused by multiple nodes in a glTF asset. To\n\t\t// avoid having more than one THREE.Mesh with the same name, count\n\t\t// references and rename instances below.\n\t\t//\n\t\t// Example: CesiumMilkTruck sample model reuses \"Wheel\" meshes.\n\t\tfor ( var nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex ++ ) {\n\n\t\t\tvar nodeDef = nodeDefs[ nodeIndex ];\n\n\t\t\tif ( nodeDef.mesh !== undefined ) {\n\n\t\t\t\tif ( meshReferences[ nodeDef.mesh ] === undefined ) {\n\n\t\t\t\t\tmeshReferences[ nodeDef.mesh ] = meshUses[ nodeDef.mesh ] = 0;\n\n\t\t\t\t}\n\n\t\t\t\tmeshReferences[ nodeDef.mesh ] ++;\n\n\t\t\t\t// Nothing in the mesh definition indicates whether it is\n\t\t\t\t// a SkinnedMesh or Mesh. Use the node's mesh reference\n\t\t\t\t// to mark SkinnedMesh if node has skin.\n\t\t\t\tif ( nodeDef.skin !== undefined ) {\n\n\t\t\t\t\tmeshDefs[ nodeDef.mesh ].isSkinnedMesh = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.json.meshReferences = meshReferences;\n\t\tthis.json.meshUses = meshUses;\n\n\t};\n\n\t/**\n\t * Requests the specified dependency asynchronously, with caching.\n\t * @param {string} type\n\t * @param {number} index\n\t * @return {Promise<Object>}\n\t */\n\tGLTFParser.prototype.getDependency = function ( type, index ) {\n\n\t\tvar cacheKey = type + ':' + index;\n\t\tvar dependency = this.cache.get( cacheKey );\n\n\t\tif ( ! dependency ) {\n\n\t\t\tswitch ( type ) {\n\n\t\t\t\tcase 'scene':\n\t\t\t\t\tdependency = this.loadScene( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'node':\n\t\t\t\t\tdependency = this.loadNode( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'mesh':\n\t\t\t\t\tdependency = this.loadMesh( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'accessor':\n\t\t\t\t\tdependency = this.loadAccessor( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bufferView':\n\t\t\t\t\tdependency = this.loadBufferView( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'buffer':\n\t\t\t\t\tdependency = this.loadBuffer( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'material':\n\t\t\t\t\tdependency = this.loadMaterial( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'texture':\n\t\t\t\t\tdependency = this.loadTexture( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'skin':\n\t\t\t\t\tdependency = this.loadSkin( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'animation':\n\t\t\t\t\tdependency = this.loadAnimation( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'camera':\n\t\t\t\t\tdependency = this.loadCamera( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error( 'Unknown type: ' + type );\n\n\t\t\t}\n\n\t\t\tthis.cache.add( cacheKey, dependency );\n\n\t\t}\n\n\t\treturn dependency;\n\n\t};\n\n\t/**\n\t * Requests all dependencies of the specified type asynchronously, with caching.\n\t * @param {string} type\n\t * @return {Promise<Array<Object>>}\n\t */\n\tGLTFParser.prototype.getDependencies = function ( type ) {\n\n\t\tvar dependencies = this.cache.get( type );\n\n\t\tif ( ! dependencies ) {\n\n\t\t\tvar parser = this;\n\t\t\tvar defs = this.json[ type + ( type === 'mesh' ? 'es' : 's' ) ] || [];\n\n\t\t\tdependencies = Promise.all( defs.map( function ( def, index ) {\n\n\t\t\t\treturn parser.getDependency( type, index );\n\n\t\t\t} ) );\n\n\t\t\tthis.cache.add( type, dependencies );\n\n\t\t}\n\n\t\treturn dependencies;\n\n\t};\n\n\t/**\n\t * Requests all multiple dependencies of the specified types asynchronously, with caching.\n\t * @param {Array<string>} types\n\t * @return {Promise<Object<Array<Object>>>}\n\t */\n\tGLTFParser.prototype.getMultiDependencies = function ( types ) {\n\n\t\tvar results = {};\n\t\tvar pendings = [];\n\n\t\tfor ( var i = 0, il = types.length; i < il; i ++ ) {\n\n\t\t\tvar type = types[ i ];\n\t\t\tvar value = this.getDependencies( type );\n\n\t\t\tvalue = value.then( function ( key, value ) {\n\n\t\t\t\tresults[ key ] = value;\n\n\t\t\t}.bind( this, type + ( type === 'mesh' ? 'es' : 's' ) ) );\n\n\t\t\tpendings.push( value );\n\n\t\t}\n\n\t\treturn Promise.all( pendings ).then( function () {\n\n\t\t\treturn results;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n\t * @param {number} bufferIndex\n\t * @return {Promise<ArrayBuffer>}\n\t */\n\tGLTFParser.prototype.loadBuffer = function ( bufferIndex ) {\n\n\t\tvar bufferDef = this.json.buffers[ bufferIndex ];\n\t\tvar loader = this.fileLoader;\n\n\t\tif ( bufferDef.type && bufferDef.type !== 'arraybuffer' ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: ' + bufferDef.type + ' buffer type is not supported.' );\n\n\t\t}\n\n\t\t// If present, GLB container is required to be the first buffer.\n\t\tif ( bufferDef.uri === undefined && bufferIndex === 0 ) {\n\n\t\t\treturn Promise.resolve( this.extensions[ EXTENSIONS.KHR_BINARY_GLTF ].body );\n\n\t\t}\n\n\t\tvar options = this.options;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tloader.load( resolveURL( bufferDef.uri, options.path ), resolve, undefined, function () {\n\n\t\t\t\treject( new Error( 'THREE.GLTFLoader: Failed to load buffer \"' + bufferDef.uri + '\".' ) );\n\n\t\t\t} );\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n\t * @param {number} bufferViewIndex\n\t * @return {Promise<ArrayBuffer>}\n\t */\n\tGLTFParser.prototype.loadBufferView = function ( bufferViewIndex ) {\n\n\t\tvar bufferViewDef = this.json.bufferViews[ bufferViewIndex ];\n\n\t\treturn this.getDependency( 'buffer', bufferViewDef.buffer ).then( function ( buffer ) {\n\n\t\t\tvar byteLength = bufferViewDef.byteLength || 0;\n\t\t\tvar byteOffset = bufferViewDef.byteOffset || 0;\n\t\t\treturn buffer.slice( byteOffset, byteOffset + byteLength );\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#accessors\n\t * @param {number} accessorIndex\n\t * @return {Promise<THREE.BufferAttribute|THREE.InterleavedBufferAttribute>}\n\t */\n\tGLTFParser.prototype.loadAccessor = function ( accessorIndex ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\n\t\tvar accessorDef = this.json.accessors[ accessorIndex ];\n\n\t\tif ( accessorDef.bufferView === undefined && accessorDef.sparse === undefined ) {\n\n\t\t\t// Ignore empty accessors, which may be used to declare runtime\n\t\t\t// information about attributes coming from another source (e.g. Draco\n\t\t\t// compression extension).\n\t\t\treturn null;\n\n\t\t}\n\n\t\tvar pendingBufferViews = [];\n\n\t\tif ( accessorDef.bufferView !== undefined ) {\n\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.bufferView ) );\n\n\t\t} else {\n\n\t\t\tpendingBufferViews.push( null );\n\n\t\t}\n\n\t\tif ( accessorDef.sparse !== undefined ) {\n\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.indices.bufferView ) );\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.values.bufferView ) );\n\n\t\t}\n\n\t\treturn Promise.all( pendingBufferViews ).then( function ( bufferViews ) {\n\n\t\t\tvar bufferView = bufferViews[ 0 ];\n\n\t\t\tvar itemSize = WEBGL_TYPE_SIZES[ accessorDef.type ];\n\t\t\tvar TypedArray = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ];\n\n\t\t\t// For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12.\n\t\t\tvar elementBytes = TypedArray.BYTES_PER_ELEMENT;\n\t\t\tvar itemBytes = elementBytes * itemSize;\n\t\t\tvar byteOffset = accessorDef.byteOffset || 0;\n\t\t\tvar byteStride = json.bufferViews[ accessorDef.bufferView ].byteStride;\n\t\t\tvar normalized = accessorDef.normalized === true;\n\t\t\tvar array, bufferAttribute;\n\n\t\t\t// The buffer is not interleaved if the stride is the item size in bytes.\n\t\t\tif ( byteStride && byteStride !== itemBytes ) {\n\n\t\t\t\tvar ibCacheKey = 'InterleavedBuffer:' + accessorDef.bufferView + ':' + accessorDef.componentType;\n\t\t\t\tvar ib = parser.cache.get( ibCacheKey );\n\n\t\t\t\tif ( ! ib ) {\n\n\t\t\t\t\t// Use the full buffer if it's interleaved.\n\t\t\t\t\tarray = new TypedArray( bufferView );\n\n\t\t\t\t\t// Integer parameters to IB/IBA are in array elements, not bytes.\n\t\t\t\t\tib = new THREE.InterleavedBuffer( array, byteStride / elementBytes );\n\n\t\t\t\t\tparser.cache.add( ibCacheKey, ib );\n\n\t\t\t\t}\n\n\t\t\t\tbufferAttribute = new THREE.InterleavedBufferAttribute( ib, itemSize, byteOffset / elementBytes, normalized );\n\n\t\t\t} else {\n\n\t\t\t\tif ( bufferView === null ) {\n\n\t\t\t\t\tarray = new TypedArray( accessorDef.count * itemSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tarray = new TypedArray( bufferView, byteOffset, accessorDef.count * itemSize );\n\n\t\t\t\t}\n\n\t\t\t\tbufferAttribute = new THREE.BufferAttribute( array, itemSize, normalized );\n\n\t\t\t}\n\n\t\t\t// https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#sparse-accessors\n\t\t\tif ( accessorDef.sparse !== undefined ) {\n\n\t\t\t\tvar itemSizeIndices = WEBGL_TYPE_SIZES.SCALAR;\n\t\t\t\tvar TypedArrayIndices = WEBGL_COMPONENT_TYPES[ accessorDef.sparse.indices.componentType ];\n\n\t\t\t\tvar byteOffsetIndices = accessorDef.sparse.indices.byteOffset || 0;\n\t\t\t\tvar byteOffsetValues = accessorDef.sparse.values.byteOffset || 0;\n\n\t\t\t\tvar sparseIndices = new TypedArrayIndices( bufferViews[ 1 ], byteOffsetIndices, accessorDef.sparse.count * itemSizeIndices );\n\t\t\t\tvar sparseValues = new TypedArray( bufferViews[ 2 ], byteOffsetValues, accessorDef.sparse.count * itemSize );\n\n\t\t\t\tif ( bufferView !== null ) {\n\n\t\t\t\t\t// Avoid modifying the original ArrayBuffer, if the bufferView wasn't initialized with zeroes.\n\t\t\t\t\tbufferAttribute.setArray( bufferAttribute.array.slice() );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var i = 0, il = sparseIndices.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar index = sparseIndices[ i ];\n\n\t\t\t\t\tbufferAttribute.setX( index, sparseValues[ i * itemSize ] );\n\t\t\t\t\tif ( itemSize >= 2 ) bufferAttribute.setY( index, sparseValues[ i * itemSize + 1 ] );\n\t\t\t\t\tif ( itemSize >= 3 ) bufferAttribute.setZ( index, sparseValues[ i * itemSize + 2 ] );\n\t\t\t\t\tif ( itemSize >= 4 ) bufferAttribute.setW( index, sparseValues[ i * itemSize + 3 ] );\n\t\t\t\t\tif ( itemSize >= 5 ) throw new Error( 'THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn bufferAttribute;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#textures\n\t * @param {number} textureIndex\n\t * @return {Promise<THREE.Texture>}\n\t */\n\tGLTFParser.prototype.loadTexture = function ( textureIndex ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\t\tvar options = this.options;\n\t\tvar textureLoader = this.textureLoader;\n\n\t\tvar URL = window.URL || window.webkitURL;\n\n\t\tvar textureDef = json.textures[ textureIndex ];\n\n\t\tvar textureExtensions = textureDef.extensions || {};\n\n\t\tvar source;\n\n\t\tif ( textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ] ) {\n\n\t\t\tsource = json.images[ textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ].source ];\n\n\t\t} else {\n\n\t\t\tsource = json.images[ textureDef.source ];\n\n\t\t}\n\n\t\tvar sourceURI = source.uri;\n\t\tvar isObjectURL = false;\n\n\t\tif ( source.bufferView !== undefined ) {\n\n\t\t\t// Load binary image data from bufferView, if provided.\n\n\t\t\tsourceURI = parser.getDependency( 'bufferView', source.bufferView ).then( function ( bufferView ) {\n\n\t\t\t\tisObjectURL = true;\n\t\t\t\tvar blob = new Blob( [ bufferView ], { type: source.mimeType } );\n\t\t\t\tsourceURI = URL.createObjectURL( blob );\n\t\t\t\treturn sourceURI;\n\n\t\t\t} );\n\n\t\t}\n\n\t\treturn Promise.resolve( sourceURI ).then( function ( sourceURI ) {\n\n\t\t\t// Load Texture resource.\n\n\t\t\tvar loader = THREE.Loader.Handlers.get( sourceURI );\n\n\t\t\tif ( ! loader ) {\n\n\t\t\t\tloader = textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ]\n\t\t\t\t\t? parser.extensions[ EXTENSIONS.MSFT_TEXTURE_DDS ].ddsLoader\n\t\t\t\t\t: textureLoader;\n\n\t\t\t}\n\n\t\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\t\tloader.load( resolveURL( sourceURI, options.path ), resolve, undefined, reject );\n\n\t\t\t} );\n\n\t\t} ).then( function ( texture ) {\n\n\t\t\t// Clean up resources and configure Texture.\n\n\t\t\tif ( isObjectURL === true ) {\n\n\t\t\t\tURL.revokeObjectURL( sourceURI );\n\n\t\t\t}\n\n\t\t\ttexture.flipY = false;\n\n\t\t\tif ( textureDef.name !== undefined ) texture.name = textureDef.name;\n\n\t\t\tvar samplers = json.samplers || {};\n\t\t\tvar sampler = samplers[ textureDef.sampler ] || {};\n\n\t\t\ttexture.magFilter = WEBGL_FILTERS[ sampler.magFilter ] || THREE.LinearFilter;\n\t\t\ttexture.minFilter = WEBGL_FILTERS[ sampler.minFilter ] || THREE.LinearMipMapLinearFilter;\n\t\t\ttexture.wrapS = WEBGL_WRAPPINGS[ sampler.wrapS ] || THREE.RepeatWrapping;\n\t\t\ttexture.wrapT = WEBGL_WRAPPINGS[ sampler.wrapT ] || THREE.RepeatWrapping;\n\n\t\t\treturn texture;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Asynchronously assigns a texture to the given material parameters.\n\t * @param {Object} materialParams\n\t * @param {string} textureName\n\t * @param {number} textureIndex\n\t * @return {Promise}\n\t */\n\tGLTFParser.prototype.assignTexture = function ( materialParams, textureName, textureIndex ) {\n\n\t\treturn this.getDependency( 'texture', textureIndex ).then( function ( texture ) {\n\n\t\t\tmaterialParams[ textureName ] = texture;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials\n\t * @param {number} materialIndex\n\t * @return {Promise<THREE.Material>}\n\t */\n\tGLTFParser.prototype.loadMaterial = function ( materialIndex ) {\n\n\t\tvar parser = this;\n\t\tvar json = this.json;\n\t\tvar extensions = this.extensions;\n\t\tvar materialDef = this.json.materials[ materialIndex ];\n\n\t\tvar materialType;\n\t\tvar materialParams = {};\n\t\tvar materialExtensions = materialDef.extensions || {};\n\n\t\tvar pending = [];\n\n\t\tif ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ] ) {\n\n\t\t\tvar sgExtension = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ];\n\t\t\tmaterialType = sgExtension.getMaterialType( materialDef );\n\t\t\tpending.push( sgExtension.extendParams( materialParams, materialDef, parser ) );\n\n\t\t} else if ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ] ) {\n\n\t\t\tvar kmuExtension = extensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ];\n\t\t\tmaterialType = kmuExtension.getMaterialType( materialDef );\n\t\t\tpending.push( kmuExtension.extendParams( materialParams, materialDef, parser ) );\n\n\t\t} else {\n\n\t\t\t// Specification:\n\t\t\t// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#metallic-roughness-material\n\n\t\t\tmaterialType = THREE.MeshStandardMaterial;\n\n\t\t\tvar metallicRoughness = materialDef.pbrMetallicRoughness || {};\n\n\t\t\tmaterialParams.color = new THREE.Color( 1.0, 1.0, 1.0 );\n\t\t\tmaterialParams.opacity = 1.0;\n\n\t\t\tif ( Array.isArray( metallicRoughness.baseColorFactor ) ) {\n\n\t\t\t\tvar array = metallicRoughness.baseColorFactor;\n\n\t\t\t\tmaterialParams.color.fromArray( array );\n\t\t\t\tmaterialParams.opacity = array[ 3 ];\n\n\t\t\t}\n\n\t\t\tif ( metallicRoughness.baseColorTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture.index ) );\n\n\t\t\t}\n\n\t\t\tmaterialParams.metalness = metallicRoughness.metallicFactor !== undefined ? metallicRoughness.metallicFactor : 1.0;\n\t\t\tmaterialParams.roughness = metallicRoughness.roughnessFactor !== undefined ? metallicRoughness.roughnessFactor : 1.0;\n\n\t\t\tif ( metallicRoughness.metallicRoughnessTexture !== undefined ) {\n\n\t\t\t\tvar textureIndex = metallicRoughness.metallicRoughnessTexture.index;\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'metalnessMap', textureIndex ) );\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'roughnessMap', textureIndex ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.doubleSided === true ) {\n\n\t\t\tmaterialParams.side = THREE.DoubleSide;\n\n\t\t}\n\n\t\tvar alphaMode = materialDef.alphaMode || ALPHA_MODES.OPAQUE;\n\n\t\tif ( alphaMode === ALPHA_MODES.BLEND ) {\n\n\t\t\tmaterialParams.transparent = true;\n\n\t\t} else {\n\n\t\t\tmaterialParams.transparent = false;\n\n\t\t\tif ( alphaMode === ALPHA_MODES.MASK ) {\n\n\t\t\t\tmaterialParams.alphaTest = materialDef.alphaCutoff !== undefined ? materialDef.alphaCutoff : 0.5;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.normalTexture !== undefined && materialType !== THREE.MeshBasicMaterial ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'normalMap', materialDef.normalTexture.index ) );\n\n\t\t\tmaterialParams.normalScale = new THREE.Vector2( 1, 1 );\n\n\t\t\tif ( materialDef.normalTexture.scale !== undefined ) {\n\n\t\t\t\tmaterialParams.normalScale.set( materialDef.normalTexture.scale, materialDef.normalTexture.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.occlusionTexture !== undefined && materialType !== THREE.MeshBasicMaterial ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'aoMap', materialDef.occlusionTexture.index ) );\n\n\t\t\tif ( materialDef.occlusionTexture.strength !== undefined ) {\n\n\t\t\t\tmaterialParams.aoMapIntensity = materialDef.occlusionTexture.strength;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.emissiveFactor !== undefined && materialType !== THREE.MeshBasicMaterial ) {\n\n\t\t\tmaterialParams.emissive = new THREE.Color().fromArray( materialDef.emissiveFactor );\n\n\t\t}\n\n\t\tif ( materialDef.emissiveTexture !== undefined && materialType !== THREE.MeshBasicMaterial ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'emissiveMap', materialDef.emissiveTexture.index ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending ).then( function () {\n\n\t\t\tvar material;\n\n\t\t\tif ( materialType === THREE.ShaderMaterial ) {\n\n\t\t\t\tmaterial = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ].createMaterial( materialParams );\n\n\t\t\t} else {\n\n\t\t\t\tmaterial = new materialType( materialParams );\n\n\t\t\t}\n\n\t\t\tif ( materialDef.name !== undefined ) material.name = materialDef.name;\n\n\t\t\t// Normal map textures use OpenGL conventions:\n\t\t\t// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#materialnormaltexture\n\t\t\tif ( material.normalScale ) {\n\n\t\t\t\tmaterial.normalScale.y = - material.normalScale.y;\n\n\t\t\t}\n\n\t\t\t// baseColorTexture, emissiveTexture, and specularGlossinessTexture use sRGB encoding.\n\t\t\tif ( material.map ) material.map.encoding = THREE.sRGBEncoding;\n\t\t\tif ( material.emissiveMap ) material.emissiveMap.encoding = THREE.sRGBEncoding;\n\t\t\tif ( material.specularMap ) material.specularMap.encoding = THREE.sRGBEncoding;\n\n\t\t\tassignExtrasToUserData( material, materialDef );\n\n\t\t\tif ( materialDef.extensions ) addUnknownExtensionsToUserData( extensions, material, materialDef );\n\n\t\t\treturn material;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * @param  {THREE.BufferGeometry} geometry\n\t * @param  {GLTF.Primitive} primitiveDef\n\t * @param  {Array<THREE.BufferAttribute>} accessors\n\t */\n\tfunction addPrimitiveAttributes( geometry, primitiveDef, accessors ) {\n\n\t\tvar attributes = primitiveDef.attributes;\n\n\t\tfor ( var gltfAttributeName in attributes ) {\n\n\t\t\tvar threeAttributeName = ATTRIBUTES[ gltfAttributeName ];\n\t\t\tvar bufferAttribute = accessors[ attributes[ gltfAttributeName ] ];\n\n\t\t\t// Skip attributes already provided by e.g. Draco extension.\n\t\t\tif ( ! threeAttributeName ) continue;\n\t\t\tif ( threeAttributeName in geometry.attributes ) continue;\n\n\t\t\tgeometry.addAttribute( threeAttributeName, bufferAttribute );\n\n\t\t}\n\n\t\tif ( primitiveDef.indices !== undefined && ! geometry.index ) {\n\n\t\t\tgeometry.setIndex( accessors[ primitiveDef.indices ] );\n\n\t\t}\n\n\t\tif ( primitiveDef.targets !== undefined ) {\n\n\t\t\taddMorphTargets( geometry, primitiveDef.targets, accessors );\n\n\t\t}\n\n\t\tassignExtrasToUserData( geometry, primitiveDef );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry\n\t *\n\t * Creates BufferGeometries from primitives.\n\t * If we can build a single BufferGeometry with .groups from multiple primitives, returns one BufferGeometry.\n\t * Otherwise, returns BufferGeometries without .groups as many as primitives.\n\t *\n\t * @param {Array<Object>} primitives\n\t * @return {Promise<Array<THREE.BufferGeometry>>}\n\t */\n\tGLTFParser.prototype.loadGeometries = function ( primitives ) {\n\n\t\tvar parser = this;\n\t\tvar extensions = this.extensions;\n\t\tvar cache = this.primitiveCache;\n\n\t\tvar isMultiPass = isMultiPassGeometry( primitives );\n\t\tvar originalPrimitives;\n\n\t\tif ( isMultiPass ) {\n\n\t\t\toriginalPrimitives = primitives; // save original primitives and use later\n\n\t\t\t// We build a single BufferGeometry with .groups from multiple primitives\n\t\t\t// because all primitives share the same attributes/morph/mode and have indices.\n\n\t\t\tprimitives = [ primitives[ 0 ] ];\n\n\t\t\t// Sets .groups and combined indices to a geometry later in this method.\n\n\t\t}\n\n\t\treturn this.getDependencies( 'accessor' ).then( function ( accessors ) {\n\n\t\t\tvar pending = [];\n\n\t\t\tfor ( var i = 0, il = primitives.length; i < il; i ++ ) {\n\n\t\t\t\tvar primitive = primitives[ i ];\n\n\t\t\t\t// See if we've already created this geometry\n\t\t\t\tvar cached = getCachedGeometry( cache, primitive );\n\n\t\t\t\tif ( cached ) {\n\n\t\t\t\t\t// Use the cached geometry if it exists\n\t\t\t\t\tpending.push( cached );\n\n\t\t\t\t} else if ( primitive.extensions && primitive.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ] ) {\n\n\t\t\t\t\t// Use DRACO geometry if available\n\t\t\t\t\tvar geometryPromise = extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ]\n\t\t\t\t\t\t.decodePrimitive( primitive, parser )\n\t\t\t\t\t\t.then( function ( geometry ) {\n\n\t\t\t\t\t\t\taddPrimitiveAttributes( geometry, primitive, accessors );\n\n\t\t\t\t\t\t\treturn geometry;\n\n\t\t\t\t\t\t} );\n\n\t\t\t\t\tcache.push( { primitive: primitive, promise: geometryPromise } );\n\n\t\t\t\t\tpending.push( geometryPromise );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Otherwise create a new geometry\n\t\t\t\t\tvar geometry = new THREE.BufferGeometry();\n\n\t\t\t\t\taddPrimitiveAttributes( geometry, primitive, accessors );\n\n\t\t\t\t\tvar geometryPromise = Promise.resolve( geometry );\n\n\t\t\t\t\t// Cache this geometry\n\t\t\t\t\tcache.push( { primitive: primitive, promise: geometryPromise } );\n\n\t\t\t\t\tpending.push( geometryPromise );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn Promise.all( pending ).then( function ( geometries ) {\n\n\t\t\t\tif ( isMultiPass ) {\n\n\t\t\t\t\tvar baseGeometry = geometries[ 0 ];\n\n\t\t\t\t\t// See if we've already created this combined geometry\n\t\t\t\t\tvar cache = parser.multiPassGeometryCache;\n\t\t\t\t\tvar cached = getCachedMultiPassGeometry( cache, baseGeometry, originalPrimitives );\n\n\t\t\t\t\tif ( cached !== null ) return [ cached.geometry ];\n\n\t\t\t\t\t// Cloning geometry because of index override.\n\t\t\t\t\t// Attributes can be reused so cloning by myself here.\n\t\t\t\t\tvar geometry = new THREE.BufferGeometry();\n\n\t\t\t\t\tgeometry.name = baseGeometry.name;\n\t\t\t\t\tgeometry.userData = baseGeometry.userData;\n\n\t\t\t\t\tfor ( var key in baseGeometry.attributes ) geometry.addAttribute( key, baseGeometry.attributes[ key ] );\n\t\t\t\t\tfor ( var key in baseGeometry.morphAttributes ) geometry.morphAttributes[ key ] = baseGeometry.morphAttributes[ key ];\n\n\t\t\t\t\tvar indices = [];\n\t\t\t\t\tvar offset = 0;\n\n\t\t\t\t\tfor ( var i = 0, il = originalPrimitives.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar accessor = accessors[ originalPrimitives[ i ].indices ];\n\n\t\t\t\t\t\tfor ( var j = 0, jl = accessor.count; j < jl; j ++ ) indices.push( accessor.array[ j ] );\n\n\t\t\t\t\t\tgeometry.addGroup( offset, accessor.count, i );\n\n\t\t\t\t\t\toffset += accessor.count;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgeometry.setIndex( indices );\n\n\t\t\t\t\tcache.push( { geometry: geometry, baseGeometry: baseGeometry, primitives: originalPrimitives } );\n\n\t\t\t\t\treturn [ geometry ];\n\n\t\t\t\t} else if ( geometries.length > 1 && THREE.BufferGeometryUtils !== undefined ) {\n\n\t\t\t\t\t// Tries to merge geometries with BufferGeometryUtils if possible\n\n\t\t\t\t\tfor ( var i = 1, il = primitives.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t// can't merge if draw mode is different\n\t\t\t\t\t\tif ( primitives[ 0 ].mode !== primitives[ i ].mode ) return geometries;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// See if we've already created this combined geometry\n\t\t\t\t\tvar cache = parser.multiplePrimitivesCache;\n\t\t\t\t\tvar cached = getCachedCombinedGeometry( cache, geometries );\n\n\t\t\t\t\tif ( cached ) {\n\n\t\t\t\t\t\tif ( cached.geometry !== null ) return [ cached.geometry ];\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tvar geometry = THREE.BufferGeometryUtils.mergeBufferGeometries( geometries, true );\n\n\t\t\t\t\t\tcache.push( { geometry: geometry, baseGeometries: geometries } );\n\n\t\t\t\t\t\tif ( geometry !== null ) return [ geometry ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn geometries;\n\n\t\t\t} );\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes\n\t * @param {number} meshIndex\n\t * @return {Promise<THREE.Group|THREE.Mesh|THREE.SkinnedMesh>}\n\t */\n\tGLTFParser.prototype.loadMesh = function ( meshIndex ) {\n\n\t\tvar scope = this;\n\t\tvar json = this.json;\n\t\tvar extensions = this.extensions;\n\n\t\tvar meshDef = this.json.meshes[ meshIndex ];\n\n\t\treturn this.getMultiDependencies( [\n\n\t\t\t'accessor',\n\t\t\t'material'\n\n\t\t] ).then( function ( dependencies ) {\n\n\t\t\tvar primitives = meshDef.primitives;\n\t\t\tvar originalMaterials = [];\n\n\t\t\tfor ( var i = 0, il = primitives.length; i < il; i ++ ) {\n\n\t\t\t\toriginalMaterials[ i ] = primitives[ i ].material === undefined\n\t\t\t\t\t? createDefaultMaterial()\n\t\t\t\t\t: dependencies.materials[ primitives[ i ].material ];\n\n\t\t\t}\n\n\t\t\treturn scope.loadGeometries( primitives ).then( function ( geometries ) {\n\n\t\t\t\tvar isMultiMaterial = geometries.length === 1 && geometries[ 0 ].groups.length > 0;\n\n\t\t\t\tvar meshes = [];\n\n\t\t\t\tfor ( var i = 0, il = geometries.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar geometry = geometries[ i ];\n\t\t\t\t\tvar primitive = primitives[ i ];\n\n\t\t\t\t\t// 1. create Mesh\n\n\t\t\t\t\tvar mesh;\n\n\t\t\t\t\tvar material = isMultiMaterial ? originalMaterials : originalMaterials[ i ];\n\n\t\t\t\t\tif ( primitive.mode === WEBGL_CONSTANTS.TRIANGLES ||\n\t\t\t\t\t\tprimitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ||\n\t\t\t\t\t\tprimitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ||\n\t\t\t\t\t\tprimitive.mode === undefined ) {\n\n\t\t\t\t\t\t// .isSkinnedMesh isn't in glTF spec. See .markDefs()\n\t\t\t\t\t\tmesh = meshDef.isSkinnedMesh === true\n\t\t\t\t\t\t\t? new THREE.SkinnedMesh( geometry, material )\n\t\t\t\t\t\t\t: new THREE.Mesh( geometry, material );\n\n\t\t\t\t\t\tif ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ) {\n\n\t\t\t\t\t\t\tmesh.drawMode = THREE.TriangleStripDrawMode;\n\n\t\t\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ) {\n\n\t\t\t\t\t\t\tmesh.drawMode = THREE.TriangleFanDrawMode;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINES ) {\n\n\t\t\t\t\t\tmesh = new THREE.LineSegments( geometry, material );\n\n\t\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINE_STRIP ) {\n\n\t\t\t\t\t\tmesh = new THREE.Line( geometry, material );\n\n\t\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINE_LOOP ) {\n\n\t\t\t\t\t\tmesh = new THREE.LineLoop( geometry, material );\n\n\t\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.POINTS ) {\n\n\t\t\t\t\t\tmesh = new THREE.Points( geometry, material );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthrow new Error( 'THREE.GLTFLoader: Primitive mode unsupported: ' + primitive.mode );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( Object.keys( mesh.geometry.morphAttributes ).length > 0 ) {\n\n\t\t\t\t\t\tupdateMorphTargets( mesh, meshDef );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmesh.name = meshDef.name || ( 'mesh_' + meshIndex );\n\n\t\t\t\t\tif ( geometries.length > 1 ) mesh.name += '_' + i;\n\n\t\t\t\t\tassignExtrasToUserData( mesh, meshDef );\n\n\t\t\t\t\tmeshes.push( mesh );\n\n\t\t\t\t\t// 2. update Material depending on Mesh and BufferGeometry\n\n\t\t\t\t\tvar materials = isMultiMaterial ? mesh.material : [ mesh.material ];\n\n\t\t\t\t\tvar useVertexColors = geometry.attributes.color !== undefined;\n\t\t\t\t\tvar useFlatShading = geometry.attributes.normal === undefined;\n\t\t\t\t\tvar useSkinning = mesh.isSkinnedMesh === true;\n\t\t\t\t\tvar useMorphTargets = Object.keys( geometry.morphAttributes ).length > 0;\n\t\t\t\t\tvar useMorphNormals = useMorphTargets && geometry.morphAttributes.normal !== undefined;\n\n\t\t\t\t\tfor ( var j = 0, jl = materials.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tvar material = materials[ j ];\n\n\t\t\t\t\t\tif ( mesh.isPoints ) {\n\n\t\t\t\t\t\t\tvar cacheKey = 'PointsMaterial:' + material.uuid;\n\n\t\t\t\t\t\t\tvar pointsMaterial = scope.cache.get( cacheKey );\n\n\t\t\t\t\t\t\tif ( ! pointsMaterial ) {\n\n\t\t\t\t\t\t\t\tpointsMaterial = new THREE.PointsMaterial();\n\t\t\t\t\t\t\t\tTHREE.Material.prototype.copy.call( pointsMaterial, material );\n\t\t\t\t\t\t\t\tpointsMaterial.color.copy( material.color );\n\t\t\t\t\t\t\t\tpointsMaterial.map = material.map;\n\t\t\t\t\t\t\t\tpointsMaterial.lights = false; // PointsMaterial doesn't support lights yet\n\n\t\t\t\t\t\t\t\tscope.cache.add( cacheKey, pointsMaterial );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tmaterial = pointsMaterial;\n\n\t\t\t\t\t\t} else if ( mesh.isLine ) {\n\n\t\t\t\t\t\t\tvar cacheKey = 'LineBasicMaterial:' + material.uuid;\n\n\t\t\t\t\t\t\tvar lineMaterial = scope.cache.get( cacheKey );\n\n\t\t\t\t\t\t\tif ( ! lineMaterial ) {\n\n\t\t\t\t\t\t\t\tlineMaterial = new THREE.LineBasicMaterial();\n\t\t\t\t\t\t\t\tTHREE.Material.prototype.copy.call( lineMaterial, material );\n\t\t\t\t\t\t\t\tlineMaterial.color.copy( material.color );\n\t\t\t\t\t\t\t\tlineMaterial.lights = false; // LineBasicMaterial doesn't support lights yet\n\n\t\t\t\t\t\t\t\tscope.cache.add( cacheKey, lineMaterial );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tmaterial = lineMaterial;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Clone the material if it will be modified\n\t\t\t\t\t\tif ( useVertexColors || useFlatShading || useSkinning || useMorphTargets ) {\n\n\t\t\t\t\t\t\tvar cacheKey = 'ClonedMaterial:' + material.uuid + ':';\n\n\t\t\t\t\t\t\tif ( material.isGLTFSpecularGlossinessMaterial ) cacheKey += 'specular-glossiness:';\n\t\t\t\t\t\t\tif ( useSkinning ) cacheKey += 'skinning:';\n\t\t\t\t\t\t\tif ( useVertexColors ) cacheKey += 'vertex-colors:';\n\t\t\t\t\t\t\tif ( useFlatShading ) cacheKey += 'flat-shading:';\n\t\t\t\t\t\t\tif ( useMorphTargets ) cacheKey += 'morph-targets:';\n\t\t\t\t\t\t\tif ( useMorphNormals ) cacheKey += 'morph-normals:';\n\n\t\t\t\t\t\t\tvar cachedMaterial = scope.cache.get( cacheKey );\n\n\t\t\t\t\t\t\tif ( ! cachedMaterial ) {\n\n\t\t\t\t\t\t\t\tcachedMaterial = material.isGLTFSpecularGlossinessMaterial\n\t\t\t\t\t\t\t\t\t? extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ].cloneMaterial( material )\n\t\t\t\t\t\t\t\t\t: material.clone();\n\n\t\t\t\t\t\t\t\tif ( useSkinning ) cachedMaterial.skinning = true;\n\t\t\t\t\t\t\t\tif ( useVertexColors ) cachedMaterial.vertexColors = THREE.VertexColors;\n\t\t\t\t\t\t\t\tif ( useFlatShading ) cachedMaterial.flatShading = true;\n\t\t\t\t\t\t\t\tif ( useMorphTargets ) cachedMaterial.morphTargets = true;\n\t\t\t\t\t\t\t\tif ( useMorphNormals ) cachedMaterial.morphNormals = true;\n\n\t\t\t\t\t\t\t\tscope.cache.add( cacheKey, cachedMaterial );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tmaterial = cachedMaterial;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmaterials[ j ] = material;\n\n\t\t\t\t\t\t// workarounds for mesh and geometry\n\n\t\t\t\t\t\tif ( material.aoMap && geometry.attributes.uv2 === undefined && geometry.attributes.uv !== undefined ) {\n\n\t\t\t\t\t\t\tconsole.log( 'THREE.GLTFLoader: Duplicating UVs to support aoMap.' );\n\t\t\t\t\t\t\tgeometry.addAttribute( 'uv2', new THREE.BufferAttribute( geometry.attributes.uv.array, 2 ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( material.isGLTFSpecularGlossinessMaterial ) {\n\n\t\t\t\t\t\t\t// for GLTFSpecularGlossinessMaterial(ShaderMaterial) uniforms runtime update\n\t\t\t\t\t\t\tmesh.onBeforeRender = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ].refreshUniforms;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmesh.material = isMultiMaterial ? materials : materials[ 0 ];\n\n\t\t\t\t}\n\n\t\t\t\tif ( meshes.length === 1 ) {\n\n\t\t\t\t\treturn meshes[ 0 ];\n\n\t\t\t\t}\n\n\t\t\t\tvar group = new THREE.Group();\n\n\t\t\t\tfor ( var i = 0, il = meshes.length; i < il; i ++ ) {\n\n\t\t\t\t\tgroup.add( meshes[ i ] );\n\n\t\t\t\t}\n\n\t\t\t\treturn group;\n\n\t\t\t} );\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#cameras\n\t * @param {number} cameraIndex\n\t * @return {Promise<THREE.Camera>}\n\t */\n\tGLTFParser.prototype.loadCamera = function ( cameraIndex ) {\n\n\t\tvar camera;\n\t\tvar cameraDef = this.json.cameras[ cameraIndex ];\n\t\tvar params = cameraDef[ cameraDef.type ];\n\n\t\tif ( ! params ) {\n\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing camera parameters.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( cameraDef.type === 'perspective' ) {\n\n\t\t\tcamera = new THREE.PerspectiveCamera( THREE.Math.radToDeg( params.yfov ), params.aspectRatio || 1, params.znear || 1, params.zfar || 2e6 );\n\n\t\t} else if ( cameraDef.type === 'orthographic' ) {\n\n\t\t\tcamera = new THREE.OrthographicCamera( params.xmag / - 2, params.xmag / 2, params.ymag / 2, params.ymag / - 2, params.znear, params.zfar );\n\n\t\t}\n\n\t\tif ( cameraDef.name !== undefined ) camera.name = cameraDef.name;\n\n\t\tassignExtrasToUserData( camera, cameraDef );\n\n\t\treturn Promise.resolve( camera );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins\n\t * @param {number} skinIndex\n\t * @return {Promise<Object>}\n\t */\n\tGLTFParser.prototype.loadSkin = function ( skinIndex ) {\n\n\t\tvar skinDef = this.json.skins[ skinIndex ];\n\n\t\tvar skinEntry = { joints: skinDef.joints };\n\n\t\tif ( skinDef.inverseBindMatrices === undefined ) {\n\n\t\t\treturn Promise.resolve( skinEntry );\n\n\t\t}\n\n\t\treturn this.getDependency( 'accessor', skinDef.inverseBindMatrices ).then( function ( accessor ) {\n\n\t\t\tskinEntry.inverseBindMatrices = accessor;\n\n\t\t\treturn skinEntry;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#animations\n\t * @param {number} animationIndex\n\t * @return {Promise<THREE.AnimationClip>}\n\t */\n\tGLTFParser.prototype.loadAnimation = function ( animationIndex ) {\n\n\t\tvar json = this.json;\n\n\t\tvar animationDef = this.json.animations[ animationIndex ];\n\n\t\treturn this.getMultiDependencies( [\n\n\t\t\t'accessor',\n\t\t\t'node'\n\n\t\t] ).then( function ( dependencies ) {\n\n\t\t\tvar tracks = [];\n\n\t\t\tfor ( var i = 0, il = animationDef.channels.length; i < il; i ++ ) {\n\n\t\t\t\tvar channel = animationDef.channels[ i ];\n\t\t\t\tvar sampler = animationDef.samplers[ channel.sampler ];\n\n\t\t\t\tif ( sampler ) {\n\n\t\t\t\t\tvar target = channel.target;\n\t\t\t\t\tvar name = target.node !== undefined ? target.node : target.id; // NOTE: target.id is deprecated.\n\t\t\t\t\tvar input = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.input ] : sampler.input;\n\t\t\t\t\tvar output = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.output ] : sampler.output;\n\n\t\t\t\t\tvar inputAccessor = dependencies.accessors[ input ];\n\t\t\t\t\tvar outputAccessor = dependencies.accessors[ output ];\n\n\t\t\t\t\tvar node = dependencies.nodes[ name ];\n\n\t\t\t\t\tif ( node ) {\n\n\t\t\t\t\t\tnode.updateMatrix();\n\t\t\t\t\t\tnode.matrixAutoUpdate = true;\n\n\t\t\t\t\t\tvar TypedKeyframeTrack;\n\n\t\t\t\t\t\tswitch ( PATH_PROPERTIES[ target.path ] ) {\n\n\t\t\t\t\t\t\tcase PATH_PROPERTIES.weights:\n\n\t\t\t\t\t\t\t\tTypedKeyframeTrack = THREE.NumberKeyframeTrack;\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase PATH_PROPERTIES.rotation:\n\n\t\t\t\t\t\t\t\tTypedKeyframeTrack = THREE.QuaternionKeyframeTrack;\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase PATH_PROPERTIES.position:\n\t\t\t\t\t\t\tcase PATH_PROPERTIES.scale:\n\t\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\t\tTypedKeyframeTrack = THREE.VectorKeyframeTrack;\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar targetName = node.name ? node.name : node.uuid;\n\n\t\t\t\t\t\tvar interpolation = sampler.interpolation !== undefined ? INTERPOLATION[ sampler.interpolation ] : THREE.InterpolateLinear;\n\n\t\t\t\t\t\tvar targetNames = [];\n\n\t\t\t\t\t\tif ( PATH_PROPERTIES[ target.path ] === PATH_PROPERTIES.weights ) {\n\n\t\t\t\t\t\t\t// node can be THREE.Group here but\n\t\t\t\t\t\t\t// PATH_PROPERTIES.weights(morphTargetInfluences) should be\n\t\t\t\t\t\t\t// the property of a mesh object under group.\n\n\t\t\t\t\t\t\tnode.traverse( function ( object ) {\n\n\t\t\t\t\t\t\t\tif ( object.isMesh === true && object.morphTargetInfluences ) {\n\n\t\t\t\t\t\t\t\t\ttargetNames.push( object.name ? object.name : object.uuid );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\ttargetNames.push( targetName );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// KeyframeTrack.optimize() will modify given 'times' and 'values'\n\t\t\t\t\t\t// buffers before creating a truncated copy to keep. Because buffers may\n\t\t\t\t\t\t// be reused by other tracks, make copies here.\n\t\t\t\t\t\tfor ( var j = 0, jl = targetNames.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tvar track = new TypedKeyframeTrack(\n\t\t\t\t\t\t\t\ttargetNames[ j ] + '.' + PATH_PROPERTIES[ target.path ],\n\t\t\t\t\t\t\t\tTHREE.AnimationUtils.arraySlice( inputAccessor.array, 0 ),\n\t\t\t\t\t\t\t\tTHREE.AnimationUtils.arraySlice( outputAccessor.array, 0 ),\n\t\t\t\t\t\t\t\tinterpolation\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t// Here is the trick to enable custom interpolation.\n\t\t\t\t\t\t\t// Overrides .createInterpolant in a factory method which creates custom interpolation.\n\t\t\t\t\t\t\tif ( sampler.interpolation === 'CUBICSPLINE' ) {\n\n\t\t\t\t\t\t\t\ttrack.createInterpolant = function InterpolantFactoryMethodGLTFCubicSpline( result ) {\n\n\t\t\t\t\t\t\t\t\t// A CUBICSPLINE keyframe in glTF has three output values for each input value,\n\t\t\t\t\t\t\t\t\t// representing inTangent, splineVertex, and outTangent. As a result, track.getValueSize()\n\t\t\t\t\t\t\t\t\t// must be divided by three to get the interpolant's sampleSize argument.\n\n\t\t\t\t\t\t\t\t\treturn new GLTFCubicSplineInterpolant( this.times, this.values, this.getValueSize() / 3, result );\n\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\t// Workaround, provide an alternate way to know if the interpolant type is cubis spline to track.\n\t\t\t\t\t\t\t\t// track.getInterpolation() doesn't return valid value for custom interpolant.\n\t\t\t\t\t\t\t\ttrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\ttracks.push( track );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar name = animationDef.name !== undefined ? animationDef.name : 'animation_' + animationIndex;\n\n\t\t\treturn new THREE.AnimationClip( name, undefined, tracks );\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#nodes-and-hierarchy\n\t * @param {number} nodeIndex\n\t * @return {Promise<THREE.Object3D>}\n\t */\n\tGLTFParser.prototype.loadNode = function ( nodeIndex ) {\n\n\t\tvar json = this.json;\n\t\tvar extensions = this.extensions;\n\n\t\tvar meshReferences = this.json.meshReferences;\n\t\tvar meshUses = this.json.meshUses;\n\n\t\tvar nodeDef = this.json.nodes[ nodeIndex ];\n\n\t\treturn this.getMultiDependencies( [\n\n\t\t\t'mesh',\n\t\t\t'skin',\n\t\t\t'camera',\n\t\t\t'light'\n\n\t\t] ).then( function ( dependencies ) {\n\n\t\t\tvar node;\n\n\t\t\t// .isBone isn't in glTF spec. See .markDefs\n\t\t\tif ( nodeDef.isBone === true ) {\n\n\t\t\t\tnode = new THREE.Bone();\n\n\t\t\t} else if ( nodeDef.mesh !== undefined ) {\n\n\t\t\t\tvar mesh = dependencies.meshes[ nodeDef.mesh ];\n\n\t\t\t\tif ( meshReferences[ nodeDef.mesh ] > 1 ) {\n\n\t\t\t\t\tvar instanceNum = meshUses[ nodeDef.mesh ] ++;\n\n\t\t\t\t\tnode = mesh.clone();\n\t\t\t\t\tnode.name += '_instance_' + instanceNum;\n\n\t\t\t\t\t// onBeforeRender copy for Specular-Glossiness\n\t\t\t\t\tnode.onBeforeRender = mesh.onBeforeRender;\n\n\t\t\t\t\tfor ( var i = 0, il = node.children.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tnode.children[ i ].name += '_instance_' + instanceNum;\n\t\t\t\t\t\tnode.children[ i ].onBeforeRender = mesh.children[ i ].onBeforeRender;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tnode = mesh;\n\n\t\t\t\t}\n\n\t\t\t} else if ( nodeDef.camera !== undefined ) {\n\n\t\t\t\tnode = dependencies.cameras[ nodeDef.camera ];\n\n\t\t\t} else if ( nodeDef.extensions\n\t\t\t\t\t && nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ]\n\t\t\t\t\t && nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].light !== undefined ) {\n\n\t\t\t\tvar lights = extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].lights;\n\t\t\t\tnode = lights[ nodeDef.extensions[ EXTENSIONS.KHR_LIGHTS_PUNCTUAL ].light ];\n\n\t\t\t} else {\n\n\t\t\t\tnode = new THREE.Object3D();\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.name !== undefined ) {\n\n\t\t\t\tnode.name = THREE.PropertyBinding.sanitizeNodeName( nodeDef.name );\n\n\t\t\t}\n\n\t\t\tassignExtrasToUserData( node, nodeDef );\n\n\t\t\tif ( nodeDef.extensions ) addUnknownExtensionsToUserData( extensions, node, nodeDef );\n\n\t\t\tif ( nodeDef.matrix !== undefined ) {\n\n\t\t\t\tvar matrix = new THREE.Matrix4();\n\t\t\t\tmatrix.fromArray( nodeDef.matrix );\n\t\t\t\tnode.applyMatrix( matrix );\n\n\t\t\t} else {\n\n\t\t\t\tif ( nodeDef.translation !== undefined ) {\n\n\t\t\t\t\tnode.position.fromArray( nodeDef.translation );\n\n\t\t\t\t}\n\n\t\t\t\tif ( nodeDef.rotation !== undefined ) {\n\n\t\t\t\t\tnode.quaternion.fromArray( nodeDef.rotation );\n\n\t\t\t\t}\n\n\t\t\t\tif ( nodeDef.scale !== undefined ) {\n\n\t\t\t\t\tnode.scale.fromArray( nodeDef.scale );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn node;\n\n\t\t} );\n\n\t};\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#scenes\n\t * @param {number} sceneIndex\n\t * @return {Promise<THREE.Scene>}\n\t */\n\tGLTFParser.prototype.loadScene = function () {\n\n\t\t// scene node hierachy builder\n\n\t\tfunction buildNodeHierachy( nodeId, parentObject, json, allNodes, skins ) {\n\n\t\t\tvar node = allNodes[ nodeId ];\n\t\t\tvar nodeDef = json.nodes[ nodeId ];\n\n\t\t\t// build skeleton here as well\n\n\t\t\tif ( nodeDef.skin !== undefined ) {\n\n\t\t\t\tvar meshes = node.isGroup === true ? node.children : [ node ];\n\n\t\t\t\tfor ( var i = 0, il = meshes.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar mesh = meshes[ i ];\n\t\t\t\t\tvar skinEntry = skins[ nodeDef.skin ];\n\n\t\t\t\t\tvar bones = [];\n\t\t\t\t\tvar boneInverses = [];\n\n\t\t\t\t\tfor ( var j = 0, jl = skinEntry.joints.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tvar jointId = skinEntry.joints[ j ];\n\t\t\t\t\t\tvar jointNode = allNodes[ jointId ];\n\n\t\t\t\t\t\tif ( jointNode ) {\n\n\t\t\t\t\t\t\tbones.push( jointNode );\n\n\t\t\t\t\t\t\tvar mat = new THREE.Matrix4();\n\n\t\t\t\t\t\t\tif ( skinEntry.inverseBindMatrices !== undefined ) {\n\n\t\t\t\t\t\t\t\tmat.fromArray( skinEntry.inverseBindMatrices.array, j * 16 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tboneInverses.push( mat );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Joint \"%s\" could not be found.', jointId );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmesh.bind( new THREE.Skeleton( bones, boneInverses ), mesh.matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// build node hierachy\n\n\t\t\tparentObject.add( node );\n\n\t\t\tif ( nodeDef.children ) {\n\n\t\t\t\tvar children = nodeDef.children;\n\n\t\t\t\tfor ( var i = 0, il = children.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar child = children[ i ];\n\t\t\t\t\tbuildNodeHierachy( child, node, json, allNodes, skins );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn function loadScene( sceneIndex ) {\n\n\t\t\tvar json = this.json;\n\t\t\tvar extensions = this.extensions;\n\t\t\tvar sceneDef = this.json.scenes[ sceneIndex ];\n\n\t\t\treturn this.getMultiDependencies( [\n\n\t\t\t\t'node',\n\t\t\t\t'skin'\n\n\t\t\t] ).then( function ( dependencies ) {\n\n\t\t\t\tvar scene = new THREE.Scene();\n\t\t\t\tif ( sceneDef.name !== undefined ) scene.name = sceneDef.name;\n\n\t\t\t\tassignExtrasToUserData( scene, sceneDef );\n\n\t\t\t\tif ( sceneDef.extensions ) addUnknownExtensionsToUserData( extensions, scene, sceneDef );\n\n\t\t\t\tvar nodeIds = sceneDef.nodes || [];\n\n\t\t\t\tfor ( var i = 0, il = nodeIds.length; i < il; i ++ ) {\n\n\t\t\t\t\tbuildNodeHierachy( nodeIds[ i ], scene, json, dependencies.nodes, dependencies.skins );\n\n\t\t\t\t}\n\n\t\t\t\treturn scene;\n\n\t\t\t} );\n\n\t\t};\n\n\t}();\n\n\treturn GLTFLoader;\n\n} )();\n\n\nmodule.exports = _GLTFLoader;\n","module.exports = function( THREE ) {\n\t/**\n\t * @author qiao / https://github.com/qiao\n\t * @author mrdoob / http://mrdoob.com\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author WestLangley / http://github.com/WestLangley\n\t * @author erich666 / http://erichaines.com\n\t */\n\n// This set of controls performs orbiting, dollying (zooming), and panning.\n// Unlike TrackballControls, it maintains the \"up\" direction object.up (+Y by default).\n//\n//    Orbit - left mouse / touch: one finger move\n//    Zoom - middle mouse, or mousewheel / touch: two finger spread or squish\n//    Pan - right mouse, or arrow keys / touch: three finter swipe\n\n\tfunction OrbitControls( object, domElement ) {\n\n\t\tthis.object = object;\n\n\t\tthis.domElement = ( domElement !== undefined ) ? domElement : document;\n\n\t\t// Set to false to disable this control\n\t\tthis.enabled = true;\n\n\t\t// \"target\" sets the location of focus, where the object orbits around\n\t\tthis.target = new THREE.Vector3();\n\n\t\t// How far you can dolly in and out ( PerspectiveCamera only )\n\t\tthis.minDistance = 0;\n\t\tthis.maxDistance = Infinity;\n\n\t\t// How far you can zoom in and out ( OrthographicCamera only )\n\t\tthis.minZoom = 0;\n\t\tthis.maxZoom = Infinity;\n\n\t\t// How far you can orbit vertically, upper and lower limits.\n\t\t// Range is 0 to Math.PI radians.\n\t\tthis.minPolarAngle = 0; // radians\n\t\tthis.maxPolarAngle = Math.PI; // radians\n\n\t\t// How far you can orbit horizontally, upper and lower limits.\n\t\t// If set, must be a sub-interval of the interval [ - Math.PI, Math.PI ].\n\t\tthis.minAzimuthAngle = - Infinity; // radians\n\t\tthis.maxAzimuthAngle = Infinity; // radians\n\n\t\t// Set to true to enable damping (inertia)\n\t\t// If damping is enabled, you must call controls.update() in your animation loop\n\t\tthis.enableDamping = false;\n\t\tthis.dampingFactor = 0.25;\n\n\t\t// This option actually enables dollying in and out; left as \"zoom\" for backwards compatibility.\n\t\t// Set to false to disable zooming\n\t\tthis.enableZoom = true;\n\t\tthis.zoomSpeed = 1.0;\n\n\t\t// Set to false to disable rotating\n\t\tthis.enableRotate = true;\n\t\tthis.rotateSpeed = 1.0;\n\n\t\t// Set to false to disable panning\n\t\tthis.enablePan = true;\n\t\tthis.keyPanSpeed = 7.0;\t// pixels moved per arrow key push\n\n\t\t// Set to true to automatically rotate around the target\n\t\t// If auto-rotate is enabled, you must call controls.update() in your animation loop\n\t\tthis.autoRotate = false;\n\t\tthis.autoRotateSpeed = 2.0; // 30 seconds per round when fps is 60\n\n\t\t// Set to false to disable use of the keys\n\t\tthis.enableKeys = true;\n\n\t\t// The four arrow keys\n\t\tthis.keys = { LEFT: 37, UP: 38, RIGHT: 39, BOTTOM: 40 };\n\n\t\t// Mouse buttons\n\t\tthis.mouseButtons = { ORBIT: THREE.MOUSE.LEFT, ZOOM: THREE.MOUSE.MIDDLE, PAN: THREE.MOUSE.RIGHT };\n\n\t\t// for reset\n\t\tthis.target0 = this.target.clone();\n\t\tthis.position0 = this.object.position.clone();\n\t\tthis.zoom0 = this.object.zoom;\n\n\t\t//\n\t\t// public methods\n\t\t//\n\n\t\tthis.getPolarAngle = function () {\n\n\t\t\treturn spherical.phi;\n\n\t\t};\n\n\t\tthis.getAzimuthalAngle = function () {\n\n\t\t\treturn spherical.theta;\n\n\t\t};\n\n\t\tthis.reset = function () {\n\n\t\t\tscope.target.copy( scope.target0 );\n\t\t\tscope.object.position.copy( scope.position0 );\n\t\t\tscope.object.zoom = scope.zoom0;\n\n\t\t\tscope.object.updateProjectionMatrix();\n\t\t\tscope.dispatchEvent( changeEvent );\n\n\t\t\tscope.update();\n\n\t\t\tstate = STATE.NONE;\n\n\t\t};\n\n\t\t// this method is exposed, but perhaps it would be better if we can make it private...\n\t\tthis.update = function() {\n\n\t\t\tvar offset = new THREE.Vector3();\n\n\t\t\t// so camera.up is the orbit axis\n\t\t\tvar quat = new THREE.Quaternion().setFromUnitVectors( object.up, new THREE.Vector3( 0, 1, 0 ) );\n\t\t\tvar quatInverse = quat.clone().inverse();\n\n\t\t\tvar lastPosition = new THREE.Vector3();\n\t\t\tvar lastQuaternion = new THREE.Quaternion();\n\n\t\t\treturn function update () {\n\n\t\t\t\tvar position = scope.object.position;\n\n\t\t\t\toffset.copy( position ).sub( scope.target );\n\n\t\t\t\t// rotate offset to \"y-axis-is-up\" space\n\t\t\t\toffset.applyQuaternion( quat );\n\n\t\t\t\t// angle from z-axis around y-axis\n\t\t\t\tspherical.setFromVector3( offset );\n\n\t\t\t\tif ( scope.autoRotate && state === STATE.NONE ) {\n\n\t\t\t\t\trotateLeft( getAutoRotationAngle() );\n\n\t\t\t\t}\n\n\t\t\t\tspherical.theta += sphericalDelta.theta;\n\t\t\t\tspherical.phi += sphericalDelta.phi;\n\n\t\t\t\t// restrict theta to be between desired limits\n\t\t\t\tspherical.theta = Math.max( scope.minAzimuthAngle, Math.min( scope.maxAzimuthAngle, spherical.theta ) );\n\n\t\t\t\t// restrict phi to be between desired limits\n\t\t\t\tspherical.phi = Math.max( scope.minPolarAngle, Math.min( scope.maxPolarAngle, spherical.phi ) );\n\n\t\t\t\tspherical.makeSafe();\n\n\n\t\t\t\tspherical.radius *= scale;\n\n\t\t\t\t// restrict radius to be between desired limits\n\t\t\t\tspherical.radius = Math.max( scope.minDistance, Math.min( scope.maxDistance, spherical.radius ) );\n\n\t\t\t\t// move target to panned location\n\t\t\t\tscope.target.add( panOffset );\n\n\t\t\t\toffset.setFromSpherical( spherical );\n\n\t\t\t\t// rotate offset back to \"camera-up-vector-is-up\" space\n\t\t\t\toffset.applyQuaternion( quatInverse );\n\n\t\t\t\tposition.copy( scope.target ).add( offset );\n\n\t\t\t\tscope.object.lookAt( scope.target );\n\n\t\t\t\tif ( scope.enableDamping === true ) {\n\n\t\t\t\t\tsphericalDelta.theta *= ( 1 - scope.dampingFactor );\n\t\t\t\t\tsphericalDelta.phi *= ( 1 - scope.dampingFactor );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tsphericalDelta.set( 0, 0, 0 );\n\n\t\t\t\t}\n\n\t\t\t\tscale = 1;\n\t\t\t\tpanOffset.set( 0, 0, 0 );\n\n\t\t\t\t// update condition is:\n\t\t\t\t// min(camera displacement, camera rotation in radians)^2 > EPS\n\t\t\t\t// using small-angle approximation cos(x/2) = 1 - x^2 / 8\n\n\t\t\t\tif ( zoomChanged ||\n\t\t\t\t\tlastPosition.distanceToSquared( scope.object.position ) > EPS ||\n\t\t\t\t\t8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS ) {\n\n\t\t\t\t\tscope.dispatchEvent( changeEvent );\n\n\t\t\t\t\tlastPosition.copy( scope.object.position );\n\t\t\t\t\tlastQuaternion.copy( scope.object.quaternion );\n\t\t\t\t\tzoomChanged = false;\n\n\t\t\t\t\treturn true;\n\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\n\t\t\t};\n\n\t\t}();\n\n\t\tthis.dispose = function() {\n\n\t\t\tscope.domElement.removeEventListener( 'contextmenu', onContextMenu, false );\n\t\t\tscope.domElement.removeEventListener( 'mousedown', onMouseDown, false );\n\t\t\tscope.domElement.removeEventListener( 'wheel', onMouseWheel, false );\n\n\t\t\tscope.domElement.removeEventListener( 'touchstart', onTouchStart, false );\n\t\t\tscope.domElement.removeEventListener( 'touchend', onTouchEnd, false );\n\t\t\tscope.domElement.removeEventListener( 'touchmove', onTouchMove, false );\n\n\t\t\tdocument.removeEventListener( 'mousemove', onMouseMove, false );\n\t\t\tdocument.removeEventListener( 'mouseup', onMouseUp, false );\n\n\t\t\twindow.removeEventListener( 'keydown', onKeyDown, false );\n\n\t\t\t//scope.dispatchEvent( { type: 'dispose' } ); // should this be added here?\n\n\t\t};\n\n\t\t//\n\t\t// internals\n\t\t//\n\n\t\tvar scope = this;\n\n\t\tvar changeEvent = { type: 'change' };\n\t\tvar startEvent = { type: 'start' };\n\t\tvar endEvent = { type: 'end' };\n\n\t\tvar STATE = { NONE : - 1, ROTATE : 0, DOLLY : 1, PAN : 2, TOUCH_ROTATE : 3, TOUCH_DOLLY : 4, TOUCH_PAN : 5 };\n\n\t\tvar state = STATE.NONE;\n\n\t\tvar EPS = 0.000001;\n\n\t\t// current position in spherical coordinates\n\t\tvar spherical = new THREE.Spherical();\n\t\tvar sphericalDelta = new THREE.Spherical();\n\n\t\tvar scale = 1;\n\t\tvar panOffset = new THREE.Vector3();\n\t\tvar zoomChanged = false;\n\n\t\tvar rotateStart = new THREE.Vector2();\n\t\tvar rotateEnd = new THREE.Vector2();\n\t\tvar rotateDelta = new THREE.Vector2();\n\n\t\tvar panStart = new THREE.Vector2();\n\t\tvar panEnd = new THREE.Vector2();\n\t\tvar panDelta = new THREE.Vector2();\n\n\t\tvar dollyStart = new THREE.Vector2();\n\t\tvar dollyEnd = new THREE.Vector2();\n\t\tvar dollyDelta = new THREE.Vector2();\n\n\t\tfunction getAutoRotationAngle() {\n\n\t\t\treturn 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed;\n\n\t\t}\n\n\t\tfunction getZoomScale() {\n\n\t\t\treturn Math.pow( 0.95, scope.zoomSpeed );\n\n\t\t}\n\n\t\tfunction rotateLeft( angle ) {\n\n\t\t\tsphericalDelta.theta -= angle;\n\n\t\t}\n\n\t\tfunction rotateUp( angle ) {\n\n\t\t\tsphericalDelta.phi -= angle;\n\n\t\t}\n\n\t\tvar panLeft = function() {\n\n\t\t\tvar v = new THREE.Vector3();\n\n\t\t\treturn function panLeft( distance, objectMatrix ) {\n\n\t\t\t\tv.setFromMatrixColumn( objectMatrix, 0 ); // get X column of objectMatrix\n\t\t\t\tv.multiplyScalar( - distance );\n\n\t\t\t\tpanOffset.add( v );\n\n\t\t\t};\n\n\t\t}();\n\n\t\tvar panUp = function() {\n\n\t\t\tvar v = new THREE.Vector3();\n\n\t\t\treturn function panUp( distance, objectMatrix ) {\n\n\t\t\t\tv.setFromMatrixColumn( objectMatrix, 1 ); // get Y column of objectMatrix\n\t\t\t\tv.multiplyScalar( distance );\n\n\t\t\t\tpanOffset.add( v );\n\n\t\t\t};\n\n\t\t}();\n\n\t\t// deltaX and deltaY are in pixels; right and down are positive\n\t\tvar pan = function() {\n\n\t\t\tvar offset = new THREE.Vector3();\n\n\t\t\treturn function pan ( deltaX, deltaY ) {\n\n\t\t\t\tvar element = scope.domElement === document ? scope.domElement.body : scope.domElement;\n\n\t\t\t\tif ( scope.object instanceof THREE.PerspectiveCamera ) {\n\n\t\t\t\t\t// perspective\n\t\t\t\t\tvar position = scope.object.position;\n\t\t\t\t\toffset.copy( position ).sub( scope.target );\n\t\t\t\t\tvar targetDistance = offset.length();\n\n\t\t\t\t\t// half of the fov is center to top of screen\n\t\t\t\t\ttargetDistance *= Math.tan( ( scope.object.fov / 2 ) * Math.PI / 180.0 );\n\n\t\t\t\t\t// we actually don't use screenWidth, since perspective camera is fixed to screen height\n\t\t\t\t\tpanLeft( 2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix );\n\t\t\t\t\tpanUp( 2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix );\n\n\t\t\t\t} else if ( scope.object instanceof THREE.OrthographicCamera ) {\n\n\t\t\t\t\t// orthographic\n\t\t\t\t\tpanLeft( deltaX * ( scope.object.right - scope.object.left ) / scope.object.zoom / element.clientWidth, scope.object.matrix );\n\t\t\t\t\tpanUp( deltaY * ( scope.object.top - scope.object.bottom ) / scope.object.zoom / element.clientHeight, scope.object.matrix );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// camera neither orthographic nor perspective\n\t\t\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.' );\n\t\t\t\t\tscope.enablePan = false;\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}();\n\n\t\tfunction dollyIn( dollyScale ) {\n\n\t\t\tif ( scope.object instanceof THREE.PerspectiveCamera ) {\n\n\t\t\t\tscale /= dollyScale;\n\n\t\t\t} else if ( scope.object instanceof THREE.OrthographicCamera ) {\n\n\t\t\t\tscope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom * dollyScale ) );\n\t\t\t\tscope.object.updateProjectionMatrix();\n\t\t\t\tzoomChanged = true;\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );\n\t\t\t\tscope.enableZoom = false;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction dollyOut( dollyScale ) {\n\n\t\t\tif ( scope.object instanceof THREE.PerspectiveCamera ) {\n\n\t\t\t\tscale *= dollyScale;\n\n\t\t\t} else if ( scope.object instanceof THREE.OrthographicCamera ) {\n\n\t\t\t\tscope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom / dollyScale ) );\n\t\t\t\tscope.object.updateProjectionMatrix();\n\t\t\t\tzoomChanged = true;\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );\n\t\t\t\tscope.enableZoom = false;\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\t\t// event callbacks - update the object state\n\t\t//\n\n\t\tfunction handleMouseDownRotate( event ) {\n\n\t\t\t//console.log( 'handleMouseDownRotate' );\n\n\t\t\trotateStart.set( event.clientX, event.clientY );\n\n\t\t}\n\n\t\tfunction handleMouseDownDolly( event ) {\n\n\t\t\t//console.log( 'handleMouseDownDolly' );\n\n\t\t\tdollyStart.set( event.clientX, event.clientY );\n\n\t\t}\n\n\t\tfunction handleMouseDownPan( event ) {\n\n\t\t\t//console.log( 'handleMouseDownPan' );\n\n\t\t\tpanStart.set( event.clientX, event.clientY );\n\n\t\t}\n\n\t\tfunction handleMouseMoveRotate( event ) {\n\n\t\t\t//console.log( 'handleMouseMoveRotate' );\n\n\t\t\trotateEnd.set( event.clientX, event.clientY );\n\t\t\trotateDelta.subVectors( rotateEnd, rotateStart );\n\n\t\t\tvar element = scope.domElement === document ? scope.domElement.body : scope.domElement;\n\n\t\t\t// rotating across whole screen goes 360 degrees around\n\t\t\trotateLeft( 2 * Math.PI * rotateDelta.x / element.clientWidth * scope.rotateSpeed );\n\n\t\t\t// rotating up and down along whole screen attempts to go 360, but limited to 180\n\t\t\trotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight * scope.rotateSpeed );\n\n\t\t\trotateStart.copy( rotateEnd );\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleMouseMoveDolly( event ) {\n\n\t\t\t//console.log( 'handleMouseMoveDolly' );\n\n\t\t\tdollyEnd.set( event.clientX, event.clientY );\n\n\t\t\tdollyDelta.subVectors( dollyEnd, dollyStart );\n\n\t\t\tif ( dollyDelta.y > 0 ) {\n\n\t\t\t\tdollyIn( getZoomScale() );\n\n\t\t\t} else if ( dollyDelta.y < 0 ) {\n\n\t\t\t\tdollyOut( getZoomScale() );\n\n\t\t\t}\n\n\t\t\tdollyStart.copy( dollyEnd );\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleMouseMovePan( event ) {\n\n\t\t\t//console.log( 'handleMouseMovePan' );\n\n\t\t\tpanEnd.set( event.clientX, event.clientY );\n\n\t\t\tpanDelta.subVectors( panEnd, panStart );\n\n\t\t\tpan( panDelta.x, panDelta.y );\n\n\t\t\tpanStart.copy( panEnd );\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleMouseUp( event ) {\n\n\t\t\t//console.log( 'handleMouseUp' );\n\n\t\t}\n\n\t\tfunction handleMouseWheel( event ) {\n\n\t\t\t//console.log( 'handleMouseWheel' );\n\n\t\t\tif ( event.deltaY < 0 ) {\n\n\t\t\t\tdollyOut( getZoomScale() );\n\n\t\t\t} else if ( event.deltaY > 0 ) {\n\n\t\t\t\tdollyIn( getZoomScale() );\n\n\t\t\t}\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleKeyDown( event ) {\n\n\t\t\t//console.log( 'handleKeyDown' );\n\n\t\t\tswitch ( event.keyCode ) {\n\n\t\t\t\tcase scope.keys.UP:\n\t\t\t\t\tpan( 0, scope.keyPanSpeed );\n\t\t\t\t\tscope.update();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase scope.keys.BOTTOM:\n\t\t\t\t\tpan( 0, - scope.keyPanSpeed );\n\t\t\t\t\tscope.update();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase scope.keys.LEFT:\n\t\t\t\t\tpan( scope.keyPanSpeed, 0 );\n\t\t\t\t\tscope.update();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase scope.keys.RIGHT:\n\t\t\t\t\tpan( - scope.keyPanSpeed, 0 );\n\t\t\t\t\tscope.update();\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction handleTouchStartRotate( event ) {\n\n\t\t\t//console.log( 'handleTouchStartRotate' );\n\n\t\t\trotateStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\t}\n\n\t\tfunction handleTouchStartDolly( event ) {\n\n\t\t\t//console.log( 'handleTouchStartDolly' );\n\n\t\t\tvar dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX;\n\t\t\tvar dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY;\n\n\t\t\tvar distance = Math.sqrt( dx * dx + dy * dy );\n\n\t\t\tdollyStart.set( 0, distance );\n\n\t\t}\n\n\t\tfunction handleTouchStartPan( event ) {\n\n\t\t\t//console.log( 'handleTouchStartPan' );\n\n\t\t\tpanStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\t}\n\n\t\tfunction handleTouchMoveRotate( event ) {\n\n\t\t\t//console.log( 'handleTouchMoveRotate' );\n\n\t\t\trotateEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\t\t\trotateDelta.subVectors( rotateEnd, rotateStart );\n\n\t\t\tvar element = scope.domElement === document ? scope.domElement.body : scope.domElement;\n\n\t\t\t// rotating across whole screen goes 360 degrees around\n\t\t\trotateLeft( 2 * Math.PI * rotateDelta.x / element.clientWidth * scope.rotateSpeed );\n\n\t\t\t// rotating up and down along whole screen attempts to go 360, but limited to 180\n\t\t\trotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight * scope.rotateSpeed );\n\n\t\t\trotateStart.copy( rotateEnd );\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleTouchMoveDolly( event ) {\n\n\t\t\t//console.log( 'handleTouchMoveDolly' );\n\n\t\t\tvar dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX;\n\t\t\tvar dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY;\n\n\t\t\tvar distance = Math.sqrt( dx * dx + dy * dy );\n\n\t\t\tdollyEnd.set( 0, distance );\n\n\t\t\tdollyDelta.subVectors( dollyEnd, dollyStart );\n\n\t\t\tif ( dollyDelta.y > 0 ) {\n\n\t\t\t\tdollyOut( getZoomScale() );\n\n\t\t\t} else if ( dollyDelta.y < 0 ) {\n\n\t\t\t\tdollyIn( getZoomScale() );\n\n\t\t\t}\n\n\t\t\tdollyStart.copy( dollyEnd );\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleTouchMovePan( event ) {\n\n\t\t\t//console.log( 'handleTouchMovePan' );\n\n\t\t\tpanEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\t\tpanDelta.subVectors( panEnd, panStart );\n\n\t\t\tpan( panDelta.x, panDelta.y );\n\n\t\t\tpanStart.copy( panEnd );\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleTouchEnd( event ) {\n\n\t\t\t//console.log( 'handleTouchEnd' );\n\n\t\t}\n\n\t\t//\n\t\t// event handlers - FSM: listen for events and reset state\n\t\t//\n\n\t\tfunction onMouseDown( event ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\tevent.preventDefault();\n\n\t\t\tif ( event.button === scope.mouseButtons.ORBIT ) {\n\n\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\thandleMouseDownRotate( event );\n\n\t\t\t\tstate = STATE.ROTATE;\n\n\t\t\t} else if ( event.button === scope.mouseButtons.ZOOM ) {\n\n\t\t\t\tif ( scope.enableZoom === false ) return;\n\n\t\t\t\thandleMouseDownDolly( event );\n\n\t\t\t\tstate = STATE.DOLLY;\n\n\t\t\t} else if ( event.button === scope.mouseButtons.PAN ) {\n\n\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\thandleMouseDownPan( event );\n\n\t\t\t\tstate = STATE.PAN;\n\n\t\t\t}\n\n\t\t\tif ( state !== STATE.NONE ) {\n\n\t\t\t\tdocument.addEventListener( 'mousemove', onMouseMove, false );\n\t\t\t\tdocument.addEventListener( 'mouseup', onMouseUp, false );\n\n\t\t\t\tscope.dispatchEvent( startEvent );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onMouseMove( event ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\tevent.preventDefault();\n\n\t\t\tif ( state === STATE.ROTATE ) {\n\n\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\thandleMouseMoveRotate( event );\n\n\t\t\t} else if ( state === STATE.DOLLY ) {\n\n\t\t\t\tif ( scope.enableZoom === false ) return;\n\n\t\t\t\thandleMouseMoveDolly( event );\n\n\t\t\t} else if ( state === STATE.PAN ) {\n\n\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\thandleMouseMovePan( event );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onMouseUp( event ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\thandleMouseUp( event );\n\n\t\t\tdocument.removeEventListener( 'mousemove', onMouseMove, false );\n\t\t\tdocument.removeEventListener( 'mouseup', onMouseUp, false );\n\n\t\t\tscope.dispatchEvent( endEvent );\n\n\t\t\tstate = STATE.NONE;\n\n\t\t}\n\n\t\tfunction onMouseWheel( event ) {\n\n\t\t\tif ( scope.enabled === false || scope.enableZoom === false || ( state !== STATE.NONE && state !== STATE.ROTATE ) ) return;\n\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\n\t\t\thandleMouseWheel( event );\n\n\t\t\tscope.dispatchEvent( startEvent ); // not sure why these are here...\n\t\t\tscope.dispatchEvent( endEvent );\n\n\t\t}\n\n\t\tfunction onKeyDown( event ) {\n\n\t\t\tif ( scope.enabled === false || scope.enableKeys === false || scope.enablePan === false ) return;\n\n\t\t\thandleKeyDown( event );\n\n\t\t}\n\n\t\tfunction onTouchStart( event ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\tswitch ( event.touches.length ) {\n\n\t\t\t\tcase 1:\t// one-fingered touch: rotate\n\n\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\thandleTouchStartRotate( event );\n\n\t\t\t\t\tstate = STATE.TOUCH_ROTATE;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 2:\t// two-fingered touch: dolly\n\n\t\t\t\t\tif ( scope.enableZoom === false ) return;\n\n\t\t\t\t\thandleTouchStartDolly( event );\n\n\t\t\t\t\tstate = STATE.TOUCH_DOLLY;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 3: // three-fingered touch: pan\n\n\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\thandleTouchStartPan( event );\n\n\t\t\t\t\tstate = STATE.TOUCH_PAN;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t}\n\n\t\t\tif ( state !== STATE.NONE ) {\n\n\t\t\t\tscope.dispatchEvent( startEvent );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onTouchMove( event ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\n\t\t\tswitch ( event.touches.length ) {\n\n\t\t\t\tcase 1: // one-fingered touch: rotate\n\n\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\t\t\t\t\tif ( state !== STATE.TOUCH_ROTATE ) return; // is this needed?...\n\n\t\t\t\t\thandleTouchMoveRotate( event );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 2: // two-fingered touch: dolly\n\n\t\t\t\t\tif ( scope.enableZoom === false ) return;\n\t\t\t\t\tif ( state !== STATE.TOUCH_DOLLY ) return; // is this needed?...\n\n\t\t\t\t\thandleTouchMoveDolly( event );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 3: // three-fingered touch: pan\n\n\t\t\t\t\tif ( scope.enablePan === false ) return;\n\t\t\t\t\tif ( state !== STATE.TOUCH_PAN ) return; // is this needed?...\n\n\t\t\t\t\thandleTouchMovePan( event );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onTouchEnd( event ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\thandleTouchEnd( event );\n\n\t\t\tscope.dispatchEvent( endEvent );\n\n\t\t\tstate = STATE.NONE;\n\n\t\t}\n\n\t\tfunction onContextMenu( event ) {\n\n\t\t\tevent.preventDefault();\n\n\t\t}\n\n\t\t//\n\n\t\tscope.domElement.addEventListener( 'contextmenu', onContextMenu, false );\n\n\t\tscope.domElement.addEventListener( 'mousedown', onMouseDown, false );\n\t\tscope.domElement.addEventListener( 'wheel', onMouseWheel, false );\n\n\t\tscope.domElement.addEventListener( 'touchstart', onTouchStart, false );\n\t\tscope.domElement.addEventListener( 'touchend', onTouchEnd, false );\n\t\tscope.domElement.addEventListener( 'touchmove', onTouchMove, false );\n\n\t\twindow.addEventListener( 'keydown', onKeyDown, false );\n\n\t\t// force an update at start\n\n\t\tthis.update();\n\n\t};\n\n\tOrbitControls.prototype = Object.create( THREE.EventDispatcher.prototype );\n\tOrbitControls.prototype.constructor = OrbitControls;\n\n\tObject.defineProperties( OrbitControls.prototype, {\n\n\t\tcenter: {\n\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.OrbitControls: .center has been renamed to .target' );\n\t\t\t\treturn this.target;\n\n\t\t\t}\n\n\t\t},\n\n\t\t// backward compatibility\n\n\t\tnoZoom: {\n\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.' );\n\t\t\t\treturn ! this.enableZoom;\n\n\t\t\t},\n\n\t\t\tset: function ( value ) {\n\n\t\t\t\tconsole.warn( 'THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.' );\n\t\t\t\tthis.enableZoom = ! value;\n\n\t\t\t}\n\n\t\t},\n\n\t\tnoRotate: {\n\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.' );\n\t\t\t\treturn ! this.enableRotate;\n\n\t\t\t},\n\n\t\t\tset: function ( value ) {\n\n\t\t\t\tconsole.warn( 'THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.' );\n\t\t\t\tthis.enableRotate = ! value;\n\n\t\t\t}\n\n\t\t},\n\n\t\tnoPan: {\n\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead.' );\n\t\t\t\treturn ! this.enablePan;\n\n\t\t\t},\n\n\t\t\tset: function ( value ) {\n\n\t\t\t\tconsole.warn( 'THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead.' );\n\t\t\t\tthis.enablePan = ! value;\n\n\t\t\t}\n\n\t\t},\n\n\t\tnoKeys: {\n\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.' );\n\t\t\t\treturn ! this.enableKeys;\n\n\t\t\t},\n\n\t\t\tset: function ( value ) {\n\n\t\t\t\tconsole.warn( 'THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.' );\n\t\t\t\tthis.enableKeys = ! value;\n\n\t\t\t}\n\n\t\t},\n\n\t\tstaticMoving : {\n\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.' );\n\t\t\t\treturn ! this.enableDamping;\n\n\t\t\t},\n\n\t\t\tset: function ( value ) {\n\n\t\t\t\tconsole.warn( 'THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.' );\n\t\t\t\tthis.enableDamping = ! value;\n\n\t\t\t}\n\n\t\t},\n\n\t\tdynamicDampingFactor : {\n\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.' );\n\t\t\t\treturn this.dampingFactor;\n\n\t\t\t},\n\n\t\t\tset: function ( value ) {\n\n\t\t\t\tconsole.warn( 'THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.' );\n\t\t\t\tthis.dampingFactor = value;\n\n\t\t\t}\n\n\t\t}\n\n\t} );\n\n\treturn OrbitControls;\n};\n","import * as THREE from 'three';\nimport {\n  ArToolkitSource,\n  ArToolkitContext,\n  ArMarkerControls\n} from 'node-ar.js';\nimport GLTFLoader from 'three-gltf-loader';\nimport OrbitControls from 'three-orbit-controls';\nimport sceneGLTF from './scene.gltf';\nimport markerPattern from './patt.hiro';\nimport cameraParam from './camera_para.dat';\n\nconst ready = cb => {\n  /in/.test(document.readyState) // in = loadINg\n    ? setTimeout(ready.bind(null, cb), 9)\n    : cb();\n}\n\nready(function() {\n  let mixer;\n  const clock = new THREE.Clock();\n  const [ windowWidth, windowHeight ] = [ window.innerWidth, window.innerHeight ];\n  // Set up renderer\n  const renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true });\n  renderer.setSize(windowWidth, windowHeight);\n  renderer.setClearColor(new THREE.Color('lightgrey'), 0);\n  document.body.appendChild(renderer.domElement);\n\n  // Set up scene\n  const scene = new THREE.Scene();\n\n  // Add light to scene\n  const hemlight = new THREE.HemisphereLight(0xfff0f0, 0x606066, 0.5);\n  const spotlight = new THREE.SpotLight(0xffffff);\n  hemlight.position.set(10, 10, 10);\n  spotlight.position.set(10000, 10000, 10000);\n  scene.add(hemlight);\n  scene.add(spotlight);\n\n  // Add camera\n  const camera = new THREE.Camera();\n  camera.position.z = 600;\n\n  // Controls\n  const _orbitControls = OrbitControls(THREE);\n  const controls = new _orbitControls(camera);\n\n  // Set up AR\n  const _artoolkitsource = ArToolkitSource(THREE);\n  const arToolkitSource = new _artoolkitsource({\n    sourceType: 'webcam'\n  });\n  arToolkitSource.init(() => onResize());\n\n  const arToolkitContext = new ArToolkitContext({\n    cameraParametersUrl: cameraParam,\n    detectionMode: 'mono',\n    maxDetectionRate: 30,\n    canvasWidth: 80 * 3,\n    canvasHeight: 60 * 3\n  });\n  arToolkitContext.init(() => {\n    camera.projectionMatrix.copy(arToolkitContext.getProjectionMatrix());\n  });\n\n  // Update dimensions on resize\n  window.addEventListener('resize', () => onResize());\n  function onResize() {\n    arToolkitSource.onResizeElement();\n    arToolkitSource.copyElementSizeTo(renderer.domElement);\n    if(arToolkitContext.arController){\n      arToolkitSource.copyElementSizeTo(arToolkitContext.arController.canvas);\n    }\n  }\n\n  // Build Mesh\n  const markerRoot = new THREE.Group;\n  scene.add(markerRoot);\n\n  const markerControls = new ArMarkerControls(arToolkitContext, markerRoot, {\n    type: 'pattern',\n    patternUrl: markerPattern,\n    changeMatrixMode: 'cameraTransformMatrix'\n  });\n\n  // Prepare geometries and meshes\n  const loader = new GLTFLoader();\n  loader.load(sceneGLTF, gltf => {\n    const object = gltf.scene;\n    object.rotateX(-180);\n    const gltfAnimation = gltf.animations;\n    markerRoot.add(object);\n    object.traverse(node => {\n      if(node.material){\n        // Modify the material here\n      }\n    });\n    if(gltfAnimation && gltfAnimation.length) {\n      mixer = new THREE.AnimationMixer(object);\n      gltfAnimation.forEach(animation => {\n        mixer.clipAction(animation).play();\n      });\n    }\n  });\n  animate();\n\n  // render scene\n  function render() {\n    if(mixer) mixer.update(0.75 * clock.getDelta());\n    if(arToolkitSource.ready) {\n      arToolkitContext.update(arToolkitSource.domElement);\n      scene.visible = camera.visible;\n    }\n    renderer.render(scene, camera);\n  }\n  function animate() {\n    renderer.setAnimationLoop(render);\n  }\n});\n"]}